summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2000-03-01 05:33:54 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-03-01 05:33:54 +0000
commit8dd45d34530338e4b3b5971eaa45b6974375715b (patch)
tree78547ab116114363ef5b19921484d83ad4d48e11
parent3141530c492792a17327a0ff80df3353f97c80ea (diff)
parent2fa86c13816417d1d62616d1bb8114a5a9831c33 (diff)
downloadperl-8dd45d34530338e4b3b5971eaa45b6974375715b.tar.gz
Integrate with Sarathy.
p4raw-id: //depot/cfgperl@5389
-rw-r--r--Changes433
-rw-r--r--MANIFEST1
-rw-r--r--README.win326
-rw-r--r--ext/DynaLoader/DynaLoader_pm.PL42
-rw-r--r--ext/DynaLoader/Makefile.PL1
-rw-r--r--ext/DynaLoader/dl_dlopen.xs39
-rw-r--r--ext/DynaLoader/dlutils.c29
-rw-r--r--lib/File/Find.pm55
-rw-r--r--lib/Test/Harness.pm15
-rw-r--r--pod/Makefile4
-rw-r--r--pod/buildtoc2
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perldelta.pod3
-rw-r--r--pod/perlguts.pod4
-rw-r--r--pod/perlhack.pod21
-rw-r--r--pod/perlhist.pod1
-rw-r--r--pod/perlnumber.pod185
-rw-r--r--pod/perlport.pod5
-rw-r--r--pod/perltoc.pod37
-rw-r--r--pod/roffitall2
-rw-r--r--vms/vms.c7
-rw-r--r--win32/perllib.c4
-rw-r--r--win32/win32.c57
-rw-r--r--win32/win32.h6
24 files changed, 891 insertions, 69 deletions
diff --git a/Changes b/Changes
index 85b6ce9e62..97ae151321 100644
--- a/Changes
+++ b/Changes
@@ -95,6 +95,439 @@ Version v5.5.670 Development release working toward v5.6
----------------
____________________________________________________________________________
+[ 5386] By: gsar on 2000/03/01 03:04:54
+ Log: support kill(0,$pid) on Windows to test if process exists
+ Branch: perl
+ ! README.win32 pod/perldelta.pod pod/perlport.pod win32/win32.c
+____________________________________________________________________________
+[ 5385] By: gsar on 2000/03/01 02:10:01
+ Log: integrate cfgperl changes into mainline
+ Branch: perl
+ !> Configure Porting/Glossary Porting/config.sh Porting/config_H
+ !> config_h.SH epoc/config.sh hints/dec_osf.sh hints/solaris_2.sh
+ !> perl.h vms/subconfigure.com vos/config.def win32/config.bc
+ !> win32/config.gc win32/config.vc
+____________________________________________________________________________
+[ 5384] By: gsar on 2000/03/01 01:47:55
+ Log: oops, change#5382 didn't really fix the typo
+ Branch: perl
+ ! ext/DynaLoader/dl_dlopen.xs
+____________________________________________________________________________
+[ 5383] By: gsar on 2000/03/01 01:38:25
+ Log: avoid warning on type-mismatch
+ Branch: perl
+ ! ext/DynaLoader/dlutils.c
+____________________________________________________________________________
+[ 5382] By: gsar on 2000/03/01 01:33:42
+ Log: fix bug in change#5381
+ Branch: perl
+ ! ext/DynaLoader/dl_dlopen.xs
+____________________________________________________________________________
+[ 5381] By: gsar on 2000/03/01 00:46:44
+ Log: unload extension shared objects when exiting, implemented
+ only for dl_dlopen.xs (from Alan Burlison)
+ Branch: perl
+ ! ext/DynaLoader/DynaLoader_pm.PL ext/DynaLoader/Makefile.PL
+ ! ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dlutils.c
+____________________________________________________________________________
+[ 5380] By: gsar on 2000/03/01 00:34:10
+ Log: add perlnumber.pod (from Ilya Zakharevich); substantially edited
+ prose
+ Branch: perl
+ + pod/perlnumber.pod
+ ! MANIFEST pod/Makefile pod/buildtoc pod/perl.pod
+ ! pod/perltoc.pod pod/roffitall
+____________________________________________________________________________
+[ 5379] By: jhi on 2000/02/29 23:37:01
+ Log: Be understanding.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! use64bits.U uselfs.U
+____________________________________________________________________________
+[ 5378] By: gsar on 2000/02/29 23:35:50
+ Log: VMS fixups (from Dan Sugalski); cosmetic tweaks
+ Branch: perl
+ ! lib/Test/Harness.pm vms/vms.c
+____________________________________________________________________________
+[ 5377] By: jhi on 2000/02/29 23:12:29
+ Log: Tru64 hints fix from Spider Boardman; Tru64 hint for
+ d_Gconvert on long doubles to use sprintf %Lg.
+ Branch: cfgperl
+ ! hints/dec_osf.sh
+____________________________________________________________________________
+[ 5376] By: jhi on 2000/02/29 23:02:45
+ Log: Integrate with Sarathy.
+ Branch: cfgperl
+ !> gv.c lib/Pod/Html.pm malloc.c pod/perlapi.pod pod/perlcall.pod
+ !> pod/perldiag.pod pod/perlembed.pod pod/perlfunc.pod
+ !> pod/perlguts.pod pod/perlop.pod
+____________________________________________________________________________
+[ 5375] By: gsar on 2000/02/29 23:02:34
+ Log: fix File::Find::finddepth() bugs (from Helmut Jarausch)
+ Branch: perl
+ ! lib/File/Find.pm
+____________________________________________________________________________
+[ 5374] By: jhi on 2000/02/29 23:01:35
+ Log: Add libsunmath (long double math library for Solaris,
+ SUNWspro cc only) awareness; fix various Solaris nits.
+ Branch: cfgperl
+ ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+ ! config_h.SH epoc/config.sh hints/solaris_2.sh perl.h
+ ! vms/subconfigure.com vos/config.def win32/config.bc
+ ! win32/config.gc win32/config.vc
+ Branch: metaconfig
+ ! U/modified/libs.U
+ Branch: metaconfig/U/perl
+ + i_sunmath.U
+____________________________________________________________________________
+[ 5373] By: gsar on 2000/02/29 22:56:10
+ Log: fix Pod::Html to recognize C<< > >> etc., and convert some pods
+ to the more readable form (from Robin Barker)
+ Branch: perl
+ ! lib/Pod/Html.pm pod/perlfunc.pod pod/perlop.pod
+____________________________________________________________________________
+[ 5372] By: gsar on 2000/02/29 22:52:27
+ Log: better fix for malloc bug in change#5346 (from Dominic Dunlop)
+ Branch: perl
+ ! malloc.c
+____________________________________________________________________________
+[ 5371] By: gsar on 2000/02/29 22:29:36
+ Log: fix pods to reflect newer canonical names for call_sv() etc.
+ Branch: perl
+ ! gv.c pod/perlapi.pod pod/perlcall.pod pod/perldiag.pod
+ ! pod/perlembed.pod pod/perlguts.pod
+____________________________________________________________________________
+[ 5370] By: jhi on 2000/02/29 22:08:26
+ Log: Integrate with Sarathy.
+ Branch: cfgperl
+ !> perl.c perl.h win32/win32.c win32/win32.h
+____________________________________________________________________________
+[ 5369] By: gsar on 2000/02/29 21:37:10
+ Log: remove bogus code that caused test failures on HP-UX
+ Branch: perl
+ ! perl.h
+____________________________________________________________________________
+[ 5368] By: gsar on 2000/02/29 20:45:01
+ Log: change#5364 had a few problems
+ Branch: perl
+ ! perl.c win32/win32.c win32/win32.h
+____________________________________________________________________________
+[ 5367] By: gsar on 2000/02/29 18:19:04
+ Log: integrate cfgperl changes into mainline
+ Branch: perl
+ !> Configure config_h.SH epoc/config.sh hints/hpux.sh
+ !> hints/solaris_2.sh regcomp.c vms/subconfigure.com
+ !> vos/config.def win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[ 5366] By: jhi on 2000/02/29 18:15:09
+ Log: Some compilers have problems with quad switch() controls.
+ Branch: cfgperl
+ ! regcomp.c
+____________________________________________________________________________
+[ 5365] By: jhi on 2000/02/29 18:14:30
+ Log: Integrate with Sarathy.
+ Branch: cfgperl
+ !> perl.c win32/Makefile win32/makefile.mk win32/win32.c
+ !> win32/win32.h
+____________________________________________________________________________
+[ 5364] By: gsar on 2000/02/29 18:11:34
+ Log: utf8-ize @ARGV when -C switch is used on Windows
+ Branch: perl
+ ! perl.c win32/Makefile win32/makefile.mk win32/win32.c
+ ! win32/win32.h
+____________________________________________________________________________
+[ 5363] By: jhi on 2000/02/29 17:47:48
+ Log: HP-UX lddlflags were broken.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! dlsrc.U
+____________________________________________________________________________
+[ 5362] By: jhi on 2000/02/29 17:32:27
+ Log: Make the failsafe question about socket address structure
+ sizes hopefully a bit less confusing.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig
+ ! U/protos/socksizetype.U
+____________________________________________________________________________
+[ 5361] By: jhi on 2000/02/29 17:17:10
+ Log: Integrate with Sarathy.
+ Branch: cfgperl
+ !> malloc.c
+____________________________________________________________________________
+[ 5360] By: gsar on 2000/02/29 17:16:09
+ Log: malloc "fix" in change#5346 coredumps on HP-UX, revert
+ Branch: perl
+ ! malloc.c
+____________________________________________________________________________
+[ 5359] By: jhi on 2000/02/29 17:06:12
+ Log: Make the warning about preferring HP's ar more visible.
+ Branch: cfgperl
+ ! hints/hpux.sh
+____________________________________________________________________________
+[ 5358] By: jhi on 2000/02/29 17:04:36
+ Log: The sprintf option was blithely printing long doubles as
+ doubles (spotted by Spider Boardman); dqgcvt() wasn't ever
+ being used; made the test more thorough.
+ Branch: cfgperl
+ ! Configure config_h.SH epoc/config.sh vms/subconfigure.com
+ ! vos/config.def win32/config.bc win32/config.gc win32/config.vc
+ Branch: metaconfig
+ ! U/compline/d_gconvert.U
+____________________________________________________________________________
+[ 5357] By: jhi on 2000/02/29 16:58:08
+ Log: Make the warning about abandoning long doubles more visible.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! uselongdbl.U
+____________________________________________________________________________
+[ 5356] By: jhi on 2000/02/29 16:51:33
+ Log: HP-UX gcc fix; detypo in use64bits.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! dlsrc.U use64bits.U
+____________________________________________________________________________
+[ 5355] By: jhi on 2000/02/29 16:31:17
+ Log: Solaris 64-bitness hints saga continues.
+ Branch: cfgperl
+ ! hints/solaris_2.sh
+____________________________________________________________________________
+[ 5354] By: jhi on 2000/02/29 16:04:42
+ Log: Integrate with Sarathy.
+ Branch: cfgperl
+ !> ext/Thread/Thread.xs perl.c perl.h
+____________________________________________________________________________
+[ 5353] By: jhi on 2000/02/29 15:54:10
+ Log: Solaris hints tweak for 64-bitallness.
+ Branch: cfgperl
+ ! hints/solaris_2.sh
+____________________________________________________________________________
+[ 5352] By: jhi on 2000/02/29 15:35:13
+ Log: Too many 64-bitness option combinations.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! use64bits.U
+____________________________________________________________________________
+[ 5351] By: gsar on 2000/02/29 15:31:56
+ Log: more adjustments needed for change#5342 under use5005threads
+ Branch: perl
+ ! ext/Thread/Thread.xs perl.c perl.h
+____________________________________________________________________________
+[ 5350] By: jhi on 2000/02/29 15:24:59
+ Log: Integrate with Sarathy.
+ Branch: cfgperl
+ +> pod/perlboot.pod
+ !> (integrate 40 files)
+____________________________________________________________________________
+[ 5349] By: gsar on 2000/02/29 08:13:56
+ Log: more m//s and $ vs \z fixups (from Greg Bacon)
+ Branch: perl
+ ! lib/File/CheckTree.pm lib/File/Copy.pm lib/File/DosGlob.pm
+ ! lib/File/Path.pm lib/File/Spec/Mac.pm lib/File/Spec/OS2.pm
+ ! lib/File/Spec/Unix.pm lib/File/Spec/VMS.pm
+ ! lib/File/Spec/Win32.pm
+____________________________________________________________________________
+[ 5348] By: gsar on 2000/02/29 08:00:48
+ Log: increase sleep to compensate for slow cpu (from Peter Haworth
+ <pmh@edison.ioppublishing.com>)
+ Branch: perl
+ ! t/io/pipe.t
+____________________________________________________________________________
+[ 5347] By: gsar on 2000/02/29 07:52:35
+ Log: add OO tutorial for beginners (from Randal L. Schwartz
+ <merlyn@stonehenge.com>)
+ Branch: perl
+ + pod/perlboot.pod
+ ! MANIFEST pod/Makefile pod/buildtoc pod/perl.pod
+ ! pod/perldelta.pod pod/perltoc.pod
+____________________________________________________________________________
+[ 5346] By: gsar on 2000/02/29 07:24:52
+ Log: malloc bug fix and machten hints (from Dominic Dunlop
+ <domo@computer.org>)
+ Branch: perl
+ ! hints/machten.sh malloc.c
+____________________________________________________________________________
+[ 5345] By: gsar on 2000/02/29 06:32:56
+ Log: integrate cfgperl contents into mainline
+ Branch: perl
+ !> Configure MANIFEST config_h.SH ext/DynaLoader/dl_aix.xs
+ !> ext/DynaLoader/hints/aix.pl ext/File/Glob/Makefile.PL
+ !> hints/aix.sh hints/hpux.sh hints/irix_6.sh hints/solaris_2.sh
+ !> mg.c perl.h pod/perldelta.pod pod/perlop.pod pp.c sv.c
+ !> t/lib/ipc_sysv.t t/op/64bit.t t/op/misc.t t/op/numconvert.t
+ !> win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[ 5344] By: gsar on 2000/02/29 06:25:33
+ Log: export list tweak
+ Branch: perl
+ ! makedef.pl
+____________________________________________________________________________
+[ 5343] By: gsar on 2000/02/29 06:01:22
+ Log: various shenanigans in change#5342
+ Branch: perl
+ ! makedef.pl thread.h util.c win32/Makefile win32/makefile.mk
+ ! win32/win32.h win32/win32thread.h
+____________________________________________________________________________
+[ 5342] By: gsar on 2000/02/29 04:53:00
+ Log: support fetching current interpreter from TLS under useithreads
+ Branch: perl
+ ! embed.h embed.pl embedvar.h global.sym intrpvar.h makedef.pl
+ ! objXSUB.h perl.c perl.h perlapi.h perlvars.h pod/perldelta.pod
+ ! proto.h sv.c thread.h util.c win32/perlhost.h win32/perllib.c
+ ! win32/win32.h win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[ 5341] By: jhi on 2000/02/29 03:26:11
+ Log: Don't know how to do large files using gcc in HP-UX.
+ Branch: cfgperl
+ ! hints/hpux.sh
+____________________________________________________________________________
+[ 5340] By: jhi on 2000/02/29 03:07:16
+ Log: Added few more libs to scan.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig
+ ! U/modified/Myinit.U U/modified/libs.U
+____________________________________________________________________________
+[ 5339] By: jhi on 2000/02/29 01:37:43
+ Log: Bigger warning on the changed behaviour of the unary ~.
+ Branch: cfgperl
+ ! pod/perldelta.pod
+____________________________________________________________________________
+[ 5338] By: jhi on 2000/02/29 01:17:07
+ Log: IRIX 64-bitness fixes.
+ Branch: cfgperl
+ ! Configure config_h.SH hints/irix_6.sh
+ Branch: metaconfig
+ ! U/modified/Cppsym.U
+____________________________________________________________________________
+[ 5337] By: jhi on 2000/02/29 00:59:08
+ Log: Userfriendliness.
+ Branch: cfgperl
+ ! Configure config_h.SH
+ Branch: metaconfig/U/perl
+ ! use64bits.U
+____________________________________________________________________________
+[ 5336] By: jhi on 2000/02/29 00:53:51
+ Log: Undo the sv_2pv() change of #5329, caused numconvert.t
+ problems in IRIX 32-n32.
+ Branch: cfgperl
+ ! sv.c
+____________________________________________________________________________
+[ 5335] By: jhi on 2000/02/29 00:22:37
+ Log: Fixes for building on HP-UX using gcc from Daniel S. Lewart.
+ Branch: cfgperl
+ ! Configure config_h.SH hints/hpux.sh
+ Branch: metaconfig/U/perl
+ ! dlsrc.U
+____________________________________________________________________________
+[ 5334] By: jhi on 2000/02/28 23:59:59
+ Log: Do not cast pointers into I32s.
+ Branch: cfgperl
+ ! mg.c
+____________________________________________________________________________
+[ 5333] By: jhi on 2000/02/28 23:39:26
+ Log: More AIX fixes from Steven Hirsch.
+ Branch: cfgperl
+ ! Configure config_h.SH ext/DynaLoader/dl_aix.xs
+ ! ext/DynaLoader/hints/aix.pl hints/aix.sh
+ Branch: metaconfig/U/perl
+ ! use64bits.U
+____________________________________________________________________________
+[ 5332] By: jhi on 2000/02/28 22:45:59
+ Log: Detypo.
+ Branch: cfgperl
+ ! hints/irix_6.sh
+____________________________________________________________________________
+[ 5331] By: jhi on 2000/02/28 22:23:36
+ Log: Regularize the call-back units (and fix a bug in #5330).
+ Branch: cfgperl
+ ! hints/aix.sh hints/hpux.sh hints/irix_6.sh hints/solaris_2.sh
+____________________________________________________________________________
+[ 5330] By: jhi on 2000/02/28 21:50:28
+ Log: Don't be overeager to turn on 64-bitallness.
+ Branch: cfgperl
+ ! hints/solaris_2.sh
+____________________________________________________________________________
+[ 5329] By: jhi on 2000/02/28 20:32:53
+ Log: Lift the 32-bit straightjacket from bit ops;
+ prefer IV/UV over NV in sv_2pv().
+ Branch: cfgperl
+ ! pod/perldelta.pod pod/perlop.pod pp.c sv.c t/op/64bit.t
+ ! t/op/misc.t t/op/numconvert.t
+____________________________________________________________________________
+[ 5328] By: jhi on 2000/02/28 20:11:59
+ Log: Do not add -Ae for gcc.
+ Branch: cfgperl
+ ! hints/hpux.sh
+____________________________________________________________________________
+[ 5327] By: jhi on 2000/02/28 17:35:39
+ Log: Use the vendor file(1).
+ Branch: cfgperl
+ ! hints/hpux.sh hints/irix_6.sh hints/solaris_2.sh
+____________________________________________________________________________
+[ 5326] By: jhi on 2000/02/28 17:31:19
+ Log: Put back madvise lost because of a typo.
+ Branch: cfgperl
+ ! Configure config_h.SH perl.h win32/config.bc win32/config.gc
+ ! win32/config.vc
+____________________________________________________________________________
+[ 5325] By: jhi on 2000/02/28 16:44:32
+ Log: Tweak HP-UX libraries.
+ Branch: cfgperl
+ ! hints/hpux.sh
+____________________________________________________________________________
+[ 5324] By: jhi on 2000/02/28 16:37:43
+ Log: Don't be overeager to turn on largefileness.
+ Branch: cfgperl
+ ! hints/solaris_2.sh
+____________________________________________________________________________
+[ 5323] By: jhi on 2000/02/28 16:23:15
+ Log: AIX 64-bit patches from Steven Hirsch <hirschs@btv.ibm.com>
+ The patch to File/Glob/Makefile.PL is inconvenient but at the
+ moment necessary: adding an ext/FIle/Glob/hints/aix.pl to turn
+ off the optimization ($self->{OPTIMIZE} = '') doesn't work,
+ the file is processed by MakeMaker but OPTIMIZE ends up as -O
+ in the resulting Makefile. A MakeMaker bug?
+ Branch: cfgperl
+ ! MANIFEST ext/DynaLoader/dl_aix.xs ext/File/Glob/Makefile.PL
+ ! hints/aix.sh t/lib/ipc_sysv.t
+____________________________________________________________________________
+[ 5322] By: jhi on 2000/02/28 16:17:33
+ Log: Integrate with Sarathy.
+ Branch: cfgperl
+ !> (integrate 45 files)
+____________________________________________________________________________
+[ 5321] By: gsar on 2000/02/28 10:13:03
+ Log: avoid warnings in legacy code (from David Dyck)
+ Branch: perl
+ ! lib/pwd.pl
+____________________________________________________________________________
+[ 5320] By: gsar on 2000/02/28 10:11:37
+ Log: find2perl doc tweak (from David Dyck <dcd@tc.fluke.com>)
+ Branch: perl
+ ! x2p/find2perl.PL
+____________________________________________________________________________
+[ 5319] By: gsar on 2000/02/28 10:07:00
+ Log: fix outdated URLs (from Michael G Schwern)
+ Branch: perl
+ ! pod/perldelta.pod pod/perlfaq1.pod pod/perlfaq2.pod
+ ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq8.pod
+ ! pod/perlfaq9.pod pod/perlmodinstall.pod pod/perlmodlib.pod
+ ! pod/perlopentut.pod pod/perlport.pod pod/perltoc.pod
+ ! pod/perlvar.pod pod/perlxs.pod
+____________________________________________________________________________
+[ 5318] By: gsar on 2000/02/28 10:04:57
+ Log: update Changes, patchlevel etc.
+ Branch: perl
+ ! Changes patchlevel.h win32/Makefile win32/config.bc
+ ! win32/config.gc win32/config.vc win32/config_H.bc
+ ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
[ 5317] By: gsar on 2000/02/28 09:39:47
Log: make stringwise bitops work properly on utf8 strings
Branch: perl
diff --git a/MANIFEST b/MANIFEST
index e8d1066224..bf39be2da2 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1091,6 +1091,7 @@ pod/perllol.pod How to use lists of lists
pod/perlmod.pod Module mechanism info
pod/perlmodinstall.pod Installing CPAN Modules
pod/perlmodlib.pod Module policy info
+pod/perlnumber.pod Semantics of numbers and numeric operations
pod/perlobj.pod Object info
pod/perlop.pod Operator info
pod/perlopentut.pod open() tutorial
diff --git a/README.win32 b/README.win32
index 5499d3a4f4..830e129d7d 100644
--- a/README.win32
+++ b/README.win32
@@ -679,9 +679,9 @@ C<kill()> is implemented, but doesn't have the semantics of
C<raise()>, i.e. it doesn't send a signal to the identified process
like it does on Unix platforms. Instead it immediately calls
C<TerminateProcess(process,signal)>. Thus the signal argument is
-used to set the exit-status of the terminated process. In particular,
-C<kill(0,$pid)> will kill the process identified by C<$pid> (unlike
-on Unix). This behavior may change in future.
+used to set the exit-status of the terminated process. However,
+a signal of 0 can be used to safely check if the specified process
+exists, as on Unix.
=item *
diff --git a/ext/DynaLoader/DynaLoader_pm.PL b/ext/DynaLoader/DynaLoader_pm.PL
index 8341b36130..6a3d4a3391 100644
--- a/ext/DynaLoader/DynaLoader_pm.PL
+++ b/ext/DynaLoader/DynaLoader_pm.PL
@@ -28,7 +28,7 @@ package DynaLoader;
#
# Tim.Bunce@ig.co.uk, August 1994
-$VERSION = "1.03"; # avoid typo warning
+$VERSION = "1.04"; # avoid typo warning
require AutoLoader;
*AUTOLOAD = \&AutoLoader::AUTOLOAD;
@@ -411,7 +411,7 @@ sub dl_find_symbol_anywhere
DynaLoader - Dynamically load C libraries into Perl code
-dl_error(), dl_findfile(), dl_expandspec(), dl_load_file(), dl_find_symbol(), dl_find_symbol_anywhere(), dl_undef_symbols(), dl_install_xsub(), dl_load_flags(), bootstrap() - routines used by DynaLoader modules
+dl_error(), dl_findfile(), dl_expandspec(), dl_load_file(), dl_unload_file(), dl_find_symbol(), dl_find_symbol_anywhere(), dl_undef_symbols(), dl_install_xsub(), dl_load_flags(), bootstrap() - routines used by DynaLoader modules
=head1 SYNOPSIS
@@ -463,6 +463,7 @@ DynaLoader Interface Summary
$symref = dl_find_symbol_anywhere($symbol) Perl
$libref = dl_load_file($filename, $flags) C
+ $status = dl_unload_file($libref) C
$symref = dl_find_symbol($libref, $symbol) C
@symbols = dl_undef_symbols() C
dl_install_xsub($name, $symref [, $filename]) C
@@ -640,6 +641,43 @@ current values of @dl_require_symbols and @dl_resolve_using if required.
Linux, and is a common choice when providing a "wrapper" on other
mechanisms as is done in the OS/2 port.)
+=item dl_unload_file()
+
+Syntax:
+
+ $status = dl_unload_file($libref)
+
+Dynamically unload $libref, which must be an opaque 'library reference' as
+returned from dl_load_file. Returns one on success and zero on failure.
+
+This function is optional and may not necessarily be provided on all platforms.
+If it is defined, it is called automatically when the interpreter exits for
+every shared object or library loaded by DynaLoader::bootstrap. All such
+library references are stored in @dl_librefs by DynaLoader::Bootstrap as it
+loads the libraries. The files are unloaded in the reverse order in to they
+were initially loaded.
+
+This unloading is usually necessary when embedding a shared-object perl (e.g.
+one configured with -Duseshrplib) within a larger application, and the perl
+interpreter is created and destroyed several times within the lifetime of the
+application. In this case it is possible that the system dynamic linker will
+unload and then subsequently reload the shared libperl without relocating any
+references to it from any files DynaLoaded by the previous incarnation of the
+interpreter. As a result, any shared objects opened by DynaLoader may point to
+a now invalid 'ghost' of the libperl shared object, causing apparently random
+memory corruption and crashes. This behaviour is most commonly seen when using
+Apache and mod_perl built with the APXS mechanism.
+
+ SunOS: dlclose($libref)
+ HP-UX: ???
+ Linux: ???
+ NeXT: ???
+ VMS: ???
+
+(The dlclose() function is also used by Solaris and some versions of
+Linux, and is a common choice when providing a "wrapper" on other
+mechanisms as is done in the OS/2 port.)
+
=item dl_loadflags()
Syntax:
diff --git a/ext/DynaLoader/Makefile.PL b/ext/DynaLoader/Makefile.PL
index bcd45ae757..83cbd770b0 100644
--- a/ext/DynaLoader/Makefile.PL
+++ b/ext/DynaLoader/Makefile.PL
@@ -12,6 +12,7 @@ WriteMakefile(
'XSLoader_pm.PL'=>'XSLoader.pm'},
PM => {'DynaLoader.pm' => '$(INST_LIBDIR)/DynaLoader.pm',
'XSLoader.pm' => '$(INST_LIBDIR)/XSLoader.pm'},
+ depend => {'DynaLoader.o' => 'dlutils.c'},
clean => {FILES => 'DynaLoader.c DynaLoader.xs DynaLoader.pm ' .
'XSLoader.pm'},
);
diff --git a/ext/DynaLoader/dl_dlopen.xs b/ext/DynaLoader/dl_dlopen.xs
index 135f5112f2..8e4936d128 100644
--- a/ext/DynaLoader/dl_dlopen.xs
+++ b/ext/DynaLoader/dl_dlopen.xs
@@ -5,11 +5,13 @@
* Created: 10th July 1994
*
* Modified:
- * 15th July 1994 - Added code to explicitly save any error messages.
- * 3rd August 1994 - Upgraded to v3 spec.
- * 9th August 1994 - Changed to use IV
- * 10th August 1994 - Tim Bunce: Added RTLD_LAZY, switchable debugging,
- * basic FreeBSD support, removed ClearError
+ * 15th July 1994 - Added code to explicitly save any error messages.
+ * 3rd August 1994 - Upgraded to v3 spec.
+ * 9th August 1994 - Changed to use IV
+ * 10th August 1994 - Tim Bunce: Added RTLD_LAZY, switchable debugging,
+ * basic FreeBSD support, removed ClearError
+ * 29th Feburary 2000 - Alan Burlison: Added functionality to close dlopen'd
+ * files when the interpreter exits
*
*/
@@ -37,6 +39,17 @@
RTLD_LAZY (==2) on Solaris 2.
+ dlclose
+ -------
+ int
+ dlclose(handle)
+ void * handle;
+
+ This function takes the handle returned by a previous invocation of
+ dlopen and closes the associated dynamic object file. It returns zero
+ on success, and non-zero on failure.
+
+
dlsym
------
void *
@@ -57,7 +70,7 @@
Returns a null-terminated string which describes the last error
that occurred with either dlopen or dlsym. After each call to
dlerror the error message will be reset to a null pointer. The
- SaveError function is used to save the error as soo as it happens.
+ SaveError function is used to save the error as soon as it happens.
Return Types
@@ -180,6 +193,20 @@ dl_load_file(filename, flags=0)
sv_setiv( ST(0), PTR2IV(RETVAL));
}
+
+int
+dl_unload_file(libref)
+ void * libref
+ CODE:
+ DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_unload_file(%lx):\n", libref));
+ RETVAL = (dlclose(libref) == 0 ? 1 : 0);
+ if (!RETVAL)
+ SaveError(aTHX_ "%s", dlerror()) ;
+ DLDEBUG(2,PerlIO_printf(Perl_debug_log, " retval = %d\n", RETVAL));
+ OUTPUT:
+ RETVAL
+
+
void *
dl_find_symbol(libhandle, symbolname)
void * libhandle
diff --git a/ext/DynaLoader/dlutils.c b/ext/DynaLoader/dlutils.c
index 664e331e7b..94230856cf 100644
--- a/ext/DynaLoader/dlutils.c
+++ b/ext/DynaLoader/dlutils.c
@@ -3,6 +3,9 @@
* Currently this file is simply #included into dl_*.xs/.c files.
* It should really be split into a dlutils.h and dlutils.c
*
+ * Modified:
+ * 29th Feburary 2000 - Alan Burlison: Added functionality to close dlopen'd
+ * files when the interpreter exits
*/
@@ -25,6 +28,31 @@ static int dl_debug = 0; /* value copied from $DynaLoader::dl_error */
#endif
+/* Close all dlopen'd files */
+static void
+dl_unload_all_files(pTHXo_ void *unused)
+{
+ CV *sub;
+ AV *dl_librefs;
+ SV *dl_libref;
+
+ if ((sub = get_cv("DynaLoader::dl_unload_file", FALSE)) != NULL) {
+ dl_librefs = get_av("DynaLoader::dl_librefs", FALSE);
+ while ((dl_libref = av_pop(dl_librefs)) != &PL_sv_undef) {
+ dSP;
+ ENTER;
+ SAVETMPS;
+ PUSHMARK(SP);
+ XPUSHs(sv_2mortal(dl_libref));
+ PUTBACK;
+ call_sv((SV*)sub, G_DISCARD);
+ FREETMPS;
+ LEAVE;
+ }
+ }
+}
+
+
static void
dl_generic_private_init(pTHXo) /* called by dl_*.xs dl_private_init() */
{
@@ -41,6 +69,7 @@ dl_generic_private_init(pTHXo) /* called by dl_*.xs dl_private_init() */
if (!dl_loaded_files)
dl_loaded_files = newHV(); /* provide cache for dl_*.xs if needed */
#endif
+ call_atexit(&dl_unload_all_files, (void*)0);
}
diff --git a/lib/File/Find.pm b/lib/File/Find.pm
index 074cff3c71..71cc0e6d90 100644
--- a/lib/File/Find.pm
+++ b/lib/File/Find.pm
@@ -419,6 +419,8 @@ sub _find_dir($$$) {
return;
}
}
+
+ push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
while (defined $SE) {
unless ($bydepth) {
@@ -504,15 +506,9 @@ sub _find_dir($$$) {
}
}
}
- if ($bydepth) {
- $name = $dir_name;
- $dir = $p_dir;
- $_ = ($no_chdir ? $dir_name : $dir_rel );
- &$wanted_callback;
- }
}
continue {
- if ( defined ($SE = pop @Stack) ) {
+ while ( defined ($SE = pop @Stack) ) {
($Level, $p_dir, $dir_rel, $nlink) = @$SE;
if ($CdLvl > $Level && !$no_chdir) {
die "Can't cd to $dir_name" . '../' x ($CdLvl-$Level)
@@ -521,6 +517,15 @@ sub _find_dir($$$) {
}
$dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
$dir_pref = "$dir_name/";
+ if ( $nlink < 0 ) { # must be finddepth, report dirname now
+ $name = $dir_name;
+ $dir = $p_dir;
+ $_ = ($no_chdir ? $dir_name : $dir_rel );
+ &$wanted_callback;
+ } else {
+ push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
+ last;
+ }
}
}
}
@@ -538,11 +543,13 @@ sub _find_dir_symlnk($$$) {
my @Stack;
my @filenames;
my $new_loc;
+ my $pdir_loc = $dir_loc;
my $SE = [];
my $dir_name = $p_dir;
my $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" );
my $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" );
my $dir_rel = '.'; # directory name relative to current directory
+ my $byd_flag; # flag for pending stack entry if $bydepth
local ($dir, $name, $fullname, $prune, *DIR);
@@ -565,6 +572,8 @@ sub _find_dir_symlnk($$$) {
}
}
+ push @Stack,[$dir_loc,$pdir_loc,$p_dir,$dir_rel,-1] if $bydepth;
+
while (defined $SE) {
unless ($bydepth) {
@@ -618,7 +627,7 @@ sub _find_dir_symlnk($$$) {
next unless defined $new_loc;
if (-d _) {
- push @Stack,[$new_loc,$dir_name,$FN];
+ push @Stack,[$new_loc,$dir_loc,$dir_name,$FN,1];
}
else {
$fullname = $new_loc;
@@ -628,19 +637,33 @@ sub _find_dir_symlnk($$$) {
}
}
- if ($bydepth) {
- $fullname = $dir_loc;
- $name = $dir_name;
- $_ = ($no_chdir ? $dir_name : $dir_rel);
- &$wanted_callback;
- }
}
continue {
- if (defined($SE = pop @Stack)) {
- ($dir_loc, $p_dir, $dir_rel) = @$SE;
+ while (defined($SE = pop @Stack)) {
+ ($dir_loc, $pdir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE;
$dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
$dir_pref = "$dir_name/";
$loc_pref = "$dir_loc/";
+ if ( $byd_flag < 0 ) { # must be finddepth, report dirname now
+ unless ($no_chdir or $dir_rel eq '.') {
+ my $udir = $pdir_loc;
+ if ($untaint) {
+ $udir = $1 if $dir_loc =~ m|$untaint_pat|;
+ }
+ unless (chdir $udir) {
+ warn "Can't cd to $udir: $!\n";
+ next;
+ }
+ }
+ $fullname = $dir_loc;
+ $name = $dir_name;
+ $dir = $p_dir;
+ $_ = ($no_chdir ? $dir_name : $dir_rel);
+ &$wanted_callback;
+ } else {
+ push @Stack,[$dir_loc, $pdir_loc, $p_dir, $dir_rel,-1] if $bydepth;
+ last;
+ }
}
}
}
diff --git a/lib/Test/Harness.pm b/lib/Test/Harness.pm
index 61a29dbaaa..820c661205 100644
--- a/lib/Test/Harness.pm
+++ b/lib/Test/Harness.pm
@@ -64,9 +64,20 @@ sub runtests {
# pass -I flags to children
my $old5lib = $ENV{PERL5LIB};
- local($ENV{'PERL5LIB'}) = join($Config{path_sep}, @INC);
- if ($^O eq 'VMS') { $switches =~ s/-(\S*[A-Z]\S*)/"-$1"/g }
+ # VMS has a 255-byte limit on the length of %ENV entries, so
+ # toss the ones that involve perl_root, the install location
+ # for VMS
+ my $new5lib;
+ if ($^O eq 'VMS') {
+ $new5lib = join($Config{path_sep}, grep {!/perl_root/i;} @INC);
+ $switches =~ s/-(\S*[A-Z]\S*)/"-$1"/g;
+ }
+ else {
+ $new5lib = join($Config{path_sep}, @INC);
+ }
+
+ local($ENV{'PERL5LIB'}) = $new5lib;
my @dir_files = globdir $files_in_dir if defined $files_in_dir;
my $t_start = new Benchmark;
diff --git a/pod/Makefile b/pod/Makefile
index 52f7e1e365..50fb270865 100644
--- a/pod/Makefile
+++ b/pod/Makefile
@@ -48,6 +48,7 @@ POD = \
perlthrtut.pod \
perldbmfilter.pod \
perldebug.pod \
+ perlnumber.pod \
perldiag.pod \
perlsec.pod \
perltrap.pod \
@@ -113,6 +114,7 @@ MAN = \
perlthrtut.man \
perldbmfilter.man \
perldebug.man \
+ perlnumber.man \
perldiag.man \
perlsec.man \
perltrap.man \
@@ -178,6 +180,7 @@ HTML = \
perlthrtut.html \
perldbmfilter.html \
perldebug.html \
+ perlnumber.html \
perldiag.html \
perlsec.html \
perltrap.html \
@@ -243,6 +246,7 @@ TEX = \
perlthrtut.tex \
perldbmfilter.tex \
perldebug.tex \
+ perlnumber.tex \
perldiag.tex \
perlsec.tex \
perltrap.tex \
diff --git a/pod/buildtoc b/pod/buildtoc
index dd8638ac0b..d947ddccee 100644
--- a/pod/buildtoc
+++ b/pod/buildtoc
@@ -11,7 +11,7 @@ sub output ($);
perlmod perlmodlib perlmodinstall perlfork perlform perllocale
perlref perlreftut perldsc
perllol perlboot perltoot perltootc perlobj perltie perlbot perlipc
- perldbmfilter perldebug
+ perldbmfilter perldebug perlnumber
perldiag perlsec perltrap perlport perlstyle perlpod perlbook
perlembed perlapio perlxs perlxstut perlguts perlcall perlcompile
perlapi perlintern perlhist
diff --git a/pod/perl.pod b/pod/perl.pod
index 9fc6c1dbd3..0414fa4f29 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -55,6 +55,7 @@ sections:
perlcompile Perl compiler suite intro
perldebug Perl debugging
perldiag Perl diagnostic messages
+ perlnumber Perl number semantics
perlsec Perl security
perltrap Perl traps for the unwary
perlport Perl portability guide
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 205365eb53..7345727f45 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -1287,6 +1287,9 @@ system(1,...) now returns true process IDs rather than process
handles. kill() accepts any real process id, rather than strictly
return values from system(1,...).
+For better compatibility with Unix, C<kill(0, $pid)> can now be used to
+test whether a process exists.
+
The C<Shell> module is supported.
Rudimentary support for building under command.com in Windows 95
diff --git a/pod/perlguts.pod b/pod/perlguts.pod
index 2686c3991b..58bcea3d1a 100644
--- a/pod/perlguts.pod
+++ b/pod/perlguts.pod
@@ -1672,14 +1672,14 @@ Thus, something like:
in your extesion will translate to this when PERL_IMPLICIT_CONTEXT is
in effect:
- Perl_sv_setsv(GetPerlInterpreter(), asv, bsv);
+ Perl_sv_setsv(Perl_get_context(), asv, bsv);
or to this otherwise:
Perl_sv_setsv(asv, bsv);
You have to do nothing new in your extension to get this; since
-the Perl library provides GetPerlInterpreter(), it will all just
+the Perl library provides Perl_get_context(), it will all just
work.
The second, more efficient way is to use the following template for
diff --git a/pod/perlhack.pod b/pod/perlhack.pod
index 5ecdf2cadb..3a84e95513 100644
--- a/pod/perlhack.pod
+++ b/pod/perlhack.pod
@@ -200,8 +200,25 @@ currently the Perforce program, see http://perforce.com/). The
pumpkings and a few others have access to the repository to check in
changes. Periodically the pumpking for the development version of Perl
will release a new version, so the rest of the porters can see what's
-changed. Plans are underway for a repository viewer, and for
-anonymous CVS access to the latest versions.
+changed. The current state of the main trunk of repository, and patches
+that describe the individual changes that have happened since the last
+public release are available at this location:
+
+ ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/
+
+Selective parts are also visible via the rsync protocol. To get all
+the individual changes to the mainline since the last development
+release, use the following command:
+
+ rsync -avuz rsync://ftp.linux.activestate.com/perl-diffs perl-diffs
+
+Use this to get the latest source tree in full:
+
+ rsync -avuz rsync://ftp.linux.activestate.com/perl-current perl-current
+
+Needless to say, the source code in perl-current is usually in a perpetual
+state of evolution. You should expect it to be very buggy. Do B<not> use
+it for any purpose other than testing and development.
Always submit patches to I<perl5-porters@perl.org>. This lets other
porters review your patch, which catches a surprising number of errors
diff --git a/pod/perlhist.pod b/pod/perlhist.pod
index 0e1df8abd3..4d9858e5ee 100644
--- a/pod/perlhist.pod
+++ b/pod/perlhist.pod
@@ -335,6 +335,7 @@ the strings?).
5.5.640 2000-Feb-02
5.5.650 2000-Feb-08 5.6 beta1
5.5.660 2000-Feb-22 5.6 beta2
+ 5.5.670 2000-Feb-29 5.6 beta3
=head2 SELECTED RELEASE SIZES
diff --git a/pod/perlnumber.pod b/pod/perlnumber.pod
new file mode 100644
index 0000000000..c05b066b43
--- /dev/null
+++ b/pod/perlnumber.pod
@@ -0,0 +1,185 @@
+=head1 NAME
+
+perlnumber - semantics of numbers and numeric operations in Perl
+
+=head1 SYNOPSIS
+
+ $n = 1234; # decimal integer
+ $n = 0b1110011; # binary integer
+ $n = 01234; # octal integer
+ $n = 0x1234; # hexadecimal integer
+ $n = 12.34e-56; # exponential notation
+ $n = "-12.34e56"; # number specified as a string
+ $n = "1234"; # number specified as a string
+ $n = v49.50.51.52; # number specified as a string, which in
+ # turn is specified in terms of numbers :-)
+
+=head1 DESCRIPTION
+
+This document describes how Perl internally handles numeric values.
+
+Perl's operator overloading facility is completely ignored here. Operator
+overloading allows user-defined behaviors for numbers, such as operations
+over arbitrarily large integers, floating points numbers with arbitrary
+precision, operations over "exotic" numbers such as modular arithmetic or
+p-adic arithmetic, and so on. See L<perlovl> for details.
+
+=head1 Storing numbers
+
+Perl can internally represents numbers in 3 different ways: as native
+integers, as native floating point numbers, and as decimal strings.
+Decimal strings may have an exponential notation part, as in C<"12.34e-56">.
+I<Native> here means "a format supported by the C compiler which was used
+to build perl".
+
+The term "native" does not mean quite as much when we talk about native
+integers, as it does when native floating point numbers are involved.
+The only implication of the term "native" on integers is that the limits for
+the maximal and the minimal supported true integral quantities are close to
+powers of 2. However, for "native" floats have a most fundamental
+restriction: they may represent only those numbers which have a relatively
+"short" representation when converted to a binary fraction. For example,
+0.9 cannot be respresented by a native float, since the binary fraction
+for 0.9 is infinite:
+
+ binary0.1110011001100...
+
+with the sequence C<1100> repeating again and again. In addition to this
+limitation, the exponent of the binary number is also restricted when it
+is represented as a floating point number. On typical hardware, floating
+point values can store numbers with up to 53 binary digits, and with binary
+exponents between -1024 and 1024. In decimal representation this is close
+to 16 decimal digits and decimal exponents in the range of -304..304.
+The upshot of all this is that Perl cannot store a number like
+12345678901234567 as a floating point number on such architectures without
+loss of information.
+
+Similarly, decimal strings may represent only those numbers which have a
+finite decimal expansion. Being strings, and thus of arbitrary length, there
+is no practical limit for the exponent or number of decimal digits for these
+numbers. (But realize that what we are discussing the rules for just the
+I<storage> of these numbers. The fact that you can store such "large" numbers
+does not mean that that the I<operations> over these numbers will use all
+of the significant digits.
+See L<"Numeric operations and numeric conversions"> for details.)
+
+In fact numbers stored in the native integer format may be stored either
+in the signed native form, or in the unsigned native form. Thus the limits
+for Perl numbers stored as native integers would typically be -2**31..2**32-1,
+with appropriate modifications in the case of 64-bit integers. Again, this
+does not mean that Perl can do operations only over integers in this range:
+it is possible to store many more integers in floating point format.
+
+Summing up, Perl numeric values can store only those numbers which have
+a finite decimal expansion or a "short" binary expansion.
+
+=head1 Numeric operators and numeric conversions
+
+As mentioned earlier, Perl can store a number in any one of three formats,
+but most operators typically understand only one of those formats. When
+a numeric value is passed as an argument to such an operator, it will be
+converted to the format understood by the operator.
+
+Six such conversions are possible:
+
+ native integer --> native floating point (*)
+ native integer --> decimal string
+ native floating_point --> native integer (*)
+ native floating_point --> decimal string (*)
+ decimal string --> native integer
+ decimal string --> native floating point (*)
+
+These conversions are governed by the following general rules:
+
+=over
+
+=item *
+
+If the source number can be represented in the target form, that
+representation is used.
+
+=item *
+
+If the source number is outside of the limits representable in the target form,
+a representation of the closest limit is used. (I<Loss of information>)
+
+=item *
+
+If the source number is between two numbers representable in the target form,
+a representation of one of these numbers is used. (I<Loss of information>)
+
+=item *
+
+In C<< native floating point --> native integer >> conversions the magnitude
+of the result is less than or equal to the magnitude of the source.
+(I<"Rounding to zero".>)
+
+=item *
+
+If the C<< decimal string --> native integer >> conversion cannot be done
+without loss of information, the result is compatible with the conversion
+sequence C<< decimal_string --> native_floating_point --> native_integer >>.
+In particular, rounding is strongly biased to 0, though a number like
+C<"0.99999999999999999999"> has a chance of being rounded to 1.
+
+=back
+
+B<RESTRICTION>: The conversions marked with C<(*)> above involve steps
+performed by the C compiler. In particular, bugs/features of the compiler
+used may lead to breakage of some of the above rules.
+
+=head1 Flavors of Perl numeric operations
+
+Perl operations which take a numeric argument treat that argument in one
+of four different ways: they may force it to one of the integer/floating/
+string formats, or they may behave differently depending on the format of
+the operand. Forcing a numeric value to a particular format does not
+change the number stored in the value.
+
+All the operators which need an argument in the integer format treat the
+argument as in modular arithmetic, e.g., C<mod 2**32> on a 32-bit
+architecture. C<sprintf "%u", -1> therefore provides the same result as
+C<sprintf "%u", ~0>.
+
+=over
+
+=item Arithmetic operators except, C<no integer>
+
+force the argument into the floating point format.
+
+=item Arithmetic operators except, C<use integer>
+
+=item Bitwise operators, C<no integer>
+
+force the argument into the integer format if it is not a string.
+
+=item Bitwise operators, C<use integer>
+
+force the argument into the integer format
+
+=item Operators which expect an integer
+
+force the argument into the integer format. This is applicable
+to the third and fourth arguments of C<sysread>, for example.
+
+=item Operators which expect a string
+
+force the argument into the string format. For example, this is
+applicable to C<printf "%s", $value>.
+
+=back
+
+Though forcing an argument into a particular form does not change the
+stored number, Perl remembers the result of such conversions. In
+particular, though the first such conversion may be time-consuming,
+repeated operations will not need to redo the conversion.
+
+=head1 AUTHOR
+
+Ilya Zakharevich C<ilya@math.ohio-state.edu>
+
+Editorial adjustments by Gurusamy Sarathy <gsar@ActiveState.com>
+
+=head1 SEE ALSO
+
+L<perlovl>
diff --git a/pod/perlport.pod b/pod/perlport.pod
index 3009780ada..b062b3b106 100644
--- a/pod/perlport.pod
+++ b/pod/perlport.pod
@@ -1459,8 +1459,9 @@ Available only for socket handles. (S<RISC OS>)
Not implemented, hence not useful for taint checking. (S<Mac OS>,
S<RISC OS>)
-Unlike Unix platforms, C<kill(0, $pid)> will actually terminate
-the process. (Win32)
+C<kill($sig, $pid)> makes the process exit immediately with exit
+status $sig. As in Unix, if $sig is 0 and the specified process exists,
+it returns true without actually terminating it. (Win32)
=item link OLDFILE,NEWFILE
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index bc45dd88ad..83d40d4241 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -1608,7 +1608,7 @@ y/SEARCHLIST/REPLACEMENTLIST/cdsUC
Finding the end, Removal of backslashes before delimiters, Interpolation,
C<<<'EOF'>, C<m''>, C<s'''>, C<tr///>, C<y///>, C<''>, C<q//>, C<"">,
-C<``>, C<qq//>, C<qx//>, C<<file*globE<gt>>, C<?RE?>, C</RE/>, C<m/RE/>,
+C<``>, C<qq//>, C<qx//>, C<< <file*glob> >>, C<?RE?>, C</RE/>, C<m/RE/>,
C<s/RE/foo/>,, Interpolation of regular expressions, Optimization of
regular expressions
@@ -2923,6 +2923,31 @@ C<anchored(TYPE)>
=back
+=head2 perlnumber - semantics of numbers and numeric operations in Perl
+
+=over
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=item Storing numbers
+
+=item Numeric operators and numeric conversions
+
+=item Flavors of Perl numeric operations
+
+Arithmetic operators except, C<no integer>, Arithmetic operators except,
+C<use integer>, Bitwise operators, C<no integer>, Bitwise operators, C<use
+integer>, Operators which expect an integer, Operators which expect a
+string
+
+=item AUTHOR
+
+=item SEE ALSO
+
+=back
+
=head2 perldiag - various Perl diagnostics
=over
@@ -3617,9 +3642,9 @@ C<void save_hptr(HV **hptr)>
An Error Handler, An Event Driven Program
-=item THE PERL_CALL FUNCTIONS
+=item THE CALL_ FUNCTIONS
-perl_call_sv, perl_call_pv, perl_call_method, perl_call_argv
+call_sv, call_pv, call_method, call_argv
=item FLAG VALUES
@@ -3665,11 +3690,11 @@ perl_call_sv, perl_call_pv, perl_call_method, perl_call_argv
=item Using G_KEEPERR
-=item Using perl_call_sv
+=item Using call_sv
-=item Using perl_call_argv
+=item Using call_argv
-=item Using perl_call_method
+=item Using call_method
=item Using GIMME_V
diff --git a/pod/roffitall b/pod/roffitall
index 9f9e3e9e49..ebfcc7e264 100644
--- a/pod/roffitall
+++ b/pod/roffitall
@@ -49,6 +49,7 @@ toroff=`
$mandir/perlreftut.1 \
$mandir/perldsc.1 \
$mandir/perllol.1 \
+ $mandir/perlboot.1 \
$mandir/perltoot.1 \
$mandir/perlobj.1 \
$mandir/perltie.1 \
@@ -56,6 +57,7 @@ toroff=`
$mandir/perlipc.1 \
$mandir/perlthrtut.1 \
$mandir/perldebug.1 \
+ $mandir/perlnumber.1 \
$mandir/perldiag.1 \
$mandir/perlsec.1 \
$mandir/perltrap.1 \
diff --git a/vms/vms.c b/vms/vms.c
index ba4fada81e..7327b75b6f 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -616,6 +616,13 @@ vmssetenv(char *lnm, char *eqv, struct dsc$descriptor_s **tabvec)
}
else {
if (!*eqv) eqvdsc.dsc$w_length = 1;
+ if (eqvdsc.dsc$w_length > LNM$C_NAMLENGTH) {
+ eqvdsc.dsc$w_length = LNM$C_NAMLENGTH;
+ if (ckWARN(WARN_MISC)) {
+ Perl_warner(aTHX_ WARN_MISC,"Value of logical \"%s\" too long. "
+ "Truncating to %i bytes",lnm, LNM$C_NAMLENGTH);
+ }
+ }
retsts = lib$set_logical(&lnmdsc,&eqvdsc,tabvec[0],0,0);
}
}
diff --git a/win32/perllib.c b/win32/perllib.c
index 3aed2415fd..2a0cb85c92 100644
--- a/win32/perllib.c
+++ b/win32/perllib.c
@@ -334,6 +334,9 @@ RunPerl(int argc, char **argv, char **env)
return (exitstatus);
}
+EXTERN_C void
+set_w32_module_name(void);
+
BOOL APIENTRY
DllMain(HANDLE hModule, /* DLL module handle */
DWORD fdwReason, /* reason called */
@@ -353,6 +356,7 @@ DllMain(HANDLE hModule, /* DLL module handle */
#endif
DisableThreadLibraryCalls((HMODULE)hModule);
w32_perldll_handle = hModule;
+ set_w32_module_name();
break;
/* The DLL is detaching from a process due to
diff --git a/win32/win32.c b/win32/win32.c
index 4a7f091797..5fb1f46545 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -124,6 +124,30 @@ IsWinNT(void)
return (win32_os_id() == VER_PLATFORM_WIN32_NT);
}
+EXTERN_C void
+set_w32_module_name(void)
+{
+ char* ptr;
+ GetModuleFileName((HMODULE)((w32_perldll_handle == INVALID_HANDLE_VALUE)
+ ? GetModuleHandle(NULL)
+ : w32_perldll_handle),
+ w32_module_name, sizeof(w32_module_name));
+
+ /* try to get full path to binary (which may be mangled when perl is
+ * run from a 16-bit app) */
+ /*PerlIO_printf(Perl_debug_log, "Before %s\n", w32_module_name);*/
+ (void)win32_longpath(w32_module_name);
+ /*PerlIO_printf(Perl_debug_log, "After %s\n", w32_module_name);*/
+
+ /* normalize to forward slashes */
+ ptr = w32_module_name;
+ while (*ptr) {
+ if (*ptr == '\\')
+ *ptr = '/';
+ ++ptr;
+ }
+}
+
/* *svp (if non-NULL) is expected to be POK (valid allocated SvPVX(*svp)) */
static char*
get_regstr_from(HKEY hkey, const char *valuename, SV **svp)
@@ -186,24 +210,7 @@ get_emd_part(SV **prev_pathp, char *trailing_path, ...)
baselen = strlen(base);
if (!*w32_module_name) {
- GetModuleFileName((HMODULE)((w32_perldll_handle == INVALID_HANDLE_VALUE)
- ? GetModuleHandle(NULL)
- : w32_perldll_handle),
- w32_module_name, sizeof(w32_module_name));
-
- /* try to get full path to binary (which may be mangled when perl is
- * run from a 16-bit app) */
- /*PerlIO_printf(Perl_debug_log, "Before %s\n", w32_module_name);*/
- (void)win32_longpath(w32_module_name);
- /*PerlIO_printf(Perl_debug_log, "After %s\n", w32_module_name);*/
-
- /* normalize to forward slashes */
- ptr = w32_module_name;
- while (*ptr) {
- if (*ptr == '\\')
- *ptr = '/';
- ++ptr;
- }
+ set_w32_module_name();
}
strcpy(mod_name, w32_module_name);
ptr = strrchr(mod_name, '/');
@@ -989,6 +996,8 @@ win32_kill(int pid, int sig)
/* it is a pseudo-forked child */
long child = find_pseudo_pid(-pid);
if (child >= 0) {
+ if (!sig)
+ return 0;
hProcess = w32_pseudo_child_handles[child];
if (TerminateThread(hProcess, sig)) {
remove_dead_pseudo_process(child);
@@ -1001,6 +1010,8 @@ win32_kill(int pid, int sig)
{
long child = find_pid(pid);
if (child >= 0) {
+ if (!sig)
+ return 0;
hProcess = w32_child_handles[child];
if (TerminateProcess(hProcess, sig)) {
remove_dead_process(child);
@@ -1009,9 +1020,13 @@ win32_kill(int pid, int sig)
}
else {
hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
- if (hProcess && TerminateProcess(hProcess, sig)) {
- CloseHandle(hProcess);
- return 0;
+ if (hProcess) {
+ if (!sig)
+ return 0;
+ if (TerminateProcess(hProcess, sig)) {
+ CloseHandle(hProcess);
+ return 0;
+ }
}
}
}
diff --git a/win32/win32.h b/win32/win32.h
index bbf88bb1e5..b0ccd14d9f 100644
--- a/win32/win32.h
+++ b/win32/win32.h
@@ -27,12 +27,6 @@
# define win32_get_sitelib PerlEnv_sitelib_path
#endif
-#if defined(PERL_IMPLICIT_CONTEXT)
-/* compat */
-# define GetPerlInterpreter Perl_get_context
-# define SetPerlInterpreter Perl_set_context
-#endif
-
#ifdef __GNUC__
# ifndef __int64 /* some versions seem to #define it already */
# define __int64 long long