diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2000-03-01 05:33:54 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2000-03-01 05:33:54 +0000 |
commit | 8dd45d34530338e4b3b5971eaa45b6974375715b (patch) | |
tree | 78547ab116114363ef5b19921484d83ad4d48e11 | |
parent | 3141530c492792a17327a0ff80df3353f97c80ea (diff) | |
parent | 2fa86c13816417d1d62616d1bb8114a5a9831c33 (diff) | |
download | perl-8dd45d34530338e4b3b5971eaa45b6974375715b.tar.gz |
Integrate with Sarathy.
p4raw-id: //depot/cfgperl@5389
-rw-r--r-- | Changes | 433 | ||||
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | README.win32 | 6 | ||||
-rw-r--r-- | ext/DynaLoader/DynaLoader_pm.PL | 42 | ||||
-rw-r--r-- | ext/DynaLoader/Makefile.PL | 1 | ||||
-rw-r--r-- | ext/DynaLoader/dl_dlopen.xs | 39 | ||||
-rw-r--r-- | ext/DynaLoader/dlutils.c | 29 | ||||
-rw-r--r-- | lib/File/Find.pm | 55 | ||||
-rw-r--r-- | lib/Test/Harness.pm | 15 | ||||
-rw-r--r-- | pod/Makefile | 4 | ||||
-rw-r--r-- | pod/buildtoc | 2 | ||||
-rw-r--r-- | pod/perl.pod | 1 | ||||
-rw-r--r-- | pod/perldelta.pod | 3 | ||||
-rw-r--r-- | pod/perlguts.pod | 4 | ||||
-rw-r--r-- | pod/perlhack.pod | 21 | ||||
-rw-r--r-- | pod/perlhist.pod | 1 | ||||
-rw-r--r-- | pod/perlnumber.pod | 185 | ||||
-rw-r--r-- | pod/perlport.pod | 5 | ||||
-rw-r--r-- | pod/perltoc.pod | 37 | ||||
-rw-r--r-- | pod/roffitall | 2 | ||||
-rw-r--r-- | vms/vms.c | 7 | ||||
-rw-r--r-- | win32/perllib.c | 4 | ||||
-rw-r--r-- | win32/win32.c | 57 | ||||
-rw-r--r-- | win32/win32.h | 6 |
24 files changed, 891 insertions, 69 deletions
@@ -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 @@ -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 \ @@ -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 |