summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2001-07-13 06:24:18 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2001-07-13 06:24:18 +0000
commit6f19801bde5f6175a1b7ed9b1b87cdae036fd9bf (patch)
tree206e5ec4377db1e5c29d7ed9453fa4f6d0aeba89
parent76af18c5f83726ca5cce63423ad1e5a77c21fe10 (diff)
parentb8adaf87fdcc698bca3bf69110c0b4cdb1d0225d (diff)
downloadperl-6f19801bde5f6175a1b7ed9b1b87cdae036fd9bf.tar.gz
Integrate mainline
p4raw-id: //depot/perlio@11345
-rw-r--r--Changes339
-rwxr-xr-xConfigure8
-rw-r--r--MANIFEST6
-rw-r--r--NetWare/config.wc1
-rw-r--r--NetWare/config_H.wc8
-rw-r--r--Porting/Glossary14
-rw-r--r--Porting/config.sh20
-rw-r--r--Porting/config_H10
-rw-r--r--Porting/repository.pod60
-rw-r--r--README.aix48
-rw-r--r--README.qnx30
-rw-r--r--README.uts107
-rw-r--r--av.c1
-rw-r--r--config_h.SH6
-rw-r--r--configure.com1
-rw-r--r--dump.c13
-rw-r--r--embed.h6
-rwxr-xr-xembed.pl3
-rw-r--r--epoc/config.sh1
-rw-r--r--ext/I18N/Langinfo/Langinfo.t1
-rw-r--r--ext/IO/lib/IO/t/io_unix.t2
-rw-r--r--hints/aix.sh2
-rw-r--r--hints/qnx.sh37
-rw-r--r--hv.c38
-rw-r--r--lib/File/Copy.pm32
-rw-r--r--lib/Tie/Array.pm3
-rw-r--r--lib/UnicodeCD.pm (renamed from lib/Unicode/UCD.pm)32
-rw-r--r--lib/UnicodeCD.t (renamed from lib/Unicode/UCD.t)18
-rw-r--r--lib/open.pm22
-rw-r--r--lib/unicode/distinct.pm35
-rw-r--r--myconfig.SH2
-rw-r--r--op.c2
-rw-r--r--op.h2
-rw-r--r--patchlevel.h2
-rw-r--r--perl.h1
-rw-r--r--perlapi.c4
-rw-r--r--pod/buildtoc.PL1
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perl572delta.pod36
-rw-r--r--pod/perlfaq4.pod27
-rw-r--r--pod/perlmodlib.pod26
-rw-r--r--pod/perltoc.pod126
-rw-r--r--proto.h3
-rw-r--r--regcomp.c1
-rw-r--r--regcomp.h9
-rw-r--r--sv.c145
-rw-r--r--t/lib/1_compile.t19
-rw-r--r--t/lib/warnings/util50
-rwxr-xr-xt/op/splice.t16
-rw-r--r--thread.h14
-rw-r--r--uconfig.h8
-rwxr-xr-xuconfig.sh1
-rw-r--r--util.c47
-rw-r--r--vos/config.alpha.def1
-rw-r--r--vos/config.alpha.h8
-rw-r--r--vos/config.ga.def1
-rw-r--r--vos/config.ga.h8
-rw-r--r--win32/Makefile4
-rw-r--r--win32/config.bc1
-rw-r--r--win32/config.gc1
-rw-r--r--win32/config.vc1
-rw-r--r--win32/config_H.bc8
-rw-r--r--win32/config_H.gc8
-rw-r--r--win32/config_H.vc8
-rw-r--r--win32/makefile.mk4
-rw-r--r--win32/win32.c9
66 files changed, 1187 insertions, 322 deletions
diff --git a/Changes b/Changes
index 6281749775..5c5a2c3763 100644
--- a/Changes
+++ b/Changes
@@ -31,6 +31,345 @@ or any other branch.
Version v5.7.1 Development release working toward v5.8
--------------
____________________________________________________________________________
+[ 11326] By: jhi on 2001/07/12 18:17:18
+ Log: Typo spotted by Philip Newton.
+ Branch: perl
+ ! pod/perl572delta.pod
+____________________________________________________________________________
+[ 11325] By: jhi on 2001/07/12 18:11:42
+ Log: Subject: [PATCH] fixes perl_clone of perl_clone
+ From: Artur Bergman <artur@contiller.se>
+ Date: Thu, 12 Jul 2001 20:57:09 +0200
+ Message-ID: <B773BFA4.236B%artur@contiller.se>
+ Branch: perl
+ ! sv.c
+____________________________________________________________________________
+[ 11324] By: jhi on 2001/07/12 18:09:17
+ Log: Add README.uts from Hal Morris.
+ Branch: perl
+ + README.uts
+ ! MANIFEST pod/buildtoc.PL pod/perl.pod pod/perl572delta.pod
+ ! pod/perltoc.pod win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[ 11323] By: jhi on 2001/07/12 17:48:33
+ Log: Subject: Re: AIX 4.3.3 w/ vac 5.0 [ FATAL in B ]
+ From: "H.Merijn Brand" <h.m.brand@hccnet.nl>
+ Date: Thu, 12 Jul 2001 20:32:37 +0200
+ Message-Id: <20010712201743.E108.H.M.BRAND@hccnet.nl>
+ Branch: perl
+ ! hints/aix.sh
+____________________________________________________________________________
+[ 11322] By: jhi on 2001/07/12 17:44:29
+ Log: Subject: Patch: document reg_data.what member
+ From: Mark-Jason Dominus <mjd@plover.com>
+ Message-ID: <20010712182532.14821.qmail@plover.com>
+ Date: Thu, 12 Jul 2001 14:25:32 -0400
+ Branch: perl
+ ! regcomp.c regcomp.h
+____________________________________________________________________________
+[ 11321] By: jhi on 2001/07/12 17:43:18
+ Log: Subject: [PATCH] Perl_re_dup()
+ From: Abhijit Menon-Sen <ams@wiw.org>
+ Date: Thu, 12 Jul 2001 23:54:32 +0530
+ Message-ID: <20010712235432.J24707@lustre.dyn.wiw.org>
+ Branch: perl
+ ! embed.h embed.pl perlapi.c proto.h sv.c
+____________________________________________________________________________
+[ 11320] By: jhi on 2001/07/12 17:18:54
+ Log: Regen Configure, modlib, toc.
+ Branch: perl
+ ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+ ! pod/perlmodlib.pod pod/perltoc.pod
+____________________________________________________________________________
+[ 11319] By: jhi on 2001/07/12 17:08:15
+ Log: The problem seems to be in PerlIO::Layer::->find() not
+ accepting the ":encoding(blurflur)" arguments.
+ Branch: perl
+ ! lib/PerlIO.pm lib/open.pm
+____________________________________________________________________________
+[ 11318] By: jhi on 2001/07/12 16:58:11
+ Log: AIX doc update.
+ Branch: perl
+ ! README.aix pod/perl572delta.pod
+____________________________________________________________________________
+[ 11317] By: jhi on 2001/07/12 16:39:11
+ Log: Subject: AIX README update
+ From: "H.Merijn Brand" <h.m.brand@hccnet.nl>
+ Date: Thu, 12 Jul 2001 19:28:30 +0200
+ Message-Id: <20010712192620.E0F9.H.M.BRAND@hccnet.nl>
+ Branch: perl
+ ! README.aix
+____________________________________________________________________________
+[ 11316] By: jhi on 2001/07/12 16:37:15
+ Log: Subject: [PATCH ext/IO/lib/IO/t/io_unix.t] for QNX6
+ From: Norton Allen <allen@huarp.harvard.edu>
+ Date: Thu, 12 Jul 2001 11:30:51 -0400 (edt)
+ Message-Id: <200107121530.LAA12631@bottesini.harvard.edu>
+ Branch: perl
+ ! ext/IO/lib/IO/t/io_unix.t
+____________________________________________________________________________
+[ 11315] By: jhi on 2001/07/12 16:35:53
+ Log: Subject: [PATCH README.qnx hints/qnx.sh]
+ From: Norton Allen <allen@huarp.harvard.edu>
+ Date: Thu, 12 Jul 2001 11:29:19 -0400 (edt)
+ Message-Id: <200107121529.LAA23411@bottesini.harvard.edu>
+ Branch: perl
+ ! README.qnx hints/qnx.sh
+____________________________________________________________________________
+[ 11314] By: jhi on 2001/07/12 16:13:15
+ Log: Subject: [patch] faster PM_GETRE
+ From: Doug MacEachern <dougm@covalent.net>
+ Date: Thu, 12 Jul 2001 10:13:27 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.21.0107121011530.28844-100000@mako.covalent.net>
+ Branch: perl
+ ! op.h
+____________________________________________________________________________
+[ 11313] By: jhi on 2001/07/12 16:12:23
+ Log: Subject: Re: [PATCH] Threadsafe PMOPs! We might still win this war.
+ From: Doug MacEachern <dougm@covalent.net>
+ Date: Thu, 12 Jul 2001 10:11:28 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.21.0107121010160.28844-100000@mako.covalent.net>
+ Branch: perl
+ ! op.c
+____________________________________________________________________________
+[ 11312] By: jhi on 2001/07/12 16:07:22
+ Log: Tell where the nice Estonian database is.
+ Branch: perl
+ ! lib/open.pm
+____________________________________________________________________________
+[ 11311] By: jhi on 2001/07/12 16:05:31
+ Log: Retract #11309 since #11310 is a better fix.
+ Branch: perl
+ ! t/lib/1_compile.t
+____________________________________________________________________________
+[ 11310] By: gsar on 2001/07/12 15:50:40
+ Log: fix for failing fork.t#12 on windows (win32_execvp() tweak in
+ change#11300 needs to return the status of failed win32_spawnvp())
+
+ fix various open.pm bugs: '\0' isn't the same as "\0", so it wasn't
+ splitting correctly; remove unused variables; 'require' at run time
+ rather than 'use' at compile time for I18N::Langinfo, since it
+ isn't everyware
+ Branch: perl
+ ! lib/open.pm win32/win32.c
+____________________________________________________________________________
+[ 11309] By: jhi on 2001/07/12 15:29:55
+ Log: Temporary workaround.
+ Branch: perl
+ ! t/lib/1_compile.t
+____________________________________________________________________________
+[ 11308] By: jhi on 2001/07/12 14:44:51
+ Log: UCD typo in #11306 and add also more known-to-be-tested
+ modules to the skip list.
+ Branch: perl
+ ! t/lib/1_compile.t
+____________________________________________________________________________
+[ 11307] By: jhi on 2001/07/12 14:38:38
+ Log: Rename Unicode::UCD to UnicodeCD to avoid
+ messups with case-insensitive filesystems.
+ Branch: perl
+ + lib/UnicodeCD.pm lib/UnicodeCD.t
+ - lib/Unicode/UCD.pm lib/Unicode/UCD.t
+ ! MANIFEST pod/perl572delta.pod t/lib/1_compile.t
+____________________________________________________________________________
+[ 11306] By: jhi on 2001/07/12 13:32:05
+ Log: Subject: [ID 20010711.005] in Tie::Array, SPLICE ignores context, breaking SHIFT
+ From: daniel@biz.bitpusher.com
+ Date: Wed, 11 Jul 2001 23:25:47 -0700
+ Message-Id: <200107120625.f6C6PkJ13065@biz.bitpusher.com>
+ Branch: perl
+ ! lib/Tie/Array.pm t/op/splice.t
+____________________________________________________________________________
+[ 11305] By: jhi on 2001/07/12 13:05:46
+ Log: Subject: [PATCH] More accurate line numbers in messages
+ From: Paul Johnson <paul@pjcj.net>
+ Date: Thu, 12 Jul 2001 04:14:11 +0200
+ Message-ID: <20010712041411.A3467@pjcj.net>
+
+ (With prototyping and multiplicity tweaks.)
+ Branch: perl
+ ! dump.c embed.h embed.pl t/lib/warnings/util util.c
+____________________________________________________________________________
+[ 11304] By: nick on 2001/07/12 12:53:40
+ Log: Integrate mainline
+ Branch: perlio
+ !> ext/ByteLoader/bytecode.h hints/aix.sh pod/perl572delta.pod
+ !> regexec.c thread.h
+____________________________________________________________________________
+[ 11303] By: jhi on 2001/07/12 12:46:20
+ Log: Cut-and-pasto in #11298.
+ Branch: perl
+ ! ext/ByteLoader/bytecode.h
+____________________________________________________________________________
+[ 11302] By: jhi on 2001/07/12 12:42:35
+ Log: Update the AIX known problems section.
+ Branch: perl
+ ! pod/perl572delta.pod
+____________________________________________________________________________
+[ 11301] By: jhi on 2001/07/12 12:36:46
+ Log: Subject: Re: HiRes on AIX 4.2 in threaded mode
+ From: "H.Merijn Brand" <h.m.brand@hccnet.nl>
+ Date: Thu, 12 Jul 2001 12:16:16 +0200
+ Message-Id: <20010712114215.E0D9.H.M.BRAND@hccnet.nl>
+ Branch: perl
+ ! hints/aix.sh
+____________________________________________________________________________
+[ 11300] By: jhi on 2001/07/12 12:35:44
+ Log: Integrate perlio.
+ Branch: perl
+ !> makedef.pl win32/win32.c
+____________________________________________________________________________
+[ 11299] By: jhi on 2001/07/12 12:33:57
+ Log: Subject: [PATCH] fix for PMOP threadness failures
+ From: Artur Bergman <artur@contiller.se>
+ Date: Thu, 12 Jul 2001 09:48:06 +0200
+ Message-ID: <B77322D6.22DD%artur@contiller.se>
+ Branch: perl
+ ! regexec.c
+____________________________________________________________________________
+[ 11298] By: jhi on 2001/07/12 12:27:47
+ Log: Subject: RE: Win32 Failure, was Re: perl@11278 - LAST CALL FOR 5.7.2
+ From: "Konovalov, Vadim Vladimirovich (Vadim)" <vkonovalov@lucent.com>
+ Date: Thu, 12 Jul 2001 09:09:48 +0200
+ Message-ID: <E3FB32585BF1D411B9E900805FF51A0808CE70@RU0022EXCH001U>
+
+ More parentheses to keep bcc happy.
+ Branch: perl
+ ! ext/ByteLoader/bytecode.h
+____________________________________________________________________________
+[ 11297] By: jhi on 2001/07/12 12:24:50
+ Log: Subject: Re: [patch] pthread_atfork bandaid
+ From: Doug MacEachern <dougm@covalent.net>
+ Date: Wed, 11 Jul 2001 23:43:17 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.21.0107112342330.28844-100000@mako.covalent.net>
+ Branch: perl
+ ! thread.h
+____________________________________________________________________________
+[ 11296] By: nick on 2001/07/12 11:55:48
+ Log: Exclude reentrant_buffer from .def file
+ Branch: perlio
+ ! makedef.pl
+____________________________________________________________________________
+[ 11295] By: nick on 2001/07/12 11:11:44
+ Log: Honour void-ness of my_exit()
+ Branch: perlio
+ ! win32/win32.c
+____________________________________________________________________________
+[ 11294] By: nick on 2001/07/12 07:51:04
+ Log: Integrate mainline
+ Branch: perlio
+ +> uts/sprintf_wrap.c
+ !> (integrate 35 files)
+____________________________________________________________________________
+[ 11293] By: jhi on 2001/07/12 04:58:08
+ Log: Retract #11289.
+ Branch: perl
+ ! embed.h embed.pl perl.c proto.h thread.h
+____________________________________________________________________________
+[ 11292] By: jhi on 2001/07/12 04:47:43
+ Log: Now the :locale pseudolayer *almost* works...
+ Branch: perl
+ ! lib/open.pm
+____________________________________________________________________________
+[ 11291] By: jhi on 2001/07/12 04:36:47
+ Log: Locale encoding tweaks.
+ Branch: perl
+ ! lib/open.pm
+____________________________________________________________________________
+[ 11290] By: jhi on 2001/07/12 04:25:53
+ Log: Subject: Re: [PATCH: perl@11181] UCD.t fails LATIN|Latin test
+ From: Mark-Jason Dominus <mjd@plover.com>
+ Date: Thu, 12 Jul 2001 00:59:31 -0400
+ Message-ID: <20010712045931.8543.qmail@plover.com>
+
+ Remove the chmod/umask leading zero warning.
+ Branch: perl
+ ! lib/warnings.pm pod/perldiag.pod pod/perllexwarn.pod
+ ! t/lib/warnings/toke toke.c warnings.h warnings.pl
+____________________________________________________________________________
+[ 11289] By: jhi on 2001/07/12 04:16:41
+ Log: (Retracted by #11289.)
+ Branch: perl
+ ! embed.h embed.pl perl.c proto.h thread.h
+____________________________________________________________________________
+[ 11288] By: jhi on 2001/07/12 03:45:11
+ Log: Needed by #11283.
+ Branch: perl
+ ! intrpvar.h
+____________________________________________________________________________
+[ 11287] By: jhi on 2001/07/12 03:40:04
+ Log: Metaconfig unit change for #11286.
+ Branch: metaconfig/U/perl
+ ! patchlevel.U
+____________________________________________________________________________
+[ 11286] By: jhi on 2001/07/12 03:39:18
+ Log: Subject: Re: [PATCH Configure] perl -V broken
+ From: Andy Dougherty <doughera@lafayette.edu>
+ Date: Wed, 11 Jul 2001 13:30:27 -0400 (EDT)
+ Message-ID: <Pine.SOL.4.10.10107111329060.2021-100000@maxwell.phys.lafayette.edu>
+ Branch: perl
+ ! Configure myconfig.SH
+____________________________________________________________________________
+[ 11285] By: jhi on 2001/07/12 03:27:28
+ Log: Retract #11166 (and #11237).
+ Branch: perl
+ ! dump.c embed.h lib/warnings.pm op.c op.h opcode.h opcode.pl
+ ! pod/perldiag.pod pp.sym pp_proto.h t/lib/warnings/op
+ ! t/lib/warnings/toke toke.c warnings.h warnings.pl
+____________________________________________________________________________
+[ 11284] By: jhi on 2001/07/12 02:36:42
+ Log: UTS tweaks for Hal Morris.
+ Branch: perl
+ + uts/sprintf_wrap.c
+ ! MANIFEST hints/uts.sh perl.h
+____________________________________________________________________________
+[ 11283] By: jhi on 2001/07/12 00:52:36
+ Log: Subject: [PATCH] Use reentrant API glibc
+ From: Artur Bergman <artur@contiller.se>
+ Date: Thu, 12 Jul 2001 00:58:21 +0200
+ Message-ID: <B772A6AD.2288%artur@contiller.se>
+ Branch: perl
+ ! embedvar.h intrpvar.h op.h perl.c perlapi.h pod/perlapi.pod
+ ! sv.c
+____________________________________________________________________________
+[ 11282] By: jhi on 2001/07/12 00:35:27
+ Log: Subject: Re: ActivePerl 628 + warnings + fork + exec = spurious "Can't exec"?
+ From: barries <barries@slaysys.com>
+ Date: Wed, 11 Jul 2001 15:11:46 -0400
+ Message-ID: <20010711151146.G24560@jester.slaysys.com>
+ Branch: perl
+ ! pp_sys.c t/lib/warnings/doio win32/win32.c
+____________________________________________________________________________
+[ 11281] By: jhi on 2001/07/12 00:32:17
+ Log: Subject: [patch] pthread_atfork bandaid
+ From: Doug MacEachern <dougm@covalent.net>
+ Date: Wed, 11 Jul 2001 08:59:12 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.21.0107110855070.11688-100000@mako.covalent.net>
+ Branch: perl
+ ! miniperlmain.c perl.c
+____________________________________________________________________________
+[ 11280] By: jhi on 2001/07/12 00:31:34
+ Log: Subject: [patch] perl_clone leaks
+ From: Doug MacEachern <dougm@covalent.net>
+ Date: Wed, 11 Jul 2001 08:43:32 -0700 (PDT)
+ Message-ID: <Pine.LNX.4.21.0107110842390.11688-100000@mako.covalent.net>
+ Branch: perl
+ ! sv.c
+____________________________________________________________________________
+[ 11279] By: nick on 2001/07/11 15:49:38
+ Log: Integrate mainline
+ Branch: perlio
+ +> ext/Encode/Encode/HZ.enc ext/PerlIO/t/encoding.t
+ +> ext/Time/HiRes/hints/dynixptx.pl lib/Math/BigInt/Calc.pm
+ +> lib/Math/BigInt/t/bigintc.t lib/Term/ANSIColor/ChangeLog
+ +> lib/Term/ANSIColor/README
+ !> (integrate 54 files)
+____________________________________________________________________________
+[ 11278] By: jhi on 2001/07/11 13:52:20
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
[ 11277] By: jhi on 2001/07/11 13:31:43
Log: Subject: blead kit timestamps && the problem with running perl embed.pl
From: Peter Prymmer <pvhp@forte.com>
diff --git a/Configure b/Configure
index 8a29a8426d..69e7246794 100755
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Thu Jul 12 07:32:38 EET DST 2001 [metaconfig 3.0 PL70]
+# Generated on Fri Jul 13 03:14:01 EET DST 2001 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
@@ -477,6 +477,7 @@ d_poll=''
d_portable=''
d_old_pthread_create_joinable=''
old_pthread_create_joinable=''
+d_pthread_atfork=''
d_pthread_yield=''
d_sched_yield=''
sched_yield=''
@@ -11328,6 +11329,10 @@ eval $inlibc
set poll d_poll
eval $inlibc
+: see if pthread_atfork exists
+set pthread_atfork d_pthread_atfork
+eval $inlibc
+
: see whether the various POSIXish _yields exist
$cat >try.c <<EOP
@@ -16803,6 +16808,7 @@ d_phostname='$d_phostname'
d_pipe='$d_pipe'
d_poll='$d_poll'
d_portable='$d_portable'
+d_pthread_atfork='$d_pthread_atfork'
d_pthread_yield='$d_pthread_yield'
d_pwage='$d_pwage'
d_pwchange='$d_pwchange'
diff --git a/MANIFEST b/MANIFEST
index 4ea5fa5220..28d6255b49 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1179,7 +1179,6 @@ lib/unicode/Category.pl Unicode character database
lib/unicode/CombiningClass.pl Unicode character database
lib/unicode/CompExcl.txt Unicode character database
lib/unicode/Decomposition.pl Unicode character database
-lib/unicode/distinct.pm Perl pragma to strictly distinguish UTF8 data and non-UTF data
lib/unicode/EAWidth.txt Unicode character database
lib/unicode/In.pl Unicode character database
lib/unicode/In/0.pl Unicode character database
@@ -1487,8 +1486,8 @@ lib/unicode/To/Lower.pl Unicode character database
lib/unicode/To/Title.pl Unicode character database
lib/unicode/To/Upper.pl Unicode character database
lib/unicode/UCD.html Unicode character database
-lib/Unicode/UCD.pm Unicode character database
-lib/Unicode/UCD.t See if Unicode character database works
+lib/UnicodeCD.pm Unicode character database
+lib/UnicodeCD.t See if Unicode character database works
lib/unicode/Unicode.html Unicode character database
lib/unicode/Unicode.txt Unicode character database
lib/unicode/version The version of the Unicode
@@ -1821,6 +1820,7 @@ README.qnx Notes about QNX port
README.solaris Notes about Solaris port
README.threads Notes about multithreading
README.tru64 Notes about Tru64
+README.uts Notes about UTS
README.vmesa Notes about VM/ESA port
README.vms Notes about installing the VMS port
README.vos Notes about Stratus VOS port
diff --git a/NetWare/config.wc b/NetWare/config.wc
index c4492baaaf..d47f3a68e2 100644
--- a/NetWare/config.wc
+++ b/NetWare/config.wc
@@ -246,6 +246,7 @@ d_phostname='undef'
d_pipe='define'
d_poll='undef'
d_portable='define'
+d_pthread_atfork='undef'
d_pthread_yield='undef'
d_pwage='undef'
d_pwchange='undef'
diff --git a/NetWare/config_H.wc b/NetWare/config_H.wc
index c3428f777b..eb3c2e0e5f 100644
--- a/NetWare/config_H.wc
+++ b/NetWare/config_H.wc
@@ -2933,7 +2933,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3446,4 +3446,10 @@
*/
/*#define HAS_USLEEP_PROTO /**/
+/* 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/Porting/Glossary b/Porting/Glossary
index 72bde60f3b..db66cb917b 100644
--- a/Porting/Glossary
+++ b/Porting/Glossary
@@ -1209,6 +1209,11 @@ d_PRIXU64 (quadfio.U):
The 'U' in the name is to separate this from d_PRIx64 so that even
case-blind systems can see the difference.
+d_pthread_atfork (d_pthread_atfork.U):
+ This variable conditionally defines the HAS_PTHREAD_ATFORK symbol,
+ which indicates to the C program that the pthread_atfork()
+ routine is available.
+
d_pthread_yield (d_pthread_y.U):
This variable conditionally defines the HAS_PTHREAD_YIELD
symbol if the pthread_yield routine is available to yield
@@ -3913,6 +3918,15 @@ version (patchlevel.U):
This is suitable for use as a directory name, and hence is
filesystem dependent.
+version_patchlevel_string (patchlevel.U):
+ This is a string combining version, subversion and
+ perl_patchlevel (if perl_patchlevel is non-zero).
+ It is typically something like
+ 'version 7 subversion 1' or
+ 'version 7 subversion 1 patchlevel 11224'
+ It is computed here to avoid duplication of code in myconfig.SH
+ and lib/Config.pm.
+
versiononly (versiononly.U):
If set, this symbol indicates that only the version-specific
components of a perl installation should be installed.
diff --git a/Porting/config.sh b/Porting/config.sh
index 3819d4f791..24592e92f0 100644
--- a/Porting/config.sh
+++ b/Porting/config.sh
@@ -8,7 +8,7 @@
# Package name : perl5
# Source directory : .
-# Configuration time: Thu Jun 28 18:05:29 EET DST 2001
+# Configuration time: Fri Jul 13 03:15:46 EET DST 2001
# Configured by : jhi
# Target system : osf1 alpha.hut.fi v4.0 878 alpha
@@ -63,7 +63,7 @@ ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_
ccversion='V5.6-082'
cf_by='jhi'
cf_email='yourname@yourhost.yourplace.com'
-cf_time='Thu Jun 28 18:05:29 EET DST 2001'
+cf_time='Fri Jul 13 03:15:46 EET DST 2001'
charsize='1'
chgrp=''
chmod='chmod'
@@ -275,6 +275,7 @@ d_phostname='undef'
d_pipe='define'
d_poll='define'
d_portable='define'
+d_pthread_atfork='define'
d_pthread_yield='undef'
d_pwage='undef'
d_pwchange='undef'
@@ -429,7 +430,7 @@ dlext='so'
dlsrc='dl_dlopen.xs'
doublesize='8'
drand01='drand48()'
-dynamic_ext='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re'
+dynamic_ext='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re'
eagain='EAGAIN'
ebcdic='undef'
echo='echo'
@@ -438,7 +439,7 @@ emacs=''
eunicefix=':'
exe_ext=''
expr='expr'
-extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re Errno'
+extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re Errno'
fflushNULL='define'
fflushall='undef'
find=''
@@ -580,7 +581,7 @@ issymlink='test -h'
ivdformat='"ld"'
ivsize='8'
ivtype='long'
-known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re'
+known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re'
ksh=''
ld='ld'
lddlflags='-shared -expect_unresolved "*" -msym -std -s'
@@ -670,9 +671,9 @@ pager='/c/bin/less'
passcat='cat /etc/passwd'
patchlevel='7'
path_sep=':'
-perl5='/usr/local/bin/perl'
+perl5='/u/vieraat/vieraat/jhi/Perl/bin//perl'
perl=''
-perl_patchlevel='10995'
+perl_patchlevel='11326'
perladmin='yourname@yourhost.yourplace.com'
perllibs='-lm -liconv -lutil -lpthread -lexc'
perlpath='/opt/perl/bin/perl'
@@ -840,12 +841,13 @@ vendorlibexp=''
vendorprefix=''
vendorprefixexp=''
version='5.7.1'
+version_patchlevel_string='version 7 subversion 1 patch 11326'
versiononly='define'
vi=''
voidflags='15'
xlibpth='/usr/lib/386 /lib/386'
xs_apiversion='5.7.1'
-yacc='/usr/local/bin/byacc'
+yacc='/u/vieraat/vieraat/jhi/Perl/bin//byacc'
yaccflags=''
zcat=''
zip='zip'
@@ -872,7 +874,7 @@ PERL_SUBVERSION=1
PERL_API_REVISION=5
PERL_API_VERSION=5
PERL_API_SUBVERSION=0
-PERL_PATCHLEVEL=10995
+PERL_PATCHLEVEL=11326
PERL_CONFIG_SH=true
# Variables propagated from previous config.sh file.
pp_sys_cflags='ccflags="$ccflags -DNO_EFF_ONLY_OK"'
diff --git a/Porting/config_H b/Porting/config_H
index 3ae6ca9ecb..6110ca4b20 100644
--- a/Porting/config_H
+++ b/Porting/config_H
@@ -17,7 +17,7 @@
/*
* Package name : perl5
* Source directory : .
- * Configuration time: Thu Jun 28 18:05:29 EET DST 2001
+ * Configuration time: Fri Jul 13 03:15:46 EET DST 2001
* Configured by : jhi
* Target system : osf1 alpha.hut.fi v4.0 878 alpha
*/
@@ -2937,7 +2937,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3457,4 +3457,10 @@
*/
#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/Porting/repository.pod b/Porting/repository.pod
index bbe537a7ba..54960bff29 100644
--- a/Porting/repository.pod
+++ b/Porting/repository.pod
@@ -191,20 +191,28 @@ the section above on the B<-L 1666:127.0.0.1:1666> option to ssh.
=item P4CLIENT
The value of this is the name by which Perforce knows your
-host's workspace. You need to pick a name (for example, your
-hostname unless that clashes with someone else's client name)
+host's workspace. You need to pick a name (normally, your
+Perforce username, a dash, and your hostname)
when you first start using the perl repository and then
-stick with it. If you connect from multiple hosts (with
-different workspaces) then maybe you could have multiple
-clients. There is a licence limit on the number of perforce
-clients which can be created. Although we have been told that
-Perforce will raise our licence limits within reason, it's
-probably best not to use additional clients unless needed.
-
-Note that perforce only needs the client name so that it can
-find the directory under which your client files are stored.
+stick with it.
+
+Perforce keeps track of the files you have on your machine. It
+does this through your client. When you first sync a version of a
+file, the file comes from the server to your machine. If you sync
+the same file again the server does nothing because it
+knows you already have the file.
+
+You should NOT use the same client on different machines. If you do
+you probably won't get the files you expect, and may end up with
+nasty corruption. Perforce allows you to have as many clients as
+you want. For example, sally-home, sally-openbsd, sally-laptop.
+
+Also, never change the client's root and view at the same time.
+See C<http://www.perforce.com/perforce/doc.002/manuals/p4guide/04_details.html#1048341>
+
If you have multiple hosts sharing the same directory structure
-via NFS then only one client name is necessary.
+via NFS then you may be able to get away with only one client name,
+but be careful.
The C<p4 clients> command lists all currently known clients.
@@ -213,10 +221,28 @@ The C<p4 clients> command lists all currently known clients.
This is the username by which perforce knows you. Use your
username if you have a well known or obvious one or else pick
a new one which other perl5-porters will recognise. There is
-a licence limit on the number of these usernames. Perforce
-doesn't enforce security between usernames. If you set P4USER
-to be somebody else's username then perforce will believe you
-completely with regard to access control, logging and so on.
+a licence limit on the number of these usernames, so be sure not
+to use more than one.
+
+It is very important to set a password for your Perforce username,
+or else anyone can impersonate you. Use the C<p4 passwd> command
+to do this. Once a password is set for your account, you'll need
+to tell Perforce what it is. You can do this by setting the
+environment variable P4PASSWD, or you can use the C<-P> flag
+with the C<p4> command.
+
+There are a few techniques you can use to avoid having to either
+set an environment variable or type the password on every command.
+One is to create a shell alias, for example, in bash, add something like
+ alias p4='p4 -P secret'
+to your F<.bash_profile> file. Another way is to create a small shell
+script, for example
+ #!/bin/bash
+ p4 -P secret $@
+And use this instead of running C<p4> directly.
+
+With either of these, be sure the file containing your password
+(the F<.bash_profile> or shell script file) is only readable by you.
The C<p4 users> command lists all currently known users.
@@ -377,6 +403,8 @@ Slightly updated by Simon Cozens, simon@brecon.co.uk, 3 July 2000.
More updates by Jarkko Hietaniemi, jhi@iki.fi, 28 June 2001.
+Perforce clarifications by Randall Gellens, rcg@users.sourceforge.net, 12 July 2001.
+
=cut
diff --git a/README.aix b/README.aix
index bf83535e43..45a062102a 100644
--- a/README.aix
+++ b/README.aix
@@ -24,16 +24,23 @@ of these two (which is quite a lot easier than using gcc), be sure to
upgrade to the latest available patch level. Currently:
xlC.C 3.1.4.0
- vac.C 4.4.0.3 (5.0 is already available)
+ vac.C 4.4.0.3 or 5.0.2.0
Perl can be compiled with either IBM's ANSI C compiler or with gcc.
The former is recommended, as not only can it compile Perl with no
difficulty, but also can take advantage of features listed later that
require the use of IBM compiler-specific command-line flags.
+The IBM's compiler patch levels 5.0.0.0 and 5.0.1.0 have compiler
+optimization bugs that affect compiling perl.c and regcomp.c,
+respectively. If Perl's configuration detects those compiler patch
+levels, optimization is turned off for the said source code files.
+Upgrading to at least 5.0.2.0 is recommended.
+
If you decide to use gcc, make sure your installation is recent and
complete, and be sure to read the Perl README file for more gcc-specific
-details.
+details. Please report any hoops you had to jump through to the development
+team.
=head2 OS level
@@ -54,12 +61,20 @@ AIX supports dynamically loadable libraries (shared libraries).
Shared libraries end with the suffix .a, which is a bit misleading,
because *all* libraries are shared ;-).
+Note that starting from Perl 5.7.2 (and consequently 5.8.0) and AIX
+4.3 or newer Perl uses the AIX native dynamic loading interface
+instead of the emulated interface that was used in Perl releases 5.6.1
+and earlier or, for AIX releases 4.2 and earlier. This change will
+probably break backward compatibility with compiled modules.
+The change was made to make Perl more compliant with other applications
+like modperl which are using the AIX native interface.
+
=head2 The IBM ANSI C Compiler
All defaults for Configure can be used.
If you've chosen to use vac 4, be sure to run 4.4.0.3. Older versions
-will turn up nasty later on.
+will turn up nasty later on. For vac 5 be sure to run at least 5.0.1.0.
Here's a brief lead of how to upgrade the compiler to the latest
level. Of course this is subject to changes. You can only upgrade
@@ -139,27 +154,32 @@ Follow the messages ... and you're done.
=head2 Using GNU's gcc for building perl
-... ?
+We're woking on this using gcc-3.0 ... (any input highly appreciated)
=head2 Using Large Files with Perl
-... ?
+Should yield no problems.
=head2 Threaded Perl
-... ?
+Threads seem to work OK, though at the moment not all tests pass when
+threads are used in combination with 64bit configurations.
=head2 64-bit Perl
-... ?
-
-=head2 GDBM and Threads
-
-... ?
+If your AIX is installed with 64-bit support, you can expect 64bit
+configurations to work. In combination with threads some tests might
+still fail.
-=head2 NFS filesystems and utime(2)
+=head2 AIX 4.2 and extensions using C++ with statics
-... ?
+In AIX 4.2 Perl extensions that use C++ functions that use statics
+may have problems in that the statics are not getting initialized.
+In newer AIX releases this has been solved by linking Perl with
+the libC_r library, but unfortunately in AIX 4.2 the said library
+has an obscure bug where the various functions related to time
+(such as time() and gettimeofday()) return broken values, and
+therefore in AIX 4.2 Perl is not linked against the libC_r.
=head1 AUTHOR
@@ -169,6 +189,6 @@ Structure copied from README.hpux
=head1 DATE
-Version 0.0.1: 16-10-2000
+Version 0.0.3: 12 Jul 2001
=cut
diff --git a/README.qnx b/README.qnx
index f59455bd78..9c4e39aa7e 100644
--- a/README.qnx
+++ b/README.qnx
@@ -8,7 +8,7 @@ README.qnx - Perl version 5 on QNX
=head1 DESCRIPTION
-As of perl5.8.0 all tests pass under:
+As of perl5.7.2 all tests pass under:
QNX 4.24G
Watcom 10.6 with Beta/970211.wcc.update.tar.F
@@ -17,25 +17,20 @@ As of perl5.8.0 all tests pass under:
Some tests may complain under known circumstances. See
below and hints/qnx.sh for more information.
-[ Perl 5.6.0 is shipping with QNX RTP (aka QNX6, Neutrino), but
-the build does not appear to be straightforward. If anyone has
-more data in this regard, please let me know.
+Under QNX 6.1.0 there are still a few tests which fail.
+See below and hints/qnx.sh for more information.
-These notes were originally written for QNX4 and do not
-necessarily apply to Neutrino, but see hints/qnx.sh for
-more information. ]
-
-=head2 Required Software for Compiling Perl on QNX
+=head2 Required Software for Compiling Perl on QNX4
As with many unix ports, this one depends on a few "standard"
-unix utilities which are not necessarily standard for QNX.
+unix utilities which are not necessarily standard for QNX4.
=over 4
=item /bin/sh
This is used heavily by Configure and then by
-perl itself. QNX's version is fine, but Configure
+perl itself. QNX4's version is fine, but Configure
will choke on the 16-bit version, so if you are
running QNX 4.22, link /bin/sh to /bin32/ksh
@@ -70,11 +65,11 @@ from quics for earlier versions.
=back
-=head2 Outstanding Issues with Perl on QNX
+=head2 Outstanding Issues with Perl on QNX4
There is no support for dynamically linked libraries in QNX4.
-The following tests may report errors:
+The following tests may report errors under QNX4:
ext/Cwd/Cwd.t will complain if `pwd` and cwd don't give
the same results. cwd calls `fullpath -t`, so if you
@@ -114,6 +109,15 @@ generate a similar cover, but it doesn't handle all the command-line
options that perl throws at it. This might be reasonably placed in
/usr/local/bin.
+=head2 Outstanding issues with perl under QNX6
+
+The following tests are still failing for Perl 5.7.1 under QNX 6.1.0:
+
+ op/sprintf.........................FAILED at test 91
+ lib/1_compile......................FAILED at test 33
+ ext/IO/lib/IO/t/io_sock............FAILED at test 12
+ ext/IO/lib/IO/t/io_udp.............FAILED at test 4
+
=back
=head1 AUTHOR
diff --git a/README.uts b/README.uts
new file mode 100644
index 0000000000..2025e37ef7
--- /dev/null
+++ b/README.uts
@@ -0,0 +1,107 @@
+If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see perlpod manpage) which is
+specially designed to be readable as is.
+
+=head1 NAME
+
+perluts - Perl under UTS
+
+=head1 SYNOPSIS
+
+This document can be read I<as is>: as F<README.uts>, or you
+can read it after you build your package using "man perluts".
+
+The purpose is to help you build Perl for UTS, which, if you
+follow these instructions, should be easy, and result in
+a solidly working installation.
+
+=head1 DESCRIPTION
+
+Perl 5.7.2 (Developmental) or Perl 5.8.x (forthcoming) for UTS
+
+=head1 BUILDING PERL ON UTS
+
+NOTE: Some sites have redefined the way uname works, and if yours
+does this, special steps must be taken so that Configure can
+recognize your system as a UTS system. To see if you are in
+this category, issue the command "uname -a". It should look
+something like:
+
+ uts juno 4 4.4 9672 370
+
+At any rate, the first field should be "uts". If this is not
+the case; supposing it is, say telcoUTS, create a script, uts/uname
+(i.e. uname, in the subdirectory "uts" of the main Perl source dir):
+ # uname
+ /usr/bin/uname "$@" | sed -e 's/^telcoUTS/uts/'
+
+and when you execute Configure, do it as below, except for adding
+PATH=uts:$PATH as a prefix. I.e. do:
+
+ PATH=uts:$PATH ./Configure ...
+
+There is no need to do an interactive configure, just type
+
+ ./Configure -de [-Dusedevel] [-Doptimize=-g ] 2>&1 | tee Conf.out
+
+"-Dusedevel" may be required to configure Perl 5.7.2 non-interactively.
+Use -Doptimize=-g if you want to run Perl under sdb or gdb, OR
+if you want to be able to use the -D command line flags to perl,
+which are occasionally useful in debugging perl scripts.
+
+In this and the following steps, the "2>&1 | tee XXX.out" records all
+output from the process, which will be useful if anything unexpected
+goes wrong.
+
+Then do the compilation with
+
+ make 2>&1 | tee make.out
+
+Finally, test using
+
+ make test 2>&1 | tee make-test.out
+
+In the output, the only failures you should see should look like:
+
+ lib/Math/BigInt/t/bigfltpm.........Use of uninitialized value ...
+ FAILED at test 57
+ lib/Math/BigInt/t/bigintc..........ok
+ lib/Math/BigInt/t/bigintpm.........FAILED at test 204
+ lib/Math/BigInt/t/mbimbf...........Use of uninitialized value ...
+ Illegal division by zero at ../lib/Math/BigInt/Calc.pm line 314.
+ FAILED at test 71
+ lib/Math/Complex...................exp: OVERFLOW
+ FAILED at test 250
+ lib/Math/Trig......................exp: OVERFLOW
+ ok
+ lib/Memoize/t/array................ok
+ ...
+ lib/Net/protoent...................ok
+ lib/Net/servent....................FAILED at test 0
+
+This means that everything passes except for some problems in the
+packages "Math::BigInt", "Math::Complex", and "Math::Trig".
+The lib/Net/servent failure seems to be a bug in the test
+program. To confirm this, from the main Perl source dir, do:
+
+ LD_LIBRARY_PATH=`pwd` ./perl -Ilib lib/Net/servent.t
+
+and it should output
+
+ 1..3
+ ok 1
+ ok 2
+ ok 3
+
+=head1 Installing the built perl on UTS
+
+Run the command "make install"
+
+=head1 AUTHOR
+
+ Hal Morris
+ UTS Global LLC
+ email: hom00@utsglobal.com
+
+=cut
+
diff --git a/av.c b/av.c
index 456a21e02d..8a4f855645 100644
--- a/av.c
+++ b/av.c
@@ -765,6 +765,7 @@ Perl_av_delete(pTHX_ AV *av, I32 key, I32 flags)
else {
sv = AvARRAY(av)[key];
if (key == AvFILLp(av)) {
+ AvARRAY(av)[key] = &PL_sv_undef;
do {
AvFILLp(av)--;
} while (--key >= 0 && AvARRAY(av)[key] == &PL_sv_undef);
diff --git a/config_h.SH b/config_h.SH
index d80ccda73b..e3c4a06b4a 100644
--- a/config_h.SH
+++ b/config_h.SH
@@ -3477,5 +3477,11 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
*/
#$i_langinfo I_LANGINFO /**/
+/* HAS_PTHREAD_ATFORK:
+ * This symbol, if defined, indicates that the pthread_atfork routine
+ * is available setup fork handlers.
+ */
+#$d_pthread_atfork HAS_PTHREAD_ATFORK /**/
+
#endif
!GROK!THIS!
diff --git a/configure.com b/configure.com
index 73880ac851..43cce9f2d1 100644
--- a/configure.com
+++ b/configure.com
@@ -5155,6 +5155,7 @@ $ WC "d_perl_otherlibdirs='undef'"
$ WC "d_phostname='" + d_phostname + "'"
$ WC "d_pipe='define'"
$ WC "d_poll='undef'"
+$ WC "d_pthread_atfork='undef'"
$ WC "d_pthread_yield='" + d_pthread_yield + "'"
$ WC "d_pthreads_created_joinable='" + d_pthreads_created_joinable + "'"
$ WC "d_pwage='undef'"
diff --git a/dump.c b/dump.c
index f23ac7babc..c2f7746b8e 100644
--- a/dump.c
+++ b/dump.c
@@ -392,7 +392,20 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
PerlIO_printf(file, "DONE\n");
if (o->op_targ) {
if (o->op_type == OP_NULL)
+ {
Perl_dump_indent(aTHX_ level, file, " (was %s)\n", PL_op_name[o->op_targ]);
+ if (o->op_targ == OP_NEXTSTATE)
+ {
+ if (CopLINE(cCOPo))
+ Perl_dump_indent(aTHX_ level, file, "LINE = %d\n",CopLINE(cCOPo));
+ if (CopSTASHPV(cCOPo))
+ Perl_dump_indent(aTHX_ level, file, "PACKAGE = \"%s\"\n",
+ CopSTASHPV(cCOPo));
+ if (cCOPo->cop_label)
+ Perl_dump_indent(aTHX_ level, file, "LABEL = \"%s\"\n",
+ cCOPo->cop_label);
+ }
+ }
else
Perl_dump_indent(aTHX_ level, file, "TARG = %ld\n", (long)o->op_targ);
}
diff --git a/embed.h b/embed.h
index cb9eb6c0fd..f6176db259 100644
--- a/embed.h
+++ b/embed.h
@@ -1177,6 +1177,7 @@
#define stdize_locale S_stdize_locale
#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
+#define closest_cop S_closest_cop
#define mess_alloc S_mess_alloc
# if defined(LEAKTEST)
#define xstat S_xstat
@@ -2351,7 +2352,7 @@
#define ss_dup(a,b) Perl_ss_dup(aTHX_ a,b)
#define any_dup(a,b) Perl_any_dup(aTHX_ a,b)
#define he_dup(a,b,c) Perl_he_dup(aTHX_ a,b,c)
-#define re_dup(a) Perl_re_dup(aTHX_ a)
+#define re_dup(a,b) Perl_re_dup(aTHX_ a,b)
#define fp_dup(a,b) Perl_fp_dup(aTHX_ a,b)
#define dirp_dup(a) Perl_dirp_dup(aTHX_ a)
#define gp_dup(a,b) Perl_gp_dup(aTHX_ a,b)
@@ -2677,6 +2678,7 @@
#define stdize_locale(a) S_stdize_locale(aTHX_ a)
#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
+#define closest_cop(a,b) S_closest_cop(aTHX_ a,b)
#define mess_alloc() S_mess_alloc(aTHX)
# if defined(LEAKTEST)
#define xstat(a) S_xstat(aTHX_ a)
@@ -5201,6 +5203,8 @@
#define stdize_locale S_stdize_locale
#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
+#define S_closest_cop CPerlObj::S_closest_cop
+#define closest_cop S_closest_cop
#define S_mess_alloc CPerlObj::S_mess_alloc
#define mess_alloc S_mess_alloc
# if defined(LEAKTEST)
diff --git a/embed.pl b/embed.pl
index 82ebfd2d8f..f125ef0a49 100755
--- a/embed.pl
+++ b/embed.pl
@@ -2228,7 +2228,7 @@ Ap |PERL_SI*|si_dup |PERL_SI* si|clone_params* param
Ap |ANY* |ss_dup |PerlInterpreter* proto_perl|clone_params* param
Ap |void* |any_dup |void* v|PerlInterpreter* proto_perl
Ap |HE* |he_dup |HE* e|bool shared|clone_params* param
-Ap |REGEXP*|re_dup |REGEXP* r
+Ap |REGEXP*|re_dup |REGEXP* r|clone_params* param
Ap |PerlIO*|fp_dup |PerlIO* fp|char type
Ap |DIR* |dirp_dup |DIR* dp
Ap |GP* |gp_dup |GP* gp|clone_params* param
@@ -2593,6 +2593,7 @@ s |char* |stdize_locale |char* locs
#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
+s |COP* |closest_cop |COP *cop|OP *o
s |SV* |mess_alloc
# if defined(LEAKTEST)
s |void |xstat |int
diff --git a/epoc/config.sh b/epoc/config.sh
index 772e30dc89..e628e1b7f1 100644
--- a/epoc/config.sh
+++ b/epoc/config.sh
@@ -263,6 +263,7 @@ d_phostname='undef'
d_pipe='undef'
d_poll='undef'
d_portable='undef'
+d_pthread_atfork='undef'
d_pthread_yield='undef'
d_pwage='undef'
d_pwchange='undef'
diff --git a/ext/I18N/Langinfo/Langinfo.t b/ext/I18N/Langinfo/Langinfo.t
index 9832a5dbed..4a3fa841af 100644
--- a/ext/I18N/Langinfo/Langinfo.t
+++ b/ext/I18N/Langinfo/Langinfo.t
@@ -2,6 +2,7 @@
BEGIN {
chdir 't' if -d 't';
+ @INC = '../lib';
require Config; import Config;
if ($Config{'extensions'} !~ m!\bI18N/Langinfo\b! ||
$Config{'extensions'} !~ m!\bPOSIX\b!)
diff --git a/ext/IO/lib/IO/t/io_unix.t b/ext/IO/lib/IO/t/io_unix.t
index 2f6def0af7..c996e6dc59 100644
--- a/ext/IO/lib/IO/t/io_unix.t
+++ b/ext/IO/lib/IO/t/io_unix.t
@@ -27,7 +27,7 @@ BEGIN {
eval {IO::Socket::pack_sockaddr_un('/tmp/foo') || 1}
or $@ !~ /not implemented/ or
$reason = 'compiled without TCP/IP stack v4';
- } elsif ($^O eq 'qnx') {
+ } elsif ($^O =~ m/^(?:qnx|nto)$/ ) {
$reason = 'Not implemented';
}
undef $reason if $^O eq 'VMS' and $Config{d_socket};
diff --git a/hints/aix.sh b/hints/aix.sh
index 0295182170..39b779184a 100644
--- a/hints/aix.sh
+++ b/hints/aix.sh
@@ -326,8 +326,8 @@ EOM
# Move xld-spefific -bflags.
ccflags="`echo $ccflags | sed -e 's@ -b@ -Wl,-b@g'`"
ldflags="`echo ' '$ldflags | sed -e 's@ -b@ -Wl,-b@g'`"
+ lddlflags="`echo ' '$lddlflags | sed -e 's@ -b@ -Wl,-b@g'`"
ld='gcc'
- lddlflags="`echo $lddlflags | sed -e 's@ -b@ -Wl,-b@g'`"
echo >&4 "(using ccflags $ccflags)"
echo >&4 "(using ldflags $ldflags)"
echo >&4 "(using lddlflags $lddlflags)"
diff --git a/hints/qnx.sh b/hints/qnx.sh
index a90ac37eda..18bacf9920 100644
--- a/hints/qnx.sh
+++ b/hints/qnx.sh
@@ -1,16 +1,13 @@
#----------------------------------------------------------------
# QNX hints
#
-# These hints were written for QNX4, but are in the process
-# of being extended to encompass Neutrino as well.
+# Most of the hints in this file are for QNX4, which needed
+# more help. The QNX6 hints are located toward the bottom.
#
-# As of perl5.004_04, all tests pass under:
-# QNX 4.23A
+# perl-5.7.2 passes all tests under QNX4.24G
# Watcom 10.6 with Beta/970211.wcc.update.tar.F
# socket3r.lib Nov21 1996.
-# perl-5.6.1 runs well on QNX4 with a few known test failures
-# perl-5.6.0 ships with QNX RTP (Neutrino) but the build is
-# not yet straightforward.
+# perl-5.7.2 fails 4 known tests under QNX6.1.0
#
# As with many unix ports, this one depends on a few "standard"
# unix utilities which are not necessarily standard for QNX4.
@@ -62,6 +59,15 @@
# lib/io_udp.t test hangs because of a bug in getsockname().
# Fixed in latest BETA socket3r.lib
#----------------------------------------------------------------
+# Outstanding Issues for QNX6:
+# The following tests are still failing as of 5.7.1:
+#
+# op/sprintf.........................FAILED at test 91
+# lib/1_compile......................FAILED at test 33
+# ext/IO/lib/IO/t/io_sock............FAILED at test 12
+# ext/IO/lib/IO/t/io_udp.............FAILED at test 4
+#
+#----------------------------------------------------------------
# These hints were submitted by:
# Norton T. Allen
# Harvard University Atmospheric Research Project
@@ -208,4 +214,21 @@ if [ "$osname" = "qnx" ]; then
/usr/local/bin or some other suitable location.
EOF
fi
+else
+ # $^O eq nto
+
+ ccflags='-DDLOPEN_WONT_DO_RELATIVE_PATHS'
+
+ # Options required to get dynamic linking to work
+ lddlflags='-shared'
+ ccdlflags='-Wl,-E'
+
+ # Somewhere in the build, something tries to throw a gcc
+ # option to $cc if it knows it invokes gcc. Our cc doesn't
+ # recognize that option, so we're better off setting cc=gcc.
+ cc='gcc'
+
+ # If we use perl's malloc, it dies with an invalid sbrk.
+ # This is probably worth tracking down someday.
+ usemymalloc='false'
fi
diff --git a/hv.c b/hv.c
index 76180f2d8a..a08720e849 100644
--- a/hv.c
+++ b/hv.c
@@ -199,7 +199,7 @@ Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval)
return 0;
}
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT)) {
+ if (is_utf8) {
STRLEN tmplen = klen;
/* Just casting the &klen to (STRLEN) won't work well
* if STRLEN and I32 are of different widths. --jhi */
@@ -333,7 +333,7 @@ Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash)
keysave = key = SvPV(keysv, klen);
is_utf8 = (SvUTF8(keysv)!=0);
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT))
+ if (is_utf8)
key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8);
if (!hash)
@@ -447,7 +447,7 @@ Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, register U32 has
#endif
}
}
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT)) {
+ if (is_utf8) {
STRLEN tmplen = klen;
/* See the note in hv_fetch(). --jhi */
key = (char*)bytes_from_utf8((U8*)key, &tmplen, &is_utf8);
@@ -565,7 +565,7 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash)
keysave = key = SvPV(keysv, klen);
is_utf8 = (SvUTF8(keysv) != 0);
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT))
+ if (is_utf8)
key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8);
if (!hash)
@@ -675,7 +675,7 @@ Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags)
if (!xhv->xhv_array /* !HvARRAY(hv) */)
return Nullsv;
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT)) {
+ if (is_utf8) {
STRLEN tmplen = klen;
/* See the note in hv_fetch(). --jhi */
key = (char*)bytes_from_utf8((U8*)key, &tmplen, &is_utf8);
@@ -779,7 +779,7 @@ Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
keysave = key = SvPV(keysv, klen);
is_utf8 = (SvUTF8(keysv) != 0);
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT))
+ if (is_utf8)
key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8);
if (!hash)
@@ -869,7 +869,7 @@ Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
return 0;
#endif
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT)) {
+ if (is_utf8) {
STRLEN tmplen = klen;
/* See the note in hv_fetch(). --jhi */
key = (char*)bytes_from_utf8((U8*)key, &tmplen, &is_utf8);
@@ -966,7 +966,7 @@ Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
keysave = key = SvPV(keysv, klen);
is_utf8 = (SvUTF8(keysv) != 0);
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT))
+ if (is_utf8)
key = (char*)bytes_from_utf8((U8*)key, &klen, &is_utf8);
if (!hash)
PERL_HASH(hash, key, klen);
@@ -1584,14 +1584,11 @@ Perl_unsharepvn(pTHX_ const char *str, I32 len, U32 hash)
const char *save = str;
if (len < 0) {
- len = -len;
+ STRLEN tmplen = -len;
is_utf8 = TRUE;
- if (!(PL_hints & HINT_UTF8_DISTINCT)) {
- STRLEN tmplen = len;
- /* See the note in hv_fetch(). --jhi */
- str = (char*)bytes_from_utf8((U8*)str, &tmplen, &is_utf8);
- len = tmplen;
- }
+ /* See the note in hv_fetch(). --jhi */
+ str = (char*)bytes_from_utf8((U8*)str, &tmplen, &is_utf8);
+ len = tmplen;
}
/* what follows is the moral equivalent of:
@@ -1647,14 +1644,11 @@ Perl_share_hek(pTHX_ const char *str, I32 len, register U32 hash)
const char *save = str;
if (len < 0) {
- len = -len;
+ STRLEN tmplen = -len;
is_utf8 = TRUE;
- if (!(PL_hints & HINT_UTF8_DISTINCT)) {
- STRLEN tmplen = len;
- /* See the note in hv_fetch(). --jhi */
- str = (char*)bytes_from_utf8((U8*)str, &tmplen, &is_utf8);
- len = tmplen;
- }
+ /* See the note in hv_fetch(). --jhi */
+ str = (char*)bytes_from_utf8((U8*)str, &tmplen, &is_utf8);
+ len = tmplen;
}
/* what follows is the moral equivalent of:
diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm
index d5f44f8d73..fb57a9e360 100644
--- a/lib/File/Copy.pm
+++ b/lib/File/Copy.pm
@@ -84,24 +84,27 @@ sub copy {
my $closefrom = 0;
my $closeto = 0;
my ($size, $status, $r, $buf);
- local(*FROM, *TO);
local($\) = '';
+ my $from_h;
if ($from_a_handle) {
- *FROM = *$from{FILEHANDLE};
+ $from_h = $from;
} else {
$from = _protect($from) if $from =~ /^\s/s;
- open(FROM, "< $from\0") or goto fail_open1;
- binmode FROM or die "($!,$^E)";
+ $from_h = \do { local *FH };
+ open($from_h, "< $from\0") or goto fail_open1;
+ binmode $from_h or die "($!,$^E)";
$closefrom = 1;
}
+ my $to_h;
if ($to_a_handle) {
- *TO = *$to{FILEHANDLE};
+ $to_h = $to;
} else {
$to = _protect($to) if $to =~ /^\s/s;
- open(TO,"> $to\0") or goto fail_open2;
- binmode TO or die "($!,$^E)";
+ $to_h = \do { local *FH };
+ open($to_h,"> $to\0") or goto fail_open2;
+ binmode $to_h or die "($!,$^E)";
$closeto = 1;
}
@@ -109,7 +112,8 @@ sub copy {
$size = shift(@_) + 0;
croak("Bad buffer size for copy: $size\n") unless ($size > 0);
} else {
- $size = -s FROM;
+ no warnings 'uninitialized';
+ $size = -s $from_h;
$size = 1024 if ($size < 512);
$size = $Too_Big if ($size > $Too_Big);
}
@@ -117,17 +121,17 @@ sub copy {
$! = 0;
for (;;) {
my ($r, $w, $t);
- defined($r = sysread(FROM, $buf, $size))
+ defined($r = sysread($from_h, $buf, $size))
or goto fail_inner;
last unless $r;
for ($w = 0; $w < $r; $w += $t) {
- $t = syswrite(TO, $buf, $r - $w, $w)
+ $t = syswrite($to_h, $buf, $r - $w, $w)
or goto fail_inner;
}
}
- close(TO) || goto fail_open2 if $closeto;
- close(FROM) || goto fail_open1 if $closefrom;
+ close($to_h) || goto fail_open2 if $closeto;
+ close($from_h) || goto fail_open1 if $closefrom;
# Use this idiom to avoid uninitialized value warning.
return 1;
@@ -137,14 +141,14 @@ sub copy {
if ($closeto) {
$status = $!;
$! = 0;
- close TO;
+ close $to_h;
$! = $status unless $!;
}
fail_open2:
if ($closefrom) {
$status = $!;
$! = 0;
- close FROM;
+ close $from_h;
$! = $status unless $!;
}
fail_open1:
diff --git a/lib/Tie/Array.pm b/lib/Tie/Array.pm
index 8821783cfa..7703c13d9a 100644
--- a/lib/Tie/Array.pm
+++ b/lib/Tie/Array.pm
@@ -11,7 +11,6 @@ sub DESTROY { }
sub EXTEND { }
sub UNSHIFT { scalar shift->SPLICE(0,0,@_) }
sub SHIFT { shift->SPLICE(0,1) }
-#sub SHIFT { (shift->SPLICE(0,1))[0] }
sub CLEAR { shift->STORESIZE(0) }
sub PUSH
@@ -70,7 +69,7 @@ sub SPLICE {
for (my $i=0; $i < @_; $i++) {
$obj->STORE($off+$i,$_[$i]);
}
- return @result;
+ return wantarray ? @result : pop @result;
}
sub EXISTS {
diff --git a/lib/Unicode/UCD.pm b/lib/UnicodeCD.pm
index cc5d192227..f80d753444 100644
--- a/lib/Unicode/UCD.pm
+++ b/lib/UnicodeCD.pm
@@ -1,4 +1,4 @@
-package Unicode::UCD;
+package UnicodeCD;
use strict;
use warnings;
@@ -19,17 +19,17 @@ use Carp;
=head1 NAME
-Unicode::UCD - Unicode character database
+UnicodeCD - Unicode character database
=head1 SYNOPSIS
- use Unicode::UCD 'charinfo';
+ use UnicodeCD 'charinfo';
my $charinfo = charinfo($codepoint);
- use Unicode::UCD 'charblock';
+ use UnicodeCD 'charblock';
my $charblock = charblock($codepoint);
- use Unicode::UCD 'charscript';
+ use UnicodeCD 'charscript';
my $charscript = charblock($codepoint);
=head1 DESCRIPTION
@@ -66,7 +66,7 @@ sub openunicode {
=head2 charinfo
- use Unicode::UCD 'charinfo';
+ use UnicodeCD 'charinfo';
my $charinfo = charinfo(0x41);
@@ -180,7 +180,7 @@ sub charinrange {
=head2 charblock
- use Unicode::UCD 'charblock';
+ use UnicodeCD 'charblock';
my $charblock = charblock(0x41);
my $charblock = charblock(1234);
@@ -242,7 +242,7 @@ sub charblock {
=head2 charscript
- use Unicode::UCD 'charscript';
+ use UnicodeCD 'charscript';
my $charscript = charscript(0x41);
my $charscript = charscript(1234);
@@ -305,7 +305,7 @@ sub charscript {
=head2 charblocks
- use Unicode::UCD 'charblocks';
+ use UnicodeCD 'charblocks';
my $charblocks = charblocks();
@@ -321,7 +321,7 @@ sub charblocks {
=head2 charscripts
- use Unicode::UCD 'charscripts';
+ use UnicodeCD 'charscripts';
my %charscripts = charscripts();
@@ -379,7 +379,7 @@ can also test whether a code point is in the I<range> as returned by
L</charblock> and L</charscript> or as the values of the hash returned
by L</charblocks> and </charscripts> by using charinrange():
- use Unicode::UCD qw(charscript charinrange);
+ use UnicodeCD qw(charscript charinrange);
$range = charscript('Hiragana');
print "looks like hiragana\n" if charinrange($range, $code);
@@ -388,7 +388,7 @@ by L</charblocks> and </charscripts> by using charinrange():
=head2 compexcl
- use Unicode::UCD 'compexcl';
+ use UnicodeCD 'compexcl';
my $compexcl = compexcl("09dc");
@@ -428,7 +428,7 @@ sub compexcl {
=head2 casefold
- use Unicode::UCD 'casefold';
+ use UnicodeCD 'casefold';
my %casefold = casefold("09dc");
@@ -498,7 +498,7 @@ sub casefold {
=head2 casespec
- use Unicode::UCD 'casespec';
+ use UnicodeCD 'casespec';
my %casespec = casespec("09dc");
@@ -571,9 +571,9 @@ sub casespec {
return $CASESPEC{$code};
}
-=head2 Unicode::UCD::UnicodeVersion
+=head2 UnicodeCD::UnicodeVersion
-Unicode::UCD::UnicodeVersion() returns the version of the Unicode Character
+UnicodeCD::UnicodeVersion() returns the version of the Unicode Character
Database, in other words, the version of the Unicode standard the
database implements.
diff --git a/lib/Unicode/UCD.t b/lib/UnicodeCD.t
index 6ebea8a1a6..07c572c90a 100644
--- a/lib/Unicode/UCD.t
+++ b/lib/UnicodeCD.t
@@ -1,11 +1,11 @@
-use Unicode::UCD;
+use UnicodeCD;
use Test;
use strict;
BEGIN { plan tests => 111 };
-use Unicode::UCD 'charinfo';
+use UnicodeCD 'charinfo';
my $charinfo;
@@ -93,7 +93,7 @@ ok($charinfo->{title}, '');
ok($charinfo->{block}, 'Hebrew');
ok($charinfo->{script}, 'Hebrew');
-use Unicode::UCD qw(charblock charscript);
+use UnicodeCD qw(charblock charscript);
# 0x0590 is in the Hebrew block but unused.
@@ -120,7 +120,7 @@ ok($charinfo->{title}, '');
ok($charinfo->{block}, 'Latin-1 Supplement');
ok($charinfo->{script}, undef);
-use Unicode::UCD qw(charblocks charscripts);
+use UnicodeCD qw(charblocks charscripts);
my $charblocks = charblocks();
@@ -151,7 +151,7 @@ $ranges = charscript('Ogham');
ok($ranges->[0]->[0], hex('1681'));
ok($ranges->[0]->[1], hex('169a'));
-use Unicode::UCD qw(charinrange);
+use UnicodeCD qw(charinrange);
$ranges = charscript('Cherokee');
ok(!charinrange($ranges, "139f"));
@@ -159,14 +159,14 @@ ok( charinrange($ranges, "13a0"));
ok( charinrange($ranges, "13f4"));
ok(!charinrange($ranges, "13f5"));
-ok(Unicode::UCD::UnicodeVersion, 3.1);
+ok(UnicodeCD::UnicodeVersion, 3.1);
-use Unicode::UCD qw(compexcl);
+use UnicodeCD qw(compexcl);
ok(!compexcl(0x0100));
ok( compexcl(0x0958));
-use Unicode::UCD qw(casefold);
+use UnicodeCD qw(casefold);
my $casefold;
@@ -184,7 +184,7 @@ ok($casefold->{code} eq '00DF' &&
ok(!casefold(0x20));
-use Unicode::UCD qw(casespec);
+use UnicodeCD qw(casespec);
my $casespec;
diff --git a/lib/open.pm b/lib/open.pm
index a42f62353b..1456666edd 100644
--- a/lib/open.pm
+++ b/lib/open.pm
@@ -10,9 +10,13 @@ sub in_locale { $^H & $locale::hint_bits }
sub _get_locale_encoding {
unless (defined $locale_encoding) {
- eval { use I18N::Langinfo qw(langinfo CODESET) };
+ eval {
+ # I18N::Langinfo isn't available everywhere
+ require I18N::Langinfo;
+ I18N::Langinfo->import('langinfo', 'CODESET');
+ };
unless ($@) {
- $locale_encoding = langinfo(CODESET);
+ $locale_encoding = langinfo(CODESET());
}
my $country_language;
if (not $locale_encoding && in_locale()) {
@@ -26,8 +30,8 @@ sub _get_locale_encoding {
# parts of LC_ALL and LANG (the parts before the dot (if any)),
# since we have Locale::Country and Locale::Language available.
# TODO: get a database of Language -> Encoding mappings
- # (the Estonian database would be excellent!)
- # --jhi
+ # (the Estonian database at http://www.eki.ee/letter/
+ # would be excellent!) --jhi
}
if (defined $locale_encoding &&
$locale_encoding eq 'euc' &&
@@ -49,9 +53,7 @@ sub import {
my ($class,@args) = @_;
croak("`use open' needs explicit list of disciplines") unless @args;
$^H |= $open::hint_bits;
- my ($in,$out) = split(/\0/,(${^OPEN} || '\0'));
- my @in = split(/\s+/,$in);
- my @out = split(/\s+/,$out);
+ my ($in,$out) = split(/\0/,(${^OPEN} || "\0"), -1);
while (@args) {
my $type = shift(@args);
my $discp = shift(@args);
@@ -67,20 +69,18 @@ sub import {
if ($locale_encoding =~ /^utf-?8$/i) {
$layer = "utf8";
} else {
- $layer = "encoding";
+ $layer = "encoding($locale_encoding)";
}
}
unless(PerlIO::Layer::->find($layer)) {
carp("Unknown discipline layer '$layer'");
}
- if (defined $locale_encoding) {
- $layer = "$layer($locale_encoding)";
- }
push(@val,":$layer");
if ($layer =~ /^(crlf|raw)$/) {
$^H{"open_$type"} = $layer;
}
}
+ # print "# type = $type, val = @val\n";
if ($type eq 'IN') {
$in = join(' ',@val);
}
diff --git a/lib/unicode/distinct.pm b/lib/unicode/distinct.pm
deleted file mode 100644
index 74f791f1a5..0000000000
--- a/lib/unicode/distinct.pm
+++ /dev/null
@@ -1,35 +0,0 @@
-package unicode::distinct;
-
-our $VERSION = '0.01';
-
-$unicode::distinct::hint_bits = 0x01000000;
-
-sub import {
- $^H |= $unicode::distinct::hint_bits;
-}
-
-sub unimport {
- $^H &= ~$unicode::distinct::hint_bits;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-unicode::distinct - Perl pragma to strictly distinguish UTF8 data and non-UTF data.
-
-=head1 SYNOPSIS
-
- use unicode::distinct;
- no unicode::distinct;
-
-=head1 DESCRIPTION
-
- *NOT YET*
-
-=head1 SEE ALSO
-
-L<perlunicode>, L<utf8>
-
-=cut
diff --git a/myconfig.SH b/myconfig.SH
index 9afa5449a9..798bc89a94 100644
--- a/myconfig.SH
+++ b/myconfig.SH
@@ -44,7 +44,7 @@ Summary of my $package (revision $baserev $version_patchlevel_string) configurat
intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize, doublesize=$doublesize, byteorder=$byteorder
d_longlong=$d_longlong, longlongsize=$longlongsize, d_longdbl=$d_longdbl, longdblsize=$longdblsize
ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize, Off_t='$lseektype', lseeksize=$lseeksize
- alignbytes=$alignbytes, usemymalloc=$usemymalloc, prototype=$prototype
+ alignbytes=$alignbytes, usemymalloc=$usemymalloc, prototype=$prototype, bincompat5005=$d_bincompat5005
Linker and Libraries:
ld='$ld', ldflags ='$ldflags'
libpth=$libpth
diff --git a/op.c b/op.c
index 28c93d8ff4..98239d9dd8 100644
--- a/op.c
+++ b/op.c
@@ -2951,7 +2951,7 @@ Perl_newPMOP(pTHX_ I32 type, I32 flags)
#ifdef USE_ITHREADS
{
SV* repointer = newSViv(0);
- av_push(PL_regex_padav,repointer);
+ av_push(PL_regex_padav,SvREFCNT_inc(repointer));
pmop->op_pmoffset = av_len(PL_regex_padav);
PL_regex_pad = AvARRAY(PL_regex_padav);
}
diff --git a/op.h b/op.h
index 2d953581d1..af0e983712 100644
--- a/op.h
+++ b/op.h
@@ -250,7 +250,7 @@ struct pmop {
};
#ifdef USE_ITHREADS
-#define PM_GETRE(o) ((REGEXP*)SvIV(PL_regex_pad[(o)->op_pmoffset]))
+#define PM_GETRE(o) ((REGEXP*)SvIVX(PL_regex_pad[(o)->op_pmoffset]))
#define PM_SETRE(o,r) (sv_setiv(PL_regex_pad[(o)->op_pmoffset], (IV)r))
#else
#define PM_GETRE(o) ((o)->op_pmregexp)
diff --git a/patchlevel.h b/patchlevel.h
index 8f6c6288bb..565f8973b4 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -70,7 +70,7 @@
#if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
static char *local_patches[] = {
NULL
- ,"DEVEL11277"
+ ,"DEVEL11326"
,NULL
};
diff --git a/perl.h b/perl.h
index b4b1a4fb0c..9041aa010d 100644
--- a/perl.h
+++ b/perl.h
@@ -2962,7 +2962,6 @@ enum { /* pass one of these to get_vtbl */
#define HINT_FILETEST_ACCESS 0x00400000
#define HINT_UTF8 0x00800000
-#define HINT_UTF8_DISTINCT 0x01000000
/* Various states of an input record separator SV (rs, nrs) */
#define RsSNARF(sv) (! SvOK(sv))
diff --git a/perlapi.c b/perlapi.c
index df16150c70..fb5c40725d 100644
--- a/perlapi.c
+++ b/perlapi.c
@@ -4082,9 +4082,9 @@ Perl_he_dup(pTHXo_ HE* e, bool shared, clone_params* param)
#undef Perl_re_dup
REGEXP*
-Perl_re_dup(pTHXo_ REGEXP* r)
+Perl_re_dup(pTHXo_ REGEXP* r, clone_params* param)
{
- return ((CPerlObj*)pPerl)->Perl_re_dup(r);
+ return ((CPerlObj*)pPerl)->Perl_re_dup(r, param);
}
#undef Perl_fp_dup
diff --git a/pod/buildtoc.PL b/pod/buildtoc.PL
index 7b54ed3c84..8bec9449dd 100644
--- a/pod/buildtoc.PL
+++ b/pod/buildtoc.PL
@@ -82,6 +82,7 @@ if (-d "pod") {
perlplan9
perlsolaris
perltru64
+ perluts
perlvmesa
perlvms
perlvos
diff --git a/pod/perl.pod b/pod/perl.pod
index 6138274519..634a38bc52 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -131,6 +131,7 @@ For ease of access, the Perl manual has been split up into several sections:
perlqnx Perl notes for QNX
perlsolaris Perl notes for Solaris
perltru64 Perl notes for Tru64
+ perluts Perl notes for UTS
perlvmesa Perl notes for VM/ESA
perlvms Perl notes for VMS
perlvos Perl notes for Stratus VOS
diff --git a/pod/perl572delta.pod b/pod/perl572delta.pod
index 0dc191f91f..13d5690113 100644
--- a/pod/perl572delta.pod
+++ b/pod/perl572delta.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perl571delta - what's new for perl v5.7.2
+perl572delta - what's new for perl v5.7.2
=head1 DESCRIPTION
@@ -38,9 +38,11 @@ for such large memory models than the Perl malloc.
=head2 AIX Dynaloading
-The AIX dynaloading now uses the native dlopen interface of AIX,
-(given the AIX is recent enough) instead of the old emulated interface.
-This will probably break backward compatibility with compiled modules.
+The AIX dynaloading now uses in AIX releases 4.3 and newer the native
+dlopen interface of AIX instead of the old emulated interface. This
+change will probably break backward compatibility with compiled
+modules. The change was made to make Perl more compliant with other
+applications like modperl which are using the AIX native interface.
=head2 Socket Extension Dynamic in VMS
@@ -235,7 +237,7 @@ L<Time::Seconds> - a simple API to convert seconds to other date values
=item *
-L<Unicode::UCD> - Unicode Character Database
+L<UnicodeCD> - Unicode Character Database
=back
@@ -312,6 +314,7 @@ less lossy (it uses integers for integer constant, as opposed to the
old code that used floating point numbers even for integer constants),
and slightly faster, you might want to consider regenerating your
extension code (the new scheme makes regenerating easy).
+L<h2xs> now also supports C trigraphs.
=item *
@@ -362,8 +365,8 @@ gprofiled Perl executable.
=item *
-AIX should now work better with gcc. Also longdouble support in AIX
-should be better now. See L<perlaix>.
+AIX should now work better with gcc, threads, and 64-bitness. Also the
+long doubles support in AIX should be better now. See L<perlaix>.
=item *
@@ -375,6 +378,10 @@ DG/UX platform now supports the 5.005-style threads. See L<perldgux>.
=item *
+DYNIX/ptx platform (a.k.a. dynixptx) is supported at or near osvers 4.5.2.
+
+=item *
+
Several MacOS (Classic) portability patches have been applied. We
hope to get a fully working port by 5.8.0. (The remaining problems
relate to the changed IO model of Perl.) See L<perlmacos>.
@@ -633,7 +640,7 @@ The op/sprintf tests 129 and 130 are known to fail on some platforms.
Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX.
The failing platforms do not comply with the ANSI C Standard, line
19ff on page 134 of ANSI X3.159 1989 to be exact. (They produce
-something else than "1" and "-1" when formatting 0.6 and -0.6 using
+something other than "1" and "-1" when formatting 0.6 and -0.6 using
the printf format "%.0f", most often they produce "0" and "-0".)
=head2 Failure of Thread tests
@@ -676,15 +683,7 @@ These tests fail because of yet unresolved floating point inaccuracies.
=head2 UTS
-Many floating point inaccuracies:
-
- op/numconvert 511,657,658,659,665-667,831,991,1151
- op/pack 10,22,149,156
- op/sprintf 8,10,13,102-107,134-135,146-153,159-162
- lib/Math/BigInt/bigintpm 1145,1183
- lib/Math/Complex 250,257,514,521,722-724,
- 934,935,945,949,955,956,975,976
- ext/POSIX/POSIX 14
+There are a few known test failures, see L<perluts>.
=head2 VMS
@@ -706,7 +705,8 @@ DEC C V5.3-006 on OpenVMS VAX V6.2
[.op]sprintf............................FAILED on test 12
Failed 8/399 tests, 91.23% okay.
-DEC C V6.0-001 on OpenVMS Alpha V7.2-1
+DEC C V6.0-001 on OpenVMS Alpha V7.2-1 and
+Compaq C V6.2-008 on OpenVMS Alpha V7.1
[-.ext.list.util.t]tainted..............FAILED on test 3
[-.lib.file.find]taint..................FAILED on test 17
diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod
index cf27c0f8ea..2c992f20d5 100644
--- a/pod/perlfaq4.pod
+++ b/pod/perlfaq4.pod
@@ -51,19 +51,36 @@ See L<perlop/"Floating-point Arithmetic">.
=head2 Why isn't my octal data interpreted correctly?
Perl only understands octal and hex numbers as such when they occur
-as literals in your program. If they are read in from somewhere and
-assigned, no automatic conversion takes place. You must explicitly
-use oct() or hex() if you want the values converted. oct() interprets
+as literals in your program. Octal literals in perl must start with
+a leading "0" and hexadecimal literals must start with a leading "0x".
+If they are read in from somewhere and assigned, no automatic
+conversion takes place. You must explicitly use oct() or hex() if you
+want the values converted to decimal. oct() interprets
both hex ("0x350") numbers and octal ones ("0350" or even without the
leading "0", like "377"), while hex() only converts hexadecimal ones,
with or without a leading "0x", like "0x255", "3A", "ff", or "deadbeef".
+The inverse mapping from decimal to octal can be done with either the
+"%o" or "%O" sprintf() formats. To get from decimal to hex try either
+the "%x" or the "%X" formats to sprintf().
This problem shows up most often when people try using chmod(), mkdir(),
-umask(), or sysopen(), which all want permissions in octal.
+umask(), or sysopen(), which by widespread tradition typically take
+permissions in octal.
- chmod(644, $file); # WRONG -- perl -w catches this
+ chmod(644, $file); # WRONG
chmod(0644, $file); # right
+Note the mistake in the first line was specifying the decimal literal
+644, rather than the intended octal literal 0644. The problem can
+be seen with:
+
+ printf("%#o",644); # prints 01204
+
+Surely you had not intended C<chmod(01204, $file);> - did you? If you
+want to use numeric literals as arguments to chmod() et al. then please
+try to express them as octal constants, that is with a leading zero and
+with the following digits restricted to the set 0..7.
+
=head2 Does Perl have a round() function? What about ceil() and floor()? Trig functions?
Remember that int() merely truncates toward 0. For rounding to a
diff --git a/pod/perlmodlib.pod b/pod/perlmodlib.pod
index af870ef86b..565c0d15e2 100644
--- a/pod/perlmodlib.pod
+++ b/pod/perlmodlib.pod
@@ -132,10 +132,6 @@ Restrict unsafe constructs
Predeclare sub names
-=item unicode::distinct
-
-Strictly distinguish UTF8 data and non-UTF data.
-
=item utf8
Enable/disable UTF-8 (or UTF-EBCDIC) in source code
@@ -894,6 +890,26 @@ Expand and unexpand tabs per the unix expand(1) and unexpand(1)
Line wrapping to form simple paragraphs
+=item Thread
+
+Manipulate threads in Perl (EXPERIMENTAL, subject to change)
+
+=item Thread::Queue
+
+Thread-safe queues
+
+=item Thread::Semaphore
+
+Thread-safe semaphores
+
+=item Thread::Signal
+
+Start a thread which runs signal handlers reliably
+
+=item Thread::Specific
+
+Thread-specific keys
+
=item Tie::Array
Base class for tied arrays
@@ -938,7 +954,7 @@ Internal object used by Time::gmtime and Time::localtime
Base class for ALL classes (blessed references)
-=item Unicode::UCD
+=item UnicodeCD
Unicode character database
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index e5d26a7a5d..c906397762 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -2225,24 +2225,24 @@ Filter::Simple, FindBin, Getopt::Long, Getopt::Std, I18N::Collate,
I18N::LangTags, I18N::LangTags::List, IO, IPC::Open2, IPC::Open3,
Locale::Constants, Locale::Country, Locale::Currency, Locale::Language,
Locale::Maketext, Locale::Maketext::TPJ13, Math::BigFloat, Math::BigInt,
-Math::Complex, Math::Trig, Memoize, Memoize::AnyDBM_File, Memoize::Expire,
-Memoize::ExpireFile, Memoize::ExpireTest, Memoize::NDBM_File,
-Memoize::SDBM_File, Memoize::Saves, Memoize::Storable, NDBM_File, NEXT,
-Net::Cmd, Net::Config, Net::Domain, Net::FTP, Net::NNTP, Net::Netrc,
-Net::POP3, Net::Ping, Net::SMTP, Net::Time, Net::hostent, Net::libnetFAQ,
-Net::netent, Net::protoent, Net::servent, O, ODBM_File, Opcode, POSIX,
-PerlIO, Pod::Checker, Pod::Find, Pod::Html, Pod::InputObjects, Pod::LaTeX,
+Math::BigInt::Calc, Math::Complex, Math::Trig, Memoize,
+Memoize::AnyDBM_File, Memoize::Expire, Memoize::ExpireFile,
+Memoize::ExpireTest, Memoize::NDBM_File, Memoize::SDBM_File,
+Memoize::Saves, Memoize::Storable, NDBM_File, NEXT, Net::Cmd, Net::Config,
+Net::Domain, Net::FTP, Net::NNTP, Net::Netrc, Net::POP3, Net::Ping,
+Net::SMTP, Net::Time, Net::hostent, Net::libnetFAQ, Net::netent,
+Net::protoent, Net::servent, O, ODBM_File, Opcode, POSIX, PerlIO,
+Pod::Checker, Pod::Find, Pod::Html, Pod::InputObjects, Pod::LaTeX,
Pod::Man, Pod::ParseUtils, Pod::Parser, Pod::Plainer, Pod::Select,
Pod::Text, Pod::Text::Color, Pod::Text::Overstrike, Pod::Text::Termcap,
Pod::Usage, SDBM_File, Safe, Search::Dict, SelectSaver, SelfLoader, Shell,
Socket, Storable, Switch, Symbol, Term::ANSIColor, Term::Cap,
Term::Complete, Term::ReadLine, Test, Test::Harness, Test::More,
Test::Simple, Text::Abbrev, Text::Balanced, Text::ParseWords,
-Text::Soundex, Text::Tabs, Text::Wrap, Thread, Thread::Queue,
-Thread::Semaphore, Thread::Signal, Thread::Specific, Tie::Array,
-Tie::Handle, Tie::Hash, Tie::RefHash, Tie::Scalar, Tie::SubstrHash,
-Time::Local, Time::gmtime, Time::localtime, Time::tm, UNIVERSAL,
-Unicode::UCD, User::grent, User::pwent, Win32
+Text::Soundex, Text::Tabs, Text::Wrap, Tie::Array, Tie::Handle, Tie::Hash,
+Tie::RefHash, Tie::Scalar, Tie::SubstrHash, Time::Local, Time::gmtime,
+Time::localtime, Time::tm, UNIVERSAL, UnicodeCD, User::grent, User::pwent,
+Win32
=item Extension Modules
@@ -3648,6 +3648,8 @@ save_hptr(HV **hptr)>
=item Compile pass 3: peephole optimization
+=item Pluggable runops
+
=back
=item Examining internal data structures with the C<dump> functions
@@ -4576,7 +4578,7 @@ I<The Road goes ever on and on, down from the door where it began.>
=back
-=head2 perl572delta, perl571delta - what's new for perl v5.7.2
+=head2 perl572delta - what's new for perl v5.7.2
=over 4
@@ -5698,9 +5700,7 @@ long, Process terminated by SIG%s
=item 64-bit Perl
-=item GDBM and Threads
-
-=item NFS filesystems and utime(2)
+=item AIX 4.2 and extensions using C++ with statics
=back
@@ -6503,16 +6503,18 @@ C<COND_WAIT>, F<os2.c>
=over 4
-=item Required Software for Compiling Perl on QNX
+=item Required Software for Compiling Perl on QNX4
/bin/sh, ar, nm, cpp, make
-=item Outstanding Issues with Perl on QNX
+=item Outstanding Issues with Perl on QNX4
=item QNX auxiliary files
qnx/ar, qnx/cpp
+=item Outstanding issues with perl under QNX6
+
=back
=item AUTHOR
@@ -6668,6 +6670,22 @@ Digital UNIX formerly known as DEC OSF/1) systems
=back
+=head2 perluts - Perl under UTS
+
+=over 4
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=item BUILDING PERL ON UTS
+
+=item Installing the built perl on UTS
+
+=item AUTHOR
+
+=back
+
=head2 perlvmesa, README.vmesa - building and installing Perl for VM/ESA.
=over 4
@@ -7289,19 +7307,6 @@ C<strict refs>, C<strict vars>, C<strict subs>
=back
-=head2 unicode::distinct - Perl pragma to strictly distinguish UTF8 data
-and non-UTF data.
-
-=over 4
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item SEE ALSO
-
-=back
-
=head2 utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source
code
@@ -8736,32 +8741,32 @@ C<d_oldpthreads>, C<d_oldsock>, C<d_open3>, C<d_pathconf>, C<d_pause>,
C<d_perl_otherlibdirs>, C<d_phostname>, C<d_pipe>, C<d_poll>,
C<d_portable>, C<d_PRId64>, C<d_PRIeldbl>, C<d_PRIEUldbl>, C<d_PRIfldbl>,
C<d_PRIFUldbl>, C<d_PRIgldbl>, C<d_PRIGUldbl>, C<d_PRIi64>, C<d_PRIo64>,
-C<d_PRIu64>, C<d_PRIx64>, C<d_PRIXU64>, C<d_pthread_yield>, C<d_pwage>,
-C<d_pwchange>, C<d_pwclass>, C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>,
-C<d_pwpasswd>, C<d_pwquota>, C<d_qgcvt>, C<d_quad>, C<d_readdir>,
-C<d_readlink>, C<d_readv>, C<d_recvmsg>, C<d_rename>, C<d_rewinddir>,
-C<d_rmdir>, C<d_safebcpy>, C<d_safemcpy>, C<d_sanemcmp>, C<d_sbrkproto>,
-C<d_sched_yield>, C<d_scm_rights>, C<d_SCNfldbl>, C<d_seekdir>,
-C<d_select>, C<d_sem>, C<d_semctl>, C<d_semctl_semid_ds>,
-C<d_semctl_semun>, C<d_semget>, C<d_semop>, C<d_sendmsg>, C<d_setegid>,
-C<d_seteuid>, C<d_setgrent>, C<d_setgrps>, C<d_sethent>, C<d_setitimer>,
-C<d_setlinebuf>, C<d_setlocale>, C<d_setnent>, C<d_setpent>, C<d_setpgid>,
-C<d_setpgrp2>, C<d_setpgrp>, C<d_setprior>, C<d_setproctitle>,
-C<d_setpwent>, C<d_setregid>, C<d_setresgid>, C<d_setresuid>,
-C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>, C<d_setsid>,
-C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>, C<d_shmatprototype>,
-C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>, C<d_sigprocmask>,
-C<d_sigsetjmp>, C<d_sockatmark>, C<d_sockatmarkproto>, C<d_socket>,
-C<d_socklen_t>, C<d_sockpair>, C<d_socks5_init>, C<d_sqrtl>,
-C<d_sresgproto>, C<d_sresuproto>, C<d_statblks>, C<d_statfs_f_flags>,
-C<d_statfs_s>, C<d_statvfs>, C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>,
-C<d_stdio_ptr_lval_nochange_cnt>, C<d_stdio_ptr_lval_sets_cnt>,
-C<d_stdio_stream_array>, C<d_stdiobase>, C<d_stdstdio>, C<d_strchr>,
-C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>, C<d_strerror>, C<d_strftime>,
-C<d_strtod>, C<d_strtol>, C<d_strtold>, C<d_strtoll>, C<d_strtoq>,
-C<d_strtoul>, C<d_strtoull>, C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>,
-C<d_symlink>, C<d_syscall>, C<d_syscallproto>, C<d_sysconf>,
-C<d_sysernlst>, C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>,
+C<d_PRIu64>, C<d_PRIx64>, C<d_PRIXU64>, C<d_pthread_atfork>,
+C<d_pthread_yield>, C<d_pwage>, C<d_pwchange>, C<d_pwclass>,
+C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, C<d_pwpasswd>, C<d_pwquota>,
+C<d_qgcvt>, C<d_quad>, C<d_readdir>, C<d_readlink>, C<d_readv>,
+C<d_recvmsg>, C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>,
+C<d_safemcpy>, C<d_sanemcmp>, C<d_sbrkproto>, C<d_sched_yield>,
+C<d_scm_rights>, C<d_SCNfldbl>, C<d_seekdir>, C<d_select>, C<d_sem>,
+C<d_semctl>, C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>,
+C<d_semop>, C<d_sendmsg>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>,
+C<d_setgrps>, C<d_sethent>, C<d_setitimer>, C<d_setlinebuf>,
+C<d_setlocale>, C<d_setnent>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp2>,
+C<d_setpgrp>, C<d_setprior>, C<d_setproctitle>, C<d_setpwent>,
+C<d_setregid>, C<d_setresgid>, C<d_setresuid>, C<d_setreuid>, C<d_setrgid>,
+C<d_setruid>, C<d_setsent>, C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>,
+C<d_shmat>, C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>,
+C<d_sigaction>, C<d_sigprocmask>, C<d_sigsetjmp>, C<d_sockatmark>,
+C<d_sockatmarkproto>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>,
+C<d_socks5_init>, C<d_sqrtl>, C<d_sresgproto>, C<d_sresuproto>,
+C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, C<d_statvfs>,
+C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_ptr_lval_nochange_cnt>,
+C<d_stdio_ptr_lval_sets_cnt>, C<d_stdio_stream_array>, C<d_stdiobase>,
+C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>,
+C<d_strerror>, C<d_strftime>, C<d_strtod>, C<d_strtol>, C<d_strtold>,
+C<d_strtoll>, C<d_strtoq>, C<d_strtoul>, C<d_strtoull>, C<d_strtouq>,
+C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>, C<d_syscallproto>,
+C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>,
C<d_tcsetpgrp>, C<d_telldir>, C<d_telldirproto>, C<d_time>, C<d_times>,
C<d_truncate>, C<d_tzname>, C<d_u32align>, C<d_ualarm>, C<d_umask>,
C<d_uname>, C<d_union_semun>, C<d_usleep>, C<d_usleepproto>, C<d_ustat>,
@@ -8915,7 +8920,8 @@ C<uvsize>, C<uvtype>, C<uvuformat>, C<uvxformat>, C<uvXUformat>
C<vendorarch>, C<vendorarchexp>, C<vendorbin>, C<vendorbinexp>,
C<vendorlib>, C<vendorlib_stem>, C<vendorlibexp>, C<vendorprefix>,
-C<vendorprefixexp>, C<version>, C<versiononly>, C<vi>, C<voidflags>
+C<vendorprefixexp>, C<version>, C<version_patchlevel_string>,
+C<versiononly>, C<vi>, C<voidflags>
=item x
@@ -15802,7 +15808,7 @@ VAL, TYPE ), UNIVERSAL::can ( VAL, METHOD )
=back
-=head2 Unicode::UCD - Unicode character database
+=head2 UnicodeCD - Unicode character database
=over 4
@@ -15874,7 +15880,7 @@ VAL, TYPE ), UNIVERSAL::can ( VAL, METHOD )
=over 4
-=item Unicode::UCD::UnicodeVersion
+=item UnicodeCD::UnicodeVersion
=back
diff --git a/proto.h b/proto.h
index 5110345ccf..d03b3daa86 100644
--- a/proto.h
+++ b/proto.h
@@ -961,7 +961,7 @@ PERL_CALLCONV PERL_SI* Perl_si_dup(pTHX_ PERL_SI* si, clone_params* param);
PERL_CALLCONV ANY* Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, clone_params* param);
PERL_CALLCONV void* Perl_any_dup(pTHX_ void* v, PerlInterpreter* proto_perl);
PERL_CALLCONV HE* Perl_he_dup(pTHX_ HE* e, bool shared, clone_params* param);
-PERL_CALLCONV REGEXP* Perl_re_dup(pTHX_ REGEXP* r);
+PERL_CALLCONV REGEXP* Perl_re_dup(pTHX_ REGEXP* r, clone_params* param);
PERL_CALLCONV PerlIO* Perl_fp_dup(pTHX_ PerlIO* fp, char type);
PERL_CALLCONV DIR* Perl_dirp_dup(pTHX_ DIR* dp);
PERL_CALLCONV GP* Perl_gp_dup(pTHX_ GP* gp, clone_params* param);
@@ -1313,6 +1313,7 @@ STATIC char* S_stdize_locale(pTHX_ char* locs);
#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
+STATIC COP* S_closest_cop(pTHX_ COP *cop, OP *o);
STATIC SV* S_mess_alloc(pTHX);
# if defined(LEAKTEST)
STATIC void S_xstat(pTHX_ int);
diff --git a/regcomp.c b/regcomp.c
index 209743e26a..575bd43124 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -4586,6 +4586,7 @@ Perl_pregfree(pTHX_ struct regexp *r)
SV** old_curpad;
while (--n >= 0) {
+ /* If you add a ->what type here, update the comment in regcomp.h */
switch (r->data->what[n]) {
case 's':
SvREFCNT_dec((SV*)r->data->data[n]);
diff --git a/regcomp.h b/regcomp.h
index b9542c9bce..b336bec54b 100644
--- a/regcomp.h
+++ b/regcomp.h
@@ -350,6 +350,15 @@ typedef struct re_scream_pos_data_s
I32 *scream_pos; /* Internal iterator of scream. */
} re_scream_pos_data;
+/* .what is a character array with one character for each member of .data
+ * The character describes the function of the corresponding .data item:
+ * f - start-class data for regstclass optimization
+ * n - Root of op tree for (?{EVAL}) item
+ * o - Start op for (?{EVAL}) item
+ * p - Pad for (?{EVAL} item
+ * s - swash for unicode-style character class
+ * 20010712 mjd@plover.com
+ */
struct reg_data {
U32 count;
U8 *what;
diff --git a/sv.c b/sv.c
index 496c02cefe..7a23cc8c03 100644
--- a/sv.c
+++ b/sv.c
@@ -19,6 +19,7 @@
#include "EXTERN.h"
#define PERL_IN_SV_C
#include "perl.h"
+#include "regcomp.h"
#define FCALL *f
#define SV_CHECK_THINKFIRST(sv) if (SvTHINKFIRST(sv)) sv_force_normal(sv)
@@ -1568,8 +1569,15 @@ Perl_sv_grow(pTHX_ register SV *sv, register STRLEN newlen)
#endif
Renew(s,newlen,char);
}
- else
- New(703,s,newlen,char);
+ else {
+ /* sv_force_normal_flags() must not try to unshare the new
+ PVX we allocate below. AMS 20010713 */
+ if (SvREADONLY(sv) && SvFAKE(sv)) {
+ SvFAKE_off(sv);
+ SvREADONLY_off(sv);
+ }
+ New(703, s, newlen, char);
+ }
SvPV_set(sv, s);
SvLEN_set(sv, newlen);
}
@@ -5263,8 +5271,6 @@ Perl_sv_eq(pTHX_ register SV *sv1, register SV *sv2)
if (cur1 && cur2 && SvUTF8(sv1) != SvUTF8(sv2) && !IN_BYTES) {
bool is_utf8 = TRUE;
/* UTF-8ness differs */
- if (PL_hints & HINT_UTF8_DISTINCT)
- return FALSE;
if (SvUTF8(sv1)) {
/* sv1 is the UTF-8 one , If is equal it must be downgrade-able */
@@ -5329,9 +5335,6 @@ Perl_sv_cmp(pTHX_ register SV *sv1, register SV *sv2)
/* do not utf8ize the comparands as a side-effect */
if (cur1 && cur2 && SvUTF8(sv1) != SvUTF8(sv2) && !IN_BYTES) {
- if (PL_hints & HINT_UTF8_DISTINCT)
- return SvUTF8(sv1) ? 1 : -1;
-
if (SvUTF8(sv1)) {
pv2 = (char*)bytes_to_utf8((U8*)pv2, &cur2);
pv2tmp = TRUE;
@@ -6178,11 +6181,8 @@ Perl_newSVpvn_share(pTHX_ const char *src, I32 len, U32 hash)
register SV *sv;
bool is_utf8 = FALSE;
if (len < 0) {
- len = -len;
+ STRLEN tmplen = -len;
is_utf8 = TRUE;
- }
- if (is_utf8 && !(PL_hints & HINT_UTF8_DISTINCT)) {
- STRLEN tmplen = len;
/* See the note in hv.c:hv_fetch() --jhi */
src = (char*)bytes_from_utf8((U8*)src, &tmplen, &is_utf8);
len = tmplen;
@@ -8339,14 +8339,99 @@ ptr_table_* functions.
#define SAVEPVN(p,n) (p ? savepvn(p,n) : Nullch)
-
-/* duplicate a regexp */
+/* Duplicate a regexp. Required reading: pregcomp() and pregfree() in
+ regcomp.c. AMS 20010712 */
REGEXP *
-Perl_re_dup(pTHX_ REGEXP *r)
+Perl_re_dup(pTHX_ REGEXP *r, clone_params *param)
{
- /* XXX fix when pmop->op_pmregexp becomes shared */
- return ReREFCNT_inc(r);
+ REGEXP *ret;
+ int i, len, npar;
+ struct reg_substr_datum *s;
+
+ if (!r)
+ return (REGEXP *)NULL;
+
+ if ((ret = (REGEXP *)ptr_table_fetch(PL_ptr_table, r)))
+ return ret;
+
+ len = r->offsets[0];
+ npar = r->nparens+1;
+
+ Newc(0, ret, sizeof(regexp) + (len+1)*sizeof(regnode), char, regexp);
+ Copy(r->program, ret->program, len+1, regnode);
+
+ New(0, ret->startp, npar, I32);
+ Copy(r->startp, ret->startp, npar, I32);
+ New(0, ret->endp, npar, I32);
+ Copy(r->startp, ret->startp, npar, I32);
+
+ if (r->regstclass) {
+ New(0, ret->regstclass, 1, regnode);
+ ret->regstclass->flags = r->regstclass->flags;
+ }
+ else
+ ret->regstclass = NULL;
+
+ New(0, ret->substrs, 1, struct reg_substr_data);
+ for (s = ret->substrs->data, i = 0; i < 3; i++, s++) {
+ s->min_offset = r->substrs->data[i].min_offset;
+ s->max_offset = r->substrs->data[i].max_offset;
+ s->substr = sv_dup_inc(r->substrs->data[i].substr, param);
+ }
+
+ if (r->data) {
+ struct reg_data *d;
+ int count = r->data->count;
+
+ Newc(0, d, sizeof(struct reg_data) + count*sizeof(void *),
+ char, struct reg_data);
+ New(0, d->what, count, U8);
+
+ d->count = count;
+ for (i = 0; i < count; i++) {
+ d->what[i] = r->data->what[i];
+ switch (d->what[i]) {
+ case 's':
+ d->data[i] = sv_dup_inc((SV *)r->data->data[i], param);
+ break;
+ case 'p':
+ d->data[i] = av_dup_inc((AV *)r->data->data[i], param);
+ break;
+ case 'f':
+ /* This is cheating. */
+ New(0, d->data[i], 1, struct regnode_charclass_class);
+ StructCopy(r->data->data[i], d->data[i],
+ struct regnode_charclass_class);
+ break;
+ case 'o':
+ case 'n':
+ d->data[i] = r->data->data[i];
+ break;
+ }
+ }
+
+ ret->data = d;
+ }
+ else
+ ret->data = NULL;
+
+ New(0, ret->offsets, 2*len+1, U32);
+ Copy(r->offsets, ret->offsets, 2*len+1, U32);
+
+ ret->precomp = SAVEPV(r->precomp);
+ ret->subbeg = SAVEPV(r->subbeg);
+ ret->sublen = r->sublen;
+ ret->refcnt = r->refcnt;
+ ret->minlen = r->minlen;
+ ret->prelen = r->prelen;
+ ret->nparens = r->nparens;
+ ret->lastparen = r->lastparen;
+ ret->lastcloseparen = r->lastcloseparen;
+ ret->reganch = r->reganch;
+
+ ptr_table_store(PL_ptr_table, r, ret);
+ return ret;
}
/* duplicate a file handle */
@@ -8439,7 +8524,7 @@ Perl_mg_dup(pTHX_ MAGIC *mg, clone_params* param)
nmg->mg_type = mg->mg_type;
nmg->mg_flags = mg->mg_flags;
if (mg->mg_type == PERL_MAGIC_qr) {
- nmg->mg_obj = (SV*)re_dup((REGEXP*)mg->mg_obj);
+ nmg->mg_obj = (SV*)re_dup((REGEXP*)mg->mg_obj, param);
}
else if(mg->mg_type == PERL_MAGIC_backref) {
AV *av = (AV*) mg->mg_obj;
@@ -9698,18 +9783,20 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_statusvalue_vms = proto_perl->Istatusvalue_vms;
#endif
- /* Clone the regex array */
- PL_regex_padav = newAV();
- {
- I32 len = av_len((AV*)proto_perl->Iregex_padav);
- SV** regexen = AvARRAY((AV*)proto_perl->Iregex_padav);
- for(i = 0; i <= len; i++) {
- av_push(PL_regex_padav,
- newSViv((IV)re_dup((REGEXP*) SvIV(regexen[i])) ));
- }
- }
- PL_regex_pad = AvARRAY(PL_regex_padav);
-
+ /* Clone the regex array */
+ PL_regex_padav = newAV();
+ {
+ I32 len = av_len((AV*)proto_perl->Iregex_padav);
+ SV** regexen = AvARRAY((AV*)proto_perl->Iregex_padav);
+ for(i = 0; i <= len; i++) {
+ av_push(PL_regex_padav,
+ SvREFCNT_inc(
+ newSViv((IV)re_dup((REGEXP *)
+ SvIVX(regexen[i]), param))
+ ));
+ }
+ }
+ PL_regex_pad = AvARRAY(PL_regex_padav);
/* shortcuts to various I/O objects */
PL_stdingv = gv_dup(proto_perl->Istdingv, param);
diff --git a/t/lib/1_compile.t b/t/lib/1_compile.t
index 0132fb9a28..81c6f416c0 100644
--- a/t/lib/1_compile.t
+++ b/t/lib/1_compile.t
@@ -80,7 +80,6 @@ unless (has_extension('NDBM_File')) {
}
delete_by_prefix('unicode::');
-add_by_name('unicode::distinct'); # put this back
# Delete all modules which have their own tests.
# This makes this test a lot faster.
@@ -108,7 +107,9 @@ foreach my $module (@Core_Modules) {
sub compile_module {
my ($module) = $_[0];
- return scalar `$^X "-Ilib" t/lib/compmod.pl $module` =~ /^ok/;
+ my $out = scalar `$^X "-Ilib" t/lib/compmod.pl $module`;
+ print "# $out";
+ return $out =~ /^ok/;
}
# Add here modules that have their own test scripts and therefore
@@ -173,6 +174,7 @@ Getopt::Long
Getopt::Std
I18N::Langinfo
I18N::LangTags
+I18N::LangTags::List
I18N::Collate
IO::Dir
IO::File
@@ -197,8 +199,17 @@ MIME::Base64
MIME::QuotedPrint
Math::BigFloat
Math::BigInt
+Math::BigInt::Calc
Math::Complex
Math::Trig
+Memoize
+Memoize::AnyDBM_File
+Memoize::Expire
+Memoize::ExpireFile
+Memoize::ExpireTest
+Memoize::NDBM_File
+Memoize::SDBM_File
+Memoize::Storable
NDBM_File
NEXT
Net::hostent
@@ -228,6 +239,8 @@ Sys::Syslog
Term::ANSIColor
Test
Test::Harness
+Test::More
+Test::Simple
Test::ParseWords
Text::Abbrev
Text::Balanced
@@ -248,7 +261,7 @@ Time::Piece
Time::gmtime
Time::localtime
Time::tm
-Unicode::UCD
+UnicodeCD
UNIVERSAL
User::grent
User::pwent
diff --git a/t/lib/warnings/util b/t/lib/warnings/util
index e82d6a6617..4e960c1ea1 100644
--- a/t/lib/warnings/util
+++ b/t/lib/warnings/util
@@ -106,3 +106,53 @@ no warnings 'portable' ;
$a = oct "0047777777777" ;
EXPECT
Octal number > 037777777777 non-portable at - line 5.
+########
+# util.c
+use warnings;
+$x = 1;
+if ($x) {
+ print $y;
+}
+EXPECT
+Name "main::y" used only once: possible typo at - line 5.
+Use of uninitialized value in print at - line 5.
+########
+# util.c
+use warnings;
+$x = 1;
+if ($x) {
+ $x++;
+ print $y;
+}
+EXPECT
+Name "main::y" used only once: possible typo at - line 6.
+Use of uninitialized value in print at - line 6.
+########
+# util.c
+use warnings;
+$x = 0;
+if ($x) {
+ print "1\n";
+} elsif (!$x) {
+ print $y;
+} else {
+ print "0\n";
+}
+EXPECT
+Name "main::y" used only once: possible typo at - line 7.
+Use of uninitialized value in print at - line 7.
+########
+# util.c
+use warnings;
+$x = 0;
+if ($x) {
+ print "1\n";
+} elsif (!$x) {
+ $x++;
+ print $y;
+} else {
+ print "0\n";
+}
+EXPECT
+Name "main::y" used only once: possible typo at - line 8.
+Use of uninitialized value in print at - line 8.
diff --git a/t/op/splice.t b/t/op/splice.t
index 3b4229a031..d1bfe999e5 100755
--- a/t/op/splice.t
+++ b/t/op/splice.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..10\n";
+print "1..12\n";
@a = (1..10);
@@ -37,4 +37,18 @@ print "ok 9\n";
print "not " unless j(splice(@a)) eq j(1,2,7,3) && j(@a) eq '';
print "ok 10\n";
+# Tests 11 and 12:
+# [ID 20010711.005] in Tie::Array, SPLICE ignores context, breaking SHIFT
+
+my $foo;
+
+@a = ('red', 'green', 'blue');
+$foo = splice @a, 1, 2;
+print "not " unless $foo eq 'blue';
+print "ok 11\n";
+
+@a = ('red', 'green', 'blue');
+$foo = shift @a;
+print "not " unless $foo eq 'red';
+print "ok 12\n";
diff --git a/thread.h b/thread.h
index c76534fe3e..a82c01b61d 100644
--- a/thread.h
+++ b/thread.h
@@ -306,8 +306,18 @@ void Perl_atfork_lock(void);
void Perl_atfork_unlock(void);
#ifndef PTHREAD_ATFORK
-# define PTHREAD_ATFORK(prepare,parent,child) \
- pthread_atfork(prepare,parent,child)
+# ifdef HAS_PTHREAD_ATFORK
+# define PTHREAD_ATFORK(prepare,parent,child) \
+ pthread_atfork(prepare,parent,child)
+# else
+# ifdef HAS_FORK
+# define PTHREAD_ATFORK(prepare,parent,child) \
+ Perl_croak(aTHX_ "No pthread_atfork() -- fork() too unsafe");
+# else
+# define PTHREAD_ATFORK(prepare,parent,child) \
+ NOOP
+# endif
+# endif
#endif
#ifndef THREAD_RET_TYPE
diff --git a/uconfig.h b/uconfig.h
index dfea3c1c48..4dcddc81ec 100644
--- a/uconfig.h
+++ b/uconfig.h
@@ -2933,7 +2933,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3453,4 +3453,10 @@
*/
/*#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/uconfig.sh b/uconfig.sh
index 175b72ebbd..0604c86bfd 100755
--- a/uconfig.sh
+++ b/uconfig.sh
@@ -206,6 +206,7 @@ d_phostname='undef'
d_pipe='undef'
d_poll='undef'
d_portable='undef'
+d_pthread_atfork='undef'
d_pthread_yield='undef'
d_pwage='undef'
d_pwchange='undef'
diff --git a/util.c b/util.c
index b72a8f2fef..e01e836cd1 100644
--- a/util.c
+++ b/util.c
@@ -1003,17 +1003,60 @@ Perl_mess(pTHX_ const char *pat, ...)
return retval;
}
+STATIC COP*
+S_closest_cop(pTHX_ COP *cop, OP *o)
+{
+ /* Look for PL_op starting from o. cop is the last COP we've seen. */
+
+ if (!o || o == PL_op) return cop;
+
+ if (o->op_flags & OPf_KIDS) {
+ OP *kid;
+ for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling)
+ {
+ COP *new_cop;
+
+ /* If the OP_NEXTSTATE has been optimised away we can still use it
+ * the get the file and line number. */
+
+ if (kid->op_type == OP_NULL && kid->op_targ == OP_NEXTSTATE)
+ cop = (COP *)kid;
+
+ /* Keep searching, and return when we've found something. */
+
+ new_cop = closest_cop(cop, kid);
+ if (new_cop) return new_cop;
+ }
+ }
+
+ /* Nothing found. */
+
+ return 0;
+}
+
SV *
Perl_vmess(pTHX_ const char *pat, va_list *args)
{
SV *sv = mess_alloc();
static char dgd[] = " during global destruction.\n";
+ COP *cop;
sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
if (!SvCUR(sv) || *(SvEND(sv) - 1) != '\n') {
- if (CopLINE(PL_curcop))
+
+ /*
+ * Try and find the file and line for PL_op. This will usually be
+ * PL_curcop, but it might be a cop that has been optimised away. We
+ * can try to find such a cop by searching through the optree starting
+ * from the sibling of PL_curcop.
+ */
+
+ cop = closest_cop(PL_curcop, PL_curcop->op_sibling);
+ if (!cop) cop = PL_curcop;
+
+ if (CopLINE(cop))
Perl_sv_catpvf(aTHX_ sv, " at %s line %"IVdf,
- CopFILE(PL_curcop), (IV)CopLINE(PL_curcop));
+ CopFILE(cop), (IV)CopLINE(cop));
if (GvIO(PL_last_in_gv) && IoLINES(GvIOp(PL_last_in_gv))) {
bool line_mode = (RsSIMPLE(PL_rs) &&
SvCUR(PL_rs) == 1 && *SvPVX(PL_rs) == '\n');
diff --git a/vos/config.alpha.def b/vos/config.alpha.def
index 6c4b1746d6..6400dfa530 100644
--- a/vos/config.alpha.def
+++ b/vos/config.alpha.def
@@ -183,6 +183,7 @@ $d_perl_otherlibdirs='undef'
$d_phostname='undef'
$d_pipe='define'
$d_poll='define'
+$d_pthread_atfork='undef'
$d_pthread_yield='undef'
$d_pwage='undef'
$d_pwchange='undef'
diff --git a/vos/config.alpha.h b/vos/config.alpha.h
index 7f108eb5d1..839556e64f 100644
--- a/vos/config.alpha.h
+++ b/vos/config.alpha.h
@@ -2933,7 +2933,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3453,4 +3453,10 @@
*/
/*#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/vos/config.ga.def b/vos/config.ga.def
index 8512751095..6144bac2c7 100644
--- a/vos/config.ga.def
+++ b/vos/config.ga.def
@@ -183,6 +183,7 @@ $d_perl_otherlibdirs='undef'
$d_phostname='undef'
$d_pipe='define'
$d_poll='define'
+$d_pthread_atfork='undef'
$d_pthread_yield='undef'
$d_pwage='undef'
$d_pwchange='undef'
diff --git a/vos/config.ga.h b/vos/config.ga.h
index 80a418a294..4db74992e9 100644
--- a/vos/config.ga.h
+++ b/vos/config.ga.h
@@ -2933,7 +2933,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3453,4 +3453,10 @@
*/
/*#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/win32/Makefile b/win32/Makefile
index c103f820ac..7da6ac42b7 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -958,6 +958,7 @@ utils: $(PERLEXE) $(X2P)
copy ..\README.qnx .\perlqnx.pod
copy ..\README.solaris .\perlsolaris.pod
copy ..\README.tru64 .\perltru64.pod
+ copy ..\README.uts .\perluts.pod
copy ..\README.vmesa .\perlvmesa.pod
copy ..\vms\perlvms.pod .\perlvms.pod
copy ..\README.vos .\perlvos.pod
@@ -1023,7 +1024,8 @@ distclean: clean
perlhpux.pod perlmachten.pod \
perlmacos.pod perlmint.pod perlmpeix.pod perlnetware.pod \
perlos2.pod perlos390.pod perlplan9.pod perlqnx.pod \
- perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \
+ perlsolaris.pod perltru64.pod perluts.pod \
+ perlvmesa.pod perlvms.pod perlvos.pod \
perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \
podchecker podselect
cd ..\utils
diff --git a/win32/config.bc b/win32/config.bc
index 1ffa2f816a..7d6cebefbf 100644
--- a/win32/config.bc
+++ b/win32/config.bc
@@ -259,6 +259,7 @@ d_phostname='undef'
d_pipe='define'
d_poll='undef'
d_portable='define'
+d_pthread_atfork='undef'
d_pthread_yield='undef'
d_pwage='undef'
d_pwchange='undef'
diff --git a/win32/config.gc b/win32/config.gc
index bd3f4013d3..9b03d12828 100644
--- a/win32/config.gc
+++ b/win32/config.gc
@@ -259,6 +259,7 @@ d_phostname='undef'
d_pipe='define'
d_poll='undef'
d_portable='define'
+d_pthread_atfork='undef'
d_pthread_yield='undef'
d_pwage='undef'
d_pwchange='undef'
diff --git a/win32/config.vc b/win32/config.vc
index 486c5e28b5..9909393513 100644
--- a/win32/config.vc
+++ b/win32/config.vc
@@ -259,6 +259,7 @@ d_phostname='undef'
d_pipe='define'
d_poll='undef'
d_portable='define'
+d_pthread_atfork='undef'
d_pthread_yield='undef'
d_pwage='undef'
d_pwchange='undef'
diff --git a/win32/config_H.bc b/win32/config_H.bc
index 9d0a660b61..8bb5fc9299 100644
--- a/win32/config_H.bc
+++ b/win32/config_H.bc
@@ -2933,7 +2933,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3453,4 +3453,10 @@
*/
/*#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/win32/config_H.gc b/win32/config_H.gc
index 5556170983..0aee697a17 100644
--- a/win32/config_H.gc
+++ b/win32/config_H.gc
@@ -2933,7 +2933,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3453,4 +3453,10 @@
*/
/*#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/win32/config_H.vc b/win32/config_H.vc
index 53da567f87..3585653df3 100644
--- a/win32/config_H.vc
+++ b/win32/config_H.vc
@@ -2933,7 +2933,7 @@
* 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 it's headers.
+ * doesn't provide you with anything relevant in its headers.
* See HAS_DRAND48_PROTO.
*/
/* Rand_seed_t:
@@ -3453,4 +3453,10 @@
*/
/*#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/win32/makefile.mk b/win32/makefile.mk
index 142bc2e6a7..86d8687dc6 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -1110,6 +1110,7 @@ utils: $(PERLEXE) $(X2P)
copy ..\README.qnx ..\pod\perlqnx.pod
copy ..\README.solaris ..\pod\perlsolaris.pod
copy ..\README.tru64 ..\pod\perltru64.pod
+ copy ..\README.uts ..\pod\perluts.pod
copy ..\README.vmesa ..\pod\perlvmesa.pod
copy ..\vms\perlvms.pod ..\pod\perlvms.pod
copy ..\README.vos ..\pod\perlvos.pod
@@ -1160,7 +1161,8 @@ distclean: clean
perlmacos.pod perlmpeix.pod perlnetware.pod \
perlos2.pod perlos390.pod \
perlplan9.pod perlqnx.pod \
- perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \
+ perlsolaris.pod perltru64.pod perluts.pod \
+ perlvmesa.pod perlvms.pod perlvos.pod \
perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \
podchecker podselect
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \
diff --git a/win32/win32.c b/win32/win32.c
index a0ebe03d12..5f4a177e06 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -3363,8 +3363,13 @@ win32_execvp(const char *cmdname, const char *const *argv)
/* if this is a pseudo-forked child, we just want to spawn
* the new program, and return */
if (w32_pseudo_id) {
- my_exit(win32_spawnvp(P_WAIT, cmdname, (char *const *)argv));
- return 0;
+ int status = win32_spawnvp(P_WAIT, cmdname, (char *const *)argv);
+ if (status != -1) {
+ my_exit(status);
+ return 0;
+ }
+ else
+ return status;
}
#endif
return execvp(cmdname, (char *const *)argv);