diff --git a/contrib/perl5/AUTHORS b/contrib/perl5/AUTHORS new file mode 100644 index 000000000000..f978b51bd895 --- /dev/null +++ b/contrib/perl5/AUTHORS @@ -0,0 +1,120 @@ +# Two sections: the real one and the virtual one. +# The real section has three \t+ fields: alias, name, email. +# The sections are separated by one or more empty lines. +# The virtual section (each record two \t+ separated fields) builds +# meta-aliases based on the real section. + +alan.burlison Alan Burlison Alan.Burlison@UK.Sun.com +allen Norton T. Allen allen@huarp.harvard.edu +bradapp Brad Appleton bradapp@enteract.com +cbail Charles Bailey bailey@newman.upenn.edu +dgris Daniel Grisinger dgris@dimensional.com +dmulholl Daniel Yacob dmulholl@cs.indiana.edu +dogcow Tom Spindler dogcow@merit.edu +domo Dominic Dunlop domo@slipper.ip.lu +doug Doug MacEachern dougm@pobox.com +doughera Andy Dougherty doughera@lafcol.lafayette.edu +gbarr Graham Barr gbarr@ti.com +gerti Gerd Knops gerti@BITart.com +gibreel Stephen Zander gibreel@pobox.com +gnat Nathan Torkington gnat@frii.com +gsar Gurusamy Sarathy gsar@activestate.com +hansmu Hans Mulder hansmu@xs4all.nl +ilya Ilya Zakharevich ilya@math.ohio-state.edu +jbuehler Joe Buehler jbuehler@hekimian.com +jfs John Stoffel jfs@fluent.com +jhi Jarkko Hietaniemi jhi@iki.fi +jon Jon Orwant orwant@media.mit.edu +jvromans Johan Vromans jvromans@squirrel.nl +k Andreas Koenig andreas.koenig@franz.ww.tu-berlin.de +kjahds Kenneth Albanowski kjahds@kjahds.com +krishna Krishna Sethuraman krishna@sgi.com +kstar Kurt D. Starsinic kstar@isinet.com +lstein Lincoln D. Stein lstein@genome.wi.mit.edu +lutherh Luther Huffman lutherh@stratcom.com +lutz Mark P. Lutz mark.p.lutz@boeing.com +lwall Larry Wall larry@wall.org +makemaker MakeMaker list makemaker@franz.ww.tu-berlin.de +mbiggar Mark A Biggar mab@wdl.loral.com +mbligh Martin J. Bligh mbligh@sequent.com +mike Mike Stok mike@stok.co.uk +millert Todd Miller millert@openbsd.org +laszlo.molnar Laszlo Molnar Laszlo.Molnar@eth.ericsson.se +mpeix Mark Bixby markb@cccd.edu +muir David Muir Sharnoff muir@idiom.com +neale Neale Ferguson neale@VMA.TABNSW.COM.AU +nik Nick Ing-Simmons nik@tiuk.ti.com +okamoto Jeff Okamoto okamoto@corp.hp.com +paul_green Paul Green Paul_Green@stratus.com +pmarquess Paul Marquess Paul.Marquess@btinternet.com +pomeranz Hal Pomeranz pomeranz@netcom.com +pudge Chris Nandor pudge@pobox.com +pueschel Norbert Pueschel pueschel@imsdd.meb.uni-bonn.de +pvhp Peter Prymmer pvhp@forte.com +raphael Raphael Manfredi Raphael_Manfredi@pobox.com +rdieter Rex Dieter rdieter@math.unl.edu +rsanders Robert Sanders Robert.Sanders@linux.org +roberto Ollivier Robert roberto@keltia.freenix.fr +roderick Roderick Schertler roderick@argon.org +roehrich Dean Roehrich roehrich@cray.com +tsanders Tony Sanders sanders@bsdi.com +schinder Paul Schinder schinder@pobox.com +scotth Scott Henry scotth@sgi.com +seibert Greg Seibert seibert@Lynx.COM +spider Spider Boardman spider@Orb.Nashua.NH.US +smccam Stephen McCamant smccam@uclink4.berkeley.edu +sugalskd Dan Sugalski sugalskd@osshe.edu +sundstrom David Sundstrom sunds@asictest.sc.ti.com +tchrist Tom Christiansen tchrist@perl.com +thomas.dorner Dorner Thomas Thomas.Dorner@start.de +timb Tim Bunce Tim.Bunce@ig.co.uk +tom.horsley Tom Horsley Tom.Horsley@mail.ccur.com +tye Tye McQueen tye@metronet.com +wayne.thompson Wayne Thompson Wayne.Thompson@Ebay.sun.com + +PUMPKING gsar +aix jhi +amiga pueschel +beos dogcow +bsdos tsanders +cfg jhi +cgi lstein +complex jhi,raphael +cpan k +cxux tom.horsley +cygwin win32 +dec_osf jhi,spider +dgux roderick +doc tchrist +dos laszlo.molnar +dynix/ptx mbligh +ebcdic vms,vmesa,posixbc +filespec kjahds +freebsd roberto +hpux okamoto,jhi +irix scotth,krishna,jfs,kstar +jpl gibreel +linux kjahds,kstar +locale jhi,domo +lynxos lynxos +machten domo +mm makemaker +mvs pvhp +netbsd jhi +openbsd millert +os2 ilya +plan9 lutherl +posix-bc thomas.dorner +powerux tom.horsley +qnx allen +solaris doughera,alan.burlison +step gerti,hansmu,rdieter +sunos4 doughera +svr4 tye +unicos jhi,lutz +uwin jbuehler +vmesa neale +vms sugalskd,cbail +vos paul_green +warn pmarquess +win32 gsar diff --git a/contrib/perl5/Changes b/contrib/perl5/Changes index 00a38d5eeba0..69498211964c 100644 --- a/contrib/perl5/Changes +++ b/contrib/perl5/Changes @@ -1,11 +1,9 @@ -Please note: This file provides a summary of significant changes -between versions and sub-versions of Perl, not necessarily a complete -list of each modification. If you'd like more detailed information, -please consult the comments in the patches on which the relevant -release of Perl is based. (Patches can be found on any CPAN -site, in the .../src/5.0 directory for full version releases, -or in the .../src/5/0/unsupported directory for sub-version -releases.) +Please note: This file provides a complete, temporally ordered log of +changes that went into every version of Perl. If you'd like more +detailed information, please consult the comments in the individual +patches posted to the perl5-porters mailing list. Patches for each +individual change may also be obtained through ftp and rsync--see +perlhack.pod for the details. --------------- @@ -14,46 +12,63 @@ releases.) To give due honor to those who have made Perl what is is today, here are some of the more common names in the Changes file, and their -current addresses (as of July 1998): +current addresses (as of February 2000): Gisle Aas - Abigail + Abigail Kenneth Albanowski Russ Allbery + Brad Appleton + Greg Bacon + Robin Barker + Vishal Bhatia Spider Boardman Tom Christiansen + Mark-Jason Dominus + Jan Dubois + Dominic Dunlop + Eric Fifer Hallvard B Furuseth M. J. T. Guy Jarkko Hietaniemi + Tom Hughes Nick Ing-Simmons Andreas Koenig + Douglas Lankshear Doug MacEachern - Paul Marquess + Raphael Manfredi + Paul Marquess Stephen McCamant - Laszlo Molnar + Laszlo Molnar Hans Mulder + Chris Nandor Matthias Neeracher Jeff Okamoto Ulrich Pfeifer Tom Phoenix Joshua Pritikin + Peter Prymmer Norbert Pueschel Dean Roehrich Hugo van der Sanden + Michael G Schwern Roderick Schertler Kurt D. Starsinic + Benjamin Stuhl Dan Sugalski + Nathan Torkington Larry W. Virden + Johan Vromans Ilya Zakharevich And the Keepers of the Patch Pumpkin: - Charles Bailey - Graham Barr + Charles Bailey + Graham Barr Malcolm Beattie Tim Bunce Andy Dougherty - Gurusamy Sarathy + Gurusamy Sarathy Chip Salzenberg And, of course, the Author of Perl: @@ -73,56 +88,18390 @@ indicator: !> merged changes (from elsewhere) +-------------- +Version v5.6.0 +-------------- + +____________________________________________________________________________ +[ 5899] By: gsar on 2000/03/23 05:39:11 + Log: update patchlevel.h, Changes; regen perltoc.pod + Branch: perl + ! Changes patchlevel.h pod/perlhist.pod pod/perltoc.pod +____________________________________________________________________________ +[ 5898] By: jhi on 2000/03/23 05:36:47 + Log: Integrate with Sarathy. + Branch: cfgperl + !> README.machten Todo Todo-5.6 pod/perldebug.pod + !> pod/perldelta.pod pod/perldiag.pod pod/perlport.pod sv.c +____________________________________________________________________________ +[ 5897] By: gsar on 2000/03/23 05:31:12 + Log: revise perldelta for more optimal ordering, minor Todo + rearrangments + Branch: perl + ! README.machten Todo Todo-5.6 pod/perldelta.pod + ! pod/perldiag.pod +____________________________________________________________________________ +[ 5896] By: gsar on 2000/03/23 05:30:15 + Log: pod updates (from Tom Christiansen) + Branch: perl + ! pod/perldebug.pod pod/perlport.pod +____________________________________________________________________________ +[ 5895] By: gsar on 2000/03/23 02:33:33 + Log: fix misplaced OP refcount for eval root + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5894] By: jhi on 2000/03/22 21:37:03 + Log: Integrate with Sarathy. + Branch: cfgperl + +> README.machten + !> MAINTAIN MANIFEST README.win32 ext/DynaLoader/dlutils.c + !> ext/IO/lib/IO/File.pm hints/machten.sh pod/perl.pod + !> pod/perldelta.pod pod/perlsyn.pod t/io/fs.t win32/Makefile + !> win32/makefile.mk +____________________________________________________________________________ +[ 5893] By: gsar on 2000/03/22 21:08:34 + Log: unretract change#5871 (Dominic Dunlop reports machten is better + with it than without) + Branch: perl + ! hints/machten.sh +____________________________________________________________________________ +[ 5892] By: gsar on 2000/03/22 20:37:44 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure config_h.SH hints/machten.sh hints/solaris_2.sh + !> hints/unicosmk.sh +____________________________________________________________________________ +[ 5891] By: gsar on 2000/03/22 20:04:01 + Log: perlsyn.pod nit (from Tom Christiansen) + Branch: perl + ! pod/perlsyn.pod +____________________________________________________________________________ +[ 5890] By: gsar on 2000/03/22 19:43:22 + Log: typo in comment + Branch: perl + ! ext/DynaLoader/dlutils.c +____________________________________________________________________________ +[ 5889] By: gsar on 2000/03/22 19:41:46 + Log: add README.machten (from Dominic Dunlop) + Branch: perl + + README.machten + ! MAINTAIN MANIFEST pod/perl.pod win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 5888] By: gsar on 2000/03/22 19:29:47 + Log: makefile nits + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 5887] By: gsar on 2000/03/22 19:26:03 + Log: add note about lib/open3.t#22 failure on Win2K + Branch: perl + ! README.win32 pod/perldelta.pod +____________________________________________________________________________ +[ 5886] By: gsar on 2000/03/22 19:14:20 + Log: io/fs.t tweaks for Windows 2000 + Branch: perl + ! t/io/fs.t +____________________________________________________________________________ +[ 5885] By: gsar on 2000/03/22 18:41:50 + Log: make unloading of extension shared objects (change#5381) a build + option (use "Configure -Accflags=-DDL_UNLOAD_ALL_AT_EXIT" to enable) + Branch: perl + ! ext/DynaLoader/dlutils.c pod/perldelta.pod +____________________________________________________________________________ +[ 5884] By: gsar on 2000/03/22 18:16:45 + Log: avoid loading both XSLoader and DynaLoader (avoids dl_error() + redefinition warnings when statically linked) + Branch: perl + ! ext/IO/lib/IO/File.pm +____________________________________________________________________________ +[ 5883] By: jhi on 2000/03/22 17:45:01 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/lib/thr5005.t t/op/64bitint.t t/op/nothr5005.t + - t/lib/thread.t t/op/64bit.t t/op/nothread.t + !> Configure MAINTAIN MANIFEST Todo-5.6 ext/POSIX/Makefile.PL + !> lib/ExtUtils/Liblist.pm lib/ExtUtils/xsubpp + !> lib/File/Compare.pm pod/perldelta.pod universal.c util.c + !> utils/h2xs.PL utils/perlbug.PL win32/Makefile + !> win32/makefile.mk +____________________________________________________________________________ +[ 5882] By: jhi on 2000/03/22 17:16:27 + Log: Metaconfigify #5881. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/installdirs/inc_version_list.U +____________________________________________________________________________ +[ 5881] By: gsar on 2000/03/22 17:04:01 + Log: avoid including things that aren't directories in inc_version_list + (from Robin Barker) + Branch: perl + ! Configure +____________________________________________________________________________ +[ 5880] By: gsar on 2000/03/22 16:55:42 + Log: avoid File::Compare warning when passed handles (from Nick + Ing-Simmons) + Branch: perl + ! lib/File/Compare.pm +____________________________________________________________________________ +[ 5879] By: jhi on 2000/03/22 16:48:33 + Log: Retract #5871. + Branch: cfgperl + ! hints/machten.sh +____________________________________________________________________________ +[ 5878] By: gsar on 2000/03/22 16:29:37 + Log: RM600-svr4 tweaks (from Frank Ridderbusch + ) + Branch: perl + ! ext/POSIX/Makefile.PL lib/ExtUtils/Liblist.pm +____________________________________________________________________________ +[ 5877] By: gsar on 2000/03/22 15:38:49 + Log: save RE context when calling __WARN__ and __DIE__ hooks; + add missing stack-of-stacks logic for new code that came + in with lexical warnings (this fixes coredumps from + -Mdiagnostics when the warnings happens to come from within + the RE engine) + Branch: perl + ! util.c +____________________________________________________________________________ +[ 5876] By: gsar on 2000/03/22 15:02:59 + Log: missing pieces in perldelta + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5875] By: gsar on 2000/03/22 14:46:24 + Log: rename tests to more appropriate names + Branch: perl + +> t/lib/thr5005.t t/op/64bitint.t t/op/nothr5005.t + - t/lib/thread.t t/op/64bit.t t/op/nothread.t + ! MAINTAIN MANIFEST pod/perldelta.pod +____________________________________________________________________________ +[ 5874] By: jhi on 2000/03/22 14:32:57 + Log: Make the no-luck-on-uselongdouble warning more visible. + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5873] By: gsar on 2000/03/22 14:28:56 + Log: backout change#5708; fixups for behavior of recently added -a switch; + support -k and -m switches in h2xs (from Hugo van der Sanden) + Branch: perl + ! lib/ExtUtils/xsubpp utils/h2xs.PL +____________________________________________________________________________ +[ 5872] By: gsar on 2000/03/22 14:21:20 + Log: remove outdated notes in makefiles + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 5871] By: jhi on 2000/03/22 14:17:40 + Log: Disable SysV shm and msg even more. + Branch: cfgperl + ! hints/machten.sh +____________________________________________________________________________ +[ 5870] By: jhi on 2000/03/22 14:16:54 + Log: Augment #5865. + Branch: cfgperl + ! hints/unicosmk.sh +____________________________________________________________________________ +[ 5869] By: gsar on 2000/03/22 14:07:27 + Log: perlbug -ok shouldn't prompt (from Paul Moore + ) + Branch: perl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 5868] By: gsar on 2000/03/22 13:54:27 + Log: integrate cfgperl contents into mainline + Branch: perl + ! Todo-5.6 + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH hints/dec_osf.sh hints/openbsd.sh + !> hints/solaris_2.sh hints/unicosmk.sh pod/perldelta.pod + !> pod/perlport.pod win32/config_H.bc win32/config_H.gc + !> win32/config_H.vc +____________________________________________________________________________ +[ 5867] By: jhi on 2000/03/22 05:25:40 + Log: OpenBSD pthreadness fixes from Tom Christiansen. + Branch: cfgperl + ! hints/openbsd.sh +____________________________________________________________________________ +[ 5866] By: gsar on 2000/03/22 04:18:39 + Log: UMRs in universal.c (SvCUR() may not be there unless SvPOK()) + Branch: perl + ! universal.c +____________________________________________________________________________ +[ 5865] By: jhi on 2000/03/21 21:38:20 + Log: The SysV shm*() are in libc but unimplemented. + Branch: cfgperl + ! hints/unicosmk.sh +____________________________________________________________________________ +[ 5864] By: jhi on 2000/03/21 21:30:02 + Log: s/setgropus/setgroups/; # detypo in a comment + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc + Branch: metaconfig + ! U/modified/Getfile.U U/modified/d_flexfnam.U + ! U/modified/groupstype.U +____________________________________________________________________________ +[ 5863] By: jhi on 2000/03/21 20:25:40 + Log: Add supported platforms. + Branch: cfgperl + ! pod/perlport.pod +____________________________________________________________________________ +[ 5862] By: jhi on 2000/03/21 19:19:04 + Log: Integrate with Sarathy. + Branch: cfgperl + !> makedef.pl +____________________________________________________________________________ +[ 5861] By: gsar on 2000/03/21 19:07:13 + Log: add missing bincompat symbols to export list + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 5860] By: jhi on 2000/03/21 18:59:39 + Log: Disallow using too old gcc in {Tru64,Digital UNIX,DEC OSF/1}. + (Even gcc 2.95 doesn't seem to be working 100%.) + Branch: cfgperl + ! hints/dec_osf.sh pod/perldelta.pod +____________________________________________________________________________ +[ 5859] By: jhi on 2000/03/21 16:36:27 + Log: Nit for #5802 from Robin Barker. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Getfile.U +____________________________________________________________________________ +[ 5858] By: jhi on 2000/03/21 14:34:25 + Log: Be more lenient in the case libsunmath cannot be found. + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5857] By: jhi on 2000/03/21 14:14:38 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 27 files) +____________________________________________________________________________ +[ 5856] By: gsar on 2000/03/21 10:44:10 + Log: here lies RC3 + Branch: perl + ! Changes patchlevel.h pod/perlhist.pod +____________________________________________________________________________ +[ 5855] By: gsar on 2000/03/21 10:05:42 + Log: clone awareness for change#5847 + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5854] By: gsar on 2000/03/21 09:30:50 + Log: regen win32/config* + Branch: perl + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 5853] By: gsar on 2000/03/21 08:56:58 + Log: integrate cfgperl and vmsperl contents into mainline + Branch: perl + !> Configure Todo Todo-5.6 config_h.SH lib/File/Spec/VMS.pm + !> pod/perldelta.pod t/op/taint.t +____________________________________________________________________________ +[ 5852] By: gsar on 2000/03/21 06:08:20 + Log: README.mint tweaks (from Guido Flohr ) + Branch: perl + ! Changes README.mint +____________________________________________________________________________ +[ 5851] By: gsar on 2000/03/21 06:06:44 + Log: make parenthetic warnings look consistent; make diagnostic on + "use 5.6" et al mention the alternate form; pod fixups + Branch: perl + ! gv.c op.c pod/perldelta.pod pod/perldiag.pod pp_ctl.c + ! t/comp/use.t t/pragma/strict-vars t/pragma/warn/op + ! t/pragma/warn/pp_hot t/pragma/warn/pp_sys toke.c universal.c + ! util.c +____________________________________________________________________________ +[ 5850] By: gsar on 2000/03/21 04:05:00 + Log: disable unused Windows code that won't run on Windows 95 + Branch: perl + ! win32/vmem.h +____________________________________________________________________________ +[ 5849] By: gsar on 2000/03/21 03:34:39 + Log: $File::Find::name doesn't reflect top level files + correctly (from Simon Cozens ) + Branch: perl + ! lib/File/Find.pm +____________________________________________________________________________ +[ 5848] By: gsar on 2000/03/21 02:46:01 + Log: test fails when sockets not available (from Yitzchak Scott-Thoennes) + Branch: perl + ! t/lib/io_unix.t +____________________________________________________________________________ +[ 5847] By: gsar on 2000/03/21 00:09:09 + Log: under useithreads, PUSHLOOP must save PL_curpad for looking up + iterdata, since dounwind() may defer LEAVEs + Branch: perl + ! cop.h +____________________________________________________________________________ +[ 5846] By: jhi on 2000/03/20 23:54:37 + Log: Document the lib/io_multihomedt hang in 64-bit HP-Ux. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5845] By: jhi on 2000/03/20 23:45:24 + Log: detypo + Branch: cfgperl + ! t/op/taint.t +____________________________________________________________________________ +[ 5844] By: jhi on 2000/03/20 23:17:18 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/Dumpvalue.pm lib/User/pwent.pm lib/dumpvar.pl + !> lib/strict.pm op.c pod/perldata.pod pod/perldelta.pod + !> pod/perlfunc.pod pp.c t/io/pipe.t t/lib/charnames.t toke.c + !> utils/perlbug.PL +____________________________________________________________________________ +[ 5843] By: gsar on 2000/03/20 22:14:35 + Log: add note about symbolic filehandles (from Johan Vromans) + Branch: perl + ! lib/strict.pm pod/perlfunc.pod +____________________________________________________________________________ +[ 5842] By: gsar on 2000/03/20 21:59:51 + Log: perlbugtron flags in perlbug (from Richard Foley); eliminate duplicate + code + Branch: perl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 5841] By: gsar on 2000/03/20 21:06:01 + Log: more sleep needed from slow systems (from Peter Haworth) + Branch: perl + ! t/io/pipe.t +____________________________________________________________________________ +[ 5840] By: gsar on 2000/03/20 21:04:42 + Log: typo in change#5839 + Branch: perl + ! lib/Dumpvalue.pm +____________________________________________________________________________ +[ 5839] By: gsar on 2000/03/20 21:03:14 + Log: make dumpvar.pl recognize emptyness in arrays (from Matthias Urlichs + ); fix up duplicate code in Dumpvalue.pm + Branch: perl + ! lib/Dumpvalue.pm lib/dumpvar.pl +____________________________________________________________________________ +[ 5838] By: gsar on 2000/03/20 20:53:25 + Log: mention handle autovivification in perldata (from Johan Vromans) + Branch: perl + ! lib/User/pwent.pm pod/perldata.pod +____________________________________________________________________________ +[ 5837] By: gsar on 2000/03/20 20:37:42 + Log: change#5797 didn't do the right thing for "\xff\N{WHITE SMILING FACE}" + Branch: perl + ! t/lib/charnames.t toke.c +____________________________________________________________________________ +[ 5836] By: gsar on 2000/03/20 16:27:13 + Log: autovivify open($fh[0],...) properly + Branch: perl + ! op.c pp.c +____________________________________________________________________________ +[ 5835] By: gsar on 2000/03/19 18:51:24 + Log: add @x->[2] bug to known issues (from Johan Vromans) + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5834] By: jhi on 2000/03/19 18:42:35 + Log: Fix the socklen default type (from Laszlo Molnar; + though I prefer signed, not unsigned); move the cross-compialtion + wish item to Todo; drop excess permissions in taint.t. + Branch: cfgperl + ! Configure Todo Todo-5.6 config_h.SH t/op/taint.t + Branch: metaconfig + ! U/protos/socksizetype.U +____________________________________________________________________________ +[ 5833] By: jhi on 2000/03/19 18:20:42 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 42 files) +____________________________________________________________________________ +[ 5832] By: gsar on 2000/03/19 18:01:28 + Log: pwent.pm doc tweak (from Tom Christiansen) + Branch: perl + ! lib/User/pwent.pm +____________________________________________________________________________ +[ 5831] By: gsar on 2000/03/19 17:57:31 + Log: unsigned is a more reasonable socksizetype default (from + Laszlo ) + Branch: perl + ! Configure +____________________________________________________________________________ +[ 5830] By: gsar on 2000/03/19 17:40:20 + Log: taint.t shouldn't fail where IPC::SysV unavailable + Branch: perl + ! t/op/taint.t +____________________________________________________________________________ +[ 5829] By: gsar on 2000/03/19 17:19:46 + Log: update Changes + Branch: perl + ! Changes embed.h +____________________________________________________________________________ +[ 5828] By: gsar on 2000/03/19 16:47:14 + Log: squelch known scalar leak due to compile failure + Branch: perl + ! t/pragma/strict-vars +____________________________________________________________________________ +[ 5827] By: gsar on 2000/03/19 09:20:22 + Log: mention how to look up perllocal.pod (from Michael G Schwern) + Branch: perl + ! pod/perlapi.pod pod/perlmodinstall.pod pod/perlmodlib.pod +____________________________________________________________________________ +[ 5826] By: gsar on 2000/03/19 08:49:27 + Log: mention need to wait for children (from Russ Allbery) + Branch: perl + ! lib/IPC/Open2.pm lib/IPC/Open3.pm pod/perldelta.pod +____________________________________________________________________________ +[ 5825] By: gsar on 2000/03/19 08:47:52 + Log: Pod::Man should strip leading lib/ for module manpages (from + Russ Allbery) + Branch: perl + ! lib/Pod/Man.pm +____________________________________________________________________________ +[ 5824] By: gsar on 2000/03/19 08:17:49 + Log: User::pwent fixups for additional fields (from Tom Christiansen); + fix bug in pw_has(); tolerate absense of pw{change,age,quota} + and pw{comment,class} (Debian 2.1 doesn't have either of these) + Branch: perl + ! lib/User/pwent.pm +____________________________________________________________________________ +[ 5823] By: gsar on 2000/03/19 07:41:46 + Log: pod typo fixes (from Marcel Grunauer ) + Branch: perl + ! embed.pl embedvar.h hints/linux.sh pod/perlhack.pod + ! pod/perlnumber.pod pod/perlthrtut.pod vms/ext/Stdio/Stdio.pm +____________________________________________________________________________ +[ 5822] By: gsar on 2000/03/19 07:34:29 + Log: integrate cfgperl contents into mainline + Branch: perl + ! ext/Thread/Thread.pm pod/perlthrtut.pod + !> (integrate 41 files) +____________________________________________________________________________ +[ 5821] By: gsar on 2000/03/19 07:14:38 + Log: remove dead code + Branch: perl + ! lib/charnames.pm +____________________________________________________________________________ +[ 5820] By: gsar on 2000/03/19 07:13:01 + Log: fix typo + Branch: perl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 5819] By: gsar on 2000/03/19 07:09:32 + Log: produce better error message when \N{...} is used without + "use charnames ..." + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod toke.c +____________________________________________________________________________ +[ 5818] By: gsar on 2000/03/19 06:30:11 + Log: default warnLevel and dieLevel to 0 in debugger (from Tom + Christiansen); make dumpvar.pl safe against non-glob entries + in stashes + Branch: perl + ! lib/Dumpvalue.pm lib/dumpvar.pl lib/perl5db.pl + ! pod/perldebug.pod +____________________________________________________________________________ +[ 5817] By: gsar on 2000/03/19 06:18:24 + Log: better notes on s///ee (from Simon Cozens ) + Branch: perl + ! pod/perlop.pod +____________________________________________________________________________ +[ 5816] By: gsar on 2000/03/19 05:55:52 + Log: support for C; move VMSISH_EXIT out of + op_private (from Charles Lane ) + Branch: perl + ! embed.pl op.c op.h opcode.h opcode.pl perl.h pp.sym pp_ctl.c + ! pp_proto.h vms/ext/vmsish.pm vms/ext/vmsish.t vms/vmsish.h +____________________________________________________________________________ +[ 5815] By: gsar on 2000/03/19 05:27:31 + Log: fix sort optimizer to not hang inside loops + Branch: perl + ! op.c t/op/sort.t +____________________________________________________________________________ +[ 5814] By: gsar on 2000/03/19 03:59:29 + Log: fixes for alias handling in debugger (from Tom Christiansen) + Branch: perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 5813] By: gsar on 2000/03/19 03:38:10 + Log: warn about CHECK and INIT blocks encountered at run time + Branch: perl + ! op.c pod/perldelta.pod pod/perldiag.pod t/pragma/warn/op +____________________________________________________________________________ +[ 5812] By: jhi on 2000/03/19 03:15:58 + Log: Taint msgrcv() messages; general SysV IPC cleanup. + Branch: cfgperl + ! doio.c ext/IPC/SysV/Msg.pm pod/perldelta.pod pod/perlfunc.pod + ! pod/perlipc.pod pod/perlsec.pod t/lib/ipc_sysv.t t/op/taint.t +____________________________________________________________________________ +[ 5811] By: jhi on 2000/03/19 01:48:47 + Log: Taint shmread(). + Branch: cfgperl + ! doio.c pod/perldelta.pod pod/perlfunc.pod pod/perlsec.pod + ! t/op/taint.t +____________________________________________________________________________ +[ 5810] By: jhi on 2000/03/19 01:22:47 + Log: Taint also the passwd field of the getpw*(). + Branch: cfgperl + ! pod/perldelta.pod pod/perlfunc.pod pod/perlsec.pod pp_sys.c + ! t/op/taint.t +____________________________________________________________________________ +[ 5809] By: jhi on 2000/03/18 21:44:34 + Log: Integrate with Sarathy. + Branch: cfgperl + !> t/pragma/strict-vars toke.c +____________________________________________________________________________ +[ 5808] By: jhi on 2000/03/18 21:40:55 + Log: (Re-)introduce $uidsign and $gidsign. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH epoc/config.sh pp_sys.c vms/subconfigure.com + ! vos/config.def vos/config.h vos/config_h.SH_orig + ! win32/config.bc win32/config.gc win32/config.vc + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/config_h.PL win32/config_sh.PL + Branch: metaconfig + ! U/modified/groupstype.U U/typedefs/gidtype.U +____________________________________________________________________________ +[ 5807] By: jhi on 2000/03/18 20:38:12 + Log: The #5805 requires a test change, too. + Branch: cfgperl + ! t/op/taint.t +____________________________________________________________________________ +[ 5806] By: gsar on 2000/03/18 20:10:29 + Log: queued errors may not be displayed after the PL_error_count limit + Branch: perl + ! t/pragma/strict-vars toke.c +____________________________________________________________________________ +[ 5805] By: jhi on 2000/03/18 19:56:12 + Log: Taint the shell from the getpw*. + Branch: cfgperl + ! pod/perldelta.pod pod/perlfunc.pod pod/perlsec.pod pp_sys.c +____________________________________________________________________________ +[ 5804] By: jhi on 2000/03/18 19:37:01 + Log: Use the newSVuv(). + Branch: cfgperl + ! embed.h op.c pp_sys.c toke.c +____________________________________________________________________________ +[ 5803] By: jhi on 2000/03/18 19:08:40 + Log: Add newSVuv(). + Branch: cfgperl + ! Configure embed.pl global.sym objXSUB.h perlapi.c perlapi.h + ! pod/perlapi.pod proto.h sv.c +____________________________________________________________________________ +[ 5802] By: jhi on 2000/03/18 17:11:07 + Log: Configure nits: rewording from Sarathy (aka #5796), + and installation directories patch from Robin Parker. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH vos/config.h vos/config_h.SH_orig + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + Branch: metaconfig + ! U/modified/Getfile.U + Branch: metaconfig/U/perl + ! bincompat5005.U +____________________________________________________________________________ +[ 5801] By: jhi on 2000/03/18 16:41:31 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes Configure hints/dos_djgpp.sh lib/ExtUtils/xsubpp + !> lib/Getopt/Long.pm mg.c pod/perlpod.pod pp_hot.c + !> t/lib/charnames.t t/pragma/utf8.t toke.c +____________________________________________________________________________ +[ 5800] By: gsar on 2000/03/18 05:16:32 + Log: force i_ieeefp=undef on dos_djgpp (it reportedly causes failures + in system includes) + Branch: perl + ! hints/dos_djgpp.sh +____________________________________________________________________________ +[ 5799] By: gsar on 2000/03/18 05:12:00 + Log: Getopt::Long 2.23 update (from Johan Vromans) + Branch: perl + ! Changes lib/Getopt/Long.pm +____________________________________________________________________________ +[ 5798] By: gsar on 2000/03/18 05:03:20 + Log: recognize single-line declarations in xsubpp; add switches to + disable newfangled features (from Ilya Zakharevich) + Branch: perl + ! lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 5797] By: gsar on 2000/03/18 04:21:43 + Log: make "\N{...}" enable utf8-ness correctly + Branch: perl + ! t/lib/charnames.t toke.c +____________________________________________________________________________ +[ 5796] By: gsar on 2000/03/18 04:03:08 + Log: avoid mentioning Perl version in Configure question + Branch: perl + ! Configure +____________________________________________________________________________ +[ 5795] By: gsar on 2000/03/18 03:32:31 + Log: better explanation of C<> tags (from Wolfgang Laun) + Branch: perl + ! pod/perlpod.pod +____________________________________________________________________________ +[ 5794] By: gsar on 2000/03/18 03:26:57 + Log: make return values from match in a list context, as well as $& et + al propagate utf8-ness (from Graham Barr) + Branch: perl + ! mg.c pp_hot.c t/pragma/utf8.t +____________________________________________________________________________ +[ 5793] By: jhi on 2000/03/18 01:45:30 + Log: Integrate with Sarathy. + Branch: cfgperl + !> hints/powerux.sh xsutils.c +____________________________________________________________________________ +[ 5792] By: gsar on 2000/03/18 01:08:25 + Log: hints fixups for PowerMAX (from Tom Horsley) + Branch: perl + ! hints/powerux.sh +____________________________________________________________________________ +[ 5791] By: gsar on 2000/03/17 23:53:21 + Log: make reftype() consistently croak on non-refs + Branch: perl + ! xsutils.c +____________________________________________________________________________ +[ 5790] By: jhi on 2000/03/17 23:41:36 + Log: Integrate with Sarathy. + Branch: cfgperl + !> configpm ext/Thread/Thread/Queue.pm + !> ext/Thread/Thread/Semaphore.pm ext/Thread/Thread/Specific.pm + !> lib/Pod/Find.pm lib/perl5db.pl perl.c pod/perldata.pod +____________________________________________________________________________ +[ 5789] By: gsar on 2000/03/17 22:37:21 + Log: fix coredump when upgrading PL_sv_yes in a second call to + perl_construct() (from Doug MacEachern) + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5788] By: gsar on 2000/03/17 22:32:25 + Log: make noTTY debugger option work again (from Paul Marquess) + Branch: perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 5787] By: gsar on 2000/03/17 17:00:05 + Log: make Config.pm report sane errors with older perls + Branch: perl + ! configpm +____________________________________________________________________________ +[ 5786] By: gsar on 2000/03/17 16:48:20 + Log: syntax errors in Thread::* (from Tom Christiansen) + Branch: perl + ! ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm + ! ext/Thread/Thread/Specific.pm +____________________________________________________________________________ +[ 5785] By: gsar on 2000/03/17 16:45:34 + Log: tweak perldata section on v-strings + Branch: perl + ! pod/perldata.pod +____________________________________________________________________________ +[ 5784] By: gsar on 2000/03/17 16:24:28 + Log: missing file in change#5781 + Branch: perl + ! lib/Pod/Find.pm +____________________________________________________________________________ +[ 5783] By: jhi on 2000/03/17 14:38:29 + Log: Add the NEXTSTEP strftime %j bug to Known Problems. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5782] By: jhi on 2000/03/17 14:29:46 + Log: Integrate with Sarathy. + Branch: cfgperl + !> embed.pl ext/B/B/Bblock.pm global.sym lib/File/Spec/Unix.pm + !> lib/open.pm objXSUB.h op.c perlapi.c pod/perlcompile.pod + !> pod/perldebug.pod sv.c t/comp/cpp.aux t/pod/testpchk.pl +____________________________________________________________________________ +[ 5781] By: gsar on 2000/03/17 06:19:17 + Log: PodParser v1.13 update (from Brad Appleton) + Branch: perl + ! t/pod/testpchk.pl +____________________________________________________________________________ +[ 5780] By: gsar on 2000/03/17 05:42:45 + Log: propagate CvFLAGS() into clones + Branch: perl + ! op.c +____________________________________________________________________________ +[ 5779] By: gsar on 2000/03/17 04:58:39 + Log: documentation fixes from p5p + Branch: perl + ! ext/B/B/Bblock.pm lib/File/Spec/Unix.pm pod/perlcompile.pod + ! pod/perldebug.pod +____________________________________________________________________________ +[ 5778] By: bailey on 2000/03/17 04:23:35 + Log: Quick pre-release fixes: clean up results in File::Spec::VMS and + switch dir test order in taint.t to accomodate DECCRTL extension. + Branch: vmsperl + ! lib/File/Spec/VMS.pm t/op/taint.t +____________________________________________________________________________ +[ 5777] By: gsar on 2000/03/17 04:13:27 + Log: make attributes::reftype(*FOO{IO}) return "IO" instead of "UNKNOWN" + (from Tom Christiansen) + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5776] By: jhi on 2000/03/17 03:40:18 + Log: More Todo. + Branch: cfgperl + ! Todo Todo-5.6 +____________________________________________________________________________ +[ 5775] By: gsar on 2000/03/17 03:40:14 + Log: s/:def/:DEFAULT/ + Branch: perl + ! lib/open.pm +____________________________________________________________________________ +[ 5774] By: gsar on 2000/03/17 03:39:07 + Log: export cv_undef() and cv_const_sv() (mod_perl uses them to + good advantage) + Branch: perl + ! embed.pl global.sym objXSUB.h perlapi.c +____________________________________________________________________________ +[ 5773] By: gsar on 2000/03/17 03:12:34 + Log: remove non-ANSI parts in comp/cpp.t + Branch: perl + ! t/comp/cpp.aux +____________________________________________________________________________ +[ 5772] By: jhi on 2000/03/17 03:11:49 + Log: Integrate with Sarathy. + Branch: cfgperl + !> configure.com embed.h embed.pl lib/CGI.pm + !> lib/ExtUtils/Mksymlists.pm lib/Pod/Man.pm perl.h + !> pod/pod2man.PL pod/pod2text.PL pp_sys.c vms/ext/vmsish.pm + !> vms/ext/vmsish.t vms/subconfigure.com vms/test.com + !> vms/vmsish.h +____________________________________________________________________________ +[ 5771] By: jhi on 2000/03/17 03:10:34 + Log: Make the test easier to use. + Branch: cfgperl + ! t/op/sysio.t +____________________________________________________________________________ +[ 5770] By: gsar on 2000/03/17 03:04:33 + Log: pod{man,text} updates from podlators-1.00 (from Russ Allbery) + Branch: perl + ! lib/Pod/Man.pm pod/pod2man.PL pod/pod2text.PL +____________________________________________________________________________ +[ 5769] By: gsar on 2000/03/17 02:53:39 + Log: integrate vmsperl contents into mainline (no actual changes, since + cfgperl already had them all) + Branch: perl + !> configure.com lib/CGI.pm lib/ExtUtils/Mksymlists.pm perl.h + !> vms/ext/vmsish.pm vms/ext/vmsish.t vms/subconfigure.com + !> vms/test.com vms/vmsish.h +____________________________________________________________________________ +[ 5768] By: gsar on 2000/03/17 02:48:14 + Log: fix signedness in test for syswrite() length argument + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 5767] By: gsar on 2000/03/17 02:38:51 + Log: integrate cfgperl contents into mainline + Branch: perl + !> (integrate 28 files) +____________________________________________________________________________ +[ 5766] By: jhi on 2000/03/17 02:29:24 + Log: Add "Known Problems" section. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5765] By: gsar on 2000/03/17 00:31:19 + Log: add missing bincompat5005 #defines + Branch: perl + ! embed.h embed.pl +____________________________________________________________________________ +[ 5764] By: jhi on 2000/03/16 15:32:52 + Log: pp_send() type tuning continues. + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 5763] By: jhi on 2000/03/16 04:09:37 + Log: Integrate with Sarathy. + Branch: cfgperl + !> embed.pl global.sym objXSUB.h perl.c perlapi.c + !> win32/perlhost.h win32/perllib.c win32/win32.h +____________________________________________________________________________ +[ 5762] By: jhi on 2000/03/16 04:06:36 + Log: VMS patches from Dan Sugalski and Charles Bailey + Branch: cfgperl + ! configure.com ext/File/Glob/Glob.pm lib/CGI.pm + ! lib/ExtUtils/Mksymlists.pm vms/subconfigure.com +____________________________________________________________________________ +[ 5761] By: gsar on 2000/03/16 03:18:41 + Log: due to an oversight during PERL_OBJECT migration, hosts created + by pseudo-fork were never being deleted, leading to a sizeable + memory leak; std FDs in pseudo-children are now closed + automatically to avoid resource leaks; basic infinite looping + fork() test works without leaking again in non-PERL_OBJECT + build + Branch: perl + ! embed.pl global.sym objXSUB.h perl.c perlapi.c + ! win32/perlhost.h win32/perllib.c win32/win32.h +____________________________________________________________________________ +[ 5760] By: jhi on 2000/03/16 01:50:13 + Log: Fix pp_send() sizes (pass a Size_t, not an Off_t, and + return a SSize_t, not an Off_t); add a note about a slightly + similar situation in pp_truncate(); introduce $sizesize + for Configure; update EPOC, VOS, Win32, and VMS for the + sizesize; minor updates on the EPOC config file; reword + socklen_t message slightly; fix fpossize (though unused currently) + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH epoc/config.sh pp_sys.c vms/subconfigure.com + ! vos/config.def vos/config.h win32/config.bc win32/config.gc + ! win32/config.vc win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc win32/config_h.PL win32/config_sh.PL + Branch: metaconfig/U/perl + ! d_socklen_t.U fpossize.U +____________________________________________________________________________ +[ 5759] By: jhi on 2000/03/15 23:47:11 + Log: Integrate with Sarathy. + Branch: cfgperl + !> makedef.pl +____________________________________________________________________________ +[ 5758] By: jhi on 2000/03/15 23:46:17 + Log: Retract #5767; replace it with a tested patch + from Anton Berezin. + Branch: cfgperl + ! hints/freebsd.sh +____________________________________________________________________________ +[ 5757] By: jhi on 2000/03/15 23:36:53 + Log: Configure nits: do not use /tmp to avoid potential security + problems (Andy Dougherty: this does not fix the rampant + use of /tmp by the various utilities like C compilers, though. + Just don't run Configure as root if you care about security.), + fix man3dir bug (both from Andy Dougherty); fix hints files + not to use /tmp; retract #4993 (the description of the *symbols + variables is okay, after all); regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH hints/dec_osf.sh hints/esix4.sh hints/newsos4.sh + Branch: metaconfig + + U/modified/d_flexfnam.U + ! U/installdirs/man3dir.U +____________________________________________________________________________ +[ 5756] By: jhi on 2000/03/15 22:20:06 + Log: cater for FreeBSD 5.* + Branch: cfgperl + ! hints/freebsd.sh +____________________________________________________________________________ +[ 5755] By: jhi on 2000/03/15 22:00:57 + Log: Add missing Windows O_ constants. + Branch: cfgperl + ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs +____________________________________________________________________________ +[ 5754] By: gsar on 2000/03/15 19:56:37 + Log: add PL_thr_key to export list under useithreads + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 5753] By: jhi on 2000/03/15 04:19:19 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 37 files) +____________________________________________________________________________ +[ 5752] By: bailey on 2000/03/15 03:45:28 + Log: Make DEBUGGING a configurable option + Branch: vmsperl + ! configure.com +____________________________________________________________________________ +[ 5751] By: bailey on 2000/03/15 03:38:57 + Log: Remove obsolete DCL symbol from subconfigure.com + Branch: vmsperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 5750] By: bailey on 2000/03/15 03:29:17 + Log: Add VMS' default to the CGI.pm temp list (should update to File::Spec) + Branch: vmsperl + ! lib/CGI.pm + !> ext/File/Glob/Glob.pm +____________________________________________________________________________ +[ 5749] By: bailey on 2000/03/15 02:05:28 + Log: Change test using obsolete %COnfig element + Branch: vmsperl + ! lib/ExtUtils/Mksymlists.pm +____________________________________________________________________________ +[ 5748] By: gsar on 2000/03/14 23:39:42 + Log: update local_patches entry for RC2 + Branch: perl + ! Changes patchlevel.h pod/perlhist.pod +____________________________________________________________________________ +[ 5747] By: gsar on 2000/03/14 22:44:27 + Log: more warnings tidy-ups (from Paul Marquess) + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod pod/perlfaq4.pod + ! t/lib/attrs.t utils/h2xs.PL +____________________________________________________________________________ +[ 5746] By: gsar on 2000/03/14 22:30:43 + Log: Sys::Syslog fix for accidental arguments to autoloaded constants + Branch: perl + ! ext/Sys/Syslog/Syslog.pm ext/Sys/Syslog/Syslog.xs +____________________________________________________________________________ +[ 5745] By: gsar on 2000/03/14 22:20:27 + Log: tweak to use SIZE_ONLY + Branch: perl + ! regcomp.c +____________________________________________________________________________ +[ 5744] By: gsar on 2000/03/14 21:56:48 + Log: regen win32/config* + Branch: perl + ! win32/Makefile win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc win32/makefile.mk +____________________________________________________________________________ +[ 5743] By: gsar on 2000/03/14 21:46:25 + Log: change#5729 had syntax errors + Branch: perl + ! t/lib/complex.t +____________________________________________________________________________ +[ 5742] By: gsar on 2000/03/14 21:26:33 + Log: integrate vmsperl changes into mainline (change#5693 denied) + Branch: perl + !> configure.com lib/File/Spec/VMS.pm t/lib/complex.t + !> t/lib/filespec.t vms/ext/filespec.t vms/subconfigure.com + !> vms/vms.c +____________________________________________________________________________ +[ 5741] By: gsar on 2000/03/14 21:17:34 + Log: update Changes; integrate cfgperl contents into mainline + Branch: perl + ! Changes + !> ext/Socket/Socket.xs patchlevel.h perl.h t/lib/complex.t +____________________________________________________________________________ +[ 5740] By: gsar on 2000/03/14 20:57:12 + Log: perlfaq4 tweak (from Damian Conway ) + Branch: perl + ! pod/perlfaq4.pod +____________________________________________________________________________ +[ 5739] By: gsar on 2000/03/14 20:53:07 + Log: allow alternates to negate correctly (from Johan Vromans) + Branch: perl + ! lib/Getopt/Long.pm +____________________________________________________________________________ +[ 5738] By: gsar on 2000/03/14 20:34:19 + Log: kludge our way around warnings on C + Branch: perl + ! ext/IO/lib/IO/Seekable.pm +____________________________________________________________________________ +[ 5737] By: gsar on 2000/03/14 20:06:23 + Log: protect special characters better against interpretation by *roff + (from Russ Allbery) + Branch: perl + ! lib/Pod/Man.pm +____________________________________________________________________________ +[ 5736] By: gsar on 2000/03/14 19:47:00 + Log: provide an explicit base address for perl56.dll to avoid relocations; + increase the default stack size (RE engine can use a lot more stack + than the 1MB default limit); default to using the regular version of + the MSVCRT even for DEBUGGING builds (this allows extensions to be + selectively built with debugging) + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 5735] By: gsar on 2000/03/14 19:31:53 + Log: regen perltoc, other pod nits + Branch: perl + ! ext/IO/poll.c pod/Makefile pod/buildtoc pod/perlnumber.pod + ! pod/perltoc.pod pod/roffitall +____________________________________________________________________________ +[ 5734] By: gsar on 2000/03/14 19:08:22 + Log: avoid dup warning (from Simon Cozens) + Branch: perl + ! regcomp.c +____________________________________________________________________________ +[ 5733] By: gsar on 2000/03/14 18:46:50 + Log: allow usemymalloc to be overridden via -Uusemymalloc + Branch: perl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5732] By: gsar on 2000/03/14 17:23:47 + Log: test case for change#5700 (from M. J. T. Guy) + Branch: perl + ! t/op/universal.t +____________________________________________________________________________ +[ 5731] By: gsar on 2000/03/14 17:15:44 + Log: revise README.win32 for currentness, point to function + list in perlport.pod (from a patch suggested by Dominic Dunlop) + Branch: perl + ! README.win32 pod/perlport.pod +____________________________________________________________________________ +[ 5730] By: gsar on 2000/03/14 17:14:21 + Log: tweak sort() notes (from Nathan Torkington) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5729] By: jhi on 2000/03/14 15:13:13 + Log: Make the tests 1018 and 1019 more robust. + Branch: cfgperl + ! t/lib/complex.t +____________________________________________________________________________ +[ 5728] By: jhi on 2000/03/14 15:07:48 + Log: Fix for one of the problems in RC1 reported by M. E. O'Neill + in NEXTSTEP 3.3p2. + Branch: cfgperl + ! ext/Socket/Socket.xs +____________________________________________________________________________ +[ 5727] By: jhi on 2000/03/14 14:57:04 + Log: Integrate with Sarathy; unapply the #5539 that snekt in + with #5539. + Branch: cfgperl + +> pod/perldebguts.pod + ! patchlevel.h perl.h + !> MANIFEST lib/Text/Abbrev.pm lib/perl5db.pl pod/perl.pod + !> pod/perldebug.pod pod/perldelta.pod pod/perlnumber.pod + !> t/lib/io_sock.t utils/perlcc.PL utils/perldoc.PL + !> win32/makefile.mk +____________________________________________________________________________ +[ 5726] By: gsar on 2000/03/14 07:43:37 + Log: fixes for Borland compiler (from Vadim Konovalov + ) + Branch: perl + ! utils/perlcc.PL win32/makefile.mk +____________________________________________________________________________ +[ 5725] By: gsar on 2000/03/14 07:38:00 + Log: more efficient Text::Abbrev (from M.E. O'Neill ) + Branch: perl + ! lib/Text/Abbrev.pm +____________________________________________________________________________ +[ 5724] By: gsar on 2000/03/14 05:59:02 + Log: integrate cfgperl changes into mainline, ignoring the + __attribute__((unused)) stuff that seems to have snuck + back in + Branch: perl + !> Todo-5.6 patchlevel.h perl.h pod/perl.pod pod/perlport.pod + !> vms/perlvms.pod +____________________________________________________________________________ +[ 5723] By: gsar on 2000/03/14 05:49:08 + Log: patches for many bugs in the debugger; documentation updates for + perldelta; split perldebug.pod into perldeb{ug,guts}.pod (from + Tom Christiansen) + Branch: perl + + pod/perldebguts.pod + ! MANIFEST lib/perl5db.pl pod/perl.pod pod/perldebug.pod + ! pod/perldelta.pod pod/perlnumber.pod pod/perlport.pod +____________________________________________________________________________ +[ 5722] By: gsar on 2000/03/14 05:37:29 + Log: add sleep() to avoid race on NeXT (from M.E. O'Neill + ) + Branch: perl + ! t/lib/io_sock.t +____________________________________________________________________________ +[ 5721] By: gsar on 2000/03/14 03:53:50 + Log: support a -U option when run as root to drop privileges (from + Tom Christiansen) + Branch: perl + ! utils/perldoc.PL +____________________________________________________________________________ +[ 5720] By: jhi on 2000/03/14 03:43:51 + Log: move the big AVAILABILITY list to perlport as Supported Platforms + (Tom Christiansen); add few more platforms + Branch: cfgperl + ! pod/perl.pod pod/perlport.pod +____________________________________________________________________________ +[ 5719] By: jhi on 2000/03/14 02:44:55 + Log: more todo + Branch: cfgperl + ! Todo-5.6 +____________________________________________________________________________ +[ 5718] By: jhi on 2000/03/14 02:17:16 + Log: detypo + Branch: cfgperl + ! vms/perlvms.pod +____________________________________________________________________________ +[ 5717] By: jhi on 2000/03/14 02:00:24 + Log: Integrate with Sarathy. + Branch: cfgperl + ! patchlevel.h perl.h + !> (integrate 60 files) +____________________________________________________________________________ +[ 5716] By: gsar on 2000/03/14 00:01:39 + Log: reference miscount in Devel::Peek that causes debugger to + crash unceremoniously when doing "V DB" etc., repeatedly + Branch: perl + ! ext/Devel/Peek/Peek.xs +____________________________________________________________________________ +[ 5715] By: gsar on 2000/03/13 21:40:23 + Log: fixes for broken L<> links (from Wolfgang Laun + ) + Branch: perl + ! pod/Win32.pod pod/perlcall.pod pod/perlcompile.pod + ! pod/perldata.pod pod/perlfaq7.pod pod/perlfunc.pod + ! pod/perlguts.pod pod/perllocale.pod pod/perlnumber.pod + ! pod/perlop.pod pod/perlxstut.pod vms/perlvms.pod +____________________________________________________________________________ +[ 5714] By: gsar on 2000/03/13 21:37:48 + Log: typos in perlboot.pod (from Randal L. Schwartz ) + Branch: perl + ! pod/perlboot.pod +____________________________________________________________________________ +[ 5713] By: gsar on 2000/03/13 21:36:24 + Log: avoid infinite loop in h2xs (from Hugo van der Sanden) + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 5712] By: gsar on 2000/03/13 21:29:15 + Log: lexical warnings update for docs and tests (from Paul Marquess) + Branch: perl + ! ext/File/Glob/Glob.pm lib/fields.pm pod/perl.pod + ! pod/perldata.pod pod/perldbmfilter.pod pod/perlfaq3.pod + ! pod/perlfaq4.pod pod/perlfaq7.pod pod/perlfilter.pod + ! pod/perlipc.pod pod/perlmod.pod pod/perlmodlib.pod + ! pod/perlop.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod + ! pod/perlstyle.pod pod/perlsyn.pod pod/perltie.pod + ! pod/perltrap.pod pod/perlunicode.pod pod/perlxstut.pod + ! t/io/open.t t/lib/fields.t t/lib/parsewords.t + ! t/op/assignwarn.t t/op/gv.t t/op/hashwarn.t t/op/magic.t + ! t/op/pack.t t/op/pat.t t/op/sort.t t/op/sprintf.t + ! t/pragma/constant.t t/pragma/locale.t +____________________________________________________________________________ +[ 5711] By: gsar on 2000/03/13 21:08:29 + Log: updates from PodParser v1.12 on CPAN (from Brad Appleton) + Branch: perl + ! lib/Pod/Checker.pm lib/Pod/Find.pm lib/Pod/InputObjects.pm + ! lib/Pod/ParseUtils.pm lib/Pod/Parser.pm lib/Pod/Select.pm + ! lib/Pod/Usage.pm t/pod/poderrs.xr t/pod/testp2pt.pl + ! t/pod/testpchk.pl +____________________________________________________________________________ +[ 5710] By: gsar on 2000/03/13 20:46:37 + Log: cleaner logic in op.c, also avoids QNX optimizer bug (from Norton + Allen ) + Branch: perl + ! op.c +____________________________________________________________________________ +[ 5709] By: gsar on 2000/03/13 20:43:30 + Log: mention changes to diagnostics + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5708] By: gsar on 2000/03/13 20:34:38 + Log: ignore const for the purposes of typemaps (from Hugo van der Sanden) + Branch: perl + ! lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 5707] By: gsar on 2000/03/13 20:23:24 + Log: don't check for errno after Atof() (atof() doesn't set errno, and + where Atof() is actually strto[l]d(), some platforms seem to want + to set errno randomly) + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 5706] By: gsar on 2000/03/13 18:14:18 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure config_h.SH hints/hpux.sh hints/solaris_2.sh mg.c + !> perl.h pod/perl.pod pp.c +____________________________________________________________________________ +[ 5705] By: jhi on 2000/03/13 14:44:11 + Log: STRLEN != int. + Branch: cfgperl + ! mg.c +____________________________________________________________________________ +[ 5704] By: jhi on 2000/03/13 13:18:07 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/warnings/register.pm + !> (integrate 42 files) +____________________________________________________________________________ +[ 5703] By: gsar on 2000/03/13 12:40:51 + Log: mention autoflush portability caveat + Branch: perl + ! pod/perlfunc.pod pod/perlop.pod pod/perlport.pod +____________________________________________________________________________ +[ 5702] By: gsar on 2000/03/13 11:09:05 + Log: final touches for lexical warnings (from Paul Marquess) + Branch: perl + + lib/warnings/register.pm + ! MANIFEST ext/IO/lib/IO/Select.pm ext/Socket/Socket.pm + ! lib/Class/Struct.pm lib/I18N/Collate.pm lib/Tie/Handle.pm + ! lib/Tie/Hash.pm lib/Tie/Scalar.pm lib/constant.pm + ! lib/syslog.pl lib/vars.pm lib/warnings.pm mg.c perl.c + ! pod/perllexwarn.pod pp_ctl.c t/lib/filepath.t t/lib/io_sel.t + ! t/lib/socket.t t/lib/tie-stdhandle.t t/op/tie.t + ! t/pragma/constant.t t/pragma/diagnostics.t t/pragma/warn/2use + ! t/pragma/warn/9enabled warnings.h warnings.pl +____________________________________________________________________________ +[ 5701] By: gsar on 2000/03/13 11:00:00 + Log: avoid compiler warnings + Branch: perl + ! pp_hot.c +____________________________________________________________________________ +[ 5700] By: gsar on 2000/03/13 09:57:59 + Log: make the is_utf8_*() safe for use on invalid utf8 (they now + return false on such input instead of emitting warnings) + Branch: perl + ! embed.h embed.pl global.sym gv.c objXSUB.h perlapi.c + ! pod/perlapi.pod proto.h universal.c utf8.c +____________________________________________________________________________ +[ 5699] By: gsar on 2000/03/13 06:59:57 + Log: the premature FREETMPS calls in change#1187 weren't defensive enough + Branch: perl + ! pp_ctl.c pp_hot.c t/op/recurse.t +____________________________________________________________________________ +[ 5698] By: jhi on 2000/03/13 05:03:37 + Log: hints nibbling continues + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5697] By: jhi on 2000/03/13 04:45:57 + Log: there's no end to tweaking + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5696] By: jhi on 2000/03/13 04:26:15 + Log: hints tweak + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5695] By: bailey on 2000/03/13 03:54:09 + Log: Trim out leftover hunk from prior resolve conflict + Branch: vmsperl + ! lib/File/Spec/VMS.pm +____________________________________________________________________________ +[ 5694] By: bailey on 2000/03/13 03:20:20 + Log: Assorted configuration cleanups (Peter Prymmer, and a + bit from Charles Bailey and Dan Sugalski) + Branch: vmsperl + ! configure.com vms/subconfigure.com +____________________________________________________________________________ +[ 5693] By: bailey on 2000/03/13 03:00:16 + Log: Add vmsish 'hushed' option to suppress error messages at exit + Branch: vmsperl + ! perl.h vms/ext/vmsish.pm vms/ext/vmsish.t vms/test.com + ! vms/vmsish.h +____________________________________________________________________________ +[ 5692] By: bailey on 2000/03/13 02:50:10 + Log: Fix inverted test conditions for secure lnm translation + and default file types. (Dan Sugalski) + Branch: vmsperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 5691] By: bailey on 2000/03/13 02:41:36 + Log: Insulate tests of default display_format from different precision + on different machines by truncating at 1 digit less than the most + common choice (.15g) + Branch: vmsperl + ! t/lib/complex.t +____________________________________________________________________________ +[ 5690] By: bailey on 2000/03/13 02:31:44 + Log: Resync with mainline post RC1 + Branch: vmsperl + +> lib/Pod/Plainer.pm + !> (integrate 137 files) +____________________________________________________________________________ +[ 5689] By: bailey on 2000/03/13 02:22:24 + Log: Update File::Spec::VMS and tests + Since reduce_ricochet has been removed from File::Spec, + revert changes to VMS::Filespec::vmsify made to accomodate it. + Branch: vmsperl + ! lib/File/Spec/VMS.pm t/lib/filespec.t vms/ext/filespec.t + ! vms/vms.c +____________________________________________________________________________ +[ 5688] By: bailey on 2000/03/13 02:12:11 + Log: Basic 5.6.0 RC1 build patches for VMS + Branch: vmsperl + ! configure.com t/pragma/warn/doio t/pragma/warn/util + ! vms/subconfigure.com +____________________________________________________________________________ +[ 5687] By: jhi on 2000/03/13 00:41:51 + Log: Solaris long double fixes from Alan Burlison. + Branch: cfgperl + ! hints/solaris_2.sh perl.h pp.c +____________________________________________________________________________ +[ 5686] By: jhi on 2000/03/13 00:17:13 + Log: Integrate with Sarathy. + Branch: cfgperl + !> dump.c hints/hpux.sh op.c pod/perldelta.pod t/op/misc.t +____________________________________________________________________________ +[ 5685] By: jhi on 2000/03/13 00:13:17 + Log: Retract #5680, it broke more than it helped. + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5684] By: gsar on 2000/03/12 21:48:44 + Log: set optimize=-O only if not already set + Branch: perl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5683] By: gsar on 2000/03/12 20:11:45 + Log: another optimized-OP_SASSIGN bug: ops that were not OA_TARGLEX + were being mistakenly subverted anyway + Branch: perl + ! dump.c op.c pod/perldelta.pod t/op/misc.t +____________________________________________________________________________ +[ 5682] By: jhi on 2000/03/12 18:11:52 + Log: update AVAILABILITY for LynxOS + Branch: cfgperl + ! pod/perl.pod +____________________________________________________________________________ +[ 5681] By: jhi on 2000/03/12 18:03:46 + Log: 64-bitness hints tweaks + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5680] By: jhi on 2000/03/12 17:49:25 + Log: 64-bitness tweak: separate 64bitint and 64bitall. + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5679] By: jhi on 2000/03/12 17:43:09 + Log: metaconfig-ify #5676. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! fflushall.U +____________________________________________________________________________ +[ 5678] By: jhi on 2000/03/12 17:37:14 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes Configure Todo lib/File/DosGlob.pm +____________________________________________________________________________ +[ 5677] By: gsar on 2000/03/12 11:35:10 + Log: integrate cfgperl changes into mainline + Branch: perl + ! Changes Todo + !> Todo-5.6 perl.h pod/perldelta.pod +____________________________________________________________________________ +[ 5676] By: gsar on 2000/03/12 11:27:38 + Log: don't bother testing if we can flush all handles when fflush(stdin) + shows the pipe bug + Branch: perl + ! Configure +____________________________________________________________________________ +[ 5675] By: jhi on 2000/03/12 05:08:29 + Log: continue flogging the string->int conversion ifdefs + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 5674] By: gsar on 2000/03/12 05:01:30 + Log: fix File::DosGlob for patterns with drive names like c:*.bat + (suggested by Jason Mathews ) + Branch: perl + ! lib/File/DosGlob.pm +____________________________________________________________________________ +[ 5673] By: jhi on 2000/03/12 04:48:14 + Log: Integrate with Sarathy. + Branch: cfgperl + !> doop.c perl.h pod/perldelta.pod pod/perldiag.pod + !> pod/perlpod.pod toke.c utils/perldoc.PL +____________________________________________________________________________ +[ 5672] By: gsar on 2000/03/12 03:57:23 + Log: security fixes for perldoc (from Tom Christiansen) + Branch: perl + ! utils/perldoc.PL +____________________________________________________________________________ +[ 5671] By: gsar on 2000/03/12 03:45:27 + Log: Larry's patch to disallow CORE::Snark, with perldiag entry + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod toke.c +____________________________________________________________________________ +[ 5670] By: gsar on 2000/03/12 03:36:17 + Log: insufficient buffer in change#5317 + Branch: perl + ! doop.c +____________________________________________________________________________ +[ 5669] By: gsar on 2000/03/12 03:15:29 + Log: avoid L for now, not all the pod2foo support it + Branch: perl + ! pod/perlpod.pod +____________________________________________________________________________ +[ 5668] By: gsar on 2000/03/12 02:35:55 + Log: rework change#5664 + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 5667] By: jhi on 2000/03/11 21:35:29 + Log: todo and perldelta updates + Branch: cfgperl + ! Todo Todo-5.6 pod/perldelta.pod +____________________________________________________________________________ +[ 5666] By: jhi on 2000/03/11 21:00:34 + Log: Integrate with Sarathy. + Branch: cfgperl + !> perl.h +____________________________________________________________________________ +[ 5665] By: jhi on 2000/03/11 20:58:58 + Log: Fixes for #5661. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 5664] By: gsar on 2000/03/11 19:50:06 + Log: fix Strtoul() misdefinition is change#5661 + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 5663] By: gsar on 2000/03/11 19:21:18 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure config_h.SH hints/solaris_2.sh perl.h + !> t/pragma/warn/pp_hot toke.c +____________________________________________________________________________ +[ 5662] By: jhi on 2000/03/11 19:06:20 + Log: Integrate with Sarathy. + Branch: cfgperl + !> cop.h perl.c pp_ctl.c t/op/eval.t t/op/misc.t +____________________________________________________________________________ +[ 5661] By: jhi on 2000/03/11 19:03:32 + Log: Use Atof() instead of bare strtod(); ditto for Atol()/Atoul() + (introduce the latter) instead of bare strtoll()/strtoll(). + Branch: cfgperl + ! perl.h toke.c +____________________________________________________________________________ +[ 5660] By: gsar on 2000/03/11 18:40:49 + Log: another long-standing eval bug: return doesn't reset $@ correctly + Branch: perl + ! pp_ctl.c t/op/eval.t +____________________________________________________________________________ +[ 5659] By: jhi on 2000/03/11 18:27:54 + Log: metaconfig-ify the test for broken fflush(NULL) + (which ails e.g. Solaris), from Ulrich Pfeifer. + Branch: cfgperl + ! Configure config_h.SH hints/solaris_2.sh + Branch: metaconfig/U/perl + ! d_unorderedl.U fflushall.U +____________________________________________________________________________ +[ 5658] By: gsar on 2000/03/11 18:11:22 + Log: change#3511 was not defensive enough about try blocks, causing + bogus attempts to free closures, and thence, segfaults + Branch: perl + ! cop.h perl.c pp_ctl.c t/op/misc.t +____________________________________________________________________________ +[ 5657] By: jhi on 2000/03/11 18:04:44 + Log: Rewording. + Branch: cfgperl + ! t/pragma/warn/pp_hot +____________________________________________________________________________ +[ 5656] By: jhi on 2000/03/11 17:41:29 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 27 files) +____________________________________________________________________________ +[ 5655] By: gsar on 2000/03/11 17:06:03 + Log: reword comment + Branch: perl + ! t/pragma/warn/pp_hot +____________________________________________________________________________ +[ 5654] By: gsar on 2000/03/11 17:01:47 + Log: off-by-one in os2.c (from Ilya Zakharevich) + Branch: perl + ! os2/os2.c +____________________________________________________________________________ +[ 5653] By: gsar on 2000/03/11 16:59:48 + Log: File::Spec::VMS fixups, *not tested* on VMS (from Barrie Slaymaker) + Branch: perl + ! lib/File/Spec/VMS.pm t/lib/filespec.t +____________________________________________________________________________ +[ 5652] By: gsar on 2000/03/11 16:52:03 + Log: missing export list entry in change#5619 + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 5651] By: gsar on 2000/03/11 16:50:05 + Log: avoid using context pointer in MUTEX_INIT() et al; remove the + *_NOCONTEXT variants to keep it simple + Branch: perl + ! malloc.c thread.h win32/win32thread.h +____________________________________________________________________________ +[ 5650] By: gsar on 2000/03/11 16:07:35 + Log: remove =for section (from Johan Vromans) + Branch: perl + ! lib/Getopt/Long.pm +____________________________________________________________________________ +[ 5649] By: gsar on 2000/03/11 16:05:50 + Log: add nokfile target in Makefile (from Andy Dougherty) + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 5648] By: gsar on 2000/03/11 16:02:53 + Log: mention podchecker (from Tim Jenness ) + Branch: perl + ! pod/perlpod.pod +____________________________________________________________________________ +[ 5647] By: gsar on 2000/03/11 16:01:03 + Log: VMS build tweaks (from Charles Bailey) + Branch: perl + ! configure.com perl.c t/pragma/warn/doio t/pragma/warn/util + ! vms/subconfigure.com +____________________________________________________________________________ +[ 5646] By: gsar on 2000/03/11 10:13:27 + Log: remove outdated ftp.cis.ufl.edu reference + Branch: perl + ! pod/perlfaq2.pod +____________________________________________________________________________ +[ 5645] By: gsar on 2000/03/11 10:10:39 + Log: failed hunk in change#5644 + Branch: perl + ! t/op/pat.t +____________________________________________________________________________ +[ 5644] By: gsar on 2000/03/11 10:08:47 + Log: fix optimizer bug in /^(?p{"a"})b/ (from Ilya Zakharevich) + Branch: perl + ! regcomp.c t/op/pat.t +____________________________________________________________________________ +[ 5643] By: gsar on 2000/03/11 09:48:30 + Log: better {local,gm}time documentation (from Mark-Jason Dominus) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5642] By: gsar on 2000/03/11 09:45:10 + Log: tweaks for lynxos build (from Ed Mooring ) + Branch: perl + ! doio.c hints/lynxos.sh perl.h +____________________________________________________________________________ +[ 5641] By: gsar on 2000/03/11 09:42:56 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure Todo-5.6 config_h.SH hints/irix_6.sh + !> lib/Math/Complex.pm regcomp.c t/op/64bit.t +____________________________________________________________________________ +[ 5640] By: gsar on 2000/03/11 09:24:30 + Log: perldelta update, typos and whitespace adjustments + Branch: perl + ! lib/open.pm miniperlmain.c pod/perldelta.pod win32/perllib.c +____________________________________________________________________________ +[ 5639] By: jhi on 2000/03/11 00:51:48 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 44 files) +____________________________________________________________________________ +[ 5638] By: jhi on 2000/03/11 00:45:46 + Log: Cpp out deadcode that IRIX compiler noticed. + Branch: cfgperl + ! regcomp.c +____________________________________________________________________________ +[ 5637] By: jhi on 2000/03/10 14:22:24 + Log: Do not use Perl's malloc in IRIX. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5636] By: jhi on 2000/03/10 05:27:03 + Log: More/modified unused floating point units. + Branch: metaconfig/U/perl + + d_fp_class_l.U d_unordered.U d_unorderedl.U + ! d_fpclass.U +____________________________________________________________________________ +[ 5635] By: jhi on 2000/03/10 01:54:07 + Log: Add various yet-unused units. + Branch: metaconfig/U/perl + + d_class.U d_fchdir.U d_finite.U d_fp_class.U d_fp_classl.U + + d_fpclass.U d_fpclassify.U d_frexpl.U d_futimes.U + + d_getitimer.U d_getrlimit.U d_iconv.U d_isfinite.U d_isinf.U + + d_isnan.U d_isnanl.U d_lchmod.U d_lutimes.U d_setitimer.U + + d_setrlimit.U d_ualarm.U d_utimes.U +____________________________________________________________________________ +[ 5634] By: jhi on 2000/03/10 01:07:54 + Log: Fix goofups noticed by Mark Bixby and Jeff Okamoto. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/compline/nblock_io.U + Branch: metaconfig/U/perl + ! use64bits.U +____________________________________________________________________________ +[ 5633] By: jhi on 2000/03/09 23:22:33 + Log: Remove an obsolete note. + Branch: cfgperl + ! t/op/64bit.t +____________________________________________________________________________ +[ 5632] By: gsar on 2000/03/09 18:50:43 + Log: update Changes + Branch: perl + ! Changes +____________________________________________________________________________ +[ 5631] By: gsar on 2000/03/09 18:49:12 + Log: track more of the child state on Windows + Branch: perl + ! win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 5630] By: gsar on 2000/03/09 18:48:05 + Log: UNIVERSAL::isa() and UNIVERSAL::can() fail for magic values + Branch: perl + ! universal.c +____________________________________________________________________________ +[ 5629] By: gsar on 2000/03/09 18:37:35 + Log: tweak Unicode notes, other cleanups + Branch: perl + ! Changes lib/bytes.pm lib/utf8.pm pod/perldelta.pod + ! pod/perlhist.pod pod/perlunicode.pod +____________________________________________________________________________ +[ 5628] By: gsar on 2000/03/09 17:39:58 + Log: support binmode(F,":crlf") and use open IN => ":raw", OUT => ":crlf" + semantics; the pragma sets defaults for both open() and qx// + Branch: perl + ! doio.c dosish.h embed.h embed.pl epoc/epocish.h lib/open.pm + ! mpeix/mpeixish.h op.c op.h opcode.h opcode.pl os2/os2ish.h + ! perl.h perlapi.c plan9/plan9ish.h pod/perlfunc.pod pp.sym + ! pp_proto.h pp_sys.c proto.h sv.h vms/vmsish.h vos/vosish.h +____________________________________________________________________________ +[ 5627] By: gsar on 2000/03/09 12:54:08 + Log: avoid autoflushing behavior of fork/system/exec on Solaris (thanks + to fflush(NULL) bug) + Branch: perl + ! hints/solaris_2.sh pod/perldelta.pod +____________________________________________________________________________ +[ 5626] By: gsar on 2000/03/09 11:34:51 + Log: abort build on HP-UX if bundled non-ANSI compiler is detected + (from Dominic Dunlop ) + Branch: perl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5625] By: gsar on 2000/03/09 11:17:07 + Log: patch from Larry to make -T filetest algorithm recognize utf8 as + "text" + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 5624] By: gsar on 2000/03/09 11:11:59 + Log: provide support for deleting actions etc. (from Ronald J Kimball + ) + Branch: perl + ! lib/perl5db.pl pod/perldebug.pod +____________________________________________________________________________ +[ 5623] By: gsar on 2000/03/09 06:39:21 + Log: new xsubpp keywords should be in all caps + Branch: perl + ! lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 5622] By: gsar on 2000/03/09 06:26:04 + Log: demand-load utf8.pm in swash routines + Branch: perl + ! op.c utf8.c +____________________________________________________________________________ +[ 5621] By: gsar on 2000/03/08 19:27:02 + Log: make Dump() call the XSUB implementation transparently (modified + version of patch suggested by David Boyce ) + Branch: perl + ! ext/Data/Dumper/Dumper.pm ext/Data/Dumper/Dumper.xs + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5620] By: gsar on 2000/03/08 18:35:48 + Log: do FILE should not see outside lexicals (from Rick Delaney + ) + Branch: perl + ! op.c pp_ctl.c t/comp/require.t +____________________________________________________________________________ +[ 5619] By: gsar on 2000/03/08 18:04:45 + Log: abstract code for C into a Perl_load_module() + API function + Branch: perl + ! doio.c embed.h embed.pl global.sym objXSUB.h op.c op.h + ! perlapi.c pp_sys.c proto.h +____________________________________________________________________________ +[ 5618] By: jhi on 2000/03/08 18:03:30 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/Pod/Plainer.pm + !> Changes MANIFEST dosish.h embedvar.h lib/Pod/InputObjects.pm + !> lib/Pod/Parser.pm makedef.pl op.c op.h perl.c perlapi.h + !> perlvars.h pod/perlop.pod pod/pod2latex.PL sv.c unixish.h + !> vms/vmsish.h +____________________________________________________________________________ +[ 5617] By: jhi on 2000/03/08 15:44:05 + Log: ICU todo fixes. + Branch: cfgperl + ! Todo-5.6 +____________________________________________________________________________ +[ 5616] By: jhi on 2000/03/08 14:30:40 + Log: Even more Todo. + Branch: cfgperl + ! Todo-5.6 +____________________________________________________________________________ +[ 5615] By: jhi on 2000/03/08 14:13:45 + Log: More Todo. + Branch: cfgperl + ! Todo-5.6 +____________________________________________________________________________ +[ 5614] By: jhi on 2000/03/08 13:50:53 + Log: wording changes + Branch: cfgperl + ! lib/Math/Complex.pm +____________________________________________________________________________ +[ 5613] By: gsar on 2000/03/08 12:51:35 + Log: clarify docs on return value from binding operators + Branch: perl + ! pod/perlop.pod +____________________________________________________________________________ +[ 5612] By: gsar on 2000/03/08 12:41:38 + Log: shore up pod2latex shortcomings, and a Pod::Parser fix (from + Robin Barker) + Branch: perl + + lib/Pod/Plainer.pm + ! MANIFEST lib/Pod/Parser.pm pod/pod2latex.PL +____________________________________________________________________________ +[ 5611] By: gsar on 2000/03/08 12:22:59 + Log: integrate cfgperl changes into mainline + Branch: perl + ! Changes + !> installperl lib/Math/Complex.pm pod/perldelta.pod + !> t/lib/complex.t vms/vmsish.h +____________________________________________________________________________ +[ 5610] By: gsar on 2000/03/08 12:08:17 + Log: add missing locks for op refcounts + Branch: perl + ! dosish.h embedvar.h makedef.pl op.c op.h perl.c perlapi.h + ! perlvars.h sv.c unixish.h vms/vmsish.h +____________________________________________________________________________ +[ 5609] By: gsar on 2000/03/08 11:30:32 + Log: Pod::InputObjects tweak (from Brad Appleton) + Branch: perl + ! lib/Pod/InputObjects.pm +____________________________________________________________________________ +[ 5608] By: jhi on 2000/03/08 05:08:59 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 27 files) +____________________________________________________________________________ +[ 5607] By: jhi on 2000/03/08 05:07:06 + Log: Make the stringification more customizable. + A potentially backward incompatible change. + Based on a suggestion by Roman Kosenko . + Branch: cfgperl + ! lib/Math/Complex.pm pod/perldelta.pod t/lib/complex.t +____________________________________________________________________________ +[ 5606] By: jhi on 2000/03/08 00:49:14 + Log: s/lfs/largefiles/ + Branch: metaconfig + ! U/mksample +____________________________________________________________________________ +[ 5605] By: gsar on 2000/03/07 23:37:48 + Log: VMS build patch (from Peter Prymmer) + Branch: perl + ! configure.com installhtml lib/lib.pm vms/descrip_mms.template + ! vms/subconfigure.com vms/vms.c +____________________________________________________________________________ +[ 5604] By: gsar on 2000/03/07 23:25:46 + Log: CopFILEGV(&PL_compiling) must be reset properly (from Doug MacEachern) + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5603] By: gsar on 2000/03/07 23:05:16 + Log: type mismatch + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5602] By: gsar on 2000/03/07 22:40:55 + Log: add note to INSTALL about C++ compilers (from M J T Guy) + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 5601] By: gsar on 2000/03/07 22:30:35 + Log: separate options to incpush() for adding version directories and + architecture directories (from Andy Dougherty) + Branch: perl + ! embed.h embed.pl perl.c proto.h t/lib/fatal.t +____________________________________________________________________________ +[ 5600] By: gsar on 2000/03/07 20:18:54 + Log: support :void to enable croaking only in void context (from + Simon Cozens ) + Branch: perl + ! lib/Fatal.pm t/lib/fatal.t +____________________________________________________________________________ +[ 5599] By: gsar on 2000/03/07 18:35:21 + Log: Pod::Html tweak to avoid false falses + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 5598] By: gsar on 2000/03/07 18:21:58 + Log: skip null siblings encountered by goto out of loopish block + (from Doug Lankshear) + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 5597] By: gsar on 2000/03/07 16:33:29 + Log: omit XSLoader from bytecode dumps + Branch: perl + ! ext/B/B/Bytecode.pm ext/B/B/Stash.pm ext/B/B/Xref.pm +____________________________________________________________________________ +[ 5596] By: gsar on 2000/03/07 10:58:17 + Log: avoid coredump on C + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5595] By: gsar on 2000/03/07 10:26:03 + Log: add missing HTML escapes that can be displayed in xterm (from + Tim Jenness ) + Branch: perl + ! lib/Pod/Text.pm +____________________________________________________________________________ +[ 5594] By: gsar on 2000/03/07 10:24:55 + Log: Fatal.pm pod tweak (from Matt Sergeant ) + Branch: perl + ! lib/Fatal.pm +____________________________________________________________________________ +[ 5593] By: gsar on 2000/03/07 09:57:24 + Log: get ByteLoader working again + Branch: perl + ! bytecode.pl ext/B/B/Asmdata.pm ext/B/B/Bytecode.pm + ! ext/B/B/C.pm ext/ByteLoader/bytecode.h + ! ext/ByteLoader/byterun.c +____________________________________________________________________________ +[ 5592] By: gsar on 2000/03/07 05:14:49 + Log: typo in makedef.pl + Branch: perl + ! lib/File/Path.pm makedef.pl +____________________________________________________________________________ +[ 5591] By: jhi on 2000/03/06 22:56:24 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes ext/File/Glob/Glob.xs lib/Pod/Html.pm +____________________________________________________________________________ +[ 5590] By: gsar on 2000/03/06 22:32:44 + Log: fix incorrect prototypes in File::Glob + Branch: perl + ! ext/File/Glob/Glob.xs +____________________________________________________________________________ +[ 5589] By: gsar on 2000/03/06 22:07:38 + Log: update Changes + Branch: perl + ! Changes +____________________________________________________________________________ +[ 5588] By: jhi on 2000/03/06 21:46:18 + Log: From: "Craig A. Berry" + To: vmsperl@perl.org, perl5-porters@perl.org + Cc: jhi@iki.fi, Charles Bailey , gsar@activestate.com + Subject: [PATCH 5.5.670] circumvent VMS fileno bug in old DEC C version + Date: Mon, 06 Mar 2000 15:36:13 -0600 + Message-Id: <4.2.2.20000306153539.00ca6420@exchi01.midwest.metamorgs.com> + Branch: cfgperl + ! vms/vmsish.h +____________________________________________________________________________ +[ 5587] By: jhi on 2000/03/06 21:23:27 + Log: Use $^O. + Branch: cfgperl + ! installperl +____________________________________________________________________________ +[ 5586] By: jhi on 2000/03/06 21:19:15 + Log: Undo drift from the mainline. + Branch: cfgperl + !> (integrate 1607 files) +____________________________________________________________________________ +[ 5585] By: gsar on 2000/03/06 20:23:37 + Log: change#5513 accidentally undid change#5373, put it back + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 5584] By: jhi on 2000/03/06 17:30:48 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/File/Path.pm lib/Getopt/Long.pm lib/IPC/Open2.pm + !> lib/Pod/Man.pm makedef.pl toke.c vms/subconfigure.com +____________________________________________________________________________ +[ 5583] By: gsar on 2000/03/06 17:02:52 + Log: makedef.pl typos + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 5582] By: gsar on 2000/03/06 15:24:14 + Log: Pod::Man bugfixes (from Russ Allbery) + Branch: perl + ! lib/Pod/Man.pm +____________________________________________________________________________ +[ 5581] By: gsar on 2000/03/06 15:17:08 + Log: File::Path::rmtree() doesn't delete stale symlinks correctly + Branch: perl + ! lib/File/Path.pm +____________________________________________________________________________ +[ 5580] By: gsar on 2000/03/06 14:55:57 + Log: pod nits + Branch: perl + ! lib/Getopt/Long.pm lib/IPC/Open2.pm +____________________________________________________________________________ +[ 5579] By: gsar on 2000/03/06 14:55:08 + Log: 64-bit build fix on VMS (from Dan Sugalski) + Branch: perl + ! toke.c vms/subconfigure.com +____________________________________________________________________________ +[ 5578] By: jhi on 2000/03/06 14:37:46 + Log: Integrate with Sarathy. + Branch: cfgperl + !> README.win32 configure.com iperlsys.h lib/File/Spec/VMS.pm + !> lib/IPC/Open2.pm lib/IPC/Open3.pm perl.c t/lib/filefind.t + !> t/lib/filespec.t vms/ext/filespec.t vms/subconfigure.com + !> vms/test.com vms/vms.c win32/config.bc win32/config.gc + !> win32/config.vc win32/config_H.bc win32/config_H.gc + !> win32/config_H.vc win32/config_h.PL win32/perlhost.h + !> win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 5577] By: gsar on 2000/03/06 07:26:18 + Log: skip tests that need VMS::Filespec on other platforms + Branch: perl + ! t/lib/filespec.t +____________________________________________________________________________ +[ 5576] By: gsar on 2000/03/06 07:11:21 + Log: integrate vmsperl contents into mainline + Branch: perl + !> configure.com lib/File/Spec/VMS.pm t/lib/filefind.t + !> t/lib/filespec.t vms/ext/filespec.t vms/subconfigure.com + !> vms/test.com vms/vms.c +____________________________________________________________________________ +[ 5575] By: gsar on 2000/03/06 07:05:34 + Log: support for autovivified handles (from Tom Christiansen) + Branch: perl + ! lib/IPC/Open2.pm lib/IPC/Open3.pm +____________________________________________________________________________ +[ 5574] By: gsar on 2000/03/06 06:31:55 + Log: vendorlib support for Windows; regen win32/config* + Branch: perl + ! README.win32 iperlsys.h perl.c win32/config.bc win32/config.gc + ! win32/config.vc win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc win32/config_h.PL win32/perlhost.h + ! win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 5573] By: bailey on 2000/03/06 05:23:23 + Log: Skip openpid.t while VMS subprocess intercommunication in flux (several vmsperlers) + Branch: vmsperl + ! vms/test.com +____________________________________________________________________________ +[ 5572] By: gsar on 2000/03/06 05:21:26 + Log: the incpush()es weren't all quite right on Windows in change#5559 + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5571] By: bailey on 2000/03/06 05:18:59 + Log: Fix ricochet in File::Spec::VMS + Fix eval error in filespec.t + Misc. minor fixes in filespec.t + Branch: vmsperl + ! lib/File/Spec/VMS.pm t/lib/filespec.t +____________________________________________________________________________ +[ 5570] By: gsar on 2000/03/06 05:00:44 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure Makefile.SH Porting/Glossary Porting/config.sh + !> Porting/config_H config_h.SH epoc/config.sh + !> ext/DynaLoader/DynaLoader_pm.PL hints/aix.sh patchlevel.h + !> perl.c perl.h toke.c vos/config.def vos/config.h + !> vos/config_h.SH_orig +____________________________________________________________________________ +[ 5569] By: jhi on 2000/03/06 04:51:39 + Log: Integrate with Sarathy. + Branch: cfgperl + !> installperl pp.c +____________________________________________________________________________ +[ 5568] By: gsar on 2000/03/06 04:48:17 + Log: installperl wasn't putting extensions with two or more + nested package names in the archlib + Branch: perl + ! installperl +____________________________________________________________________________ +[ 5567] By: bailey on 2000/03/06 03:43:36 + Log: Set up for vendorarch (and fix 64bitint typo) (Dan Sugalski) + Branch: vmsperl + ! configure.com vms/subconfigure.com +____________________________________________________________________________ +[ 5566] By: bailey on 2000/03/06 03:40:14 + Log: Change $Config{'extensions'} to look Unixy (Charles Lane) + FIx logic error in glob-basic.t (Charles Lane) + Branch: vmsperl + ! configure.com vms/subconfigure.com +____________________________________________________________________________ +[ 5565] By: bailey on 2000/03/06 03:37:46 + Log: Remove trailing . from typeless files (Charles Lane) + Branch: vmsperl + ! t/lib/filefind.t +____________________________________________________________________________ +[ 5564] By: bailey on 2000/03/06 03:36:26 + Log: Resync with mainline, update test in vmsfspec.t + Branch: vmsperl + +> lib/Term/ANSIColor.pm t/lib/ansicolor.t + ! vms/ext/filespec.t + !> (integrate 171 files) +____________________________________________________________________________ +[ 5563] By: gsar on 2000/03/06 03:29:11 + Log: avoid warning + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 5562] By: bailey on 2000/03/06 02:48:17 + Log: Downcase function call to hush picky cc + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5561] By: jhi on 2000/03/06 00:23:22 + Log: VOS patch from Paul Green. Note that the vos/config_h.SH_orig + is not exactly identical to the current config_h.SH because + Paul needs better $sitearch control. + Branch: cfgperl + ! vos/config.def vos/config.h vos/config_h.SH_orig +____________________________________________________________________________ +[ 5560] By: jhi on 2000/03/05 23:26:41 + Log: Avoid wiping out @dl_{librefs,modules} when XSLoader + falls back to DynaLoader. + + From: Doug MacEachern + To: perl5-porters@perl.org + Subject: [PATCH v5.5.670] maintain DynaLoader::dl_{librefs,modules} + Date: Sun, 5 Mar 2000 15:19:01 -0800 (PST) + Message-ID: + Branch: cfgperl + ! ext/DynaLoader/DynaLoader_pm.PL +____________________________________________________________________________ +[ 5559] By: jhi on 2000/03/05 22:05:54 + Log: sitelib_stem and vendorlib_stem patches from Andy; + problem reported in + From: schwern@athens.arena-i.com (Michael G Schwern) + To: perl5-porters@perl.org + Subject: [ID 20000305.001] [BUG 5.5.670 perl.c] SITELIB_EXP mangled by hack. + Date: Sun, 5 Mar 2000 06:31:29 -0500 (EST) + Message-Id: <20000305113129.80DC23820@athens.arena-i.com> + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH epoc/config.sh patchlevel.h perl.c perl.h + ! vos/config.def vos/config.h vos/config_h.SH_orig + Branch: metaconfig + ! U/installdirs/instubperl.U U/installdirs/sitelib.U + ! U/installdirs/vendorlib.U +____________________________________________________________________________ +[ 5558] By: jhi on 2000/03/05 21:18:59 + Log: Integrate with Sarathy. + Branch: cfgperl + !> hints/linux.sh lib/Getopt/Long.pm +____________________________________________________________________________ +[ 5557] By: gsar on 2000/03/05 20:35:13 + Log: Getopt-Long v2.21 update (from Johan Vromans) + Branch: perl + ! lib/Getopt/Long.pm +____________________________________________________________________________ +[ 5556] By: gsar on 2000/03/05 20:26:57 + Log: Linux needs -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 too + (from Matthias Urlichs ) + Branch: perl + ! hints/linux.sh +____________________________________________________________________________ +[ 5555] By: jhi on 2000/03/05 20:15:34 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/Term/ANSIColor.pm t/lib/ansicolor.t + !> MANIFEST lib/Pod/InputObjects.pm opcode.h opcode.pl + !> pod/perldelta.pod pod/perlfunc.pod pp.c pp_sys.c + !> t/comp/proto.t toke.c utils/perlbug.PL +____________________________________________________________________________ +[ 5554] By: gsar on 2000/03/05 20:02:17 + Log: prototype changes for eventually supporting C + and C + Branch: perl + ! opcode.h opcode.pl pod/perlfunc.pod pp.c pp_sys.c + ! t/comp/proto.t toke.c +____________________________________________________________________________ +[ 5553] By: jhi on 2000/03/05 19:55:02 + Log: AIX gcvt() cannot format long doubles very well. + Branch: cfgperl + ! hints/aix.sh +____________________________________________________________________________ +[ 5552] By: jhi on 2000/03/05 18:44:37 + Log: the monster cpp expression needs to be on one line to + appease makedepend + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 5551] By: jhi on 2000/03/05 18:24:32 + Log: IRIX cpp is fussy. + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 5550] By: gsar on 2000/03/05 17:46:18 + Log: perlbug tweak to grok local_patches better + Branch: perl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 5549] By: gsar on 2000/03/05 17:33:10 + Log: add Term::ANSIColor, perldelta notes on Pod::Man, and fix a bug + in Pod::InputObjects (from Russ Allbery) + Branch: perl + + lib/Term/ANSIColor.pm t/lib/ansicolor.t + ! MANIFEST lib/Pod/InputObjects.pm pod/perldelta.pod +____________________________________________________________________________ +[ 5548] By: jhi on 2000/03/05 17:27:06 + Log: clean up the makedepend temp file + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 5547] By: jhi on 2000/03/05 17:23:18 + Log: Integrate with Sarathy. + Branch: cfgperl + !> perl.c +____________________________________________________________________________ +[ 5546] By: jhi on 2000/03/05 17:16:12 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 47 files) +____________________________________________________________________________ +[ 5545] By: gsar on 2000/03/05 17:13:48 + Log: strip last component of SITELIB_EXP only if it looks like a + number + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5544] By: jhi on 2000/03/05 17:12:42 + Log: s/Perl/PeRl/; # yeah + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/cpp_stuff.U +____________________________________________________________________________ +[ 5543] By: gsar on 2000/03/05 16:54:10 + Log: thinko in change#4546 that caused variables to lose their importedness + (GvIMPORTED_XV_off should be !GvIMPORTED_XV) + Branch: perl + ! sv.c t/pragma/strict-vars +____________________________________________________________________________ +[ 5542] By: gsar on 2000/03/05 09:37:26 + Log: regen win32/config*, up version numbers &c. + Branch: perl + ! 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 +____________________________________________________________________________ +[ 5541] By: gsar on 2000/03/05 09:20:12 + Log: undo change#5506; add patch to make blank line warnings optional + (from Brad Appleton) + Branch: perl + ! lib/Pod/Checker.pm lib/Pod/Parser.pm t/pod/poderrs.xr +____________________________________________________________________________ +[ 5540] By: gsar on 2000/03/05 09:04:52 + Log: fixes for most warnings identified by gcc -Wall + Branch: perl + ! av.c cop.h deb.c doop.c dump.c embed.h embed.pl gv.c hv.c mg.c + ! miniperlmain.c objXSUB.h op.c perl.c perlapi.c pp.c pp_ctl.c + ! pp_hot.c pp_sys.c proto.h regcomp.c regexec.c regexp.h run.c + ! scope.c sv.c sv.h toke.c universal.c util.c xsutils.c +____________________________________________________________________________ +[ 5539] By: gsar on 2000/03/05 06:37:58 + Log: shup up warnings about dNOOP from gcc with __attribute__ ((unused)) + (from Doug MacEachern ) + Branch: perl + ! patchlevel.h perl.h +____________________________________________________________________________ +[ 5538] By: gsar on 2000/03/05 05:50:44 + Log: tyop + Branch: perl + ! config_h.SH +____________________________________________________________________________ +[ 5537] By: gsar on 2000/03/05 05:41:10 + Log: integrate cfgperl contents into mainline; add new tests from + inc.t into 64bit.t + Branch: perl + ! t/op/64bit.t + !> Configure config_h.SH hints/hpux.sh hints/sco.sh perl.h + !> pod/perl.pod toke.c +____________________________________________________________________________ +[ 5536] By: jhi on 2000/03/05 05:37:22 + Log: dethinko + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 5535] By: jhi on 2000/03/05 05:14:40 + Log: Integrate with Sarathy. + Branch: cfgperl + !> pp.c t/op/inc.t toke.c +____________________________________________________________________________ +[ 5534] By: gsar on 2000/03/05 04:50:26 + Log: optimize change#5533 to stick to IVs if constant is <= IV_MAX, + since runtime is highly optimized for IVs rather than UVs + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 5533] By: gsar on 2000/03/05 04:30:02 + Log: scan_num() sticks to UVs rather than IVs (now -2147483648 doesn't + end up being promoted to an NV) + Branch: perl + ! pp.c t/op/inc.t toke.c +____________________________________________________________________________ +[ 5532] By: jhi on 2000/03/05 01:11:37 + Log: more cpp cosmetics, logic cleanup + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 5531] By: jhi on 2000/03/05 00:51:20 + Log: Implement #5525 in metaconfig. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/cpp_stuff.U +____________________________________________________________________________ +[ 5530] By: jhi on 2000/03/05 00:32:51 + Log: Integrate with Sarathy. + Branch: cfgperl + !> config_h.SH doio.c lib/Cwd.pm lib/Pod/Html.pm lib/bytes.pm + !> lib/charnames.pm lib/filetest.pm lib/integer.pm lib/locale.pm + !> lib/overload.pm lib/utf8.pm os2/os2ish.h pod/perldebug.pod + !> t/lib/ipc_sysv.t t/pragma/warn/regcomp win32/config_H.bc + !> win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 5529] By: jhi on 2000/03/05 00:31:17 + Log: Sanity check on the strtoll and strtoull. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! d_strtoll.U d_strtoull.U +____________________________________________________________________________ +[ 5528] By: jhi on 2000/03/05 00:07:21 + Log: Reformat the fearful cpp expression to be a little bit less fearful. + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 5527] By: gsar on 2000/03/04 21:55:03 + Log: make hints available via globals in the respective pragmas to + avoid duplicating the constants everywhere + Branch: perl + ! lib/bytes.pm lib/charnames.pm lib/filetest.pm lib/integer.pm + ! lib/locale.pm lib/overload.pm lib/utf8.pm +____________________________________________________________________________ +[ 5526] By: gsar on 2000/03/04 20:39:36 + Log: remove deadcode + Branch: perl + ! lib/Cwd.pm +____________________________________________________________________________ +[ 5525] By: gsar on 2000/03/04 19:42:55 + Log: make CAT2() portable for use as a macro argument with an extra + level of macros + Branch: perl + ! config_h.SH +____________________________________________________________________________ +[ 5524] By: gsar on 2000/03/04 19:02:27 + Log: avoid looking up stale PL_statbuf (spotted by Charles Lane + ) + Branch: perl + ! doio.c +____________________________________________________________________________ +[ 5523] By: gsar on 2000/03/04 18:59:03 + Log: pod tweak + Branch: perl + ! pod/perldebug.pod +____________________________________________________________________________ +[ 5522] By: gsar on 2000/03/04 17:46:58 + Log: regen win32/config_H* + Branch: perl + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 5521] By: jhi on 2000/03/04 16:35:48 + Log: From: "Matthias Urlichs" + To: perl5-porters@perl.org + Subject: BUG: Integer floatifies? +PATCH: reading BIG integers with SMALL floats + Date: Sat, 4 Mar 2000 12:48:42 +0100 + Message-ID: <20000304124841.A8090@noris.de> + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 5520] By: jhi on 2000/03/04 15:41:12 + Log: unthink wishful thinking + Branch: cfgperl + ! pod/perl.pod +____________________________________________________________________________ +[ 5519] By: gsar on 2000/03/04 06:42:47 + Log: fix OS/2 coredump with POSIX::tmpnam() (from Ilya Zakharevich) + Branch: perl + ! os2/os2ish.h +____________________________________________________________________________ +[ 5518] By: gsar on 2000/03/04 06:02:26 + Log: avoid "scalars leaked" message in test + Branch: perl + ! t/pragma/warn/regcomp +____________________________________________________________________________ +[ 5517] By: jhi on 2000/03/04 06:01:16 + Log: detypo + Branch: cfgperl + ! pod/perl.pod +____________________________________________________________________________ +[ 5516] By: jhi on 2000/03/04 05:59:21 + Log: cleanup AVAILABILITY and mention binaries + Branch: cfgperl + ! pod/perl.pod +____________________________________________________________________________ +[ 5515] By: gsar on 2000/03/04 05:55:02 + Log: syntax error in change#5498 + Branch: perl + ! t/lib/ipc_sysv.t +____________________________________________________________________________ +[ 5514] By: jhi on 2000/03/04 05:50:56 + Log: assuming that removing the libbind will be a good idea + Branch: cfgperl + ! hints/sco.sh +____________________________________________________________________________ +[ 5513] By: gsar on 2000/03/04 05:50:15 + Log: Pod::Html fixups for nicer links to functions (from Wolfgang Laun + ) + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 5512] By: jhi on 2000/03/04 05:45:52 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 41 files) +____________________________________________________________________________ +[ 5511] By: jhi on 2000/03/04 05:42:37 + Log: HP-UX 64-bitness cures + Branch: cfgperl + ! hints/hpux.sh perl.h +____________________________________________________________________________ +[ 5510] By: gsar on 2000/03/04 05:40:08 + Log: better error messages when xsubpp fails to find map for a particular + type (from Ilya Zakharevich) + Branch: perl + ! lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 5509] By: jhi on 2000/03/04 05:33:27 + Log: scratch #5508 + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 5508] By: jhi on 2000/03/04 05:31:19 + Log: In HP-UX there is a secret handshake to get strtoll and strtoull. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 5507] By: gsar on 2000/03/04 04:27:51 + Log: more whitespace removal (from Michael G Schwern) + Branch: perl + ! ext/Data/Dumper/Dumper.pm ext/Errno/Errno_pm.PL + ! ext/File/Glob/Glob.pm ext/IO/lib/IO/Select.pm + ! ext/IO/lib/IO/Socket.pm ext/IO/lib/IO/Socket/INET.pm + ! ext/IPC/SysV/Msg.pm ext/IPC/SysV/Semaphore.pm lib/CGI.pm + ! lib/CGI/Cookie.pm lib/CGI/Fast.pm lib/CGI/Push.pm + ! lib/Carp/Heavy.pm lib/DB.pm lib/Exporter/Heavy.pm + ! lib/File/DosGlob.pm lib/File/Find.pm lib/Getopt/Long.pm + ! lib/Math/Trig.pm lib/Net/Ping.pm lib/Net/netent.pm + ! lib/SelfLoader.pm lib/Tie/Array.pm lib/Tie/Handle.pm + ! lib/Tie/Scalar.pm lib/Time/Local.pm lib/filetest.pm + ! lib/overload.pm x2p/s2p.PL +____________________________________________________________________________ +[ 5506] By: gsar on 2000/03/04 04:12:06 + Log: temporarily disable blank line warning from Pod::Parser until + it can be made optional + Branch: perl + ! lib/Pod/Parser.pm t/pod/poderrs.xr +____________________________________________________________________________ +[ 5505] By: gsar on 2000/03/04 04:00:44 + Log: rid blanks in pods (from Michael G Schwern) + Branch: perl + ! README.amiga README.dos README.os2 +____________________________________________________________________________ +[ 5504] By: gsar on 2000/03/04 03:59:07 + Log: avoid warnings from shmread() when given undefined variable + (from Tom Christiansen) + Branch: perl + ! doio.c +____________________________________________________________________________ +[ 5503] By: gsar on 2000/03/04 03:53:43 + Log: fpsetmask() needs include on freebsd (from Slaven Rezic + ) + Branch: perl + ! unixish.h +____________________________________________________________________________ +[ 5502] By: gsar on 2000/03/04 03:51:05 + Log: avoid ambiguity in indirect object notation (breaks with overridden + run time require) + Branch: perl + ! lib/CGI.pm +____________________________________________________________________________ +[ 5501] By: gsar on 2000/03/04 01:08:54 + Log: adjust perldelta + Branch: perl + ! Todo-5.6 pod/perl.pod pod/perldelta.pod +____________________________________________________________________________ +[ 5500] By: gsar on 2000/03/04 00:33:49 + Log: integrate cfgperl contents into mainline + Branch: perl + !> hints/irix_6.sh hints/solaris_2.sh pod/perl.pod + !> pod/perlfunc.pod t/lib/ipc_sysv.t +____________________________________________________________________________ +[ 5499] By: jhi on 2000/03/03 22:51:53 + Log: solaris hints tweak + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5498] By: jhi on 2000/03/03 22:35:46 + Log: The SysV IPC test must use the native integers + (long or short), also noted this in the msgsnd/semctl + documentation. Reported in + + From: schwern@athens.arena-i.com (Michael G Schwern) + To: perl5-porters@perl.org + Subject: [ID 20000302.006] [BUG 5.5.670 t/ipc_sysv.t] Fails 2,5,6 with 64bit on Linux + Date: Thu, 2 Mar 2000 17:15:03 -0500 (EST) + Message-Id: <20000302221503.EDF6E3830@athens.arena-i.com> + Branch: cfgperl + ! pod/perlfunc.pod t/lib/ipc_sysv.t +____________________________________________________________________________ +[ 5497] By: jhi on 2000/03/03 21:08:53 + Log: Update AVAILABILITY. + Branch: cfgperl + ! pod/perl.pod +____________________________________________________________________________ +[ 5496] By: gsar on 2000/03/03 20:21:05 + Log: perldebug tweak (from M J T Guy) + Branch: perl + ! pod/perldebug.pod +____________________________________________________________________________ +[ 5495] By: jhi on 2000/03/03 19:32:58 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 79 files) +____________________________________________________________________________ +[ 5494] By: jhi on 2000/03/03 19:14:01 + Log: the workaround is needed in all 7.2.* compilers, + not just on IRIX64. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5493] By: gsar on 2000/03/03 18:58:45 + Log: whitespace and readabiliti nits in the pods (from Michael G Schwern + and Robin Barker) + Branch: perl + ! Changes pod/perl.pod pod/perl5004delta.pod + ! pod/perl5005delta.pod pod/perlboot.pod pod/perldata.pod + ! pod/perldebug.pod pod/perldelta.pod pod/perldiag.pod + ! pod/perlembed.pod pod/perlfaq.pod pod/perlfaq2.pod + ! pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfaq6.pod + ! pod/perlfaq7.pod pod/perlfaq8.pod pod/perlfaq9.pod + ! pod/perlfilter.pod pod/perlguts.pod pod/perlipc.pod + ! pod/perllexwarn.pod pod/perllocale.pod pod/perlmodinstall.pod + ! pod/perlmodlib.pod pod/perlobj.pod pod/perlopentut.pod + ! pod/perlpod.pod pod/perlport.pod pod/perlre.pod + ! pod/perlref.pod pod/perlreftut.pod pod/perlsub.pod + ! pod/perltie.pod pod/perltodo.pod pod/perltoot.pod + ! pod/perltootc.pod pod/perltrap.pod pod/perlvar.pod + ! pod/perlxstut.pod +____________________________________________________________________________ +[ 5492] By: gsar on 2000/03/03 17:48:31 + Log: support for list assignment to pseudohashes (from John Tobey + ) + Branch: perl + ! av.c dump.c embed.h embed.pl global.sym objXSUB.h op.c op.h + ! perlapi.c pp_hot.c proto.h t/op/avhv.t t/op/hashwarn.t +____________________________________________________________________________ +[ 5491] By: gsar on 2000/03/03 16:45:49 + Log: add MakeMaker caveat to INSTALL (from Andy Dougherty) + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 5490] By: gsar on 2000/03/03 16:44:42 + Log: perldelta tweaks + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5489] By: gsar on 2000/03/03 16:26:52 + Log: /dev/console may not be writable in Syslog.pm (from Ask Bjoern Hansen + ) + Branch: perl + ! ext/Sys/Syslog/Syslog.pm +____________________________________________________________________________ +[ 5488] By: gsar on 2000/03/03 16:21:34 + Log: OS/2 patches for dlclose() support (from Yitzchak Scott-Thoennes + ) + Branch: perl + ! makedef.pl os2/diff.configure os2/dl_os2.c os2/dlfcn.h + ! os2/os2.sym +____________________________________________________________________________ +[ 5487] By: gsar on 2000/03/03 16:16:34 + Log: skip test on AFS (from Hans Ranke ) + Branch: perl + ! t/lib/glob-basic.t +____________________________________________________________________________ +[ 5486] By: gsar on 2000/03/03 15:42:28 + Log: integrate cfgperl and vmsperl contents into mainline + Branch: perl + ! pod/perl.pod + !> (integrate 38 files) +____________________________________________________________________________ +[ 5485] By: jhi on 2000/03/03 15:21:40 + Log: pull the sparcv9 workshop libraries in front of loclibpth + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5484] By: jhi on 2000/03/03 15:09:03 + Log: Introduce i_ieefp because FreeBSD on ix86 needs that + for ftpsetmask(0); regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH epoc/config.sh perl.h vms/subconfigure.com + ! vos/config.def vos/config.h vos/config_h.SH_orig + ! win32/config.bc win32/config.gc win32/config.vc + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 5483] By: jhi on 2000/03/03 05:37:58 + Log: The _cflags must be left-aligned. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5482] By: bailey on 2000/03/03 04:42:45 + Log: Once more unto resync + Branch: vmsperl + !> (integrate 48 files) +____________________________________________________________________________ +[ 5481] By: bailey on 2000/03/03 04:36:46 + Log: VMS-specific perldelta update + Branch: vmsperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5480] By: bailey on 2000/03/03 04:05:28 + Log: Set up Perl invocation method during configuration (Peter Prymmer) + Add missing bits to various utilities and install them (ditto) + Branch: vmsperl + ! configure.com pod/pod2usage.PL pod/podselect.PL + ! utils/dprofpp.PL vms/descrip_mms.template +____________________________________________________________________________ +[ 5479] By: bailey on 2000/03/03 04:01:48 + Log: Fix test to match new behavior of vmsify() (Craig Berry) + Branch: vmsperl + ! vms/ext/filespec.t +____________________________________________________________________________ +[ 5478] By: bailey on 2000/03/03 03:54:10 + Log: Try to intuit whether typeless file invoked in subprocess + is an executable image or DCL procedure. + Branch: vmsperl + ! vms/perlvms.pod vms/vms.c +____________________________________________________________________________ +[ 5477] By: bailey on 2000/03/03 03:37:18 + Log: Remove leftover bits of VAXC support (Dan Sugalski) + Branch: vmsperl + ! vms/gen_shrfls.pl +____________________________________________________________________________ +[ 5476] By: bailey on 2000/03/03 03:34:51 + Log: Add missing declaration (Dan Sugalski) + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5475] By: gsar on 2000/03/03 03:27:52 + Log: warn about /(?p{})/ (from Simon Cozens) + Branch: perl + ! regcomp.c toke.c +____________________________________________________________________________ +[ 5474] By: bailey on 2000/03/03 03:27:05 + Log: Ad hoc patch for duping stdout into stderr + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5473] By: bailey on 2000/03/03 03:23:29 + Log: Bypass PERL_INC_VERSION_LIST until we support in in Configure.Com + Branch: vmsperl + ! vms/subconfigure.com vms/vmsish.h +____________________________________________________________________________ +[ 5472] By: gsar on 2000/03/03 02:58:49 + Log: File::Spec bugs (spotted by Hack Kampbjorn ) + Branch: perl + ! lib/File/Spec/Mac.pm lib/File/Spec/Unix.pm + ! lib/File/Spec/VMS.pm lib/File/Spec/Win32.pm +____________________________________________________________________________ +[ 5471] By: jhi on 2000/03/03 02:38:23 + Log: more todo + Branch: cfgperl + ! Todo-5.6 +____________________________________________________________________________ +[ 5470] By: gsar on 2000/03/03 02:36:02 + Log: skip test if db doesn't have null key support + Branch: perl + ! t/lib/anydbm.t +____________________________________________________________________________ +[ 5469] By: jhi on 2000/03/03 02:26:53 + Log: Integrate with Sarathy. + Branch: cfgperl + !> INSTALL lib/AutoSplit.pm lib/ExtUtils/xsubpp lib/SelfLoader.pm + !> lib/Test/Harness.pm lib/constant.pm pod/perl.pod + !> pod/perldelta.pod pod/perlpod.pod pod/perlre.pod + !> pod/perltoc.pod regcomp.c t/op/misc.t t/op/pat.t toke.c + !> utils/h2xs.PL win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 5468] By: jhi on 2000/03/03 02:24:05 + Log: irix hints tweak + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5467] By: gsar on 2000/03/03 02:19:50 + Log: /(?p{})/ changed to /(??{})/, per Larry's suggestion (from + Simon Cozens ) + Branch: perl + ! lib/AutoSplit.pm lib/ExtUtils/xsubpp lib/SelfLoader.pm + ! pod/perlre.pod pod/perltoc.pod regcomp.c t/op/misc.t + ! t/op/pat.t toke.c +____________________________________________________________________________ +[ 5466] By: jhi on 2000/03/03 02:12:41 + Log: in words order bad + Branch: cfgperl + ! pod/perlre.pod +____________________________________________________________________________ +[ 5465] By: jhi on 2000/03/03 02:09:45 + Log: /[[:alpha]/ now dies on unmatched [] instead of + "an unknown character class" (spotted by Tom Christiansen) + Branch: cfgperl + ! regcomp.c t/pragma/warn/regcomp +____________________________________________________________________________ +[ 5464] By: gsar on 2000/03/03 02:04:48 + Log: perldelta notes about IO::Socket changes (from Graham Barr) + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5463] By: gsar on 2000/03/03 02:02:50 + Log: relax restrictions on constant names a bit (from M J T Guy) + Branch: perl + ! lib/constant.pm +____________________________________________________________________________ +[ 5462] By: gsar on 2000/03/03 01:59:49 + Log: support for generation of accessor functions (from Hugo van der + Sanden) + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 5461] By: jhi on 2000/03/03 01:51:53 + Log: cosmetics + Branch: cfgperl + ! t/op/pack.t +____________________________________________________________________________ +[ 5460] By: jhi on 2000/03/03 01:50:07 + Log: detypo + Branch: cfgperl + ! t/op/pack.t +____________________________________________________________________________ +[ 5459] By: gsar on 2000/03/03 01:46:35 + Log: pod tweaks + Branch: perl + ! pod/perl.pod pod/perlpod.pod +____________________________________________________________________________ +[ 5458] By: jhi on 2000/03/03 01:25:21 + Log: solaris hints tweak + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5457] By: jhi on 2000/03/02 22:56:49 + Log: detypo + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5456] By: gsar on 2000/03/02 21:15:11 + Log: Test::Harness uses $ENV{HARNESS_PERL_SWITCHES} when running perl; + add test targets for -C switch on windows + Branch: perl + ! lib/Test/Harness.pm win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 5455] By: gsar on 2000/03/02 21:06:49 + Log: add note about failed tests on memory starved systems (from + Andy Dougherty) + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 5454] By: jhi on 2000/03/02 21:03:35 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes lib/Pod/Find.pm lib/Pod/Html.pm lib/Pod/Man.pm + !> lib/Term/Cap.pm lib/Test/Harness.pm lib/blib.pm + !> pod/perldata.pod pod/perldelta.pod pod/perlop.pod +____________________________________________________________________________ +[ 5453] By: jhi on 2000/03/02 20:58:43 + Log: Further long double patches from Spider Boardman. + Branch: cfgperl + ! t/comp/use.t t/lib/bigfltpm.t t/op/pack.t t/op/universal.t +____________________________________________________________________________ +[ 5452] By: gsar on 2000/03/02 20:52:08 + Log: move doc about v-strings from perlop to perldata (suggested by + David Dyck ) + Branch: perl + ! pod/perldata.pod pod/perldelta.pod pod/perlop.pod +____________________________________________________________________________ +[ 5451] By: gsar on 2000/03/02 20:30:29 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure hints/irix_6.sh pp.c +____________________________________________________________________________ +[ 5450] By: gsar on 2000/03/02 20:08:10 + Log: still other multiline match cleanups (from Greg Bacon) + Branch: perl + ! Changes lib/Pod/Find.pm lib/Pod/Html.pm lib/Pod/Man.pm + ! lib/Term/Cap.pm lib/Test/Harness.pm lib/blib.pm +____________________________________________________________________________ +[ 5449] By: jhi on 2000/03/02 20:01:58 + Log: Integrate with Sarathy. + Branch: cfgperl + !> configure.com ext/File/Glob/Glob.pm ext/File/Glob/bsd_glob.c + !> lib/ExtUtils/MM_VMS.pm lib/Test/Harness.pm t/lib/glob-basic.t + !> t/pragma/warn/8signal t/pragma/warn/pp_ctl + !> vms/descrip_mms.template vms/gen_shrfls.pl + !> vms/subconfigure.com vms/vms.c win32/Makefile + !> win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 5448] By: jhi on 2000/03/02 20:00:37 + Log: workaround for Tru64 compiler bug (cleaner fix will have + to wait until 5.6.1), from Spider Boardman + Branch: cfgperl + ! pp.c +____________________________________________________________________________ +[ 5447] By: jhi on 2000/03/02 19:52:34 + Log: Workaround for an optimizer bug. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5446] By: jhi on 2000/03/02 19:44:35 + Log: installation directory fix from Andy Dougherty + (installstyle was being clobbered, spotted by Spider Boardman) + Branch: cfgperl + ! Configure + Branch: metaconfig + ! U/installdirs/installstyle.U +____________________________________________________________________________ +[ 5445] By: gsar on 2000/03/02 19:40:44 + Log: patch to fix mingw32 build under USE_IMP_SYS (from Benjamin Stuhl); + some parts not applied + Branch: perl + ! win32/Makefile win32/makefile.mk win32/perllib.c win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 5444] By: gsar on 2000/03/02 19:26:08 + Log: avoid buffering issue in warn/8signal + Branch: perl + ! t/pragma/warn/8signal +____________________________________________________________________________ +[ 5443] By: gsar on 2000/03/02 18:13:28 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure config_h.SH hints/aix.sh hints/hpux.sh + !> hints/solaris_2.sh makedepend.SH sv.c t/lib/syslfs.t + !> t/op/lfs.t t/op/pack.t +____________________________________________________________________________ +[ 5442] By: gsar on 2000/03/02 18:02:40 + Log: integrate vmsperl changes into mainline (denied their changes to + Glob.pm, t/pragma/warn/{8signal,pp_ctl}) + Branch: perl + !> configure.com ext/File/Glob/Glob.pm ext/File/Glob/bsd_glob.c + !> lib/ExtUtils/MM_VMS.pm lib/Test/Harness.pm t/lib/glob-basic.t + !> t/pragma/warn/8signal t/pragma/warn/pp_ctl + !> vms/descrip_mms.template vms/gen_shrfls.pl + !> vms/subconfigure.com vms/vms.c +____________________________________________________________________________ +[ 5441] By: jhi on 2000/03/02 17:56:20 + Log: nit from Spider Boardman + Branch: cfgperl + ! makedepend.SH +____________________________________________________________________________ +[ 5440] By: jhi on 2000/03/02 17:48:15 + Log: Confusion over uselargefiles.cbu and uselfs.cbu (the first one + is the correct one), spotted by Robin Parker. + Branch: cfgperl + ! Configure config_h.SH hints/aix.sh hints/hpux.sh + Branch: metaconfig/U/perl + ! uselfs.U +____________________________________________________________________________ +[ 5439] By: jhi on 2000/03/02 15:32:04 + Log: Remove the pack.t kludge introduced to fudge the test + to pass under long doubles: leave the similar kludge + to posix.t because POSIX::strtod() is still double, + not long double. + Branch: cfgperl + ! t/op/pack.t +____________________________________________________________________________ +[ 5438] By: jhi on 2000/03/02 04:58:48 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/ExtUtils/Install.pm lib/ExtUtils/Installed.pm + !> lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Unix.pm lib/FindBin.pm + !> lib/Pod/Html.pm op.c +____________________________________________________________________________ +[ 5437] By: jhi on 2000/03/02 04:51:46 + Log: A patch on #5407. + Branch: cfgperl + ! sv.c +____________________________________________________________________________ +[ 5436] By: gsar on 2000/03/02 04:45:37 + Log: avoid useless comparison + Branch: perl + ! op.c +____________________________________________________________________________ +[ 5435] By: bailey on 2000/03/02 04:43:11 + Log: YA sync with mainline + Branch: vmsperl + +> lib/open.pm pod/perlboot.pod pod/perlnumber.pod + +> t/lib/env-array.t + !> (integrate 150 files) +____________________________________________________________________________ +[ 5434] By: gsar on 2000/03/02 04:28:48 + Log: make the "back to top" links optional + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 5433] By: bailey on 2000/03/02 04:26:58 + Log: Protect manipulation of open pipe list from concurrent ASTs (Charles Lane) + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5432] By: bailey on 2000/03/02 04:20:51 + Log: Update dependencies and remove obsolete VAXC support + Branch: vmsperl + ! vms/descrip_mms.template +____________________________________________________________________________ +[ 5431] By: bailey on 2000/03/02 04:19:42 + Log: Rmeove obsolete VAXC support + Branch: vmsperl + ! vms/gen_shrfls.pl +____________________________________________________________________________ +[ 5430] By: bailey on 2000/03/02 04:18:57 + Log: Minor updates to subconfigure.com: + - remove old VAXC support + - avoid echoing commands to tempfiles + - fix typos + - define 64bit symbols (as "undef") when not using 64 bit support + Branch: vmsperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 5429] By: bailey on 2000/03/02 04:16:11 + Log: Minor changes to Configure.Com: + - permit operation in batch mode (splits output) + - remove old VAXC support + - default to enabling secure internal lnm translation + Branch: vmsperl + ! configure.com +____________________________________________________________________________ +[ 5428] By: bailey on 2000/03/02 04:06:53 + Log: Optional warning for truncated logical name equivalence string (Dan Sugalski) + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5427] By: bailey on 2000/03/02 04:05:47 + Log: FIx no-op in vms.c + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5426] By: bailey on 2000/03/02 04:04:52 + Log: MIscellaneous tweaks to test and driver (Charles Lane) + Branch: vmsperl + ! t/pragma/warn/8signal t/pragma/warn/pp_sys t/pragma/warnings.t + ! vms/test.com +____________________________________________________________________________ +[ 5425] By: bailey on 2000/03/02 04:02:44 + Log: Take advantage of new subprocess invocation (Charles Lane) + Branch: vmsperl + ! t/op/runlevel.t t/pragma/strict.t t/pragma/subs.t + ! t/pragma/warnings.t +____________________________________________________________________________ +[ 5424] By: bailey on 2000/03/02 04:00:20 + Log: Increment counter for skipped tests (Charles Lane) + Branch: vmsperl + ! t/io/open.t +____________________________________________________________________________ +[ 5423] By: bailey on 2000/03/02 03:59:14 + Log: Remove redundant elements of @INC to cope with VMS' 255-char limit + on PERL5LIB logical (Dan Sugalski) + Branch: vmsperl + ! lib/Test/Harness.pm +____________________________________________________________________________ +[ 5422] By: bailey on 2000/03/02 03:57:40 + Log: Use temp to construct dirspec in File::Find (Charles Lane) + Branch: vmsperl + ! lib/File/Find.pm +____________________________________________________________________________ +[ 5421] By: bailey on 2000/03/02 03:56:13 + Log: Satisfy various Pod::* needs for Unix syntax (Charles Lane) + (Should move to File::Spec in long term) + Branch: vmsperl + ! lib/Pod/Checker.pm lib/Pod/Parser.pm t/pod/testp2pt.pl +____________________________________________________________________________ +[ 5420] By: bailey on 2000/03/02 03:52:45 + Log: Escape \n in commands written to Descrip.MMS (Charles Lane) + Branch: vmsperl + ! lib/ExtUtils/MM_VMS.pm +____________________________________________________________________________ +[ 5419] By: bailey on 2000/03/02 03:50:53 + Log: Make File::Glob more VMS-friendly (Charles Lane) + Branch: vmsperl + ! ext/File/Glob/Glob.pm ext/File/Glob/bsd_glob.c + ! t/lib/glob-basic.t +____________________________________________________________________________ +[ 5418] By: bailey on 2000/03/02 03:47:21 + Log: Miscellaneous fixes to build procedures (Peter Prymmer) + Branch: vmsperl + ! configure.com vms/subconfigure.com +____________________________________________________________________________ +[ 5417] By: bailey on 2000/03/02 03:42:49 + Log: Temrinate statements in pp_ctl warning test (Charles Lane) + Branch: vmsperl + ! t/pragma/warn/pp_ctl +____________________________________________________________________________ +[ 5416] By: bailey on 2000/03/02 03:39:46 + Log: Warn but continue installing when file missing (Dan Sugalski) + Branch: vmsperl + ! installperl +____________________________________________________________________________ +[ 5415] By: jhi on 2000/03/01 23:31:23 + Log: Make file sparseness detection more portable (Scott Henry) + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 5414] By: jhi on 2000/03/01 22:53:48 + Log: detypo #5411 continues: Sun grep doesn't have -e. + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5413] By: jhi on 2000/03/01 22:49:44 + Log: detypo #5411 + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5412] By: gsar on 2000/03/01 20:04:42 + Log: typo in change#5408 + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 5411] By: jhi on 2000/03/01 18:48:52 + Log: Better detection of the solaris workshop compiler. + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5410] By: jhi on 2000/03/01 18:18:04 + Log: From: Robin Barker + To: perl5-porters@perl.org + Subject: solaris 64-bit and gcc + Date: Wed, 1 Mar 2000 17:59:36 GMT + Message-Id: <200003011759.RAA03938@tempest.npl.co.uk> + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5409] By: jhi on 2000/03/01 18:16:43 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/lib/env-array.t + !> MANIFEST README.cygwin ext/DynaLoader/DynaLoader_pm.PL + !> ext/DynaLoader/dlutils.c lib/AutoLoader.pm lib/AutoSplit.pm + !> lib/CGI/Carp.pm lib/CPAN.pm lib/Cwd.pm lib/Env.pm + !> lib/File/Find.pm lib/File/Spec/Mac.pm lib/File/Spec/VMS.pm + !> pod/perldebug.pod pod/perldelta.pod t/lib/env.t + !> t/lib/filefind.t t/lib/glob-basic.t +____________________________________________________________________________ +[ 5408] By: gsar on 2000/03/01 18:15:49 + Log: still more multiline match cleanups (from Greg Bacon) + Branch: perl + ! lib/ExtUtils/Install.pm lib/ExtUtils/Installed.pm + ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Unix.pm lib/FindBin.pm +____________________________________________________________________________ +[ 5407] By: jhi on 2000/03/01 18:11:09 + Log: A further patch from Spider Boardman for long doubleness. + Branch: cfgperl + ! sv.c +____________________________________________________________________________ +[ 5406] By: gsar on 2000/03/01 17:32:09 + Log: yet more multiline match cleanups (from Greg Bacon) + Branch: perl + ! lib/CPAN.pm lib/Cwd.pm +____________________________________________________________________________ +[ 5405] By: gsar on 2000/03/01 17:24:53 + Log: add support for Env arrays (from Gregor N. Purdy + ) + Branch: perl + + t/lib/env-array.t + ! MANIFEST lib/Env.pm pod/perldelta.pod t/lib/env.t +____________________________________________________________________________ +[ 5404] By: gsar on 2000/03/01 17:00:23 + Log: cygwin update (from Eric Fifer) + Branch: perl + ! README.cygwin t/lib/glob-basic.t +____________________________________________________________________________ +[ 5403] By: gsar on 2000/03/01 16:55:47 + Log: more multiline match cleanups (from Greg Bacon) + Branch: perl + ! lib/AutoLoader.pm lib/AutoSplit.pm lib/CGI/Carp.pm + ! lib/File/Spec/Mac.pm lib/File/Spec/VMS.pm +____________________________________________________________________________ +[ 5402] By: gsar on 2000/03/01 16:38:48 + Log: avoid DProf entering dl_unload_file() (from Alan Burlison) + Branch: perl + ! ext/DynaLoader/DynaLoader_pm.PL ext/DynaLoader/dlutils.c +____________________________________________________________________________ +[ 5401] By: gsar on 2000/03/01 16:35:28 + Log: fix minor compatibility issues with finddepth() (from Helmut Jarausch) + Branch: perl + ! lib/File/Find.pm t/lib/filefind.t +____________________________________________________________________________ +[ 5400] By: gsar on 2000/03/01 16:32:24 + Log: mention "r" debugger command (from Ilya Zakharevich) + Branch: perl + ! pod/perldebug.pod +____________________________________________________________________________ +[ 5399] By: jhi on 2000/03/01 14:58:33 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes configure.com ext/File/Glob/Glob.pm + !> ext/File/Glob/bsd_glob.c installperl lib/ExtUtils/MM_VMS.pm + !> lib/File/Find.pm lib/Pod/Checker.pm lib/Pod/Parser.pm + !> t/io/open.t t/io/openpid.t t/lib/glob-basic.t t/op/goto.t + !> t/op/runlevel.t t/op/split.t t/pod/testp2pt.pl + !> t/pragma/strict.t t/pragma/subs.t t/pragma/warn/8signal + !> t/pragma/warn/pp_sys t/pragma/warnings.t + !> vms/descrip_mms.template vms/subconfigure.com vms/test.com + !> vms/vms.c +____________________________________________________________________________ +[ 5398] By: gsar on 2000/03/01 07:03:13 + Log: fix testsuite issues in change#5397 + Branch: perl + ! Changes t/pragma/warn/8signal t/pragma/warn/pp_sys + ---------------- -Version 5.005_03 Third maintenance release of 5.005 +Version v5.5.670 ---------------- ____________________________________________________________________________ -[ 3198] By: gbarr on 1999/03/28 22:21:49 - Log: redo #3193 which #3195 undid - Branch: maint-5.005/perl - ! pod/perlhist.pod +[ 5397] By: gsar on 2000/03/01 06:44:42 + Log: consolidated VMS patches (from Craig A. Berry + ); Glob.pm patch modified to use + $DEFAULT_FLAGS, and iff no flags were supplied + Branch: perl + ! configure.com ext/File/Glob/Glob.pm ext/File/Glob/bsd_glob.c + ! installperl lib/ExtUtils/MM_VMS.pm lib/File/Find.pm + ! lib/Pod/Checker.pm lib/Pod/Parser.pm t/io/open.t + ! t/io/openpid.t t/lib/glob-basic.t t/op/goto.t t/op/runlevel.t + ! t/op/split.t t/pod/testp2pt.pl t/pragma/strict.t + ! t/pragma/subs.t t/pragma/warn/8signal t/pragma/warn/pp_sys + ! t/pragma/warnings.t vms/descrip_mms.template + ! vms/subconfigure.com vms/test.com vms/vms.c ____________________________________________________________________________ -[ 3197] By: gbarr on 1999/03/28 21:04:04 - Log: Updated CPAN.pm to 1.48 - Branch: maint-5.005/perl +[ 5396] By: gsar on 2000/03/01 06:28:22 + Log: integrate cfgperl changes into mainline + Branch: perl + !> ext/Fcntl/Fcntl.pm hints/solaris_2.sh pp.c sv.c +____________________________________________________________________________ +[ 5395] By: jhi on 2000/03/01 06:12:10 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/open.pm + !> MANIFEST Todo-5.6 mg.c +____________________________________________________________________________ +[ 5394] By: gsar on 2000/03/01 06:07:00 + Log: fix segfault on C + Branch: perl + ! mg.c +____________________________________________________________________________ +[ 5393] By: jhi on 2000/03/01 06:02:12 + Log: Fcntl de-cut-and-pasto. + From: Doug MacEachern + To: perl5-porters@perl.org + Subject: [PATCH v5.5.660] Fcntl.pm + Date: Tue, 29 Feb 2000 21:24:00 -0800 (PST) + Message-ID: + Branch: cfgperl + ! ext/Fcntl/Fcntl.pm +____________________________________________________________________________ +[ 5392] By: gsar on 2000/03/01 05:55:20 + Log: update Todo-5.6, add stub open.pm + Branch: perl + + lib/open.pm + ! MANIFEST Todo-5.6 +____________________________________________________________________________ +[ 5391] By: jhi on 2000/03/01 05:42:25 + Log: The 64-bitallness does require the /usr/lib/sparcv9 in loclibpth. + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5390] By: jhi on 2000/03/01 05:35:53 + Log: Couple of math functions need to be Perl_ so that + they are correctly long double, especially the frexp() + in sv_vcatpvfn() (spotted by Spider Boardman). + Branch: cfgperl + ! pp.c sv.c +____________________________________________________________________________ +[ 5389] By: jhi on 2000/03/01 05:33:54 + Log: Integrate with Sarathy. + Branch: cfgperl + +> pod/perlnumber.pod + !> Changes MANIFEST README.win32 ext/DynaLoader/DynaLoader_pm.PL + !> ext/DynaLoader/Makefile.PL ext/DynaLoader/dl_dlopen.xs + !> ext/DynaLoader/dlutils.c lib/File/Find.pm lib/Test/Harness.pm + !> pod/Makefile pod/buildtoc pod/perl.pod pod/perldelta.pod + !> pod/perlguts.pod pod/perlhack.pod pod/perlhist.pod + !> pod/perlport.pod pod/perltoc.pod pod/roffitall vms/vms.c + !> win32/perllib.c win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 5388] By: gsar on 2000/03/01 03:38:03 + Log: Windows miscellany + Branch: perl + ! pod/perlguts.pod win32/perllib.c win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 5387] By: gsar on 2000/03/01 03:13:37 + Log: mention ftp/rsync access to repository in perlhack + Branch: perl + ! Changes pod/perlhack.pod pod/perlhist.pod +____________________________________________________________________________ +[ 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 + ) + 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 + ) + 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 + ) + 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 + 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 ) + 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 + ! doop.c t/op/bop.t +____________________________________________________________________________ +[ 5316] By: gsar on 2000/02/28 07:04:22 + Log: integrate cfgperl and vmsperl changes into mainline + Branch: perl + ! Porting/makerel + !> Configure Makefile.SH config_h.SH configure.com + !> ext/DynaLoader/DynaLoader_pm.PL ext/DynaLoader/dl_vms.xs + !> hints/hpux.sh lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm + !> lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm + !> lib/File/Spec/Unix.pm lib/File/Spec/VMS.pm t/comp/script.t + !> t/io/openpid.t t/lib/cgi-html.t t/op/goto.t t/op/split.t + !> vms/descrip_mms.template vms/gen_shrfls.pl + !> vms/subconfigure.com vms/vms.c +____________________________________________________________________________ +[ 5315] By: jhi on 2000/02/28 06:31:08 + Log: The search for static _s-suffixex libs was broken; + add -L/lib/pa20_64 only iff there. + Branch: cfgperl + ! Configure config_h.SH hints/hpux.sh + Branch: metaconfig + ! U/modified/libs.U +____________________________________________________________________________ +[ 5314] By: jhi on 2000/02/28 06:08:40 + Log: Even better use64bitall logic. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! use64bits.U uselfs.U +____________________________________________________________________________ +[ 5313] By: jhi on 2000/02/28 05:47:27 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/File/Basename.pm lib/File/Find.pm lib/fields.pm + !> pod/perldelta.pod pod/perlfunc.pod pod/perlref.pod + !> t/lib/fields.t x2p/find2perl.PL +____________________________________________________________________________ +[ 5312] By: jhi on 2000/02/28 05:09:31 + Log: Ask about use64bitall regardless of whether use64bitint is defined. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! use64bits.U +____________________________________________________________________________ +[ 5311] By: bailey on 2000/02/28 05:05:56 + Log: Integrate mainline + Branch: vmsperl + !> README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c + !> ext/File/Glob/Glob.pm hints/dos_djgpp.sh lib/File/Basename.pm + !> lib/File/Find.pm lib/fields.pm op.c pod/perldelta.pod + !> pod/perlfaq5.pod pod/perlfunc.pod pod/perlop.pod + !> pod/perlref.pod pod/perlsec.pod pod/perltodo.pod pp_sys.c + !> regexec.c sv.c t/lib/fields.t t/pragma/locale.t + !> x2p/find2perl.PL +____________________________________________________________________________ +[ 5310] By: bailey on 2000/02/28 04:36:20 + Log: Revert File::Spec::Unix functions and keep VMS versions VMS-specific + Branch: vmsperl + ! lib/File/Spec/Unix.pm lib/File/Spec/VMS.pm +____________________________________________________________________________ +[ 5309] By: jhi on 2000/02/28 04:17:36 + Log: The #5249 wasn't doing any good. + Branch: cfgperl + ! Makefile.SH lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 5308] By: bailey on 2000/02/28 03:56:51 + Log: Repair typo -- conjunction of variable with text + Branch: vmsperl + ! t/lib/cgi-html.t +____________________________________________________________________________ +[ 5307] By: jhi on 2000/02/28 03:46:14 + Log: A less ambitious version of #5292. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 5306] By: bailey on 2000/02/28 03:42:38 + Log: Defer inclusion of VMS-specific code to runtime + Branch: vmsperl + ! t/io/openpid.t +____________________________________________________________________________ +[ 5305] By: jhi on 2000/02/28 03:41:48 + Log: The #5292 was Not So Good Idea. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 5304] By: bailey on 2000/02/28 02:57:14 + Log: Minor test updates to accomodate new subprocess invocation + Branch: vmsperl + ! t/comp/script.t t/op/goto.t t/op/split.t +____________________________________________________________________________ +[ 5303] By: bailey on 2000/02/28 02:52:47 + Log: Missed bit of #5302 (case-sensitive symbols) + Branch: vmsperl + ! lib/ExtUtils/Mksymlists.pm +____________________________________________________________________________ +[ 5302] By: bailey on 2000/02/28 02:51:00 + Log: Support case-sensitive symbols usage in linker + Branch: vmsperl + ! ext/DynaLoader/DynaLoader_pm.PL ext/DynaLoader/dl_vms.xs + ! lib/ExtUtils/MM_VMS.pm vms/gen_shrfls.pl +____________________________________________________________________________ +[ 5301] By: bailey on 2000/02/28 02:46:47 + Log: Free $PARSE context after lookups + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5300] By: bailey on 2000/02/28 02:43:56 + Log: Don't wait for subprocess to read final EOF + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5299] By: bailey on 2000/02/28 00:44:45 + Log: Dan Sugalski's config/build changes to .660 + Branch: vmsperl + ! configure.com vms/descrip_mms.template vms/subconfigure.com +____________________________________________________________________________ +[ 5298] By: bailey on 2000/02/28 00:07:13 + Log: When testing CGI.pm, use its notion of CRLF + Branch: vmsperl + ! t/lib/cgi-html.t +____________________________________________________________________________ +[ 5297] By: bailey on 2000/02/28 00:00:08 + Log: Quote command line args which need to be upper case + Tell subprocess we're finished before waiting for it + Branch: vmsperl + ! t/io/openpid.t +____________________________________________________________________________ +[ 5296] By: gsar on 2000/02/28 00:00:05 + Log: m/.*$/ etc should be m/.*\z/s in many file handling modules; fix + these insidious errors in File::Basename, File::Find and find2perl + (from Tom Christiansen) + + TODO: many other modules need to be fixed as well! + Branch: perl + ! lib/File/Basename.pm lib/File/Find.pm x2p/find2perl.PL +____________________________________________________________________________ +[ 5295] By: jhi on 2000/02/27 23:18:40 + Log: Version number update. + Branch: cfgperl + ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 5294] By: gsar on 2000/02/27 22:27:46 + Log: typos in change#5293 + Branch: perl + ! lib/fields.pm +____________________________________________________________________________ +[ 5293] By: gsar on 2000/02/27 21:57:40 + Log: support fields::new() and fields::phash() to create pseudo-hash + objects and plain pseudo-hashes respectively (this avoids users + from having to diddle %FIELDS directly); update documentation to + suit (from original fields::phash() implementation by Peter + Scott ) + Branch: perl + ! lib/fields.pm pod/perldelta.pod pod/perlfunc.pod + ! pod/perlref.pod t/lib/fields.t +____________________________________________________________________________ +[ 5292] By: jhi on 2000/02/27 21:49:25 + Log: proto.h was mssing from the list of generated files; + added rules to generate any single wanted file + (a bunch of other files may also be generated + at the same time, as before) + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 5291] By: jhi on 2000/02/27 18:57:12 + Log: Integrate with Sarathy. + Branch: cfgperl + !> README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c + !> ext/File/Glob/Glob.pm hints/dos_djgpp.sh lib/File/Spec/OS2.pm + !> lib/File/Spec/Unix.pm lib/File/Spec/VMS.pm + !> lib/File/Spec/Win32.pm op.c pod/perldelta.pod pod/perlfaq5.pod + !> pod/perlfunc.pod pod/perlop.pod pod/perlsec.pod + !> pod/perltodo.pod pp_sys.c sv.c vms/perlvms.pod vms/vms.c +____________________________________________________________________________ +[ 5290] By: gsar on 2000/02/27 18:47:00 + Log: integrate cfgperl and vmsperl contents into mainline + Branch: perl + !> lib/File/Spec/OS2.pm lib/File/Spec/Unix.pm + !> lib/File/Spec/VMS.pm lib/File/Spec/Win32.pm regexec.c + !> t/pragma/locale.t vms/perlvms.pod vms/vms.c +____________________________________________________________________________ +[ 5289] By: gsar on 2000/02/27 18:09:04 + Log: tweak change#5286 (we don't ever get to pp_glob() if we're using + the internal glob()) + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 5288] By: gsar on 2000/02/27 17:12:41 + Log: djgpp update (from Laszlo Molnar) + Branch: perl + ! README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c + ! hints/dos_djgpp.sh +____________________________________________________________________________ +[ 5287] By: gsar on 2000/02/27 16:58:53 + Log: tweak comment about core glob() + Branch: perl + ! ext/File/Glob/Glob.pm +____________________________________________________________________________ +[ 5286] By: gsar on 2000/02/27 16:52:54 + Log: remove outdated info about csh and glob(); glob() need not fail + when tainting anymore if using internal globbing + Branch: perl + ! pod/perldelta.pod pod/perlfaq5.pod pod/perlfunc.pod + ! pod/perlop.pod pod/perlsec.pod pod/perltodo.pod pp_sys.c +____________________________________________________________________________ +[ 5285] By: gsar on 2000/02/27 16:20:31 + Log: make readdir() respect IOf_UNTAINT flag (allows untainting of directory + handles with: Cuntaint;> + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 5284] By: gsar on 2000/02/27 14:31:24 + Log: avoid compiler warnings (from Dan Sugalski) + Branch: perl + ! op.c sv.c +____________________________________________________________________________ +[ 5283] By: gsar on 2000/02/27 14:21:16 + Log: propagate utf8ness in sv_setsv() (from Gisle Aas) + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5282] By: bailey on 2000/02/27 05:07:08 + Log: Impose security constraints on lnm lookup only if tainting + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 5281] By: bailey on 2000/02/27 05:05:35 + Log: Add new File::Spec::VMS methods + Don't add implicit device in VMS <-> Unix filespec translation + Make File::Spec::Unix{rel2abs|abs2rel} OS-independent + Branch: vmsperl + ! lib/File/Spec/OS2.pm lib/File/Spec/Unix.pm + ! lib/File/Spec/VMS.pm lib/File/Spec/Win32.pm vms/vms.c +____________________________________________________________________________ +[ 5280] By: bailey on 2000/02/27 04:58:01 + Log: Accept filespecs as command verbs for subprocesses + Branch: vmsperl + ! vms/perlvms.pod vms/vms.c +____________________________________________________________________________ +[ 5279] By: jhi on 2000/02/27 04:01:53 + Log: Integrate with Sarathy. + Branch: cfgperl + !> pp_hot.c +____________________________________________________________________________ +[ 5278] By: bailey on 2000/02/27 02:43:01 + Log: Resync with mainline again + Branch: vmsperl + !> Makefile.SH README.vms configure.com lib/ExtUtils/MM_Unix.pm + !> lib/Pod/Checker.pm lib/Pod/InputObjects.pm + !> lib/Pod/ParseUtils.pm lib/Pod/Parser.pm lib/Pod/Select.pm + !> lib/Pod/Usage.pm pod/perlfunc.pod pp_hot.c t/pod/poderrs.t + !> t/pod/poderrs.xr vms/descrip_mms.template vms/sockadapt.h + !> vms/subconfigure.com +____________________________________________________________________________ +[ 5277] By: jhi on 2000/02/27 02:36:36 + Log: Fix locale case-ignorant matching bug reported in + + From: gomar@md.media-web.de + To: perl5-porters@perl.org + Subject: [ID 20000223.005] + Date: 23 Feb 2000 16:03:08 -0000 + Message-Id: <20000223160308.1830.qmail@md.media-web.de> + Branch: cfgperl + ! regexec.c t/pragma/locale.t +____________________________________________________________________________ +[ 5276] By: gsar on 2000/02/26 18:18:16 + Log: allow $fh->autoflush on globrefs, and thence autovivified filehandles + (from Tom Christiansen) + Branch: perl + ! pp_hot.c +____________________________________________________________________________ +[ 5275] By: jhi on 2000/02/26 16:43:11 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 34 files) +____________________________________________________________________________ +[ 5274] By: gsar on 2000/02/26 15:23:45 + Log: rework binmode() entry in perlfunc (from Martien Verbruggen + ) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5273] By: gsar on 2000/02/26 15:04:54 + Log: PodParser v1.11 update (from Brad Appleton) + Branch: perl + ! lib/Pod/Checker.pm lib/Pod/InputObjects.pm + ! lib/Pod/ParseUtils.pm lib/Pod/Parser.pm lib/Pod/Select.pm + ! lib/Pod/Usage.pm t/pod/poderrs.t t/pod/poderrs.xr +____________________________________________________________________________ +[ 5272] By: gsar on 2000/02/26 14:48:24 + Log: add missing perl headers to perldepend action + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 5271] By: gsar on 2000/02/26 08:03:36 + Log: VMS patch (from Peter Prymmer) + Branch: perl + ! Makefile.SH README.vms configure.com vms/descrip_mms.template + ! vms/sockadapt.h vms/subconfigure.com +____________________________________________________________________________ +[ 5270] By: gsar on 2000/02/26 07:46:35 + Log: integrate vmsperl changes into mainline + Branch: perl + !> av.c configure.com installperl lib/ExtUtils/MM_VMS.pm mg.h + !> pp_sys.c scope.c vms/vms.c vms/vmsish.h +____________________________________________________________________________ +[ 5269] By: bailey on 2000/02/26 07:04:55 + Log: Resync with mainline + Branch: vmsperl + +> cygwin/cygwin.c ext/DynaLoader/dl_dyld.xs + +> ext/Sys/Hostname/Hostname.pm ext/Sys/Hostname/Hostname.xs + +> ext/Sys/Hostname/Makefile.PL hints/darwin.sh lib/bytes.pm + +> lib/bytes_heavy.pl t/pragma/warn/9enabled + - ext/DynaLoader/dl_rhapsody.xs lib/Sys/Hostname.pm lib/byte.pm + - lib/byte_heavy.pl lib/unicode/Eq/Latin1.pl + - lib/unicode/Eq/Unicode.pl + !> (integrate 323 files) +____________________________________________________________________________ +[ 5268] By: gsar on 2000/02/26 06:50:04 + Log: reintroduce useithreads (accidentally deleted in change#5261) + Branch: perl + ! win32/config.vc +____________________________________________________________________________ +[ 5266] By: gsar on 2000/02/26 06:46:06 + Log: integrate cfgperl changes into mainline + Branch: perl + +> cygwin/cygwin.c ext/DynaLoader/dl_dyld.xs hints/darwin.sh + - ext/DynaLoader/dl_rhapsody.xs + !> (integrate 62 files) +____________________________________________________________________________ +[ 5265] By: gsar on 2000/02/26 06:31:10 + Log: support for version vectors in UNIVERSAL::VERSION(), so that + C etc., work; tests for the same + + TODO: XS_VERSION_BOOTCHECK needs to be revisited in light of this + Branch: perl + ! embed.h embed.pl global.sym objXSUB.h perlapi.c proto.h + ! t/comp/use.t toke.c universal.c +____________________________________________________________________________ +[ 5264] By: jhi on 2000/02/26 04:14:15 + Log: Add libscheck for IRIX. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5263] By: jhi on 2000/02/26 03:40:47 + Log: Add libscheck for Solaris. + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5262] By: jhi on 2000/02/26 03:10:47 + Log: Rhapsody/Darwin patches from Wilfredo Sanchez. + Branch: cfgperl + + ext/DynaLoader/dl_dyld.xs hints/darwin.sh + - ext/DynaLoader/dl_rhapsody.xs + ! Configure INSTALL MANIFEST Makefile.SH README.threads + ! config_h.SH hints/rhapsody.sh installperl pp_sys.c + Branch: metaconfig + ! U/a_dvisory/multiarch.U +____________________________________________________________________________ +[ 5261] By: jhi on 2000/02/26 02:48:23 + Log: Rename use64bits to use64bitint; + rename usefull64bits to use64bitall. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH configure.com epoc/config.sh hints/aix.sh + ! hints/hpux.sh hints/irix_4.sh hints/irix_5.sh hints/irix_6.sh + ! hints/irix_6_0.sh hints/irix_6_1.sh hints/solaris_2.sh + ! myconfig.SH perl.c perl.h pod/perldelta.pod pod/perlfunc.pod + ! vms/subconfigure.com vos/config.def vos/config.h + ! vos/config_h.SH_orig win32/config.bc win32/config.gc + ! win32/config.vc win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc + Branch: metaconfig + ! U/a_dvisory/quadtype.U U/mksample U/modified/libpth.U + ! U/protos/socksizetype.U U/threads/archname.U + Branch: metaconfig/U/perl + ! Extensions.U dbm64.U perlxv.U stdio64.U use64bits.U uselfs.U + ! usemorebits.U +____________________________________________________________________________ +[ 5260] By: jhi on 2000/02/25 22:57:16 + Log: From: "Fifer, Eric" + To: "'perl5-porters@perl.org'" + Subject: [PATCH 5.5.660] cygwin port + Message-ID: <779F20BCCE5AD31186A50008C75D99791716E2@SILLDN_MAIL1> + Branch: cfgperl + ! README.cygwin cygwin/Makefile.SHs cygwin/cygwin.c +____________________________________________________________________________ +[ 5259] By: jhi on 2000/02/25 22:53:51 + Log: Configure nits; add socksizetype; add getfsstat for completeness; + add lseekproto, usefull64bits, socksizetype getfsstat to non-UNIX + lands; regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH doio.c epoc/config.sh perl.c pp_sys.c + ! vms/subconfigure.com vos/config.def win32/config.bc + ! win32/config.gc win32/config.vc win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc + Branch: metaconfig + + U/protos/socksizetype.U + Branch: metaconfig/U/perl + + d_getfsstat.U + ! d_fstatfs.U fpossize.U use64bits.U uselfs.U +____________________________________________________________________________ +[ 5258] By: jhi on 2000/02/25 21:04:17 + Log: Further fixes to malloc.c prototypes from Dominic Dunlop. + Branch: cfgperl + ! malloc.c +____________________________________________________________________________ +[ 5257] By: jhi on 2000/02/25 20:48:13 + Log: Integrate with Sarathy. + Branch: cfgperl + !> embed.h embed.pl objXSUB.h op.c op.h perlapi.c pp_ctl.c + !> proto.h t/cmd/while.t +____________________________________________________________________________ +[ 5256] By: gsar on 2000/02/25 20:04:37 + Log: fix missing perl_alloc() declaration under PERL_IMPLICIT_SYS + Branch: perl + ! embed.h embed.pl objXSUB.h perlapi.c proto.h +____________________________________________________________________________ +[ 5255] By: gsar on 2000/02/25 19:23:58 + Log: change#4849 wasn't restoring savestack correctly; make loops that have + continue blocks recognizable at run time + Branch: perl + ! op.c op.h pp_ctl.c t/cmd/while.t +____________________________________________________________________________ +[ 5254] By: jhi on 2000/02/25 06:00:01 + Log: Integrate with Sarathy. + Branch: cfgperl + !> ext/B/B.xs ext/B/B/C.pm lib/Pod/InputObjects.pm + !> lib/Pod/Parser.pm lib/Pod/Select.pm lib/Pod/Usage.pm + !> t/lib/filefind.t t/pod/poderrs.xr +____________________________________________________________________________ +[ 5253] By: jhi on 2000/02/25 05:57:59 + Log: Megalopatch for Configure: Andy's new installation schemes; + introduce usefull64bits, beautify and regularize the various + type probes; introduce d_lseekproto. + Branch: cfgperl + ! Configure INSTALL Policy_sh.SH config_h.SH perl.h + ! pod/perldelta.pod + Branch: metaconfig + + U/installdirs/perl5.U U/installdirs/sitehtml1.U + + U/installdirs/sitehtml3.U U/installdirs/siteman1.U + + U/installdirs/siteman3.U U/installdirs/sitescript.U + + U/installdirs/vendorhtml1.U U/installdirs/vendorhtml3.U + + U/installdirs/vendorman1.U U/installdirs/vendorman3.U + + U/installdirs/vendorscript.U U/protos/d_lseekproto.U + - U/installdirs/vendorhtml1dir.U U/installdirs/vendorhtml3dir.U + - U/installdirs/vendorman1dir.U U/installdirs/vendorman3dir.U + - U/installdirs/vendorscriptdir.U + ! U/compline/doublesize.U U/compline/ptrsize.U + ! U/installdirs/archlib.U U/installdirs/bin.U + ! U/installdirs/html1dir.U U/installdirs/html3dir.U + ! U/installdirs/inc_version_list.U U/installdirs/installprefix.U + ! U/installdirs/installstyle.U U/installdirs/instubperl.U + ! U/installdirs/localarch.U U/installdirs/locallib.U + ! U/installdirs/otherlibdirs.U U/installdirs/prefix.U + ! U/installdirs/privlib.U U/installdirs/scriptdir.U + ! U/installdirs/sitearch.U U/installdirs/sitebin.U + ! U/installdirs/sitelib.U U/installdirs/siteprefix.U + ! U/installdirs/vendorarch.U U/installdirs/vendorbin.U + ! U/installdirs/vendorlib.U U/installdirs/vendorprefix.U + ! U/modified/d_longdbl.U U/modified/d_longlong.U + ! U/typedefs/gidsize.U U/typedefs/lseektype.U + ! U/typedefs/uidsize.U + Branch: metaconfig/U/perl + ! d_fpos64_t.U d_int64_t.U d_off64_t.U d_socklen_t.U fpossize.U + ! patchlevel.U use64bits.U uselfs.U usemultiplicity.U +____________________________________________________________________________ +[ 5252] By: gsar on 2000/02/25 03:15:03 + Log: update PodParser to v1.10 (from Brad Appleton) + Branch: perl + ! lib/Pod/InputObjects.pm lib/Pod/Parser.pm lib/Pod/Select.pm + ! lib/Pod/Usage.pm t/pod/poderrs.xr +____________________________________________________________________________ +[ 5251] By: gsar on 2000/02/25 03:10:51 + Log: make File::Find tests tolerate case-insensitive systems (from + Laszlo Molnar) + Branch: perl + ! t/lib/filefind.t +____________________________________________________________________________ +[ 5250] By: gsar on 2000/02/25 01:50:04 + Log: more Compiler tweaks for useithreads + Branch: perl + ! ext/B/B.xs ext/B/B/C.pm +____________________________________________________________________________ +[ 5249] By: jhi on 2000/02/25 00:17:53 + Log: Remove NFS temp files and Configure temp C files. + Branch: cfgperl + ! Makefile.SH lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 5248] By: jhi on 2000/02/24 23:57:49 + Log: In FreeBSD disable floating point exception handlers. + As the comment says, this should be done in the hints. + + From: dive + To: "M.J.T. Guy" + cc: perl5-porters@perl.org + Subject: Re: [ID 20000216.004] apparent bug on freebsd systems when calculating large numbers + Date: Thu, 24 Feb 2000 15:54:24 -0800 (PST) + Message-ID: + Branch: cfgperl + ! unixish.h +____________________________________________________________________________ +[ 5247] By: jhi on 2000/02/24 23:46:27 + Log: From: Gisle Aas + To: perl5-porters@perl.org + Subject: [PATCH v5.5.660] More UTF8_MAXLEN fixes + Date: 25 Feb 2000 00:24:53 +0100 + Message-ID: + Branch: cfgperl + ! doop.c op.c perl.c pp.c regcomp.c regexec.c sv.c +____________________________________________________________________________ +[ 5246] By: jhi on 2000/02/24 23:15:56 + Log: The op/stat.t patch in #5341 wasn't robust enough, + it broke subtest 4 almost everywhere else. + Branch: cfgperl + ! t/op/stat.t +____________________________________________________________________________ +[ 5245] By: jhi on 2000/02/24 19:28:53 + Log: More VMS patches from Peter Prymmer. + Branch: cfgperl + ! configure.com vms/subconfigure.com +____________________________________________________________________________ +[ 5244] By: jhi on 2000/02/24 19:26:33 + Log: Largefileness in Solaris doesn't require long longs; + use64bits enhancements; introduce usefull64bits. + Branch: cfgperl + ! Configure config_h.SH hints/aix.sh hints/hpux.sh + ! hints/irix_6.sh hints/solaris_2.sh + Branch: metaconfig + ! U/threads/archname.U + Branch: metaconfig/U/perl + ! use64bits.U +____________________________________________________________________________ +[ 5243] By: jhi on 2000/02/24 18:40:25 + Log: Tidy up the 64-bit (and socklen_t) type probing. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/d_longdbl.U U/modified/d_longlong.U + Branch: metaconfig/U/perl + + d_fpos64_t.U d_off64_t.U + - io64.U + ! d_int64_t.U d_socklen_t.U +____________________________________________________________________________ +[ 5242] By: jhi on 2000/02/24 18:09:49 + Log: Integrate with Sarathy. + Branch: cfgperl + !> pod/perlop.pod +____________________________________________________________________________ +[ 5241] By: jhi on 2000/02/24 18:00:49 + Log: From: "Fifer, Eric" + To: "'perl5-porters@perl.org'" + Subject: [PATCH 5.5.660] cygwin port + Date: Thu, 24 Feb 2000 17:15:28 -0000 + Message-ID: <779F20BCCE5AD31186A50008C75D99791716E1@SILLDN_MAIL1> + Branch: cfgperl + + cygwin/cygwin.c + ! MANIFEST Makefile.SH README.cygwin cygwin/Makefile.SHs + ! hints/cygwin.sh perl.c t/lib/glob-basic.t t/op/stat.t +____________________________________________________________________________ +[ 5240] By: jhi on 2000/02/24 17:53:12 + Log: VMS patch from Peter Prymmer; use full_ar. + Branch: cfgperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 5239] By: jhi on 2000/02/24 17:46:45 + Log: MPE/ix patches from Mark Bixby. + Branch: cfgperl + ! pp_sys.c t/io/pipe.t t/lib/glob-basic.t t/lib/io_poll.t + ! t/lib/io_sock.t t/op/die_exit.t t/op/exec.t t/op/fork.t + ! t/op/stat.t +____________________________________________________________________________ +[ 5238] By: jhi on 2000/02/24 17:13:22 + Log: Get -lbind if available. Add pointer to perldelta.pod/64-bit + support to t/op/numconvert.t. + + From: Lupe Christoph + To: perl5-porters@perl.org + Subject: [ID 20000224.003] Not OK: perl v5.5.660 on i86pc-solaris 2.7 + Date: Thu, 24 Feb 2000 11:54:50 +0100 (MET) + Message-Id: <200002241054.LAA06808@lupe-christoph.de> + Branch: cfgperl + ! Configure config_h.SH t/op/numconvert.t + Branch: metaconfig + ! U/modified/libs.U +____________________________________________________________________________ +[ 5237] By: jhi on 2000/02/24 15:47:11 + Log: Remove more cruft from IO. + Branch: cfgperl + ! ext/IO/IO.xs +____________________________________________________________________________ +[ 5236] By: jhi on 2000/02/24 15:14:48 + Log: From: Hugo + To: perl5-porters@perl.org + Subject: [PATCH 5.5.660] double EXPORT_OK in h2xs + Date: Thu, 24 Feb 2000 13:24:10 +0000 + Message-Id: <200002241324.NAA05900@crypt.compulink.co.uk> + Branch: cfgperl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 5235] By: jhi on 2000/02/24 15:12:40 + Log: Some Windows setups do not have S_IRGRP, S_IWGRP, S_IXGRP, + S_IROTH, S_IWOTH, S_IXOTH. + + From: js@ddre.dk + To: perl5-porters@perl.org + Subject: [ID 20000224.004] Not OK: perl v5.5.660 on MSWin32-x86 4.0 + Date: Thu, 24 Feb 2000 15:11:33 +0100 + Message-Id: <2991B60B9F72D011811C0000F821BB4C983B0C@freja.ddre.dk> + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 5234] By: gsar on 2000/02/24 03:39:17 + Log: integrate cfgperl changes into mainline + Branch: perl + - lib/unicode/Eq/Latin1.pl lib/unicode/Eq/Unicode.pl + ! pod/perlop.pod + !> Configure MANIFEST Porting/Glossary Porting/config.sh + !> Porting/config_H config_h.SH configpm configure.com doio.c + !> ext/Fcntl/Fcntl.pm ext/IO/IO.xs ext/IO/lib/IO/Socket.pm + !> ext/Sys/Hostname/Hostname.xs hints/dec_osf.sh hints/irix_6.sh + !> lib/unicode/mktables.PL malloc.c myconfig.SH pp_sys.c + !> t/op/64bit.t vms/descrip_mms.template vms/subconfigure.com +____________________________________________________________________________ +[ 5233] By: jhi on 2000/02/24 01:31:38 + Log: VMS patch from Peter Prymmer. + Branch: cfgperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 5232] By: jhi on 2000/02/24 01:15:03 + Log: Detypo fpos64_t test. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! io64.U +____________________________________________________________________________ +[ 5231] By: jhi on 2000/02/24 01:11:17 + Log: miscut'n'paste in #5230. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! d_int64_t.U +____________________________________________________________________________ +[ 5230] By: jhi on 2000/02/24 01:02:05 + Log: The #5228 wasn't quite right + fix typos. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/d_longdbl.U U/modified/d_longlong.U + Branch: metaconfig/U/perl + ! d_int64_t.U d_socklen_t.U io64.U +____________________________________________________________________________ +[ 5229] By: jhi on 2000/02/24 00:40:01 + Log: Depickify the compiler (about unused and set but not used variables) + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5228] By: jhi on 2000/02/24 00:34:35 + Log: Cosmetics. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/d_longdbl.U U/modified/d_longlong.U + Branch: metaconfig/U/perl + ! d_int64_t.U d_socklen_t.U +____________________________________________________________________________ +[ 5227] By: jhi on 2000/02/24 00:17:34 + Log: In IRIX is something completely different. + + From: jarausch@numa1.igpm.rwth-aachen.de (Helmut Jarausch) + To: perl5-porters@perl.org + Subject: [ID 20000223.003] Not OK: perl v5.5.660 on IP26-irix 6.5 + Date: Wed, 23 Feb 2000 10:55:08 +0100 (CST) + Message-Id: <200002230955.KAA89136@numa1.igpm.rwth-aachen.de> + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 5226] By: jhi on 2000/02/23 20:39:28 + Log: Integrate with Sarathy. + Branch: cfgperl + !> pod/perldelta.pod pod/perlfunc.pod pod/perlop.pod + !> t/comp/require.t t/op/ver.t toke.c +____________________________________________________________________________ +[ 5225] By: jhi on 2000/02/23 20:35:58 + Log: From: Dominic Dunlop + To: perl5-porters@perl.org + Cc: Gurusamy Sarathy + Subject: [ID 20000223.008] [PATCH 5.5.660] squash malloc.c compile warnings + Date: Wed, 23 Feb 2000 21:23:44 +0100 + Message-Id: + Branch: cfgperl + ! malloc.c +____________________________________________________________________________ +[ 5224] By: jhi on 2000/02/23 20:22:43 + Log: From: Dan Sugalski + To: perl5-porters@perl.org, vmsperl@perl.org + Subject: [PATCH 5.5.660]VMS build patches + Date: Wed, 23 Feb 2000 15:14:27 -0500 + Message-Id: <4.3.0.20000223151302.01efa560@24.8.96.48> + + (the patch was mangled, had to be manually applied) + Branch: cfgperl + ! configure.com vms/descrip_mms.template vms/subconfigure.com +____________________________________________________________________________ +[ 5223] By: jhi on 2000/02/23 19:54:04 + Log: From: Dominic Dunlop + To: perl5-porters@perl.org + Cc: Andy Dougherty , + Gurusamy Sarathy + Subject: [ID 20000223.007] [PATCH 5.5.660] $@ unsafe in Configure sed arguments + Date: Wed, 23 Feb 2000 20:41:54 +0100 + Message-Id: + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Oldconfig.U U/modified/libs.U + Branch: metaconfig/U/perl + ! dlsrc.U +____________________________________________________________________________ +[ 5222] By: jhi on 2000/02/23 18:02:39 + Log: Remove &IO::EINPROGRESS now that IO uses Errno anyway + (suggested by Graham Barr). + Branch: cfgperl + ! ext/IO/IO.xs ext/IO/lib/IO/Socket.pm +____________________________________________________________________________ +[ 5221] By: jhi on 2000/02/23 16:00:29 + Log: Streamline #5218 even more. + Branch: cfgperl + ! ext/IO/lib/IO/Socket.pm +____________________________________________________________________________ +[ 5220] By: gsar on 2000/02/23 09:10:43 + Log: per Larry's idea, parse 1.2.3 as v1.2.3; C and + C work as well; underscores are now permitted in v-strings + Branch: perl + ! pod/perldelta.pod pod/perlfunc.pod pod/perlop.pod + ! t/comp/require.t t/op/ver.t toke.c +____________________________________________________________________________ +[ 5219] By: jhi on 2000/02/23 04:24:54 + Log: Streamline #5218. + Branch: cfgperl + ! ext/IO/lib/IO/Socket.pm +____________________________________________________________________________ +[ 5218] By: jhi on 2000/02/23 02:08:19 + Log: Trying to connect to an already open socket may give EISCONN. + Branch: cfgperl + ! ext/IO/lib/IO/Socket.pm +____________________________________________________________________________ +[ 5217] By: jhi on 2000/02/22 23:54:51 + Log: Fix prototype conflicts with POSIX.pm. + Branch: cfgperl + ! ext/Fcntl/Fcntl.pm +____________________________________________________________________________ +[ 5216] By: jhi on 2000/02/22 22:27:19 + Log: See http://www.unicode.org/unicode/reports/tr15/ + for in-depth description of the problem. + Branch: cfgperl + - lib/unicode/Eq/Latin1.pl lib/unicode/Eq/Unicode.pl + ! MANIFEST lib/unicode/mktables.PL +____________________________________________________________________________ +[ 5215] By: jhi on 2000/02/22 22:11:17 + Log: Add uselongdouble, regroup the use* more logically. + Branch: cfgperl + ! myconfig.SH +____________________________________________________________________________ +[ 5214] By: jhi on 2000/02/22 22:04:43 + Log: Integrate with Sarathy. + Branch: cfgperl + !> malloc.c perl.c pod/perldelta.pod pod/perldiag.pod + !> pod/perlpod.pod pod/perlrun.pod toke.c utils/perldoc.PL +____________________________________________________________________________ +[ 5213] By: jhi on 2000/02/22 22:03:26 + Log: Add socklen_t probe; Configure maintenance. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH doio.c ext/Sys/Hostname/Hostname.xs pp_sys.c + Branch: metaconfig + ! U/a_dvisory/quadtype.U U/compline/alignbytes.U U/modified/cc.U + ! U/modified/libs.U + Branch: metaconfig/U/perl + + d_int64_t.U d_socklen_t.U + - d_int64t.U + ! i_sysutsname.U +____________________________________________________________________________ +[ 5212] By: gsar on 2000/02/22 21:46:45 + Log: make Perl's malloc work for allocations over 2GB (from Ilya + Zakharevich) + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 5211] By: gsar on 2000/02/22 19:51:47 + Log: add -W and -X to -h output; fix other pod omissions + Branch: perl + ! perl.c pod/perlrun.pod +____________________________________________________________________________ +[ 5210] By: gsar on 2000/02/22 19:51:13 + Log: describe C<< ... >> in perlpod.pod (from Brad Appleton) + Branch: perl + ! pod/perlpod.pod +____________________________________________________________________________ +[ 5209] By: jhi on 2000/02/22 19:40:43 + Log: The subtests 28 and 31 were wrong. Tightened also the similar + tests nearby. + Branch: cfgperl + ! t/op/64bit.t +____________________________________________________________________________ +[ 5208] By: gsar on 2000/02/22 19:13:44 + Log: s/Activeware/ActiveState/ + Branch: perl + ! pod/perlrun.pod +____________________________________________________________________________ +[ 5207] By: jhi on 2000/02/22 18:38:29 + Log: Perl version nit spotted by Spider Boardman. + Branch: cfgperl + ! configpm +____________________________________________________________________________ +[ 5206] By: gsar on 2000/02/22 17:50:44 + Log: change#5205 wasn't quite right; SvCUR() should be SvLEN() + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 5205] By: gsar on 2000/02/22 17:36:26 + Log: fix memory overrun due to off-by-one in change#5192 + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 5204] By: gsar on 2000/02/22 17:10:39 + Log: sundry typos and such + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod utils/perldoc.PL +____________________________________________________________________________ +[ 5203] By: jhi on 2000/02/22 17:10:22 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 56 files) +____________________________________________________________________________ +[ 5202] By: gsar on 2000/02/22 16:48:58 + Log: remove vestiges of older attribute syntax + Branch: perl + ! ext/attrs/attrs.pm pod/Win32.pod pod/perldelta.pod + ! pod/perlop.pod pod/perlthrtut.pod pod/perlvar.pod +____________________________________________________________________________ +[ 5201] By: jhi on 2000/02/22 14:39:56 + Log: Configure nits spotted by Spider Boardman. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/libs.U + Branch: metaconfig/U/perl + ! fpossize.U +____________________________________________________________________________ +[ 5200] By: jhi on 2000/02/22 14:31:21 + Log: Tru64 V5.0 patches from Spider Boardman. + Branch: cfgperl + ! hints/dec_osf.sh + +---------------- +Version v5.5.660 +---------------- + +____________________________________________________________________________ +[ 5199] By: gsar on 2000/02/22 11:29:28 + Log: beta2 + Branch: perl + ! Changes +____________________________________________________________________________ +[ 5198] By: gsar on 2000/02/22 10:45:54 + Log: PodParser-1.093 update (from Brad Appleton's site) + Branch: perl + ! lib/Pod/Checker.pm lib/Pod/Find.pm lib/Pod/InputObjects.pm + ! lib/Pod/ParseUtils.pm lib/Pod/Parser.pm lib/Pod/Select.pm + ! lib/Pod/Usage.pm t/pod/poderrs.t t/pod/poderrs.xr + ! t/pod/special_seqs.t t/pod/special_seqs.xr +____________________________________________________________________________ +[ 5197] By: gsar on 2000/02/22 10:24:13 + Log: integrate cfgperl contents into mainline, update Changes + Branch: perl + ! Changes pod/perlhist.pod + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH hints/solaris_2.sh malloc.c perl.h + !> pod/perldelta.pod +____________________________________________________________________________ +[ 5196] By: gsar on 2000/02/22 10:10:36 + Log: dos-djgpp updates (from Laszlo Molnar ) + Branch: perl + ! djgpp/config.over djgpp/configure.bat djgpp/djgppsed.sh + ! t/lib/glob-basic.t t/lib/glob-case.t t/lib/glob-global.t + ! t/lib/glob-taint.t t/lib/io_unix.t +____________________________________________________________________________ +[ 5195] By: gsar on 2000/02/22 10:01:49 + Log: s/undef/NO_INIT/g in change#5183 + Branch: perl + ! lib/ExtUtils/xsubpp pod/perlxs.pod +____________________________________________________________________________ +[ 5194] By: gsar on 2000/02/22 09:44:07 + Log: perlipc bug (spotted by Ben Low) + Branch: perl + ! pod/perlipc.pod +____________________________________________________________________________ +[ 5193] By: gsar on 2000/02/22 09:38:58 + Log: EPOC port update (from Olaf Flebbe ) + Branch: perl + ! README.epoc epoc/config.sh epoc/createpkg.pl perl.c +____________________________________________________________________________ +[ 5192] By: gsar on 2000/02/22 09:26:06 + Log: improvements for high-bit text literals (from Gisle Aas) + Branch: perl + ! t/pragma/warn/doop t/pragma/warn/pp t/pragma/warn/sv + ! t/pragma/warn/toke t/pragma/warn/utf8 toke.c +____________________________________________________________________________ +[ 5191] By: gsar on 2000/02/22 07:35:47 + Log: allow C, $h{v13.10} etc. + Branch: perl + ! t/op/ver.t toke.c +____________________________________________________________________________ +[ 5190] By: gsar on 2000/02/22 05:35:27 + Log: adjust for lost fp precision in require version check + Branch: perl + ! pp_ctl.c t/comp/require.t +____________________________________________________________________________ +[ 5189] By: jhi on 2000/02/22 05:14:35 + Log: Check the alignment of long doubles if they are to be used; + regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH + Branch: metaconfig + ! U/compline/alignbytes.U +____________________________________________________________________________ +[ 5188] By: gsar on 2000/02/22 04:45:57 + Log: use same treatment for EINVAL as for ETIMEDOUT + Branch: perl + ! ext/IO/lib/IO/Socket/INET.pm +____________________________________________________________________________ +[ 5187] By: gsar on 2000/02/21 23:15:12 + Log: type mismatch + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5186] By: gsar on 2000/02/21 21:10:26 + Log: remove dual-valueness of v-strings (i.e., they are pure strings + now); avoid the word "tuple" to describe strings represented as + character ordinals; usurp $PERL_VERSION for $^V as suggested by + Larry, deprecate $] ; adjust the documentation and testsuite + accordingly + Branch: perl + ! MANIFEST lib/English.pm op.c pod/perldelta.pod + ! pod/perlfunc.pod pod/perlop.pod pod/perlvar.pod + ! t/comp/require.t t/op/ver.t toke.c +____________________________________________________________________________ +[ 5185] By: jhi on 2000/02/21 20:36:05 + Log: detypo + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 5184] By: gsar on 2000/02/21 18:37:38 + Log: clarify "use Module VERSION LIST" (from Robin Barker) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5183] By: gsar on 2000/02/21 18:31:42 + Log: allow optional XSUB parameters without being forced to use a + default (from Hugo van der Sanden) + Branch: perl + ! lib/ExtUtils/xsubpp pod/perlfunc.pod pod/perlxs.pod +____________________________________________________________________________ +[ 5182] By: jhi on 2000/02/21 18:22:47 + Log: Add Solaris LP64 notes. + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 5181] By: gsar on 2000/02/21 16:53:39 + Log: generalize "%v" format into a flag for any integral format type: + "%vd", "%v#o", "%*vX", etc are allowed + Branch: perl + ! perl.c pod/perldelta.pod pod/perlfunc.pod sv.c t/op/ver.t + ! utils/perlbug.PL +____________________________________________________________________________ +[ 5180] By: gsar on 2000/02/21 07:11:00 + Log: detypo + Branch: perl + ! ext/B/B.xs +____________________________________________________________________________ +[ 5179] By: gsar on 2000/02/21 07:08:38 + Log: undo accidental delete + Branch: perl + ! ext/B/B.pm ext/B/B.xs +____________________________________________________________________________ +[ 5178] By: gsar on 2000/02/21 07:02:16 + Log: get Compiler "working" under useithreads + Branch: perl + ! ext/B/B.pm ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm + ! ext/B/B/Deparse.pm ext/B/B/Xref.pm +____________________________________________________________________________ +[ 5177] By: jhi on 2000/02/21 03:16:24 + Log: Thou shalt not printf longs with %d. + Branch: cfgperl + ! malloc.c +____________________________________________________________________________ +[ 5176] By: jhi on 2000/02/21 01:37:35 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/pragma/warn/9enabled + !> (integrate 63 files) +____________________________________________________________________________ +[ 5175] By: gsar on 2000/02/21 00:25:00 + Log: misplaced braces + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 5174] By: gsar on 2000/02/21 00:09:16 + Log: more malloc.c tweaks for change#5070 + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 5173] By: gsar on 2000/02/21 00:01:17 + Log: malloc.c fixups in change#5170 need to fetch thx pointer + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 5172] By: gsar on 2000/02/20 23:52:39 + Log: missing file in change#5170 + Branch: perl + + t/pragma/warn/9enabled +____________________________________________________________________________ +[ 5171] By: gsar on 2000/02/20 23:49:17 + Log: skip conditionally defined symbols in change#5162 + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 5170] By: gsar on 2000/02/20 22:58:09 + Log: lexical warnings update, ability to inspect bitmask in calling + scope, among other things (from Paul Marquess) + Branch: perl + ! MANIFEST lib/warnings.pm malloc.c mg.c op.c pod/perldiag.pod + ! pod/perlfunc.pod pod/perllexwarn.pod pp.c pp_ctl.c pp_hot.c + ! regcomp.c regexec.c sv.c t/op/substr.t t/pragma/warn/op + ! t/pragma/warn/pp t/pragma/warn/pp_ctl t/pragma/warn/pp_hot + ! t/pragma/warn/regcomp t/pragma/warn/regexec t/pragma/warn/sv + ! t/pragma/warn/toke toke.c warnings.h warnings.pl +____________________________________________________________________________ +[ 5169] By: gsar on 2000/02/20 22:22:28 + Log: windows fixes for virtualizing child std{in,out,err} handles, + attempts to lock uninitialized critical section in files that + were never explicitly opened (from Doug Lankshear) + Branch: perl + ! iperlsys.h win32/perlhost.h win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 5168] By: gsar on 2000/02/20 20:19:11 + Log: update Changes, credits + Branch: perl + ! Changes +____________________________________________________________________________ +[ 5167] By: gsar on 2000/02/20 18:54:27 + Log: avoid reading out-of-bounds memory when matching against reference + Branch: perl + ! regexec.c +____________________________________________________________________________ +[ 5166] By: gsar on 2000/02/20 17:59:41 + Log: byte mode chop() should clear UTF8 (from Gisle Aas) + Branch: perl + ! doop.c +____________________________________________________________________________ +[ 5165] By: gsar on 2000/02/20 17:57:08 + Log: test fix needed by change#5164 + Branch: perl + ! t/pragma/warn/toke +____________________________________________________________________________ +[ 5164] By: gsar on 2000/02/20 17:50:38 + Log: default mkdir() mode argument to 0777 + Branch: perl + ! opcode.h opcode.pl pod/perldiag.pod pod/perlfunc.pod pp_sys.c + ! t/op/mkdir.t toke.c +____________________________________________________________________________ +[ 5163] By: gsar on 2000/02/20 16:34:33 + Log: glob() takes one or no user arguments and a non-user-visible second + hidden argument, fix its prototype-checking accordingly + Branch: perl + ! op.c opcode.h opcode.pl +____________________________________________________________________________ +[ 5162] By: gsar on 2000/02/20 16:07:38 + Log: make change#3386 a build-time option (avoids problems due to + perl_run() longjmping out) + Branch: perl + ! Todo-5.6 embed.h embed.pl embedvar.h intrpvar.h objXSUB.h + ! perl.c perl.h perlapi.c perlvars.h pp_ctl.c proto.h scope.c + ! scope.h sv.c thrdvar.h util.c +____________________________________________________________________________ +[ 5161] By: gsar on 2000/02/20 12:13:37 + Log: IO::Socket now sets $!, avoids eval/die (patch from Graham Barr + modified to use Errno more portably) + Branch: perl + ! ext/IO/lib/IO/Socket.pm ext/IO/lib/IO/Socket/INET.pm +____________________________________________________________________________ +[ 5160] By: gsar on 2000/02/20 11:53:28 + Log: mention portability caveat about C + Branch: perl + ! ext/Errno/Errno_pm.PL +____________________________________________________________________________ +[ 5159] By: gsar on 2000/02/20 11:14:36 + Log: revise docs on @+ and @- (from Tom "Camel" Christiansen) + Branch: perl + ! pod/perlvar.pod +____________________________________________________________________________ +[ 5158] By: gsar on 2000/02/20 10:53:49 + Log: README.vms and related updates (from Peter Prymmer ) + Branch: perl + ! MANIFEST Makefile.SH README.vms pod/perl5005delta.pod + ! pod/perldelta.pod pod/perlport.pod pod/podchecker.PL + ! vms/descrip_mms.template +____________________________________________________________________________ +[ 5157] By: jhi on 2000/02/19 20:29:26 + Log: Be explicit about what ops work with bt vectors. + (And implicit about which don't.) + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5156] By: jhi on 2000/02/19 18:38:14 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/bytes.pm lib/bytes_heavy.pl + - lib/byte.pm lib/byte_heavy.pl + !> (integrate 61 files) +____________________________________________________________________________ +[ 5155] By: gsar on 2000/02/19 17:57:39 + Log: char vs U8 warnings + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5154] By: gsar on 2000/02/19 17:44:56 + Log: remove outdated caveat about C (from + Hugo van der Sanden) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5153] By: gsar on 2000/02/19 17:41:41 + Log: tests, doc tweak (from Gisle Aas) + Branch: perl + ! pod/perlfaq9.pod t/op/ord.t +____________________________________________________________________________ +[ 5152] By: gsar on 2000/02/19 17:35:50 + Log: document behavior of splice(@ary) (from Gisle Aas) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5151] By: gsar on 2000/02/19 17:33:59 + Log: fix bug in backtracking optimizer (from Makoto Ishisone + ) + Branch: perl + ! regexec.c t/op/pat.t +____________________________________________________________________________ +[ 5150] By: gsar on 2000/02/19 17:33:05 + Log: more B fixups to cope with empty GVs (these can only happen in pads) + Branch: perl + ! ext/B/B.pm ext/B/B.xs ext/B/B/C.pm op.c +____________________________________________________________________________ +[ 5149] By: gsar on 2000/02/19 17:32:03 + Log: avoid compiler warnings + Branch: perl + ! malloc.c perl.h +____________________________________________________________________________ +[ 5148] By: gsar on 2000/02/19 17:18:09 + Log: document 'lvalue' attribute (from Simon Cozens ) + Branch: perl + ! lib/attributes.pm +____________________________________________________________________________ +[ 5147] By: gsar on 2000/02/19 17:15:34 + Log: avoid failing on $!{ENOTHERE} (they can always use C + for that) + Branch: perl + ! ext/Errno/Errno_pm.PL +____________________________________________________________________________ +[ 5146] By: gsar on 2000/02/19 16:18:46 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure config_h.SH ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs + !> ext/SDBM_File/sdbm/sdbm.c ext/Socket/Socket.pm + !> ext/Socket/Socket.xs hints/hpux.sh perl.h pod/perldelta.pod + !> pod/perlfunc.pod pod/perlopentut.pod t/lib/syslfs.t +____________________________________________________________________________ +[ 5145] By: gsar on 2000/02/19 16:10:37 + Log: POSIX::strftime gets the date wrong (from John Tobey + ) + Branch: perl + ! ext/POSIX/POSIX.xs t/lib/posix.t +____________________________________________________________________________ +[ 5144] By: gsar on 2000/02/19 16:02:40 + Log: don't blindly set bool=char on linux (from Andy Dougherty) + Branch: perl + ! handy.h hints/linux.sh x2p/a2p.h +____________________________________________________________________________ +[ 5143] By: gsar on 2000/02/19 15:54:04 + Log: some rearrangement of the includes for easier "microperl" build; + add PERL_MICRO guards supplied by Simon Cozens + Branch: perl + ! doio.c perl.c perl.h pp_hot.c pp_sys.c toke.c util.c +____________________________________________________________________________ +[ 5142] By: gsar on 2000/02/19 15:22:17 + Log: fixes for Pod::Html issues (from Wolfgang Laun + ) + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 5141] By: gsar on 2000/02/19 08:27:29 + Log: grammos (spotted by Tom Christiansen) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5140] By: gsar on 2000/02/19 08:17:04 + Log: various xsubpp enhancements that make it easier to use with + C::Scan (from Ilya Zakharevich) + + TODO: still needs documentation + Branch: perl + ! lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 5139] By: gsar on 2000/02/19 07:55:18 + Log: s/croak/Perl_croak/ + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5138] By: gsar on 2000/02/19 07:51:39 + Log: make comparisons promote to utf8 as necessary (from Gisle Aas) + Branch: perl + ! Todo-5.6 embed.h embed.pl global.sym objXSUB.h perlapi.c + ! pp_hot.c proto.h sv.c toke.c +____________________________________________________________________________ +[ 5137] By: gsar on 2000/02/19 07:42:12 + Log: set close-on-exec flag on sockets too, like we do for files + and pipes + Branch: perl + ! pod/perldelta.pod pod/perlfunc.pod pod/perlvar.pod pp_sys.c +____________________________________________________________________________ +[ 5136] By: gsar on 2000/02/19 07:23:48 + Log: allocate sufficient buffer sizes for 64-bit wide utf8 characters + permitted by change#5011 (from Gisle Aas) + Branch: perl + ! pp.c utf8.c utf8.h +____________________________________________________________________________ +[ 5135] By: gsar on 2000/02/19 06:53:13 + Log: s/WARN_PRECEDENCE/WARN_BAREWORD/, vide change#5131 + Branch: perl + ! lib/warnings.pm op.c warnings.h warnings.pl +____________________________________________________________________________ +[ 5134] By: gsar on 2000/02/19 06:36:46 + Log: s/byte/bytes/g remnants + Branch: perl + ! lib/bytes.pm lib/bytes_heavy.pl +____________________________________________________________________________ +[ 5133] By: gsar on 2000/02/19 06:33:49 + Log: rename byte:: to bytes:: + Branch: perl + +> lib/bytes.pm lib/bytes_heavy.pl + - lib/byte.pm lib/byte_heavy.pl + ! MANIFEST lib/charnames.pm lib/utf8.pm pod/perldelta.pod + ! pod/perltoc.pod pod/perlunicode.pod pod/perlvar.pod + ! t/lib/charnames.t t/op/ver.t +____________________________________________________________________________ +[ 5132] By: gsar on 2000/02/19 05:58:42 + Log: English names for $^R and $^S + Branch: perl + ! lib/English.pm pod/perlvar.pod +____________________________________________________________________________ +[ 5131] By: gsar on 2000/02/19 05:44:20 + Log: rename "Probable precendence problem" diagnostic to "Bareword found + in conditional" to better reflect the class of error (as suggested + by Larry) + Branch: perl + ! op.c pod/perldelta.pod pod/perldiag.pod t/pragma/warn/op +____________________________________________________________________________ +[ 5130] By: gsar on 2000/02/19 05:43:10 + Log: fix outdated info about PerlClinic and the bug-tracking system + Branch: perl + ! pod/perlfaq2.pod pod/perltodo.pod +____________________________________________________________________________ +[ 5129] By: gsar on 2000/02/19 04:14:19 + Log: some fixes for mingw32/GCC (SETERRNO() still appears to + trash memory) + Branch: perl + ! README.win32 t/lib/safe2.t t/op/mkdir.t win32/makefile.mk + ! win32/win32.h +____________________________________________________________________________ +[ 5128] By: gsar on 2000/02/18 06:55:33 + Log: avoid $@-clearing sideeffect of require in Carp + Branch: perl + ! lib/Carp.pm +____________________________________________________________________________ +[ 5127] By: gsar on 2000/02/18 04:58:26 + Log: stronger testcase for change#5126 + Branch: perl + ! t/op/pat.t +____________________________________________________________________________ +[ 5126] By: gsar on 2000/02/18 04:44:28 + Log: make /\S/ match the same things /[\S]/ matches; likewise for + \D (from Rick Delaney ) + Branch: perl + ! regexec.c t/op/pat.t +____________________________________________________________________________ +[ 5125] By: gsar on 2000/02/18 03:57:43 + Log: Compiler fixups from Jan Dubois + Branch: perl + ! ext/B/B.pm ext/B/B.xs ext/B/B/C.pm utils/perlcc.PL +____________________________________________________________________________ +[ 5124] By: jhi on 2000/02/17 22:09:09 + Log: Take out the -Wl,-z as we have survice so far without. + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5123] By: jhi on 2000/02/17 18:40:17 + Log: Integrate with Sarathy. + Branch: cfgperl + !> dump.c ext/ODBM_File/ODBM_File.xs t/op/split.t +____________________________________________________________________________ +[ 5122] By: gsar on 2000/02/17 18:01:14 + Log: fix test that depends on op_dump() output + Branch: perl + ! t/op/split.t +____________________________________________________________________________ +[ 5121] By: gsar on 2000/02/17 17:55:18 + Log: op_dump() tweak + Branch: perl + ! dump.c +____________________________________________________________________________ +[ 5120] By: jhi on 2000/02/16 23:11:04 + Log: Regularize the use* questions, and replace + "Configure *must* be run with -Duse..." with. + "can be run". + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/threads/usethreads.U + Branch: metaconfig/U/perl + ! use64bits.U uselfs.U uselongdbl.U uselonglong.U + ! usemultiplicity.U useperlio.U usesocks.U +____________________________________________________________________________ +[ 5119] By: jhi on 2000/02/16 22:29:11 + Log: HP-UX 64-bitness/largefile fixes. + Branch: cfgperl + ! Configure config_h.SH ext/SDBM_File/sdbm/sdbm.c hints/hpux.sh + ! perl.h + Branch: metaconfig + ! U/modified/cc.U U/modified/libpth.U U/modified/libs.U + Branch: metaconfig/U/perl + ! Extensions.U +____________________________________________________________________________ +[ 5118] By: jhi on 2000/02/16 19:47:51 + Log: Fcntl: more O_ constants, move SEEK_ to @EXPORT_OK + (tag :seek), add S_I constants (and functions) (tag :mode); + refer only to the SEEK_ of Fcntl, not the ones from + POSIX or IO::; add SHUT_ to Socket; get trigonometric + functions from Math::Trig instead of POSIX. + Branch: cfgperl + ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs ext/Socket/Socket.pm + ! ext/Socket/Socket.xs perl.h pod/perldelta.pod pod/perlfunc.pod + ! pod/perlopentut.pod t/lib/syslfs.t + Branch: metaconfig/U/perl + + i_sysmode.U +____________________________________________________________________________ +[ 5117] By: gsar on 2000/02/16 06:39:06 + Log: avoid warnings due to redefined NULL + Branch: perl + ! ext/ODBM_File/ODBM_File.xs +____________________________________________________________________________ +[ 5116] By: gsar on 2000/02/16 00:10:25 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure Makefile.SH Porting/Glossary Porting/config.sh + !> Porting/config_H config_h.SH ext/Sys/Hostname/Hostname.xs + !> ext/Sys/Syslog/Syslog.xs hints/aix.sh hints/hpux.sh + !> lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm myconfig.SH +____________________________________________________________________________ +[ 5115] By: jhi on 2000/02/15 23:11:55 + Log: Probe for . + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH ext/Sys/Hostname/Hostname.xs + Branch: metaconfig/U/perl + + i_sysutsname.U +____________________________________________________________________________ +[ 5114] By: jhi on 2000/02/15 22:59:59 + Log: Integrate with Sarathy. + Branch: cfgperl + +> ext/Sys/Hostname/Hostname.pm ext/Sys/Hostname/Hostname.xs + +> ext/Sys/Hostname/Makefile.PL + - lib/Sys/Hostname.pm + !> (integrate 41 files) +____________________________________________________________________________ +[ 5113] By: gsar on 2000/02/15 21:22:18 + Log: update Changes, patchlevel + Branch: perl + ! Changes patchlevel.h win32/Makefile win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/makefile.mk +____________________________________________________________________________ +[ 5112] By: gsar on 2000/02/15 20:57:12 + Log: fix change#5104 under useithreads + Branch: perl + ! op.c +____________________________________________________________________________ +[ 5111] By: gsar on 2000/02/15 20:45:10 + Log: export list tweak needed by change#5103 + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 5110] By: gsar on 2000/02/15 19:32:56 + Log: add XS version of Sys::Hostname (from Greg Bacon + ) + Branch: perl + + ext/Sys/Hostname/Hostname.pm ext/Sys/Hostname/Hostname.xs + + ext/Sys/Hostname/Makefile.PL + - lib/Sys/Hostname.pm + ! MANIFEST ext/DynaLoader/Makefile.PL ext/Sys/Syslog/Makefile.PL + ! pod/perldelta.pod t/lib/hostname.t win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 5109] By: gsar on 2000/02/15 18:35:28 + Log: UNIVERSAL::can and UNIVERSAL::isa should return undef when + given undefined values (from Graham Barr ) + Branch: perl + ! universal.c +____________________________________________________________________________ +[ 5108] By: gsar on 2000/02/15 18:25:05 + Log: avoid accidental #line directives (from Rick Delaney + ) + Branch: perl + ! pod/perlsyn.pod toke.c +____________________________________________________________________________ +[ 5107] By: gsar on 2000/02/15 18:04:31 + Log: locale guards needed (from Simon Cozens ) + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5106] By: gsar on 2000/02/15 18:02:17 + Log: incorrect docs about delete() (spotted by Martyn Pearce + ) + Branch: perl + ! pod/perldelta.pod pod/perlfunc.pod +____________________________________________________________________________ +[ 5105] By: gsar on 2000/02/15 17:43:27 + Log: s/use vars/our/ (from Gisle Aas) + Branch: perl + ! bytecode.pl +____________________________________________________________________________ +[ 5104] By: gsar on 2000/02/15 17:42:06 + Log: optimize pseudohash slice in array slice at compile time (from + John Tobey ) + Branch: perl + ! op.c t/lib/fields.t +____________________________________________________________________________ +[ 5103] By: gsar on 2000/02/15 17:18:12 + Log: provide malloc stats via get_mstats() (from Ilya Zakharevich) + Branch: perl + ! embed.h embed.pl global.sym makedef.pl malloc.c objXSUB.h + ! perl.h perlapi.c proto.h vos/vos_dummies.c +____________________________________________________________________________ +[ 5102] By: gsar on 2000/02/15 17:05:12 + Log: doc patches from Rick Delaney and Chris Nandor; update Todo-5.6 + Branch: perl + ! Todo-5.6 pod/perldata.pod pod/perlport.pod +____________________________________________________________________________ +[ 5101] By: gsar on 2000/02/15 17:02:51 + Log: fix regen_headers target to make all the autogenerated files + writable first + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 5100] By: gsar on 2000/02/15 16:41:53 + Log: fix misoptimization of C (from + Ilya Zakharevich) + Branch: perl + ! op.c t/op/lex_assign.t +____________________________________________________________________________ +[ 5099] By: gsar on 2000/02/15 16:17:36 + Log: more complete File::Spec support for Mac and VMS, tests (from + Barrie Slaymaker ) + Branch: perl + ! lib/File/Spec/Mac.pm lib/File/Spec/Unix.pm + ! lib/File/Spec/VMS.pm lib/File/Spec/Win32.pm t/lib/filespec.t +____________________________________________________________________________ +[ 5098] By: gsar on 2000/02/15 16:10:46 + Log: fix incompatibility with bison generated parser (from + Ignasi Roca ) + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 5097] By: gsar on 2000/02/15 16:07:17 + Log: propagate st_mode bits to group/other for Borland build + (from Vadim Konovalov ) + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 5096] By: jhi on 2000/02/15 14:22:23 + Log: Integrate with Sarathy. + Branch: cfgperl + !> win32/Makefile win32/bin/exetype.pl win32/makefile.mk +____________________________________________________________________________ +[ 5095] By: jhi on 2000/02/15 14:19:22 + Log: cc_r can be in different places (/usr/ibmcxx/bin or /usr/bin), + easier just to drop the paranoid test. + Branch: cfgperl + ! hints/aix.sh +____________________________________________________________________________ +[ 5094] By: gsar on 2000/02/15 05:42:17 + Log: update exetype.pl tool + Branch: perl + ! win32/Makefile win32/bin/exetype.pl win32/makefile.mk +____________________________________________________________________________ +[ 5093] By: jhi on 2000/02/15 05:24:02 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Porting/pumpkin.pod embed.h embed.pl ext/DB_File/DB_File.xs + !> ext/GDBM_File/GDBM_File.xs ext/NDBM_File/NDBM_File.xs + !> ext/ODBM_File/ODBM_File.xs ext/SDBM_File/SDBM_File.xs hv.c + !> perl.c proto.h sv.c t/op/ord.t t/pragma/warnings.t +____________________________________________________________________________ +[ 5092] By: jhi on 2000/02/15 05:22:09 + Log: Unroll the libs scan thanks to HP-UX. + Branch: cfgperl + ! Configure config_h.SH hints/hpux.sh + Branch: metaconfig + ! U/modified/libpth.U U/modified/libs.U + Branch: metaconfig/U/perl + ! Extensions.U dlsrc.U +____________________________________________________________________________ +[ 5091] By: gsar on 2000/02/15 05:17:56 + Log: fix leaks in *DBM_File; safemalloc()ed things need to be freed with + safefree() rather than Safefree() + Branch: perl + ! ext/DB_File/DB_File.xs ext/GDBM_File/GDBM_File.xs + ! ext/NDBM_File/NDBM_File.xs ext/ODBM_File/ODBM_File.xs + ! ext/SDBM_File/SDBM_File.xs +____________________________________________________________________________ +[ 5090] By: gsar on 2000/02/15 04:54:17 + Log: fix memory leak in C<$x = *Y> provoked by change#4198, which + introduced XPVMG storage in arenas + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5089] By: jhi on 2000/02/15 00:41:36 + Log: AIX perl linkage tweakage. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 5088] By: jhi on 2000/02/15 00:07:06 + Log: abort instead of just promising. + Branch: cfgperl + ! hints/aix.sh +____________________________________________________________________________ +[ 5087] By: jhi on 2000/02/14 23:51:05 + Log: silly compilers don't know that croak() exits + and complain about unitialized RETVALs + Branch: cfgperl + ! ext/Sys/Syslog/Syslog.xs +____________________________________________________________________________ +[ 5086] By: jhi on 2000/02/14 21:13:24 + Log: Add lseektype and lseeksize to myconfig. + Branch: cfgperl + ! myconfig.SH +____________________________________________________________________________ +[ 5085] By: gsar on 2000/02/14 18:51:11 + Log: avoid warnings + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5084] By: gsar on 2000/02/14 18:26:08 + Log: fix small interpreter leaks identified by Purify + Branch: perl + ! Porting/pumpkin.pod embed.h embed.pl hv.c perl.c proto.h sv.c + ! t/op/ord.t t/pragma/warnings.t +____________________________________________________________________________ +[ 5083] By: jhi on 2000/02/14 17:50:52 + Log: Remove tagged core files. + Branch: cfgperl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 5082] By: jhi on 2000/02/14 17:41:07 + Log: Prefer full_ar. + Branch: cfgperl + ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 5081] By: jhi on 2000/02/14 17:20:32 + Log: Add ivtype, ivsize, nvtype, nvsize to myconfig. + Branch: cfgperl + ! myconfig.SH +____________________________________________________________________________ +[ 5080] By: jhi on 2000/02/14 15:33:03 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Porting/pumpkin.pod av.c malloc.c sv.c +____________________________________________________________________________ +[ 5079] By: gsar on 2000/02/14 08:50:06 + Log: notes about running Purify + Branch: perl + ! Porting/pumpkin.pod av.c sv.c +____________________________________________________________________________ +[ 5078] By: gsar on 2000/02/14 07:27:21 + Log: use system malloc() instead of sbrk() in Perl_malloc() under -DPURIFY + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 5077] By: gsar on 2000/02/14 07:25:44 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH epoc/config.sh hints/aix.sh hints/hpux.sh + !> hints/irix_6.sh hints/solaris_2.sh perl.h pod/perldelta.pod + !> vms/subconfigure.com vos/config.def vos/config.h + !> vos/config_h.SH_orig win32/config.bc win32/config.gc + !> win32/config.vc win32/config_H.bc win32/config_H.gc + !> win32/config_H.vc +____________________________________________________________________________ +[ 5076] By: jhi on 2000/02/14 05:01:56 + Log: Integrate with Sarathy. + Branch: cfgperl + !> embed.h embed.pl objXSUB.h perl.c perlapi.c proto.h sv.c +____________________________________________________________________________ +[ 5075] By: jhi on 2000/02/14 04:56:52 + Log: Configure -A stopped processing of any further options. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Options.U +____________________________________________________________________________ +[ 5074] By: gsar on 2000/02/14 04:45:01 + Log: remove outdated -DPURIFY code--it reports bogus errors during global + destruction since we actually depend on SVs being in arenas there + Branch: perl + ! embed.h embed.pl objXSUB.h perl.c perlapi.c proto.h sv.c +____________________________________________________________________________ +[ 5073] By: jhi on 2000/02/13 19:28:17 + Log: Integrate with Sarathy. + Branch: cfgperl + - Todo-5.005 + !> cop.h op.c perl.c pp_ctl.c regcomp.c regexec.c scope.c sv.c + !> util.c +____________________________________________________________________________ +[ 5072] By: gsar on 2000/02/13 19:02:07 + Log: more purification (pp_require() could access free memory; vdie() + could think message was random length when passed a null argument; + utilize() didn't set up the hash for the method name leading to + pp_method_named() accessing random state; PL_curpm wasn't zeroed + properly) + Branch: perl + ! cop.h op.c perl.c pp_ctl.c regcomp.c regexec.c scope.c sv.c + ! util.c +____________________________________________________________________________ +[ 5071] By: jhi on 2000/02/12 19:59:35 + Log: uselonglong sits deep. + Branch: cfgperl + ! Configure config_h.SH hints/solaris_2.sh + Branch: metaconfig/U/perl + ! use64bits.U +____________________________________________________________________________ +[ 5070] By: jhi on 2000/02/12 01:25:41 + Log: megalomaniac 64-bit update: most importantly, + uselonglong is eradicated, only backward + compatibility hooks in use64bits remain. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH epoc/config.sh hints/aix.sh hints/hpux.sh + ! hints/irix_6.sh hints/solaris_2.sh perl.h vms/subconfigure.com + ! vos/config.def vos/config.h vos/config_h.SH_orig + ! win32/config.bc win32/config.gc win32/config.vc + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + Branch: metaconfig + ! U/a_dvisory/quadtype.U U/modified/libpth.U U/modified/libs.U + Branch: metaconfig/U/perl + ! use64bits.U +____________________________________________________________________________ +[ 5069] By: jhi on 2000/02/11 21:13:41 + Log: undo #5064 for now; there seems to be no good selection + of flags to add the new option. + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5068] By: jhi on 2000/02/11 21:01:21 + Log: Guard against accidental long long use. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 5067] By: jhi on 2000/02/11 19:50:32 + Log: logic fixes + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! uselonglong.U +____________________________________________________________________________ +[ 5066] By: jhi on 2000/02/11 19:32:30 + Log: Clarify 64-bit issues. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5065] By: jhi on 2000/02/11 18:13:29 + Log: Integrate with Sarathy. + Branch: cfgperl + !> ext/Devel/Peek/Peek.xs regcomp.c t/comp/require.t t/comp/use.t + !> toke.c +____________________________________________________________________________ +[ 5064] By: jhi on 2000/02/11 18:11:47 + Log: Silence linker warnings about binary backward incompatibilities. + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5063] By: gsar on 2000/02/11 16:36:14 + Log: fix uninitialized memory reads found by purify + Branch: perl + ! ext/Devel/Peek/Peek.xs regcomp.c +____________________________________________________________________________ +[ 5062] By: jhi on 2000/02/11 00:11:39 + Log: de-fancify the largefiles hints + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 5061] By: gsar on 2000/02/10 19:17:09 + Log: longstanding bug in parsing "require VERSION", could reallocate + current line and not know it; exposed by change#5004; manifested + as parse failure of C<{require 5.003}> + Branch: perl + ! t/comp/require.t t/comp/use.t toke.c +____________________________________________________________________________ +[ 5060] By: jhi on 2000/02/10 13:29:25 + Log: Integrate with Sarathy. + Branch: cfgperl + !> makedef.pl pp_ctl.c t/op/write.t win32/vdir.h +____________________________________________________________________________ +[ 5059] By: gsar on 2000/02/10 06:21:21 + Log: make global symbol exports AIX-specific + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 5058] By: gsar on 2000/02/10 06:16:57 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure Makefile.SH Porting/Glossary Porting/config.sh + !> Porting/config_H config_h.SH makedef.pl perl.h + !> vms/subconfigure.com vos/config.def win32/config.bc + !> win32/config.gc win32/config.vc win32/config_H.bc + !> win32/config_H.gc win32/config_H.vc win32/config_h.PL + !> win32/config_sh.PL +____________________________________________________________________________ +[ 5057] By: gsar on 2000/02/10 01:08:01 + Log: windows bugfixes for virtual directories under USE_ITHREADS: + allows path mapping to unknown devices to work properly; + special file names like CONOUT$ can be opened with sysopen() + again + Branch: perl + ! win32/vdir.h +____________________________________________________________________________ +[ 5056] By: gsar on 2000/02/10 00:56:27 + Log: formline() could wipe out readonly-ness, freeing constants + prematurely, or affect cloning of pad constants + Branch: perl + ! pp_ctl.c t/op/write.t +____________________________________________________________________________ +[ 5055] By: jhi on 2000/02/09 19:48:58 + Log: Regenerate Configure for I_SYSLOG. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 5054] By: jhi on 2000/02/09 19:38:04 + Log: fix AIX and multiplicity problems + Branch: cfgperl + ! Makefile.SH makedef.pl +____________________________________________________________________________ +[ 5053] By: bailey on 2000/02/09 10:58:11 + Log: remove redundant archcore directory prefix in installperl + Branch: vmsperl + ! installperl +____________________________________________________________________________ +[ 5052] By: bailey on 2000/02/09 10:44:22 + Log: Work around prefixing bug in older DECC preprocessors + Branch: vmsperl + ! vms/vms.c vms/vmsish.h +____________________________________________________________________________ +[ 5051] By: bailey on 2000/02/09 09:52:06 + Log: Eliminate unnecessary (and sometimes confounding) test for + word boundary + Branch: vmsperl + ! lib/ExtUtils/MM_VMS.pm +____________________________________________________________________________ +[ 5050] By: bailey on 2000/02/09 09:29:06 + Log: Minor fixes to assuage picky compilers (unsigned comparisons and + alias rules lead to compilation warnings) + Branch: vmsperl + ! av.c mg.h pp_sys.c scope.c sv.c vms/vms.c +____________________________________________________________________________ +[ 5049] By: bailey on 2000/02/09 09:09:45 + Log: Resync with mainline + Branch: vmsperl + +> Todo-5.6 ext/Sys/Syslog/Makefile.PL ext/Sys/Syslog/Syslog.pm + +> ext/Sys/Syslog/Syslog.xs lib/Pod/Find.pm lib/Pod/ParseUtils.pm + +> pod/perlapi.pod pod/perlintern.pod pod/perlunicode.pod + +> t/op/exists_sub.t t/op/ver.t t/pragma/diagnostics.t + +> vos/config.def vos/config.pl win32/bin/exetype.pl + - Todo-5.005 lib/Sys/Syslog.pm lib/caller.pm + ! vms/subconfigure.com + !> (integrate 358 files) +____________________________________________________________________________ +[ 5048] By: jhi on 2000/02/09 03:54:05 + Log: OS/2 gcc doesn't like -o foo.exe and -Zexe simultaneously + (reported by Yitzchak Scott-Thoennes in p5p) + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 5047] By: jhi on 2000/02/09 02:56:43 + Log: (fake) use of getcwd. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.h +____________________________________________________________________________ +[ 5046] By: jhi on 2000/02/09 02:22:50 + Log: lib scan fix + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/libs.U +____________________________________________________________________________ +[ 5045] By: jhi on 2000/02/09 02:17:34 + Log: Reintroduce #5019 via metaconfig. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/installdirs/inc_version_list.U +____________________________________________________________________________ +[ 5044] By: jhi on 2000/02/09 02:07:08 + Log: Add/restore probes for getcwd/mk*temp*/mmap. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.h vms/subconfigure.com vos/config.def + ! win32/config.bc win32/config.gc win32/config.vc + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/config_h.PL win32/config_sh.PL + Branch: metaconfig + ! U/modified/d_mkstemp.U U/modified/libs.U + Branch: metaconfig/U/perl + + d_mkdtemp.U d_mkstemps.U +____________________________________________________________________________ +[ 5043] By: jhi on 2000/02/08 20:58:02 + Log: Integrate with Sarathy. + Branch: cfgperl + +> Todo-5.6 t/op/ver.t win32/bin/exetype.pl + !> (integrate 110 files) +____________________________________________________________________________ +[ 5042] By: gsar on 2000/02/08 20:32:12 + Log: avoid exiting just because we didn't scan for libm ('libs' may still + have it, but we avoided scan for things in 'libs') + Branch: perl + ! Configure + +---------------- +Version v5.5.650 +---------------- + +____________________________________________________________________________ +[ 5041] By: gsar on 2000/02/08 07:57:11 + Log: update Changes + Branch: perl + ! Changes +____________________________________________________________________________ +[ 5040] By: gsar on 2000/02/08 07:51:20 + Log: documentation patches (from Michael Schwern and Yitzchak + Scott-Thoennes) + Branch: perl + ! av.c hv.c lib/UNIVERSAL.pm pod/perlapi.pod +____________________________________________________________________________ +[ 5039] By: gsar on 2000/02/08 07:22:46 + Log: alias to $^V to $PERL_VERSION_TUPLE + Branch: perl + ! lib/English.pm pod/perlvar.pod +____________________________________________________________________________ +[ 5038] By: gsar on 2000/02/08 07:03:34 + Log: update Changes + Branch: perl + ! Changes pod/perlhist.pod +____________________________________________________________________________ +[ 5037] By: gsar on 2000/02/08 06:59:55 + Log: Windows has a somewhat different sitelib layout, and needs + $sitelib/archname added as well + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5036] By: gsar on 2000/02/08 06:59:03 + Log: change#4987 appears to have broken libs scan for platforms that + don't set ignore_versioned_solibs (Solaris is one of them); add + derivative fix from the older logic for skipping versioned .so + libs + Branch: perl + ! Configure +____________________________________________________________________________ +[ 5035] By: gsar on 2000/02/07 21:21:44 + Log: sprintf("%v"...) buffer resizing busted + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 5034] By: gsar on 2000/02/07 19:16:21 + Log: update Changes + Branch: perl + ! Changes pod/perlhist.pod +____________________________________________________________________________ +[ 5033] By: gsar on 2000/02/07 19:01:08 + Log: stringify "\x{FFF}" to utf8 correctly; set SvUTF8 on "\x{XX}" + only when XX > 127 + Branch: perl + ! pp_hot.c toke.c +____________________________________________________________________________ +[ 5032] By: gsar on 2000/02/07 18:25:31 + Log: add note about printf("%v",...) + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 5031] By: gsar on 2000/02/07 18:18:43 + Log: update Changes + Branch: perl + ! Changes Todo-5.6 +____________________________________________________________________________ +[ 5030] By: gsar on 2000/02/07 18:17:49 + Log: thinko in change#5029 + Branch: perl + ! gv.c +____________________________________________________________________________ +[ 5029] By: gsar on 2000/02/07 17:49:58 + Log: change $^U to $^WIDE_SYSTEM_CALLS; s/PL_bigchar/PL_widesyscalls/; + introduce -C switch (sets $^WIDE_SYSTEM_CALLS) + Branch: perl + ! embedvar.h gv.c intrpvar.h mg.c perl.c perlapi.h + ! pod/perlrun.pod pod/perlunicode.pod pod/perlvar.pod + ! win32/win32.h +____________________________________________________________________________ +[ 5028] By: gsar on 2000/02/07 17:10:03 + Log: perlport updates (from Peter Prymmer) + Branch: perl + ! pod/perlport.pod +____________________________________________________________________________ +[ 5027] By: gsar on 2000/02/07 16:53:47 + Log: fix up Todo-5.6 + Branch: perl + ! Todo-5.6 +____________________________________________________________________________ +[ 5026] By: gsar on 2000/02/07 16:32:31 + Log: rename Todo-5.005 to Todo-5.6 + Branch: perl + +> Todo-5.6 + - Todo-5.005 + ! MANIFEST +____________________________________________________________________________ +[ 5025] By: gsar on 2000/02/07 16:09:54 + Log: ${^Warnings} renamed to ${^WARNING_BITS} + Branch: perl + ! gv.c lib/warnings.pm mg.c pod/perltoc.pod pod/perlvar.pod + ! toke.c warnings.pl +____________________________________________________________________________ +[ 5024] By: gsar on 2000/02/07 11:47:06 + Log: various Windows tweaks: make $^E a little less buggy by saving + and restoring system error across TLS fetch; avoid needless + copying of buffers + Branch: perl + ! win32/Makefile win32/makefile.mk win32/perllib.c win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 5023] By: gsar on 2000/02/07 11:44:19 + Log: avoid MakeMaker setting $^W=1 + Branch: perl + ! lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 5022] By: gsar on 2000/02/07 10:38:56 + Log: up to v5.5.650 + Branch: perl + ! Changes patchlevel.h win32/Makefile win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/makefile.mk +____________________________________________________________________________ +[ 5021] By: gsar on 2000/02/07 10:10:31 + Log: mention threads status in pod + Branch: perl + ! ext/Thread/Thread.pm +____________________________________________________________________________ +[ 5020] By: gsar on 2000/02/07 09:57:46 + Log: tolerate NULL SITELIB_EXP + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 5019] By: gsar on 2000/02/07 09:46:11 + Log: NULL-terminate PERL_INC_VERSION_LIST + Branch: perl + ! Configure perl.c win32/config.bc win32/config.gc + ! win32/config.vc win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc +____________________________________________________________________________ +[ 5018] By: gsar on 2000/02/07 09:13:10 + Log: add compatible versions from $Config{inc_ver_list} to search + paths automatically (from Tom Hughes ) + Branch: perl + ! lib/lib.pm perl.c +____________________________________________________________________________ +[ 5017] By: gsar on 2000/02/07 08:58:56 + Log: makefiles now use exetype.pl to make wperl.exe + Branch: perl + ! sv.c win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 5016] By: gsar on 2000/02/07 08:38:25 + Log: add exetype.pl (from Jan Dubois) + Branch: perl + + win32/bin/exetype.pl + ! MANIFEST +____________________________________________________________________________ +[ 5015] By: gsar on 2000/02/07 08:29:28 + Log: pod fixes (from Abigail and M J T Guy) + Branch: perl + ! Changes README.os2 gv.c pod/perlapi.pod pod/perldebug.pod + ! pod/perldelta.pod pod/perldiag.pod pod/perlopentut.pod + ! pod/perlport.pod pod/perlvar.pod +____________________________________________________________________________ +[ 5014] By: gsar on 2000/02/07 07:09:08 + Log: clarify behavior of vec() when arguments are off the end of the + string (from M J T Guy) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 5013] By: gsar on 2000/02/07 07:08:15 + Log: remove $^U dependent behaviors in runtime; chr() and sprintf('%c',...) + now return bytes all the way to 255, they will be transparently + coerced (in future) to UTF-8 when they are used in operations + involving other UTF-8 strings; C doesn't set $^U anymore + Branch: perl + ! lib/byte.pm lib/utf8.pm pod/perlunicode.pod pod/perlvar.pod + ! pp.c sv.c +____________________________________________________________________________ +[ 5012] By: gsar on 2000/02/07 06:36:33 + Log: partly revert change#4851, apparently POSIX::uname() may not be correct + per strict reading of standard (says Tom Christiansen) + Branch: perl + ! lib/Sys/Hostname.pm +____________________________________________________________________________ +[ 5011] By: gsar on 2000/02/07 06:26:30 + Log: allow 64-bit utf8-encoded integers (from Ilya Zakharevich) + Branch: perl + ! utf8.c utf8.h +____________________________________________________________________________ +[ 5010] By: gsar on 2000/02/06 21:27:03 + Log: fix debug code in Perl_malloc() (from Ilya Zakharevich) + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 5009] By: gsar on 2000/02/06 20:45:30 + Log: set SvUTF8 on vectors only if there are chars > 127; update copyright + years (from Gisle Aas) + Branch: perl + ! EXTERN.h INTERN.h README av.c av.h cop.h cv.h deb.c doio.c + ! doop.c dump.c form.h gv.c gv.h handy.h hv.c hv.h mg.c mg.h + ! op.c op.h perl.c perl.h perlio.c perly.y pp.c pp.h pp_ctl.c + ! pp_hot.c pp_sys.c regcomp.c regexec.c run.c scope.c sv.c sv.h + ! toke.c utf8.c utf8.h util.c util.h +____________________________________________________________________________ +[ 5008] By: gsar on 2000/02/06 19:28:31 + Log: use builtin __CYGWIN__ rather than -DCYGWIN (from Eric Fifer + ) + Branch: perl + ! EXTERN.h XSUB.h doio.c ext/POSIX/POSIX.xs + ! ext/SDBM_File/sdbm/pair.c ext/SDBM_File/sdbm/sdbm.c + ! hints/cygwin.sh lib/ExtUtils/MM_Cygwin.pm mg.c perl.h + ! unixish.h util.c +____________________________________________________________________________ +[ 5007] By: gsar on 2000/02/06 17:47:01 + Log: reduce memory consumption of POSIX.pm (from Ilya Zakharevich) + Branch: perl + ! ext/POSIX/POSIX.pm +____________________________________________________________________________ +[ 5006] By: gsar on 2000/02/06 17:28:35 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure config_h.SH ext/Sys/Syslog/Syslog.xs hints/hpux.sh + !> perl.h pp_sys.c +____________________________________________________________________________ +[ 5005] By: gsar on 2000/02/06 17:18:39 + Log: VOS port updates (from Paul Green ) + Branch: perl + ! README.vos pod/perlport.pod vos/Changes vos/build.cm + ! vos/compile_perl.cm vos/config.def vos/config.h vos/config.pl + ! vos/config_h.SH_orig vos/perl.bind vos/test_vos_dummies.c + ! vos/vos_dummies.c vos/vosish.h +____________________________________________________________________________ +[ 5004] By: gsar on 2000/02/06 17:00:49 + Log: fix parse error on C<{ use strict }> and other constructs that + make the parser reenter while LEX_KNOWNEXT is active + Branch: perl + ! t/comp/use.t toke.c +____________________________________________________________________________ +[ 5003] By: gsar on 2000/02/06 14:57:30 + Log: avoid -Bforcearchive on netbsd too + Branch: perl + ! Changes hints/netbsd.sh +____________________________________________________________________________ +[ 5002] By: gsar on 2000/02/06 14:45:17 + Log: revised notes about Pod::Parser & Co. + Branch: perl + ! lib/Pod/Usage.pm pod/perldelta.pod +____________________________________________________________________________ +[ 5001] By: gsar on 2000/02/06 14:02:43 + Log: fix description of obsolete diagnostic + Branch: perl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 5000] By: gsar on 2000/02/06 13:59:58 + Log: allow "\x{12ab}" even without C + Branch: perl + ! t/pragma/warn/toke toke.c +____________________________________________________________________________ +[ 4999] By: gsar on 2000/02/06 13:58:31 + Log: make perlbug use new-style version numbers; improve compatibility + (runs with perl 5.005); fix swapped old vs new version reporting + Branch: perl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 4998] By: gsar on 2000/02/06 13:56:45 + Log: support sprintf("v%v", v1.2.3) (works on any string argument, in + fact); add tests for version tuples + Branch: perl + + t/op/ver.t + ! MANIFEST perl.c pod/perldiag.pod pod/perlfunc.pod + ! pod/perlop.pod sv.c toke.c +____________________________________________________________________________ +[ 4997] By: gsar on 2000/02/04 21:40:08 + Log: change#4970 fallout for useithreads + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 4996] By: jhi on 2000/02/04 20:09:00 + Log: Largefilify offsets of tied handles. + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 4995] By: jhi on 2000/02/04 19:54:25 + Log: Sanity check for libraries scan. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/libs.U +____________________________________________________________________________ +[ 4994] By: jhi on 2000/02/04 19:48:42 + Log: HP-UX largefileness doesn't like lseek being redeclared; + no more USE_LONG_LONG. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4993] By: jhi on 2000/02/04 19:18:59 + Log: fix the description as much as possible; the whole + separation into three different symbols lists is + pretty broken now. + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 4992] By: jhi on 2000/02/04 19:13:10 + Log: Use , not . + Branch: cfgperl + ! Configure config_h.SH ext/Sys/Syslog/Syslog.xs +____________________________________________________________________________ +[ 4991] By: gsar on 2000/02/04 19:11:07 + Log: dmake is on CPAN now + Branch: perl + ! README.win32 +____________________________________________________________________________ +[ 4990] By: jhi on 2000/02/04 19:04:01 + Log: Re-introduce #4817 and #4964 wiped out by #4987. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/threads/usethreads.U + Branch: metaconfig/U/perl + ! patchlevel.U +____________________________________________________________________________ +[ 4989] By: jhi on 2000/02/04 18:54:00 + Log: typo fix + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/libs.U +____________________________________________________________________________ +[ 4988] By: jhi on 2000/02/04 18:34:06 + Log: Integrate with Sarathy. + Branch: cfgperl + +> ext/Sys/Syslog/Makefile.PL ext/Sys/Syslog/Syslog.pm + +> ext/Sys/Syslog/Syslog.xs + - lib/Sys/Syslog.pm + !> (integrate 37 files) +____________________________________________________________________________ +[ 4987] By: jhi on 2000/02/04 18:31:05 + Log: Configure megamaintenance. Cppsym (hopefully) final spasms; + default is to use long long if available; various nits + here and there; fixed to hpux 64-bitnes and largefileness. + Branch: cfgperl + ! Configure config_h.SH hints/hpux.sh perl.h + Branch: metaconfig + ! U/a_dvisory/quadtype.U U/modified/Cppsym.U + ! U/modified/d_gethname.U U/modified/libpth.U U/modified/libs.U + Branch: metaconfig/U/perl + ! d_fseeko.U d_ftello.U dlsrc.U uselongdbl.U uselonglong.U + ! usemultiplicity.U xs_apiversion.U +____________________________________________________________________________ +[ 4986] By: gsar on 2000/02/04 17:26:37 + Log: avoid bad cast warnings (from Robin Barker ) + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 4985] By: gsar on 2000/02/04 16:43:49 + Log: avoid 'na' (spotted by Yitzchak Scott-Thoennes ) + Branch: perl + ! ext/Devel/DProf/DProf.xs +____________________________________________________________________________ +[ 4984] By: gsar on 2000/02/04 08:20:05 + Log: CPAN.pm updated to v1.52 (from Andreas Koenig) + Branch: perl + ! lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm +____________________________________________________________________________ +[ 4983] By: gsar on 2000/02/04 08:00:38 + Log: updated OpenBSD hints (From Todd C. Miller ) + Branch: perl + ! hints/openbsd.sh +____________________________________________________________________________ +[ 4982] By: gsar on 2000/02/04 07:54:04 + Log: pod typos (from Gregor N. Purdy ) + Branch: perl + ! lib/Pod/Parser.pm +____________________________________________________________________________ +[ 4981] By: gsar on 2000/02/04 07:34:38 + Log: avoid assuming cc accepts -o switch (from Tom Hughes) + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4980] By: gsar on 2000/02/04 07:29:59 + Log: Sys::Syslog goes the XS way (from Tom Hughes ) + Branch: perl + + ext/Sys/Syslog/Makefile.PL ext/Sys/Syslog/Syslog.pm + + ext/Sys/Syslog/Syslog.xs + - lib/Sys/Syslog.pm + ! MANIFEST pod/perldelta.pod +____________________________________________________________________________ +[ 4979] By: gsar on 2000/02/04 07:13:19 + Log: pod updates (from David Adler, M J T Guy) + Branch: perl + ! pod/perlfaq2.pod pod/perlop.pod pod/perlsyn.pod +____________________________________________________________________________ +[ 4978] By: gsar on 2000/02/04 07:08:14 + Log: typos in config_h.SH (from Paul_Green@vos.stratus.com) + Branch: perl + ! config_h.SH +____________________________________________________________________________ +[ 4977] By: gsar on 2000/02/04 07:06:10 + Log: avoid adding null components to LD_LIBRARY_PATH, OpenBSD has trouble + with them (from Todd C. Miller ) + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4976] By: gsar on 2000/02/04 06:33:43 + Log: VMS update (from Dan Sugalski and Peter Prymmer) + Branch: perl + ! configure.com vms/descrip_mms.template vms/subconfigure.com +____________________________________________________________________________ +[ 4975] By: gsar on 2000/02/04 05:51:14 + Log: patch to provide more informative names for evals and anonymous + subroutines (from Ilya Zakharevich) + Branch: perl + ! ext/Devel/Peek/Peek.pm ext/Devel/Peek/Peek.xs lib/Dumpvalue.pm + ! lib/dumpvar.pl lib/perl5db.pl op.c perl.h pod/perldebug.pod + ! pod/perlvar.pod pp_ctl.c +____________________________________________________________________________ +[ 4974] By: gsar on 2000/02/04 05:05:57 + Log: off-by-one in malloc.c (from Ilya Zakharevich) + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 4973] By: gsar on 2000/02/04 05:03:00 + Log: OS/2 build fixups from Ilya Zakharevich + Branch: perl + ! ext/Devel/DProf/DProf.xs os2/Makefile.SHs t/op/fork.t +____________________________________________________________________________ +[ 4972] By: gsar on 2000/02/04 04:58:57 + Log: avoid /* within comment + Branch: perl + ! xsutils.c +____________________________________________________________________________ +[ 4971] By: gsar on 2000/02/04 04:56:09 + Log: another HINT_BYTE victim + Branch: perl + ! lib/charnames.pm +____________________________________________________________________________ +[ 4970] By: gsar on 2000/02/04 04:45:13 + Log: fix pad_alloc panic from C + Branch: perl + ! op.c scope.c scope.h t/op/closure.t toke.c +____________________________________________________________________________ +[ 4969] By: gsar on 2000/02/04 01:09:37 + Log: byte.pm and HINT_BYTE don't match (0x8, not 0x10!) + Branch: perl + ! lib/byte.pm +____________________________________________________________________________ +[ 4968] By: jhi on 2000/02/02 13:17:25 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/Pod/Find.pm lib/Pod/ParseUtils.pm + ! Configure + !> (integrate 29 files) + +---------------- +Version v5.5.640 +---------------- + +____________________________________________________________________________ +[ 4967] By: gsar on 2000/02/02 12:22:29 + Log: update makerel for new version format + Branch: perl + ! Changes Porting/makerel +____________________________________________________________________________ +[ 4966] By: gsar on 2000/02/02 11:42:03 + Log: workaround for undefined symbol + Branch: perl + ! win32/win32.h +____________________________________________________________________________ +[ 4965] By: gsar on 2000/02/02 11:19:19 + Log: on cygwin, h_errno is now "__declspec(dllimport) int h_errno" + (from Eric Fifer ) + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 4964] By: gsar on 2000/02/02 11:11:15 + Log: adjust notes on use5005threads + Branch: perl + ! Configure INSTALL README.threads +____________________________________________________________________________ +[ 4963] By: gsar on 2000/02/02 10:14:30 + Log: fix typo + Branch: perl + ! Configure +____________________________________________________________________________ +[ 4962] By: gsar on 2000/02/02 10:13:10 + Log: integrate selected changes from cfgperl (#4899,4900,4904,4918) + Branch: perl + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH ext/IO/IO.xs lib/Benchmark.pm +____________________________________________________________________________ +[ 4961] By: gsar on 2000/02/02 09:55:45 + Log: PodParser-1.092 update via CPAN (from Brad Appleton) + Branch: perl + + lib/Pod/Find.pm lib/Pod/ParseUtils.pm + ! MANIFEST lib/Pod/Checker.pm t/pod/poderrs.t t/pod/poderrs.xr +____________________________________________________________________________ +[ 4960] By: gsar on 2000/02/02 08:22:31 + Log: replace misleading docs with a BUGS section + Branch: perl + ! lib/English.pm +____________________________________________________________________________ +[ 4959] By: gsar on 2000/02/02 08:16:17 + Log: remove FUD from perlfunc/use (from M J T Guy) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4958] By: gsar on 2000/02/02 08:13:04 + Log: Benchmark displays bogus CPU stats (suggested by Cedric Auzanne + ) + Branch: perl + ! Changes lib/Benchmark.pm +____________________________________________________________________________ +[ 4957] By: gsar on 2000/02/02 08:04:52 + Log: fix coredump on C<"x" =~ /x/; print @-> (from Ilya Zakharevich) + Branch: perl + ! pp_hot.c +____________________________________________________________________________ +[ 4956] By: gsar on 2000/02/02 08:02:57 + Log: flock() pod talks about "adding" in the sense of "or-ing" + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4955] By: gsar on 2000/02/02 07:58:35 + Log: fixes for switching files in the debugger (from Ilya Zakharevich) + Branch: perl + ! lib/perl5db.pl pod/perldebug.pod +____________________________________________________________________________ +[ 4954] By: gsar on 2000/02/02 07:53:51 + Log: use warnings rather than fiddling with $^W (from Paul Marquess) + Branch: perl + ! lib/Cwd.pm lib/English.pm lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/MM_Win32.pm lib/ExtUtils/Manifest.pm lib/Fatal.pm + ! lib/File/Spec/Win32.pm lib/Math/BigFloat.pm + ! lib/Text/ParseWords.pm lib/utf8_heavy.pl +____________________________________________________________________________ +[ 4953] By: gsar on 2000/02/02 07:40:33 + Log: dynixptx hints tweak (from Martin J. Bligh ) + Branch: perl + ! hints/dynixptx.sh +____________________________________________________________________________ +[ 4952] By: gsar on 2000/02/02 07:36:39 + Log: deltanotes on weakrefs and Pod::Parser (from Tuomas Lukka and + Brad Appleton) + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4951] By: gsar on 2000/02/02 06:54:22 + Log: avoid mismatched type warnings + Branch: perl + ! embed.pl perlapi.h +____________________________________________________________________________ +[ 4950] By: jhi on 2000/02/02 06:49:10 + Log: Integrate with Sarathy. + Branch: cfgperl + +> pod/perlunicode.pod + !> MANIFEST Makefile.SH lib/File/Spec/Win32.pm lib/Text/Tabs.pm + !> lib/byte.pm lib/byte_heavy.pl lib/utf8.pm lib/warnings.pm + !> makedef.pl op.c perl.h pod/perldelta.pod pp_ctl.c regcomp.c + !> regexec.c t/pragma/warn/2use utf8.h utils/perldoc.PL + !> vms/descrip_mms.template warnings.pl +____________________________________________________________________________ +[ 4949] By: gsar on 2000/02/02 06:41:17 + Log: fix broken abs2rel() (from François Allard ) + Branch: perl + ! lib/File/Spec/Win32.pm +____________________________________________________________________________ +[ 4948] By: gsar on 2000/02/02 06:30:41 + Log: makefile tweak + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4947] By: gsar on 2000/02/02 06:27:43 + Log: future-proof unknown warning categories (from Greg Bacon + ) + Branch: perl + ! lib/warnings.pm t/pragma/warn/2use warnings.pl +____________________________________________________________________________ +[ 4946] By: gsar on 2000/02/02 06:21:34 + Log: doc tweak (from Michael G Schwern ) + Branch: perl + ! lib/Text/Tabs.pm +____________________________________________________________________________ +[ 4945] By: gsar on 2000/02/02 06:03:04 + Log: more meaningful message on invalid pattern argument (from + Kevin Meltzer ) + Branch: perl + ! utils/perldoc.PL +____________________________________________________________________________ +[ 4944] By: gsar on 2000/02/02 05:43:49 + Log: XSLoader build patch for VMS (from Craig A. Berry + ) + Branch: perl + ! vms/descrip_mms.template +____________________________________________________________________________ +[ 4943] By: gsar on 2000/02/02 03:40:49 + Log: reword some sections of perlunicode.pod + Branch: perl + ! pod/perlunicode.pod +____________________________________________________________________________ +[ 4942] By: gsar on 2000/02/01 21:02:01 + Log: AIX warning on undefined symbol + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 4941] By: gsar on 2000/02/01 20:29:30 + Log: HINT_UTF8 is not propagated to the op tree anymore; add a + perlunicode.pod that reflects changes to unicode support so far + Branch: perl + + pod/perlunicode.pod + ! MANIFEST lib/byte.pm lib/byte_heavy.pl lib/utf8.pm op.c perl.h + ! pod/perldelta.pod pp_ctl.c regcomp.c regexec.c utf8.h +____________________________________________________________________________ +[ 4940] By: jhi on 2000/02/01 12:22:30 + Log: Integrate with Sarathy. + Branch: cfgperl + !> embed.pl embedvar.h global.sym gv.c intrpvar.h + !> lib/charnames.pm lib/utf8.pm mg.c objXSUB.h op.c op.h + !> perlapi.c perlapi.h pod/perlvar.pod pp.c sv.c sv.h + !> t/lib/charnames.t toke.c win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 4939] By: gsar on 2000/02/01 08:52:16 + Log: export pregexec(), Tk uses it + Branch: perl + ! embed.pl global.sym objXSUB.h perlapi.c +____________________________________________________________________________ +[ 4938] By: gsar on 2000/02/01 04:00:09 + Log: mark literal utf8 in string literals properly + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4937] By: gsar on 2000/01/31 20:19:34 + Log: introduce $^U, a global bit to indicate whether system + calls should using widechar APIs; chr and sprintf "%c" also + follow this flag in the absense of "use byte"; "use utf8" + sets $^U=1 (this appears kludgey) + Branch: perl + ! embedvar.h gv.c intrpvar.h lib/charnames.pm lib/utf8.pm mg.c + ! op.c op.h perlapi.h pod/perlvar.pod pp.c sv.c sv.h + ! t/lib/charnames.t win32/win32.h +____________________________________________________________________________ +[ 4936] By: jhi on 2000/01/31 20:17:44 + Log: HP-UX (induced) fixes. + Branch: cfgperl + ! Configure config_h.SH hints/hpux.sh + Branch: metaconfig + ! U/modified/Oldconfig.U U/modified/libs.U + Branch: metaconfig/U/perl + ! quadfio.U +____________________________________________________________________________ +[ 4935] By: jhi on 2000/01/31 19:15:43 + Log: Cosmetics. + Branch: metaconfig + ! U/compline/d_gconvert.U +____________________________________________________________________________ +[ 4934] By: jhi on 2000/01/31 19:15:22 + Log: Cppsym saga continues. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 4933] By: gsar on 2000/01/31 18:45:07 + Log: !USING_WIDE() branch is busted in win32_stat() + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4932] By: jhi on 2000/01/31 06:41:47 + Log: Reveal even more symbols. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 4931] By: jhi on 2000/01/31 06:21:41 + Log: Integrate with Sarathy. + Branch: cfgperl + - lib/caller.pm + !> (integrate 29 files) +____________________________________________________________________________ +[ 4930] By: gsar on 2000/01/31 04:57:42 + Log: runtime now looks at the SVf_UTF8 bit on the SV to decide + whether to use widechar semantics; lexer and RE engine continue + to need "use utf8" to enable unicode awareness in literals + and patterns (TODO: this needs to be fixed); $1 et al are marked + SvUTF8 if the pattern was compiled for utf8 (TODO: propagating + it from the data is probably better) + Branch: perl + ! doop.c gv.c mg.c op.c op.h pp.c pp_ctl.c pp_hot.c regcomp.c + ! sv.c t/pragma/warn/doop t/pragma/warn/pp t/pragma/warn/sv + ! t/pragma/warn/toke t/pragma/warn/utf8 toke.c utf8.h +____________________________________________________________________________ +[ 4929] By: gsar on 2000/01/31 04:17:09 + Log: remove caller.pm from change#3534 (flawed idea) + Branch: perl + - lib/caller.pm + ! MANIFEST pod/perldelta.pod pod/perlfunc.pod +____________________________________________________________________________ +[ 4928] By: gsar on 2000/01/31 04:16:01 + Log: fix factual regression (-e doesn't create temporary files anymore) + Branch: perl + ! pod/perlfilter.pod +____________________________________________________________________________ +[ 4927] By: gsar on 2000/01/30 21:27:12 + Log: introduce $^V (eq chr($revision) . chr($version) . chr($subversion)); + document version tuples + Branch: perl + ! gv.c pod/perldelta.pod pod/perlfunc.pod pod/perlop.pod + ! pod/perlvar.pod +____________________________________________________________________________ +[ 4926] By: gsar on 2000/01/28 18:10:12 + Log: implement -follow option in find2perl (from Helmut Jarausch + ) + Branch: perl + ! lib/File/Find.pm x2p/find2perl.PL +____________________________________________________________________________ +[ 4925] By: gsar on 2000/01/28 18:03:28 + Log: document what chdir() without an argument does (from Mark-Jason + Dominus ) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4924] By: gsar on 2000/01/28 17:49:34 + Log: README.cygwin update (from Eric Fifer ) + Branch: perl + ! README.cygwin +____________________________________________________________________________ +[ 4923] By: gsar on 2000/01/28 17:10:08 + Log: avoid leaking lexicals into program being debugged (from Ilya + Zakharevich) + Branch: perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 4922] By: gsar on 2000/01/28 16:36:13 + Log: perldelta note about export list changes + Branch: perl + ! Changes pod/perldelta.pod +____________________________________________________________________________ +[ 4921] By: gsar on 2000/01/28 15:49:04 + Log: alias realpath() to abs_path() (from Tom Christiansen) + Branch: perl + ! lib/Cwd.pm +____________________________________________________________________________ +[ 4920] By: jhi on 2000/01/28 09:52:47 + Log: Cppsym fixup from Andy. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 4919] By: jhi on 2000/01/28 09:52:22 + Log: In HP-UX no largefiles if no 64 bits. + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 4918] By: jhi on 2000/01/28 09:03:37 + Log: The #4880 was too eager, the $n test is useful too. + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4917] By: jhi on 2000/01/28 06:27:50 + Log: Integrate with Sarathy. + Branch: cfgperl + +> pod/perlapi.pod pod/perlintern.pod + !> (integrate 39 files) +____________________________________________________________________________ +[ 4916] By: gsar on 2000/01/28 05:29:37 + Log: more exported symbols needed for build on windows + Branch: perl + ! embed.pl global.sym objXSUB.h perlapi.c pod/perlapi.pod + ! pod/perlintern.pod t/lib/thread.t win32/win32.c +____________________________________________________________________________ +[ 4915] By: gsar on 2000/01/28 03:43:52 + Log: autogenerate API listing from comments in the source (from Benjamin + Stuhl ); fix the markup format to be more + flexible for better readability; add missing docs in sv.c; regenerate + perltoc + Branch: perl + + pod/perlapi.pod pod/perlintern.pod + ! MANIFEST XSUB.h av.c av.h cop.h cv.h embed.pl global.sym gv.c + ! gv.h handy.h hv.c hv.h intrpvar.h makedef.pl mg.c objXSUB.h + ! op.c op.h perl.c perlapi.c pod/Makefile pod/buildtoc + ! pod/perl.pod pod/perldelta.pod pod/perlguts.pod + ! pod/perltoc.pod pod/roffitall pp.h scope.h sv.c sv.h thrdvar.h + ! universal.c util.c +____________________________________________________________________________ +[ 4914] By: gsar on 2000/01/27 19:43:35 + Log: document unimplemented status of forking pipe open() on windows + Branch: perl + ! pod/perlfork.pod t/op/fork.t +____________________________________________________________________________ +[ 4913] By: jhi on 2000/01/27 11:18:51 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 51 files) +____________________________________________________________________________ +[ 4912] By: jhi on 2000/01/27 10:35:48 + Log: Cppsym update continues. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 4911] By: gsar on 2000/01/27 08:04:17 + Log: add missing flag in change#4892 + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4910] By: gsar on 2000/01/27 03:56:48 + Log: various pod nits identified by installhtml (all fixed except + unresolved links) + Branch: perl + ! ext/B/B/C.pm ext/Devel/Peek/Peek.pm ext/File/Glob/Glob.pm + ! ext/IO/lib/IO/Socket/INET.pm ext/IPC/SysV/SysV.pm + ! ext/Thread/Thread.pm lib/Class/Struct.pm lib/File/Find.pm + ! lib/File/Spec/VMS.pm lib/Pod/Html.pm lib/UNIVERSAL.pm + ! pod/buildtoc pod/perlcompile.pod pod/perlfork.pod + ! pod/perlre.pod pod/perltoc.pod pod/perltodo.pod +____________________________________________________________________________ +[ 4909] By: gsar on 2000/01/26 22:45:28 + Log: typo + Branch: perl + ! Porting/p4desc +____________________________________________________________________________ +[ 4908] By: gsar on 2000/01/26 22:41:18 + Log: update p4 tool + Branch: perl + ! Porting/p4desc +____________________________________________________________________________ +[ 4907] By: gsar on 2000/01/26 21:45:41 + Log: revised attribute syntax: C, C + and C are all valid (from Spider Boardman) + Branch: perl + ! lib/AutoSplit.pm lib/SelfLoader.pm lib/attributes.pm + ! pod/perldelta.pod pod/perldiag.pod pod/perlsub.pod + ! t/op/attrs.t toke.c +____________________________________________________________________________ +[ 4906] By: gsar on 2000/01/26 20:16:39 + Log: pod typos and warnings (from Abigail ) + Branch: perl + ! README.win32 ext/B/B/Deparse.pm lib/Class/Struct.pm +____________________________________________________________________________ +[ 4905] By: gsar on 2000/01/26 19:10:26 + Log: s/STOP/CHECK/ blocks + Branch: perl + ! embedvar.h ext/B/B/Stash.pm ext/B/NOTES ext/B/O.pm intrpvar.h + ! keywords.h keywords.pl lib/constant.pm op.c perl.c perlapi.h + ! perly.c perly.y pod/perldelta.pod pod/perldiag.pod + ! pod/perlfunc.pod pod/perlmod.pod pod/perlrun.pod + ! pod/perlsub.pod pod/perltodo.pod sv.c t/op/misc.t toke.c + ! vms/perly_c.vms +____________________________________________________________________________ +[ 4904] By: jhi on 2000/01/26 13:58:18 + Log: In UNICOS and UNICOS/mk after a successful fcntl F_SETFL + of O_NONBLOCK a subsequent fcntl F_GETFL will return O_NDELAY. + Branch: cfgperl + ! ext/IO/IO.xs +____________________________________________________________________________ +[ 4903] By: jhi on 2000/01/26 11:16:34 + Log: Continue cpp symbol update. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 4902] By: gsar on 2000/01/26 09:28:37 + Log: tweak exports list on Windows + Branch: perl + ! makedef.pl t/op/fork.t win32/win32.h +____________________________________________________________________________ +[ 4901] By: jhi on 2000/01/26 08:05:57 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes README.win32 lib/File/Path.pm lib/Getopt/Std.pm op.c + !> pod/perldelta.pod pod/perldiag.pod t/op/grep.t + !> t/pragma/strict-vars toke.c win32/Makefile win32/makefile.mk + !> win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 4900] By: jhi on 2000/01/26 07:59:05 + Log: s/d_nvpresuv/d_nv_preserves_uv/; + plus cosmetic change for #4899. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U + Branch: metaconfig/U/perl + ! perlxv.U +____________________________________________________________________________ +[ 4899] By: jhi on 2000/01/26 07:46:56 + Log: Update the scan of the cpp symbols. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Cppsym.U +____________________________________________________________________________ +[ 4898] By: gsar on 2000/01/26 04:49:45 + Log: allow '--' to terminate argument processing (suggested by + Marc Espie ) + Branch: perl + ! lib/Getopt/Std.pm +____________________________________________________________________________ +[ 4897] By: gsar on 2000/01/26 02:42:38 + Log: change#3744 should have made grep more like map instead of the + other way around + Branch: perl + ! t/op/grep.t toke.c +____________________________________________________________________________ +[ 4896] By: gsar on 2000/01/26 00:56:14 + Log: integrate cfgperl contents into mainline + Branch: perl + +> vos/config.def vos/config.pl + ! Changes + !> Configure MANIFEST config_h.SH hints/unicosmk.sh + !> lib/Benchmark.pm pod/perldelta.pod pod/perlhist.pod pp.c + !> vos/config.h vos/config_h.SH_orig +____________________________________________________________________________ +[ 4895] By: gsar on 2000/01/26 00:45:45 + Log: fix parse failure of (my $foo : bar) and similar (from Spider + Boardman) + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4894] By: gsar on 2000/01/26 00:33:53 + Log: avoid failure if directories already read by rmtree() are + deleted by another process + Branch: perl + ! lib/File/Path.pm +____________________________________________________________________________ +[ 4893] By: gsar on 2000/01/25 23:19:18 + Log: typo in change#4892 + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4892] By: gsar on 2000/01/25 22:16:19 + Log: eliminate need for perl95.exe on Windows 9x by working around CRT + bug internally (from Benjamin Stuhl ); modified + to call the fixed version of open_osfhandle() only on Windows 9x; + updated the makefiles and README.win32 to suit + Branch: perl + ! README.win32 win32/Makefile win32/makefile.mk win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 4891] By: gsar on 2000/01/25 20:22:01 + Log: produce redeclaration warning on C + Branch: perl + ! op.c pod/perldelta.pod pod/perldiag.pod t/pragma/strict-vars +____________________________________________________________________________ +[ 4890] By: gsar on 2000/01/25 19:21:17 + Log: update Makefile notes on the now deprecated USE_5005THREADS and + USE_OBJECT + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4889] By: jhi on 2000/01/25 14:44:55 + Log: Misedit in #4888. + Branch: cfgperl + ! pp.c +____________________________________________________________________________ +[ 4888] By: jhi on 2000/01/25 14:38:59 + Log: UNICOS/mk patches. Removing the _CRAYMPP test may be + rash but it's the best move I can think of right now. + UNICOS/mk doesn't anymore (2.0.4.82) define _CRAYMPP, + but I think it did in the past. + Removing the _CRAYMPP test fixes a legion of pack/unpack + failures (hint: SHORTSIZE=4,INTSIZE=8,LONGSIZE=8). + One subtest, t/lib/io_sock.t #14, is still failing. + Branch: cfgperl + ! Configure config_h.SH hints/unicosmk.sh pp.c + Branch: metaconfig + ! U/modified/Oldconfig.U +____________________________________________________________________________ +[ 4887] By: jhi on 2000/01/25 06:13:14 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes Makefile.SH XSUB.h cflags.SH embed.pl globals.c + !> installperl lib/Pod/Html.pm makedef.pl mg.c objXSUB.h perl.h + !> perlapi.c perlapi.h pod/perldelta.pod pod/perldiag.pod + !> t/io/fs.t win32/Makefile win32/makefile.mk win32/perlhost.h + !> win32/perllib.c win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 4886] By: gsar on 2000/01/25 02:54:00 + Log: consistently use MAX_PATH+1 buffer sizes + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4885] By: gsar on 2000/01/25 02:51:35 + Log: workaround for rename('x','X') bug in Windows NT + Branch: perl + ! t/io/fs.t win32/win32.c +____________________________________________________________________________ +[ 4884] By: gsar on 2000/01/25 01:32:57 + Log: windows build fixups from uniform DLL name change to perl56.dll + Branch: perl + ! installperl makedef.pl win32/perllib.c +____________________________________________________________________________ +[ 4883] By: gsar on 2000/01/25 01:31:27 + Log: more fixes for warnings from change#4840 + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 4882] By: gsar on 2000/01/24 15:35:12 + Log: assorted little nits + Branch: perl + ! mg.c win32/Makefile win32/makefile.mk win32/perlhost.h + ! win32/win32.c +____________________________________________________________________________ +[ 4881] By: gsar on 2000/01/24 14:32:31 + Log: add new warnings to perldelta + Branch: perl + ! Changes pod/perldelta.pod pod/perldiag.pod +____________________________________________________________________________ +[ 4880] By: jhi on 2000/01/24 14:14:23 + Log: From: Stephane Payrard + To: Gurusamy Sarathy + Cc: perl5-porters@perl.org + Subject: avoid division by 0 in Benchmark.pm + Date: Mon, 24 Jan 2000 16:15:38 +0100 + Message-ID: <20000124161538.A995@freesurf.fr> + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4879] By: gsar on 2000/01/24 14:14:20 + Log: force linkage of the function wrappers for globals in change#4878 + Branch: perl + ! embed.pl globals.c perlapi.h win32/win32.h +____________________________________________________________________________ +[ 4878] By: gsar on 2000/01/24 13:04:45 + Log: enable function wrappers for access to globals under MULTIPLICITY + (provides binary compatibility in the face of changes in interpreter + structure) + Branch: perl + ! Makefile.SH XSUB.h cflags.SH embed.pl makedef.pl objXSUB.h + ! perl.h perlapi.c perlapi.h win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4877] By: jhi on 2000/01/24 11:41:57 + Log: perlhist update. + Branch: cfgperl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 4876] By: jhi on 2000/01/24 11:32:07 + Log: Updates on the large file support status. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4875] By: jhi on 2000/01/24 11:23:16 + Log: Integrate with Sarathy. + Branch: cfgperl + !> ext/DB_File/Makefile.PL ext/NDBM_File/NDBM_File.pm + !> ext/ODBM_File/ODBM_File.pm lib/AutoSplit.pm + !> lib/Math/Complex.pm lib/Math/Trig.pm lib/Shell.pm +____________________________________________________________________________ +[ 4874] By: gsar on 2000/01/24 10:43:03 + Log: fix typos; avoid use constant for lowercase constants (produces + warnings now) + Branch: perl + ! ext/DB_File/Makefile.PL lib/Math/Complex.pm lib/Math/Trig.pm + ! lib/Shell.pm +____________________________________________________________________________ +[ 4873] By: gsar on 2000/01/24 09:40:24 + Log: avoid warnings when there's no subs to autosplit + Branch: perl + ! lib/AutoSplit.pm +____________________________________________________________________________ +[ 4872] By: jhi on 2000/01/24 09:39:01 + Log: Create a tool for converting a config_h.SH into a VOS config.h. + Branch: cfgperl + + vos/config.def vos/config.pl + ! MANIFEST vos/config.h vos/config_h.SH_orig +____________________________________________________________________________ +[ 4871] By: gsar on 2000/01/24 09:15:20 + Log: typos in change#4623 + Branch: perl + ! ext/NDBM_File/NDBM_File.pm ext/ODBM_File/ODBM_File.pm +____________________________________________________________________________ +[ 4870] By: jhi on 2000/01/24 06:43:19 + Log: Sync metaconfig units to comply with the typo fixes of #4869. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + + U/modified/cf_email.U U/modified/so.U + Branch: metaconfig/U/perl + ! dlsrc.U +____________________________________________________________________________ +[ 4869] By: jhi on 2000/01/24 06:04:31 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/pragma/diagnostics.t + !> (integrate 120 files) +____________________________________________________________________________ +[ 4868] By: gsar on 2000/01/23 21:49:28 + Log: on windows, set seek position to end for files opened in append mode + (improves compatibility with Unix, avoids buffering issues) + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4867] By: gsar on 2000/01/23 21:19:31 + Log: change#4866 was flawed; revert and add better fix for warning + Branch: perl + ! op.c op.h +____________________________________________________________________________ +[ 4866] By: gsar on 2000/01/23 20:43:56 + Log: optimize away runtime code for our($foo) (also avoid warnings) + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4865] By: gsar on 2000/01/23 13:17:18 + Log: DB_File 1.72 update from Paul Marquess + Branch: perl + ! ext/DB_File/Changes ext/DB_File/DB_File.pm + ! ext/DB_File/DB_File.xs ext/DB_File/version.c +____________________________________________________________________________ +[ 4864] By: gsar on 2000/01/23 13:12:31 + Log: system('VAR123=foo cmd') wasn't invoking shell (de-locale-ized patch + suggested by Dominic Dunlop ) + Branch: perl + ! doio.c +____________________________________________________________________________ +[ 4863] By: gsar on 2000/01/23 13:01:35 + Log: fix misclassified warnings + Branch: perl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 4862] By: gsar on 2000/01/23 12:52:12 + Log: document bareword prototype incompatibility + Branch: perl + ! pod/perldelta.pod pod/perlsub.pod +____________________________________________________________________________ +[ 4861] By: gsar on 2000/01/23 12:32:25 + Log: faulty edit + Branch: perl + ! lib/File/stat.pm +____________________________________________________________________________ +[ 4860] By: gsar on 2000/01/23 12:23:48 + Log: s/use vars/our/g modules that aren't independently maintained on CPAN + Branch: perl + ! ext/B/B/Asmdata.pm ext/Data/Dumper/Dumper.pm + ! ext/Devel/DProf/DProf.pm ext/Fcntl/Fcntl.pm + ! ext/File/Glob/Glob.pm ext/GDBM_File/GDBM_File.pm + ! ext/IO/lib/IO/Dir.pm ext/IO/lib/IO/File.pm + ! ext/IO/lib/IO/Handle.pm ext/IO/lib/IO/Pipe.pm + ! ext/IO/lib/IO/Poll.pm ext/IO/lib/IO/Seekable.pm + ! ext/IO/lib/IO/Socket.pm ext/IO/lib/IO/Socket/INET.pm + ! ext/IO/lib/IO/Socket/UNIX.pm ext/NDBM_File/NDBM_File.pm + ! ext/ODBM_File/ODBM_File.pm ext/Opcode/Opcode.pm + ! ext/Opcode/Safe.pm ext/POSIX/POSIX.pm + ! ext/SDBM_File/SDBM_File.pm ext/Socket/Socket.pm + ! ext/Thread/Thread.pm lib/AnyDBM_File.pm lib/AutoLoader.pm + ! lib/AutoSplit.pm lib/Class/Struct.pm lib/Dumpvalue.pm + ! lib/ExtUtils/Command.pm lib/ExtUtils/Install.pm + ! lib/ExtUtils/Installed.pm lib/ExtUtils/Liblist.pm + ! lib/ExtUtils/MM_VMS.pm lib/ExtUtils/Mksymlists.pm + ! lib/ExtUtils/Packlist.pm lib/Fatal.pm lib/File/Basename.pm + ! lib/File/Compare.pm lib/File/Copy.pm lib/File/Find.pm + ! lib/File/Path.pm lib/File/stat.pm lib/FileHandle.pm + ! lib/Math/Complex.pm lib/Math/Trig.pm lib/Net/Ping.pm + ! lib/Net/hostent.pm lib/Net/netent.pm lib/Net/protoent.pm + ! lib/Net/servent.pm lib/Shell.pm lib/Test.pm + ! lib/Test/Harness.pm lib/Tie/Array.pm lib/Tie/Handle.pm + ! lib/Time/gmtime.pm lib/Time/localtime.pm lib/User/grent.pm + ! lib/User/pwent.pm lib/base.pm lib/caller.pm lib/constant.pm + ! lib/diagnostics.pm lib/fields.pm lib/lib.pm lib/strict.pm +____________________________________________________________________________ +[ 4859] By: gsar on 2000/01/23 11:29:22 + Log: fix diagnostics to report "our" vs "my" correctly + Branch: perl + ! op.c pod/perldiag.pod +____________________________________________________________________________ +[ 4858] By: gsar on 2000/01/23 10:14:46 + Log: set api_version to 5.5.0 (binary compatibility needs to get tested + more widely) + Branch: perl + ! patchlevel.h +____________________________________________________________________________ +[ 4857] By: gsar on 2000/01/23 10:04:03 + Log: disallow our($foo::bar) + Branch: perl + ! pod/perldiag.pod toke.c +____________________________________________________________________________ +[ 4856] By: gsar on 2000/01/23 09:50:54 + Log: dprofpp can't find Devel::DProf::VERSION due to change#4852 + Branch: perl + ! utils/dprofpp.PL +____________________________________________________________________________ +[ 4855] By: gsar on 2000/01/23 09:36:51 + Log: new test (from Michael G Schwern ) + Branch: perl + + t/pragma/diagnostics.t + ! MANIFEST +____________________________________________________________________________ +[ 4854] By: gsar on 2000/01/23 09:24:40 + Log: add PREREQ_PM to default template (suggested by Michael G Schwern + ) + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 4853] By: gsar on 2000/01/23 09:08:30 + Log: cygwin update (from Eric Fifer ) + Branch: perl + ! cygwin/Makefile.SHs hints/cygwin.sh t/io/tell.t +____________________________________________________________________________ +[ 4852] By: gsar on 2000/01/23 08:52:44 + Log: mark some extensions as "special versions" to avoid CPAN indexer + confusion (from Ilya Zakharevich) + Branch: perl + ! ext/Devel/DProf/DProf.pm ext/Devel/Peek/Peek.pm +____________________________________________________________________________ +[ 4851] By: gsar on 2000/01/23 08:48:46 + Log: prefer POSIX::uname() rather than syscalls, which require attempting + to load syscall.ph (from David Huggins-Daines ) + Branch: perl + ! lib/Sys/Hostname.pm +____________________________________________________________________________ +[ 4850] By: gsar on 2000/01/23 08:36:43 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure Policy_sh.SH Porting/Glossary Porting/config.sh + !> Porting/config_H config_h.SH perl.h +____________________________________________________________________________ +[ 4849] By: gsar on 2000/01/23 08:17:30 + Log: fix localization in while BLOCK when there is a continue BLOCK + by introducing an explicit scope (c.f. change#4848) + Branch: perl + ! op.c pp_ctl.c t/cmd/while.t +____________________________________________________________________________ +[ 4848] By: gsar on 2000/01/23 06:43:51 + Log: fix scope cleanup when next jumps to a continue block; this is rather + in the nature of a kludge; it doesn't fix the longstanding bug that + makes C print "7" + instead of "1") + Branch: perl + ! pp_ctl.c t/cmd/while.t +____________________________________________________________________________ +[ 4847] By: gsar on 2000/01/23 04:47:25 + Log: don't warn about masked lexical in C, + C etc. + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4846] By: gsar on 2000/01/23 04:44:17 + Log: avoid warnings in change#4839 + Branch: perl + ! lib/Carp/Heavy.pm +____________________________________________________________________________ +[ 4845] By: gsar on 2000/01/22 13:12:38 + Log: Configure typos (from Ray Phillips ) + Branch: perl + ! Changes Configure +____________________________________________________________________________ +[ 4844] By: gsar on 2000/01/22 12:46:26 + Log: wrong category for exec() warning + Branch: perl + ! op.c pod/perlop.pod +____________________________________________________________________________ +[ 4843] By: gsar on 2000/01/22 12:42:40 + Log: fix line continuations in argument lists (from Helmut Jarausch) + Branch: perl + ! lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 4842] By: gsar on 2000/01/22 12:34:39 + Log: CGI.pm upgraded to v2.56 from CPAN + Branch: perl + ! eg/cgi/index.html lib/CGI.pm lib/CGI/Apache.pm + ! lib/CGI/Cookie.pm lib/CGI/Pretty.pm lib/CGI/Switch.pm + ! t/lib/cgi-html.t +____________________________________________________________________________ +[ 4841] By: gsar on 2000/01/22 12:07:23 + Log: avoid warnings due to lack of forward declarations + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 4840] By: gsar on 2000/01/22 12:04:30 + Log: heavy cleanup of Pod::Html bug fixes (from Wolfgang Laun + ) + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 4839] By: gsar on 2000/01/22 11:57:24 + Log: better Carp reporting within subclassed modules (from Wolfgang Laun + ) + Branch: perl + ! lib/Carp/Heavy.pm pod/perldelta.pod +____________________________________________________________________________ +[ 4838] By: gsar on 2000/01/22 10:53:06 + Log: truncate(FH) flushes FH before truncating it + Branch: perl + ! pp_sys.c t/io/fs.t +____________________________________________________________________________ +[ 4837] By: gsar on 2000/01/22 10:37:16 + Log: #line directives without a filename leave the file name as it was + instead of setting it to the script name (from Andrew Pimlott + ) + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4836] By: gsar on 2000/01/22 10:06:53 + Log: add patch for printf-style format typechecks (from Robin Barker + ); fixes for problems so identified + Branch: perl + ! XSUB.h doio.c dump.c embed.pl gv.c op.c perl.c perl.h pp_ctl.c + ! pp_hot.c pp_sys.c proto.h regcomp.c sv.c toke.c +____________________________________________________________________________ +[ 4835] By: gsar on 2000/01/22 08:42:52 + Log: From: John Tobey + Date: Thu, 16 Dec 1999 20:20:38 -0500 + Message-Id: + Subject: [ID 19991216.006] [PATCH 5.005_63] Reloading modules that use 'fields' + Branch: perl + ! lib/base.pm lib/fields.pm t/lib/fields.t +____________________________________________________________________________ +[ 4834] By: gsar on 2000/01/22 08:08:08 + Log: fix deeply nested closures that have no references to lexical in + intervening subs + Branch: perl + ! embed.h embed.pl op.c proto.h t/op/closure.t +____________________________________________________________________________ +[ 4833] By: gsar on 2000/01/21 17:04:21 + Log: add $VERSION + Branch: perl + ! lib/Text/Soundex.pm lib/Tie/Handle.pm +____________________________________________________________________________ +[ 4832] By: gsar on 2000/01/21 16:49:09 + Log: fix bug in dumping self-referential scalars + Branch: perl + ! ext/Data/Dumper/Dumper.pm ext/Data/Dumper/Dumper.xs + ! t/lib/dumper.t +____________________________________________________________________________ +[ 4831] By: jhi on 2000/01/21 09:16:07 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/op/exists_sub.t + !> INSTALL MANIFEST embed.h embed.pl global.sym objXSUB.h op.c + !> op.h perlapi.c pod/perldelta.pod pod/perldiag.pod + !> pod/perlfunc.pod pod/perlop.pod pod/perlvar.pod pp.c pp_hot.c + !> pp_sys.c proto.h sv.c sv.h t/pragma/warn/pp_hot + !> t/pragma/warn/pp_sys util.c utils/h2xs.PL +____________________________________________________________________________ +[ 4830] By: gsar on 2000/01/21 04:28:08 + Log: patch to report warnings on bogus filehandles passed to flock(), + more consistent warnings, from Greg Bacon + (slightly modified) + Branch: perl + ! embed.h embed.pl global.sym objXSUB.h perlapi.c + ! pod/perldiag.pod pp_hot.c pp_sys.c proto.h + ! t/pragma/warn/pp_hot t/pragma/warn/pp_sys util.c +____________________________________________________________________________ +[ 4829] By: gsar on 2000/01/21 03:43:46 + Log: typo fix + Branch: perl + ! pod/perlop.pod +____________________________________________________________________________ +[ 4828] By: gsar on 2000/01/21 03:32:31 + Log: notes about $^H and %^H from Ilya Zakharevich; substantial + fixups of faulty facts and prose + Branch: perl + ! pod/perlvar.pod +____________________________________________________________________________ +[ 4827] By: gsar on 2000/01/21 01:45:51 + Log: support for C (from Spider Boardman) + Branch: perl + + t/op/exists_sub.t + ! MANIFEST op.c op.h pod/perldelta.pod pod/perldiag.pod + ! pod/perlfunc.pod pp.c +____________________________________________________________________________ +[ 4826] By: gsar on 2000/01/21 01:35:46 + Log: mention the fact that open(my $foo, ...) covers all handle + constructors + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4825] By: gsar on 2000/01/21 01:03:34 + Log: From: Ilya Zakharevich + Date: Wed, 19 Jan 2000 15:05:11 -0500 + Message-ID: <20000119150511.A22859@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_63] h2xs goof and a depessimization + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 4824] By: gsar on 2000/01/20 19:14:26 + Log: INSTALL updates from Andy Dougherty + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 4823] By: gsar on 2000/01/20 08:40:13 + Log: sv_true() has a superfluous test + Branch: perl + ! sv.c sv.h +____________________________________________________________________________ +[ 4822] By: bailey on 2000/01/20 02:03:35 + Log: Minor cosmetic updates + Branch: vmsperl + ! configure.com +____________________________________________________________________________ +[ 4821] By: bailey on 2000/01/20 00:25:30 + Log: Quick integration of mainline changes to date + Branch: vmsperl + +> (branch 74 files) + - eg/cgi/dna.small.gif.uu eg/cgi/wilogo.gif.uu epoc/config.h + - epoc/perl.mmp epoc/perl.pkg ext/DynaLoader/dl_cygwin.xs + - lib/Pod/PlainText.pm lib/unicode/Eq/Latin1 + - lib/unicode/Eq/Unicode lib/unicode/Jamo-2.txt + - lib/unicode/Unicode.html lib/unicode/UnicodeData-Latest.txt + - lib/warning.pm os2/POSIX.mkfifo warning.h + !> (integrate 462 files) +____________________________________________________________________________ +[ 4820] By: jhi on 2000/01/19 22:46:42 + Log: More robust inc_version_list from Andy. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH + Branch: metaconfig + ! U/installdirs/inc_version_list.U +____________________________________________________________________________ +[ 4819] By: jhi on 2000/01/19 17:36:56 + Log: Add NV_PRESERVES_UV. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.h + Branch: metaconfig + ! U/protos/selecttype.U + Branch: metaconfig/U/perl + - nvpresuv.U + ! perlxv.U +____________________________________________________________________________ +[ 4818] By: jhi on 2000/01/19 08:13:05 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes Configure win32/config.bc win32/config.gc + !> win32/config.vc win32/config_H.bc win32/config_H.gc + !> win32/config_H.vc +____________________________________________________________________________ +[ 4817] By: gsar on 2000/01/19 05:25:43 + Log: regen win32/config* + Branch: perl + ! Configure win32/config.bc win32/config.gc win32/config.vc + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 4816] By: jhi on 2000/01/18 21:19:10 + Log: Policy patch from Andy for installation directories, + removing the $apiversion. + Branch: cfgperl + ! Policy_sh.SH +____________________________________________________________________________ +[ 4815] By: jhi on 2000/01/18 21:11:03 + Log: Move _GNU_SOURCE into config_h.SH awaay from Configure + as suggested by Andy. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/compline/d_gnulibc.U U/modified/cc.U +____________________________________________________________________________ +[ 4814] By: gsar on 2000/01/18 20:48:10 + Log: integrate cfgperl changes into mainline + Branch: perl + ! Changes + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> Porting/pumpkin.pod config_h.SH doop.c patchlevel.h perl.c + !> perl.h t/lib/posix.t t/op/pack.t utf8.c +____________________________________________________________________________ +[ 4813] By: jhi on 2000/01/18 19:41:33 + Log: metaconfig todo note from Andy. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/installdirs/inc_version_list.U +____________________________________________________________________________ +[ 4812] By: jhi on 2000/01/18 15:02:55 + Log: More -V. + Branch: cfgperl + ! perl.c +____________________________________________________________________________ +[ 4811] By: jhi on 2000/01/18 10:35:30 + Log: More compile-time options shown with -V. + Branch: cfgperl + ! perl.c +____________________________________________________________________________ +[ 4810] By: jhi on 2000/01/17 08:35:49 + Log: Add -D_GNU_SOURCE into ccflags for gcc (for now to expose + the strtold() and qgcvt() prototypes for long doubles, but + it should be okay in any case); fix bad assumptions in the + test suite about string->float conversions; though the out + parameter of strtold() (and strtoll()) is unused, it is nicer + to have it in correct type. + Branch: cfgperl + ! Configure config_h.SH perl.h t/lib/posix.t t/op/pack.t + Branch: metaconfig + ! U/modified/cc.U +____________________________________________________________________________ +[ 4809] By: jhi on 2000/01/16 19:21:18 + Log: strtoll works better ternary. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4808] By: jhi on 2000/01/16 19:12:58 + Log: Know strtoll. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.h +____________________________________________________________________________ +[ 4807] By: jhi on 2000/01/16 17:57:03 + Log: Integrate with Sarathy. + Branch: cfgperl + !> dump.c gv.c gv.h lib/vars.pm op.c op.h perl.h pod/perlfunc.pod + !> sv.c sv.h t/pragma/strict-vars toke.c util.c +____________________________________________________________________________ +[ 4806] By: jhi on 2000/01/16 16:37:47 + Log: Continue qgcvt work; closer now but not yet there. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH doop.c utf8.c + Branch: metaconfig + ! U/compline/d_gconvert.U + Branch: metaconfig/U/perl + ! d_qgcvt.U +____________________________________________________________________________ +[ 4805] By: jhi on 2000/01/15 22:26:16 + Log: Metaconfig and Porting patches from Andy; start using the new + long long and long double thingies from #4804; regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! Porting/pumpkin.pod config_h.SH patchlevel.h perl.h util.c + Branch: metaconfig + + U/dist_patches/dist-p70a U/dist_patches/dist-p70b + + U/dist_patches/dist-p70c U/installdirs/inc_version_list.U + + U/modified/myhostname.U U/modified/nis.U U/nullified/fpu.U + + U/nullified/lib.U + ! U/README U/compline/d_gconvert.U U/installdirs/sitearch.U + ! U/installdirs/sitelib.U U/installdirs/vendorarch.U + ! U/installdirs/vendorlib.U U/modified/Cppsym.U U/modified/Loc.U + ! U/modified/Oldconfig.U U/modified/Signal.U + ! U/modified/sig_name.U U/threads/usethreads.U + Branch: metaconfig/U/perl + ! d_qgcvt.U d_strtold.U d_strtoll.U d_strtoq.U d_strtoull.U + ! d_strtouq.U dlsrc.U i_db.U libperl.U patchlevel.U + ! usemultiplicity.U + Branch: perl + ! perl.h util.c +____________________________________________________________________________ +[ 4804] By: jhi on 2000/01/14 14:22:24 + Log: Add more quad/long long/long double sciency. + Branch: metaconfig/U/perl + + d_qgcvt.U d_strtold.U d_strtoll.U d_strtoq.U d_strtoull.U + + d_strtouq.U +____________________________________________________________________________ +[ 4803] By: gsar on 2000/01/14 04:40:49 + Log: minor optimization (avoid double sv_upgrade() for "our Foo $bar;") + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4802] By: gsar on 2000/01/14 04:35:55 + Log: add note about "our" + Branch: perl + ! lib/vars.pm +____________________________________________________________________________ +[ 4801] By: gsar on 2000/01/14 04:16:51 + Log: nailed "our" declarations, and better warnings on duplicate + "our" declarations + Branch: perl + ! dump.c gv.c gv.h op.c pod/perlfunc.pod sv.c sv.h + ! t/pragma/strict-vars toke.c +____________________________________________________________________________ +[ 4800] By: gsar on 2000/01/14 01:27:13 + Log: avoid spurious "Useless use of variable" warning on C + Branch: perl + ! dump.c op.c op.h +____________________________________________________________________________ +[ 4799] By: gsar on 2000/01/14 01:17:15 + Log: doc typo + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4798] By: jhi on 2000/01/13 16:31:34 + Log: Integrate with Sarathy. + Branch: cfgperl + +> epoc/config.sh epoc/epocish.c epoc/link.pl + +> ext/DynaLoader/XSLoader_pm.PL ext/DynaLoader/hints/openbsd.pl + +> ext/IPC/SysV/hints/cygwin.pl ext/NDBM_File/hints/cygwin.pl + +> ext/ODBM_File/hints/cygwin.pl lib/byte.pm lib/byte_heavy.pl + +> lib/unicode/Unicode.300 pod/perlfork.pod t/lib/glob-case.t + +> win32/perlhost.h win32/vdir.h win32/vmem.h + - epoc/Config.pm epoc/autosplit.pl epoc/config.h epoc/perl.mmp + - epoc/perl.pkg ext/DynaLoader/dl_cygwin.xs + - lib/unicode/UnicodeData-Latest.txt os2/POSIX.mkfifo + !> (integrate 282 files) +____________________________________________________________________________ +[ 4797] By: gsar on 2000/01/13 08:12:56 + Log: clearer docs for change#4796; faster av_exists() + Branch: perl + ! av.c pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod +____________________________________________________________________________ +[ 4796] By: gsar on 2000/01/13 06:49:03 + Log: support delete() and exists() on array, tied array, and pseudo-hash + elements or slices + Branch: perl + ! av.c embed.h embed.pl global.sym lib/Tie/Array.pm + ! lib/Tie/Hash.pm objXSUB.h op.c perlapi.c pod/perldelta.pod + ! pod/perlfunc.pod pod/perlref.pod pod/perltie.pod pp.c proto.h + ! t/op/avhv.t t/op/delete.t +____________________________________________________________________________ +[ 4795] By: gsar on 2000/01/11 20:52:30 + Log: extend site_perl changes change#4773 to vendor_perl as well + Branch: perl + ! Configure +____________________________________________________________________________ +[ 4794] By: gsar on 2000/01/11 19:18:50 + Log: rework INSTALL to reflect new logic for versioning sitelibs + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 4793] By: gsar on 2000/01/11 01:44:00 + Log: test for change#4792 + Branch: perl + ! t/op/fork.t +____________________________________________________________________________ +[ 4792] By: gsar on 2000/01/11 01:22:36 + Log: pseudo forked children inherit environment correctly + Branch: perl + ! win32/perlhost.h +____________________________________________________________________________ +[ 4791] By: gsar on 2000/01/10 19:14:03 + Log: test tweak + Branch: perl + ! t/op/fork.t +____________________________________________________________________________ +[ 4790] By: gsar on 2000/01/10 18:56:16 + Log: check for USE_ITHREADS sanity was too restrictive + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 4789] By: gsar on 2000/01/10 18:30:24 + Log: add workaround for textmode read() bug in MSVCRT; make chdir() do + a real SetCurrentDirectory() in toplevel host + Branch: perl + ! README.win32 win32/Makefile win32/makefile.mk win32/perlhost.h + ! win32/vdir.h win32/win32.c +____________________________________________________________________________ +[ 4782] By: gsar on 2000/01/10 05:27:03 + Log: EPOC port update (from Olaf Flebbe ) + Branch: perl + + epoc/config.sh epoc/epocish.c epoc/link.pl + - epoc/Config.pm epoc/autosplit.pl epoc/config.h epoc/perl.mmp + - epoc/perl.pkg + ! MANIFEST README.epoc epoc/createpkg.pl epoc/epoc.c + ! epoc/epoc_stubs.c epoc/epocish.h ext/IO/lib/IO/Socket.pm + ! lib/Sys/Hostname.pm +____________________________________________________________________________ +[ 4781] By: gsar on 2000/01/10 05:11:03 + Log: pod typos (from Abigail ) + Branch: perl + ! pod/perl.pod pod/perllexwarn.pod pod/perlxstut.pod +____________________________________________________________________________ +[ 4780] By: gsar on 2000/01/10 05:07:35 + Log: failing RE test added (from Robert Cunningham ) + Branch: perl + ! t/lib/thread.t +____________________________________________________________________________ +[ 4779] By: gsar on 2000/01/10 05:06:16 + Log: terminate -s switch processing only on C<-->, not on C<--foo> + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 4778] By: gsar on 2000/01/10 04:38:45 + Log: useithreads needs usemultiplicity + Branch: perl + ! Configure perl.h +____________________________________________________________________________ +[ 4777] By: gsar on 2000/01/10 01:18:04 + Log: use $Config{version} rather than $] where appropriate + Branch: perl + ! lib/CPAN.pm lib/ExtUtils/Installed.pm lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/Mksymlists.pm lib/Pod/Man.pm lib/diagnostics.pm + ! lib/lib.pm +____________________________________________________________________________ +[ 4776] By: gsar on 2000/01/10 00:11:34 + Log: enable fork.t on windows + Branch: perl + ! t/op/fork.t +____________________________________________________________________________ +[ 4775] By: gsar on 2000/01/10 00:07:29 + Log: broken test for use5005threads + Branch: perl + ! t/lib/safe2.t +____________________________________________________________________________ +[ 4774] By: gsar on 2000/01/09 23:56:37 + Log: more windows build tweaks + Branch: perl + ! installperl makedef.pl win32/Makefile win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/config_sh.PL + ! win32/makefile.mk +____________________________________________________________________________ +[ 4773] By: gsar on 2000/01/09 22:27:19 + Log: more changes for new-style version numbers (versions numbers on + the filesystem look like 5.5.640, except on DOS-DJGPP and VMS where + they look like 5_5_640; delete @Config{pm_apiversion,xs_apiversion}; + split $Config{apiversion} into three, @Config{apirevision,apiversion, + apisubversion} for CPP friendliness; $Config{sitelib} now defaults + to .../site_perl/$version, just like $Config{privlib}, making sitelib + completely independent across versions and substantially eliminating + chances of breaking older installations by overwriting newly built + extensions; all this means compatibility inclusions for @INC will need + to take into account older sitelib versions (this still TODO) + + windows, vms, dos tweaks for the above + Branch: perl + ! Changes Configure INSTALL Porting/config.sh Porting/config_H + ! config_h.SH configure.com dosish.h installman installperl + ! patchlevel.h perl.c perl.h vms/vmsish.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/config_h.PL win32/config_sh.PL win32/makefile.mk + ! win32/win32.c +____________________________________________________________________________ +[ 4772] By: gsar on 2000/01/09 19:05:33 + Log: s/usethreads/use5005threads/g + Branch: perl + ! myconfig.SH t/lib/english.t t/lib/thread.t t/op/nothread.t +____________________________________________________________________________ +[ 4771] By: gsar on 2000/01/09 18:51:50 + Log: Configure changes for new-style version numbers (from Andy Dougherty, + slightly altered) + Branch: perl + ! Configure INSTALL Porting/Glossary Porting/config.sh + ! Porting/config_H config_h.SH perl.h win32/Makefile + ! win32/config.bc win32/config.gc win32/config.vc + ! win32/makefile.mk +____________________________________________________________________________ +[ 4770] By: gsar on 2000/01/07 22:18:54 + Log: fix for 'make utest' failures (from Ilya Zakharevich) + Branch: perl + ! regexec.c +____________________________________________________________________________ +[ 4769] By: gsar on 2000/01/07 18:23:16 + Log: cygwin update (from Eric Fifer ) + Branch: perl + + ext/IPC/SysV/hints/cygwin.pl ext/NDBM_File/hints/cygwin.pl + + ext/ODBM_File/hints/cygwin.pl + ! Configure INSTALL MANIFEST ext/POSIX/Makefile.PL + ! hints/cygwin.sh installman installperl lib/Cwd.pm + ! lib/ExtUtils/MakeMaker.pm lib/File/Spec/Unix.pm lib/perl5db.pl + ! perlsdio.h t/op/magic.t t/op/stat.t utils/perlcc.PL +____________________________________________________________________________ +[ 4768] By: gsar on 2000/01/07 18:12:15 + Log: typo on h2xs.PL (from Helmut Jarausch) + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 4767] By: gsar on 2000/01/07 17:58:45 + Log: VMS update (from Peter Prymmer ) + Branch: perl + ! README.vms configure.com vms/subconfigure.com +____________________________________________________________________________ +[ 4766] By: gsar on 2000/01/07 17:54:05 + Log: os2/POSIX.mkfifo not needed (from Yitzchak Scott-Thoennes + ) + Branch: perl + - os2/POSIX.mkfifo + ! MANIFEST README.os2 +____________________________________________________________________________ +[ 4765] By: gsar on 2000/01/06 20:11:46 + Log: add workaround for dlopen() bug on OpenBSD (relative paths that + match /^lib/ won't load properly) + Branch: perl + + ext/DynaLoader/hints/openbsd.pl + ! Changes MANIFEST ext/DynaLoader/dl_dlopen.xs +____________________________________________________________________________ +[ 4764] By: gsar on 2000/01/06 19:51:08 + Log: add undocumented globals for compatibility--find.pl, and find2perl + generated code need them (from Helmut Jarausch ) + Branch: perl + ! lib/File/Find.pm +____________________________________________________________________________ +[ 4763] By: gsar on 2000/01/06 10:51:07 + Log: fix various C-backend shenanigans + Branch: perl + ! ext/B/B/C.pm +____________________________________________________________________________ +[ 4762] By: gsar on 2000/01/06 04:09:00 + Log: tweak test in change#4757 for Windows + Branch: perl + ! t/io/open.t +____________________________________________________________________________ +[ 4761] By: gsar on 2000/01/06 02:55:30 + Log: USE_ITHREADS tweak (reused pad values could be SvREADONLY if + they belonged to freed OP_CONSTs) + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4760] By: gsar on 2000/01/06 00:22:40 + Log: constant ranges could escape bareword check in list context + Branch: perl + ! op.c t/pragma/strict-subs +____________________________________________________________________________ +[ 4759] By: gsar on 2000/01/05 20:52:50 + Log: From: Ilya Zakharevich + Date: Wed, 05 Jan 2000 15:23:18 EST + Message-Id: <20000105152318.A7400@monk.mps.ohio-state.edu> + Subject: Re: minimal m//g matches appear busted + Branch: perl + ! regexec.c t/op/pat.t +____________________________________________________________________________ +[ 4758] By: gsar on 2000/01/05 12:49:40 + Log: various nits identified by warnings unmasked by recent changes + Branch: perl + ! ext/B/Makefile.PL lib/ExtUtils/Install.pm pod/perlfunc.pod +____________________________________________________________________________ +[ 4757] By: gsar on 2000/01/05 12:48:10 + Log: severe bugs in change#3786 fixed + Branch: perl + ! doio.c t/io/open.t +____________________________________________________________________________ +[ 4756] By: gsar on 2000/01/05 11:25:10 + Log: tweak change#4745 to make ebcdic output match for chars <= 037 + Branch: perl + ! ext/Data/Dumper/Dumper.pm +____________________________________________________________________________ +[ 4755] By: gsar on 2000/01/05 06:56:05 + Log: cygwin support tweaks (from Eric Fifer ) + Branch: perl + ! Configure util.c utils/perlcc.PL +____________________________________________________________________________ +[ 4754] By: gsar on 2000/01/05 06:52:25 + Log: avoid expensive Version_check (from Andreas Koenig) + Branch: perl + ! Changes lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm + ! lib/ExtUtils/MM_Win32.pm lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 4753] By: gsar on 2000/01/05 06:48:22 + Log: From: andreas.koenig@anima.de (Andreas J. Koenig) + Date: 03 Jan 2000 21:56:02 +0100 + Message-ID: + Subject: Reloading File::Copy + Branch: perl + ! Changes lib/File/Copy.pm t/lib/filecopy.t +____________________________________________________________________________ +[ 4752] By: gsar on 2000/01/04 01:19:20 + Log: s/USE_TEXTMODE_SCRIPTS/PERL_TEXTMODE_SCRIPTS/g + Branch: perl + ! win32/Makefile win32/makefile.mk win32/win32.h +____________________________________________________________________________ +[ 4751] By: gsar on 2000/01/03 18:26:08 + Log: avoid using (custom) autoloader in MakeMaker (from Andreas Koenig) + Branch: perl + ! lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 4750] By: gsar on 2000/01/02 21:58:02 + Log: make DProf look at $ENV{PERL_DPROF_OUT_FILE_NAME} to make it possible + to write to a file other than tmon.out (suggested by Haakon Alstadheim + ) + Branch: perl + ! ext/Devel/DProf/DProf.pm ext/Devel/DProf/DProf.xs +____________________________________________________________________________ +[ 4749] By: gsar on 2000/01/02 21:37:29 + Log: disable optimization in change#3612 for join() and quotemeta()--this + removes all the gross hacks for the special cases in that change; fix + pp_concat() for when TARG == arg (modified version of patch suggested + by Ilya Zakharevich) + Branch: perl + ! op.c opcode.h opcode.pl pp_hot.c sv.c t/op/lex_assign.t +____________________________________________________________________________ +[ 4748] By: gsar on 2000/01/02 20:26:06 + Log: MakeMaker should attempt to "require" rather than "use" prerequisites + to avoid imports (from Michael G Schwern ) + Branch: perl + ! lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 4747] By: gsar on 2000/01/02 20:17:36 + Log: fix 4-arg substr() when used as argument to subroutine + Branch: perl + ! pp.c t/op/substr.t +____________________________________________________________________________ +[ 4746] By: gsar on 2000/01/02 18:45:58 + Log: usethreads build fixups for NeXTstep (as suggested by Hans Mulder) + Branch: perl + ! embed.h embed.pl ext/DynaLoader/dl_beos.xs + ! ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs + ! ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_rhapsody.xs + ! perlapi.c proto.h thread.h util.c +____________________________________________________________________________ +[ 4745] By: gsar on 2000/01/02 18:15:44 + Log: ebcdic fix for Data::Dumper from Peter Prymmer + Branch: perl + ! ext/Data/Dumper/Dumper.pm regcomp.c +____________________________________________________________________________ +[ 4744] By: gsar on 1999/12/31 22:42:23 + Log: missing files in previous submit + Branch: perl + ! embed.h embed.pl ext/Devel/DProf/DProf.xs globals.c + ! lib/ExtUtils/MM_Unix.pm objXSUB.h perlapi.c proto.h +____________________________________________________________________________ +[ 4743] By: gsar on 1999/12/31 06:47:18 + Log: various Windows build tweaks + Branch: perl + ! win32/win32.h +____________________________________________________________________________ +[ 4742] By: gsar on 1999/12/30 21:32:36 + Log: change#4705 breaks code that interpolates $], so leave string value + of $] as it was for compatibility (and perhaps introduce $^V or similar + for the utf8 representation, maybe?) + Branch: perl + ! configpm gv.c +____________________________________________________________________________ +[ 4741] By: gsar on 1999/12/30 19:36:21 + Log: avoid CRLF in byteloadable files created by perlcc + Branch: perl + ! utils/perlcc.PL +____________________________________________________________________________ +[ 4740] By: gsar on 1999/12/30 19:35:07 + Log: leave DATA open in binmode if __END__ line doesn't have CRLF + Branch: perl + ! pod/perldelta.pod toke.c +____________________________________________________________________________ +[ 4739] By: gsar on 1999/12/30 05:44:21 + Log: enable the PERL_BINMODE_SCRIPTS behavior by default on Windows + to allow ByteLoader to work; the DATA filehandles continue to + be left open in text mode for compatibility + Branch: perl + ! embed.h embed.pl objXSUB.h pod/perldelta.pod proto.h sv.c + ! toke.c win32/Makefile win32/makefile.mk win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 4738] By: gsar on 1999/12/30 04:36:12 + Log: CR-LF support broken for formats + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4737] By: gsar on 1999/12/29 22:30:52 + Log: make DProf functional under pseudo-fork() + Branch: perl + ! ext/Devel/DProf/DProf.xs +____________________________________________________________________________ +[ 4736] By: gsar on 1999/12/29 21:04:59 + Log: slurp mode fix in change#2910 wasn't quite right (spotted by Hans + Mulder) + Branch: perl + ! doio.c pp_hot.c t/io/argv.t +____________________________________________________________________________ +[ 4735] By: gsar on 1999/12/29 18:12:40 + Log: re.pm is needed earlier, xsubpp now uses it (spotted by Andreas + Koenig) + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4734] By: gsar on 1999/12/28 21:10:37 + Log: Windows build tweaks + Branch: perl + ! INTERN.h sv.c +____________________________________________________________________________ +[ 4733] By: gsar on 1999/12/28 20:45:15 + Log: remove never-taken branch for making getc() operate on ARGV (spotted + by Ralph Corderoy ) + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 4732] By: gsar on 1999/12/28 20:42:13 + Log: tests for change#4642 and pod fixups suggested by Ralph Corderoy + + Branch: perl + ! pod/perldelta.pod pod/perlfunc.pod pod/perlre.pod t/io/argv.t +____________________________________________________________________________ +[ 4731] By: gsar on 1999/12/28 20:23:17 + Log: optimize XSUBs to use targets if the -nooptimize xsubpp option is + not supplied (variant of patch suggested by Ilya Zakharevich) + Branch: perl + ! XSUB.h lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 4730] By: gsar on 1999/12/28 19:55:56 + Log: range operator does magical string increment iff both operands + are non-numbers, from Tom Phoenix ; fixed + the "foreach (RANGE)" case as well + Branch: perl + ! pp_ctl.c t/op/range.t +____________________________________________________________________________ +[ 4729] By: gsar on 1999/12/28 18:40:19 + Log: Win9x + GCC update from Benjamin Stuhl + Branch: perl + - win32/PerlCRT.def win32/gstartup.c win32/oldnames.def + ! EXTERN.h INTERN.h MANIFEST README.win32 iperlsys.h + ! lib/ExtUtils/MM_Win32.pm makedef.pl win32/Makefile + ! win32/config.gc win32/genmk95.pl win32/makefile.mk + ! win32/perlhost.h win32/perllib.c win32/runperl.c win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 4728] By: gsar on 1999/12/28 07:44:19 + Log: typecasts needed + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4727] By: gsar on 1999/12/28 06:23:08 + Log: change#4721 needed line number adjustments + Branch: perl + ! MANIFEST global.sym proto.h t/pragma/warn/doop + ! t/pragma/warn/pp t/pragma/warn/regcomp t/pragma/warn/sv + ! t/pragma/warn/toke t/pragma/warn/utf8 +____________________________________________________________________________ +[ 4726] By: gsar on 1999/12/28 04:18:15 + Log: integrate utfperl contents into mainline + Branch: perl + +> lib/byte.pm lib/byte_heavy.pl + !> configpm embed.h embed.pl embedvar.h gv.c intrpvar.h objXSUB.h + !> patchlevel.h perl.c perl.h perlapi.c pp_ctl.c pp_hot.c proto.h + !> regnodes.h sv.c sv.h t/comp/require.t toke.c utf8.h +____________________________________________________________________________ +[ 4725] By: gsar on 1999/12/28 04:08:09 + Log: integrate mainline contents + Branch: utfperl + - ext/DynaLoader/dl_cygwin.xs lib/unicode/Eq/Latin1 + - lib/unicode/Eq/Unicode + !> (integrate 60 files) +____________________________________________________________________________ +[ 4724] By: gsar on 1999/12/28 03:44:10 + Log: fix for /(^|a)b/ breakage from Ilya Zakharevich + Branch: perl + ! regcomp.c t/op/re_tests +____________________________________________________________________________ +[ 4723] By: gsar on 1999/12/28 03:28:39 + Log: more ebcdic testsuite fixups (from Peter Prymmer) + Branch: perl + ! Changes lib/bigfloat.pl t/lib/charnames.t t/lib/dumper.t + ! t/pragma/overload.t t/pragma/utf8.t +____________________________________________________________________________ +[ 4722] By: gsar on 1999/12/28 03:14:48 + Log: avoid "used once" warning + Branch: perl + ! lib/diagnostics.pm +____________________________________________________________________________ +[ 4721] By: gsar on 1999/12/28 03:10:32 + Log: ebcdic tweaks for tests from Peter Prymmer + Branch: perl + ! t/pragma/warn/doop t/pragma/warn/pp t/pragma/warn/regcomp + ! t/pragma/warn/sv t/pragma/warn/toke t/pragma/warn/utf8 +____________________________________________________________________________ +[ 4720] By: gsar on 1999/12/28 03:08:39 + Log: pod nits from Simon Cozens and others + Branch: perl + ! README.os2 lib/ExtUtils/Embed.pm lib/ExtUtils/Install.pm + ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MakeMaker.pm + ! lib/ExtUtils/Mkbootstrap.pm pod/perlop.pod +____________________________________________________________________________ +[ 4719] By: gsar on 1999/12/28 03:01:04 + Log: perlport v1.45 from Chris Nandor + Branch: perl + ! pod/perlport.pod +____________________________________________________________________________ +[ 4718] By: gsar on 1999/12/28 02:59:16 + Log: newer version of constant.pm from Tom Phoenix; added Tom's notes to + perldelta; added STOP, DESTROY and AUTOLOAD to specials list + Branch: perl + ! lib/constant.pm pod/perldelta.pod pod/perlvar.pod + ! t/pragma/constant.t +____________________________________________________________________________ +[ 4717] By: gsar on 1999/12/28 02:47:04 + Log: cygwin update from Eric Fifer + Branch: perl + - ext/DynaLoader/dl_cygwin.xs + ! MAINTAIN MANIFEST ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/pair.c + ! hints/cygwin.sh installperl mg.c pod/perlfaq3.pod t/op/stat.t + ! util.c +____________________________________________________________________________ +[ 4716] By: gsar on 1999/12/28 02:40:51 + Log: tweak to show up db-linked-with-libpthread-but-not-perl problem + (from Andy Dougherty) + Branch: perl + ! Configure +____________________________________________________________________________ +[ 4715] By: gsar on 1999/12/28 02:38:44 + Log: better variant of change#4644 (from Andy Dougherty) + Branch: perl + ! Configure +____________________________________________________________________________ +[ 4714] By: gsar on 1999/12/28 02:36:40 + Log: be defensive about setting {host,group,pass}cat (from Andy Dougherty) + Branch: perl + ! Configure +____________________________________________________________________________ +[ 4713] By: gsar on 1999/12/28 02:35:15 + Log: $sitelib should be $prefix/lib/perl5/site_perl, as documented in + INSTALL (from Andy Dougherty) + Branch: perl + ! Configure +____________________________________________________________________________ +[ 4712] By: gsar on 1999/12/28 02:30:55 + Log: avoid creating new files during make install + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4711] By: gsar on 1999/12/28 02:24:44 + Log: pod edits from Paul Marquess and Mark-Jason Dominus + Branch: perl + ! AUTHORS Changes ext/DynaLoader/dl_aix.xs + ! ext/DynaLoader/dl_dlopen.xs lib/Net/Ping.pm pod/perlcall.pod + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4710] By: gsar on 1999/12/28 02:05:23 + Log: miniperl build fixes for os2 (from Yitzchak Scott-Thoennes + ); add explicit target for opmini.o + Branch: perl + ! Makefile.SH cygwin/Makefile.SHs os2/Makefile.SHs +____________________________________________________________________________ +[ 4709] By: gsar on 1999/12/28 01:20:39 + Log: partly fix perldiag regressions identified by Tom Christiansen + Branch: perl + ! doio.c lib/diagnostics.pm pod/perldiag.pod pp_hot.c pp_sys.c + ! t/pragma/warn/4lint t/pragma/warn/doio t/pragma/warn/pp_hot + ! t/pragma/warn/pp_sys +____________________________________________________________________________ +[ 4708] By: gsar on 1999/12/27 23:33:24 + Log: update perldiag for change#4707 + Branch: perl + ! perl.c pod/perldiag.pod +____________________________________________________________________________ +[ 4707] By: gsar on 1999/12/27 23:23:39 + Log: allow spaces in -I switch argument + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 4706] By: gsar on 1999/12/26 23:44:53 + Log: fix typos + Branch: utfperl + ! sv.h toke.c +____________________________________________________________________________ +[ 4705] By: gsar on 1999/12/24 04:02:35 + Log: support for v5.5.640 style version numbers + Branch: utfperl + ! configpm embedvar.h gv.c intrpvar.h objXSUB.h patchlevel.h + ! perl.c perl.h pp_ctl.c sv.c sv.h t/comp/require.t toke.c +____________________________________________________________________________ +[ 4704] By: gsar on 1999/12/23 08:54:27 + Log: bring in basic threads stuff under USE_ITHREADS + Branch: perl + ! makedef.pl op.c perl.c perl.h perlvars.h pp_sys.c thread.h + ! util.c +____________________________________________________________________________ +[ 4703] By: gsar on 1999/12/23 00:10:06 + Log: integrate mainline contents into utfperl + Branch: utfperl + !> (integrate 33 files) +____________________________________________________________________________ +[ 4702] By: gsar on 1999/12/20 17:18:23 + Log: virtual directory handling broken on paths with trailing slash + Branch: perl + ! win32/Makefile win32/makefile.mk win32/vdir.h +____________________________________________________________________________ +[ 4701] By: gsar on 1999/12/20 17:09:55 + Log: revert optimization in change#4700 (it appears OPpRUNTIME flag + isn't set for all m/$foo/o) + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 4700] By: gsar on 1999/12/20 16:28:51 + Log: avoid pp_regcomp() changing optree at run time under USE_*THREADS (or + we have a race on our hands) + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 4699] By: gsar on 1999/12/20 16:19:00 + Log: pod tweaks + Branch: perl + ! pod/perldelta.pod pod/perlfilter.pod pod/perlopentut.pod +____________________________________________________________________________ +[ 4698] By: gsar on 1999/12/20 07:55:07 + Log: uv_to_utf8() could lose 37th bit on HAS_QUAD platforms + Branch: perl + ! utf8.c +____________________________________________________________________________ +[ 4697] By: gsar on 1999/12/18 01:35:50 + Log: fix from Larry for parsing C<{ 0x1 => 'foo'}> as an + anon hash rather than a block; test case for the same + Branch: perl + ! t/comp/term.t toke.c +____________________________________________________________________________ +[ 4696] By: gsar on 1999/12/17 19:55:03 + Log: leak in change#4694 spotted by Larry + Branch: perl + ! hv.c +____________________________________________________________________________ +[ 4695] By: gsar on 1999/12/17 18:14:11 + Log: test case for change#4694 + Branch: perl + ! t/op/delete.t +____________________________________________________________________________ +[ 4694] By: gsar on 1999/12/17 18:09:08 + Log: delete() should return the value as is, not a copy thereof + Branch: perl + ! hv.c pod/perldelta.pod +____________________________________________________________________________ +[ 4693] By: gsar on 1999/12/17 17:45:58 + Log: fix for C<"\nx\taa\n" =~ /^\S\s+aa$/m> (from Ilya Zakharevich) + Branch: perl + ! regexec.c t/op/re_tests +____________________________________________________________________________ +[ 4692] By: gsar on 1999/12/17 17:41:10 + Log: credits tweak + Branch: perl + ! lib/File/Spec.pm +____________________________________________________________________________ +[ 4691] By: gsar on 1999/12/17 07:12:53 + Log: DynaLoader doesn't build properly when $(DLSRC) changes + (fix suggested by Hans Mulder) + Branch: perl + ! ext/DynaLoader/Makefile.PL +____________________________________________________________________________ +[ 4690] By: gsar on 1999/12/17 06:26:34 + Log: add missing new ops + Branch: perl + ! ext/B/ramblings/runtime.porting +____________________________________________________________________________ +[ 4689] By: gsar on 1999/12/17 06:16:49 + Log: test harness tweak from Hans Mulder + Branch: perl + ! t/TEST +____________________________________________________________________________ +[ 4688] By: gsar on 1999/12/17 06:14:23 + Log: miniperl build fixes for NeXTstep and cygwin (from Hans Mulder + and Lucian CIONCA ) + Branch: perl + ! Makefile.SH cygwin/Makefile.SHs +____________________________________________________________________________ +[ 4687] By: gsar on 1999/12/17 06:06:46 + Log: applied suggested patch with whitespace adjustments + From: Helmut Jarausch + Date: Thu, 16 Dec 1999 08:57:55 +0100 + Message-id: <38589B82.C4668E10@numa1.igpm.rwth-aachen.de> + Subject: Re: [ID 19991215.001] patch 5.005_63: Find::Fill cannot handle / + Branch: perl + ! lib/File/Find.pm +____________________________________________________________________________ +[ 4686] By: gsar on 1999/12/17 05:48:53 + Log: avoid warnings due to symbols unintroduced by XSLoader (spotted + by Hans Mulder) + Branch: perl + ! ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_hpux.xs + ! ext/DynaLoader/dl_mpeix.xs ext/DynaLoader/dl_next.xs + ! ext/DynaLoader/dl_rhapsody.xs +____________________________________________________________________________ +[ 4685] By: gsar on 1999/12/17 05:37:51 + Log: fix bug when one of the operands is +0E+0 (from Ronald J Kimball + ) + Branch: perl + ! lib/Math/BigFloat.pm t/lib/bigfltpm.t +____________________________________________________________________________ +[ 4684] By: gsar on 1999/12/16 09:32:48 + Log: spell out how to get 4-digit year (from Micheal G Schwern + ) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4683] By: gsar on 1999/12/16 09:26:53 + Log: type mismatch for %c format argument (spotted by Robin Barker + ) + Branch: perl + ! regcomp.c +____________________________________________________________________________ +[ 4682] By: gsar on 1999/12/16 08:33:28 + Log: mingw32 doesn't have anonymous union (from Benjamin Stuhl + ) + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4681] By: gsar on 1999/12/16 08:31:15 + Log: missing backslash (spotted by Johan Vromans) + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 4680] By: gsar on 1999/12/16 08:26:00 + Log: avoid coredump on diagnostics when STDERR is closed + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 4679] By: gsar on 1999/12/12 18:09:41 + Log: integrate mainline changes + Branch: utfperl + +> (branch 39 files) + - lib/unicode/Jamo-2.txt lib/unicode/Unicode.html + - lib/unicode/UnicodeData-Latest.txt + !> (integrate 447 files) +____________________________________________________________________________ +[ 4678] By: gsar on 1999/12/10 01:39:13 + Log: interpreter structure should be nulled under -DMULTIPLICITY + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 4677] By: gsar on 1999/12/09 11:10:27 + Log: update Changes + Branch: perl + ! Changes + +---------------- +Version 5.005_63 +---------------- + +____________________________________________________________________________ +[ 4676] By: gsar on 1999/12/09 10:51:43 + Log: fix File::Find testsuite bugs in symlink-less places + Branch: perl + ! t/lib/filefind.t +____________________________________________________________________________ +[ 4675] By: gsar on 1999/12/09 10:22:31 + Log: USE_ITHREADS tweaks and notes + Branch: perl + ! op.c pod/perldelta.pod sv.c +____________________________________________________________________________ +[ 4674] By: gsar on 1999/12/09 10:21:53 + Log: allow new style sort subs to work under usethreads + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 4673] By: gsar on 1999/12/09 04:00:23 + Log: document compatibility issue with literal list slices and NOTOP + (C is now a syntax error) + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4672] By: gsar on 1999/12/09 01:14:46 + Log: avoid mismatched expectation <-> int types for C++ builds + Branch: perl + ! embed.pl intrpvar.h proto.h toke.c +____________________________________________________________________________ +[ 4671] By: gsar on 1999/12/09 00:36:24 + Log: newer version of File::Find with support for following symlinks and + other features, from Helmut Jarausch + Branch: perl + ! lib/File/Find.pm pod/perldelta.pod t/lib/filefind.t +____________________________________________________________________________ +[ 4670] By: gsar on 1999/12/09 00:13:06 + Log: avoid initializing GvCV slot for autovivified filehandles + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 4669] By: gsar on 1999/12/08 19:09:27 + Log: apply change#4618 again along with Ilya's patch to fix bugs + in it (see change#4622) + Branch: perl + ! embed.h embed.pl perl.h proto.h regcomp.c regcomp.h regexec.c + ! t/op/re_tests t/op/subst.t +____________________________________________________________________________ +[ 4668] By: gsar on 1999/12/08 18:56:53 + Log: patch to fix parser bug in C<${h{${a[0]}}} = 13> + From: Larry Wall + Date: Tue, 7 Dec 1999 12:39:30 -0800 (PST) + Message-Id: <199912072039.MAA13257@kiev.wall.org> + Subject: Re: [ID 19991204.002] Inconsistency of ${hash{key}} + Branch: perl + ! embedvar.h intrpvar.h objXSUB.h sv.c toke.c +____________________________________________________________________________ +[ 4667] By: gsar on 1999/12/08 18:47:37 + Log: patch to fix aix hints from ortmann@vnet.ibm.com + Branch: perl + ! hints/aix.sh +____________________________________________________________________________ +[ 4666] By: gsar on 1999/12/08 18:29:02 + Log: documentation tweaks from M. J. T. Guy, Micheal Schwern, and + Tim Meadowcroft + Branch: perl + ! Changes lib/Benchmark.pm pod/perlipc.pod pod/perlre.pod +____________________________________________________________________________ +[ 4665] By: gsar on 1999/12/08 02:22:31 + Log: introduce save_I8() for saving byte values + Branch: perl + ! embed.h embed.pl global.sym objXSUB.h perlapi.c proto.h + ! regcomp.c regexec.c scope.c scope.h sv.c +____________________________________________________________________________ +[ 4664] By: gsar on 1999/12/08 02:02:33 + Log: use SAVEINT() rather than SAVEDESTRUCTOR() for saving PL_expect etc. + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4663] By: gsar on 1999/12/08 01:11:44 + Log: longstanding typo in lexer: PL_lex_expect was not properly + saved on reentry + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4662] By: gsar on 1999/12/07 23:16:21 + Log: typos in change#4546 + Branch: perl + ! ext/B/B.xs ext/B/B/Bytecode.pm ext/B/B/C.pm sv.c +____________________________________________________________________________ +[ 4661] By: gsar on 1999/12/07 09:33:50 + Log: typos in change#4660 + Branch: perl + ! embed.h embed.pl objXSUB.h perl.h perlapi.c pp_sys.c proto.h +____________________________________________________________________________ +[ 4660] By: gsar on 1999/12/06 23:42:55 + Log: tweaks for building with -DUSE_ITHREADS on !WIN32 platforms; + fix bug where lc($readonly) could result in bogus errors + Branch: perl + ! embed.h embed.pl iperlsys.h makedef.pl objXSUB.h perlapi.c + ! pp.c pp_sys.c proto.h sv.c +____________________________________________________________________________ +[ 4659] By: gsar on 1999/12/06 15:24:31 + Log: allow IRIX 6.5 to build perl (from Helmut Jarausch + ) + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 4658] By: gsar on 1999/12/06 15:18:30 + Log: fix for -Dp via $^D (suggested by Stephane Payrard + ) + Branch: perl + ! mg.c +____________________________________________________________________________ +[ 4657] By: gsar on 1999/12/06 06:50:01 + Log: change#4641 needs perldiag.pod edit + Branch: perl + - lib/unicode/UnicodeData-Latest.txt + ! pod/perldiag.pod +____________________________________________________________________________ +[ 4656] By: gsar on 1999/12/06 01:36:56 + Log: Makefile tweak for change#4649 + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4655] By: gsar on 1999/12/05 17:23:57 + Log: change#4653 was missing a patch reject + Branch: perl + ! win32/makefile.mk +____________________________________________________________________________ +[ 4654] By: gsar on 1999/12/05 11:41:04 + Log: windows build tweaks for Borland compiler + Branch: perl + ! win32/makefile.mk win32/perlhost.h win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 4653] By: gsar on 1999/12/05 11:07:37 + Log: applied somewhat modified version of suggested patch + From: "Benjamin Stuhl" + Date: Thu, 18 Nov 1999 18:45:27 PST + Message-ID: <19991119024527.72749.qmail@hotmail.com> + Subject: [PATCH 5.005_62] Perl on Win95, Mark IIB + Branch: perl + + win32/PerlCRT.def win32/gstartup.c win32/oldnames.def + ! MANIFEST ext/SDBM_File/Makefile.PL lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/MM_Win32.pm win32/config_sh.PL win32/genmk95.pl + ! win32/makefile.mk win32/win32.h +____________________________________________________________________________ +[ 4652] By: gsar on 1999/12/05 09:24:45 + Log: From: Mike Hopkirk (hops) + Date: Thu, 4 Nov 1999 16:34:23 -0800 (PST) + Message-Id: <199911050034.QAA06499@scoot.pdev.sco.com> + Subject: [ID 19991104.005] modified hints file for UnixWare7 ( svr5) + Branch: perl + ! Changes hints/svr5.sh +____________________________________________________________________________ +[ 4651] By: gsar on 1999/12/05 09:01:19 + Log: on dosish platforms, avoid infinite recursion in File::Path::mkpath() + when given non-existent drive names + Branch: perl + ! lib/File/Path.pm +____________________________________________________________________________ +[ 4650] By: gsar on 1999/12/05 08:47:11 + Log: windows build tweaks for change#4649 + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4649] By: gsar on 1999/12/05 07:49:28 + Log: make File::Glob::glob() the default for CORE::glob() + (old csh glob can still be had with -DPERL_EXTERNAL_GLOB) + Branch: perl + ! Makefile.SH op.c pod/perldelta.pod win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 4648] By: gsar on 1999/12/05 00:33:34 + Log: fix bug in processing L<> tags (from j.vavruska@post.cz) + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 4647] By: gsar on 1999/12/05 00:14:01 + Log: remove outdated entry + Branch: perl + ! pod/perltrap.pod +____________________________________________________________________________ +[ 4646] By: gsar on 1999/12/04 22:48:51 + Log: s/block/loop block/ in diagnostics about next, last, redo + Branch: perl + ! pod/perldiag.pod pp_ctl.c t/op/runlevel.t t/pragma/warn/pp_ctl +____________________________________________________________________________ +[ 4645] By: gsar on 1999/12/04 22:25:32 + Log: readability tweak suggested by GRommel@sears.com + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 4644] By: gsar on 1999/12/04 22:05:00 + Log: Configure tweak from Peter Prymmer + Branch: perl + ! Configure +____________________________________________________________________________ +[ 4643] By: gsar on 1999/12/04 21:55:27 + Log: make weak keyword check look for defined(&lock), not + merely defined(*lock) + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4642] By: gsar on 1999/12/04 21:11:51 + Log: make eof() open ARGV if it isn't open already; also fixes bug + where eof() would operate on any last-read filehandle, not + just ARGV + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 4641] By: gsar on 1999/12/04 04:42:25 + Log: make uninitialized value warnings report opcode + Branch: perl + ! doio.c embed.h embed.pl global.sym objXSUB.h opcode.h + ! opcode.pl perl.h perlapi.c pp.c pp_hot.c proto.h sv.c + ! t/op/misc.t t/pragma/warn/1global t/pragma/warn/2use + ! t/pragma/warn/3both t/pragma/warn/4lint t/pragma/warn/7fatal + ! t/pragma/warn/doio t/pragma/warn/pp t/pragma/warn/pp_hot + ! t/pragma/warn/sv +____________________________________________________________________________ +[ 4640] By: gsar on 1999/12/04 02:40:44 + Log: provide explicit functions timegm_nocheck() and timelocal_nocheck() + that don't do range checking + Branch: perl + ! lib/Time/Local.pm +____________________________________________________________________________ +[ 4639] By: gsar on 1999/12/04 01:00:49 + Log: better implementation of change#3326; open(local $foo,...) now + allowed in addition to any uninitialized variable, for consistency + with how autovivification works elsewhere; add code to use the + variable name as the name of the handle for simple variables, so + that diagnostics report the handle: "... at - line 1, <$foo> line 10." + Branch: perl + ! op.c pod/perldelta.pod pp.c t/io/open.t +____________________________________________________________________________ +[ 4638] By: gsar on 1999/12/03 21:20:00 + Log: pod nits + Branch: perl + ! pod/perlfunc.pod pod/perlrun.pod +____________________________________________________________________________ +[ 4637] By: gsar on 1999/12/03 08:59:04 + Log: change#4431 was flawed + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4636] By: gsar on 1999/12/03 07:59:52 + Log: pod embellishments from Nathan Torkington + Branch: perl + ! pod/perlfaq2.pod pod/perlhack.pod +____________________________________________________________________________ +[ 4635] By: gsar on 1999/12/03 07:56:04 + Log: perlfaq4 typo (from Jeff Pinyan ) + Branch: perl + ! pod/perlfaq4.pod +____________________________________________________________________________ +[ 4634] By: gsar on 1999/12/03 07:47:47 + Log: test tweak for VMS (from Craig A. Berry) + Branch: perl + ! t/io/nargv.t +____________________________________________________________________________ +[ 4633] By: gsar on 1999/12/03 07:44:52 + Log: patchls tweak from Andreas Koenig + Branch: perl + ! Porting/patchls +____________________________________________________________________________ +[ 4632] By: gsar on 1999/12/03 07:42:23 + Log: don't mess with the umask() + Branch: perl + ! installhtml installman installperl lib/ExtUtils/Install.pm + ! lib/ExtUtils/Manifest.pm +____________________________________________________________________________ +[ 4631] By: gsar on 1999/12/03 06:52:50 + Log: support -a switch to append bytecode to an existing file and make + perlcc use it (from Tom Hughes ) + Branch: perl + ! ext/B/B/Bytecode.pm utils/perlcc.PL +____________________________________________________________________________ +[ 4630] By: gsar on 1999/12/03 06:46:16 + Log: document incompatible perl4 vec() vs bitwise ops interaction trap + (from Tom Phoenix) + Branch: perl + ! pod/perltrap.pod +____________________________________________________________________________ +[ 4629] By: gsar on 1999/12/03 06:40:15 + Log: use PerlIO abstraction rather than straight stdio (from + Chip Salzenberg) + Branch: perl + ! ext/ByteLoader/ByteLoader.xs +____________________________________________________________________________ +[ 4628] By: gsar on 1999/12/03 06:15:54 + Log: avoid warning in IO::Select::exists() if socket doesn't exist + Branch: perl + ! ext/IO/lib/IO/Select.pm +____________________________________________________________________________ +[ 4627] By: gsar on 1999/12/03 06:05:19 + Log: two small patches from Peter Prymmer + Branch: perl + ! makedepend.SH win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4626] By: gsar on 1999/12/03 05:36:38 + Log: From: Peter Prymmer + Date: Thu, 25 Nov 1999 21:06:19 -0800 (PST) + Message-Id: <199911260506.VAA17230@brio.forte.com> + Subject: [PATCH: 5.005_62] implement /[:ascii:]/ on ebcdic machines + Branch: perl + ! regcomp.c +____________________________________________________________________________ +[ 4625] By: gsar on 1999/12/03 05:20:21 + Log: Windows build tweaks due to change#4623 + Branch: perl + ! win32/Makefile win32/makefile.mk win32/perlhost.h +____________________________________________________________________________ +[ 4624] By: gsar on 1999/12/03 04:58:30 + Log: add missing file + Branch: perl + + ext/DynaLoader/XSLoader_pm.PL +____________________________________________________________________________ +[ 4623] By: gsar on 1999/12/03 04:47:03 + Log: applied suggested patch; removed $VERSION = $VERSION hack + (change#4043 fixed the need for that) + From: Ilya Zakharevich + Date: Tue, 16 Nov 1999 01:50:31 EST + Message-Id: <199911160650.BAA18874@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_62] XSLoader.pm + Branch: perl + ! MANIFEST ext/B/B.pm ext/ByteLoader/ByteLoader.pm + ! ext/DB_File/DB_File.pm ext/Data/Dumper/Dumper.pm + ! ext/Devel/DProf/DProf.pm ext/Devel/Peek/Peek.pm + ! ext/DynaLoader/DynaLoader_pm.PL ext/DynaLoader/Makefile.PL + ! ext/DynaLoader/dlutils.c ext/Fcntl/Fcntl.pm + ! ext/File/Glob/Glob.pm ext/GDBM_File/GDBM_File.pm ext/IO/IO.pm + ! ext/NDBM_File/NDBM_File.pm ext/ODBM_File/ODBM_File.pm + ! ext/Opcode/Opcode.pm ext/POSIX/POSIX.pm + ! ext/SDBM_File/SDBM_File.pm ext/Socket/Socket.pm + ! ext/Thread/Thread.pm ext/attrs/attrs.pm ext/re/re.pm + ! lib/AutoLoader.pm lib/FindBin.pm lib/Getopt/Std.pm +____________________________________________________________________________ +[ 4622] By: gsar on 1999/12/03 04:02:39 + Log: revert change#4618 (breaks C<$_ = 'A:B'; s/^[a-z]:/x/>) + Branch: perl + ! Changes embed.h embed.pl perl.h proto.h regcomp.c regcomp.h +____________________________________________________________________________ +[ 4621] By: gsar on 1999/12/02 22:24:53 + Log: caveat about thread-safety of extensions + Branch: perl + ! pod/perlfork.pod +____________________________________________________________________________ +[ 4620] By: gsar on 1999/12/02 20:31:02 + Log: XS documentation patches suggested by Ilya, severally adjusted + Branch: perl + ! pod/perlxs.pod pod/perlxstut.pod +____________________________________________________________________________ +[ 4619] By: gsar on 1999/12/02 17:52:50 + Log: re-add missing Unicode database master + Branch: perl + + lib/unicode/Unicode.300 +____________________________________________________________________________ +[ 4618] By: gsar on 1999/12/02 06:56:18 + Log: applied suggested patch with prototype changes + From: Ilya Zakharevich + Date: Tue, 23 Nov 1999 22:55:55 EST + Message-Id: <199911240355.WAA23033@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_62] First char cognizance + Branch: perl + ! embed.h embed.pl perl.h proto.h regcomp.c regcomp.h +____________________________________________________________________________ +[ 4617] By: gsar on 1999/12/02 06:04:57 + Log: fixes for bugs in change#4586 and OS/2 pod tweak, from Ilya + Branch: perl + ! os2/OS2/REXX/REXX.pm regexec.c t/op/re_tests +____________________________________________________________________________ +[ 4616] By: gsar on 1999/12/02 04:30:22 + Log: various documentation tweaks suggested by M. J. T. Guy + Branch: perl + ! INSTALL lib/strict.pm pod/perlfunc.pod pod/perlsyn.pod +____________________________________________________________________________ +[ 4615] By: gsar on 1999/12/02 04:17:43 + Log: various File::Glob fixes for DOSISH platforms + From: "Moore, Paul" + Date: Tue, 02 Nov 1999 11:11:25 GMT + Message-Id: <714DFA46B9BBD0119CD000805FC1F53BDC38E3@UKRUX002.rundc.uk.origin-it.com> + Subject: File::Glob again. Final patch, honest! + Branch: perl + + t/lib/glob-case.t + ! MANIFEST ext/File/Glob/Changes ext/File/Glob/Glob.pm + ! ext/File/Glob/Glob.xs ext/File/Glob/bsd_glob.c + ! ext/File/Glob/bsd_glob.h op.c t/lib/glob-global.t +____________________________________________________________________________ +[ 4614] By: gsar on 1999/12/02 03:42:55 + Log: allow XSUBs and prototyped subroutines to be used with sort() (tweaked + variant of patch suggested by Peter Haworth ) + Branch: perl + ! pod/perldelta.pod pod/perlfunc.pod pp_ctl.c t/op/sort.t +____________________________________________________________________________ +[ 4613] By: gsar on 1999/12/02 01:59:19 + Log: ignore yet another known scalar leak + Branch: perl + ! t/pragma/warn/regcomp +____________________________________________________________________________ +[ 4612] By: gsar on 1999/12/02 01:15:02 + Log: avoid potential stack extension bug in pp_unpack() (spotted by Ilya) + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 4611] By: gsar on 1999/12/02 00:31:43 + Log: a somewhat tweaked version of suggested patch + From: Ilya Zakharevich + Date: Wed, 27 Oct 1999 18:57:41 -0400 (EDT) + Message-Id: <199910272257.SAA29928@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_62] Another round of pack/vec docs patches + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4610] By: gsar on 1999/12/01 19:09:31 + Log: more accurate require() pseudocode (from James P. Williams + ) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4609] By: gsar on 1999/12/01 18:43:49 + Log: avoid "Callback called exit" error on intentional exit() + Branch: perl + ! embedvar.h intrpvar.h objXSUB.h perl.c perl.h pp_ctl.c +____________________________________________________________________________ +[ 4608] By: gsar on 1999/12/01 18:42:38 + Log: find_byclass() prototype was incoherent + Branch: perl + ! regexec.c +____________________________________________________________________________ +[ 4607] By: gsar on 1999/12/01 05:45:10 + Log: better documentation for goto &NAME (from M. J. T. Guy) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4606] By: gsar on 1999/12/01 05:33:14 + Log: integrate cfgperl contents into mainline + Branch: perl + +> lib/unicode/Jamo.txt lib/unicode/NamesList.html + +> lib/unicode/UCD300.html lib/unicode/Unicode3.html + - lib/unicode/Jamo-2.txt lib/unicode/Unicode.html + ! Changes + !> (integrate 210 files) +____________________________________________________________________________ +[ 4605] By: gsar on 1999/12/01 05:15:27 + Log: avoid PTR->IV cast warnings + Branch: perl + ! mg.c op.c scope.h +____________________________________________________________________________ +[ 4604] By: gsar on 1999/12/01 03:59:56 + Log: email address changes + Branch: perl + ! AUTHORS Changes Porting/genlog Porting/p4d2p Porting/p4desc + ! README.win32 ext/Data/Dumper/Dumper.pm lib/DB.pm + ! lib/File/DosGlob.pm lib/Math/Complex.pm lib/Math/Trig.pm + ! pod/perl5005delta.pod pod/perlport.pod t/op/runlevel.t + ! utils/perlbug.PL utils/perldoc.PL win32/bin/perlglob.pl +____________________________________________________________________________ +[ 4603] By: gsar on 1999/12/01 03:45:13 + Log: minor USE_ITHREADS tweaks + Branch: perl + ! doio.c op.c op.h pp_hot.c pp_sys.c run.c win32/Makefile + ! win32/perllib.c win32/win32.h +____________________________________________________________________________ +[ 4602] By: gsar on 1999/12/01 01:00:09 + Log: more complete pseudo-fork() support for Windows + Branch: perl + + pod/perlfork.pod win32/perlhost.h win32/vdir.h win32/vmem.h + ! MANIFEST XSUB.h cop.h dump.c embed.h embed.pl embedvar.h + ! ext/B/B/CC.pm ext/Opcode/Opcode.xs global.sym globals.c + ! globvar.sym gv.c hv.c intrpvar.h iperlsys.h makedef.pl mg.c + ! mpeix/mpeixish.h objXSUB.h op.c op.h os2/os2ish.h perl.c + ! perl.h perlapi.c plan9/plan9ish.h pod/Makefile pod/buildtoc + ! pod/perl.pod pod/roffitall pp.c pp_ctl.c pp_hot.c pp_sys.c + ! proto.h regcomp.c run.c scope.c scope.h sv.c t/op/fork.t + ! toke.c unixish.h util.c vos/vosish.h win32/Makefile + ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h + ! win32/win32iop.h win32/win32thread.h +____________________________________________________________________________ +[ 4601] By: gsar on 1999/12/01 00:45:38 + Log: rudimentary support for remote debugging, from aeons ago (somewhat + modified) + From: Graham TerMarsch + Date: Sat, 12 Sep 1998 10:46:55 -0700 + Message-ID: <35FAB38F.EA9AAC50@activestate.com> + Subject: Re: Patches to perl5db.pl to allow for remote debugging + Branch: perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 4600] By: chip on 1999/11/19 21:16:00 + Log: Document known limitations of fdopen() on some systems, + as they apply to open() and sysopen(). + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4599] By: chip on 1999/11/19 17:20:19 + Log: Undef printf before redirecting it to PerlIO_stdoutf. + (Avoids an irritating warning when compiling with PerlIO.) + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 4598] By: jhi on 1999/11/22 21:30:17 + Log: Small VMS nits from Craig A. Berry, . + Branch: cfgperl + ! README.vms t/io/open.t +____________________________________________________________________________ +[ 4597] By: jhi on 1999/11/21 16:21:21 + Log: Replace #4596 with the change done in 5.005_03. + Branch: cfgperl + ! ext/Errno/Errno_pm.PL +____________________________________________________________________________ +[ 4596] By: jhi on 1999/11/21 16:07:20 + Log: Skip processing a file if the file to be opened is '-' + (can happen in UNICOS) + Branch: cfgperl + ! ext/Errno/Errno_pm.PL +____________________________________________________________________________ +[ 4595] By: jhi on 1999/11/21 14:05:10 + Log: VMS patches from Peter Prymmer. + Branch: cfgperl + ! doio.c mg.c taint.c vms/subconfigure.com vms/vms.c +____________________________________________________________________________ +[ 4594] By: jhi on 1999/11/18 17:07:14 + Log: The find_byclass prototype is already in proto.h. + Branch: cfgperl + ! regexec.c +____________________________________________________________________________ +[ 4593] By: gsar on 1999/11/16 21:25:21 + Log: typo in flag checks + Branch: utfperl + ! sv.h +____________________________________________________________________________ +[ 4592] By: jhi on 1999/11/16 21:17:25 + Log: Regen Configure. + Branch: cfgperl + ! Configure config_h.SH pp.c pp.h vms/subconfigure.com + Branch: metaconfig + ! U/a_dvisory/quadtype.U +____________________________________________________________________________ +[ 4591] By: jhi on 1999/11/16 14:53:19 + Log: Integrate with Sarathy. + Branch: cfgperl + !> cop.h deb.c embed.h embed.pl global.sym lib/Pod/Checker.pm + !> lib/Pod/InputObjects.pm lib/Pod/Parser.pm lib/Pod/Select.pm + !> lib/Pod/Usage.pm makedef.pl objXSUB.h perl.c perlapi.c + !> pod/podchecker.PL pp_sys.c proto.h sv.c t/pod/poderrs.t + !> t/pod/poderrs.xr +____________________________________________________________________________ +[ 4590] By: gsar on 1999/11/16 05:57:56 + Log: Pod::Parser updates (v1.091) from Brad Appleton + Branch: perl + ! lib/Pod/Checker.pm lib/Pod/InputObjects.pm lib/Pod/Parser.pm + ! lib/Pod/Select.pm lib/Pod/Usage.pm pod/podchecker.PL + ! t/pod/poderrs.t t/pod/poderrs.xr +____________________________________________________________________________ +[ 4589] By: gsar on 1999/11/15 18:47:34 + Log: add a synchronous stub fork() for USE_ITHREADS to prove that a simple + C works on + Windows (incidentally running a cloned^2 interpreter :) + Branch: perl + ! embed.h embed.pl global.sym makedef.pl objXSUB.h perlapi.c + ! pp_sys.c proto.h sv.c +____________________________________________________________________________ +[ 4588] By: gsar on 1999/11/15 14:34:36 + Log: cloning the stack (part 1) + Branch: perl + ! cop.h deb.c perl.c sv.c +____________________________________________________________________________ +[ 4587] By: jhi on 1999/11/15 00:22:20 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes embed.h embed.pl embedvar.h global.sym intrpvar.h + !> makedef.pl objXSUB.h op.c perl.h perlapi.c proto.h run.c sv.c + !> win32/perllib.c +____________________________________________________________________________ +[ 4586] By: jhi on 1999/11/14 21:17:26 + Log: Ilya's "hopscotch" patch, reworked by Ilya to fit. + Branch: cfgperl + ! embed.h embed.pl embedvar.h proto.h regexec.c t/op/re_tests +____________________________________________________________________________ +[ 4585] By: gsar on 1999/11/14 20:01:45 + Log: tweak for win32 build + Branch: perl + ! embed.h embed.pl op.c proto.h +____________________________________________________________________________ +[ 4584] By: gsar on 1999/11/14 19:46:25 + Log: cosmetic tweaks + Branch: perl + ! embed.h embed.pl embedvar.h global.sym intrpvar.h makedef.pl + ! objXSUB.h perl.h perlapi.c proto.h sv.c win32/perllib.c +____________________________________________________________________________ +[ 4583] By: gsar on 1999/11/14 17:38:32 + Log: fix problem pointer casts + Branch: perl + ! Changes run.c sv.c +____________________________________________________________________________ +[ 4582] By: jhi on 1999/11/14 17:10:01 + Log: Integrate with Sarathy. + Branch: cfgperl + !> cop.h dump.c ext/Opcode/Opcode.xs gv.c op.c perl.c perly.c + !> perly.y pp_ctl.c pp_sys.c sv.c t/op/misc.t toke.c util.c + !> vms/perly_c.vms win32/perllib.c +____________________________________________________________________________ +[ 4581] By: jhi on 1999/11/14 17:08:23 + Log: The separation of 64-bitness and largefileness continues + (with a setback, see hpux.sh). + Branch: cfgperl + ! Configure MANIFEST config_h.SH hints/aix.sh hints/hpux.sh + ! hints/solaris_2.sh + Branch: metaconfig + ! U/threads/archname.U U/typedefs/lseektype.U + Branch: metaconfig/U/perl + ! fpossize.U use64bits.U uselfs.U +____________________________________________________________________________ +[ 4580] By: jhi on 1999/11/14 13:26:41 + Log: Another Unicode update. + Branch: cfgperl + + lib/unicode/Jamo.txt lib/unicode/NamesList.html + + lib/unicode/UCD300.html lib/unicode/Unicode3.html + - lib/unicode/Jamo-2.txt lib/unicode/Unicode.html + ! (edit 189 files) +____________________________________________________________________________ +[ 4579] By: gsar on 1999/11/14 10:21:49 + Log: sundry cleanups for cloned interpreters (only known failure mode + is due to regexps keeping non-constant data in their compiled + structures) + Branch: perl + ! cop.h dump.c ext/Opcode/Opcode.xs gv.c op.c perl.c pp_ctl.c + ! pp_sys.c sv.c toke.c util.c win32/perllib.c +____________________________________________________________________________ +[ 4578] By: gsar on 1999/11/14 03:37:37 + Log: fix bug in change#4515 (STOP blocks now see @ARGV like the rest) + Branch: perl + ! perly.c perly.y t/op/misc.t vms/perly_c.vms +____________________________________________________________________________ +[ 4577] By: jhi on 1999/11/13 19:50:24 + Log: Change #4576 accidentally leaked also parts of + Ilya's patch that won't apply cleanly anymore. + Branch: cfgperl + ! regexec.c t/op/re_tests +____________________________________________________________________________ +[ 4576] By: jhi on 1999/11/13 19:43:37 + Log: Integrate with Sarathy. + Branch: cfgperl + ! embed.h embed.pl embedvar.h proto.h regexec.c t/op/re_tests + !> ext/Errno/Errno_pm.PL ext/IO/lib/IO/Socket.pm t/lib/dumper.t + !> t/op/regexp.t t/pragma/overload.t +____________________________________________________________________________ +[ 4575] By: gsar on 1999/11/13 19:41:46 + Log: typos in change#4561 and change#4565 + Branch: perl + ! ext/Errno/Errno_pm.PL ext/IO/lib/IO/Socket.pm +____________________________________________________________________________ +[ 4574] By: gsar on 1999/11/13 19:31:19 + Log: revert non-kosher parts of change#4562 (sort order problems + should be ignored (on ebcdic) by fixing dumper.t/T() to sort + result and expected lines; /[:ascii:]/ not working should be + fixed, not ignored in regexp.t; result from sort should be + fixed to be ascii portable on ebcdic, not ebcdic-specific) + Branch: perl + ! t/lib/dumper.t t/op/regexp.t t/pragma/overload.t +____________________________________________________________________________ +[ 4573] By: gsar on 1999/11/13 19:13:04 + Log: integrate cfgperl changes into mainline + Branch: perl + +> lib/unicode/Eq/Latin1.pl lib/unicode/Eq/Unicode.pl + +> lib/unicode/In/BopomofoExtended.pl + +> lib/unicode/In/BraillePatterns.pl + +> lib/unicode/In/CJKRadicalsSupplement.pl + +> lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl + +> lib/unicode/In/Cherokee.pl + +> lib/unicode/In/IdeographicDescriptionCharacters.pl + +> lib/unicode/In/KangxiRadicals.pl lib/unicode/In/Khmer.pl + +> lib/unicode/In/Mongolian.pl lib/unicode/In/Myanmar.pl + +> lib/unicode/In/Ogham.pl lib/unicode/In/Runic.pl + +> lib/unicode/In/Sinhala.pl lib/unicode/In/Syriac.pl + +> lib/unicode/In/Thaana.pl + +> lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl + +> lib/unicode/In/YiRadicals.pl lib/unicode/In/YiSyllables.pl + - lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + !> (integrate 213 files) +____________________________________________________________________________ +[ 4572] By: jhi on 1999/11/13 18:44:50 + Log: From: "Craig A. Berry" + To: perl5-porters@perl.org, VMSPERL@perl.org + Subject: [PATCH 5.005_03 and 5.005_62] updates to README.vms + Date: Wed, 27 Oct 1999 11:02:54 -0500 + Message-Id: <4.2.0.58.19991027105257.00addc10@mmtnt11.metamor.com> + Branch: cfgperl + ! README.vms +____________________________________________________________________________ +[ 4571] By: jhi on 1999/11/13 18:33:39 + Log: From: jand@activestate.com (Jan Dubois) + To: perl5-porters@perl.org, Perl-Win32-Porters@activestate.com + Cc: Douglas Lankshear , + Gurusamy Sarathy + Subject: [5.005_62 PATCH] support link() on WinNT and NTFS + Date: Tue, 09 Nov 1999 00:38:33 +0100 + Message-ID: <382b5d24.10899522@smtprelay.t-online.de> + Branch: cfgperl + ! XSUB.h iperlsys.h pp_sys.c t/io/fs.t win32/config.bc + ! win32/config.gc win32/config.vc win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/perllib.c + ! win32/win32.c win32/win32iop.h +____________________________________________________________________________ +[ 4570] By: jhi on 1999/11/13 18:30:37 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_62] makedef.pl goof + Date: Mon, 8 Nov 1999 23:55:21 -0500 (EST) + Message-Id: <199911090455.XAA25627@monk.mps.ohio-state.edu> + Branch: cfgperl + ! makedef.pl +____________________________________________________________________________ +[ 4569] By: jhi on 1999/11/13 18:06:54 + Log: From: Michael G Schwern + To: perl5-porters@perl.org, pod-people@perl.org + Cc: tchrist@mox.perl.com, gnat@frii.com + Subject: [DOCPATCH 5.005_62 perlfaq9.pod] Mention HTML::FormatText + Date: Wed, 10 Nov 1999 17:21:46 -0500 + Message-ID: <19991110172146.A23527@athens.aocn.com> + Branch: cfgperl + ! pod/perlfaq9.pod +____________________________________________________________________________ +[ 4568] By: jhi on 1999/11/13 18:05:33 + Log: From: "Paul Moore" + To: + Subject: DynaLoader_pm.PL patch (backslashes in strings) + Date: Wed, 10 Nov 1999 22:52:02 -0000 + Message-ID: + Branch: cfgperl + ! ext/DynaLoader/DynaLoader_pm.PL +____________________________________________________________________________ +[ 4567] By: jhi on 1999/11/13 18:03:52 + Log: From: JD Laub + To: perl5-porters@perl.org + Subject: [ID 19991112.002] patch: Exporter.pm not reporting path + Date: Fri, 12 Nov 1999 08:58:28 -0700 (MST) + Message-Id: <199911121558.IAA08915@mocha.iasi.com> + Branch: cfgperl + ! lib/Exporter/Heavy.pm +____________________________________________________________________________ +[ 4566] By: jhi on 1999/11/13 18:01:24 + Log: From: Bernard Quatermass + To: perl5-porters@perl.org + Subject: small patch for perldoc + Date: Fri, 12 Nov 1999 23:11:43 GMT + Message-Id: + Branch: cfgperl + ! utils/perldoc.PL +____________________________________________________________________________ +[ 4565] By: jhi on 1999/11/13 17:58:54 + Log: From: Scott Gifford + To: perl5-porters@perl.org + Cc: gbarr@pobox.com + Subject: [ID 19991112.004] Bug in IO::Socket (patch included) + Date: 12 Nov 1999 18:55:30 -0500 + Message-Id: + Branch: cfgperl + ! ext/IO/lib/IO/Socket.pm +____________________________________________________________________________ +[ 4564] By: jhi on 1999/11/13 17:45:39 + Log: Applied manually: + From: "Craig A. Berry" + To: perl5-porters@perl.org, VMSPERL@perl.org + Subject: [PATCH 5.005_62] patches required to build on VMS + Date: Tue, 09 Nov 1999 18:16:14 -0600 + Message-Id: <4.2.2.19991109173839.00d12630@mmtnt11.metamor.com> + Branch: cfgperl + ! configure.com vms/descrip_mms.template vms/subconfigure.com + ! vms/vms.c vms/vmsish.h +____________________________________________________________________________ +[ 4563] By: jhi on 1999/11/13 17:18:41 + Log: Regen Unicode tables to include a warning: + Thou Shalt Not Edit Them By Hand; add missing + (Unicode 2.0 -introduced) tables to MANIFEST; + convert the equivalence tables to be valid Perl code. + Branch: cfgperl + + lib/unicode/Eq/Latin1.pl lib/unicode/Eq/Unicode.pl + + lib/unicode/In/BopomofoExtended.pl + + lib/unicode/In/BraillePatterns.pl + + lib/unicode/In/CJKRadicalsSupplement.pl + + lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl + + lib/unicode/In/Cherokee.pl + + lib/unicode/In/IdeographicDescriptionCharacters.pl + + lib/unicode/In/KangxiRadicals.pl lib/unicode/In/Khmer.pl + + lib/unicode/In/Mongolian.pl lib/unicode/In/Myanmar.pl + + lib/unicode/In/Ogham.pl lib/unicode/In/Runic.pl + + lib/unicode/In/Sinhala.pl lib/unicode/In/Syriac.pl + + lib/unicode/In/Thaana.pl + + lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl + + lib/unicode/In/YiRadicals.pl lib/unicode/In/YiSyllables.pl + - lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + ! (edit 169 files) +____________________________________________________________________________ +[ 4562] By: jhi on 1999/11/13 16:53:00 + Log: From: Peter Prymmer + To: gsar@activestate.com, perl-mvs@perl.org, perlbug@perl.com + Subject: [PATCH: 5.005_62]was Re: [ID 19991102.003] perl on os390 + Date: Wed, 10 Nov 1999 14:34:36 -0800 (PST) + Message-Id: <199911102234.OAA01018@brio.forte.com> + Branch: cfgperl + ! t/lib/dumper.t t/op/pack.t t/op/regexp.t t/pragma/locale.t + ! t/pragma/overload.t +____________________________________________________________________________ +[ 4561] By: jhi on 1999/11/13 16:29:37 + Log: $Config{myarchname} is not a good architecture identifier + because it may contain host/node identification like + CPU serial numbers. + Branch: cfgperl + ! ext/Errno/Errno_pm.PL +____________________________________________________________________________ +[ 4560] By: jhi on 1999/11/13 16:26:13 + Log: Continue largefileness separation from quadness; + move nv-preserving test out of perl.h into Configure; + use HAS_SETVBUF in IO. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH ext/IO/IO.xs hints/solaris_2.sh perl.h pp_sys.c + Branch: metaconfig + ! U/a_dvisory/quadtype.U + Branch: metaconfig/U/perl + + nvpresuv.U + ! d_fseeko.U d_ftello.U io64.U perlxv.U +____________________________________________________________________________ +[ 4559] By: jhi on 1999/11/13 13:46:38 + Log: Try to fix largefileness so that it "works" without a quad IV. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.h pp_sys.c t/lib/syslfs.t t/op/lfs.t + Branch: metaconfig + ! U/a_dvisory/quadtype.U U/typedefs/lseektype.U + Branch: metaconfig/U/perl + ! io64.U +____________________________________________________________________________ +[ 4558] By: jhi on 1999/11/13 11:36:19 + Log: Undo drift from mainline. + Branch: cfgperl + ! regcomp.c util.c utils/h2xs.PL +____________________________________________________________________________ +[ 4557] By: gsar on 1999/11/13 10:54:46 + Log: typo + Branch: perl + ! util.c +____________________________________________________________________________ +[ 4556] By: gsar on 1999/11/13 10:53:41 + Log: integrate cfgperl contents (op.[ch] needed manual resolve) + Branch: perl + +> epoc/Config.pm epoc/autosplit.pl epoc/createpkg.pl + +> epoc/epoc_stubs.c + !> (integrate 48 files) +____________________________________________________________________________ +[ 4555] By: jhi on 1999/11/13 10:05:54 + Log: Integrate with Sarathy. + Branch: cfgperl + !> dump.c ext/Devel/DProf/DProf.xs gv.c mg.c op.c perl.c pp.c + !> sv.c warnings.h warnings.pl win32/Makefile win32/perllib.c +____________________________________________________________________________ +[ 4554] By: jhi on 1999/11/13 10:03:07 + Log: s/_SIGN$/_sign/g; + Branch: metaconfig + ! U/typedefs/gidsign.U U/typedefs/pidsign.U U/typedefs/uidsign.U +____________________________________________________________________________ +[ 4553] By: gsar on 1999/11/13 02:17:53 + Log: cloned interpreters now actually run and pass all but 55/10386 + subtests; various subtle bugs, new and old, observed when running + cloned interpreters have been fixed + + still to do: + | * dup psig_ptr table + | * merge PADOP GVs support with "our" SVs (existing PADOPs are too + | simple-minded and grab one pad entry each, heavily bloating + | the pad by not avoiding dups) + | * overloaded constants are not really immutable--they need to + | be PADOPs + | * allocator for constants and OPs need to be spelled differently + | (shared vs interpreter-local allocations) + | * optree refcounting is still missing locking (macros are in place) + | * curstackinfo, {mark,scope,save,ret}stack need to be cloned so + | perl_clone() can be called from within runops*() + Branch: perl + ! dump.c ext/Devel/DProf/DProf.xs gv.c mg.c op.c perl.c pp.c + ! sv.c warnings.h warnings.pl win32/Makefile win32/perllib.c +____________________________________________________________________________ +[ 4552] By: jhi on 1999/11/11 23:17:43 + Log: Turn on largefileness always if available and + continue 64-bit fixes. + Branch: cfgperl + ! Configure config_h.SH handy.h hints/aix.sh hints/dec_osf.sh + ! hints/hpux.sh hints/irix_6.sh hints/solaris_2.sh perl.h pp.c + ! sv.c t/lib/syslfs.t t/op/lfs.t utf8.c +____________________________________________________________________________ +[ 4551] By: jhi on 1999/11/11 23:16:15 + Log: Split int64type from i_inttypes, rename quadcase into quadkind. + Branch: metaconfig + ! U/a_dvisory/quadtype.U + Branch: metaconfig/U/perl + + d_int64t.U + ! i_inttypes.U io64.U +____________________________________________________________________________ +[ 4550] By: jhi on 1999/11/11 20:24:55 + Log: Fix a thinko in 4548. + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 4549] By: jhi on 1999/11/11 19:48:21 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 56 files) +____________________________________________________________________________ +[ 4548] By: jhi on 1999/11/11 19:41:56 + Log: Try to do something if st_size, st_uid, st_gid are too big for an IV; + regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH pp_sys.c +____________________________________________________________________________ +[ 4547] By: jhi on 1999/11/11 19:40:38 + Log: s/_SIZE$/_size/g; add sizesize and ssizesize. + Branch: metaconfig + + U/typedefs/sizesize.U U/typedefs/ssizesize.U + ! U/typedefs/gidsize.U U/typedefs/pidsize.U U/typedefs/uidsize.U +____________________________________________________________________________ +[ 4546] By: gsar on 1999/11/11 10:32:54 + Log: avoid stash pointers in optree under USE_ITHREADS + Branch: perl + ! bytecode.pl cop.h ext/B/B.xs ext/B/B/Asmdata.pm + ! ext/B/B/Bytecode.pm ext/B/B/C.pm ext/B/B/Debug.pm + ! ext/B/B/Deparse.pm ext/ByteLoader/bytecode.h + ! ext/ByteLoader/byterun.c ext/ByteLoader/byterun.h + ! ext/Opcode/Opcode.xs gv.c op.c perl.c pp.c pp_ctl.c pp_hot.c + ! scope.h sv.c +____________________________________________________________________________ +[ 4545] By: gsar on 1999/11/11 06:04:20 + Log: another change towards a shareable optree: avoid pointer to filegv + in COP; revert parts of change#4485 and s/xcv_filegv/xcv_file/ + (CvFILE() may yet come in handy somewhere); adjust compiler doodads + to suit + Branch: perl + ! bytecode.pl cop.h cv.h dump.c ext/B/B.pm ext/B/B.xs + ! ext/B/B/Asmdata.pm ext/B/B/Bytecode.pm ext/B/B/C.pm + ! ext/B/B/CC.pm ext/B/B/Debug.pm ext/B/B/Deparse.pm + ! ext/B/B/Lint.pm ext/B/B/Xref.pm ext/ByteLoader/bytecode.h + ! ext/ByteLoader/byterun.c ext/ByteLoader/byterun.h + ! ext/Devel/Peek/Peek.pm gv.c gv.h op.c perl.c pp.c pp_ctl.c + ! pp_sys.c scope.c scope.h sv.c sv.h toke.c util.c util.h + ! win32/perllib.c +____________________________________________________________________________ +[ 4544] By: gsar on 1999/11/10 18:19:12 + Log: more cleanups for change#4539 + Branch: perl + ! gv.h op.c op.h pp_ctl.c pp_hot.c +____________________________________________________________________________ +[ 4543] By: gsar on 1999/11/10 01:52:22 + Log: remove dead branch/infinite looper in change#3612 + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4542] By: gsar on 1999/11/09 20:05:47 + Log: IoDIRP may be fake when used in source filters, mark as such + Branch: perl + ! sv.c sv.h toke.c +____________________________________________________________________________ +[ 4541] By: gsar on 1999/11/09 05:47:53 + Log: small nits in changes#4538,4539 + Branch: perl + ! op.c sv.c +____________________________________________________________________________ +[ 4540] By: gsar on 1999/11/08 20:30:58 + Log: win32 symbol export tweak + Branch: perl + ! makedef.pl win32/win32.c win32/win32iop.h +____________________________________________________________________________ +[ 4539] By: gsar on 1999/11/08 18:50:40 + Log: preliminary support for GVOP indirection via pad + Branch: perl + ! doio.c dump.c embed.h embed.pl global.sym objXSUB.h op.c op.h + ! opcode.pl perlapi.c pp_hot.c pp_sys.c proto.h run.c +____________________________________________________________________________ +[ 4538] By: gsar on 1999/11/08 11:25:49 + Log: preliminary support for perl_clone() (still needs work in + the following areas: SVOPs must indirect via pad; context + stack, scope stack, and runlevels must be cloned; must + hook up the virtualized pseudo-process support provided by + "host"; ...) + Branch: perl + ! av.h embed.h embed.pl embedvar.h global.sym hv.c hv.h + ! intrpvar.h makedef.pl objXSUB.h perl.h perlapi.c proto.h sv.c + ! win32/perllib.c win32/win32.c +____________________________________________________________________________ +[ 4537] By: gsar on 1999/11/08 11:19:18 + Log: more thorough cleanup in perl_destroy() + Branch: perl + ! perl.c util.c +____________________________________________________________________________ +[ 4536] By: gsar on 1999/11/08 07:16:10 + Log: win32 internal data must be interpreter-local + Branch: perl + ! win32/win32.c win32/win32.h win32/win32sck.c +____________________________________________________________________________ +[ 4535] By: gsar on 1999/11/08 04:17:28 + Log: tweak change#4502 + Branch: perl + ! doio.c perl.c +____________________________________________________________________________ +[ 4534] By: jhi on 1999/11/07 13:17:03 + Log: Four special class subs, not three. + Branch: cfgperl + ! pod/perlmod.pod +____________________________________________________________________________ +[ 4533] By: jhi on 1999/11/07 13:13:15 + Log: Integrate with Sarathy. + Branch: cfgperl + !> mg.c t/io/print.t +____________________________________________________________________________ +[ 4532] By: jhi on 1999/11/07 12:36:10 + Log: More test program maintenance. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/a_dvisory/intsize.U U/compline/alignbytes.U + ! U/compline/charsize.U U/compline/d_sigaction.U + ! U/compline/doublesize.U U/compline/floatsize.U + ! U/compline/nblock_io.U U/compline/ptrsize.U + ! U/modified/Signal.U U/typedefs/gidsize.U U/typedefs/pidsize.U + ! U/typedefs/uidsize.U + Branch: metaconfig/U/perl + ! fpossize.U +____________________________________________________________________________ +[ 4531] By: jhi on 1999/11/07 00:34:09 + Log: Tidy up the metaconfig test programs. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/a_dvisory/intsize.U U/compline/alignbytes.U + ! U/compline/charsize.U U/compline/doublesize.U + ! U/compline/nblock_io.U U/compline/ptrsize.U + ! U/modified/d_longlong.U U/typedefs/gidsize.U + ! U/typedefs/lseektype.U U/typedefs/pidsize.U + ! U/typedefs/uidsize.U + Branch: metaconfig/U/perl + ! fpossize.U +____________________________________________________________________________ +[ 4530] By: jhi on 1999/11/06 23:51:34 + Log: So many printfs, so little time. + Branch: cfgperl + ! op.c perl.c regcomp.c scope.c util.c +____________________________________________________________________________ +[ 4529] By: jhi on 1999/11/06 23:27:35 + Log: Replace the explicit zeros with NOOPs. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4528] By: jhi on 1999/11/06 23:10:54 + Log: From: jand@activestate.com (Jan Dubois) + To: perl5-porters@perl.org + Cc: Mike Blazer , + Mark Borgerding + Subject: [5.005_62 PATCH] binmode and locale support for -T and -B filetest operators + Date: Sat, 06 Nov 1999 22:16:43 +0100 + Message-ID: <38279207.46448719@smtprelay.t-online.de> + Branch: cfgperl + ! op.c op.h +____________________________________________________________________________ +[ 4527] By: jhi on 1999/11/06 20:22:14 + Log: ...and fewer. + Branch: cfgperl + ! dump.c +____________________________________________________________________________ +[ 4526] By: jhi on 1999/11/06 20:19:04 + Log: ...and they are getting fewer. + Branch: cfgperl + ! dump.c op.c util.c +____________________________________________________________________________ +[ 4525] By: jhi on 1999/11/06 19:59:59 + Log: More printf miscasts flushed out. + Branch: cfgperl + ! dump.c ext/B/B.xs ext/Data/Dumper/Dumper.xs regcomp.c + ! regexec.c +____________________________________________________________________________ +[ 4524] By: jhi on 1999/11/06 15:39:05 + Log: Crushing the remaining %ld guerillas. + Branch: cfgperl + ! ext/Devel/DProf/DProf.xs +____________________________________________________________________________ +[ 4523] By: jhi on 1999/11/06 15:11:38 + Log: Update CPAN sites list. + Branch: cfgperl + ! pod/perlmodlib.pod +____________________________________________________________________________ +[ 4522] By: jhi on 1999/11/05 19:50:46 + Log: The -n32 is normally part of $cc, not $ccflags. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 4521] By: gsar on 1999/11/05 04:35:30 + Log: allow $\ to work right when set to a string with embedded nulls + Branch: perl + ! mg.c t/io/print.t +____________________________________________________________________________ +[ 4520] By: jhi on 1999/11/04 23:30:09 + Log: Integrate with Sarathy. + Branch: cfgperl + !> embedvar.h ext/B/B/Bytecode.pm ext/B/B/Lint.pm + !> ext/B/B/Stash.pm ext/B/NOTES ext/B/O.pm ext/File/Glob/Glob.pm + !> ext/File/Glob/bsd_glob.c ext/File/Glob/bsd_glob.h intrpvar.h + !> keywords.h keywords.pl objXSUB.h op.c perl.c pod/perldelta.pod + !> pod/perldiag.pod pod/perlfunc.pod pod/perlmod.pod + !> pod/perlrun.pod pod/perlsub.pod pod/perltodo.pod toke.c +____________________________________________________________________________ +[ 4519] By: jhi on 1999/11/04 23:09:25 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_62] ref to non-lvalue method + Date: Wed, 3 Nov 1999 03:52:48 -0500 (EST) + Message-Id: <199911030852.DAA06563@monk.mps.ohio-state.edu> + Branch: cfgperl + ! op.c +____________________________________________________________________________ +[ 4518] By: jhi on 1999/11/04 23:07:27 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_62] xsubpp dependency + Date: Wed, 3 Nov 1999 02:57:23 -0500 (EST) + Message-Id: <199911030757.CAA06325@monk.mps.ohio-state.edu> + Branch: cfgperl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 4517] By: jhi on 1999/11/04 23:05:59 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_62] regexp.h + Date: Wed, 3 Nov 1999 02:55:21 -0500 (EST) + Message-Id: <199911030755.CAA06311@monk.mps.ohio-state.edu> + Branch: cfgperl + ! regexp.h +____________________________________________________________________________ +[ 4516] By: gsar on 1999/11/04 18:25:45 + Log: change#4485 didn't do the right thing for B::Bytecode + Branch: perl + ! ext/B/B/Bytecode.pm +____________________________________________________________________________ +[ 4515] By: gsar on 1999/11/04 17:28:29 + Log: implement STOP blocks and fix compiler to use them (minimally + tested) + Branch: perl + ! embedvar.h ext/B/B/Lint.pm ext/B/B/Stash.pm ext/B/NOTES + ! ext/B/O.pm intrpvar.h keywords.h keywords.pl objXSUB.h op.c + ! perl.c pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod + ! pod/perlmod.pod pod/perlrun.pod pod/perlsub.pod + ! pod/perltodo.pod toke.c +____________________________________________________________________________ +[ 4514] By: gsar on 1999/11/04 15:59:46 + Log: display BSD license in Glob.pm (for clause #2 conformity) + Branch: perl + ! ext/File/Glob/Glob.pm ext/File/Glob/bsd_glob.c + ! ext/File/Glob/bsd_glob.h +____________________________________________________________________________ +[ 4513] By: jhi on 1999/11/04 08:26:19 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/io/nargv.t + !> (integrate 34 files) +____________________________________________________________________________ +[ 4512] By: jhi on 1999/11/04 08:01:25 + Log: Incremental Mac integration from Matthias. + Branch: cfgperl + ! perl.c perl.h pp_ctl.c pp_hot.c run.c sv.c t/pod/testpchk.pl + ! toke.c util.c +____________________________________________________________________________ +[ 4511] By: gsar on 1999/11/04 02:53:37 + Log: remove VIRTUAL tag, PERL_OBJECT doesn't need it anymore + Branch: perl + ! dosish.h embed.pl mg.c os2/os2ish.h perl.c perl.h perly.c + ! perly_c.diff pp_ctl.c proto.h regcomp.c regexec.c sv.c toke.c + ! universal.c vms/perly_c.vms vms/vmsish.h win32/win32.h + ! xsutils.c +____________________________________________________________________________ +[ 4510] By: jhi on 1999/11/02 22:12:29 + Log: S_init_interp is a better place to diddle with PL_opargs + than perl_construct. + Branch: cfgperl + ! perl.c +____________________________________________________________________________ +[ 4509] By: jhi on 1999/11/02 21:30:02 + Log: From: "M.J.T. Guy" + To: ben@mucus.advanced.org, perl5-porters@perl.org + Subject: Re: [ID 19991102.002] unpack('N', pack('N', -1)) not idempotent + Date: Tue, 02 Nov 1999 21:36:00 +0000 + Message-Id: + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4508] By: jhi on 1999/11/02 20:46:27 + Log: Initial integration of the MacPerl changes form Matthias. + Branch: cfgperl + ! doio.c ext/DynaLoader/DynaLoader_pm.PL ext/Fcntl/Fcntl.pm + ! ext/Fcntl/Fcntl.xs gv.c mg.c opcode.pl perl.c perl.h pp_ctl.c + ! pp_hot.c pp_sys.c run.c sv.c toke.c util.c +____________________________________________________________________________ +[ 4507] By: jhi on 1999/11/01 23:05:07 + Log: From: Ilya Zakharevich + To: lvirden@cas.org (Larry W. Virden) + Cc: perl5-porters@perl.org, lvirden@cas.org + Subject: Re: [ID 19991026.001] perl segmentation fault report + Date: Mon, 1 Nov 1999 18:14:16 -0500 (EST) + Message-Id: <199911012314.SAA22664@monk.mps.ohio-state.edu> + Branch: cfgperl + ! regexec.c t/op/pat.t +____________________________________________________________________________ +[ 4506] By: jhi on 1999/11/01 19:56:28 + Log: From: Olaf Flebbe + To: perl5-porters@perl.org + Subject: [PATCH: 5.005_62] Patch for EPOC Support + Date: Mon, 1 Nov 1999 20:46:54 +0100 (MET) + Message-ID: + Branch: cfgperl + + epoc/Config.pm epoc/autosplit.pl epoc/createpkg.pl + + epoc/epoc_stubs.c + ! MANIFEST README.epoc epoc/epocish.h epoc/perl.mmp + ! epoc/perl.pkg +____________________________________________________________________________ +[ 4505] By: gsar on 1999/11/01 17:09:44 + Log: macros for COP.cop_filegv access + Branch: perl + ! cop.h deb.c gv.c op.c perl.c pp_ctl.c pp_sys.c scope.c toke.c + ! util.c +____________________________________________________________________________ +[ 4504] By: gsar on 1999/11/01 17:08:28 + Log: enable better Win32::DomainName() by demand loading netapi32.dll + (from Jan Dubois) + Branch: perl + ! pod/Win32.pod win32/win32.c +____________________________________________________________________________ +[ 4503] By: gsar on 1999/10/31 20:56:06 + Log: change#4502 was missing a file + Branch: perl + + t/io/nargv.t +____________________________________________________________________________ +[ 4502] By: gsar on 1999/10/31 20:46:02 + Log: make nested ARGV/$^I loops work correctly; fixes several bugs + in the way ARGV state was handled in readline(); writing a + subroutine to do inplace edits is now possible, provided *ARGV, + *ARGVOUT, $^I and $_ are localized where needed + Branch: perl + ! MANIFEST doio.c embedvar.h intrpvar.h objXSUB.h perl.c + ! pp_hot.c scope.c +____________________________________________________________________________ +[ 4501] By: jhi on 1999/10/31 12:43:54 + Log: Integrate with Sarathy. + Branch: cfgperl + !> perl.h win32/config.bc win32/config.gc win32/config.vc + !> win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 4500] By: gsar on 1999/10/31 10:01:17 + Log: updated windows config* files + Branch: perl + ! win32/config.bc win32/config.gc win32/config.vc + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 4499] By: gsar on 1999/10/31 09:15:17 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH perl.h +____________________________________________________________________________ +[ 4498] By: gsar on 1999/10/31 09:13:41 + Log: remove unused struct Outrec + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 4497] By: jhi on 1999/10/30 12:41:50 + Log: Add HAS_QUAD ($Config{d_quad}); use it. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.h + Branch: metaconfig + ! U/a_dvisory/quadtype.U U/compline/charsize.U U/typedefs/gidf.U + ! U/typedefs/uidf.U + Branch: metaconfig/U/perl + ! perlxv.U +____________________________________________________________________________ +[ 4496] By: gsar on 1999/10/30 00:28:32 + Log: integrate cfgperl contents into mainline + Branch: perl + !> Configure Policy_sh.SH Porting/Glossary Porting/config.sh + !> Porting/config_H README.hurd config_h.SH doop.c handy.h + !> hints/aix.sh hints/irix_6.sh hints/solaris_2.sh mg.c perl.c + !> perl.h pp.c pp.h regexec.c sv.c taint.c +____________________________________________________________________________ +[ 4495] By: jhi on 1999/10/29 23:36:19 + Log: Continue what #4494 started; introduce uid and gid formats. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH handy.h perl.h + Branch: metaconfig + + U/a_dvisory/quadtype.U U/typedefs/gidf.U U/typedefs/uidf.U + - U/typedefs/quadtype.U + Branch: metaconfig/U/perl + ! perlxv.U +____________________________________________________________________________ +[ 4494] By: jhi on 1999/10/29 22:09:01 + Log: Move the IV, UV, I8, U8, ..., and NV to metaconfig + from perl.h and handy.h. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH handy.h perl.h + Branch: metaconfig/U/perl + + perlxv.U perlxvf.U +____________________________________________________________________________ +[ 4493] By: jhi on 1999/10/29 22:08:06 + Log: Finetuning the output continues along the lines of #4490 and #4491. + Branch: metaconfig + ! U/modified/i_sysuio.U U/threads/d_pthreadj.U + ! U/typedefs/fpostype.U + Branch: metaconfig/U/perl + + fpossize.U + ! d_cmsghdr_s.U d_fs_data_s.U d_msghdr_s.U d_statfs3.U + ! d_statfs4.U d_statfs_f_flags.U d_statfs_s.U io64.U +____________________________________________________________________________ +[ 4492] By: jhi on 1999/10/29 21:14:53 + Log: Hurd update from Mark Kettenis. + Branch: cfgperl + ! README.hurd +____________________________________________________________________________ +[ 4491] By: jhi on 1999/10/29 20:37:02 + Log: A new try at what #4490 tried to accomplish. + Branch: metaconfig + ! U/modified/i_sysuio.U U/threads/d_pthreadj.U + Branch: metaconfig/U/perl + ! d_cmsghdr_s.U d_fs_data_s.U d_msghdr_s.U d_statfs3.U + ! d_statfs4.U d_statfs_f_flags.U d_statfs_s.U io64.U +____________________________________________________________________________ +[ 4490] By: jhi on 1999/10/29 20:19:41 + Log: metaconfig nits. + Branch: metaconfig + ! U/modified/i_sysuio.U U/threads/d_pthreadj.U + Branch: metaconfig/U/perl + + d_iovec_s.U + ! d_cmsghdr_s.U d_fs_data_s.U d_msghdr_s.U d_statfs3.U + ! d_statfs4.U d_statfs_f_flags.U d_statfs_s.U io64.U +____________________________________________________________________________ +[ 4489] By: jhi on 1999/10/29 16:08:43 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 31 files) +____________________________________________________________________________ +[ 4488] By: jhi on 1999/10/29 15:30:30 + Log: Regen Configure and Glossary. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 4487] By: jhi on 1999/10/29 15:24:13 + Log: Remove quad logic from perl.h; regen Configure; + add -DUSE_LONG_LONG to ccflags if not already there. + Branch: cfgperl + ! Configure config_h.SH doop.c hints/aix.sh hints/irix_6.sh + ! hints/solaris_2.sh perl.h pp.c pp.h regexec.c sv.c +____________________________________________________________________________ +[ 4486] By: jhi on 1999/10/29 15:22:38 + Log: metaconfig: moved quad logic from perl.h to Configure (quadtype.U); + fixed the use*.U to define their stuff only iff not already defined + (so that ccflags can have any -DUSE_* it wants); + uselonglong.U added; various small nits fixed. + Branch: metaconfig + + U/typedefs/quadtype.U + ! U/modified/d_longdbl.U U/modified/d_longlong.U + ! U/modified/d_statblks.U U/modified/usenm.U + ! U/threads/usethreads.U + Branch: metaconfig/U/perl + + uselonglong.U + ! d_cmsghdr_s.U d_fs_data_s.U d_msghdr_s.U d_statfs3.U + ! d_statfs4.U d_statfs_f_flags.U d_statfs_s.U i_inttypes.U + ! quadfio.U use64bits.U uselfs.U uselongdbl.U usemorebits.U + ! usemultiplicity.U useperlio.U usesocks.U +____________________________________________________________________________ +[ 4485] By: gsar on 1999/10/29 06:08:50 + Log: more cleanup: avoid unused knowledge of "file GV" notion in CV and GV + Branch: perl + ! bytecode.pl cv.h dump.c ext/B/B.pm ext/B/B.xs + ! ext/B/B/Asmdata.pm ext/B/B/Bytecode.pm ext/B/B/C.pm + ! ext/B/B/Debug.pm ext/B/B/Xref.pm ext/ByteLoader/byterun.c + ! ext/ByteLoader/byterun.h ext/Devel/Peek/Peek.pm gv.c gv.h op.c + ! sv.h +____________________________________________________________________________ +[ 4484] By: gsar on 1999/10/29 03:00:21 + Log: usurp GVOP slot for new PADOP (one small step to making optree + shareable across interpreters) + Branch: perl + ! bytecode.pl doio.c dump.c ext/B/B.pm ext/B/B.xs + ! ext/B/B/Asmdata.pm ext/B/B/Bytecode.pm ext/B/B/C.pm + ! ext/B/B/Debug.pm ext/B/B/Deparse.pm ext/B/B/Lint.pm + ! ext/B/B/Terse.pm ext/B/typemap ext/ByteLoader/byterun.c + ! ext/ByteLoader/byterun.h op.c op.h opcode.h opcode.pl perl.h + ! pp_hot.c pp_sys.c regexec.c run.c +____________________________________________________________________________ +[ 4483] By: jhi on 1999/10/28 22:01:12 + Log: Regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 4482] By: jhi on 1999/10/28 21:45:26 + Log: Installdirs patches from Andy. + Branch: metaconfig + ! U/installdirs/sitearch.U U/installdirs/sitebin.U + ! U/installdirs/sitehtml1dir.U U/installdirs/sitehtml3dir.U + ! U/installdirs/sitelib.U U/installdirs/siteman1dir.U + ! U/installdirs/siteman3dir.U U/installdirs/siteprefix.U + ! U/installdirs/sitescriptdir.U U/installdirs/vendorarch.U + ! U/installdirs/vendorbin.U U/installdirs/vendorhtml1dir.U + ! U/installdirs/vendorhtml3dir.U U/installdirs/vendorlib.U + ! U/installdirs/vendorman1dir.U U/installdirs/vendorman3dir.U + ! U/installdirs/vendorprefix.U U/installdirs/vendorscriptdir.U +____________________________________________________________________________ +[ 4481] By: gsar on 1999/10/28 17:33:49 + Log: remove C misfeature (global + can still be directly set) + Branch: perl + ! lib/Time/Local.pm +____________________________________________________________________________ +[ 4480] By: jhi on 1999/10/28 13:49:26 + Log: Fix printing of uids and gids; regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH mg.c perl.c perl.h taint.c +____________________________________________________________________________ +[ 4479] By: jhi on 1999/10/28 11:53:57 + Log: Fix typo. + Branch: metaconfig + ! U/typedefs/gidsize.U +____________________________________________________________________________ +[ 4478] By: jhi on 1999/10/28 06:50:02 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes iperlsys.h makedef.pl patchlevel.h perl.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/config_sh.PL win32/makefile.mk win32/win32.h +____________________________________________________________________________ +[ 4477] By: jhi on 1999/10/28 06:40:54 + Log: (Slightly) better comments for Policy_sh.SH from Andy. + Branch: cfgperl + ! Policy_sh.SH +____________________________________________________________________________ +[ 4476] By: gsar on 1999/10/27 23:54:36 + Log: regen config* stuff for windows + 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/config_sh.PL + ! win32/makefile.mk +____________________________________________________________________________ +[ 4475] By: gsar on 1999/10/27 21:32:30 + Log: integrate cfgperl contents into mainline; merge conflicts + Branch: perl + !> (integrate 46 files) +____________________________________________________________________________ +[ 4474] By: gsar on 1999/10/27 21:15:07 + Log: patch up egcs-1.1.2-mingw32 build (builds a working miniperl, but not + perl; stdout/stderr redirects seem broken as well) + Branch: perl + ! iperlsys.h makedef.pl perl.h win32/makefile.mk win32/win32.h +____________________________________________________________________________ +[ 4473] By: jhi on 1999/10/27 21:11:11 + Log: Do not block if no message queues available. + Branch: cfgperl + ! t/lib/ipc_sysv.t +____________________________________________________________________________ +[ 4472] By: jhi on 1999/10/27 18:27:40 + Log: Remove unused "squatter" symbols; regen Configure. + Branch: cfgperl + ! Configure Makefile.SH Porting/Glossary Porting/config.sh + ! Porting/config_H config_h.SH epoc/config.h iperlsys.h perl.h + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 4471] By: jhi on 1999/10/27 18:26:55 + Log: metaconfig; split socket; fix output. + Branch: metaconfig + ! U/modified/d_socket.U U/modified/d_statblks.U + Branch: metaconfig/U/perl + + d_cmsghdr_s.U d_msghdr_s.U d_recvmsg.U d_sendmsg.U + ! i_sysstatfs.U i_sysvfs.U +____________________________________________________________________________ +[ 4470] By: jhi on 1999/10/27 17:19:06 + Log: Regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.c perl.h +____________________________________________________________________________ +[ 4469] By: jhi on 1999/10/27 17:18:41 + Log: metaconfig; split statfs. + Branch: metaconfig/U/perl + + d_fs_data_s.U d_statfs_f_flags.U d_statfs_s.U + ! d_statfs.U +____________________________________________________________________________ +[ 4468] By: jhi on 1999/10/27 14:06:44 + Log: Integrate with Sarathy; manual resolve on regcomp.c conflicts + (Ilya's changes won). + Branch: cfgperl + +> os2/OS2/REXX/DLL/Changes os2/OS2/REXX/DLL/DLL.pm + +> os2/OS2/REXX/DLL/DLL.xs os2/OS2/REXX/DLL/MANIFEST + +> os2/OS2/REXX/DLL/Makefile.PL os2/OS2/REXX/t/rx_emxrv.t + !> (integrate 65 files) +____________________________________________________________________________ +[ 4467] By: jhi on 1999/10/27 13:38:41 + Log: Regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 4466] By: jhi on 1999/10/27 13:18:06 + Log: metaconfig fixes from Andy. + Branch: metaconfig + + U/modified/libnlist.U U/modified/usrinc.U + ! U/Glossary.patch U/mkglossary U/modified/libpth.U +____________________________________________________________________________ +[ 4465] By: jhi on 1999/10/27 13:06:27 + Log: Nosuid checking for statfs() people. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.c perl.h pod/perldiag.pod +____________________________________________________________________________ +[ 4464] By: jhi on 1999/10/27 13:04:20 + Log: metaconfig maintenance; fix Hasfield, statfs; + add Hasstruct, statfs3, statfs4, ustat, sysvfs; + split fstatfs away from statfs. + Branch: metaconfig + + U/protos/Hasstruct.U + ! U/protos/Hasfield.U + Branch: metaconfig/U/perl + + d_fstatfs.U d_statfs3.U d_statfs4.U d_ustat.U i_sysvfs.U + + i_ustat.U + ! d_statfs.U +____________________________________________________________________________ +[ 4463] By: jhi on 1999/10/27 07:55:53 + Log: We need cc to be able to test for cc -v. + Branch: cfgperl + ! hints/dec_osf.sh +____________________________________________________________________________ +[ 4462] By: gsar on 1999/10/27 01:31:41 + Log: more GCC v2.95 induced adjustments + Branch: perl + ! globals.c mg.c opcode.h opcode.pl perl.h sv.c + ! win32/makefile.mk win32/win32.c x2p/walk.c +____________________________________________________________________________ +[ 4461] By: gsar on 1999/10/26 21:42:59 + Log: warnings and const violations identified by compiling in C++ mode + with GCC v2.95 + Branch: perl + ! doio.c embed.pl mg.c op.c perl.c perlapi.c proto.h regcomp.c + ! sv.c taint.c toke.c win32/win32.c +____________________________________________________________________________ +[ 4459] By: jhi on 1999/10/26 10:15:58 + Log: Regen Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 4458] By: jhi on 1999/10/26 09:48:37 + Log: Minor rewordings. + Branch: metaconfig/U/perl + ! d_getmnt.U d_getmntent.U d_statfs.U d_statvfs.U +____________________________________________________________________________ +[ 4456] By: jhi on 1999/10/26 09:11:49 + Log: Fix d_statfsflags; add d_getmnt. + Branch: metaconfig/U/perl + + d_getmnt.U + ! d_statfs.U +____________________________________________________________________________ +[ 4455] By: jhi on 1999/10/26 08:12:27 + Log: Massive multitypo in #4446. + Branch: cfgperl + ! hints/dec_osf.sh +____________________________________________________________________________ +[ 4454] By: jhi on 1999/10/25 08:28:45 + Log: From: Laszlo Molnar + To: Perl 5 Porters + Subject: [PATCH 5.005_62] dos-djgpp update + Date: Mon, 25 Oct 1999 10:11:30 +0200 + Message-ID: <19991025101130.K459@crater.eth.ericsson.se> + Branch: cfgperl + ! djgpp/config.over djgpp/configure.bat djgpp/djgppsed.sh + ! pod/perldelta.pod t/lib/io_unix.t +____________________________________________________________________________ +[ 4453] By: jhi on 1999/10/25 08:25:50 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_62] Remove the last regnode<==>char* + Date: Mon, 25 Oct 1999 03:06:21 -0400 (EDT) + Message-Id: <199910250706.DAA16825@monk.mps.ohio-state.edu> + Branch: cfgperl + ! embed.h embed.pl proto.h regcomp.c regcomp.h regexec.c +____________________________________________________________________________ +[ 4452] By: jhi on 1999/10/25 08:16:55 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_62] Missing REx engine patch + Date: Sun, 24 Oct 1999 23:47:45 -0400 (EDT) + Message-Id: <199910250347.XAA16094@monk.mps.ohio-state.edu> + Branch: cfgperl + ! pod/perldiag.pod regcomp.c regexec.c +____________________________________________________________________________ +[ 4451] By: jhi on 1999/10/25 08:13:06 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_62] charnames and UTEST + Date: Sun, 24 Oct 1999 23:39:49 -0400 (EDT) + Message-Id: <199910250339.XAA16058@monk.mps.ohio-state.edu> + Branch: cfgperl + ! t/lib/charnames.t +____________________________________________________________________________ +[ 4450] By: gsar on 1999/10/25 07:38:15 + Log: win32 tweak + Branch: perl + ! win32/perllib.c +____________________________________________________________________________ +[ 4449] By: gsar on 1999/10/24 23:20:10 + Log: remove inconsistent tainting behavior of sprintf("%e",...) + (all bets are off is "C" locale is compromised) + Branch: perl + ! pod/perlfunc.pod pod/perllocale.pod sv.c +____________________________________________________________________________ +[ 4448] By: gsar on 1999/10/24 22:20:42 + Log: remove unused interpreter globals + Branch: perl + ! deb.c dump.c embed.h embed.pl embedvar.h ext/POSIX/POSIX.xs + ! global.sym gv.c gv.h intrpvar.h objXSUB.h perl.c perlapi.c + ! proto.h toke.c +____________________________________________________________________________ +[ 4447] By: jhi on 1999/10/24 21:49:52 + Log: Another hints tweak. + Branch: cfgperl + ! hints/aix.sh +____________________________________________________________________________ +[ 4446] By: jhi on 1999/10/24 21:48:02 + Log: Hints tweak. + Branch: cfgperl + ! hints/dec_osf.sh +____________________________________________________________________________ +[ 4445] By: nick on 1999/10/24 21:03:28 + Log: Integrate own changes to mainline. + Branch: utfperl + !> installperl pp.c +____________________________________________________________________________ +[ 4444] By: nick on 1999/10/24 20:54:06 + Log: Avoid creating GV with NULL name when vivifying nameless scalars. + (Fix/workround for [ID19991024.001]) + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 4443] By: nick on 1999/10/24 15:09:51 + Log: Follow that camel ... another sync. + Branch: utfperl + +> os2/OS2/REXX/DLL/Changes os2/OS2/REXX/DLL/DLL.pm + +> os2/OS2/REXX/DLL/DLL.xs os2/OS2/REXX/DLL/MANIFEST + +> os2/OS2/REXX/DLL/Makefile.PL os2/OS2/REXX/t/rx_emxrv.t + !> (integrate 36 files) +____________________________________________________________________________ +[ 4442] By: gsar on 1999/10/24 14:40:01 + Log: typo in installperl (from Paul Moore ) + Branch: perl + ! installperl +____________________________________________________________________________ +[ 4441] By: gsar on 1999/10/24 14:33:11 + Log: test in change#4428 needs strict interpretation of C modulus + Branch: perl + ! t/op/int.t +____________________________________________________________________________ +[ 4440] By: gsar on 1999/10/24 13:47:17 + Log: don't allow SIGCHLD to be ignored at startup, or wait*() and + $? break + Branch: perl + ! perl.c pod/perldelta.pod pod/perldiag.pod +____________________________________________________________________________ +[ 4439] By: jhi on 1999/10/24 13:19:17 + Log: test for #2835 (yeah, better later than never) + Branch: cfgperl + ! t/op/array.t +____________________________________________________________________________ +[ 4438] By: gsar on 1999/10/24 12:59:12 + Log: typo, doc tweak + Branch: perl + ! lib/attributes.pm pod/perlop.pod +____________________________________________________________________________ +[ 4437] By: gsar on 1999/10/24 11:59:55 + Log: allow get() and reftype() functions to be imported (from + Spider Boardman) + Branch: perl + ! lib/attributes.pm +____________________________________________________________________________ +[ 4436] By: gsar on 1999/10/24 11:52:53 + Log: suppress scalar leak messages for known leaks (from + Robin Barker ) + Branch: perl + ! Changes t/op/lex_assign.t t/pragma/warn/op +____________________________________________________________________________ +[ 4435] By: gsar on 1999/10/24 11:39:42 + Log: VMS tweak (suggested by Craig A. Berry ) + Branch: perl + ! ext/B/defsubs_h.PL +____________________________________________________________________________ +[ 4434] By: gsar on 1999/10/24 11:36:08 + Log: relax range checking if they ask for it (from John L. Allen + ) + Branch: perl + ! lib/Time/Local.pm +____________________________________________________________________________ +[ 4433] By: gsar on 1999/10/24 11:25:51 + Log: README nits pointed out by Chris Nandor + Branch: perl + ! README lib/File/Path.pm +____________________________________________________________________________ +[ 4432] By: gsar on 1999/10/24 11:11:02 + Log: From: Ilya Zakharevich + Date: Sun, 24 Oct 1999 03:24:28 -0400 (EDT) + Message-Id: <199910240724.DAA12230@monk.mps.ohio-state.edu> + Subject: Re: [PATCH 5.005_62] OS/2 improvements + Branch: perl + + os2/OS2/REXX/DLL/Changes os2/OS2/REXX/DLL/DLL.pm + + os2/OS2/REXX/DLL/DLL.xs os2/OS2/REXX/DLL/MANIFEST + + os2/OS2/REXX/DLL/Makefile.PL os2/OS2/REXX/t/rx_emxrv.t + ! MANIFEST hints/os2.sh mg.c miniperlmain.c os2/Changes + ! os2/OS2/REXX/Changes os2/OS2/REXX/Makefile.PL + ! os2/OS2/REXX/REXX.pm os2/OS2/REXX/REXX.xs + ! os2/OS2/REXX/t/rx_dllld.t os2/OS2/REXX/t/rx_objcall.t + ! os2/OS2/REXX/t/rx_tievar.t os2/OS2/REXX/t/rx_tieydb.t + ! os2/OS2/REXX/t/rx_vrexx.t os2/dl_os2.c os2/os2.c os2/os2ish.h + ! perl.c perl.h t/io/fs.t t/op/magic.t +____________________________________________________________________________ +[ 4431] By: gsar on 1999/10/24 10:50:14 + Log: install all README.foo with pod content as podfoo.pod + Branch: perl + ! Makefile.SH installman +____________________________________________________________________________ +[ 4430] By: gsar on 1999/10/24 09:28:24 + Log: @INC needs ../lib + Branch: perl + ! t/op/int.t +____________________________________________________________________________ +[ 4429] By: jhi on 1999/10/23 21:47:49 + Log: More printf-fixes (see also #4426). + Branch: cfgperl + ! deb.c dump.c ext/Data/Dumper/Dumper.xs + ! ext/Devel/DProf/DProf.xs malloc.c mg.c op.c perl.c pp.c + ! pp_ctl.c regcomp.c regexec.c run.c scope.c sv.c util.c +____________________________________________________________________________ +[ 4428] By: gsar on 1999/10/23 20:28:56 + Log: fix accidental C modulo semantics on integer-valued operations + (e.g. caused C to return 3 rather than -7) + Branch: perl + ! op.c t/op/int.t +____________________________________________________________________________ +[ 4427] By: jhi on 1999/10/23 16:10:10 + Log: Integrate with Sarathy. + Branch: cfgperl + !> sv.c win32/win32.c +____________________________________________________________________________ +[ 4426] By: jhi on 1999/10/23 16:04:02 + Log: Fix the printfing nits pointed out by using gcc -Wall and + Configure -Duse64bits -Dccflags=-DDEBUGGING in Solaris, + plus few other warnings in Dumper.xs. + Branch: cfgperl + ! ext/Data/Dumper/Dumper.xs ext/Devel/DProf/DProf.xs + ! ext/Devel/Peek/Peek.xs regcomp.c regexec.c sv.c util.c +____________________________________________________________________________ +[ 4425] By: jhi on 1999/10/23 15:16:41 + Log: Configure regen to pick up the new installation directories + from Policy_sh.SH. The explanations of "public add-ons" and + "vendor-supplied" could do with more work. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 4424] By: nick on 1999/10/23 00:46:22 + Log: Resolve mainline before possible hacking operertunity this weekend + Branch: utfperl + +> pod/perlfilter.pod + !> (integrate 32 files) +____________________________________________________________________________ +[ 4423] By: jhi on 1999/10/22 22:53:17 + Log: Update Policy_sh.SH to handle the newer installation directives. + From: Andy Dougherty + To: Perl Porters + Subject: [PATCH 5.005_62] Policy_sh.SH update + Date: Fri, 22 Oct 1999 16:47:34 -0400 (EDT) + Message-ID: + Branch: cfgperl + ! Policy_sh.SH +____________________________________________________________________________ +[ 4422] By: jhi on 1999/10/22 22:44:44 + Log: so back to 'so', from Stephanie Beals + Branch: cfgperl + ! hints/aix.sh +____________________________________________________________________________ +[ 4421] By: gsar on 1999/10/22 21:16:44 + Log: sv_vcatpvfn() bug: fell through to assuming intsize of 'q' for + C<"%ld", long_val> + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 4420] By: gsar on 1999/10/22 16:36:46 + Log: win32_utime() on directories should use localtime() rather + than gmtime() (from Jan Dubois) + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4419] By: jhi on 1999/10/21 10:31:41 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Makefile.SH lib/CPAN/FirstTime.pm op.c opcode.h opcode.pl + !> t/lib/glob-basic.t t/op/sort.t +____________________________________________________________________________ +[ 4418] By: gsar on 1999/10/20 23:49:47 + Log: add test for change#4417 + Branch: perl + ! t/op/sort.t +____________________________________________________________________________ +[ 4417] By: gsar on 1999/10/20 23:45:03 + Log: avoid coredump on C + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4416] By: gsar on 1999/10/20 01:00:50 + Log: fix prototype mismatch (from Hans Mulder ) + Branch: perl + ! lib/CPAN/FirstTime.pm +____________________________________________________________________________ +[ 4415] By: gsar on 1999/10/20 00:52:34 + Log: disable optimizing troublesome ops in change#3612 + (from Ilya Zakharevich) + Branch: perl + ! Makefile.SH opcode.h opcode.pl +____________________________________________________________________________ +[ 4414] By: gsar on 1999/10/20 00:37:46 + Log: skip unreadable directory test when running as root + Branch: perl + ! t/lib/glob-basic.t +____________________________________________________________________________ +[ 4413] By: jhi on 1999/10/19 09:26:52 + Log: Avoid GNU ar if HP cc is being used. + Branch: cfgperl + ! hints/hpux.sh +____________________________________________________________________________ +[ 4412] By: jhi on 1999/10/19 07:24:29 + Log: Integrate with Sarathy. + Branch: cfgperl + !> perlvars.h +____________________________________________________________________________ +[ 4411] By: jhi on 1999/10/19 07:22:34 + Log: Long double support: sqrtl et al are not available everywhere, + e.g. not in Solaris, even when long doubles are. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.h +____________________________________________________________________________ +[ 4410] By: jhi on 1999/10/19 07:21:42 + Log: Add sqrtl probe, add echo dependencies. + Branch: metaconfig + ! U/threads/d_pthreadj.U + Branch: metaconfig/U/perl + + d_sqrtl.U + ! i_inttypes.U io64.U +____________________________________________________________________________ +[ 4409] By: gsar on 1999/10/19 02:18:54 + Log: perl_mutex n/a if !USE_THREADS + Branch: perl + ! perlvars.h +____________________________________________________________________________ +[ 4408] By: jhi on 1999/10/18 20:13:02 + Log: Forgotten s/warning/warnings/. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 4407] By: jhi on 1999/10/18 20:02:12 + Log: Integrate with Sarathy. + Branch: cfgperl + +> pod/perlfilter.pod + !> (integrate 30 files) +____________________________________________________________________________ +[ 4406] By: gsar on 1999/10/18 16:32:10 + Log: added intro to source filters from Paul Marquess + Branch: perl + + pod/perlfilter.pod + ! MANIFEST pod/perldelta.pod +____________________________________________________________________________ +[ 4405] By: gsar on 1999/10/18 05:53:06 + Log: missing manpages + Branch: perl + ! installman +____________________________________________________________________________ +[ 4404] By: gsar on 1999/10/18 05:09:22 + Log: pod updates from Tom Christiansen + Branch: perl + ! lib/Pod/Man.pm pod/perldelta.pod pod/perlmodlib.pod +____________________________________________________________________________ +[ 4403] By: gsar on 1999/10/17 23:43:59 + Log: PL_malloc_mutex needs to be global, not per-interpreter + (malloc.c has static data) + Branch: perl + ! embedvar.h intrpvar.h objXSUB.h perl.c perlvars.h +____________________________________________________________________________ +[ 4402] By: gsar on 1999/10/17 22:30:30 + Log: support PERL_IMPLICIT_SYS with MULTIPLICITY/USE_THREADS on + windows + Branch: perl + ! XSUB.h ext/POSIX/POSIX.xs intrpvar.h makedef.pl malloc.c + ! perl.c perl.h perlio.c win32/perllib.c win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 4401] By: gsar on 1999/10/17 20:33:42 + Log: serious bug introduced by G_VOID changes in 5.003_96: scalar + eval"" did not pop stack correctly; C<$a = eval "(1,2)x1"> + is one symptom of the problem + Branch: perl + ! pp_ctl.c t/op/eval.t +____________________________________________________________________________ +[ 4400] By: gsar on 1999/10/17 18:36:46 + Log: remove FileHandle from list of PodParser dependencies (the + difference is 20 files vs 6 files loaded!) + Branch: perl + ! lib/Pod/Parser.pm lib/Pod/Select.pm pod/perldelta.pod + ! t/pod/testcmp.pl +____________________________________________________________________________ +[ 4399] By: nick on 1999/10/17 14:51:35 + Log: Pre-trip resolve + Branch: utfperl + !> installperl lib/Text/Tabs.pm perl.c pp_hot.c +____________________________________________________________________________ +[ 4398] By: gsar on 1999/10/17 09:19:24 + Log: make installperl ignore RCS files (from Michael G Schwern + ) + Branch: perl + ! installperl lib/Text/Tabs.pm +____________________________________________________________________________ +[ 4397] By: gsar on 1999/10/16 18:30:14 + Log: another bug in change#3386 (CATCH_SET wasn't reverted correctly) + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 4396] By: jhi on 1999/10/16 17:44:39 + Log: Missing comma. + Branch: cfgperl + ! lib/diagnostics.pm +____________________________________________________________________________ +[ 4395] By: gsar on 1999/10/16 17:18:36 + Log: assumption about @_ always being non-REAL doesn't hold when + debugger is running; DB::sub() can call arbitrary stuff + that modifies @_ at will + Branch: perl + ! pp_hot.c +____________________________________________________________________________ +[ 4394] By: nick on 1999/10/16 09:35:20 + Log: Resolve utfperl branch against mainline as of _62 + Branch: utfperl + +> eg/cgi/dna_small_gif.uu eg/cgi/wilogo_gif.uu + +> ext/DB_File/hints/sco.pl ext/DynaLoader/hints/aix.pl + +> ext/File/Glob/Changes ext/File/Glob/Glob.pm + +> ext/File/Glob/Glob.xs ext/File/Glob/Makefile.PL + +> ext/File/Glob/TODO ext/File/Glob/bsd_glob.c + +> ext/File/Glob/bsd_glob.h ext/NDBM_File/hints/sco.pl + +> pod/perlhack.pod t/lib/glob-basic.t t/lib/glob-global.t + +> t/lib/glob-taint.t win32/genmk95.pl + - eg/cgi/dna.small.gif.uu eg/cgi/wilogo.gif.uu + !> (integrate 144 files) +____________________________________________________________________________ +[ 4393] By: gsar on 1999/10/16 04:07:02 + Log: OS/2 support bits (from Ilya Zakharevich) + Branch: perl + ! hints/os2.sh makedef.pl os2/Makefile.SHs t/lib/glob-basic.t +____________________________________________________________________________ +[ 4392] By: jhi on 1999/10/15 10:28:09 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes MANIFEST Makefile.SH Porting/makerel lib/Pod/Man.pm + !> lib/Pod/Parser.pm op.c pod/perldelta.pod pod/perlopentut.pod + !> win32/Makefile win32/makefile.mk + +---------------- +Version 5.005_62 +---------------- + +____________________________________________________________________________ +[ 4391] By: gsar on 1999/10/15 10:12:42 + Log: here be 5.005_62 + Branch: perl + ! Changes MANIFEST Porting/makerel +____________________________________________________________________________ +[ 4390] By: gsar on 1999/10/15 09:45:51 + Log: lvalue subs patch (change#4081) breaks C<\(Foo->Bar())>; + avoid tickling it in Pod::Man for now; other nits in + Pod::* + Branch: perl + ! lib/Pod/Man.pm lib/Pod/Parser.pm pod/perldelta.pod + ! pod/perlopentut.pod +____________________________________________________________________________ +[ 4389] By: gsar on 1999/10/15 08:55:01 + Log: disable internal globbing for miniperl (or build breaks out + in a rash of failed dependencies) + Branch: perl + ! Makefile.SH op.c win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4388] By: jhi on 1999/10/15 08:07:49 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes ext/POSIX/POSIX.xs lib/Benchmark.pm pod/perldelta.pod + !> pod/perlfaq2.pod win32/include/dirent.h win32/win32.c +____________________________________________________________________________ +[ 4387] By: gsar on 1999/10/15 07:46:24 + Log: integrate cfgperl contents into mainline + Branch: perl + ! Changes + !> pod/perldelta.pod pod/perldiag.pod regcomp.c + !> t/pragma/warn/regcomp +____________________________________________________________________________ +[ 4386] By: gsar on 1999/10/15 05:45:36 + Log: various little goofs in change#4385 + Branch: perl + ! win32/include/dirent.h win32/win32.c +____________________________________________________________________________ +[ 4385] By: gsar on 1999/10/15 04:49:09 + Log: win32_*dir() cleanup; win32_readdir() iterates as necessary + rather than win32_opendir() reading all files up front (untested) + Branch: perl + ! win32/include/dirent.h win32/win32.c +____________________________________________________________________________ +[ 4384] By: gsar on 1999/10/15 01:34:09 + Log: Benchmark notes (from Barrie Slaymaker ) + Branch: perl + ! lib/Benchmark.pm pod/perldelta.pod +____________________________________________________________________________ +[ 4383] By: gsar on 1999/10/15 01:22:32 + Log: include info about Perl Mongers in perlfaq2 (from David H. Adler + ) + Branch: perl + ! pod/perlfaq2.pod +____________________________________________________________________________ +[ 4382] By: gsar on 1999/10/15 01:14:22 + Log: From: jand@ActiveState.com (Jan Dubois) + Date: Fri, 15 Oct 1999 01:14:23 +0200 + Message-ID: <380f61ae.18202914@smtprelay.t-online.de> + Subject: [PATCH 5.005_61] Prevent "Out of memory" error in POSIX's strftime() + Branch: perl + ! ext/POSIX/POSIX.xs +____________________________________________________________________________ +[ 4381] By: jhi on 1999/10/14 22:11:36 + Log: Integrate with Sarathy. + Branch: cfgperl + !> XSUB.h cop.h embed.h embed.pl ext/File/Glob/bsd_glob.c + !> lib/Time/Local.pm perl.c perlapi.c pod/perlop.pod pp_ctl.c + !> proto.h scope.c scope.h t/op/runlevel.t util.c win32/Makefile + !> win32/makefile.mk +____________________________________________________________________________ +[ 4380] By: jhi on 1999/10/14 22:08:22 + Log: Warn inside character classes about unknown backslash escapes + (that are not caught earlier because of being completely unknown, + such as \m), such as \z (because they make do sense inside regexen, + but not inside character classes). + Branch: cfgperl + ! pod/perldelta.pod pod/perldiag.pod regcomp.c + ! t/pragma/warn/regcomp +____________________________________________________________________________ +[ 4379] By: gsar on 1999/10/14 18:26:56 + Log: clarify significance of parens for "x" (from M.J.T. Guy + ) + Branch: perl + ! pod/perlop.pod +____________________________________________________________________________ +[ 4378] By: gsar on 1999/10/14 18:25:20 + Log: make timelocal work better when time is close to the epoch + east of GMT (from Keiki SATOH ) + Branch: perl + ! lib/Time/Local.pm +____________________________________________________________________________ +[ 4377] By: gsar on 1999/10/14 18:15:11 + Log: integrate cfgperl contents into mainline + Branch: perl + +> ext/DB_File/hints/sco.pl + !> MANIFEST hints/aix.sh hints/linux.sh hints/svr5.sh + !> pod/perldelta.pod pod/perldiag.pod pod/perlop.pod + !> pod/perlre.pod regcomp.c t/op/re_tests t/pragma/warn/regcomp +____________________________________________________________________________ +[ 4376] By: gsar on 1999/10/14 17:47:35 + Log: fix POPSTACK panics that ensued from bad interaction between + runlevels and stack of stacks (change#3988 done right); + basically, we pop the runlevel if the stacklevel is not the + same one we started the runlevel with + Branch: perl + ! cop.h perl.c pp_ctl.c t/op/runlevel.t util.c +____________________________________________________________________________ +[ 4375] By: gsar on 1999/10/14 15:54:48 + Log: avoid warnings + Branch: perl + ! ext/File/Glob/bsd_glob.c +____________________________________________________________________________ +[ 4374] By: jhi on 1999/10/14 10:08:44 + Log: Warn about false ranges like \d-\w (see the change #4355). + The invalid ranges (b-a) warning message also enhanced. + Branch: cfgperl + ! pod/perldelta.pod pod/perldiag.pod regcomp.c t/op/re_tests + ! t/pragma/warn/regcomp +____________________________________________________________________________ +[ 4373] By: gsar on 1999/10/14 03:49:54 + Log: File::Glob fixes for Windows + Branch: perl + ! XSUB.h ext/File/Glob/bsd_glob.c win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 4372] By: gsar on 1999/10/14 02:21:31 + Log: avoid inefficiency in change#3386 (every longjmp() was followed + by an avoidable call to setjmp()) + Branch: perl + ! embed.h embed.pl perl.c perlapi.c pod/perldelta.pod pp_ctl.c + ! proto.h scope.c scope.h +____________________________________________________________________________ +[ 4371] By: jhi on 1999/10/13 21:17:17 + Log: Integrate with Sarathy. + Branch: cfgperl + !> op.c pod/perldelta.pod +____________________________________________________________________________ +[ 4370] By: gsar on 1999/10/13 18:08:45 + Log: misc tweaks + Branch: perl + ! op.c pod/perldelta.pod +____________________________________________________________________________ +[ 4369] By: jhi on 1999/10/13 16:18:58 + Log: Integrate with Sarathy. + Branch: cfgperl + !> pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod +____________________________________________________________________________ +[ 4368] By: gsar on 1999/10/13 16:14:16 + Log: pod nits from various perl porters + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod +____________________________________________________________________________ +[ 4367] By: jhi on 1999/10/13 12:10:30 + Log: From: Vlad Harchev + To: perl5-porters@perl.org + Subject: [ID 19991013.002] fix for 'perlop.pod' shipped with perl5.00503 + Date: Wed, 13 Oct 1999 15:48:59 +0500 (SAMST) + Message-Id: + Branch: cfgperl + ! pod/perlop.pod +____________________________________________________________________________ +[ 4366] By: gsar on 1999/10/13 08:11:11 + Log: typos and language goofs pointed out by Hugo van der Sanden + + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod +____________________________________________________________________________ +[ 4365] By: jhi on 1999/10/13 07:27:44 + Log: Integrate with Sarathy. + Branch: cfgperl + +> ext/File/Glob/Changes ext/File/Glob/Glob.pm + +> ext/File/Glob/Glob.xs ext/File/Glob/Makefile.PL + +> ext/File/Glob/TODO ext/File/Glob/bsd_glob.c + +> ext/File/Glob/bsd_glob.h ext/NDBM_File/hints/sco.pl + +> t/lib/glob-basic.t t/lib/glob-global.t t/lib/glob-taint.t + !> Changes MANIFEST README.win32 ext/ODBM_File/hints/sco.pl + !> lib/perl5db.pl op.c pod/perldelta.pod pod/perlfaq8.pod + !> pod/perlfunc.pod pod/perlop.pod pod/perlport.pod t/op/glob.t + !> t/op/readdir.t t/op/taint.t t/pragma/overload.t util.c +____________________________________________________________________________ +[ 4364] By: gsar on 1999/10/13 07:06:04 + Log: debugger tweak (from M.J.T. Guy ) + Branch: perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 4363] By: jhi on 1999/10/13 07:03:43 + Log: From: Mike Hopkirk (hops) + To: perl5-porters@perl.org + Subject: [ID 19991012.002] Latest UnixWare7 (svr5.sh) hints file + Date: Tue, 12 Oct 1999 19:48:11 -0700 (PDT) + Message-Id: <199910130248.TAA14636@scoot.pdev.sco.com> + Branch: cfgperl + ! hints/svr5.sh +____________________________________________________________________________ +[ 4362] By: jhi on 1999/10/13 06:57:16 + Log: Add DB_File hint for SCO ODT. + From: hops@sco.com + To: perl5-porters@perl.org + Subject: [ID 19991012.004] Build patch for perl5.005_03 on ODT3 ( 3.2v4.2) + Date: Tue, 12 Oct 1999 20:16:04 PDT + Message-Id: <199910122016.aa18415@charmstr.pdev.sco.com> + Branch: cfgperl + + ext/DB_File/hints/sco.pl + ! MANIFEST +____________________________________________________________________________ +[ 4361] By: gsar on 1999/10/13 06:56:08 + Log: PL_numeric_radix used without being defined (from Ilya + Zakharevich) + Branch: perl + ! util.c +____________________________________________________________________________ +[ 4360] By: gsar on 1999/10/13 06:43:03 + Log: use libdbm.nfs.a if available (libdbm.a is missing dbmclose()) + From: hops@sco.com + Date: Tue, 12 Oct 1999 20:16:04 PDT + Message-Id: <199910122016.aa18415@charmstr.pdev.sco.com> + Subject: [ID 19991012.004] Build patch for perl5.005_03 on ODT3 ( 3.2v4.2) + Branch: perl + + ext/NDBM_File/hints/sco.pl + ! MANIFEST ext/ODBM_File/hints/sco.pl +____________________________________________________________________________ +[ 4359] By: gsar on 1999/10/13 06:34:53 + Log: various pod tweaks (from M.J.T. Guy ) + Branch: perl + ! README.win32 pod/perlfaq8.pod pod/perlfunc.pod pod/perlop.pod + ! pod/perlport.pod +____________________________________________________________________________ +[ 4358] By: gsar on 1999/10/12 19:10:27 + Log: perldelta updates + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4357] By: gsar on 1999/10/12 17:11:18 + Log: update perldelta for change#4356 + Branch: perl + ! Changes pod/perldelta.pod +____________________________________________________________________________ +[ 4356] By: gsar on 1999/10/12 16:53:31 + Log: add File::BSDGlob as File::Glob and load it at compile-time + if perl was built with -DPERL_INTERNAL_GLOB + + TODO: we currently get a compile-time failure if File/Glob.pm + can't be found; such failure needs to be made to emit a warning + and use the csh implementation instead + Branch: perl + + ext/File/Glob/Changes ext/File/Glob/Glob.pm + + ext/File/Glob/Glob.xs ext/File/Glob/Makefile.PL + + ext/File/Glob/TODO ext/File/Glob/bsd_glob.c + + ext/File/Glob/bsd_glob.h t/lib/glob-basic.t + + t/lib/glob-global.t t/lib/glob-taint.t + ! MANIFEST op.c t/op/glob.t t/op/readdir.t t/op/taint.t + ! t/pragma/overload.t +____________________________________________________________________________ +[ 4355] By: jhi on 1999/10/12 15:30:05 + Log: Revert the parts of #3926 that outlawed character ranges + that have character classes such as \w as either endpoint. + This change re-establishes the old behavior which meant that + such ranges weren't really ranges, the "-" was literal. + Moreover, this change also fixes the old behavior to be + more consistent: [\w-.] and [\s-\w] worked, but [.-\w] didn't. + Now they all do work as described above. The #3926 outlawed + all of those. + Branch: cfgperl + ! pod/perldiag.pod pod/perlre.pod regcomp.c t/op/re_tests +____________________________________________________________________________ +[ 4354] By: jhi on 1999/10/12 09:58:59 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 33 files) +____________________________________________________________________________ +[ 4353] By: gsar on 1999/10/12 05:53:40 + Log: apply parts of LynxOS patches from Alan Johnson + + Branch: perl + ! Changes hints/lynxos.sh pod/perldelta.pod t/lib/safe2.t + ! t/op/groups.t +____________________________________________________________________________ +[ 4352] By: gsar on 1999/10/12 05:24:39 + Log: allow any unpack specifier to take a count via '/' + (from Ilya Zakharevich) + Branch: perl + ! pp.c t/op/pack.t +____________________________________________________________________________ +[ 4351] By: gsar on 1999/10/12 05:02:35 + Log: avoid warnings + Branch: perl + ! malloc.c +____________________________________________________________________________ +[ 4350] By: gsar on 1999/10/12 04:50:52 + Log: various cleanups + Branch: perl + ! ext/Devel/DProf/DProf.xs op.c perl.c perly.c perly.y + ! perly_c.diff pp_hot.c toke.c vms/perly_c.vms win32/config.bc + ! win32/config.gc win32/config.vc win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/config_sh.PL +____________________________________________________________________________ +[ 4349] By: gsar on 1999/10/12 00:23:11 + Log: update Changes, patchlevel etc. + Branch: perl + ! Changes Porting/findvars patchlevel.h win32/Makefile + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/makefile.mk +____________________________________________________________________________ +[ 4348] By: gsar on 1999/10/11 23:11:57 + Log: add vec() example from Chaim Frenkel + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4347] By: jhi on 1999/10/11 21:25:03 + Log: Sparc Linux -Duseshrplib fix. + + From: Brian Jepson + To: Nick Ing-Simmons + cc: perl5-porters@perl.org + Subject: Re: [ID 19990813.002] Can't build Perl 5.005_60 on SPARC/Linux with -Duseshrplib + Date: Fri, 20 Aug 1999 11:25:17 -0500 (EST) + Message-ID: + Branch: cfgperl + ! hints/linux.sh +____________________________________________________________________________ +[ 4346] By: gsar on 1999/10/11 20:28:32 + Log: more pack/unpack documentation (from Ilya Zakharevich); changed + the behavior of 'Z*' and 'Z3' to always pack a trailing + null byte; changed documentation to suit; added test + Branch: perl + ! pod/perlfunc.pod pp.c t/op/pack.t +____________________________________________________________________________ +[ 4345] By: gsar on 1999/10/11 19:15:46 + Log: writing to perllocal.pod fails if it was never created; + tweak pseudo-hash example (both suggested by Michael G Schwern + ) + Branch: perl + ! lib/ExtUtils/MM_Unix.pm pod/perlref.pod +____________________________________________________________________________ +[ 4344] By: gsar on 1999/10/11 17:57:31 + Log: slightly edited variant of suggested patch + From: Ilya Zakharevich + Date: Thu, 9 Sep 1999 18:35:37 -0400 + Message-ID: <19990909183537.A28682@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_58] How RExen match? + Branch: perl + ! pod/perlre.pod +____________________________________________________________________________ +[ 4343] By: gsar on 1999/10/11 16:55:48 + Log: change#4327 was inefficient + Branch: perl + ! lib/lib.pm +____________________________________________________________________________ +[ 4342] By: jhi on 1999/10/11 07:01:46 + Log: Integrate with Sarathy. + Branch: cfgperl + +> pod/perlhack.pod + !> (integrate 28 files) +____________________________________________________________________________ +[ 4341] By: jhi on 1999/10/11 06:37:47 + Log: The 2.5th cut at the AIX C++ extension problems. + Branch: cfgperl + ! hints/aix.sh +____________________________________________________________________________ +[ 4340] By: gsar on 1999/10/10 23:48:07 + Log: add perlhack.pod from Nathan Torkington + Branch: perl + + pod/perlhack.pod + ! MANIFEST pod/Makefile pod/perl.pod pod/roffitall +____________________________________________________________________________ +[ 4339] By: gsar on 1999/10/10 20:42:40 + Log: revert SAVEDESTRUCTOR() to accepting void(*)(void*) for source + compatibility; introduce SAVEDESTRUCTOR_X() that accepts + void(*)(pTHX_ void*) + Branch: perl + ! embed.h embed.pl ext/Devel/DProf/DProf.xs global.sym mg.c + ! objXSUB.h perl.h perlapi.c perly.c perly.y perly_c.diff + ! pod/perlguts.pod pod/perltoc.pod pp.c pp_hot.c proto.h + ! regcomp.h regexec.c scope.c scope.h toke.c vms/perly_c.vms +____________________________________________________________________________ +[ 4338] By: gsar on 1999/10/10 20:38:59 + Log: add missing new diagnostics to perldelta + Branch: perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4337] By: gsar on 1999/10/10 17:40:13 + Log: update perldelta for change#3406 + Branch: perl + ! embed.pl pod/perldata.pod pod/perldelta.pod +____________________________________________________________________________ +[ 4336] By: gsar on 1999/10/10 16:33:14 + Log: integrate cfgperl contents into mainline + Branch: perl + +> ext/DynaLoader/hints/aix.pl + !> MANIFEST ext/DynaLoader/dl_aix.xs hints/aix.sh hints/irix_6.sh + !> makedef.pl perl.h pod/perldelta.pod +____________________________________________________________________________ +[ 4335] By: jhi on 1999/10/10 11:09:48 + Log: Update perldelta. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4334] By: jhi on 1999/10/10 10:31:46 + Log: Integrate with Sarathy. + Branch: cfgperl + +> win32/genmk95.pl + !> Changes MANIFEST README.win32 cop.h ext/Thread/Thread.pm + !> ext/Thread/Thread.xs ext/Thread/Thread/Queue.pm + !> ext/Thread/Thread/Semaphore.pm ext/Thread/Thread/Specific.pm + !> ext/Thread/sync.t ext/Thread/sync2.t installperl + !> lib/Exporter.pm lib/ExtUtils/MM_Unix.pm + !> lib/ExtUtils/MM_Win32.pm lib/diagnostics.pm lib/lib.pm perl.c + !> pod/perldelta.pod pod/perlfunc.pod pp_ctl.c pp_hot.c pp_sys.c + !> utils/perldoc.PL win32/makefile.mk +____________________________________________________________________________ +[ 4333] By: gsar on 1999/10/10 06:33:15 + Log: install pods to 'pods' rather than 'pod' on cygwin (modified + a patch suggested by cwilson@cc865179-c.chmbl1.ga.home.com) + Branch: perl + ! installperl lib/diagnostics.pm utils/perldoc.PL +____________________________________________________________________________ +[ 4332] By: gsar on 1999/10/10 05:15:26 + Log: add $VERSION + Branch: perl + ! lib/Exporter.pm +____________________________________________________________________________ +[ 4331] By: gsar on 1999/10/10 05:10:22 + Log: describe what can go in an export list (from Anno Siegel + ) + Branch: perl + ! lib/Exporter.pm +____________________________________________________________________________ +[ 4330] By: gsar on 1999/10/10 04:50:43 + Log: more basic support for building modules under Windows 95/98 + (applied relevant parts from a patch suggested by + Jochen Wiedmann ) + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 4329] By: gsar on 1999/10/10 04:28:38 + Log: rudimentary support for building under Windows 95/98 (from + Benjamin Stuhl ) + Branch: perl + + win32/genmk95.pl + ! MANIFEST README.win32 lib/ExtUtils/MM_Win32.pm + ! win32/makefile.mk +____________________________________________________________________________ +[ 4328] By: gsar on 1999/10/10 03:37:21 + Log: fix two leaks in Thread.xs (from Eugene Alterman + ); convert places with + 'use attrs' to new attributes syntax + Branch: perl + ! ext/Thread/Thread.pm ext/Thread/Thread.xs + ! ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm + ! ext/Thread/Thread/Specific.pm ext/Thread/sync.t + ! ext/Thread/sync2.t +____________________________________________________________________________ +[ 4327] By: gsar on 1999/10/10 02:23:52 + Log: avoid duplicates in @INC, they cause leaks in mod_perl etc + (suggested by Tod Irwin ) + Branch: perl + ! lib/lib.pm +____________________________________________________________________________ +[ 4326] By: gsar on 1999/10/10 00:51:48 + Log: better documentation for recv() (from Anton Berezin + ) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4325] By: gsar on 1999/10/09 22:46:23 + Log: perldelta updates (see TODO markers) + Branch: perl + ! Changes pod/perldelta.pod pp_sys.c +____________________________________________________________________________ +[ 4324] By: gsar on 1999/10/09 19:43:10 + Log: fix Exporter::export_to_level() documentation + Branch: perl + ! lib/Exporter.pm +____________________________________________________________________________ +[ 4323] By: gsar on 1999/10/09 18:48:31 + Log: don't run END blocks when running under -c switch (older, + rarely useful behavior may still be obtained by putting + BEGIN { $^C = 0; exit; } at the end of the script) + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 4322] By: jhi on 1999/10/09 05:31:26 + Log: While awaiting a good test program to detect the broken gcc. + From: Thomas Conté + To: + Cc: + Subject: Re: [ID 19990825.007] test t/lib/ipc_sysv.t failing under irix 6.4 + Date: Wed, 6 Oct 1999 19:56:29 +0200 + Message-ID: <000a01bf1024$1d938f20$252ad0d4@eng.iway.fr> + Branch: cfgperl + ! hints/irix_6.sh perl.h +____________________________________________________________________________ +[ 4321] By: gsar on 1999/10/09 00:41:02 + Log: POPSUB() gave up the refcount to the CV before LEAVE had a chance to + clear entries in the CV's pad, leading to coredumps when CV had no + other references to it; this is a slightly edited version of the + patch suggested by Russel O'Connor + Branch: perl + ! cop.h pp_ctl.c pp_hot.c +____________________________________________________________________________ +[ 4320] By: gsar on 1999/10/08 22:50:51 + Log: revert POP{SUB,LOOP}{1,2} logic to the simpler pre-5.003_24 + situation (assumptions about cx invalidation are not valid + anymore) + Branch: perl + ! cop.h pp_ctl.c pp_hot.c +____________________________________________________________________________ +[ 4319] By: jhi on 1999/10/08 14:33:31 + Log: Integrate with Sarathy. + Branch: cfgperl + !> cop.h ext/Thread/Thread.xs op.c opcode.h perl.c perl.h perly.c + !> perly.y pod/perldiag.pod pod/perlfunc.pod pp_ctl.c pp_sys.c + !> t/comp/bproto.t thrdvar.h toke.c util.c +____________________________________________________________________________ +[ 4318] By: jhi on 1999/10/08 13:51:34 + Log: The second cut at AIX C++ extension troubles. + Branch: cfgperl + ! ext/DynaLoader/dl_aix.xs ext/DynaLoader/hints/aix.pl + ! hints/aix.sh +____________________________________________________________________________ +[ 4317] By: jhi on 1999/10/08 10:44:13 + Log: The first cut at fixing Perl extensions written in C++ in AIX, + statics don't get initialized right. This patch at least + doesn't seem to break the build in my AIX, but unfortunately + I don't have the IBM C++ to do further testing. + + Problem reported by Stephanie Beals in + From: bealzy@us.ibm.com + To: perl5-porters@perl.org + Subject: [ID 19991007.005] DynaLoader/dl_aix.xs problem using load and unload on AIX + Date: Thu, 7 Oct 1999 15:05:54 -0400 + Message-Id: <85256803.0068E70D.00@D51MTA03.pok.ibm.com> + Branch: cfgperl + + ext/DynaLoader/hints/aix.pl + ! MANIFEST ext/DynaLoader/dl_aix.xs hints/aix.sh +____________________________________________________________________________ +[ 4316] By: gsar on 1999/10/08 10:26:15 + Log: remove kludgey duplicate background error avoidance (caused + "leaks"; %@ wasn't even user-visible under -Dusethreads); + only repeats of most recent error are now avoided + Branch: perl + ! ext/Thread/Thread.xs perl.c perl.h pp_ctl.c thrdvar.h util.c +____________________________________________________________________________ +[ 4315] By: jhi on 1999/10/08 09:48:59 + Log: Fix omission. + Branch: cfgperl + ! makedef.pl +____________________________________________________________________________ +[ 4314] By: gsar on 1999/10/08 07:17:01 + Log: extend change#2299 to C (fixes scoping problems in + C) + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4313] By: gsar on 1999/10/08 04:52:19 + Log: small tweak for change#4309 + Branch: perl + ! op.c +____________________________________________________________________________ +[ 4312] By: gsar on 1999/10/08 02:31:13 + Log: add suggested patch =~ s/NOTOP/OP_NOT/ with tests + From: Larry Wall + Date: Wed, 6 Oct 1999 09:55:57 -0700 (PDT) + Message-Id: <199910061655.JAA11333@kiev.wall.org> + Subject: Re: [ID 19991001.004] apparent parsing error with not(arg) + Branch: perl + ! opcode.h t/comp/bproto.t toke.c +____________________________________________________________________________ +[ 4311] By: gsar on 1999/10/08 00:58:19 + Log: typo + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 4310] By: gsar on 1999/10/07 23:51:38 + Log: fix setpgrp vs getpgrp and POSIX vs BSD confusion (spotted by + Brian Mitchell ) + Branch: perl + ! pod/perldiag.pod pod/perlfunc.pod pp_sys.c +____________________________________________________________________________ +[ 4309] By: gsar on 1999/10/07 22:57:52 + Log: change#3728 was flawed (loop contexts saw the wrong statement + info, causing loop control constructs to not find the label); + disable OP_SETSTATE entirely and add a fix that is specifically + targetted at disabling the OP_LINESEQ optimization in else BLOCK, + which was what the original patch was supposed to fix + + TODO: remove the remainder of the setstate logic if it can't + be used anywhere else (it isn't used anywhere now) + Branch: perl + ! cop.h op.c perly.c perly.y +____________________________________________________________________________ +[ 4308] By: jhi on 1999/10/07 19:21:27 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/Pod/Man.pm lib/Pod/Text.pm pod/pod2man.PL +____________________________________________________________________________ +[ 4307] By: gsar on 1999/10/07 15:12:24 + Log: update to podlators-0.08 from Russ Allbery + Branch: perl + ! lib/Pod/Man.pm lib/Pod/Text.pm pod/pod2man.PL +____________________________________________________________________________ +[ 4306] By: jhi on 1999/10/06 17:20:34 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 45 files) +____________________________________________________________________________ +[ 4305] By: gsar on 1999/10/06 16:55:45 + Log: some versions of mingw32 have __int64, define iff it isn't + Branch: perl + ! win32/win32.h +____________________________________________________________________________ +[ 4304] By: gsar on 1999/10/06 03:45:44 + Log: fix typos in change#4288 + Branch: perl + ! Changes dump.c sv.c +____________________________________________________________________________ +[ 4303] By: gsar on 1999/10/06 03:22:46 + Log: integrate cfgperl contents into mainline + Branch: perl + +> eg/cgi/dna_small_gif.uu eg/cgi/wilogo_gif.uu + - eg/cgi/dna.small.gif.uu eg/cgi/wilogo.gif.uu + !> (integrate 31 files) +____________________________________________________________________________ +[ 4302] By: gsar on 1999/10/06 02:36:53 + Log: make die/warn and other diagnostics go to wherever STDERR happens + to point at; change places that meant Perl_debug_log rather than + PerlIO_stderr() + Branch: perl + ! cop.h doio.c embedvar.h ext/Devel/Peek/Peek.xs + ! ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_beos.xs + ! ext/DynaLoader/dl_cygwin.xs ext/DynaLoader/dl_dld.xs + ! ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs + ! ext/DynaLoader/dl_mpeix.xs ext/DynaLoader/dl_next.xs + ! ext/DynaLoader/dl_rhapsody.xs ext/DynaLoader/dl_vmesa.xs + ! ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c + ! ext/Thread/Thread.xs ext/Thread/typemap intrpvar.h malloc.c + ! mg.c objXSUB.h op.c perl.c perl.h perlio.c pp.c pp_ctl.c + ! pp_hot.c regexec.c scope.c scope.h sv.c thread.h toke.c util.c + ! win32/dl_win32.xs win32/win32.c win32/win32thread.c +____________________________________________________________________________ +[ 4301] By: jhi on 1999/10/05 23:03:46 + Log: From: Ilya Zakharevich + To: François Désarménien + Cc: "perl5-porters@perl.org" + Subject: Re: Strange RE engine breakage in 5_61 + Date: Mon, 4 Oct 1999 19:58:03 -0400 + Message-ID: <19991004195803.A21760@monk.mps.ohio-state.edu> + + (had to apply pat.t part manually because there + already were more tests than there was in _61) + Branch: cfgperl + ! regcomp.c regexec.c t/op/pat.t t/op/re_tests +____________________________________________________________________________ +[ 4300] By: jhi on 1999/10/04 17:03:18 + Log: From: Andy Dougherty + To: Jarkko Hietaniemi + cc: Perl Porters , jhi@cc.hut.fi + Subject: Re: [ID 19991001.005] [_61] [PATCH] tarball fine on win32, zip isn't + Date: Mon, 4 Oct 1999 13:05:08 -0400 (EDT) + Message-ID: + Branch: cfgperl + + eg/cgi/dna_small_gif.uu eg/cgi/wilogo_gif.uu + - eg/cgi/dna.small.gif.uu eg/cgi/wilogo.gif.uu + ! MANIFEST ext/B/defsubs_h.PL +____________________________________________________________________________ +[ 4299] By: jhi on 1999/10/04 07:15:16 + Log: From: Michael G Schwern + To: perl5-porters@perl.org + Subject: Re: [PATCH av.c, op.c, perldiag.pod] "array field" -> "pseudo-hash field" + Date: Sun, 3 Oct 1999 17:34:17 -0400 + Message-ID: <19991003173417.A4351@blackrider> + Branch: cfgperl + ! t/lib/fields.t t/pragma/constant.t +____________________________________________________________________________ +[ 4298] By: gsar on 1999/10/04 04:57:53 + Log: some compatibility macros were busted + Branch: perl + ! embed.h embed.pl toke.c +____________________________________________________________________________ +[ 4297] By: jhi on 1999/10/03 17:50:59 + Log: A better version of #4296. + + From: Michael G Schwern + To: perl5-porters@perl.org + Subject: [PATCH av.c, op.c, perldiag.pod] "array field" -> "pseudo-hash field" + Date: Sun, 3 Oct 1999 13:54:23 -0400 + Message-ID: <19991003135423.A3050@blackrider> + Branch: cfgperl + ! av.c op.c pod/perldiag.pod +____________________________________________________________________________ +[ 4296] By: jhi on 1999/10/03 17:21:01 + Log: (Replaced by #4297.) + + From: Michael G Schwern + To: perl5-porters@perl.org + Subject: [PATCH av.c, perldiag.pod] Added field name to "No such array field" + Date: Sun, 3 Oct 1999 13:16:47 -0400 + Message-ID: <19991003131647.A2816@blackrider> + + plus changed the error message to say "No such pseudo-hash field" + as discussed in the above mail message. + Branch: cfgperl + ! av.c pod/perldiag.pod +____________________________________________________________________________ +[ 4295] By: gsar on 1999/10/03 16:09:36 + Log: avoid doing irrelevant things on 'make perl' + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 4294] By: jhi on 1999/10/03 14:16:24 + Log: Fix a typo in #4293 spotted by Graham Barr. + Branch: cfgperl + ! pod/perlref.pod +____________________________________________________________________________ +[ 4293] By: jhi on 1999/10/03 11:31:22 + Log: From: Michael G Schwern + To: perl5-porters@perl.org + Subject: Re: Should keys in pseudo-hashes -always- exist? [DOC PATCH] + Date: Sun, 3 Oct 1999 02:34:01 -0400 + Message-ID: <19991003023401.A1520@blackrider> + Branch: cfgperl + ! pod/perlfunc.pod pod/perlref.pod +____________________________________________________________________________ +[ 4292] By: jhi on 1999/10/03 09:23:16 + Log: From: Barrie Slaymaker + To: perl5-porters@perl.org + Subject: [PATCH 5.005_61] Benchmark.pm bugfix, tweaks + Date: Sun, 3 Oct 1999 00:09:51 -0400 + Message-Id: <199910030409.AAA18228@jester.slaysys.com> + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4291] By: jhi on 1999/10/02 23:43:53 + Log: Be understanding about large file systems. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4290] By: jhi on 1999/10/02 23:39:16 + Log: Configure fixfest continues. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/d_longdbl.U U/modified/d_longlong.U + ! U/threads/d_pthreadj.U U/typedefs/gidsign.U + ! U/typedefs/gidsize.U U/typedefs/pidsign.U U/typedefs/pidsize.U + ! U/typedefs/uidsign.U U/typedefs/uidsize.U + Branch: metaconfig/U/perl + ! i_inttypes.U io64.U +____________________________________________________________________________ +[ 4289] By: jhi on 1999/10/02 23:12:54 + Log: Regen Porting stuff. + Branch: cfgperl + ! Porting/Glossary Porting/config.sh Porting/config_H +____________________________________________________________________________ +[ 4288] By: jhi on 1999/10/02 23:05:50 + Log: Untangle the IV_IS_QUAD jungle by introduding + macros to be used when doing formatted printing: + IVdf, UVuf, UVxf, UVof. Also introduce Uid_t_SIGN. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH doio.c dump.c op.c perl.h pp_hot.c pp_sys.c + ! regcomp.c sv.c taint.c toke.c util.c +____________________________________________________________________________ +[ 4287] By: jhi on 1999/10/02 22:54:18 + Log: metaconfig maintenance. + Branch: metaconfig + ! U/ebcdic/ebcdic.U U/typedefs/gidsign.U U/typedefs/gidsize.U + ! U/typedefs/pidsign.U U/typedefs/pidsize.U U/typedefs/uidsign.U + ! U/typedefs/uidsize.U +____________________________________________________________________________ +[ 4286] By: nick on 1999/10/02 11:11:44 + Log: Incremental merge of mainline + Branch: utfperl + +> README.Y2K hints/svr5.sh lib/Pod/Man.pm + +> lib/unicode/Unicode.html t/op/args.t t/pod/multiline_items.t + +> t/pod/multiline_items.xr t/pod/pod2usage.t t/pod/pod2usage.xr + +> t/pod/podselect.t t/pod/podselect.xr + - lib/Pod/PlainText.pm + !> (integrate 148 files) +____________________________________________________________________________ +[ 4285] By: jhi on 1999/10/02 10:16:15 + Log: Battle namespace pollution. + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4284] By: jhi on 1999/10/02 10:11:20 + Log: Regen Configure, all of xs_apiversion didn't take. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH patchlevel.h +____________________________________________________________________________ +[ 4283] By: jhi on 1999/10/02 09:48:17 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/Pod/Man.pm t/pod/multiline_items.t + +> t/pod/multiline_items.xr t/pod/pod2usage.t t/pod/pod2usage.xr + +> t/pod/podselect.t t/pod/podselect.xr + - lib/Pod/PlainText.pm + !> (integrate 50 files) +____________________________________________________________________________ +[ 4282] By: gsar on 1999/10/02 06:39:14 + Log: update pod2man, pod2text and related Pod:: modules with the + ones in podlators-0.07 from Russ Allbery + Branch: perl + + lib/Pod/Man.pm + ! lib/Pod/Text.pm lib/Pod/Text/Color.pm lib/Pod/Text/Termcap.pm + ! pod/pod2man.PL pod/pod2text.PL +____________________________________________________________________________ +[ 4281] By: gsar on 1999/10/02 06:14:44 + Log: fix PodParser testsuite; Pod::Text subsumes Pod::PlainText + Branch: perl + - lib/Pod/PlainText.pm + ! MANIFEST lib/Pod/Text.pm lib/Pod/Usage.pm pod/pod2usage.PL + ! pod/podchecker.PL pod/podselect.PL t/pod/emptycmd.t + ! t/pod/for.t t/pod/headings.t t/pod/include.t t/pod/included.t + ! t/pod/lref.t t/pod/multiline_items.t t/pod/nested_items.t + ! t/pod/nested_seqs.t t/pod/oneline_cmds.t t/pod/pod2usage.t + ! t/pod/poderrs.t t/pod/poderrs.xr t/pod/podselect.t + ! t/pod/special_seqs.t t/pod/testp2pt.pl t/pod/testpchk.pl +____________________________________________________________________________ +[ 4280] By: gsar on 1999/10/02 04:39:38 + Log: upgrade to PodParser-1.085 from Brad Appleton + Branch: perl + + t/pod/multiline_items.t t/pod/multiline_items.xr + + t/pod/pod2usage.t t/pod/pod2usage.xr t/pod/podselect.t + + t/pod/podselect.xr + ! MANIFEST lib/Pod/Checker.pm lib/Pod/InputObjects.pm + ! lib/Pod/Parser.pm lib/Pod/PlainText.pm lib/Pod/Select.pm + ! lib/Pod/Usage.pm t/pod/for.xr t/pod/headings.xr + ! t/pod/include.xr t/pod/included.xr t/pod/lref.xr + ! t/pod/nested_items.xr t/pod/nested_seqs.xr + ! t/pod/oneline_cmds.xr t/pod/poderrs.xr t/pod/special_seqs.xr + ! t/pod/testp2pt.pl +____________________________________________________________________________ +[ 4279] By: gsar on 1999/10/02 03:36:41 + Log: make exists() work better on pseudo-hashes (reworked a patch suggested + by Michael G Schwern ) + Branch: perl + ! av.c t/op/avhv.t +____________________________________________________________________________ +[ 4278] By: gsar on 1999/10/02 02:36:55 + Log: deprecate C + Branch: perl + ! ext/attrs/attrs.pm ext/attrs/attrs.xs t/lib/attrs.t + ! t/lib/thread.t t/pragma/sub_lval.t +____________________________________________________________________________ +[ 4277] By: gsar on 1999/10/02 01:43:25 + Log: add notes about effect of loop control statements inside + LABEL BLOCK continue BLOCK + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4276] By: gsar on 1999/10/02 01:23:02 + Log: indent nested =items properly (suggested by Bill Fenner + ) + Branch: perl + ! pod/pod2man.PL +____________________________________________________________________________ +[ 4275] By: gsar on 1999/10/02 01:09:16 + Log: updated ptags generator from Ilya Zakharevich + Branch: perl + ! emacs/ptags +____________________________________________________________________________ +[ 4274] By: gsar on 1999/10/01 23:08:52 + Log: update Changes + Branch: perl + ! Changes +____________________________________________________________________________ +[ 4273] By: gsar on 1999/10/01 22:58:55 + Log: typo, whitespace adjustments + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 4272] By: gsar on 1999/10/01 22:46:06 + Log: remove dup hunks + Branch: perl + ! configure.com vms/vms.c +____________________________________________________________________________ +[ 4271] By: gsar on 1999/10/01 22:33:02 + Log: integrate cfgperl contents into mainline; resolve h2xs.PL conflict + by declaring new globals "our" (XXX this means h2xs generated code + won't run on earlier versions; a switch to generate compatible + source is needed) + Branch: perl + !> (integrate 35 files) +____________________________________________________________________________ +[ 4270] By: jhi on 1999/10/01 12:05:56 + Log: Integrate with Sarathy. + Branch: cfgperl + !> ext/B/B/C.pm lib/ExtUtils/typemap lib/ExtUtils/xsubpp + !> pod/perldiag.pod util.c +____________________________________________________________________________ +[ 4269] By: jhi on 1999/10/01 10:26:19 + Log: From: Piotr Klaban + To: perl5-porters@perl.org + Subject: [ID 19991001.001] perlguts man page error + Date: Fri, 1 Oct 1999 10:23:49 +0200 (MET DST) + Message-Id: <199910010823.KAA05796@oryl.man.torun.pl> + Branch: cfgperl + ! pod/perlguts.pod +____________________________________________________________________________ +[ 4268] By: jhi on 1999/10/01 07:32:33 + Log: There *is* a month called October. + Branch: cfgperl + ! t/op/time.t +____________________________________________________________________________ +[ 4267] By: jhi on 1999/10/01 06:58:10 + Log: Temp file cleanliness. + Branch: cfgperl + ! t/lib/filecopy.t +____________________________________________________________________________ +[ 4266] By: jhi on 1999/10/01 06:46:56 + Log: From: Barrie Slaymaker + To: perl5-porters@perl.org + Subject: [PATCH 5.005_61] Benchmark.pm: Export countit(), cmpthese() by default + Date: Thu, 30 Sep 1999 22:16:26 -0400 + Message-Id: <199910010216.WAA08309@jester.slaysys.com> + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4265] By: jhi on 1999/09/30 20:25:35 + Log: From: Barrie Slaymaker + To: perl5-porters@perl.org + Subject: [PATCH 5.005_61] Benchmark tweaks, fixes, cmpthese() + Date: Thu, 30 Sep 1999 15:44:00 -0400 + Message-Id: <199909301944.PAA07166@jester.slaysys.com> + (Replaces #4175.) + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4264] By: gsar on 1999/09/30 17:59:26 + Log: re-add missing "Out of memory!" entry + Branch: perl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 4263] By: jhi on 1999/09/30 17:05:43 + Log: Regenerate Configure. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 4261] By: jhi on 1999/09/30 16:15:05 + Log: From: Andy Dougherty + To: Perl Porters + Subject: [PATCH 5.005_61] rand() advisory for perldelta.pod + Date: Thu, 30 Sep 1999 12:24:00 -0400 (EDT) + Message-ID: + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4260] By: jhi on 1999/09/30 15:48:56 + Log: From: Andy Dougherty + To: Jarkko Hietaniemi , Gurusamy Sarathy + Subject: Re: Possible skeletal structure for searching multiple versions + Date: Thu, 30 Sep 1999 11:52:00 -0400 (EDT) + Message-ID: + Branch: metaconfig + ! U/mkglossary + Branch: metaconfig/U/perl + + xs_apiversion.U + ! patchlevel.U +____________________________________________________________________________ +[ 4259] By: jhi on 1999/09/30 15:07:16 + Log: Further ?idsize.U fixing. + Branch: metaconfig + ! U/typedefs/gidsize.U U/typedefs/pidsize.U U/typedefs/uidsize.U +____________________________________________________________________________ +[ 4258] By: jhi on 1999/09/30 15:00:14 + Log: Fix the ?idsi{gn,ze} units, from Andy Dougherty. + Branch: metaconfig + ! U/typedefs/gidsign.U U/typedefs/gidsize.U U/typedefs/pidsign.U + ! U/typedefs/pidsize.U U/typedefs/uidsign.U U/typedefs/uidsize.U +____________________________________________________________________________ +[ 4257] By: jhi on 1999/09/30 09:48:33 + Log: From: "Kurt D. Starsinic" + To: Gurusamy Sarathy + Cc: tchrist@perl.com, Larry Wall , + The Perl Porters Mailing List + Subject: [PATCH] (Was: deprecating SIGDIE) + Date: Wed, 29 Sep 1999 15:16:50 -0400 + Message-ID: <19990929151650.E26675@O2.chapin.edu> + Branch: cfgperl + ! Porting/findvars embedvar.h intrpvar.h mg.c objXSUB.h perl.c +____________________________________________________________________________ +[ 4256] By: jhi on 1999/09/30 09:45:22 + Log: From: Ilya Zakharevich + To: Gurusamy Sarathy + Cc: Barrie Slaymaker , perl5-porters@perl.org + Subject: Re: _58, _61 Argument "" is not numeric in sprintf + Date: Wed, 29 Sep 1999 18:58:23 -0400 + Message-ID: <19990929185823.A22099@monk.mps.ohio-state.edu> + Branch: cfgperl + ! Makefile.SH opcode.pl +____________________________________________________________________________ +[ 4255] By: gsar on 1999/09/30 09:03:48 + Log: remove prehistoric XFree() gunk + Branch: perl + ! lib/ExtUtils/typemap lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 4254] By: gsar on 1999/09/30 08:40:14 + Log: From: Vishal Bhatia + Date: Wed, 29 Sep 1999 23:27:28 +0900 (JST) + Message-ID: + Subject: [patch _61] Minor corrections in C.pm + Branch: perl + ! ext/B/B/C.pm +____________________________________________________________________________ +[ 4253] By: gsar on 1999/09/30 08:36:27 + Log: off-by-one in fbm_compile() (spotted by John Bley + ); whitespace adjustments + Branch: perl + ! util.c +____________________________________________________________________________ +[ 4251] By: jhi on 1999/09/30 08:09:13 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.00561+] Followup h2xs patch + Date: Thu, 30 Sep 1999 04:15:52 -0400 (EDT) + Message-Id: <199909300815.EAA25425@monk.mps.ohio-state.edu> + Branch: cfgperl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 4250] By: jhi on 1999/09/29 19:11:32 + Log: Integrate with Sarathy. + Branch: cfgperl + !> djgpp/configure.bat embed.h embed.pl lib/Exporter/Heavy.pm + !> lib/ExtUtils/MM_Unix.pm lib/Time/Local.pm proto.h + !> t/pragma/locale/latin1 win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4249] By: bailey on 1999/09/29 02:21:31 + Log: resync with mainline + Branch: vmsperl + +> (branch 32 files) + - ext/B/defsubs.h.PL lib/unicode/arabshp.txt + - lib/unicode/blocks.txt lib/unicode/index2.txt + - lib/unicode/jamo2.txt lib/unicode/names2.txt + - lib/unicode/props2.txt lib/unicode/readme.txt + - t/lib/bigfloatpm.t + !> (integrate 240 files) +____________________________________________________________________________ +[ 4248] By: jhi on 1999/09/28 18:14:39 + Log: From: Andy Dougherty + To: Perl Porters + Subject: [PATCH 5.005_xx] Re: [Config 5.005_03] -DDEBUGGING + Date: Tue, 28 Sep 1999 12:20:50 -0400 (EDT) + Message-ID: + + From: Andy Dougherty + To: Perl Porters + Subject: [ANOTHER PATCH 5.005_61] Re: [Config 5.005_03] -DDEBUGGING + Date: Tue, 28 Sep 1999 13:39:49 -0400 (EDT) + Message-ID: + Branch: cfgperl + ! hints/README.hints hints/amigaos.sh hints/cygwin.sh + ! hints/dynixptx.sh hints/epix.sh hints/esix4.sh hints/mint.sh + ! hints/mpeix.sh hints/next_3.sh hints/next_3_0.sh + ! hints/next_4.sh +____________________________________________________________________________ +[ 4247] By: gsar on 1999/09/28 17:36:59 + Log: revert change#4115 (breaks libwww's base/date.t); could be + reworked to enable it conditional on $Time::Local::nocroak + or some such + Branch: perl + ! lib/Time/Local.pm +____________________________________________________________________________ +[ 4246] By: gsar on 1999/09/28 17:33:14 + Log: tweak for win32 build + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4245] By: gsar on 1999/09/28 17:31:34 + Log: change#4236 fallout + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 4244] By: gsar on 1999/09/28 17:29:31 + Log: remove doubled new_xpv + Branch: perl + ! embed.h embed.pl proto.h +____________________________________________________________________________ +[ 4243] By: jhi on 1999/09/27 19:13:20 + Log: Artistic fine-tuning. + Branch: cfgperl + ! ext/B/defsubs_h.PL +____________________________________________________________________________ +[ 4242] By: gsar on 1999/09/27 17:05:22 + Log: avoid implicit split to @_ in change#4181; binary -> text file + types in p4 + Branch: perl + ! djgpp/configure.bat lib/Exporter/Heavy.pm + ! t/pragma/locale/latin1 +____________________________________________________________________________ +[ 4241] By: jhi on 1999/09/27 07:48:19 + Log: Integrate with Sarathy. + Branch: cfgperl + !> INSTALL embed.h embed.pl malloc.c pod/perldiag.pod pp.c + !> pp_ctl.c pp_hot.c pp_sys.c win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4240] By: jhi on 1999/09/27 07:47:11 + Log: Finalize change #4232. + From: Ilya Zakharevich + To: Jarkko Hietaniemi + Cc: gsar@activestate.com, Mailing list Perl5 + Subject: Re: xsubpp change breaks B, DB_File, POSIX builds + Date: Sun, 26 Sep 1999 16:52:31 -0400 + Message-ID: <19990926165230.A26933@monk.mps.ohio-state.edu> + Branch: cfgperl + ! lib/ExtUtils/xsubpp +____________________________________________________________________________ +[ 4239] By: gsar on 1999/09/27 02:48:42 + Log: add notes in INSTALL about Configure -Accflags=-DFOO + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 4238] By: gsar on 1999/09/27 02:03:48 + Log: PERL_POLLUTE isn't required for bincompat, so don't enable + it automatically + Branch: perl + ! embed.h embed.pl +____________________________________________________________________________ +[ 4237] By: gsar on 1999/09/27 01:52:47 + Log: From: Ilya Zakharevich + Date: Fri, 24 Sep 1999 23:25:36 -0400 + Message-ID: <19990924232536.A16257@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_61] Malloc fixes and docs + Branch: perl + ! malloc.c pod/perldiag.pod +____________________________________________________________________________ +[ 4236] By: gsar on 1999/09/27 01:31:32 + Log: avoid .exe in $Config{cc} (spotted by Vadim Konovalov + ) + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4235] By: gsar on 1999/09/26 17:02:03 + Log: fix buggy popping of subroutine contexts in the lvalue + subroutines implementation (change#4081); correct the + plethora of cases where DIE() was more appropriate than + croak() + Branch: perl + ! pp.c pp_ctl.c pp_hot.c pp_sys.c +____________________________________________________________________________ +[ 4234] By: jhi on 1999/09/26 12:06:28 + Log: Fix #endif. + Branch: cfgperl + ! XSUB.h +____________________________________________________________________________ +[ 4233] By: jhi on 1999/09/26 11:59:18 + Log: Integrate with Sarathy. h2xs.PL had to be manually resolved, + I kept my (Ilya's) version. + Branch: cfgperl + !> gv.c gv.h intrpvar.h keywords.h keywords.pl lib/Shell.pm op.c + !> pod/perldiag.pod pod/perlembed.pod pod/perlfaq3.pod + !> pod/perlfaq7.pod pod/perlfunc.pod pod/perlmod.pod + !> pod/perlmodlib.pod pod/perlsub.pod pod/perltoot.pod + !> pod/perlxstut.pod sv.h t/pragma/strict-vars toke.c + !> utils/h2xs.PL win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4232] By: jhi on 1999/09/26 09:53:43 + Log: From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: [PATCH 5.005_61] teach xsubpp function pointers + Date: Sun, 26 Sep 1999 01:36:09 -0400 + Message-ID: <19990926013609.A21148@monk.mps.ohio-state.edu> + + From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: [PATCH 5.005_61] Make h2xs -x almost bullet-proof + Date: Sun, 26 Sep 1999 03:00:50 -0400 + Message-ID: <19990926030050.A21498@monk.mps.ohio-state.edu> + Branch: cfgperl + ! lib/ExtUtils/xsubpp utils/h2xs.PL +____________________________________________________________________________ +[ 4231] By: jhi on 1999/09/26 09:48:49 + Log: From: "Konovalov, Vadim" + To: perl5-porters@perl.org + Subject: misprint in perlguts + Date: Sun, 26 Sep 1999 12:48:36 +0400 + Message-ID: <402099F49BEED211999700805FC7359F20D7A5@ru0028exch01.spb.lucent.com> + Branch: cfgperl + ! pod/perlguts.pod +____________________________________________________________________________ +[ 4230] By: gsar on 1999/09/26 00:50:08 + Log: add $installarchlib/CORE to default linker search path on windows + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 4229] By: gsar on 1999/09/25 20:05:03 + Log: support C on Windows (reworked a patch suggested + by Jenda Krynicky ) + Branch: perl + ! lib/Shell.pm +____________________________________________________________________________ +[ 4228] By: gsar on 1999/09/25 07:03:34 + Log: integrate cfgperl contents into mainline + Branch: perl + +> hints/svr5.sh + !> Configure MANIFEST Makefile.SH config_h.SH hints/sco.sh + !> lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + !> lib/unicode/mktables.PL pod/perldelta.pod pod/perlfaq9.pod + !> regcomp.c regexec.c t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4227] By: gsar on 1999/09/25 06:44:47 + Log: From: Larry Wall + Date: Fri, 24 Sep 1999 21:59:37 PDT + Message-Id: <199909250459.VAA27506@kiev.wall.org> + Subject: Re: [PATCH 5.005_61] "our" declarations + Branch: perl + ! gv.c gv.h intrpvar.h keywords.h keywords.pl op.c + ! pod/perldiag.pod pod/perlembed.pod pod/perlfaq3.pod + ! pod/perlfaq7.pod pod/perlfunc.pod pod/perlmod.pod + ! pod/perlmodlib.pod pod/perlsub.pod pod/perltoot.pod + ! pod/perlxstut.pod sv.h t/pragma/strict-vars toke.c + ! utils/h2xs.PL +____________________________________________________________________________ +[ 4226] By: jhi on 1999/09/24 23:10:52 + Log: Integrate with Sarathy. + Branch: cfgperl + !> XSUB.h ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs + !> ext/POSIX/hints/linux.pl pod/perldiag.pod pod/perlfunc.pod + !> pp.c t/lib/posix.t t/op/pack.t toke.c utils/perlcc.PL +____________________________________________________________________________ +[ 4225] By: gsar on 1999/09/24 18:19:54 + Log: avoid infinite recursive exec()s of perl.exe when shebang + contains "Perl" rather than "perl" on DOSISH platforms + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4224] By: gsar on 1999/09/24 16:09:23 + Log: support cygwin and other platforms that link to import libraries + rather than directly with shared libraries (from a suggestion + by Lucian Cionca ) + Branch: perl + ! utils/perlcc.PL +____________________________________________________________________________ +[ 4223] By: gsar on 1999/09/24 05:05:06 + Log: normalize time for strftime() (without the isdst effects of + mktime()) using a custom mini_mktime() + From: spider-perl@Orb.Nashua.NH.US + Date: Thu, 23 Sep 1999 17:54:53 -0400 + Message-Id: <199909232154.RAA25151@leggy.zk3.dec.com> + Subject: Re: [ID 19990913.003] Possible bug using POSIX::strftime Digital UNIX Perl 5.005_03 + Branch: perl + ! ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs + ! ext/POSIX/hints/linux.pl t/lib/posix.t +____________________________________________________________________________ +[ 4222] By: gsar on 1999/09/23 06:44:42 + Log: change "#" to a comment starter in pack templates; "/" now + used for specifying counted types + From: Ilya Zakharevich + Date: Wed, 22 Sep 1999 19:41:30 -0400 + Message-ID: <19990922194130.A864@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_61] Enable comments in pack()/unpack() templates + Branch: perl + ! pod/perldiag.pod pod/perlfunc.pod pp.c t/op/pack.t +____________________________________________________________________________ +[ 4221] By: gsar on 1999/09/23 06:26:54 + Log: From: Vishal Bhatia + Date: Thu, 23 Sep 1999 12:45:19 +0900 (JST) + Message-ID: + Subject: [patch _61] perlcc changes + Branch: perl + ! utils/perlcc.PL +____________________________________________________________________________ +[ 4220] By: gsar on 1999/09/23 01:12:24 + Log: add include guard + Branch: perl + ! XSUB.h +____________________________________________________________________________ +[ 4219] By: jhi on 1999/09/22 20:38:15 + Log: Cleanup cleanup. + Branch: cfgperl + ! Makefile.SH t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4218] By: jhi on 1999/09/22 19:26:58 + Log: Tweak the equivalence tables once again. + Branch: cfgperl + ! lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + ! lib/unicode/mktables.PL +____________________________________________________________________________ +[ 4215] By: jhi on 1999/09/22 06:47:03 + Log: From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: [PATCH 5.005_61] regfree could segfault with -Mre=debug + Date: Tue, 21 Sep 1999 19:50:00 -0400 + Message-ID: <19990921195000.A23938@monk.mps.ohio-state.edu> + + From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: [PATCH 5.005_61] More verbose -Mre=debug + Date: Tue, 21 Sep 1999 22:29:55 -0400 + Message-ID: <19990921222955.A25094@monk.mps.ohio-state.edu> + Branch: cfgperl + ! regcomp.c regexec.c +____________________________________________________________________________ +[ 4214] By: jhi on 1999/09/21 21:08:43 + Log: From: 0000-Admin (0000) + Reply-To: gerberb@zenez.com + To: perl5-porters@perl.org + Subject: [ID 19990921.004] Changes for SCO OpenServer and UnixWare 7 + Date: Tue, 21 Sep 1999 11:07:46 -0600 (MDT) + Message-Id: <199909211707.LAA23611@devsys0.zenez.com> + + (Snipped away the last lines of svr5.sh a la change #3725) + Branch: cfgperl + + hints/svr5.sh + ! Configure MANIFEST config_h.SH hints/sco.sh + Branch: metaconfig + ! U/modified/Cppsym.U U/modified/Oldconfig.U +____________________________________________________________________________ +[ 4213] By: jhi on 1999/09/21 20:48:01 + Log: From: Kragen Sitaker + To: perl5-porters@perl.org + Subject: [ID 19990921.013] accidental list context in perlfaq9 + Date: Tue, 21 Sep 1999 16:27:53 -0400 (EDT) + Reply-To: kragen@pobox.com + Message-Id: <199909212027.QAA03450@kirk.dnaco.net> + Branch: cfgperl + ! pod/perlfaq9.pod +____________________________________________________________________________ +[ 4212] By: jhi on 1999/09/20 19:55:42 + Log: Integrate with Sarathy. + Branch: cfgperl + +> README.Y2K + !> Changes MANIFEST +____________________________________________________________________________ +[ 4211] By: jhi on 1999/09/20 19:44:44 + Log: Rename -Duselfs to -Duselargefiles. We don't need no stnkngbbrvtns. + Branch: cfgperl + ! Configure config_h.SH pod/perldelta.pod + Branch: metaconfig/U/perl + ! use64bits.U uselfs.U uselongdbl.U +____________________________________________________________________________ +[ 4210] By: jhi on 1999/09/20 19:38:26 + Log: Configure -A change: -Afoo=bar is equal to -Aappend:foo=" bar". + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Options.U +____________________________________________________________________________ +[ 4209] By: gsar on 1999/09/20 19:35:39 + Log: integrate cfgperl changes into mainline + Branch: perl + +> lib/unicode/Unicode.html + ! Changes + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH doio.c perl.h pod/perldelta.pod pod/perlfunc.pod +____________________________________________________________________________ +[ 4208] By: gsar on 1999/09/20 18:28:44 + Log: add README.Y2K (from Dominic Dunlop ) + Branch: perl + + README.Y2K + ! MANIFEST +____________________________________________________________________________ +[ 4207] By: jhi on 1999/09/20 11:06:13 + Log: Document -Duselfs, -Duselongdouble, and -Dusemorebits. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4206] By: jhi on 1999/09/20 09:53:15 + Log: Do not test for gccish things in non-gccish platforms. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/compline/ccflags.U +____________________________________________________________________________ +[ 4205] By: jhi on 1999/09/20 09:41:22 + Log: Prompt for uselfs. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH + Branch: metaconfig + ! U/mksample + Branch: metaconfig/U/perl + ! use64bits.U uselfs.U +____________________________________________________________________________ +[ 4204] By: jhi on 1999/09/20 09:09:29 + Log: Add usemorebits and uselfs. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH doio.c perl.h + Branch: metaconfig/U/perl + + uselfs.U usemorebits.U + ! use64bits.U uselongdbl.U +____________________________________________________________________________ +[ 4203] By: jhi on 1999/09/20 07:48:48 + Log: Dethinko. + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4202] By: jhi on 1999/09/20 07:33:32 + Log: Fix a bug in the description of endianness. Reported in + From: "Konovalov, Vadim" + To: perl5-porters@perl.org + Subject: BUG: perldoc -f pack + Date: Mon, 20 Sep 1999 09:43:49 +0400 + Message-ID: <402099F49BEED211999700805FC7359F20D3F5@ru0028exch01.spb.lucent.com> + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4201] By: jhi on 1999/09/20 07:01:26 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/op/args.t + !> (integrate 31 files) +____________________________________________________________________________ +[ 4200] By: gsar on 1999/09/20 03:45:06 + Log: From: Russ Allbery + Date: 19 Aug 1999 04:35:44 -0700 + Message-Id: + Subject: [ID 19990819.002] File::Find error when pruning top-level directories + Branch: perl + ! lib/File/Find.pm +____________________________________________________________________________ +[ 4199] By: gsar on 1999/09/20 03:27:49 + Log: suppress warning (from John Tobey ) + Branch: perl + ! ext/B/B/Terse.pm +____________________________________________________________________________ +[ 4198] By: gsar on 1999/09/20 03:25:25 + Log: add arenas for managing allocations of remaining xpv*v structures + From: Vishal Bhatia + Date: Wed, 25 Aug 1999 00:31:33 +0900 (JST) + Message-ID: + Subject: [PATCH 5.005_60] removing extra ref count (compiler) + Branch: perl + ! embed.h embed.pl embedvar.h ext/B/B/C.pm intrpvar.h objXSUB.h + ! proto.h sv.c +____________________________________________________________________________ +[ 4197] By: gsar on 1999/09/20 03:06:10 + Log: queue errors due to strictures rather than printing them as + warnings; symbols that violate strictures do *not* end up in + the symbol table anyway, making multiple evals of the same piece + of code produce the same errors; errors indicate all locations + of a global symbol rather than just the first one; these + changes make compile-time failures within evals reliably + visible via the return value or contents of $@, and trappable + using __DIE__ hooks + Branch: perl + ! embed.h embed.pl embedvar.h ext/DynaLoader/dlutils.c + ! ext/Thread/Thread.xs global.sym gv.c objXSUB.h op.c perl.c + ! perlapi.c pp_ctl.c proto.h regcomp.c t/pragma/strict-refs + ! t/pragma/strict-vars thrdvar.h toke.c util.c +____________________________________________________________________________ +[ 4196] By: gsar on 1999/09/19 22:14:29 + Log: control change#1914 via hints (causes problems on some platforms) + Branch: perl + ! ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs + ! ext/POSIX/hints/linux.pl +____________________________________________________________________________ +[ 4195] By: gsar on 1999/09/19 21:30:18 + Log: avoid clearing @_ at all for faster subroutine calls; fix bugs + in passing around references to @_, eg C; add + tests for the same + Branch: perl + + t/op/args.t + ! MANIFEST cop.h pp.c pp_ctl.c pp_hot.c +____________________________________________________________________________ +[ 4194] By: jhi on 1999/09/18 18:57:45 + Log: Integrate with Sarathy. + Branch: cfgperl + !> opcode.h opcode.pl +____________________________________________________________________________ +[ 4193] By: nick on 1999/09/18 15:24:56 + Log: Re-integrate mainline + Basic SvUTF8 stuff in headers, no functional changes yet. + Branch: utfperl + + lib/byte.pm lib/byte_heavy.pl + +> ext/B/defsubs_h.PL ext/DB_File/version.c jpl/JNI/Closer.java + +> jpl/JNI/JNIConfig jpl/JNI/JNIConfig.Win32 + +> jpl/JNI/JNIConfig.kaffe jpl/JNI/JNIConfig.noembed + +> jpl/JNI/JNIConfig.standard jpl/JNI/typemap.gcc + +> jpl/JNI/typemap.win32 jpl/SETVARS.PL lib/unicode/ArabShap.txt + +> lib/unicode/Blocks.txt lib/unicode/CompExcl.txt + +> lib/unicode/EAWidth.txt lib/unicode/Index.txt + +> lib/unicode/Jamo-2.txt lib/unicode/LineBrk.txt + +> lib/unicode/Names.txt lib/unicode/Props.txt + +> lib/unicode/ReadMe.txt lib/unicode/SpecCase.txt + +> t/lib/bigfltpm.t + - ext/B/defsubs.h.PL lib/unicode/arabshp.txt + - lib/unicode/blocks.txt lib/unicode/index2.txt + - lib/unicode/jamo2.txt lib/unicode/names2.txt + - lib/unicode/props2.txt lib/unicode/readme.txt + - t/lib/bigfloatpm.t + ! doop.c embed.h embed.pl gv.c mg.c objXSUB.h op.c op.h perl.h + ! perlapi.c pp.c pp_ctl.c pp_hot.c proto.h regcomp.c regcomp.h + ! regexec.c regexp.h regnodes.h sv.c sv.h toke.c utf8.c utf8.h + ! warnings.h + !> (integrate 142 files) +____________________________________________________________________________ +[ 4192] By: gsar on 1999/09/18 15:11:47 + Log: more op description tweaks + Branch: perl + ! opcode.h opcode.pl +____________________________________________________________________________ +[ 4191] By: jhi on 1999/09/18 07:47:16 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes opcode.h opcode.pl t/io/open.t t/op/misc.t + !> t/pragma/warn/op +____________________________________________________________________________ +[ 4190] By: jhi on 1999/09/18 07:35:45 + Log: Add description of the Unicode database files. + Branch: cfgperl + + lib/unicode/Unicode.html +____________________________________________________________________________ +[ 4189] By: gsar on 1999/09/18 03:14:58 + Log: tweak some op names in change#4177 (will any of this break code that + gropes $@ ?) + Branch: perl + ! Changes opcode.h opcode.pl t/io/open.t t/op/misc.t + ! t/pragma/warn/op +____________________________________________________________________________ +[ 4188] By: jhi on 1999/09/17 21:30:08 + Log: Pick up the typo fix. + Branch: cfgperl + !> t/io/open.t +____________________________________________________________________________ +[ 4187] By: gsar on 1999/09/17 21:13:55 + Log: fix typo + Branch: perl + ! t/io/open.t +____________________________________________________________________________ +[ 4186] By: gsar on 1999/09/17 20:57:29 + Log: integrate cfgperl change + Branch: perl + !> vms/subconfigure.com +____________________________________________________________________________ +[ 4185] By: jhi on 1999/09/17 20:46:41 + Log: Re-apply applicable parts of #3993, #3994, and #3995. + Branch: cfgperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 4184] By: gsar on 1999/09/17 20:26:02 + Log: integrate cfgperl contents into mainline + Branch: perl + +> lib/unicode/ArabShap.txt lib/unicode/Blocks.txt + +> lib/unicode/CompExcl.txt lib/unicode/EAWidth.txt + +> lib/unicode/Index.txt lib/unicode/Jamo-2.txt + +> lib/unicode/LineBrk.txt lib/unicode/Names.txt + +> lib/unicode/Props.txt lib/unicode/ReadMe.txt + +> lib/unicode/SpecCase.txt + - lib/unicode/arabshp.txt lib/unicode/blocks.txt + - lib/unicode/index2.txt lib/unicode/jamo2.txt + - lib/unicode/names2.txt lib/unicode/props2.txt + - lib/unicode/readme.txt + !> (integrate 73 files) +____________________________________________________________________________ +[ 4183] By: jhi on 1999/09/17 20:25:51 + Log: Integrate with Sarathy. + Branch: cfgperl + !> configure.com ext/ByteLoader/byterun.h + !> ext/DynaLoader/DynaLoader_pm.PL lib/ExtUtils/MM_VMS.pm + !> lib/File/Spec/VMS.pm pod/perlhist.pod t/io/open.t + !> vms/descrip_mms.template vms/gen_shrfls.pl vms/perly_c.vms + !> vms/perly_h.vms vms/subconfigure.com vms/vms.c vms/vmsish.h +____________________________________________________________________________ +[ 4182] By: gsar on 1999/09/17 20:16:28 + Log: integrate vmsperl contents into mainline (where VMS files conflicted, + vmsperl contents have prevailed) + Branch: perl + !> configure.com ext/ByteLoader/byterun.h + !> ext/DynaLoader/DynaLoader_pm.PL lib/ExtUtils/MM_VMS.pm + !> lib/File/Spec/VMS.pm t/io/open.t vms/descrip_mms.template + !> vms/gen_shrfls.pl vms/perly_c.vms vms/perly_h.vms + !> vms/subconfigure.com vms/vms.c vms/vmsish.h +____________________________________________________________________________ +[ 4181] By: jhi on 1999/09/17 20:12:37 + Log: From: Michael G Schwern + To: perl5-porters@perl.org + Subject: [PATCH 5.005_60 lib/Exporter/Heavy.pm] export_to_level() + Date: Thu, 19 Aug 1999 21:30:01 -0400 + Message-ID: <19990819213001.A22512@athens.aocn.com> + Branch: cfgperl + ! lib/Exporter/Heavy.pm +____________________________________________________________________________ +[ 4180] By: gsar on 1999/09/17 20:11:00 + Log: perlhist additions + Branch: perl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 4179] By: jhi on 1999/09/17 20:08:00 + Log: The change #4176 should've undone only the test, not the code patch. + Branch: cfgperl + ! doio.c +____________________________________________________________________________ +[ 4178] By: jhi on 1999/09/17 20:06:08 + Log: From: Ian Phillipps + To: Hans GINZEL , perl5-porters@perl.org + Subject: [PATCH 5.005_59] Re: [ID 19990820.007] Small typo in perlsyn.pod + Date: Sat, 21 Aug 1999 12:36:12 +0100 + Message-ID: <19990821123612.A9955@homer.diplex.co.uk> + Branch: cfgperl + ! pod/perlsyn.pod +____________________________________________________________________________ +[ 4177] By: jhi on 1999/09/17 20:00:19 + Log: More descriptive names for operators. + + From: Michael G Schwern + To: Ilya Zakharevich + Cc: perl5-porters@perl.org + Subject: Re: [ID 19990817.009] [BUG 5.005_60 & 5.005_03] == reported as eq in + Date: Tue, 17 Aug 1999 18:35:45 -0400 + Message-ID: <19990817183545.A23073@toldyouso.com> + + From: Michael G Schwern + To: perl5-porters@perl.org + Subject: [PATCH 5.005_60 opcode.pl and friends] Improved opcode descriptions + Date: Wed, 18 Aug 1999 03:53:38 -0400 + Message-ID: <19990818035337.A31505@athens.aocn.com> + Branch: cfgperl + ! opcode.h opcode.pl pp.sym pp_proto.h sv.c t/op/misc.t + ! t/pragma/warn/op t/pragma/warn/sv +____________________________________________________________________________ +[ 4176] By: jhi on 1999/09/17 18:19:18 + Log: Take away the infamous io/dup.t #7. + It seems there simply is no way to portably + "flush" an input file handle. + Branch: cfgperl + ! doio.c t/io/dup.t +____________________________________________________________________________ +[ 4175] By: jhi on 1999/09/17 14:45:08 + Log: From: Barrie Slaymaker + To: perl5-porters@perl.org + Subject: [PATCH 5.005_61] Benchmark: screwed patch format, try this instead + Date: Fri, 17 Sep 1999 11:16:48 -0400 + Message-Id: <199909171516.LAA30887@jester.slaysys.com> + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4174] By: jhi on 1999/09/17 14:07:16 + Log: UNICOS does support large files but doesn't support sparse files + so we cannot easily test for large file support. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4173] By: jhi on 1999/09/17 14:03:44 + Log: UNICOS has sloppy division/modulo for floating point numbers. + Branch: cfgperl + ! t/op/arith.t +____________________________________________________________________________ +[ 4172] By: jhi on 1999/09/17 13:47:49 + Log: Portable blocksize (replaces #4171). + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4171] By: jhi on 1999/09/17 13:08:54 + Log: (replaced by #4172) + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4170] By: jhi on 1999/09/17 12:59:11 + Log: Detypo #4169. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4169] By: jhi on 1999/09/17 12:16:34 + Log: Diagnose possible quota limits. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4168] By: jhi on 1999/09/17 12:10:43 + Log: UNICOS doesn't have getpgid(). Or, at least 9.0.1ai + doesn't have one that wouldn't cause SIGSYS. UNICOS + does have getpgrp(void) so Perl getpgrp() is happy. + Branch: cfgperl + ! hints/unicos.sh +____________________________________________________________________________ +[ 4167] By: jhi on 1999/09/17 11:49:30 + Log: Filesystem quotas may stop you from using large files. + Branch: cfgperl + ! pod/perldelta.pod t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4166] By: jhi on 1999/09/17 11:36:01 + Log: Too strict pattern for parsing group lists. + Branch: cfgperl + ! t/op/groups.t +____________________________________________________________________________ +[ 4165] By: jhi on 1999/09/17 09:06:18 + Log: Configure maintenance. It's sigaction.sa_flags + and the Glossary regen'ed. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH + Branch: metaconfig + ! U/compline/d_sigaction.U +____________________________________________________________________________ +[ 4164] By: jhi on 1999/09/15 06:57:51 + Log: Integrate with Sarathy. + Branch: cfgperl + +> jpl/JNI/Closer.java jpl/JNI/JNIConfig jpl/JNI/JNIConfig.Win32 + +> jpl/JNI/JNIConfig.kaffe jpl/JNI/JNIConfig.noembed + +> jpl/JNI/JNIConfig.standard jpl/JNI/typemap.gcc + +> jpl/JNI/typemap.win32 jpl/SETVARS.PL + !> Changes MANIFEST embed.h embed.pl jpl/JNI/JNI.pm + !> jpl/JNI/JNI.xs jpl/JNI/Makefile.PL jpl/JNI/test.pl + !> jpl/JNI/typemap jpl/JPL/Makefile.PL + !> jpl/PerlInterpreter/Makefile.PL + !> jpl/PerlInterpreter/PerlInterpreter.c + !> jpl/PerlInterpreter/PerlInterpreter.h jpl/README + !> jpl/Sample/Makefile.PL jpl/install-jpl + !> lib/File/Spec/Functions.pm pod/perlhist.pod regexec.c + !> t/op/pat.t +____________________________________________________________________________ +[ 4163] By: gsar on 1999/09/15 05:17:27 + Log: add :ALL export tag (from Chris Nandor ) + Branch: perl + ! lib/File/Spec/Functions.pm +____________________________________________________________________________ +[ 4162] By: gsar on 1999/09/15 05:09:14 + Log: addendum to change#4136 (from Robin Barker ) + Branch: perl + ! Changes embed.h embed.pl +____________________________________________________________________________ +[ 4161] By: gsar on 1999/09/15 04:08:25 + Log: missing perlhist dates from Jeff Okamoto + Branch: perl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 4160] By: gsar on 1999/09/15 03:13:08 + Log: jpl tweak + Branch: perl + ! MANIFEST jpl/JNI/Makefile.PL +____________________________________________________________________________ +[ 4159] By: gsar on 1999/09/15 02:57:08 + Log: update to JPL snapshot v09141999, with minor tweaks (from Brian + Jepson ) + Branch: perl + + jpl/JNI/Closer.java jpl/JNI/JNIConfig jpl/JNI/JNIConfig.Win32 + + jpl/JNI/JNIConfig.kaffe jpl/JNI/JNIConfig.noembed + + jpl/JNI/JNIConfig.standard jpl/JNI/typemap.gcc + + jpl/JNI/typemap.win32 jpl/SETVARS.PL + ! jpl/JNI/JNI.pm jpl/JNI/JNI.xs jpl/JNI/Makefile.PL + ! jpl/JNI/test.pl jpl/JNI/typemap jpl/JPL/Makefile.PL + ! jpl/PerlInterpreter/Makefile.PL + ! jpl/PerlInterpreter/PerlInterpreter.c + ! jpl/PerlInterpreter/PerlInterpreter.h jpl/README + ! jpl/Sample/Makefile.PL jpl/install-jpl +____________________________________________________________________________ +[ 4158] By: gsar on 1999/09/15 01:27:14 + Log: From: Ilya Zakharevich + Date: Tue, 14 Sep 1999 21:26:15 EDT + Message-Id: <199909150126.VAA24720@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_58+] Re: [ID 19990914.001] Perl_re_intuit_start() hangs in a loop + Branch: perl + ! regexec.c t/op/pat.t +____________________________________________________________________________ +[ 4157] By: jhi on 1999/09/14 21:18:09 + Log: config.h will define USE_64_BITS if need be. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 4156] By: jhi on 1999/09/14 20:30:00 + Log: Change #4149 necessitates also a small code change. + Branch: cfgperl + ! ext/B/defsubs_h.PL +____________________________________________________________________________ +[ 4155] By: jhi on 1999/09/14 20:15:53 + Log: Update EPOC libdir names. + Branch: cfgperl + ! epoc/config.h +____________________________________________________________________________ +[ 4154] By: jhi on 1999/09/14 20:13:41 + Log: Obsolete epoc/config.h caused #4153 to re-introduce already + deceased HAS.*DBM.*64 mumblings. + Branch: cfgperl + ! Configure config_h.SH epoc/config.h +____________________________________________________________________________ +[ 4153] By: jhi on 1999/09/14 20:04:53 + Log: Configure nits. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/compline/d_sigaction.U U/threads/i_pthread.U +____________________________________________________________________________ +[ 4152] By: jhi on 1999/09/14 19:30:22 + Log: Integrate with Sarathy. + Branch: cfgperl + +> ext/B/defsubs_h.PL t/lib/bigfltpm.t + - ext/B/defsubs.h.PL t/lib/bigfloatpm.t + !> INSTALL MANIFEST ext/B/Makefile.PL pod/perldiag.pod + !> win32/config_sh.PL +____________________________________________________________________________ +[ 4151] By: jhi on 1999/09/14 10:25:01 + Log: Update Unicode database and recompute the tables. + Rename the .txt files to be more Unicode 3.0-like. + Unihan-3.0.txt not included because it is 16 MB. + syllables.txt is manually maintained. + See ReadMe.txt for description of the .txt files. + (not all of them are used yet) + Branch: cfgperl + + lib/unicode/ArabShap.txt lib/unicode/Blocks.txt + + lib/unicode/CompExcl.txt lib/unicode/EAWidth.txt + + lib/unicode/Index.txt lib/unicode/Jamo-2.txt + + lib/unicode/LineBrk.txt lib/unicode/Names.txt + + lib/unicode/Props.txt lib/unicode/ReadMe.txt + + lib/unicode/SpecCase.txt + - lib/unicode/arabshp.txt lib/unicode/blocks.txt + - lib/unicode/index2.txt lib/unicode/jamo2.txt + - lib/unicode/names2.txt lib/unicode/props2.txt + - lib/unicode/readme.txt + ! MANIFEST lib/unicode/ArabLink.pl lib/unicode/ArabLnkGrp.pl + ! lib/unicode/Bidirectional.pl lib/unicode/Block.pl + ! lib/unicode/Category.pl lib/unicode/CombiningClass.pl + ! lib/unicode/Decomposition.pl + ! lib/unicode/In/ArabicPresentationForms-B.pl + ! lib/unicode/In/Specials.pl lib/unicode/In/Tibetan.pl + ! lib/unicode/Is/Alnum.pl lib/unicode/Is/Alpha.pl + ! lib/unicode/Is/BidiCS.pl lib/unicode/Is/BidiL.pl + ! lib/unicode/Is/BidiON.pl lib/unicode/Is/BidiWS.pl + ! lib/unicode/Is/DCcompat.pl lib/unicode/Is/DecoCanon.pl + ! lib/unicode/Is/DecoCompat.pl lib/unicode/Is/L.pl + ! lib/unicode/Is/Ll.pl lib/unicode/Is/Lo.pl + ! lib/unicode/Is/Lower.pl lib/unicode/Is/Lu.pl + ! lib/unicode/Is/Pd.pl lib/unicode/Is/Po.pl lib/unicode/Is/S.pl + ! lib/unicode/Is/Sm.pl lib/unicode/Is/So.pl + ! lib/unicode/Is/Upper.pl lib/unicode/Is/Word.pl + ! lib/unicode/JamoShort.pl lib/unicode/UnicodeData-Latest.txt + ! lib/unicode/mktables.PL +____________________________________________________________________________ +[ 4150] By: gsar on 1999/09/14 09:31:57 + Log: INSTALL tweak + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 4149] By: gsar on 1999/09/14 09:00:45 + Log: change some filenames to be 8.3-friendly + Branch: perl + +> ext/B/defsubs_h.PL t/lib/bigfltpm.t + - ext/B/defsubs.h.PL t/lib/bigfloatpm.t + ! MANIFEST ext/B/Makefile.PL pod/perldiag.pod +____________________________________________________________________________ +[ 4148] By: gsar on 1999/09/14 08:35:00 + Log: win32 config tweak (suggested by Greg Chapman ) + Branch: perl + ! win32/config_sh.PL +____________________________________________________________________________ +[ 4147] By: jhi on 1999/09/14 08:07:49 + Log: Not that UVSIZE normally differs that much from IVSIZE... + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4146] By: jhi on 1999/09/14 08:04:40 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes ext/DB_File/DB_File.xs +____________________________________________________________________________ +[ 4145] By: jhi on 1999/09/14 07:10:02 + Log: I_PTHREAD was PTHREADEAD. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/threads/i_pthread.U +____________________________________________________________________________ +[ 4144] By: gsar on 1999/09/14 06:46:47 + Log: change#4113 was missing DB_File.xs changes + Branch: perl + ! ext/DB_File/DB_File.xs +____________________________________________________________________________ +[ 4143] By: jhi on 1999/09/13 20:16:20 + Log: Small doc and whitespace edits. + Branch: cfgperl + ! ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_beos.xs + ! ext/DynaLoader/dl_cygwin.xs ext/DynaLoader/dl_dld.xs + ! ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_mpeix.xs + ! ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_rhapsody.xs + ! ext/DynaLoader/dl_vmesa.xs ext/DynaLoader/dl_vms.xs + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4142] By: gsar on 1999/09/13 19:32:31 + Log: integrate cfgperl contents into mainline, update Changes + Branch: perl + +> ext/DB_File/version.c + ! Changes + !> (integrate 44 files) +____________________________________________________________________________ +[ 4141] By: jhi on 1999/09/13 16:16:56 + Log: Scan for always. + Branch: cfgperl + ! Configure config_h.SH perl.h + Branch: metaconfig + ! U/threads/i_pthread.U +____________________________________________________________________________ +[ 4140] By: jhi on 1999/09/13 16:00:08 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 27 files) +____________________________________________________________________________ +[ 4139] By: jhi on 1999/09/13 15:35:18 + Log: Add -A option to Configure to diddle with variables + after the hints file has been applied. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/Oldconfig.U U/modified/Options.U +____________________________________________________________________________ +[ 4138] By: jhi on 1999/09/13 13:42:56 + Log: Change #4136 edited DynaLoader.xs which is kind of fruitless. + Branch: cfgperl + ! ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_beos.xs + ! ext/DynaLoader/dl_cygwin.xs ext/DynaLoader/dl_dld.xs + ! ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_mpeix.xs + ! ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_rhapsody.xs + ! ext/DynaLoader/dl_vmesa.xs ext/DynaLoader/dl_vms.xs +____________________________________________________________________________ +[ 4137] By: jhi on 1999/09/13 13:25:31 + Log: Applying change #4136 manually introduced patch residue. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4136] By: jhi on 1999/09/13 13:23:04 + Log: Replace change #4100 with + From: Robin Barker + To: gsar@activestate.com + Cc: perl5-porters@perl.org + Subject: Re: [ID 19990907.004] [PATCH perl5.005_61] compiler warnings with -Duse64bits + Date: Mon, 13 Sep 1999 14:15:11 +0100 (BST) + Message-Id: <199909131315.OAA24012@tempest.npl.co.uk> + Branch: cfgperl + ! doio.c dump.c ext/B/B.xs ext/B/typemap + ! ext/ByteLoader/bytecode.h ext/Devel/DProf/DProf.xs + ! ext/DynaLoader/dl_dlopen.xs ext/ODBM_File/ODBM_File.xs + ! ext/POSIX/POSIX.xs lib/ExtUtils/typemap malloc.c perl.h pp.c + ! pp_ctl.c pp_hot.c pp_sys.c sv.c +____________________________________________________________________________ +[ 4135] By: jhi on 1999/09/13 10:22:31 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_61] MakeMaker supports uninstalled Perls + Date: Sat, 11 Sep 1999 05:31:03 -0400 (EDT) + Message-Id: <199909110931.FAA11036@monk.mps.ohio-state.edu> + + From: andreas.koenig@anima.de (Andreas J. Koenig) + To: Ilya Zakharevich + Cc: perl5-porters@perl.org (Mailing list Perl5) + Subject: Re: [PATCH 5.005_61] MakeMaker supports uninstalled Perls + Date: 11 Sep 1999 15:36:26 +0200 + Message-ID: + Branch: cfgperl + ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 4134] By: jhi on 1999/09/13 10:20:14 + Log: From: Tom Phoenix + To: Perl Porters Mailing List + Subject: [DOCPATCH] Server errors and perldiag + Date: Fri, 10 Sep 1999 16:45:02 -0700 (PDT) + Message-ID: + Branch: cfgperl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 4133] By: gsar on 1999/09/13 03:25:43 + Log: avoid assertion failure on C<@a'> + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 4132] By: gsar on 1999/09/13 03:03:57 + Log: add -DPERL_Y2KWARN build option that will generate additional + warnings on "19$yy" etc (reworked a patch suggested by + Ulrich Pfeifer ) + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod pod/perllexwarn.pod + ! pp_hot.c sv.c t/pragma/warn/pp_hot t/pragma/warn/sv +____________________________________________________________________________ +[ 4131] By: gsar on 1999/09/12 22:06:25 + Log: fix DATA leaks; reword documentation about the DATA filehandle + Branch: perl + ! ext/Opcode/Safe.pm lib/Pod/Functions.pm pod/perldata.pod +____________________________________________________________________________ +[ 4130] By: gsar on 1999/09/12 20:08:56 + Log: make sprintf("%g",...) threadsafe; only taint its result iff the + formatted result looks nonstandard + Branch: perl + ! embed.pl embedvar.h intrpvar.h objXSUB.h perl.c perlapi.c + ! pod/perlfunc.pod pod/perlguts.pod proto.h sv.c + ! t/pragma/locale.t thrdvar.h +____________________________________________________________________________ +[ 4129] By: gsar on 1999/09/12 17:04:11 + Log: From: Doug MacEachern + Date: Sun, 25 Jul 1999 15:49:00 -0700 (PDT) + Message-ID: + Subject: [PATCH 5.005_57] B::clearsym + Branch: perl + ! ext/B/B.pm ext/B/B/Bblock.pm ext/B/B/Debug.pm ext/B/B/Terse.pm +____________________________________________________________________________ +[ 4128] By: gsar on 1999/09/12 16:59:12 + Log: better debugger help output (from Ilya Zakharevich) + Branch: perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 4127] By: jhi on 1999/09/11 20:50:37 + Log: Integrate with Sarathy. + Branch: cfgperl + +> pod/perlcompile.pod t/lib/gol-basic.t t/lib/gol-compat.t + +> t/lib/gol-linkage.t + !> (integrate 43 files) +____________________________________________________________________________ +[ 4126] By: nick on 1999/09/10 20:44:22 + Log: Get resolve -at mainline + Branch: utfperl + +> (branch 297 files) + - README.cygwin32 XSlock.h bytecode.h byterun.c byterun.h + - cygwin32/cw32imp.h cygwin32/gcc2 cygwin32/ld2 cygwin32/perlgcc + - cygwin32/perlld ext/B/byteperl.c ext/DynaLoader/dl_cygwin32.xs + - hints/cygwin32.sh interp.sym myconfig objpp.h perl_exp.SH + - t/pragma/warn-1global t/pragma/warning.t thread.sym + - win32/GenCAPI.pl win32/TEST win32/autosplit.pl + - win32/bin/network.pl win32/bin/webget.pl win32/bin/www.pl + - win32/genxsdef.pl win32/makedef.pl win32/makemain.pl + - win32/makeperldef.pl win32/perlhost.h + !> (integrate 847 files) +____________________________________________________________________________ +[ 4125] By: gsar on 1999/09/10 19:22:14 + Log: s/dXS_TARGET/dXSTARG/ in change#4044 (to match dARGS vs dXSARGS + etc.) + Branch: perl + ! XSUB.h pp.h +____________________________________________________________________________ +[ 4124] By: gsar on 1999/09/10 19:14:35 + Log: rewrote substantive parts of patch + From: Ilya Zakharevich + Date: Fri, 27 Aug 1999 19:02:18 -0400 + Message-ID: <19990827190218.A19561@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_58] REx documentation + Branch: perl + ! pod/perlre.pod +____________________________________________________________________________ +[ 4123] By: gsar on 1999/09/10 18:21:53 + Log: note about AVf_* + Branch: perl + ! av.h +____________________________________________________________________________ +[ 4122] By: gsar on 1999/09/10 17:55:42 + Log: allow 'text' in L (from Martin Lichtin + ) + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 4121] By: gsar on 1999/09/10 17:49:35 + Log: dos-djgpp update (from Laszlo Molnar ) + Branch: perl + ! AUTHORS Changes README.dos djgpp/config.over + ! djgpp/configure.bat djgpp/djgpp.c djgpp/djgppsed.sh dosish.h + ! lib/ExtUtils/MM_Unix.pm pod/pod2usage.PL pod/podchecker.PL + ! pod/podselect.PL sv.h t/io/openpid.t util.c +____________________________________________________________________________ +[ 4120] By: gsar on 1999/09/10 12:25:01 + Log: add perlcompile.pod (edited content from Nathan Torkington + and others) + Branch: perl + + pod/perlcompile.pod + ! MANIFEST pod/Makefile pod/buildtoc pod/perl.pod pod/roffitall +____________________________________________________________________________ +[ 4119] By: gsar on 1999/09/10 11:05:13 + Log: avoid leaking static local_patches unless patchlevel.h is + explicitly included + Branch: perl + ! patchlevel.h perl.c +____________________________________________________________________________ +[ 4118] By: gsar on 1999/09/10 10:44:54 + Log: upgrade to Getopt::Long v2.20 (from Johan Vromans + ) + Branch: perl + + t/lib/gol-basic.t t/lib/gol-compat.t t/lib/gol-linkage.t + ! Changes MANIFEST lib/Getopt/Long.pm +____________________________________________________________________________ +[ 4116] By: jhi on 1999/09/09 15:56:52 + Log: perldeltify change #4115. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4115] By: jhi on 1999/09/09 15:48:56 + Log: From: "John L. Allen" + To: perl5-porters@perl.org + Subject: [ID 19990901.003] Time::Local should not croak on "out-of-range" days + Date: Wed, 1 Sep 1999 13:33:39 -0400 (EDT) + Message-Id: <199909011733.NAA17356@gateway.grumman.com> + Branch: cfgperl + ! lib/Time/Local.pm +____________________________________________________________________________ +[ 4114] By: jhi on 1999/09/09 15:42:30 + Log: From: "Daniel S. Lewart" + To: perl5-porters@perl.org + Subject: [ID 19990909.003] MAXINT redefined warning on HP-UX 10.20 + Date: Thu, 9 Sep 1999 10:33:37 -0500 (CDT) + Message-Id: <199909091533.KAA01242@www.cvm.uiuc.edu> + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 4113] By: jhi on 1999/09/09 10:17:45 + Log: From: paul.marquess@bt.com + To: gsar@ActiveState.com + Cc: perl5-porters@perl.org + Subject: [PATCH 5.005_61] DB_File 1.71 + Date: Thu, 9 Sep 1999 11:20:13 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB202D49BBE@mbtlipnt02.btlabs.bt.co.uk> + Branch: cfgperl + + ext/DB_File/version.c + ! MANIFEST ext/DB_File/Changes ext/DB_File/DB_File.pm + ! ext/DB_File/Makefile.PL ext/DB_File/dbinfo ext/DB_File/typemap + ! t/lib/db-btree.t +____________________________________________________________________________ +[ 4112] By: jhi on 1999/09/09 09:05:32 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_58] Fix interaction of (?p{}) and (?>) + Date: Thu, 9 Sep 1999 04:40:11 -0400 (EDT) + Message-Id: <199909090840.EAA26471@monk.mps.ohio-state.edu> + Branch: cfgperl + ! regexec.c t/op/pat.t +____________________________________________________________________________ +[ 4110] By: jhi on 1999/09/09 07:29:17 + Log: Tidy up 64-bit situation in perldelta. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 4109] By: jhi on 1999/09/09 07:26:53 + Log: Clear up PL_regcc issues. + + From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_60] Another regexec.c unobfuscation + Date: Thu, 9 Sep 1999 02:49:49 -0400 (EDT) + Message-Id: <199909090649.CAA26119@monk.mps.ohio-state.edu> + Branch: cfgperl + ! regexec.c +____________________________________________________________________________ +[ 4108] By: gsar on 1999/09/08 20:52:51 + Log: avoid ass_u_ming uppercase types are not user objects (spotted + by Kurt Starsinic) + Branch: perl + ! ext/Data/Dumper/Dumper.pm +____________________________________________________________________________ +[ 4107] By: gsar on 1999/09/08 20:35:18 + Log: From: akim@epita.fr (DEMAILLE Akim) + Date: Wed, 8 Sep 1999 18:18:44 +0200 (CEST) + Message-Id: + Subject: [ID 19990908.014] s2p does not quote @ + Branch: perl + ! x2p/s2p.PL +____________________________________________________________________________ +[ 4106] By: gsar on 1999/09/08 20:25:12 + Log: integrate cfgperl contents into mainline + Branch: perl + !> (integrate 30 files) +____________________________________________________________________________ +[ 4105] By: jhi on 1999/09/08 09:02:37 + Log: Minor touches at the [:class:] description. + Branch: cfgperl + ! pod/perlre.pod +____________________________________________________________________________ +[ 4104] By: jhi on 1999/09/08 08:57:58 + Log: From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: [PATCH 5.005_58] Fix debugging output for REx + Date: Wed, 8 Sep 1999 05:02:02 -0400 + Message-ID: <19990908050201.A17682@monk.mps.ohio-state.edu> + Branch: cfgperl + ! regcomp.c +____________________________________________________________________________ +[ 4103] By: gsar on 1999/09/08 00:53:50 + Log: fix memory leak in C + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 4102] By: gsar on 1999/09/08 00:52:50 + Log: fix memory leak in C + Branch: perl + ! cop.h pp_hot.c +____________________________________________________________________________ +[ 4101] By: gsar on 1999/09/07 17:25:07 + Log: various fixups for windows + Branch: perl + ! embed.h embed.pl objXSUB.h op.c perlapi.c proto.h + ! win32/Makefile win32/makefile.mk xsutils.c +____________________________________________________________________________ +[ 4100] By: jhi on 1999/09/07 12:49:15 + Log: Fix pointer casts. + + From: Robin Barker + To: perl5-porters@perl.org + Subject: [ID 19990907.004] [PATCH perl5.005_61] compiler warnings with + -Duse64bits + Date: Tue, 7 Sep 1999 12:30:18 +0100 (BST) + Message-Id: <199909071130.MAA11435@tempest.npl.co.uk> + Branch: cfgperl + ! doio.c dump.c ext/B/B.xs ext/B/typemap + ! ext/ByteLoader/bytecode.h ext/Devel/DProf/DProf.xs + ! ext/DynaLoader/dl_dlopen.xs ext/ODBM_File/ODBM_File.xs + ! ext/POSIX/POSIX.xs lib/ExtUtils/typemap malloc.c perl.h pp.c + ! pp_ctl.c pp_hot.c pp_sys.c sv.c +____________________________________________________________________________ +[ 4099] By: jhi on 1999/09/07 10:29:04 + Log: Add sig/pid/uid size and sign probes. + Branch: metaconfig + + U/typedefs/gidsign.U U/typedefs/gidsize.U U/typedefs/pidsign.U + + U/typedefs/pidsize.U U/typedefs/uidsign.U U/typedefs/uidsize.U +____________________________________________________________________________ +[ 4098] By: jhi on 1999/09/07 10:27:06 + Log: Band-aid until we've got %{Uid_t} or something similar + for sv_catpvfn(). + Branch: cfgperl + ! taint.c +____________________________________________________________________________ +[ 4097] By: jhi on 1999/09/07 09:41:23 + Log: Fix a printf thinko: now quads must have the ll L q prefix. + (in other words, a bare %d is an int/unsigned) + Branch: cfgperl + ! pp_sys.c sv.c t/op/64bit.t +____________________________________________________________________________ +[ 4096] By: jhi on 1999/09/07 07:36:17 + Log: HP-UX 10.20 and gcc 2.8.1 break UINT32_MAX. + + From: "Daniel S. Lewart" + To: perl5-porters@perl.org + Subject: [ID 19990906.007] Not OK: perl 5.00561 on PA-RISC1.1 10.20 + Date: Mon, 6 Sep 1999 21:18:12 -0500 (CDT) + Message-Id: <199909070218.VAA29232@www.cvm.uiuc.edu> + Branch: cfgperl + ! hints/hpux.sh perl.h +____________________________________________________________________________ +[ 4095] By: gsar on 1999/09/06 20:47:02 + Log: applied suggested patch with suitable test to detect MSVC + From: "Vishal Bhatia" + Date: Wed, 11 Aug 1999 01:43:28 -0700 + Message-ID: + Subject: compiler on win32 + Branch: perl + ! ext/B/B/C.pm +____________________________________________________________________________ +[ 4094] By: jhi on 1999/09/06 20:34:44 + Log: Integrate with Sarathy. + Branch: cfgperl + !> ext/B/B/Bytecode.pm lib/Test/Harness.pm t/TEST t/UTEST + !> t/harness t/pragma/sub_lval.t utils/Makefile utils/perlcc.PL +____________________________________________________________________________ +[ 4093] By: jhi on 1999/09/06 20:33:43 + Log: Fix UV_SIZEOF to UVSIZE; change the overflow tests + so that they overflow also on 64-bit platforms. + Branch: cfgperl + ! t/pragma/warn/toke t/pragma/warn/util toke.c util.c +____________________________________________________________________________ +[ 4092] By: gsar on 1999/09/06 20:16:58 + Log: support bytecode and C backends in perlcc (patch suggested + by Tom Hughes ); s/-opt/-noopt/ and make the + C backend the default; describe new switches in pod; introduce + PERLCC_OPTS and s/COMPILE_TIMEOUT/PERLCC_TIMEOUT/; + s/COMPILE_TEST/HARNESS_COMPILE_TEST/; document these %ENV + entries + Branch: perl + ! ext/B/B/Bytecode.pm lib/Test/Harness.pm t/TEST t/UTEST + ! t/harness utils/Makefile utils/perlcc.PL +____________________________________________________________________________ +[ 4091] By: jhi on 1999/09/06 19:10:41 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/pragma/sub_lval.t + !> (integrate 52 files) +____________________________________________________________________________ +[ 4090] By: gsar on 1999/09/06 19:09:06 + Log: propagate changed error text + Branch: perl + ! t/pragma/sub_lval.t +____________________________________________________________________________ +[ 4089] By: gsar on 1999/09/06 18:54:43 + Log: sprintf doc tweak (from Ian Phillipps ) + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4088] By: gsar on 1999/09/06 18:52:10 + Log: From: paul.marquess@bt.com + Date: Sun, 5 Sep 1999 15:11:08 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB202D49BAB@mbtlipnt02.btlabs.bt.co.uk> + Subject: [PATCH 5.005_61] Another patch for Lexical Warnings + Branch: perl + ! pp_sys.c t/pragma/warn/doio t/pragma/warn/op + ! t/pragma/warn/pp_hot t/pragma/warn/pp_sys + ! t/pragma/warn/regcomp t/pragma/warn/sv t/pragma/warn/toke + ! t/pragma/warn/universal t/pragma/warn/utf8 t/pragma/warn/util + ! toke.c +____________________________________________________________________________ +[ 4087] By: gsar on 1999/09/06 18:06:06 + Log: change#3612 is buggy when quotemeta argument matches target + (hope this is the last of the optimized-OP_SASSIGN bugs) + From: Ilya Zakharevich + Date: Sun, 5 Sep 1999 06:07:42 -0400 (EDT) + Message-Id: <199909051007.GAA06423@monk.mps.ohio-state.edu> + Subject: Re: [BUG: quotemeta] + Branch: perl + ! Changes op.c t/op/lex_assign.t +____________________________________________________________________________ +[ 4086] By: gsar on 1999/09/06 17:57:52 + Log: misc tweaks + Branch: perl + ! bytecode.pl ext/ByteLoader/byterun.h pod/perlsyn.pod toke.c +____________________________________________________________________________ +[ 4085] By: gsar on 1999/09/06 03:54:23 + Log: applied patch suggested by Hans Mulder to fix problems on + OPENSTEP-Mach; be more careful about PERL_POLLUTE_MALLOC + when they ask for bincompat (platforms that used to default + to EMBEDMYMALLOC continue to do so); disable warnings.t#192 + (appears unsalvageable on some platforms) + Branch: perl + ! embed.h embed.pl handy.h perl.h pp_sys.c t/pragma/warn/pp_hot +____________________________________________________________________________ +[ 4084] By: bailey on 1999/09/06 02:39:11 + Log: Integrate mainline 5.05_61 + Branch: vmsperl + +> (branch 32 files) + - lib/unicode/EthiopicSyllables.txt + - lib/unicode/MakeEthiopicSyllables.PL t/pragma/warning.t + - warning.pl + ! vms/descrip_mms.template vms/gen_shrfls.pl vms/perly_c.vms + ! vms/perly_h.vms vms/vms.c + !> (integrate 346 files) +____________________________________________________________________________ +[ 4083] By: gsar on 1999/09/06 00:10:40 + Log: optional warning on join(/foo/...) (reworked suggested patch + by Mark-Jason Dominus ) + Branch: perl + ! embed.h objXSUB.h op.c opcode.h opcode.pl perlapi.c + ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod pp.sym + ! pp_proto.h t/pragma/warn/op +____________________________________________________________________________ +[ 4082] By: gsar on 1999/09/05 22:28:57 + Log: fix data loss when more than one block is read from SDBM + *.dir file (suggested by Uwe Ohse ) + Branch: perl + ! ext/SDBM_File/sdbm/sdbm.c +____________________________________________________________________________ +[ 4081] By: gsar on 1999/09/05 22:07:18 + Log: initial implementation of lvalue subroutines (slightly fixed + version of patch suggested by Ilya Zakharevich, which in turn + is based on the one suggested by Tuomas J. Lukka ) + Branch: perl + + t/pragma/sub_lval.t + ! MANIFEST cop.h cv.h dump.c embed.h ext/Opcode/Opcode.pm + ! ext/attrs/attrs.pm ext/attrs/attrs.xs global.sym objXSUB.h + ! op.c op.h opcode.h opcode.pl opnames.h perlapi.c + ! pod/perldiag.pod pod/perlsub.pod pp.c pp.sym pp_hot.c + ! pp_proto.h proto.h t/pragma/warn/pp_ctl +____________________________________________________________________________ +[ 4080] By: jhi on 1999/09/05 22:02:18 + Log: Undo #4055 (related to #4079). + Branch: cfgperl + ! pod/perlop.pod +____________________________________________________________________________ +[ 4079] By: jhi on 1999/09/05 21:30:54 + Log: Time is not yet ripe. + Branch: cfgperl + ! pod/perldelta.pod pod/perlop.pod pp.c t/op/64bit.t t/op/misc.t +____________________________________________________________________________ +[ 4078] By: gsar on 1999/09/05 18:17:32 + Log: modified suggested patch to handle cross-refs and qr// objects + correctly; unfollowed refs are represented as simple string + value, not just the bare type; $VERSION stays the same until + it is ready for prime time (avoids CPAN confustication) + From: John Nolan + Date: Wed, 04 Aug 1999 20:21:10 EDT + Message-Id: <199908050021.UAA09693@monet.op.net> + Subject: [ID 19990804.006] [PATCH]5.005_60 (Data::Dumper) - implements Maxdepth setting + Branch: perl + ! Changes ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm + ! ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Todo t/lib/dumper.t +____________________________________________________________________________ +[ 4077] By: jhi on 1999/09/04 21:54:42 + Log: timesum() wasn't @EXPORTed as promised by the documentation. + Bug reported by Alex Efros . + Branch: cfgperl + ! lib/Benchmark.pm +____________________________________________________________________________ +[ 4076] By: gsar on 1999/09/04 20:21:59 + Log: integrate cfgperl contents into mainline + Branch: perl + +> lib/attributes.pm lib/warnings.pm t/lib/attrs.t t/op/attrs.t + +> t/pragma/warn/7fatal t/pragma/warn/8signal t/pragma/warnings.t + +> warnings.h warnings.pl xsutils.c + - lib/warning.pm t/pragma/warning.t warning.h warning.pl + !> (integrate 109 files) +____________________________________________________________________________ +[ 4075] By: jhi on 1999/09/04 18:04:47 + Log: use integer on the problematic subtest. + Branch: cfgperl + ! t/op/misc.t +____________________________________________________________________________ +[ 4074] By: jhi on 1999/09/04 17:57:40 + Log: Warn about numconvert.t in case somebody + wants to make sv_2pv more 64-bit aware. + Branch: cfgperl + ! sv.c +____________________________________________________________________________ +[ 4073] By: jhi on 1999/09/04 17:54:51 + Log: Comment upgrading: the quad situation isn't quite as + bad as it used to be. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4072] By: jhi on 1999/09/04 15:35:37 + Log: Integrate with Sarathy. + Branch: cfgperl + !> win32/win32.c +____________________________________________________________________________ +[ 4071] By: jhi on 1999/09/04 15:28:11 + Log: Fix LFS with -Duseperlio in Solaris. Reported in + + From: Robin Barker + To: perl5-porters@perl.org + Subject: [ID 19990823.009] [PATCH perl5.005_61] typo in perl.h + Date: Mon, 23 Aug 1999 16:41:11 +0100 (BST) + Message-Id: <199908231541.QAA10043@tempest.npl.co.uk> + + and later (in private email) found to be dependent + on useperlio. + + Mental note: the cpp magic done in perlsdio.h (and assumedly + also in perlsfio.h) may cause trouble later with lfs because + both the perlio scheme by Perl and the lfs support by vendors + like to play cpp games to map the stdio namespace back and forth. + The problem fixed here (fseek vs fseeko, ftell vs ftello) may be + just the beginning. + Branch: cfgperl + ! perlio.c +____________________________________________________________________________ +[ 4070] By: jhi on 1999/09/04 13:12:14 + Log: Enable 64-bit clean bit ops. + (Disables the t/op/misc.t substest 3 in 64-bit platforms.) + Branch: cfgperl + ! pod/perldelta.pod pod/perlop.pod pp.c pp_hot.c t/op/64bit.t + ! t/op/misc.t +____________________________________________________________________________ +[ 4069] By: jhi on 1999/09/03 21:17:30 + Log: Turn on USE_64_BIT_OFFSETS implicitly. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4068] By: jhi on 1999/09/03 08:19:59 + Log: Fix from Spider for the sub attributes (there was an undocumented + dependency between force_word() and skipspace()). + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 4067] By: jhi on 1999/09/01 23:17:06 + Log: From: John Tobey + To: ilya@math.ohio-state.edu + CC: perl5-porters@perl.org + Subject: Re: [PATCH 5.005_60] distclean forgot two + Date: Mon, 23 Aug 1999 02:10:11 -0400 (EDT) + Message-Id: + Branch: cfgperl + ! t/lib/dprof.t +____________________________________________________________________________ +[ 4066] By: jhi on 1999/09/01 23:14:50 + Log: From: "Fifer, Eric" + To: perl5-porters@perl.org + Subject: [ID 19990821.001] [PATCH] perl5.005_60 cygwin port + Date: Fri, 20 Aug 1999 15:37:27 +0100 + Message-Id: <8A160D637356D311BC4300600849EC8122E217@POST> + Branch: cfgperl + ! cygwin/Makefile.SHs ext/ByteLoader/byterun.h + ! ext/SDBM_File/sdbm/sdbm.c hints/cygwin.sh perl.h pp_sys.c + ! t/io/fs.t t/io/tell.t t/lib/anydbm.t t/op/stat.t +____________________________________________________________________________ +[ 4065] By: jhi on 1999/09/01 22:06:43 + Log: From: Dominic Dunlop + To: perl5-porters@perl.org + Subject: [ID 19990819.001] Not OK: perl 5.00560 on powerpc-machten 4.1.1 + (UNINSTALLED) [PATCH] + Date: Thu, 19 Aug 1999 09:48:03 +0200 + Message-Id: + + The PERL_POLLUTE_MALLOC part had to be manually applied. + Branch: cfgperl + ! hints/machten.sh perl.h +____________________________________________________________________________ +[ 4064] By: jhi on 1999/09/01 13:56:14 + Log: From: Martin Lichtin + To: jhi@iki.fi + CC: perl5-porters@perl.org + Subject: Re: [ID 19990829.001] ExtUtils::Install.pm, minor umask problem + Date: Wed, 01 Sep 1999 15:50:04 +0200 + Message-ID: <37CD2F0C.944BFACE@bivio.com> + Branch: cfgperl + ! lib/ExtUtils/Install.pm +____________________________________________________________________________ +[ 4063] By: jhi on 1999/09/01 13:16:11 + Log: Enhance lfs tests: check every seek and sysseek + and test also that -e and -f detect largefiles. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 4062] By: jhi on 1999/09/01 12:08:04 + Log: From: Colin Kuskie + To: Ronald J Kimball + cc: "M.J.T. Guy" , + The Perl Porters Mailing List + Subject: [REPATCH 5.005_61] Re: perldiag.pod omissions + Date: Tue, 31 Aug 1999 11:24:31 -0700 (PDT) + Message-ID: + Branch: cfgperl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 4061] By: jhi on 1999/09/01 12:03:03 + Log: From: Ilya Zakharevich + To: ilya@math.ohio-state.edu (Ilya Zakharevich) + Cc: perl5-porters@perl.org, cloos@adamsmith.ai + Subject: Re: [ID 19990830.005] Assigning value of an op on an SV to said SV + Date: Wed, 1 Sep 1999 02:56:06 -0400 (EDT) + Message-Id: <199909010656.CAA04478@monk.mps.ohio-state.edu> + Branch: cfgperl + ! op.c t/op/join.t +____________________________________________________________________________ +[ 4060] By: jhi on 1999/09/01 07:59:42 + Log: IV_DIG and NV_DIG fixes. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4059] By: jhi on 1999/08/31 14:47:18 + Log: \C{} -> \N{} residue. + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 4057] By: gsar on 1999/08/30 22:08:19 + Log: avoid hiding child process window + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 4055] By: jhi on 1999/08/30 21:20:50 + Log: Document the undefinedness of overshifting. + Branch: cfgperl + ! pod/perlop.pod +____________________________________________________________________________ +[ 4054] By: jhi on 1999/08/30 20:18:18 + Log: History fixes and updates. + Branch: cfgperl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 4053] By: jhi on 1999/08/30 19:34:02 + Log: Shell quoting thinko broke installdirs. + From: JVromans@Squirrel.nl (Johan Vromans) + To: perl5-porters@perl.org + Subject: [ID 19990830.001] 5.005_61 Configure does not substitute + installprefix + Date: Mon, 30 Aug 1999 16:10:10 +0200 (MEST) + Message-Id: <14282.37058.934928.805633@plume.nl.compuware.com> + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/installdirs/archlib.U U/installdirs/bin.U + ! U/installdirs/html1dir.U U/installdirs/html3dir.U + ! U/installdirs/installprefix.U U/installdirs/man1dir.U + ! U/installdirs/man3dir.U U/installdirs/privlib.U + ! U/installdirs/scriptdir.U U/installdirs/sitearch.U + ! U/installdirs/sitebin.U U/installdirs/sitehtml1dir.U + ! U/installdirs/sitehtml3dir.U U/installdirs/sitelib.U + ! U/installdirs/siteman1dir.U U/installdirs/siteman3dir.U + ! U/installdirs/sitescriptdir.U U/installdirs/vendorarch.U + ! U/installdirs/vendorbin.U U/installdirs/vendorhtml1dir.U + ! U/installdirs/vendorhtml3dir.U U/installdirs/vendorlib.U + ! U/installdirs/vendorman1dir.U U/installdirs/vendorman3dir.U + ! U/installdirs/vendorscriptdir.U +____________________________________________________________________________ +[ 4052] By: jhi on 1999/08/30 02:57:05 + Log: Use \N{named characters} instead of \C. + From: Ilya Zakharevich + To: jhi@iki.fi + Cc: larry@wall.org (Larry Wall), Tim.Bunce@ig.co.uk (Tim Bunce), + perl5-porters@perl.org (Mailing list Perl5) + Subject: Re: [PATCH 5.005_58] Named characters in Perl + Date: Sun, 29 Aug 1999 16:46:53 -0400 (EDT) + Message-Id: <199908292046.QAA05510@monk.mps.ohio-state.edu> + Branch: cfgperl + ! lib/charnames.pm lib/utf8.pm pod/perldiag.pod pod/perlop.pod + ! pod/perlre.pod regcomp.c t/lib/charnames.t toke.c +____________________________________________________________________________ +[ 4051] By: jhi on 1999/08/30 02:54:20 + Log: From: Spider Boardman + To: perl5-porters@perl.org + Subject: [ID 19990829.004] Autoloaded &VERSION and UNIVERSAL::VERSION + don't mix + Date: Sun, 29 Aug 1999 19:04:53 -0400 + Message-Id: <199908292304.TAA13738@Orb.Nashua.NH.US> + Branch: cfgperl + ! universal.c +____________________________________________________________________________ +[ 4050] By: jhi on 1999/08/29 16:38:58 + Log: Conditionally socksify the LIBS of Socket. + Branch: cfgperl + ! ext/Socket/Makefile.PL +____________________________________________________________________________ +[ 4049] By: jhi on 1999/08/29 15:33:30 + Log: From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: Re: [PATCH 5.005_60] fix @DB::typeahead + Date: Wed, 25 Aug 1999 16:19:58 -0400 + Message-ID: <19990825161958.A4658@monk.mps.ohio-state.edu> + Branch: cfgperl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 4048] By: jhi on 1999/08/29 15:31:36 + Log: From: Stephen McCamant + To: perl5-porters@perl.org + Subject: [PATCH _61] Lost arguments to simplified sort + Date: Wed, 25 Aug 1999 23:22:32 -0700 (PDT) + Message-ID: <14276.56616.879390.562685@metonymy.hip.berkeley.edu> + Branch: cfgperl + ! op.c t/op/sort.t +____________________________________________________________________________ +[ 4047] By: jhi on 1999/08/29 15:29:29 + Log: From: Olaf Flebbe + Sender: owner-perl5-porters@perl.org + To: perl5-porters@perl.org + Subject: [ID 19990827.003] [PATCH]5.005_60 Patch for EPOC Support + Date: Fri, 27 Aug 1999 21:50:41 +0200 (MEST) + Branch: cfgperl + ! README.epoc epoc/config.h epoc/epoc.c epoc/epocish.h + ! epoc/perl.mmp epoc/perl.pkg +____________________________________________________________________________ +[ 4046] By: jhi on 1999/08/29 15:21:18 + Log: From: pvhp@forte.com (Peter Prymmer) + To: perl5-porters@perl.org + Subject: [PATCH: 5.005_61] an EBCDIC friendly cgi-html.t test + Date: Fri, 27 Aug 99 18:51:04 PDT + Message-Id: <9908280151.AA05010@forte.com> + Branch: cfgperl + ! t/lib/cgi-html.t +____________________________________________________________________________ +[ 4045] By: jhi on 1999/08/29 15:18:38 + Log: Fix scalar gmtime (and localtime) in quad environments, + bug reported by Robin Parker. + + From: Robin Barker + To: jhi@iki.fi + Cc: perl5-porters@perl.org + Subject: Re: [ID 19990823.009] [PATCH perl5.005_61] typo in perl.h + Date: Tue, 24 Aug 1999 11:09:24 +0100 (BST) + Message-Id: <199908241009.LAA24394@tempest.npl.co.uk> + Branch: cfgperl + ! pp_sys.c t/op/time.t +____________________________________________________________________________ +[ 4044] By: jhi on 1999/08/29 11:24:03 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_60] Speeding up XSUB calls up to 66% + Date: Fri, 27 Aug 1999 03:33:01 -0400 (EDT) + Message-Id: <199908270733.DAA16927@monk.mps.ohio-state.edu> + + Addendum: it's "only" 33% speedup. + Branch: cfgperl + ! dump.c op.c op.h pp.h +____________________________________________________________________________ +[ 4043] By: jhi on 1999/08/29 11:10:33 + Log: From: spider-perl@Orb.Nashua.NH.US + To: Mailing list Perl5 + Subject: [PATCH 5.005_61 CORE] sub : attrlist + Date: Sun, 29 Aug 1999 03:02:11 -0400 + Message-Id: <199908290702.DAA32191@Orb.Nashua.NH.US> + Branch: cfgperl + + lib/attributes.pm t/lib/attrs.t t/op/attrs.t xsutils.c + ! MANIFEST Makefile.SH embed.h embed.pl embedvar.h global.sym + ! gv.c lib/AutoSplit.pm lib/SelfLoader.pm objXSUB.h op.c perl.c + ! perl.h perlapi.c perlapi.h perly.c perly.fixer perly.h perly.y + ! perly_c.diff pod/perldelta.pod pod/perldiag.pod + ! pod/perlfunc.pod pod/perlmodlib.pod pod/perlsub.pod proto.h + ! toke.c vms/perly_c.vms vms/perly_h.vms warnings.h +____________________________________________________________________________ +[ 4042] By: jhi on 1999/08/29 11:08:50 + Log: Turn off gcc-2.95's strict-alias optimization. + This, of course, should be only temporary. + From Andy Dougherty. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/compline/ccflags.U U/modified/cc.U +____________________________________________________________________________ +[ 4041] By: jhi on 1999/08/29 10:47:30 + Log: Fix a typo in #4036. + Branch: cfgperl + ! mg.c +____________________________________________________________________________ +[ 4040] By: jhi on 1999/08/29 10:34:58 + Log: Add a missing #endif forgotten by #4035. + Branch: cfgperl + ! doop.c +____________________________________________________________________________ +[ 4039] By: jhi on 1999/08/29 10:31:19 + Log: Remove an extra #endif introduced by #4036. + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4038] By: jhi on 1999/08/29 10:18:59 + Log: Rename warning to warnings, from Paul Marquess. + Branch: cfgperl + + lib/warnings.pm t/pragma/warn/7fatal t/pragma/warn/8signal + + t/pragma/warnings.t warnings.h warnings.pl + - lib/warning.pm t/pragma/warning.t warning.h warning.pl + ! MANIFEST Makefile.SH gv.c mg.c perl.h pod/perldelta.pod + ! pod/perldiag.pod pod/perlfunc.pod pod/perllexwarn.pod + ! pod/perlmodlib.pod pod/perlrun.pod pod/perltoc.pod + ! pod/perlvar.pod t/op/64bit.t t/op/tie.t t/pragma/warn/2use + ! t/pragma/warn/3both t/pragma/warn/4lint t/pragma/warn/5nolint + ! t/pragma/warn/6default t/pragma/warn/doio t/pragma/warn/doop + ! t/pragma/warn/gv t/pragma/warn/mg t/pragma/warn/op + ! t/pragma/warn/perl t/pragma/warn/perly t/pragma/warn/pp + ! t/pragma/warn/pp_ctl t/pragma/warn/pp_hot t/pragma/warn/pp_sys + ! t/pragma/warn/regcomp t/pragma/warn/regexec t/pragma/warn/sv + ! t/pragma/warn/taint t/pragma/warn/toke t/pragma/warn/universal + ! t/pragma/warn/utf8 t/pragma/warn/util toke.c +____________________________________________________________________________ +[ 4037] By: jhi on 1999/08/29 10:08:47 + Log: Create the equivalence tables based on + the real Unicode decomposition, not on + the character name. + Branch: cfgperl + ! lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + ! lib/unicode/mktables.PL +____________________________________________________________________________ +[ 4036] By: jhi on 1999/08/29 09:29:08 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/unicode/Is/SylA.pl lib/unicode/Is/SylC.pl + +> lib/unicode/Is/SylE.pl lib/unicode/Is/SylI.pl + +> lib/unicode/Is/SylO.pl lib/unicode/Is/SylU.pl + +> lib/unicode/Is/SylV.pl lib/unicode/Is/SylWA.pl + +> lib/unicode/Is/SylWC.pl lib/unicode/Is/SylWE.pl + +> lib/unicode/Is/SylWI.pl lib/unicode/Is/SylWV.pl + !> (integrate 190 files) +____________________________________________________________________________ +[ 4035] By: jhi on 1999/08/29 08:56:15 + Log: Implement 64-bit vec(). + Branch: cfgperl + ! doop.c pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod + ! pp.h t/op/64bit.t +____________________________________________________________________________ +[ 4034] By: gsar on 1999/08/29 03:35:18 + Log: deadcode removal + Branch: perl + ! XSUB.h embed.h embed.pl global.sym mg.c op.c perl.h perlapi.h + ! pp_ctl.c proto.h run.c sv.c +____________________________________________________________________________ +[ 4033] By: jhi on 1999/08/28 17:31:07 + Log: From: Robin Barker + To: perl5-porters@perl.org + Subject: [ID 19990823.009] [PATCH perl5.005_61] typo in perl.h + Date: Mon, 23 Aug 1999 16:41:11 +0100 (BST) + Message-Id: <199908231541.QAA10043@tempest.npl.co.uk> + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4032] By: gsar on 1999/08/26 23:53:33 + Log: new thread should set current interp in TLS + Branch: perl + ! ext/Thread/Thread.xs +____________________________________________________________________________ +[ 4031] By: bailey on 1999/08/23 03:40:07 + Log: When extension doesn't have a "main" object file to anchor linker search, pull in all objct files + Branch: vmsperl + ! lib/ExtUtils/MM_VMS.pm +____________________________________________________________________________ +[ 4030] By: bailey on 1999/08/23 03:37:43 + Log: Patch up holes in realclean target + Branch: vmsperl + ! vms/descrip_mms.template +____________________________________________________________________________ +[ 4029] By: bailey on 1999/08/23 03:36:24 + Log: Fix handling of PERL_POLLUTE + Branch: vmsperl + ! lib/ExtUtils/MM_VMS.pm +____________________________________________________________________________ +[ 4028] By: bailey on 1999/08/23 03:34:08 + Log: Update VMS version of perly.h + Branch: vmsperl + ! vms/perly_h.vms +____________________________________________________________________________ +[ 4027] By: bailey on 1999/08/23 03:32:45 + Log: Update dependencies in Descrip.MMS + Branch: vmsperl + ! vms/descrip_mms.template +____________________________________________________________________________ +[ 4026] By: bailey on 1999/08/23 03:30:01 + Log: Fix prototypes in perlapi.c (64-bit?) + Clear prior definition of getenv_len before defining VMS-specific macro + Branch: vmsperl + ! perlapi.c vms/vmsish.h +____________________________________________________________________________ +[ 4025] By: bailey on 1999/08/23 03:25:51 + Log: Add '-m' option to Configure.com which skips the MANIFEST check + Branch: vmsperl + ! configure.com +____________________________________________________________________________ +[ 4024] By: bailey on 1999/08/23 03:23:34 + Log: Skip open() tests that rely on Unix fork semantics + Branch: vmsperl + ! t/io/open.t +____________________________________________________________________________ +[ 4023] By: bailey on 1999/08/23 03:21:46 + Log: Loosen conditons for recognizing a function name in perl.h to accomodate revisions + Branch: vmsperl + ! vms/gen_shrfls.pl +____________________________________________________________________________ +[ 4022] By: bailey on 1999/08/23 03:17:33 + Log: update MM_VMS to use new File::Spec routines + Branch: vmsperl + ! lib/ExtUtils/MM_VMS.pm lib/File/Spec/VMS.pm +____________________________________________________________________________ +[ 4021] By: bailey on 1999/08/23 03:13:40 + Log: byteperl is now part of the ByteLoader ext + Branch: vmsperl + ! ext/ByteLoader/byterun.h vms/descrip_mms.template +____________________________________________________________________________ +[ 4020] By: bailey on 1999/08/23 03:10:41 + Log: Allow option to treat barewords at start of Unix paths as simple words rather than logicals + Branch: vmsperl + ! vms/vms.c +____________________________________________________________________________ +[ 4019] By: bailey on 1999/08/23 03:07:28 + Log: Update calls for new thread context handling + Branch: vmsperl + ! ext/Devel/DProf/DProf.xs ext/DynaLoader/dl_vms.xs + ! ext/POSIX/POSIX.xs vms/vms.c vms/vmsish.h vms/writemain.pl +____________________________________________________________________________ +[ 4018] By: bailey on 1999/08/23 03:01:31 + Log: Allow for file versions in library when looking for .bs files + Branch: vmsperl + ! ext/DynaLoader/DynaLoader_pm.PL +____________________________________________________________________________ +[ 4017] By: bailey on 1999/08/23 02:58:55 + Log: Update VMS configuration procedures for 5.005_60 + Branch: vmsperl + ! configure.com vms/subconfigure.com +____________________________________________________________________________ +[ 4016] By: gsar on 1999/08/20 22:19:56 + Log: update Changes + Branch: perl + ! Changes + +---------------- +Version 5.005_61 +---------------- + +____________________________________________________________________________ +[ 4015] By: gsar on 1999/08/20 22:17:41 + Log: perl_free() should use PerlMem_free() + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 4014] By: gsar on 1999/08/20 22:10:46 + Log: win32 tweaks + Branch: perl + ! XSUB.h mg.c perl.c win32/config.bc win32/config.gc + ! win32/config.vc win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc +____________________________________________________________________________ +[ 4013] By: gsar on 1999/08/20 22:09:56 + Log: DEBUG_m() adjusted to internalize dTHX + Branch: perl + ! malloc.c perl.h util.c +____________________________________________________________________________ +[ 4012] By: gsar on 1999/08/20 17:51:06 + Log: make autogenerated files writable + Branch: perl + ! (edit 171 files) +____________________________________________________________________________ +[ 4011] By: gsar on 1999/08/20 17:43:47 + Log: update Changes + Branch: perl + ! Changes perl.h pod/perldelta.pod pod/perlguts.pod +____________________________________________________________________________ +[ 4010] By: gsar on 1999/08/20 17:21:53 + Log: up patchlevel &c + Branch: perl + ! Changes patchlevel.h win32/Makefile win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/makefile.mk +____________________________________________________________________________ +[ 4009] By: gsar on 1999/08/20 16:46:26 + Log: add missing Is/Syl*.pl files + Branch: perl + + lib/unicode/Is/SylA.pl lib/unicode/Is/SylC.pl + + lib/unicode/Is/SylE.pl lib/unicode/Is/SylI.pl + + lib/unicode/Is/SylO.pl lib/unicode/Is/SylU.pl + + lib/unicode/Is/SylV.pl lib/unicode/Is/SylWA.pl + + lib/unicode/Is/SylWC.pl lib/unicode/Is/SylWE.pl + + lib/unicode/Is/SylWI.pl lib/unicode/Is/SylWV.pl +____________________________________________________________________________ +[ 4008] By: gsar on 1999/08/20 16:31:02 + Log: integrate cfgperl contents into mainline + Branch: perl + +> ext/ByteLoader/hints/sunos.pl lib/charnames.pm + +> lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + +> lib/unicode/syllables.txt t/lib/charnames.t t/lib/syslfs.t + +> t/op/lfs.t + - lib/unicode/EthiopicSyllables.txt + - lib/unicode/MakeEthiopicSyllables.PL + !> (integrate 261 files) +____________________________________________________________________________ +[ 4007] By: gsar on 1999/08/20 15:24:08 + Log: support USE_THREADS+MULTIPLICITY; source compat tweaks for + USE_THREADS and MULTIPLICITY; minor pod adjustments + Branch: perl + ! Porting/patching.pod Todo Todo-5.005 XSUB.h embed.pl + ! embedvar.h perl.c perl.h pod/perlguts.pod util.c +____________________________________________________________________________ +[ 4006] By: jhi on 1999/08/19 19:01:41 + Log: Tighten the vec() code so that naughty BITS cause an error. + Branch: cfgperl + ! doop.c +____________________________________________________________________________ +[ 4005] By: jhi on 1999/08/19 15:55:09 + Log: Don't document ill-defined vec() bits cases + (for which the code doesn't work right in any case) + Branch: cfgperl + ! pod/perldiag.pod pod/perlfunc.pod +____________________________________________________________________________ +[ 4004] By: jhi on 1999/08/19 12:49:41 + Log: Removed duplicated code (in pp.c and mg.c) by introducing + do_vecget(). NOTE: the calling convention of do_vecset() + changes, too: the `offset' that is assigned to LvTARGOFF(TARG) + in pp_vec() is no more multiplied by `size' in pp_vec(), + the multiplication is now done in do_vecset(). + + Also fix a cpp thinko in change #4002. + Branch: cfgperl + ! doop.c embed.h embed.pl embedvar.h global.sym mg.c objXSUB.h + ! perl.h perlapi.c pod/perldiag.pod pod/perlfunc.pod pp.c + ! proto.h +____________________________________________________________________________ +[ 4003] By: jhi on 1999/08/18 08:27:22 + Log: Warn about small spherical distances. + Branch: cfgperl + ! lib/Math/Trig.pm +____________________________________________________________________________ +[ 4002] By: jhi on 1999/08/17 09:11:51 + Log: Enhance IV_FITS_IN_IV (though it's still unused). + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 4001] By: jhi on 1999/08/17 08:13:34 + Log: From: andreas.koenig@anima.de (Andreas J. Koenig) + Message-ID: + To: The Perl5 Porters Mailing List + Subject: [PATCH] overload.pm str/num confu + Date: 17 Aug 1999 08:21:12 +0200 + Branch: cfgperl + ! lib/overload.pm +____________________________________________________________________________ +[ 4000] By: jhi on 1999/08/17 07:20:23 + Log: From: merlyn@stonehenge.com (Randal L. Schwartz) + To: perl5-porters@perl.org + Subject: [ID 19990816.006] small patch to perlobj.pod from 5.005_03 + Date: 16 Aug 1999 14:24:28 -0700 + Message-Id: + Branch: cfgperl + ! pod/perlobj.pod +____________________________________________________________________________ +[ 3999] By: jhi on 1999/08/16 19:49:09 + Log: Integrate with Nick. + Branch: cfgperl + !> cop.h op.c perl.c t/op/eval.t t/pragma/warn/op util.c +____________________________________________________________________________ +[ 3998] By: jhi on 1999/08/16 19:44:29 + Log: Fix most of the pod2man moanings reported in + + From: "Larry W. Virden" + To: perl5-porters@perl.org + Subject: [ID 19990803.011] Not OK: perl 5.00560 on sun4-solaris 2.6 + (UNINSTALLED) + Date: Tue, 3 Aug 1999 15:35:06 -0400 (EDT) + Message-Id: <199908031935.PAA27692@cas.org> + + Configure regen'ed. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH ext/B/B/Stash.pm lib/Carp/Heavy.pm + ! lib/Dumpvalue.pm lib/Exporter/Heavy.pm lib/filetest.pm + ! lib/utf8.pm pod/perllexwarn.pod pod/perlxstut.pod + ! utils/h2xs.PL utils/perlcc.PL +____________________________________________________________________________ +[ 3997] By: jhi on 1999/08/16 19:20:37 + Log: A fix of sorts for the flush-before-dup scenario. + Branch: cfgperl + ! doio.c +____________________________________________________________________________ +[ 3996] By: jhi on 1999/08/16 19:14:37 + Log: More paranoia. + Branch: cfgperl + ! sv.c +____________________________________________________________________________ +[ 3995] By: jhi on 1999/08/16 18:55:35 + Log: Batch of small 64-bit/long double/large file support tweaks: + - scan for LDBL_DIG + - from DBL_DIG and LDBL_DIG select NV_DIG + - introduce IVSIZE, UVSIZE, NVSIZE + - introduce IV_DIG + - remove stdio64 + - AIX uses `oslevel` when others use `uname -r` + - already AIX 4.2 goes 64-bit + - in HP-UX require the 64-bit libc, just the directory isn't enough + - group ids are not NVs + - #undef USE_LONG_DOUBLE if long double is no better than double + - introduce NV_WITHIN_*() and IV_FITS_IN_IV + - mention large file support in perldelta + - introduce quad TOPpin' and POPpin' + - the svcat... buffer was tiny for printing quads in %b + - fix the multiplication test in 64bit.t + - try to make VMS to comply with all this removal and "introducal" + of symbols + Branch: cfgperl + ! Configure config_h.SH dump.c hints/aix.sh hints/hpux.sh mg.c + ! perl.h perlio.c pod/perldelta.pod pp.h sv.c t/lib/syslfs.t + ! t/op/64bit.t t/op/lfs.t utf8.c vms/subconfigure.com + Branch: metaconfig + ! U/modified/d_longdbl.U + Branch: metaconfig/U/perl + + d_ldbl_dig.U +____________________________________________________________________________ +[ 3994] By: jhi on 1999/08/16 07:53:44 + Log: More Configure/subconfigure.com syncing. + Branch: cfgperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 3993] By: jhi on 1999/08/14 22:09:26 + Log: Remove from VMS what the change #3982 took away from Configure lands. + Branch: cfgperl + ! vms/subconfigure.com +____________________________________________________________________________ +[ 3992] By: jhi on 1999/08/14 13:29:13 + Log: Small test tweaks. + Branch: cfgperl + ! t/io/dup.t t/lib/dprof.t t/lib/odbm.t +____________________________________________________________________________ +[ 3991] By: jhi on 1999/08/14 13:08:41 + Log: Augment filesize limit note. + Branch: cfgperl + ! doio.c +____________________________________________________________________________ +[ 3990] By: jhi on 1999/08/14 13:06:12 + Log: Note about filesize limits. + Branch: cfgperl + ! doio.c pp_sys.c +____________________________________________________________________________ +[ 3989] By: jhi on 1999/08/14 11:31:58 + Log: Catch the case of filesize limits. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 3988] By: nick on 1999/08/14 09:20:58 + Log: New lightweight Carp has a require. If Carp is used in a __DIE__ handler + this causes a POPSTACK panic. The problem seems to be that although + die_where() has unwound the tail of perl_vdie() top_env setjmp has been + set to resume execution there. Avoiding setting CATCH_SET(TRUE) in + call_sv() avoids this. So invent a new G_NOCATCH flag to disable + messing with CATCH_SET() in call_sv, use it in perl_vdie(). + Add test to op/eval.t which will fail (panic) if bug comes back. + >>> I AM NOT CONVINCED THIS IS CORRECT LONG TERM FIX <<< + Branch: perl + ! cop.h perl.c t/op/eval.t util.c +____________________________________________________________________________ +[ 3987] By: jhi on 1999/08/13 23:57:52 + Log: From: "Craig A. Berry" + To: perl5-porters@perl.org, vmsperl@perl.org, sarathy@activestate.com + Subject: [PATCH 5.005_60] fix MM_VMS.pm for space-delimited lists + Date: Fri, 13 Aug 1999 17:42:47 -0500 + Message-Id: + Branch: cfgperl + ! lib/ExtUtils/MM_VMS.pm +____________________________________________________________________________ +[ 3986] By: jhi on 1999/08/13 23:56:44 + Log: Don't quit before printing out the message. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 3985] By: jhi on 1999/08/13 23:35:49 + Log: Remove more t/ trash on target "clean". + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 3984] By: jhi on 1999/08/13 23:02:53 + Log: Avoid double long double. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! uselongdbl.U +____________________________________________________________________________ +[ 3983] By: jhi on 1999/08/13 22:59:56 + Log: BYTEORDER fix. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/compline/byteorder.U +____________________________________________________________________________ +[ 3982] By: jhi on 1999/08/13 22:48:40 + Log: Jumbo Configure and large file support update. + Remove a lot of unneeded 64-bitness cruft; + re-introduce BYTEORDER; update 64-bitness hints; + lfs should now work in Solaris; long doubles in AIX. + Branch: cfgperl + ! Configure config_h.SH doio.c hints/aix.sh hints/hpux.sh + ! hints/irix_6.sh hints/solaris_2.sh iperlsys.h perl.h perlio.c + ! perlsdio.h pp.h pp_sys.c + Branch: metaconfig + ! U/compline/byteorder.U U/compline/ccflags.U + Branch: metaconfig/U/perl + ! d_dlsymun.U io64.U uselongdbl.U +____________________________________________________________________________ +[ 3980] By: jhi on 1999/08/13 15:09:11 + Log: Introduce HAS_LLSEEK. + Branch: cfgperl + ! Configure config_h.SH perl.h +____________________________________________________________________________ +[ 3979] By: jhi on 1999/08/13 14:29:47 + Log: From: + To: perl5-porters@perl.org, vmsperl@perl.org, bailey@newman.upenn.edu, + sarathy@activestate.com + Subject: [PATCH 5.005_60]fix up VMS->unix filename translation a bit + Date: Fri, 13 Aug 1999 09:00:42 -0700 (PDT) + Message-ID: + Branch: cfgperl + ! vms/vms.c +____________________________________________________________________________ +[ 3978] By: jhi on 1999/08/13 09:56:46 + Log: Make the 64-bit tests more paranoid. + Branch: cfgperl + ! t/op/64bit.t +____________________________________________________________________________ +[ 3976] By: jhi on 1999/08/12 21:49:16 + Log: IRIX64 needs more -mabi=64 with gcc. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 3975] By: jhi on 1999/08/12 21:02:03 + Log: Reincarnate change #3967, now in more modest form. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 3974] By: jhi on 1999/08/12 20:49:36 + Log: Remove rt from libswanted (I added it many moons ago + when I thought it would be useful in Digital UNIX, + I was wrong); undo the recent IRIX hints changes, + getting rid of one warning brought new ones. + Branch: cfgperl + ! Configure config_h.SH hints/irix_6.sh + Branch: metaconfig + ! U/modified/Myinit.U +____________________________________________________________________________ +[ 3973] By: jhi on 1999/08/12 19:42:53 + Log: st_blocks is in 512 byte blocks. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 3972] By: jhi on 1999/08/12 19:27:31 + Log: Don't claim defeat too early. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! longdblfio.U +____________________________________________________________________________ +[ 3971] By: jhi on 1999/08/12 19:24:14 + Log: IRIX 64-bit hint tweak. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 3970] By: nick on 1999/08/12 19:17:20 + Log: Turn of deprecated warnings for defined(@Sompack::ISA) type + tests i.e. RV2AV and RV2HV + Branch: perl + ! op.c t/pragma/warn/op +____________________________________________________________________________ +[ 3969] By: jhi on 1999/08/12 19:06:17 + Log: Add Configure -Duselongdouble and add a missing semicolon. + Branch: cfgperl + ! Configure config_h.SH sv.c + Branch: metaconfig/U/perl + + uselongdbl.U +____________________________________________________________________________ +[ 3968] By: jhi on 1999/08/12 18:46:00 + Log: Simply exit() early if lfs support seems unlikely. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 3967] By: jhi on 1999/08/12 18:44:05 + Log: Suffer silently for unused libraries. + Branch: cfgperl + ! hints/irix_6.sh +____________________________________________________________________________ +[ 3966] By: jhi on 1999/08/12 13:18:44 + Log: Update MANIFEST to follow change #3965. + Branch: cfgperl + ! MANIFEST +____________________________________________________________________________ +[ 3965] By: jhi on 1999/08/12 13:15:38 + Log: Regenerate Unicode tables based on new syllable lists + from Daniel Yacob. + Branch: cfgperl + ! (edit 159 files) +____________________________________________________________________________ +[ 3964] By: jhi on 1999/08/12 10:06:24 + Log: Remove more spurious casting. + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 3963] By: jhi on 1999/08/12 08:18:53 + Log: Minor niggles on the lfs tests. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 3962] By: jhi on 1999/08/11 22:48:25 + Log: Don't bother with lfs testing if off_t is too small. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 3961] By: jhi on 1999/08/11 22:22:54 + Log: Long double patches from Dan Sugalski. + Branch: cfgperl + ! sv.c +____________________________________________________________________________ +[ 3960] By: jhi on 1999/08/11 22:17:55 + Log: Flush buffer before duplicating file descriptor. + + From: Mark-Jason Dominus + To: Graham Barr + cc: Vicki Brown , perl5-porters@perl.org, mjd@plover.com + Subject: Re: [ID 19990811.002] can't dup DATA? (PATCH (5.005_57)) + Date: Wed, 11 Aug 1999 15:56:09 -0400 + Message-ID: <19990811195610.5933.qmail@plover.com> + + From: Mark-Jason Dominus + To: perl5-porters@perl.org + Subject: Re: [ID 19990811.002] can't dup DATA? (PATCH (5.005_57)) + Date: Wed, 11 Aug 1999 16:05:46 -0400 + Message-ID: <19990811200546.6165.qmail@plover.com> + Branch: cfgperl + ! doio.c pod/perldelta.pod +____________________________________________________________________________ +[ 3959] By: jhi on 1999/08/11 22:11:35 + Log: Bypass fsync(NULL) (crashes miniperl compiled with DEC C 5.2) + + From: "Craig A. Berry" + Sender: owner-perl5-porters@perl.org + To: vmsperl@perl.org, perl5-porters@perl.org, sarathy@activestate.com, + bailey@newman.upenn.edu + Subject: [PATCH 5.005_60] vms.c my_flush patch to circumvent fileno + problem + Date: Wed, 11 Aug 1999 14:31:11 -0500 + Message-Id: <4.2.0.58.19990811141007.00b8f8a0@mmtnt11.metamor.com> + Branch: cfgperl + ! vms/vms.c +____________________________________________________________________________ +[ 3958] By: jhi on 1999/08/11 15:35:45 + Log: Add a hopefully comforting message if there seems to be no LFS. + This seems to be the case with e.g. ext2fs, a somewhat popular fs. + The tests will fail on lfs tests only if quad is available, + if ENOQUAD, the lfs tests will be skipped. + Branch: cfgperl + ! t/lib/syslfs.t t/op/lfs.t +____________________________________________________________________________ +[ 3957] By: jhi on 1999/08/11 12:25:59 + Log: Unapply an experimental patch that accidentally escaped + from the lab by piggybacking with the change #3955. + Branch: cfgperl + ! pp.c pp.h pp_hot.c +____________________________________________________________________________ +[ 3956] By: jhi on 1999/08/11 08:19:23 + Log: Add sysio large file support testing. + Branch: cfgperl + + t/lib/syslfs.t + ! MANIFEST pod/perlfunc.pod t/op/64bit.t t/op/lfs.t +____________________________________________________________________________ +[ 3955] By: jhi on 1999/08/10 22:39:11 + Log: From: + To: vmsperl@perl.org, perl5-porters@perl.org, + sarathy@activestate.com, bailey@newman.upenn.edu + Subject: [PATCH 5.005_60]Patches needed to get _60 building with + threads on VMS + Date: Tue, 10 Aug 1999 16:34:56 -0700 (PDT) + Message-ID: + Branch: cfgperl + ! ext/Devel/DProf/DProf.xs ext/DynaLoader/dl_vms.xs + ! ext/POSIX/POSIX.xs pp.c pp.h pp_hot.c vms/vms.c vms/vmsish.h + ! vms/writemain.pl +____________________________________________________________________________ +[ 3954] By: jhi on 1999/08/10 20:37:55 + Log: LFS testing robustness. + Branch: cfgperl + ! t/op/lfs.t +____________________________________________________________________________ +[ 3953] By: jhi on 1999/08/10 19:54:50 + Log: From: + To: vmsperl@perl.org, perp5-porters@perl.org, bailey@newman.upenn.edu, + sarathy@activestate.com + Subject: [PATCH 5.005_60]Pathces to get _60 building on VMS + Date: Tue, 10 Aug 1999 13:28:18 -0700 (PDT) + Message-ID: + Branch: cfgperl + ! configure.com vms/descrip_mms.template vms/gen_shrfls.pl + ! vms/subconfigure.com vms/vmsish.h +____________________________________________________________________________ +[ 3952] By: jhi on 1999/08/10 17:18:57 + Log: AIX is different, again. Now in cc -E output. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig + ! U/modified/cppstdin.U +____________________________________________________________________________ +[ 3951] By: jhi on 1999/08/10 14:37:08 + Log: Use Pid_t on pgrp matters. + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 3950] By: jhi on 1999/08/10 14:35:30 + Log: Use Pid_t. + Branch: cfgperl + ! doio.c embed.h embed.pl embedvar.h global.sym perlapi.c + ! pp_sys.c proto.h util.c +____________________________________________________________________________ +[ 3949] By: jhi on 1999/08/10 14:11:15 + Log: Use Mode_t. + Branch: cfgperl + ! doio.c embed.h embed.pl embedvar.h global.sym perlapi.c + ! perlapi.h pp_sys.c proto.h +____________________________________________________________________________ +[ 3948] By: jhi on 1999/08/10 13:53:19 + Log: Small perlbug doc tweaks from Jon Orwant. + Branch: cfgperl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 3947] By: jhi on 1999/08/10 09:55:11 + Log: Large file support testing. + Branch: cfgperl + + t/op/lfs.t + ! MANIFEST t/op/64bit.t +____________________________________________________________________________ +[ 3946] By: jhi on 1999/08/10 09:13:54 + Log: Remove I32 casting from time-related functions. + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 3945] By: jhi on 1999/08/10 09:06:42 + Log: Gratuitous uid and gid casts to I32s and ints removed. + There are still problem spots in printfing such ids: + width (%d vs %ld) and signedness %d vs %u. + Branch: cfgperl + ! doio.c embed.h embed.pl embedvar.h global.sym intrpvar.h mg.c + ! perl.c perlapi.c pp_hot.c proto.h +____________________________________________________________________________ +[ 3944] By: jhi on 1999/08/10 07:43:03 + Log: Remove I32 casts from pp_stat, these make stat() + very broken e.g. on files larger than 2 gigabytes. + Reported by + From: Phil Lobbes + To: perl5-porters@perl.org + Subject: [ID 19990810.001] Possible bug using stat w/large files Digital + UNIX Perl 5.005_03 + Date: Mon, 09 Aug 1999 21:38:54 -0700 + Message-Id: <199908100438.VAA08292@ultra.finchcomputer.com> + + There are more of these I32 casts all over pp_sys.c, + all of them should be checked. + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 3943] By: jhi on 1999/08/10 07:38:30 + Log: Remove blathering. + Branch: cfgperl + ! lib/unicode/mktables.PL +____________________________________________________________________________ +[ 3942] By: jhi on 1999/08/09 20:35:13 + Log: lexwarn maintenance: new warning class unsafe + subclasses 'overflow' and 'portable' created, + used by the recent integer overflow warnings. + Class syntax subclass 'octal' renamed to 'digit', + binary and hexadecimal parsing errors also 'digit' warnings. + Branch: cfgperl + ! lib/warning.pm pod/perllexwarn.pod t/pragma/warn/util toke.c + ! util.c warning.h warning.pl +____________________________________________________________________________ +[ 3941] By: jhi on 1999/08/09 10:40:47 + Log: Integrate with Nick. + Branch: cfgperl + +> opnames.h + !> Changes MANIFEST embed.h embed.pl ext/B/B/C.pm ext/B/B/CC.pm + !> global.sym opcode.h opcode.pl perl.h perlapi.c pp.c +____________________________________________________________________________ +[ 3940] By: jhi on 1999/08/09 10:32:43 + Log: Regenerate the Unicode tables after having updated the Unicode + database (change #3939). + Branch: cfgperl + ! (edit 157 files) +____________________________________________________________________________ +[ 3939] By: jhi on 1999/08/09 10:27:22 + Log: Unicode data updated to be the latest beta of the Unicode 3.0. + Branch: cfgperl + ! lib/unicode/UnicodeData-Latest.txt +____________________________________________________________________________ +[ 3938] By: jhi on 1999/08/09 10:25:54 + Log: Ethiopic changes via private email from Daniel Yacob, + . Ethiopic and Cherokee done, + Canadian Syllabics and Yi under construction. + Branch: cfgperl + + lib/unicode/syllables.txt + - lib/unicode/EthiopicSyllables.txt + - lib/unicode/MakeEthiopicSyllables.PL + ! MANIFEST lib/unicode/UnicodeData-Latest.txt + ! lib/unicode/mktables.PL +____________________________________________________________________________ +[ 3937] By: jhi on 1999/08/09 10:21:51 + Log: Move the equivalence class creation last. + Branch: cfgperl + ! lib/unicode/mktables.PL +____________________________________________________________________________ +[ 3936] By: jhi on 1999/08/09 10:20:40 + Log: Compute equivalence classes (diacritics stripping) only + for letters, not for ligatures. + Branch: cfgperl + ! lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + ! lib/unicode/mktables.PL +____________________________________________________________________________ +[ 3935] By: nick on 1999/08/08 13:53:57 + Log: Will now correctly re-call + bootstrap "Foo"; + if requested. This should allow build on Win32 and other + platforms where you cannot link to loadables directly. + Branch: perl + ! ext/B/B/C.pm +____________________________________________________________________________ +[ 3934] By: nick on 1999/08/07 12:23:55 + Log: Vishal Bhatia + Subject: [PATCH 5.005_60] fix for some obscure bugs (compiler) + Message-ID: + Branch: perl + ! ext/B/B/CC.pm +____________________________________________________________________________ +[ 3933] By: nick on 1999/08/07 12:19:46 + Log: B::C changes to get simple Tk app. compiling again + Branch: perl + ! ext/B/B/C.pm +____________________________________________________________________________ +[ 3932] By: jhi on 1999/08/06 21:17:16 + Log: Regen Configure to include change #3915. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3931] By: jhi on 1999/08/06 18:52:57 + Log: Todo update. + Branch: cfgperl + ! Todo Todo-5.005 lib/unicode/mktables.PL +____________________________________________________________________________ +[ 3930] By: jhi on 1999/08/06 13:13:05 + Log: Character class equivalence tables. + Branch: cfgperl + + lib/unicode/Eq/Latin1 lib/unicode/Eq/Unicode + ! MANIFEST lib/unicode/mktables.PL +____________________________________________________________________________ +[ 3929] By: jhi on 1999/08/06 11:59:11 + Log: More Fcntl constants. (This process really needs + to be automated, at least partly, see the Errno extension.) + Now also the SEEK_ constants are available via the Fcntl. + Yes, this is redundant (IO::Seekable and POSIX supply them already), + but now Fcntl is a one-stop shopping mall for all your + file-related constants. + Branch: cfgperl + ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs pod/perlfunc.pod +____________________________________________________________________________ +[ 3928] By: jhi on 1999/08/06 08:08:03 + Log: Protect against pack/unpack repeat count overflows, + based on: + + From: Nathan Torkington + To: Brian Keefer + Cc: perl5-porters@perl.org + Subject: Re: [ID 19990806.001] Core dump with obfuscated code + Date: Thu, 5 Aug 1999 23:01:51 -0600 (MDT) + Message-ID: <14250.27711.769942.100675@localhost.frii.com> + Branch: cfgperl + ! pod/perldiag.pod pp.c +____________________________________________________________________________ +[ 3927] By: jhi on 1999/08/06 07:32:20 + Log: Fix for Nathan's fix (#3920) from Guy Decoux. + + From: Nathan Torkington + To: perl5-porters@perl.org + Subject: Bugfix for my bugfix + Date: Thu, 5 Aug 1999 21:25:47 -0600 (MDT) + Message-ID: <14250.21947.765134.940583@localhost.frii.com> + Branch: cfgperl + ! ext/B/B/Assembler.pm +____________________________________________________________________________ +[ 3926] By: jhi on 1999/08/05 17:25:19 + Log: Fix regex charclass parsing so that bogus ranges + like [0-\d] and [[:word:]-z] are no more allowed. + The anomaly was noticed by Guy Decoux. + Branch: cfgperl + ! pod/perldiag.pod pod/perlre.pod regcomp.c t/op/re_tests +____________________________________________________________________________ +[ 3925] By: jhi on 1999/08/05 10:31:47 + Log: split /^/ deprecation warning should not be on by default. + Branch: cfgperl + ! pp.c +____________________________________________________________________________ +[ 3923] By: jhi on 1999/08/05 09:16:57 + Log: From: paul.marquess@bt.com + To: jhi@iki.fi, paul.marquess@bt.com + Cc: gsar@ActiveState.com, perl5-porters@perl.org + Subject: RE: [PATCH 5.005_60] anydbm.t + DB_File + Berkeley DB >= 2.4.10 + Date: Thu, 5 Aug 1999 09:33:14 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB202D49B26@mbtlipnt02.btlabs.bt.co.uk> + Branch: cfgperl + ! t/lib/anydbm.t +____________________________________________________________________________ +[ 3921] By: jhi on 1999/08/05 08:05:13 + Log: From: paul.marquess@bt.com + To: perl5-porters@perl.org + Cc: gsar@activestate.com, nik@tiuk.ti.com, jhi@iki.fi, + randy@theoryx5.uwinnipeg.ca + Subject: [PATCH 5.005_60] DB_File 1.70 + Date: Wed, 4 Aug 1999 23:22:22 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB202D49B21@mbtlipnt02.btlabs.bt.co.uk> + + (Replaces change #3917) + Branch: cfgperl + ! ext/DB_File/Changes ext/DB_File/DB_File.pm + ! ext/DB_File/DB_File.xs t/lib/db-btree.t t/lib/db-hash.t +____________________________________________________________________________ +[ 3920] By: jhi on 1999/08/04 19:02:58 + Log: From: Nathan Torkington + To: perl5-porters@perl.org + Subject: [5.005_60 PATCH] Make B::Bytecode work + Date: Wed, 4 Aug 1999 11:24:56 -0600 (MDT) + Message-ID: <14248.30568.769427.216092@localhost.frii.com> + Branch: cfgperl + ! ext/B/B/Assembler.pm +____________________________________________________________________________ +[ 3919] By: jhi on 1999/08/04 10:56:26 + Log: Update history records. + Branch: cfgperl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 3918] By: jhi on 1999/08/04 09:36:13 + Log: Minor fixes to linux -Dusethreads -Duseperlio. + Branch: cfgperl + ! perlio.c +____________________________________________________________________________ +[ 3917] By: jhi on 1999/08/04 08:13:20 + Log: (Replaced by change #3921) + From: paul.marquess@bt.com + To: gsar@activestate.com + Cc: perl5-porters@perl.org + Subject: [PATCH 5.005_60] DB_File 1.69 + Date: Tue, 3 Aug 1999 22:55:00 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB29C6D04@mbtlipnt02.btlabs.bt.co.uk> + Branch: cfgperl + ! ext/DB_File/Changes ext/DB_File/DB_File.pm + ! ext/DB_File/DB_File.xs t/lib/db-btree.t t/lib/db-hash.t +____________________________________________________________________________ +[ 3916] By: jhi on 1999/08/04 07:59:05 + Log: Introduce the charnames pragma. + + Subject: [PATCH 5.005_58] Free \C (for named chars), move to \O + From: Ilya Zakharevich <[9]ilya@math.ohio-state.edu> + To: Chip Salzenberg <[11]chip@perlsupport.com> + Cc: Mailing list Perl5 <[12]perl5-porters@perl.org> + Date: Sat, 31 Jul 1999 05:44:05 -0400 + Message-Id: <[13]199907311407.IAA25042@localhost.frii.com> + + From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: [PATCH 5.005_58] Named characters in Perl + Date: Mon, 2 Aug 1999 19:25:40 -0400 + Message-ID: <19990802192540.B24407@monk.mps.ohio-state.edu> + Branch: cfgperl + + lib/charnames.pm t/lib/charnames.t + ! MAINTAIN MANIFEST lib/utf8.pm pod/perldiag.pod pod/perlop.pod + ! pod/perlre.pod regcomp.c toke.c +____________________________________________________________________________ +[ 3915] By: jhi on 1999/08/03 21:18:49 + Log: Support Configure -Dmake=pmake. + Via private email from Andy. + NOTE: assumes "basename" command. + Branch: metaconfig + ! U/modified/Config_sh.U +____________________________________________________________________________ +[ 3914] By: jhi on 1999/08/03 21:11:11 + Log: The op/filetest.t failed subtest 7 if testing as root. + + From: =?iso-8859-1?Q?Fran=E7ois=20D=E9sarm=E9nien?= + To: perl5-porters@perl.org + Subject: [ID 19990727.039] Not OK: perl 5.00558 on i386-sco 3.2v5.0.4 + Date: Tue, 27 Jul 1999 22:54:05 +0200 + Message-Id: <379E1C6D.626DC765@club-internet.fr> + Branch: cfgperl + ! t/op/filetest.t +____________________________________________________________________________ +[ 3911] By: jhi on 1999/08/03 19:52:38 + Log: The "-Dusethreads -Duseperlio" combination failed. + + From: Spider Boardman + To: perl5-porters@perl.org + Subject: [ID 19990803.007] Not OK: perl 5.00560 on alpha-dec_osf-thread + 4.0 (UNINSTALLED) + Date: Tue, 3 Aug 1999 14:25:00 -0400 + Message-Id: <199908031825.OAA29254@leggy.zk3.dec.com> + + See also change #3912. + Branch: cfgperl + ! perlio.c +____________________________________________________________________________ +[ 3910] By: jhi on 1999/08/03 10:44:24 + Log: From: Chris Nandor + To: perl5-porters@perl.org + Subject: [PATCH 5.005_58] perlbug.PL 1.27 + Date: Wed, 28 Jul 1999 23:42:49 -0400 + Message-Id: + Branch: cfgperl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 3909] By: jhi on 1999/08/03 10:41:04 + Log: Hints for building ByteLoader in SunoS. Based on + From: Andy Dougherty + To: Gurusamy Sarathy + Cc: Perl Porters + Subject: Re: 5.005_58 Not OK SunOS 4.1.3 + Date: Mon, 2 Aug 1999 14:01:58 -0400 (EDT) + Message-Id: + Branch: cfgperl + + ext/ByteLoader/hints/sunos.pl + ! MANIFEST ext/ByteLoader/ByteLoader.xs +____________________________________________________________________________ +[ 3908] By: jhi on 1999/08/03 09:29:22 + Log: Clarify RE engine code; inline a static function to a macro; + make exact string nodes smaller. + + From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_60] Cosmetic change to REx engine + Date: Mon, 2 Aug 1999 21:53:36 -0400 (EDT) + Message-Id: <199908030153.VAA10542@monk.mps.ohio-state.edu> + Branch: cfgperl + ! Makefile.SH embed.pl global.sym keywords.h lib/warning.pm + ! opcode.h pp.sym pp_proto.h regcomp.c regcomp.h regexec.c + ! regnodes.h warning.h +____________________________________________________________________________ +[ 3907] By: jhi on 1999/08/03 08:11:49 + Log: 5_59 configured with -Dd_bincompat5005 can't be made + binary compatible with a 5_03 which was built with -DEMBEDMYMALLOC. + + From: Spider Boardman + To: perl5-porters@perl.org + Subject: [ID 19990802.016] Not OK: perl 5.00559 + Date: Mon, 2 Aug 1999 16:11:13 -0400 + Message-Id: <199908022011.QAA30224@leggy.zk3.dec.com> + Branch: cfgperl + ! embed.pl +____________________________________________________________________________ +[ 3906] By: jhi on 1999/08/03 07:48:59 + Log: Change #3790 redemption: with a little additional + patch from Ilya it works okay. + Branch: cfgperl + ! ext/SDBM_File/Makefile.PL lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/MakeMaker.pm os2/OS2/REXX/Makefile.PL perl.h +____________________________________________________________________________ +[ 3905] By: gsar on 1999/08/02 21:03:23 + Log: this will be 5.005_60 + Branch: perl + ! Changes + +---------------- +Version 5.005_60 +---------------- + +____________________________________________________________________________ +[ 3904] By: gsar on 1999/08/02 20:30:23 + Log: don't enable PERL_POLLUTE_MALLOC when EMBEDMYMALLOC is + in effect (from Spider Boardman ); + regen headers + Branch: perl + ! embed.h embed.pl global.sym opcode.h perlapi.c +____________________________________________________________________________ +[ 3903] By: gsar on 1999/08/02 20:26:07 + Log: native int pack/unpack fixes (from Spider Boardman + ) + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 3902] By: gsar on 1999/08/02 20:24:41 + Log: fix broken -DDEBUGGING_OPS (from Spider Boardman + ) + Branch: perl + + opnames.h + ! Changes MANIFEST opcode.pl perl.h +____________________________________________________________________________ +[ 3901] By: gsar on 1999/08/02 18:51:18 + Log: integrate cfgperl contents + Branch: perl + !> INSTALL README pod/perldelta.pod +____________________________________________________________________________ +[ 3900] By: jhi on 1999/08/02 18:46:21 + Log: Update README and INSTALL; partly based on the message + + From: "John L. Allen" + To: Jarkko Hietaniemi + cc: perl5-porters@perl.org + Subject: Re: Perl Installation Problem + Date: Thu, 29 Jul 1999 14:55:05 -0400 (EDT) + Message-ID: + + and private email from Andy Dougherty. + Branch: cfgperl + ! INSTALL README +____________________________________________________________________________ +[ 3899] By: jhi on 1999/08/02 18:36:35 + Log: Integrate with Sarathy. + Branch: cfgperl + !> op.c +____________________________________________________________________________ +[ 3898] By: jhi on 1999/08/02 18:34:49 + Log: Update PERL_BINCOMPAT_5005; update 64-bitness. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 3897] By: gsar on 1999/08/02 18:18:37 + Log: optimizations could sometimes bypass bareword check + Branch: perl + ! op.c +____________________________________________________________________________ +[ 3896] By: jhi on 1999/08/02 18:18:34 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes makedef.pl patchlevel.h win32/Makefile + !> win32/config_H.bc win32/config_H.gc win32/config_H.vc + !> win32/makefile.mk +____________________________________________________________________________ +[ 3895] By: gsar on 1999/08/02 17:22:40 + Log: up patchlevel etc. + Branch: perl + ! Changes patchlevel.h win32/Makefile win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/makefile.mk +____________________________________________________________________________ +[ 3894] By: gsar on 1999/08/02 17:12:31 + Log: integrate change#3893, make it conditional on bincompat5005 + Branch: perl + ! makedef.pl +____________________________________________________________________________ +[ 3893] By: jhi on 1999/08/02 16:49:08 + Log: PERL_BINCOMPAT_5005 symbol translation. + (AIX wouldn't link neither perl nor extensions.) + Branch: cfgperl + ! makedef.pl +____________________________________________________________________________ +[ 3892] By: gsar on 1999/08/02 16:09:13 + Log: integrate cfgperl contents into mainline + Branch: perl + +> t/op/64bit.t + ! Changes + !> Configure MANIFEST config_h.SH doio.c dump.c hints/aix.sh op.c + !> pod/perlfunc.pod pp_hot.c pp_sys.c regcomp.c sv.c t/io/open.t + !> t/pragma/utf8.t t/pragma/warn/pp_hot toke.c util.c +____________________________________________________________________________ +[ 3891] By: jhi on 1999/08/02 14:52:40 + Log: AIX long long probing requires LL suffix for + the ll constant. The suffix doesn't seem + to bother other ll platforms. + Branch: cfgperl + ! Configure config_h.SH hints/aix.sh + Branch: metaconfig/U/perl + ! quadfio.U +____________________________________________________________________________ +[ 3890] By: jhi on 1999/08/02 14:21:55 + Log: Exact path to perl for open -|. + Branch: cfgperl + ! t/io/open.t +____________________________________________________________________________ +[ 3889] By: jhi on 1999/08/02 14:18:03 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes patchlevel.h pod/perlhist.pod pp_ctl.c util.c + !> win32/Makefile win32/config_H.bc win32/config_H.gc + !> win32/config_H.vc win32/makefile.mk win32/win32.c +____________________________________________________________________________ +[ 3888] By: jhi on 1999/08/02 14:14:29 + Log: AIX -Duse64bits: old AIXen do not have the getconf variables. + Branch: cfgperl + ! hints/aix.sh +____________________________________________________________________________ +[ 3887] By: jhi on 1999/08/02 12:53:10 + Log: Fix some of the {IV_IS_QUAD,UV_IS_QUAD} cases so that + emacs code indentation doesn't get wrong ideas-- + in other words, introduce a couple of "redundant" if:s. + Branch: cfgperl + ! doio.c dump.c op.c pp_hot.c pp_sys.c regcomp.c sv.c toke.c + ! util.c +____________________________________________________________________________ +[ 3886] By: jhi on 1999/08/02 12:43:16 + Log: Mention that also *BSD systems with glibc are known to stumble. + Branch: cfgperl + ! t/pragma/warn/pp_hot +____________________________________________________________________________ +[ 3885] By: jhi on 1999/08/02 12:34:15 + Log: Allow also non-long long but still quad platforms print quads. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! longdblfio.U quadfio.U +____________________________________________________________________________ +[ 3884] By: jhi on 1999/08/02 11:56:14 + Log: Fix regclass utf8 hex ranges for quads. + Branch: cfgperl + ! regcomp.c +____________________________________________________________________________ +[ 3883] By: jhi on 1999/08/02 11:42:14 + Log: Enhance the description of how to detect quad support. + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 3882] By: jhi on 1999/08/02 11:22:19 + Log: Fix printf %D %U %O for quads. + Branch: cfgperl + ! sv.c t/op/64bit.t +____________________________________________________________________________ +[ 3881] By: jhi on 1999/08/02 11:16:12 + Log: Document quad printing. + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 3880] By: jhi on 1999/08/02 10:32:01 + Log: More 64-bit fixing. One known bug of that kind + remains, 32-bit platforms using long long in + the test t/pragma/utf8 subtests 1-3 fail. + (Update: change #3884 fixed that one.) + Branch: cfgperl + + t/op/64bit.t + ! Configure MANIFEST config_h.SH regcomp.c sv.c t/pragma/utf8.t + +---------------- +Version 5.005_59 +---------------- + +____________________________________________________________________________ +[ 3879] By: gsar on 1999/08/02 08:18:58 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure config_h.SH sv.c +____________________________________________________________________________ +[ 3878] By: gsar on 1999/08/02 08:13:16 + Log: change#3692 had an unintentional patch leak through! + (this would explain the mysterious C failures + people have seen) + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3877] By: gsar on 1999/08/02 08:00:29 + Log: up patchlevel to 59 + Branch: perl + ! Changes patchlevel.h pod/perlhist.pod win32/Makefile + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/makefile.mk +____________________________________________________________________________ +[ 3876] By: gsar on 1999/08/02 07:51:18 + Log: fix coredump under usethreads+debug + Branch: perl + ! util.c +____________________________________________________________________________ +[ 3875] By: jhi on 1999/08/02 07:50:51 + Log: d_bincompat5005 could be left empty. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! bincompat5005.U +____________________________________________________________________________ +[ 3874] By: jhi on 1999/08/02 07:42:45 + Log: Fix printf %d when IV is quad. + Branch: cfgperl + ! sv.c +____________________________________________________________________________ +[ 3873] By: gsar on 1999/08/02 07:41:03 + Log: fix d_bincompat5005='' junking config.h + Branch: perl + ! Configure +____________________________________________________________________________ +[ 3872] By: gsar on 1999/08/02 07:38:48 + Log: C needs parameter list, not merely type + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 3871] By: jhi on 1999/08/02 07:20:51 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes ext/B/B/C.pm ext/B/B/CC.pm regexec.c +____________________________________________________________________________ +[ 3870] By: gsar on 1999/08/02 07:12:18 + Log: integrate cfgperl changes into mainline + Branch: perl + ! Changes + !> Configure Makefile.SH Porting/Glossary Porting/config.sh + !> Porting/config_H config_h.SH doio.c dump.c mg.c op.c perl.h + !> pp_ctl.c pp_hot.c pp_sys.c scope.c sv.c t/pragma/warn/sv + !> toke.c util.c +____________________________________________________________________________ +[ 3869] By: gsar on 1999/08/02 06:59:09 + Log: From: "Vishal Bhatia" + Date: Sat, 31 Jul 1999 19:08:33 -0700 + Message-ID: + Subject: [PATCH 5.005_58] "use constant" in the compiler + Branch: perl + ! ext/B/B/C.pm ext/B/B/CC.pm +____________________________________________________________________________ +[ 3868] By: gsar on 1999/08/02 06:55:51 + Log: debug build tweak + Branch: perl + ! regexec.c +____________________________________________________________________________ +[ 3867] By: gsar on 1999/08/02 06:35:18 + Log: create vmsperl branch (to be owned and operated by: cbailey) + Branch: vmsperl + +> (branch 1476 files) +____________________________________________________________________________ +[ 3866] By: jhi on 1999/08/01 23:34:40 + Log: so_locations once is enough. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 3865] By: jhi on 1999/08/01 23:13:05 + Log: Simplicate duplicated code. + Branch: cfgperl + ! util.c +____________________________________________________________________________ +[ 3864] By: jhi on 1999/08/01 22:41:41 + Log: Integrate with Sarathy. perl.h and util.c required manual resolving. + Branch: cfgperl + +> README.cygwin cygwin/Makefile.SHs cygwin/ld2.in + +> cygwin/perlld.in ext/DynaLoader/dl_cygwin.xs hints/cygwin.sh + - README.cygwin32 cygwin32/Makefile.SHs + - cygwin32/build-instructions.READFIRST + - cygwin32/build-instructions.charles-wilson + - cygwin32/build-instructions.sebastien-barre + - cygwin32/build-instructions.steven-morlock + - cygwin32/build-instructions.steven-morlock2 cygwin32/ld2.in + - cygwin32/perlld.in ext/DynaLoader/dl_cygwin32.xs + - hints/cygwin32.sh + !> (integrate 61 files) +____________________________________________________________________________ +[ 3863] By: jhi on 1999/08/01 22:36:02 + Log: Regen Configure and Glossary once again. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 3862] By: jhi on 1999/08/01 22:26:09 + Log: Glossary update for #3861. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 3861] By: jhi on 1999/08/01 22:22:51 + Log: 64-bit work. Now 32-bit platforms get a 100% make test + with -Duse64bits (using long long). + Tested in Solaris 2.6 sparc RH Linux 6.0 x86 + (and Digital IX 4.0D, to get a true 64-bit opinion). Now e.g. + 'print unpack "q", pack "q", 12345678901' + should work on such 32-bit platforms. + Still a lot of printf()s behind -D which wrongly assume + that %ld/%lx and (long) are a good combination. + Introducing a slew of new macros intended to be used in printf() + format strings: e. g. PERL_PRId64 is the string to be used + when printing an IV, printf("%" PERL_PRId64 "\n", iv). + The PRI... naming follows the C9X naming of macros. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH doio.c dump.c mg.c op.c perl.h pp_ctl.c pp_hot.c + ! pp_sys.c scope.c sv.c t/pragma/warn/sv toke.c util.c + Branch: metaconfig/U/perl + + atolf.U atoll.U longdblfio.U quadfio.U strtoull.U +____________________________________________________________________________ +[ 3860] By: gsar on 1999/08/01 21:23:18 + Log: integrate cfgperl contents into mainline + Branch: perl + ! toke.c + !> (integrate 29 files) +____________________________________________________________________________ +[ 3859] By: gsar on 1999/08/01 21:13:09 + Log: From: Nathan Torkington + Date: Sun, 1 Aug 1999 11:23:35 -0600 (MDT) + Message-ID: <14244.33431.739419.806927@localhost.frii.com> + Subject: [PATCH 5.005_58] ext/B/B/Disassembler.pm patch + Branch: perl + ! ext/B/B/Disassembler.pm +____________________________________________________________________________ +[ 3858] By: gsar on 1999/08/01 21:09:15 + Log: DB_File 1.68 update from Paul Marquess + Branch: perl + ! ext/DB_File/Changes ext/DB_File/DB_File.pm + ! ext/DB_File/DB_File.xs t/lib/db-btree.t t/lib/db-hash.t + ! t/lib/db-recno.t +____________________________________________________________________________ +[ 3857] By: gsar on 1999/08/01 21:05:54 + Log: From: Ilya Zakharevich + Date: Sat, 31 Jul 1999 05:13:38 -0400 + Message-Id: <199907311407.IAA25038@localhost.frii.com> + Subject: [PATCH 5.005_58] More optimizations to REx engine + Branch: perl + ! embed.pl embedvar.h ext/Thread/Thread.xs objXSUB.h perl.c + ! perl.h proto.h regcomp.c regexec.c t/op/re_tests thrdvar.h +____________________________________________________________________________ +[ 3856] By: gsar on 1999/08/01 20:59:59 + Log: slightly modified version of suggested patch + From: Ilya Zakharevich + Date: Sat, 31 Jul 1999 04:45:12 -0400 + Message-Id: <199907311406.IAA25034@localhost.frii.com> + Subject: [PATCH 5.005_58] Fix OS/2 build + Branch: perl + ! Makefile.SH lib/ExtUtils/MM_OS2.pm lib/ExtUtils/Mksymlists.pm + ! makedef.pl os2/Makefile.SHs os2/diff.configure perl.h sv.h +____________________________________________________________________________ +[ 3855] By: gsar on 1999/08/01 20:49:06 + Log: cygwin update + From: "Fifer, Eric" + Date: Fri, 30 Jul 1999 18:31:48 +0100 + Message-Id: <71E287AB0D94D111BBD600600849EC8185EE06@POST> + Subject: [ID 19990730.003] PATCH] perl5.005_58 cygwin port + Branch: perl + ! doio.c dosish.h lib/File/Spec/Unix.pm mg.c perl.h perlsdio.h + ! pp_sys.c unixish.h util.c +____________________________________________________________________________ +[ 3854] By: gsar on 1999/08/01 20:41:53 + Log: fixes from Stephen McCamant that address bugs in change#3612 + (the optimization shouldn't be enabled in expressions where + the variable is introduced), and fix Deparse to grok the + optimization + Date: Thu, 29 Jul 1999 21:21:49 -0500 (CDT) + Message-ID: <14241.3133.979257.953396@alias-2.pr.mcs.net> + Subject: [PATCH _58] Set OPpTARGET_MY more consistently + -- + Date: Thu, 29 Jul 1999 22:31:16 -0500 (CDT) + Message-ID: <14241.7300.181386.763503@alias-2.pr.mcs.net> + Subject: [PATCH _58] Disable TARGET_MY-ization on variable introduction + -- + Date: Fri, 30 Jul 1999 22:25:27 -0500 (CDT) + Message-Id: <199907310326.VAA24376@localhost.frii.com> + Subject: [PATCH _58, long] B::Deparse (was Re: New warning 'Useless use of...') + Branch: perl + ! ext/B/B/Deparse.pm op.c +____________________________________________________________________________ +[ 3853] By: gsar on 1999/08/01 20:31:32 + Log: From: Stephen McCamant + Date: Thu, 29 Jul 1999 14:08:50 -0500 (CDT) + Message-ID: <14240.42690.292893.605292@alias-2.pr.mcs.net> + Subject: [PATCH _58] Two one-liner LOGOP tweaks + Branch: perl + ! op.c opcode.h opcode.pl +____________________________________________________________________________ +[ 3852] By: gsar on 1999/08/01 20:29:17 + Log: rename cygwin32 to cygwin (from Eric Fifer ) + Branch: perl + ! AUTHORS EXTERN.h INSTALL MAINTAIN Makefile.SH Porting/patchls + ! README.cygwin README.win32 XSUB.h cygwin/Makefile.SHs + ! ext/DynaLoader/dl_cygwin.xs ext/POSIX/POSIX.xs + ! ext/SDBM_File/sdbm/pair.c hints/cygwin.sh + ! lib/ExtUtils/MM_Cygwin.pm makedepend.SH perl.h pod/perl.pod + ! pod/perlport.pod pp_sys.c util.c +____________________________________________________________________________ +[ 3851] By: gsar on 1999/08/01 20:20:05 + Log: move files around for s/cygwin32/cygwin/ renaming + Branch: perl + +> README.cygwin cygwin/Makefile.SHs cygwin/ld2.in + +> cygwin/perlld.in ext/DynaLoader/dl_cygwin.xs hints/cygwin.sh + - README.cygwin32 cygwin32/Makefile.SHs + - cygwin32/build-instructions.READFIRST + - cygwin32/build-instructions.charles-wilson + - cygwin32/build-instructions.sebastien-barre + - cygwin32/build-instructions.steven-morlock + - cygwin32/build-instructions.steven-morlock2 cygwin32/ld2.in + - cygwin32/perlld.in ext/DynaLoader/dl_cygwin32.xs + - hints/cygwin32.sh + ! MANIFEST +____________________________________________________________________________ +[ 3850] By: gsar on 1999/08/01 20:05:14 + Log: posix-bc hints tweak (via private mail from Thomas Dorner + ) + Branch: perl + ! Changes hints/posix-bc.sh +____________________________________________________________________________ +[ 3849] By: gsar on 1999/08/01 19:50:20 + Log: notes on PERL_IMPLICIT_CONTEXT (from a version by Nathan Torkington + ) + Branch: perl + ! perl.h pod/perldelta.pod pod/perlguts.pod +____________________________________________________________________________ +[ 3848] By: gsar on 1999/08/01 18:34:41 + Log: fix defined(@foo) encarpments + Branch: perl + ! ext/B/B/C.pm lib/CGI.pm lib/Dumpvalue.pm lib/dumpvar.pl + ! pod/perltrap.pod +____________________________________________________________________________ +[ 3847] By: jhi on 1999/08/01 17:17:07 + Log: Undo #3790 and the patches that attempted to fix it + (#3837, #3838, #3845). The #3790 caused linkage failures + and/or core dumps in Solaris 2.6, Digital UNIX 4.0D, and + IRIX 6.5. + Branch: cfgperl + - ext/SDBM_File/hints/dec_osf.pl ext/SDBM_File/hints/solaris.pl + ! MANIFEST ext/SDBM_File/Makefile.PL lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/MakeMaker.pm os2/OS2/REXX/Makefile.PL perl.h +____________________________________________________________________________ +[ 3846] By: jhi on 1999/08/01 11:41:52 + Log: Reading 64-bit decimal numbers was broken because + the NV was cast to an I32, not an IV. + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 3845] By: jhi on 1999/08/01 11:00:24 + Log: Solaris doesn't like PERL_MALLOC_OK in SDBM_File. + Branch: cfgperl + + ext/SDBM_File/hints/solaris.pl +____________________________________________________________________________ +[ 3844] By: jhi on 1999/08/01 10:55:44 + Log: Enable Solaris largefiles support only if -Duse64bits is used. + (Effectively removes #3311). + Branch: cfgperl + ! hints/solaris_2.sh +____________________________________________________________________________ +[ 3843] By: jhi on 1999/07/31 22:44:56 + Log: Integer overflow iteration. + Branch: cfgperl + ! t/op/oct.t toke.c util.c +____________________________________________________________________________ +[ 3842] By: jhi on 1999/07/31 22:11:03 + Log: Remove a lot of unused regnode codes. + Noticed by Ilya. + Branch: cfgperl + ! regcomp.c regcomp.sym regexec.c regnodes.h +____________________________________________________________________________ +[ 3841] By: jhi on 1999/07/31 21:53:54 + Log: Make the use64bits and usethreads friendlier/braver; + they no more wimp out if the platform is unknown. + On use64bits if gcc used -DUSE_LONG_LONG is added + to the ccflags (this dependency on gcc caused a slightly weird + reordering of Configure, but things still seem to work.) + Branch: cfgperl + ! Configure README.threads config_h.SH + Branch: metaconfig + ! U/threads/usethreads.U + Branch: metaconfig/U/perl + ! use64bits.U +____________________________________________________________________________ +[ 3840] By: jhi on 1999/07/31 20:26:22 + Log: Hack the "integer overflow" code some more. + Branch: cfgperl + ! perl.h toke.c util.c +____________________________________________________________________________ +[ 3839] By: jhi on 1999/07/31 20:22:00 + Log: Test oct() at the 2^32-1 limit. + Branch: cfgperl + ! t/op/oct.t +____________________________________________________________________________ +[ 3838] By: jhi on 1999/07/31 20:08:43 + Log: Update MANIFEST for #3837. + Branch: cfgperl + ! MANIFEST +____________________________________________________________________________ +[ 3837] By: jhi on 1999/07/31 20:02:40 + Log: Digital UNIX 4.0D doesn't like perl malloc on sdbm + (a core dump with a corrput stack ensues). + Branch: cfgperl + + ext/SDBM_File/hints/dec_osf.pl +____________________________________________________________________________ +[ 3836] By: jhi on 1999/07/29 21:09:01 + Log: Allow for Configure -Ubincompat5005 override. + Branch: cfgperl + ! Configure config_h.SH + Branch: metaconfig/U/perl + ! bincompat5005.U +____________________________________________________________________________ +[ 3835] By: jhi on 1999/07/29 21:04:02 + Log: Make Configure support PERL_BINCOMPAT_5005. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH + Branch: metaconfig/U/perl + + bincompat5005.U +____________________________________________________________________________ +[ 3834] By: jhi on 1999/07/29 19:25:35 + Log: AIX tweak, need reported by David R. Fravor + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 3833] By: jhi on 1999/07/29 14:07:09 + Log: Integrate with Sarathy. I overruled on perldelta + and perldiag. + Branch: cfgperl + !> README.win32 emacs/cperl-mode.el globals.c installperl + !> iperlsys.h makedef.pl perl.h pod/perldelta.pod + !> pod/perldiag.pod pod/perllexwarn.pod toke.c utils/perldoc.PL + !> win32/Makefile win32/bin/pl2bat.pl win32/makefile.mk + !> win32/perllib.c win32/win32.c +____________________________________________________________________________ +[ 3832] By: jhi on 1999/07/29 14:02:50 + Log: Repent and make overly large integerish + constants non-fatal. They are now promoted + to NVs, accompanied by an overflow warning that + is by default on. + Branch: cfgperl + ! embed.pl global.sym pod/perldelta.pod pod/perldiag.pod pp.c + ! proto.h t/op/oct.t t/pragma/warn/6default t/pragma/warn/util + ! toke.c util.c +____________________________________________________________________________ +[ 3831] By: jhi on 1999/07/29 11:40:04 + Log: AIX exhibits different error on failed system(). + Slightly modified patch via private email from + David R. Favor + Branch: cfgperl + ! t/op/exec.t +____________________________________________________________________________ +[ 3830] By: gsar on 1999/07/29 07:46:11 + Log: cperl-mode.el v4.19 + Branch: perl + ! emacs/cperl-mode.el +____________________________________________________________________________ +[ 3829] By: gsar on 1999/07/29 07:30:35 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Wed, 28 Jul 1999 22:01:42 +0200 + Message-ID: <37aa5f9b.12941448@smtp1.ibm.net> + Subject: [PATCH 5.005_58] win32/bin/pl2bat.pl doesn't work correctly + Branch: perl + ! win32/bin/pl2bat.pl +____________________________________________________________________________ +[ 3828] By: gsar on 1999/07/29 07:19:27 + Log: tweak previous change for multiple hits + Branch: perl + ! utils/perldoc.PL +____________________________________________________________________________ +[ 3827] By: gsar on 1999/07/29 07:10:00 + Log: band-aid for perldoc -t broken-ness (the new Pod::Text + really needs a pod2text() compatibility function) + Branch: perl + ! utils/perldoc.PL +____________________________________________________________________________ +[ 3826] By: gsar on 1999/07/29 01:33:46 + Log: minor tweaks to pods and toke.c comments + Branch: perl + ! pod/perldelta.pod pod/perldiag.pod pod/perllexwarn.pod toke.c +____________________________________________________________________________ +[ 3825] By: gsar on 1999/07/29 00:12:52 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> README.threads config_h.SH ext/IO/lib/IO/Handle.pm + !> ext/IO/lib/IO/Socket.pm ext/IO/lib/IO/Socket/INET.pm + !> ext/POSIX/POSIX.xs lib/ExtUtils/Install.pm perl.h + !> pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod + !> pod/perllexwarn.pod pod/perlre.pod pp.c pp_sys.c + !> t/lib/io_unix.t t/op/oct.t t/pragma/warn/6default + !> t/pragma/warn/util toke.c util.c +____________________________________________________________________________ +[ 3824] By: jhi on 1999/07/28 21:15:04 + Log: Tiny patch to go over #3820 (via private mail from Lincoln). + Branch: cfgperl + ! ext/IO/lib/IO/Handle.pm ext/IO/lib/IO/Socket.pm + ! ext/IO/lib/IO/Socket/INET.pm +____________________________________________________________________________ +[ 3823] By: jhi on 1999/07/28 20:29:17 + Log: Continue pack() doc honing. + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 3822] By: jhi on 1999/07/28 20:17:37 + Log: Enhance pack() doc. + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 3821] By: jhi on 1999/07/28 18:34:50 + Log: UNIX Domain Sockets are not implemented under QNX. + + From: Norton Allen + To: perl5-porters@perl.org + Subject: [ID 19990728.010] Patch:t/lib/io_unix.t _58 QNX + Date: Wed, 28 Jul 1999 14:07:16 -0400 (edt) + Message-Id: <199907281807.OAA13167@bottesini.harvard.edu> + Branch: cfgperl + ! t/lib/io_unix.t +____________________________________________________________________________ +[ 3820] By: jhi on 1999/07/28 18:13:37 + Log: IO::* enhancements. + + 1) write() and syswrite() will now accept a single-argument + form of the call, for consistency with Perl's syswrite(). + 2) You can create a TCP-based IO::Socket::INET without forcing + a connect attempt. This allows you to configure its options + (like making it non-blocking) and then call connect() manually. + 3) Fixed a bug that prevented the IO::Socket::protocol() accessor + from ever returning the correct value. + + From: Lincoln Stein + To: Graham Barr + Cc: Lincoln Stein , perl5-porters@perl.org + Subject: Re: patch for IO::* + Date: Wed, 28 Jul 1999 13:55:05 -0400 (EDT) + Message-ID: <14239.17401.330408.145295@formaggio.cshl.org> + Branch: cfgperl + ! ext/IO/lib/IO/Handle.pm ext/IO/lib/IO/Socket.pm + ! ext/IO/lib/IO/Socket/INET.pm +____________________________________________________________________________ +[ 3819] By: gsar on 1999/07/28 18:08:06 + Log: misc PERL_OBJECT tweaks; perlcore.dll is now perl56.dll + Branch: perl + ! README.win32 globals.c installperl iperlsys.h makedef.pl + ! perl.h win32/Makefile win32/makefile.mk win32/perllib.c + ! win32/win32.c +____________________________________________________________________________ +[ 3818] By: jhi on 1999/07/28 17:48:16 + Log: Need to add QNX to the list for DONT_DECLARE_STD. + (The elimination of use of the _() macro apparently triggered + an incompatability with a #define of atof) + + From: Norton Allen + To: perl5-porters@perl.org + Subject: [ID 19990728.008] Patch:perl.h _58 QNX + Date: Wed, 28 Jul 1999 13:06:23 -0400 (edt) + Message-Id: <199907281706.NAA07617@bottesini.harvard.edu> + Branch: cfgperl + ! perl.h +____________________________________________________________________________ +[ 3817] By: jhi on 1999/07/28 17:46:30 + Log: Need to add some more conditions to deal with the case + defined(HAS_GETSPNAM) && ! defined(HAS_GETSPENT) + which is true for QNX4. + From: Norton Allen + To: perl5-porters@perl.org + Subject: [ID 19990728.009] Patch:pp_sys.c _58 QNX + Date: Wed, 28 Jul 1999 13:08:42 -0400 (edt) + Message-Id: <199907281708.NAA07947@bottesini.harvard.edu> + Branch: cfgperl + ! pp_sys.c +____________________________________________________________________________ +[ 3816] By: jhi on 1999/07/28 17:43:40 + Log: The QNX shell needs a couple more semicolons. + + From: Norton Allen + To: perl5-porters@perl.org + Subject: [ID 19990728.007] Patch:Configure _58 QNX + Date: Wed, 28 Jul 1999 13:03:00 -0400 (edt) + Message-Id: <199907281703.NAA07363@bottesini.harvard.edu> + + plus silence metalint moanings on vendorprefix. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 3815] By: jhi on 1999/07/28 17:31:11 + Log: Silence metalint on vendorprefix.U. + Branch: metaconfig + ! U/installdirs/vendorprefix.U +____________________________________________________________________________ +[ 3814] By: jhi on 1999/07/28 17:13:29 + Log: QNX shell needs more semicolons. + Branch: metaconfig/U/perl + ! Extensions.U +____________________________________________________________________________ +[ 3813] By: jhi on 1999/07/28 17:05:08 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 3812] By: jhi on 1999/07/28 16:20:17 + Log: Fix a typo, un-shout, and reformat the installation output. + Branch: cfgperl + ! lib/ExtUtils/Install.pm +____________________________________________________________________________ +[ 3811] By: gsar on 1999/07/28 15:41:11 + Log: fix typo that caused INSTALLPRIVLIB to have doubled 'perl5' + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 3810] By: jhi on 1999/07/28 13:55:57 + Log: Talk more about subsecond things in perlfunc. + (Yes, redundant with perlfaq8.) + Branch: cfgperl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 3809] By: jhi on 1999/07/28 07:23:48 + Log: Integrate with Sarathy. + Branch: cfgperl + !> configpm hints/freebsd.sh lib/Pod/Html.pm perl.h t/op/grent.t + !> t/op/pwent.t +____________________________________________________________________________ +[ 3808] By: jhi on 1999/07/28 07:23:03 + Log: Document toke.c. + From: Nathan Torkington + To: perl5-porters@perl.org + Subject: Re: toke.c patch, work in progress + Date: Tue, 27 Jul 1999 23:02:09 -0600 (MDT) + Message-ID: <14238.36561.979473.667842@localhost.frii.com> + Branch: cfgperl + ! toke.c +____________________________________________________________________________ +[ 3807] By: jhi on 1999/07/28 07:10:56 + Log: perlre clarification. + + From: Ian Phillipps + To: Perl 5 Porters + Subject: [PATCH 5.00557] Add definite article to perlre.pod + Date: Tue, 27 Jul 1999 10:46:29 +0100 + Message-ID: <19990727104629.A10074@homer.diplex.co.uk> + Branch: cfgperl + ! pod/perlre.pod +____________________________________________________________________________ +[ 3806] By: gsar on 1999/07/28 07:07:46 + Log: fix the perl -V breakage + + From: Ilya Zakharevich + To: Jarkko Hietaniemi + Cc: "John L. Allen" , perl5-porters@perl.org, + gsar@activestate.com + Subject: Re: Follow up to: _58 on AIX 431 + Date: Tue, 27 Jul 1999 17:42:00 -0400 + Message-ID: <19990727174200.A12775@monk.mps.ohio-state.edu> + Branch: perl + ! configpm +____________________________________________________________________________ +[ 3805] By: gsar on 1999/07/28 07:03:34 + Log: avoid warning (from Doug MacEachern) + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 3804] By: gsar on 1999/07/28 06:59:30 + Log: Pod::Html tweak + + From: jan.dubois@ibm.net (Jan Dubois) + To: perl5-porters@perl.org + Subject: [PATCH 5.005_58] pod2html: Missing chunk for VMS filenames + Date: Tue, 27 Jul 1999 22:14:12 +0200 + Message-ID: <37a50af0.46171380@smtp1.ibm.net> + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 3803] By: gsar on 1999/07/28 06:56:38 + Log: freebsd hints update + + From: Anton Berezin + To: perl5-porters@perl.org + Subject: [ID 19990727.034] Not OK: perl 5.00558 on i386-freebsd-thread4.0-current (UNINSTALLED) + Date: Tue, 27 Jul 1999 20:29:39 +0200 (CEST) + Message-Id: <199907271829.UAA62861@lion.plab.ku.dk> + Branch: perl + ! hints/freebsd.sh +____________________________________________________________________________ +[ 3802] By: gsar on 1999/07/28 06:51:32 + Log: cosmetic testsuite patch + + From: Graham Barr + To: Perl5 Porters + Subject: 5.005_58 build + Date: Tue, 27 Jul 1999 08:09:25 -0500 + Message-ID: <19990727080925.F4683@dal.asp.ti.com> + Branch: perl + ! t/op/grent.t t/op/pwent.t +____________________________________________________________________________ +[ 3801] By: jhi on 1999/07/27 13:49:39 + Log: Minuscule cleanup of the integer overflow patch. + Branch: cfgperl + ! util.c +____________________________________________________________________________ +[ 3800] By: jhi on 1999/07/27 13:37:23 + Log: Test hex('x...'). + Branch: cfgperl + ! t/op/oct.t +____________________________________________________________________________ +[ 3799] By: jhi on 1999/07/27 12:45:45 + Log: Integrate with Sarathy (5.005_58). + Branch: cfgperl + - ext/B/byteperl.c + !> Changes MANIFEST Porting/makerel configpm embed.h embed.pl + !> ext/Devel/DProf/DProf.xs ext/POSIX/POSIX.pm + !> ext/SDBM_File/Makefile.PL lib/AutoLoader.pm + !> lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm + !> lib/Pod/Parser.pm lib/SelfLoader.pm os2/OS2/REXX/Makefile.PL + !> perl.h pod/perldelta.pod pod/perlfaq9.pod pod/perlhist.pod + !> win32/bin/pl2bat.pl win32/config_H.bc win32/config_H.gc + !> win32/config_H.vc +____________________________________________________________________________ +[ 3798] By: jhi on 1999/07/27 12:42:43 + Log: Integer constants (0x, 0[0-7], 0b) now overflow fatally, + they used to be just optional lexical warnings. + Also, with warnings turned on, constants > 2**32-1 + trigger a non-portability warning. + Branch: cfgperl + ! pod/perldelta.pod pod/perldiag.pod pod/perllexwarn.pod pp.c + ! t/op/oct.t t/pragma/warn/6default t/pragma/warn/util toke.c + ! util.c +____________________________________________________________________________ +[ 3797] By: gsar on 1999/07/27 10:48:27 + Log: here lies 5.005_58 + Branch: perl + - ext/B/byteperl.c + ! Changes MANIFEST Porting/makerel pod/perldelta.pod + ! pod/perlfaq9.pod pod/perlhist.pod + +---------------- +Version 5.005_58 +---------------- + +____________________________________________________________________________ +[ 3796] By: gsar on 1999/07/27 09:23:42 + Log: regenerate win32/config_H.?c + Branch: perl + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 3795] By: gsar on 1999/07/27 09:02:31 + Log: From: Tye McQueen + Date: Mon, 26 Jul 1999 19:19:22 -0500 (CDT) + Message-Id: <199907270019.AA08223@metronet.com> + Subject: Patch pl2bat.pl so batch file can fail + Branch: perl + ! win32/bin/pl2bat.pl +____________________________________________________________________________ +[ 3794] By: gsar on 1999/07/27 08:59:58 + Log: From: Ilya Zakharevich + Date: Mon, 26 Jul 1999 01:09:00 -0400 (EDT) + Message-Id: <199907260509.BAA26303@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] decrease memory footprint of standard modules + Branch: perl + ! configpm ext/POSIX/POSIX.pm lib/AutoLoader.pm + ! lib/SelfLoader.pm +____________________________________________________________________________ +[ 3793] By: gsar on 1999/07/27 08:19:16 + Log: support -DPERL_BINCOMPAT_5005, still needs a Configure test + (from Andy Dougherty) + Branch: perl + ! embed.h embed.pl +____________________________________________________________________________ +[ 3792] By: gsar on 1999/07/27 08:04:19 + Log: recognize more constructs such as C<$-> in pod (from Russ Allbery + and Brad Appleton) + Branch: perl + ! lib/Pod/Parser.pm +____________________________________________________________________________ +[ 3791] By: gsar on 1999/07/27 07:50:54 + Log: cover case where CLK_TCK is a float, not integer (from + alexander smishlajev ) + Branch: perl + ! ext/Devel/DProf/DProf.xs +____________________________________________________________________________ +[ 3790] By: gsar on 1999/07/27 07:45:08 + Log: provide MakeMaker attribute PERL_MALLOC_OK that allows extensions + to call Perl_malloc() as malloc() (from Ilya Zakharevich) + Branch: perl + ! ext/SDBM_File/Makefile.PL lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/MakeMaker.pm os2/OS2/REXX/Makefile.PL perl.h +____________________________________________________________________________ +[ 3789] By: jhi on 1999/07/27 07:44:55 + Log: Integrate with Sarathy. + Branch: cfgperl + +> lib/Pod/Text/Color.pm lib/Pod/Text/Termcap.pm + !> MANIFEST doio.c embed.h embed.pl ext/B/B/CC.pm + !> ext/SDBM_File/sdbm/sdbm.h global.sym lib/Pod/Html.pm + !> lib/Pod/Text.pm objXSUB.h opcode.h opcode.pl perlapi.c + !> pod/perldiag.pod pod/perlfunc.pod pod/pod2text.PL pp_sys.c + !> proto.h t/comp/proto.t t/io/open.t +____________________________________________________________________________ +[ 3788] By: gsar on 1999/07/27 07:29:59 + Log: replace Pod::Text with Pod::SimpleText v0.01 (thanks + to Russ Allbery ); s/Simple// and + s/pod2txt/pod2text/ etc. + Branch: perl + + lib/Pod/Text/Color.pm lib/Pod/Text/Termcap.pm + ! MANIFEST lib/Pod/Text.pm pod/pod2text.PL +____________________________________________________________________________ +[ 3787] By: gsar on 1999/07/27 06:48:40 + Log: From: Andy Dougherty + Date: Wed, 16 Jun 1999 14:40:09 -0400 (EDT) + Message-Id: + Subject: Re: [ID 19990608.003] my_bcopy problem; Unixware 2.0.3 + Branch: perl + ! ext/SDBM_File/sdbm/sdbm.h +____________________________________________________________________________ +[ 3786] By: gsar on 1999/07/27 06:30:09 + Log: applied suggested patch; added missing prototype changes to + opcode.pl along with documentation typos (feature still needs + to be described in perlopentut.pod and summarized in + perldelta.pod) + From: Ilya Zakharevich + Date: Thu, 17 Jun 1999 00:39:34 -0400 (EDT) + Message-Id: <199906170439.AAA18154@monk.mps.ohio-state.edu> + Subject: [PATCH 5.00557] 3-arg open + Branch: perl + ! doio.c embed.h embed.pl global.sym objXSUB.h opcode.h + ! opcode.pl perlapi.c pod/perldiag.pod pod/perlfunc.pod pp_sys.c + ! proto.h t/comp/proto.t t/io/open.t +____________________________________________________________________________ +[ 3785] By: gsar on 1999/07/27 04:36:39 + Log: don't quit if =head* wasn't found (suggested by Roland Bauer + ) + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 3784] By: gsar on 1999/07/27 03:56:17 + Log: change#3762 wasn't needed + Branch: perl + ! ext/B/B/CC.pm +____________________________________________________________________________ +[ 3783] By: jhi on 1999/07/26 19:08:21 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes makedef.pl patchlevel.h pod/perlfunc.pod pp_ctl.c + !> toke.c utils/dprofpp.PL win32/Makefile win32/config_H.bc + !> win32/config_H.gc win32/config_H.vc win32/makefile.mk +____________________________________________________________________________ +[ 3782] By: gsar on 1999/07/26 18:16:50 + Log: update Changes, patchlevel &c. + Branch: perl + ! Changes patchlevel.h win32/Makefile win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/makefile.mk +____________________________________________________________________________ +[ 3781] By: gsar on 1999/07/26 17:54:47 + Log: a more correct fix for change#2744 + From: Stephen McCamant + Date: Sun, 25 Jul 1999 14:02:25 -0500 (CDT) + Message-ID: <14235.24385.671437.246345@alias-2.pr.mcs.net> + Subject: [PATCH _57] Re: toke.c questions + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 3780] By: gsar on 1999/07/26 17:37:04 + Log: utime() doc typo from Greg Bacon + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 3779] By: jhi on 1999/07/26 16:37:23 + Log: Dusting off. + Branch: cfgperl + ! README.threads +____________________________________________________________________________ +[ 3778] By: gsar on 1999/07/26 13:28:46 + Log: avoid DIVZERO + Branch: perl + ! utils/dprofpp.PL +____________________________________________________________________________ +[ 3777] By: gsar on 1999/07/26 13:18:53 + Log: warnings identified by Borland compiler + Branch: perl + ! makedef.pl pp_ctl.c +____________________________________________________________________________ +[ 3776] By: jhi on 1999/07/26 13:07:36 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/Carp/Heavy.pm pp_ctl.c pp_hot.c +____________________________________________________________________________ +[ 3775] By: gsar on 1999/07/26 12:55:43 + Log: avoid infinite recursion when Thread.pm croaks during + bootstrap + Branch: perl + ! lib/Carp/Heavy.pm +____________________________________________________________________________ +[ 3774] By: gsar on 1999/07/26 12:43:02 + Log: integrate cfgperl contents into mainline + Branch: perl + +> lib/Carp/Heavy.pm + !> MANIFEST Makefile.SH cflags.SH configpm ext/util/make_ext + !> lib/AutoSplit.pm lib/Carp.pm makedepend.SH pod/pod2html.PL + !> pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL + !> pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL + !> writemain.SH x2p/Makefile.SH x2p/cflags.SH +____________________________________________________________________________ +[ 3773] By: jhi on 1999/07/26 12:40:29 + Log: Use long doubles only if they are useful. + Branch: cfgperl + ! ext/POSIX/POSIX.xs +____________________________________________________________________________ +[ 3772] By: gsar on 1999/07/26 12:33:11 + Log: typo in change#3768 + Branch: perl + ! pp_hot.c +____________________________________________________________________________ +[ 3771] By: gsar on 1999/07/26 12:08:27 + Log: alpha-stage support for user-hooks in @INC + From: Ken Fox + Date: Mon, 19 Jul 1999 22:12:29 -0400 (EDT) + Message-Id: <199907200213.WAA02816@mailfw2.ford.com> + Subject: Re: loading remote modules + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3770] By: jhi on 1999/07/26 11:38:36 + Log: Back out #3735. Needs more work. + Branch: cfgperl + ! Makefile.SH cflags.SH configpm ext/util/make_ext + ! lib/AutoSplit.pm makedepend.SH pod/pod2html.PL + ! pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL + ! pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL + ! writemain.SH x2p/Makefile.SH x2p/cflags.SH +____________________________________________________________________________ +[ 3769] By: jhi on 1999/07/26 11:24:45 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 35 files) +____________________________________________________________________________ +[ 3768] By: gsar on 1999/07/26 11:03:07 + Log: optimize method name lookup + From: Chip Salzenberg + Date: Thu, 22 Jul 1999 13:43:36 -0400 + Message-ID: <19990722134336.Q391@perlsupport.com> + Subject: [PATCH] OP_METHOD_NAMED + Branch: perl + ! dump.c embed.h embed.pl ext/Opcode/Opcode.pm objXSUB.h op.c + ! opcode.h opcode.pl perlapi.c pp.sym pp_hot.c pp_proto.h + ! proto.h +____________________________________________________________________________ +[ 3767] By: gsar on 1999/07/26 10:44:11 + Log: allow arrow omission in $foo[10]->('foo') etc. (but not in + foo()->()); rework grammar to remove conflicts + From: Stephen McCamant + Date: Fri, 23 Jul 1999 15:55:22 -0500 (CDT) + Message-ID: <14232.54970.771570.548676@alias-2.pr.mcs.net> + Subject: [PATCH _57, long] Re: optional arrow asymmetry + Branch: perl + ! Makefile.SH embed.h embed.pl global.sym objXSUB.h op.c + ! perlapi.c perly.c perly.h perly.y perly_c.diff proto.h + ! vms/perly_c.vms vms/perly_h.vms +____________________________________________________________________________ +[ 3766] By: jhi on 1999/07/26 10:18:56 + Log: Use $< instead of $*.c in *perlmain.o rules. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 3765] By: gsar on 1999/07/26 09:28:48 + Log: From: Ian Phillipps + Date: Fri, 23 Jul 1999 23:35:56 +0100 + Message-ID: <19990723233556.B2435@homer.diplex.co.uk> + Subject: (Version 2) Extending unpack to deal with counted strings + Branch: perl + ! pod/perldiag.pod pod/perlfunc.pod pp.c t/op/pack.t +____________________________________________________________________________ +[ 3764] By: jhi on 1999/07/26 09:17:26 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_57] Lean Carp.pm with Carp/Heavy.pm + Date: Mon, 26 Jul 1999 04:05:27 -0400 (EDT) + Message-Id: <199907260805.EAA26888@monk.mps.ohio-state.edu> + + The patch was based on 5_57 so had to re-apply lib/Carp.pm + parts of changes #3498, #3696, and #3702 for the new + lib/Carp/Heavy.pm. + Branch: cfgperl + + lib/Carp/Heavy.pm + ! MANIFEST lib/Carp.pm +____________________________________________________________________________ +[ 3763] By: gsar on 1999/07/26 09:03:17 + Log: ~ isn't valid in VMS filenames + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 3762] By: gsar on 1999/07/26 08:59:47 + Log: setstate stop-gap from Vishal Bhatia + Branch: perl + ! ext/B/B/CC.pm +____________________________________________________________________________ +[ 3761] By: gsar on 1999/07/26 08:06:39 + Log: patch for pp_foo -> Perl_pp_foo changes from Vishal Bhatia; + add B::OP::name() method that returns just the op_name; + convert Deparse et all to use that instead of B::OP::ppaddr(); + add support for OP_SETSTATE in Deparse + Branch: perl + ! ext/B/B.pm ext/B/B.xs ext/B/B/Bblock.pm ext/B/B/Bytecode.pm + ! ext/B/B/C.pm ext/B/B/CC.pm ext/B/B/Deparse.pm ext/B/B/Lint.pm + ! ext/B/B/Xref.pm opcode.h opcode.pl +____________________________________________________________________________ +[ 3760] By: jhi on 1999/07/26 07:14:43 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 43 files) +____________________________________________________________________________ +[ 3759] By: gsar on 1999/07/26 05:12:24 + Log: add disclaimer about perl 4 libraries (modified version of + patch suggested by Clinton Pierce ) + Branch: perl + ! lib/abbrev.pl lib/bigfloat.pl lib/bigint.pl lib/bigrat.pl + ! lib/cacheout.pl lib/chat2.pl lib/complete.pl lib/ctime.pl + ! lib/dotsh.pl lib/exceptions.pl lib/fastcwd.pl lib/flush.pl + ! lib/ftp.pl lib/getcwd.pl lib/getopt.pl lib/getopts.pl + ! lib/hostname.pl lib/look.pl lib/pwd.pl lib/termcap.pl +____________________________________________________________________________ +[ 3758] By: gsar on 1999/07/26 04:48:35 + Log: make reset() behave with high-bit characters + From: Ian Phillipps + Date: Thu, 22 Jul 1999 22:48:59 +0100 + Message-ID: <19990722224859.A27987@homer.diplex.co.uk> + Subject: [PATCH 5.005_57] sv_reset can cause stack corruption + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 3757] By: gsar on 1999/07/26 04:40:32 + Log: update to perlport-1.44 from Chris Nandor + Branch: perl + ! pod/perlport.pod +____________________________________________________________________________ +[ 3756] By: gsar on 1999/07/26 04:20:37 + Log: dprofpp pod additions from Nathan Torkington + Branch: perl + ! utils/dprofpp.PL +____________________________________________________________________________ +[ 3755] By: gsar on 1999/07/26 04:18:00 + Log: disable VPATH for now (breaks x2p build) + Branch: perl + ! x2p/Makefile.SH +____________________________________________________________________________ +[ 3754] By: gsar on 1999/07/26 03:15:33 + Log: INSTALL =~ s/5.006/5.6/; delay loading Errno until needed + (%! has the necessary magic); misc typos + Branch: perl + ! INSTALL ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm + ! ext/GDBM_File/GDBM_File.pm gv.c jpl/JNI/JNI.pm + ! lib/AutoLoader.pm lib/CPAN.pm perl.c pod/perllocale.pod + ! utils/h2xs.PL +____________________________________________________________________________ +[ 3753] By: gsar on 1999/07/26 02:38:28 + Log: integrate cfgperl contents into mainline + Branch: perl + +> t/pragma/locale/latin1 t/pragma/locale/utf8 + !> (integrate 53 files) +____________________________________________________________________________ +[ 3752] By: gsar on 1999/07/26 02:11:31 + Log: ensure implicitly closed handles don't set $? or $! + Branch: perl + ! doio.c embed.h embed.pl perlapi.c proto.h sv.c t/io/pipe.t +____________________________________________________________________________ +[ 3751] By: gsar on 1999/07/26 01:28:34 + Log: change#3534 didn't preserve undef return values from caller() + Branch: perl + ! Changes pp_ctl.c +____________________________________________________________________________ +[ 3750] By: jhi on 1999/07/25 20:59:29 + Log: Back up a tiny bit from #3735. + This may break builds outside the source directory + but then again, they do not work that ell yet anyway. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 3750] By: jhi on 1999/07/25 20:59:29 + Log: Back up a tiny bit from #3735. + This may break builds outside the source directory + but then again, they do not work that ell yet anyway. + Branch: cfgperl + ! Makefile.SH +____________________________________________________________________________ +[ 3749] By: jhi on 1999/07/25 19:15:55 + Log: Integrate with Sarathy. + Branch: cfgperl + !> lib/ExtUtils/MM_Unix.pm toke.c utils/h2xs.PL +____________________________________________________________________________ +[ 3748] By: jhi on 1999/07/25 19:06:59 + Log: Recode locale.t so that the change in #3730 + is not needed and locale.t works both without + and with the utf8 pragma. + Branch: cfgperl + + t/pragma/locale/latin1 t/pragma/locale/utf8 + ! MANIFEST t/pragma/locale.t +____________________________________________________________________________ +[ 3747] By: jhi on 1999/07/25 19:01:46 + Log: Like #3743. + Branch: cfgperl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 3746] By: gsar on 1999/07/25 18:08:58 + Log: add option to omit Changes file, from Abigail ; + append a HISTORY section to POD if option is used + Branch: perl + ! utils/h2xs.PL +____________________________________________________________________________ +[ 3745] By: gsar on 1999/07/25 17:40:03 + Log: warn rather than die when parse_version() can't cut it (from + Michael G Schwern ) + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 3744] By: gsar on 1999/07/25 16:32:48 + Log: make map behave like grep wrt indirect object slot when + there are parentheses; revert an experimental mod by Larry + in change#2038 that failed to parse %{{qw(a b c)}} properly + (this means C still needs a proper + fix) + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 3743] By: jhi on 1999/07/25 16:24:55 + Log: Fix a typo in #3725. + Branch: cfgperl + ! utils/perlbug.PL +____________________________________________________________________________ +[ 3742] By: jhi on 1999/07/25 16:14:39 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 26 files) +____________________________________________________________________________ +[ 3741] By: jhi on 1999/07/25 16:02:28 + Log: Cut-and-pasto in #3737. + Branch: cfgperl + ! perl.c +____________________________________________________________________________ +[ 3740] By: gsar on 1999/07/25 15:59:34 + Log: add note about glibc bug + Branch: perl + ! t/pragma/warn/pp_hot +____________________________________________________________________________ +[ 3739] By: gsar on 1999/07/25 15:48:40 + Log: fix bug in change#3728 that might free COPs prematurely; + null(op) now does more thorough scrubbing of the op, which + fixes a few compile-time memory "leaks" + Branch: perl + ! dump.c embed.h embed.pl op.c proto.h +____________________________________________________________________________ +[ 3738] By: jhi on 1999/07/25 14:15:26 + Log: In accordance with #3737. + Branch: metaconfig + ! U/installdirs/sitelib.U U/installdirs/vendorprefix.U + ! U/modified/Oldconfig.U + Branch: metaconfig/U/perl + ! Extensions.U +____________________________________________________________________________ +[ 3737] By: jhi on 1999/07/25 14:12:34 + Log: Use vendorprefixlib. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH perl.c +____________________________________________________________________________ +[ 3736] By: jhi on 1999/07/25 13:10:03 + Log: Populate metaconfig branch. + Branch: metaconfig + + (add 1468 files) + Branch: metaconfig/U/perl + + (add 101 files) +____________________________________________________________________________ +[ 3735] By: jhi on 1999/07/25 12:27:20 + Log: First steps of making builds outside the source + directory possible. These should get us as far + as miniperl, then building DynaLoader falls into + tiny twinkling pieces as MakeMaker knows nothing + of VPATH mindset. + Branch: cfgperl + ! Configure Makefile.SH cflags.SH config_h.SH configpm + ! ext/util/make_ext lib/AutoSplit.pm makedepend.SH + ! pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL + ! pod/pod2text.PL pod/pod2usage.PL pod/podchecker.PL + ! pod/podselect.PL writemain.SH x2p/Makefile.SH x2p/cflags.SH +____________________________________________________________________________ +[ 3734] By: jhi on 1999/07/25 11:19:28 + Log: Poor Glossary--are we fixed yet? + Branch: cfgperl + ! Porting/Glossary +____________________________________________________________________________ +[ 3733] By: jhi on 1999/07/25 11:15:06 + Log: Change #3732 mistakenly clobbered Glossary. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 3732] By: jhi on 1999/07/25 10:46:39 + Log: Andy's new installation scheme (note: a lot of this + leaked in already with change #3731). The vendor* + stuff is not used anywhere (in *.SH, say), so it + isn't in Configure, either. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 3731] By: jhi on 1999/07/25 10:12:07 + Log: Circumcode a strange shell(?) bug in AIX found + while trying to do -Duse64bits (which I couldn't do + in the end because the CPU isn't 64-bit in that box, + but at least now the probing doesn't crash.) + Branch: cfgperl + ! Configure config_h.SH hints/aix.sh +____________________________________________________________________________ +[ 3730] By: gsar on 1999/07/25 04:56:56 + Log: fix little utf8 nits in testsuite; add patch from Ilya that cures + a utf8 bug in one of the new RE optimizations + Branch: perl + ! regcomp.c regexec.c t/harness t/lib/io_udp.t t/op/re_tests + ! t/pragma/locale.t +____________________________________________________________________________ +[ 3729] By: jhi on 1999/07/23 19:56:27 + Log: From: Andy Dougherty + To: Perl Porters + Subject: [PATCH 5.005_57] INSTALL-1.58 + Date: Fri, 23 Jul 1999 10:50:13 -0400 (EDT) + Message-Id: + + plus + + From: "Kurt D. Starsinic" + To: Andy Dougherty + Cc: Perl Porters + Subject: Re: [PATCH 5.005_57] INSTALL-1.58 + Date: Fri, 23 Jul 1999 13:38:25 -0400 + Message-ID: <19990723133825.A12033@O2.chapin.edu> + Branch: cfgperl + ! INSTALL +____________________________________________________________________________ +[ 3728] By: gsar on 1999/07/23 17:24:42 + Log: applied suggested patch for tracking line numbers correctly in + optimized blocks with a single statement; changed setcop to + setstate and added code for -Dx dumps + From: Hugo van der Sanden + Date: Wed, 23 Jun 1999 17:27:42 +0100 + Message-Id: <199906231627.RAA24033@crypt.compulink.co.uk> + Subject: [PATCH 5.005_57] Line number error in optimised else() + Branch: perl + ! dump.c embed.h ext/Devel/DProf/DProf.xs ext/Opcode/Opcode.pm + ! objXSUB.h op.c opcode.h opcode.pl perlapi.c pp.sym pp_hot.c + ! pp_proto.h t/op/misc.t +____________________________________________________________________________ +[ 3727] By: gsar on 1999/07/23 15:56:04 + Log: avoid useless use of target for pp_each(); also fixes bugs due to + refcount held by the target + Branch: perl + ! opcode.h opcode.pl pp.c t/op/each.t +____________________________________________________________________________ +[ 3726] By: jhi on 1999/07/23 12:08:30 + Log: Change #3725 aftershock. + Branch: cfgperl + ! INSTALL jpl/JNI/JNI.pm +____________________________________________________________________________ +[ 3725] By: jhi on 1999/07/23 11:58:49 + Log: Introduce $Config{ldlibpthname} which contains + the name of the environment variable holding the + dynamic library search path, often LD_LIBRARY_PATH. + Use this new feature all over. + Also removed remnants of admonition "add LD_LIBRARY_PATH + before running make" because Makefile.SH does this for you. + Branch: cfgperl + ! Configure Makefile.SH config_h.SH + ! ext/DynaLoader/DynaLoader_pm.PL hints/README.hints + ! hints/aix.sh hints/beos.sh hints/cygwin32.sh hints/dgux.sh + ! hints/epix.sh hints/esix4.sh hints/hpux.sh hints/next_4.sh + ! hints/os2.sh hints/rhapsody.sh hints/svr4.sh jpl/JNI/JNI.pm + ! jpl/install-jpl utils/perlbug.PL +____________________________________________________________________________ +[ 3724] By: jhi on 1999/07/23 08:03:36 + Log: From: Spider Boardman + To: perl5-porters@perl.org + Subject: [PATCH] Re: [ID 19990715.003] [BUG] all perl5 versions: segfault on $# + Date: Thu, 22 Jul 1999 19:58:34 -0400 + Message-Id: <199907222358.TAA27354@Orb.Nashua.NH.US> + Branch: cfgperl + ! av.c +____________________________________________________________________________ +[ 3723] By: gsar on 1999/07/23 00:01:29 + Log: emit warning about function calls that were encountered too early + to enforce their prototype + Branch: perl + ! op.c op.h pod/perldiag.pod +____________________________________________________________________________ +[ 3722] By: jhi on 1999/07/22 21:19:59 + Log: From: "Kurt D. Starsinic" + To: perl5-porters@perl.org + Cc: Chip Salzenberg , Gurusamy Sarathy + Subject: [PATCH] MakeMaker documentation + Date: Wed, 21 Jul 1999 14:15:42 -0400 + Message-ID: <19990721141542.A1800@O2.chapin.edu> + Branch: cfgperl + ! lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 3721] By: jhi on 1999/07/22 21:05:19 + Log: From: pvhp@forte.com (Peter Prymmer) + To: chip@perlsupport.com, gsar@activestate.com, perl-mvs@perl.org, perl5-porters@perl.org + Subject: [PATCH: 5.005_03 && 5.005_57]os390 hints file appendix stops bad builds + Date: Wed, 21 Jul 99 17:15:39 PDT + Message-Id: <9907220015.AA11931@forte.com> + Branch: cfgperl + ! hints/os390.sh +____________________________________________________________________________ +[ 3720] By: jhi on 1999/07/22 20:51:17 + Log: AIX magic: ccdlflags needs to be different for + Perl itself and for extra-core extensions + (as used by ExtUtilss::embed::ldopts). + Based on the problems described in + + From: Mike W Ellwood + To: perl5-porters@perl.org + Subject: [ID 19990722.002] Perl 5.00503 and AIX 4.1.5; perl.exp; build errors. Also Imagemagick... + Date: Thu, 22 Jul 1999 14:28:19 +0100 (BST) + Reply-To: m.w.ellwood@rl.ac.uk + Message-Id: + Branch: cfgperl + ! Configure Makefile.SH config_h.SH hints/aix.sh +____________________________________________________________________________ +[ 3719] By: jhi on 1999/07/22 08:23:53 + Log: Update history records. + Branch: cfgperl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 3718] By: jhi on 1999/07/21 13:54:42 + Log: Todododobedobedo. + Branch: cfgperl + ! Todo +____________________________________________________________________________ +[ 3717] By: jhi on 1999/07/21 12:10:48 + Log: Even more Todo. + Branch: cfgperl + ! Todo +____________________________________________________________________________ +[ 3716] By: jhi on 1999/07/21 11:40:39 + Log: Use Errno more extensively so that error + messages are more portable (another way + would be to muck around with LC_MESSAGES). + Problem reported in + + From: oracle@pcr8.pcr.com + To: perl5-porters@perl.org + Subject: [ID 19990719.003] LC_MESSAGES breaks h2xs autoloaded constants on AIX 4.1.4 + Date: Mon, 19 Jul 1999 18:39:13 -0400 + Message-Id: <9907192239.AA44990@pcr8.pcr.com> + Branch: cfgperl + ! ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm + ! ext/GDBM_File/GDBM_File.pm jpl/JNI/JNI.pm lib/AutoLoader.pm + ! lib/CPAN.pm pod/perllocale.pod utils/h2xs.PL +____________________________________________________________________________ +[ 3715] By: jhi on 1999/07/21 11:05:36 + Log: Slightly modified patch. + From: Sean Sheedy + To: perl5-porters@perl.org + Subject: [ID 19990720.003] Perl 5.005_3 patch: Non-standard object extensions + Date: Tue, 20 Jul 1999 09:52:06 -0700 + Message-Id: <3794A935.1C150E54@ncube.com> + Branch: cfgperl + ! cflags.SH x2p/cflags.SH +____________________________________________________________________________ +[ 3714] By: jhi on 1999/07/20 21:26:19 + Log: More Todo. + Branch: cfgperl + ! Todo +____________________________________________________________________________ +[ 3713] By: jhi on 1999/07/20 18:02:45 + Log: Integrate with Sarathy. + Branch: cfgperl + +> ext/Devel/DProf/Changes ext/Devel/DProf/DProf.pm + +> ext/Devel/DProf/DProf.xs ext/Devel/DProf/Makefile.PL + +> ext/Devel/DProf/Todo t/lib/dprof.t t/lib/dprof/V.pm + +> t/lib/dprof/test1_t t/lib/dprof/test1_v t/lib/dprof/test2_t + +> t/lib/dprof/test2_v t/lib/dprof/test3_t t/lib/dprof/test3_v + +> t/lib/dprof/test4_t t/lib/dprof/test4_v t/lib/dprof/test5_t + +> t/lib/dprof/test5_v t/lib/dprof/test6_t t/lib/dprof/test6_v + +> utils/dprofpp.PL + !> INSTALL MAINTAIN MANIFEST configure.com + !> ext/Devel/Peek/Makefile.PL installman installperl + !> pod/roffitall utils/Makefile vms/descrip_mms.template + !> win32/Makefile win32/makefile.mk win32/win32.h +____________________________________________________________________________ +[ 3712] By: gsar on 1999/07/20 15:29:01 + Log: DProf tweak + Branch: perl + ! ext/Devel/DProf/DProf.xs +____________________________________________________________________________ +[ 3711] By: gsar on 1999/07/20 07:56:19 + Log: another DProf build tweak + Branch: perl + ! utils/dprofpp.PL +____________________________________________________________________________ +[ 3710] By: gsar on 1999/07/20 07:36:36 + Log: move DProf things around to where they are supposed to be + Branch: perl + + t/lib/dprof.t t/lib/dprof/V.pm t/lib/dprof/test1_t + + t/lib/dprof/test1_v t/lib/dprof/test2_t t/lib/dprof/test2_v + + t/lib/dprof/test3_t t/lib/dprof/test3_v t/lib/dprof/test4_t + + t/lib/dprof/test4_v t/lib/dprof/test5_t t/lib/dprof/test5_v + + t/lib/dprof/test6_t t/lib/dprof/test6_v + +> utils/dprofpp.PL + - ext/Devel/DProf/dprofpp.PL ext/Devel/DProf/t/V.pm + - ext/Devel/DProf/t/test1.pl ext/Devel/DProf/t/test1.t + - ext/Devel/DProf/t/test1.v ext/Devel/DProf/t/test2.t + - ext/Devel/DProf/t/test2.v ext/Devel/DProf/t/test3.t + - ext/Devel/DProf/t/test3.v ext/Devel/DProf/t/test4.t + - ext/Devel/DProf/t/test4.v ext/Devel/DProf/t/test5.t + - ext/Devel/DProf/t/test5.v ext/Devel/DProf/t/test6.t + - ext/Devel/DProf/t/test6.v ext/Devel/DProf/test.pl + ! INSTALL MANIFEST ext/Devel/DProf/Makefile.PL installman + ! installperl pod/roffitall utils/Makefile + ! vms/descrip_mms.template win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 3709] By: gsar on 1999/07/20 06:13:16 + Log: DProf fixups for PERL_IMPLICIT_CONTEXT + Branch: perl + ! ext/Devel/DProf/DProf.xs ext/Devel/DProf/Makefile.PL + ! ext/Devel/Peek/Makefile.PL +____________________________________________________________________________ +[ 3708] By: gsar on 1999/07/20 06:01:22 + Log: move DProf to Devel/DProf + Branch: perl + +> ext/Devel/DProf/Changes ext/Devel/DProf/DProf.pm + +> ext/Devel/DProf/DProf.xs ext/Devel/DProf/Makefile.PL + +> ext/Devel/DProf/Todo ext/Devel/DProf/dprofpp.PL + +> ext/Devel/DProf/t/V.pm ext/Devel/DProf/t/test1.pl + +> ext/Devel/DProf/t/test1.t ext/Devel/DProf/t/test1.v + +> ext/Devel/DProf/t/test2.t ext/Devel/DProf/t/test2.v + +> ext/Devel/DProf/t/test3.t ext/Devel/DProf/t/test3.v + +> ext/Devel/DProf/t/test4.t ext/Devel/DProf/t/test4.v + +> ext/Devel/DProf/t/test5.t ext/Devel/DProf/t/test5.v + +> ext/Devel/DProf/t/test6.t ext/Devel/DProf/t/test6.v + +> ext/Devel/DProf/test.pl + - ext/DProf/Changes ext/DProf/DProf.pm ext/DProf/DProf.xs + - ext/DProf/Makefile.PL ext/DProf/Todo ext/DProf/dprofpp.PL + - ext/DProf/t/V.pm ext/DProf/t/test1.pl ext/DProf/t/test1.t + - ext/DProf/t/test1.v ext/DProf/t/test2.t ext/DProf/t/test2.v + - ext/DProf/t/test3.t ext/DProf/t/test3.v ext/DProf/t/test4.t + - ext/DProf/t/test4.v ext/DProf/t/test5.t ext/DProf/t/test5.v + - ext/DProf/t/test6.t ext/DProf/t/test6.v ext/DProf/test.pl + ! MAINTAIN MANIFEST configure.com win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 3707] By: gsar on 1999/07/20 05:39:11 + Log: add Devel::DProf v19990108 from CPAN, as it was + Branch: perl + + ext/DProf/Changes ext/DProf/DProf.pm ext/DProf/DProf.xs + + ext/DProf/Makefile.PL ext/DProf/Todo ext/DProf/dprofpp.PL + + ext/DProf/t/V.pm ext/DProf/t/test1.pl ext/DProf/t/test1.t + + ext/DProf/t/test1.v ext/DProf/t/test2.t ext/DProf/t/test2.v + + ext/DProf/t/test3.t ext/DProf/t/test3.v ext/DProf/t/test4.t + + ext/DProf/t/test4.v ext/DProf/t/test5.t ext/DProf/t/test5.v + + ext/DProf/t/test6.t ext/DProf/t/test6.v ext/DProf/test.pl + ! MANIFEST +____________________________________________________________________________ +[ 3706] By: gsar on 1999/07/20 04:52:25 + Log: C needs no PERL_OBJECT-treatment + Branch: perl + ! win32/win32.h +____________________________________________________________________________ +[ 3705] By: gsar on 1999/07/20 04:11:54 + Log: fix problem in default build + Branch: perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 3704] By: jhi on 1999/07/19 07:06:36 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes lib/Carp.pm makedef.pl pod/perldiag.pod sv.h util.c + !> win32/win32.c +____________________________________________________________________________ +[ 3703] By: gsar on 1999/07/19 05:55:57 + Log: win32 nits + Branch: perl + ! makedef.pl sv.h +____________________________________________________________________________ +[ 3702] By: gsar on 1999/07/19 04:29:34 + Log: don't display tid from main thread (or testsuite breaks) + Branch: perl + ! lib/Carp.pm util.c +____________________________________________________________________________ +[ 3701] By: gsar on 1999/07/19 00:47:52 + Log: remove several doubled (and tripled!) entries + Branch: perl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 3700] By: gsar on 1999/07/19 00:42:34 + Log: integrate cfgperl contents into mainline + Branch: perl + +> makedef.pl + - perl_exp.SH win32/makedef.pl + !> MANIFEST Makefile.SH ext/DynaLoader/DynaLoader_pm.PL + !> ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_vms.xs hints/aix.sh + !> pod/perldiag.pod pp.c regexec.c t/pragma/warn/util toke.c + !> utf8.c util.c win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 3699] By: gsar on 1999/07/19 00:33:59 + Log: avoid bug in win32_str_os_error() (from Jan Dubois) + Branch: perl + ! Changes win32/win32.c +____________________________________________________________________________ +[ 3698] By: jhi on 1999/07/18 21:33:57 + Log: Integrate with Sarathy. + Branch: cfgperl + +> t/op/chars.t + !> (integrate 57 files) +____________________________________________________________________________ +[ 3697] By: gsar on 1999/07/18 05:22:36 + Log: From: pvhp@forte.com (Peter Prymmer) + Date: Thu, 1 Jul 99 19:31:24 PDT + Message-Id: <9907020231.AA16942@forte.com> + Subject: [ID 19990701.031] 4 ctl chars on EBCDIC not asciiish enough + Branch: perl + + t/op/chars.t + ! MANIFEST ebcdic.c t/op/ord.t +____________________________________________________________________________ +[ 3696] By: gsar on 1999/07/18 05:11:02 + Log: display thread id in diagnostics (suggested by Dan Sugalski) + Branch: perl + ! lib/Carp.pm util.c +____________________________________________________________________________ +[ 3695] By: gsar on 1999/07/18 04:57:47 + Log: missing perldiag entry (from Dan Sugalski ) + Branch: perl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 3694] By: gsar on 1999/07/18 04:56:28 + Log: cache [NIUP]V conversions of defined READONLY values + From: Ilya Zakharevich + Date: Sun, 11 Jul 1999 04:39:44 -0400 + Message-ID: <19990711043944.A25944@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] Allow caching of numeric/string conversion + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 3693] By: gsar on 1999/07/18 03:53:38 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Sat, 17 Jul 1999 10:58:29 +0200 + Message-ID: <379144ad.13616689@smtp1.ibm.net> + Subject: [PATCH 5.005] Some lib/ExtUtils/Manifest.pm POD fixes + Branch: perl + ! lib/ExtUtils/Manifest.pm +____________________________________________________________________________ +[ 3692] By: gsar on 1999/07/18 03:51:03 + Log: remove spurious newSTATEOP() that causes goto to enter one too many + contexts when jumping between if and elsif blocks + Branch: perl + ! perly.c perly.y pp_ctl.c t/op/goto.t +____________________________________________________________________________ +[ 3691] By: gsar on 1999/07/18 01:49:59 + Log: detypo, update Changes + Branch: perl + ! Changes doio.c +____________________________________________________________________________ +[ 3690] By: gsar on 1999/07/18 01:16:59 + Log: mention the -Minteger effect on modulus (from Nathan Torkington) + Branch: perl + ! lib/integer.pm +____________________________________________________________________________ +[ 3689] By: gsar on 1999/07/18 00:47:17 + Log: ensure __END__ appears on a line by itself in wrapped + scripts (thanks to Steve Tolkin ); + mention caveat about successfull kill() + Branch: perl + ! pod/perlfunc.pod win32/bin/pl2bat.pl +____________________________________________________________________________ +[ 3688] By: gsar on 1999/07/17 20:47:44 + Log: noecho noops (from Nicholas Clark ) + Branch: perl + ! ext/SDBM_File/sdbm/Makefile.PL +____________________________________________________________________________ +[ 3687] By: gsar on 1999/07/17 20:43:27 + Log: make CC.pm use a distinct CCPP() macro rather than PP() + (suggested by Vishal Bhatia ) + Branch: perl + ! cc_runtime.h ext/B/B/CC.pm +____________________________________________________________________________ +[ 3686] By: gsar on 1999/07/17 20:39:08 + Log: tiny bug in vars.pm (from John Dlugosz) + Branch: perl + ! lib/vars.pm +____________________________________________________________________________ +[ 3685] By: gsar on 1999/07/17 20:37:27 + Log: applied suggested patch, along with later tweak + From: jan.dubois@ibm.net (Jan Dubois) + Date: Wed, 14 Jul 1999 23:53:43 +0200 + Message-ID: <37a902e7.15977234@smtp1.ibm.net> + Subject: Merge ActivePerl Stylesheet support etc into Pod::Html.pm + Branch: perl + ! lib/Pod/Html.pm +____________________________________________________________________________ +[ 3684] By: gsar on 1999/07/17 20:24:32 + Log: avoid #ifdef DEBUGGING in thrdvar.h (from Dominic Dunlop ) + Branch: perl + ! thrdvar.h +____________________________________________________________________________ +[ 3683] By: gsar on 1999/07/17 20:21:01 + Log: From: Ilya Zakharevich + Date: Tue, 13 Jul 1999 05:44:28 -0400 (EDT) + Message-Id: <199907130944.FAA04473@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] Segfaults if $^P + Branch: perl + ! embed.h embed.pl global.sym mg.c objXSUB.h perl.c perlapi.c + ! proto.h +____________________________________________________________________________ +[ 3682] By: gsar on 1999/07/17 20:04:17 + Log: use a better prefixify() heuristic than m/perl/ (prefix/lib/perl5 + and prefix/lib/perl5/man are ass_u_med only if those directories + actually exist; else prefix/{lib,man} are used) + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 3681] By: gsar on 1999/07/17 19:12:33 + Log: allow $foo{$x} and $bar[$i] for (\$) prototype + Branch: perl + ! op.c t/comp/proto.t +____________________________________________________________________________ +[ 3680] By: gsar on 1999/07/17 18:23:55 + Log: fix vec() on magic values + From: Ian Phillipps + Date: Mon, 12 Jul 1999 12:30:05 +0100 + Message-ID: <19990712123005.A11355@homer.diplex.co.uk> + Subject: [PATCH 5.005_57] Re: do_vecset is broken. Re: [ID 19990703.003]. + Branch: perl + ! doop.c t/op/tie.t +____________________________________________________________________________ +[ 3679] By: gsar on 1999/07/17 18:10:44 + Log: make system() return -1 and set $! if exec of child failed + From: Ilya Zakharevich + Date: Fri, 9 Jul 1999 05:21:13 -0400 + Message-ID: <19990709052113.A6201@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] system()==-1 and $! from failing fork/exec + Branch: perl + ! doio.c embed.h embed.pl global.sym objXSUB.h perlapi.c + ! pod/perlfunc.pod pp_sys.c proto.h t/op/exec.t +____________________________________________________________________________ +[ 3678] By: gsar on 1999/07/17 17:54:01 + Log: From: Ilya Zakharevich + Date: Fri, 9 Jul 1999 04:27:51 -0400 (EDT) + Message-Id: <199907090827.EAA03321@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] File descriptor leak in do_exec3 + Branch: perl + ! util.c +____________________________________________________________________________ +[ 3677] By: gsar on 1999/07/17 17:34:38 + Log: a modernized version of find2perl from Ken Pizzini ; + converted Ken's documentation outline into pod + Branch: perl + ! x2p/find2perl.PL +____________________________________________________________________________ +[ 3676] By: gsar on 1999/07/17 16:34:09 + Log: pod fixes (with minor edits) from Abigail, Ronald Kimball, Jon + Waddington, Tuomas Lukka, Steven Tolkin, Ian Phillipps, and + Steve Lidie + Branch: perl + ! pod/Win32.pod pod/perldelta.pod pod/perlfaq.pod + ! pod/perlfaq1.pod pod/perlfaq2.pod pod/perlfaq3.pod + ! pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfunc.pod + ! pod/perlguts.pod pod/perlhist.pod pod/perlop.pod + ! pod/perlport.pod pod/perltoc.pod pod/perltodo.pod + ! pod/perltoot.pod pod/perltootc.pod pod/perlvar.pod +____________________________________________________________________________ +[ 3675] By: gsar on 1999/07/17 00:16:53 + Log: backout redundant change#3628 + Branch: perl + ! Changes hints/bsdos.sh +____________________________________________________________________________ +[ 3674] By: jhi on 1999/07/15 14:26:03 + Log: Fix the bin/oct/hex constant overflow tests for + long long platforms. + Branch: cfgperl + ! t/pragma/warn/util +____________________________________________________________________________ +[ 3673] By: jhi on 1999/07/14 21:59:11 + Log: Fixed AIX dynamic loading and AIX shared Perl library. + Tested in: AIX 4.1.5 cc+useshrplib+usethreads, 4.1.5 cc, + 4.1.5 gcc+useshrplib+usethreads, 4.3.1 cc+useshrplib. + Hijacked win32/makedef.pl for more general purpose export + list building, now it is used (as toplevel makedef.pl) + for win32 and AIX (perl_exp.SH made unnecessary). + Because the export lists are now correct in AIX, no more linker + warnings about "Exported symbol not defined" should appear. + Branch: cfgperl + + makedef.pl + - perl_exp.SH win32/makedef.pl + ! MANIFEST Makefile.SH ext/DynaLoader/DynaLoader_pm.PL + ! ext/DynaLoader/dl_aix.xs hints/aix.sh win32/Makefile + ! win32/makefile.mk +____________________________________________________________________________ +[ 3672] By: gsar on 1999/07/14 17:12:13 + Log: minor efficiency tweak + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3671] By: jhi on 1999/07/14 16:22:39 + Log: The regexec.c change of #3606 caused a core dump in fbm_instr() + if its caller re_intuit_start() was entered with strend == strpos + because end_shift ended up as -1. The patch ain't necessarily + correct but least the core dump is avoided. + Branch: cfgperl + ! regexec.c +____________________________________________________________________________ +[ 3670] By: jhi on 1999/07/13 07:59:09 + Log: Integrate with Sarathy. + Branch: cfgperl + - XSlock.h win32/GenCAPI.pl win32/TEST win32/autosplit.pl + - win32/genxsdef.pl win32/makemain.pl win32/makeperldef.pl + !> (integrate 67 files) +____________________________________________________________________________ +[ 3669] By: gsar on 1999/07/12 06:14:54 + Log: fixups for sundry warnings about function pointers + Branch: perl + ! ext/re/re.xs intrpvar.h op.c perl.c perl.h pp_ctl.c scope.h + ! sv.c thrdvar.h util.c win32/Makefile win32/makefile.mk + ! win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 3668] By: gsar on 1999/07/12 04:11:58 + Log: tweaks for win32/borland + Branch: perl + ! t/pragma/locale.t win32/makedef.pl win32/makefile.mk +____________________________________________________________________________ +[ 3667] By: gsar on 1999/07/12 01:55:15 + Log: yet more cleanups of the PERL_OBJECT, MULTIPLICITY and USE_THREADS + builds; passing the implicit context is unified among the three + flavors; PERL_IMPLICIT_CONTEXT is auto-enabled under all three + flavors (see the top of perl.h) for testing; all varargs functions + foo() have a va_list-taking variant vfoo() for generating the + context-free versions; the PERL_OBJECT build should now be + hyper-compatible with CPAN extensions (C++ is totally out of + the picture) + + result has only been tested on Windows + + TODO: write docs on the THX rationale and idiomatic usage of + the Perl API + Branch: perl + - XSlock.h win32/GenCAPI.pl win32/TEST win32/autosplit.pl + - win32/genxsdef.pl win32/makemain.pl win32/makeperldef.pl + ! MANIFEST XSUB.h bytecode.pl deb.c dump.c embed.h embed.pl + ! embedvar.h ext/B/B.xs ext/ByteLoader/ByteLoader.xs + ! ext/ByteLoader/byterun.c ext/Data/Dumper/Dumper.xs + ! ext/Devel/Peek/Peek.xs ext/Fcntl/Fcntl.xs ext/IO/IO.xs + ! ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs + ! ext/SDBM_File/SDBM_File.xs ext/Socket/Socket.xs + ! ext/Thread/Thread.xs ext/attrs/attrs.xs ext/re/re.xs + ! global.sym globals.c intrpvar.h iperlsys.h + ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_Win32.pm + ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/base.pm + ! lib/warning.pm malloc.c objXSUB.h perl.c perl.h perlapi.c + ! perlapi.h perlio.c pp_sys.c proto.h regcomp.c regexec.c + ! scope.c sv.c thrdvar.h util.c win32/Makefile win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/config_h.PL + ! win32/dl_win32.xs win32/include/dirent.h + ! win32/include/sys/socket.h win32/makedef.pl win32/makefile.mk + ! win32/perllib.c win32/runperl.c win32/win32.c win32/win32.h + ! win32/win32iop.h win32/win32sck.c +____________________________________________________________________________ +[ 3666] By: jhi on 1999/07/11 22:00:13 + Log: Integrate with Sarathy. + Branch: cfgperl + !> op.c t/op/lex_assign.t +____________________________________________________________________________ +[ 3665] By: jhi on 1999/07/11 21:59:01 + Log: More manual sync. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 3664] By: gsar on 1999/07/11 19:11:07 + Log: change#3612 was buggy and failed to build Tk; applied Ilya's + remedy and related tests via private mail + Branch: perl + ! op.c t/op/lex_assign.t +____________________________________________________________________________ +[ 3663] By: jhi on 1999/07/11 15:04:37 + Log: Manual synchronization with Sarathy (some files + had drifted apart for no apparent reason), plus + I had a typo in dl_vms.xs Sarathy had fixed. + Branch: cfgperl + ! ext/DynaLoader/dl_vms.xs pod/perldelta.pod pp.c pp_sys.c +____________________________________________________________________________ +[ 3662] By: jhi on 1999/07/10 12:23:21 + Log: Change t/pragma/warn oct()/hex() overflow tests to use %Config + to adapt to the underlying platform (the binary, 0b1..., test + was broken in 64-bit platforms). Also change "hex" in the + warning messages to "hexadecimal" to match "binary" and "octal". + Branch: cfgperl + ! pod/perldiag.pod t/pragma/warn/util util.c +____________________________________________________________________________ +[ 3661] By: jhi on 1999/07/08 21:54:55 + Log: Integrate with Sarathy. + Branch: cfgperl + +> perlapi.c perlapi.h + !> (integrate 43 files) +____________________________________________________________________________ +[ 3660] By: gsar on 1999/07/08 18:47:35 + Log: more PERL_OBJECT cleanups (changes still untested on Unix!) + Branch: perl + + perlapi.c perlapi.h + ! MANIFEST XSUB.h emacs/ptags embed.h embed.pl embedvar.h + ! ext/Opcode/Opcode.xs global.sym globals.c intrpvar.h + ! iperlsys.h mg.c miniperlmain.c objXSUB.h perl.c perl.h perly.c + ! pp.c pp_ctl.c pp_hot.c proto.h regcomp.c regcomp.h regexec.c + ! scope.c scope.h sv.c thrdvar.h toke.c util.c win32/GenCAPI.pl + ! win32/Makefile win32/makedef.pl win32/perllib.c win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 3659] By: gsar on 1999/07/08 18:41:45 + Log: sundry cleanups for clean build on windows + Branch: perl + ! doio.c regcomp.c regcomp.h t/io/openpid.t utf8.c +____________________________________________________________________________ +[ 3658] By: gsar on 1999/07/08 01:24:25 + Log: fixes for logical bugs in the lexwarn patch; other tweaks to avoid + type mismatch problems + Branch: perl + ! doio.c gv.c op.c pp.c regcomp.c regexec.c run.c sv.c + ! t/pragma/warn/op toke.c utf8.c util.c +____________________________________________________________________________ +[ 3657] By: jhi on 1999/07/07 23:01:16 + Log: Integrate with Sarathy. perldiag.pod required manual editing. + Branch: cfgperl + ! pod/perldiag.pod + !> Changes configure.com ext/B/B/Deparse.pm + !> ext/ByteLoader/Makefile.PL ext/Fcntl/Fcntl.xs + !> ext/IO/lib/IO/File.pm gv.c iperlsys.h lib/ExtUtils/MM_VMS.pm + !> lib/File/Basename.pm lib/File/Spec/VMS.pm perlsfio.h + !> t/base/rs.t t/lib/io_multihomed.t t/lib/textfill.t + !> t/lib/textwrap.t t/op/filetest.t t/op/mkdir.t + !> t/pragma/overload.t thread.h vms/vms.c +____________________________________________________________________________ +[ 3656] By: gsar on 1999/07/07 21:04:38 + Log: integrate cfgperl contents + Branch: perl + +> lib/unicode/Is/ASCII.pl lib/unicode/Is/Cntrl.pl + +> lib/unicode/Is/Graph.pl lib/unicode/Is/Punct.pl + +> lib/unicode/Is/Word.pl lib/unicode/Is/XDigit.pl + ! Changes + !> (integrate 45 files) +____________________________________________________________________________ +[ 3655] By: gsar on 1999/07/07 18:55:45 + Log: filetest.t and ByteLoader build tweaks from Peter Prymmer + + Branch: perl + ! ext/ByteLoader/Makefile.PL t/op/filetest.t +____________________________________________________________________________ +[ 3654] By: gsar on 1999/07/07 18:47:03 + Log: change#1889 mistakenly removed F_SETLK + Branch: perl + ! ext/Fcntl/Fcntl.xs +____________________________________________________________________________ +[ 3653] By: gsar on 1999/07/07 18:42:42 + Log: B::Deparse update + From: Stephen McCamant + Date: Mon, 5 Jul 1999 17:57:03 -0500 (CDT) + Message-ID: <14209.13729.738691.610723@alias-2.pr.mcs.net> + Subject: [PATCH _57, long] B::Deparse 0.58 + Branch: perl + ! ext/B/B/Deparse.pm +____________________________________________________________________________ +[ 3652] By: gsar on 1999/07/07 18:41:07 + Log: From: Ilya Zakharevich + Date: Mon, 5 Jul 1999 18:24:19 -0400 (EDT) + Message-Id: <199907052224.SAA10454@monk.mps.ohio-state.edu> + Subject: Re: [ID 19990705.001] Overloading boolean conversion + Branch: perl + ! gv.c t/pragma/overload.t +____________________________________________________________________________ +[ 3651] By: gsar on 1999/07/07 17:47:30 + Log: missing PerlIO_reopen() (suggested by sam@daemoninc.com) + Branch: perl + ! perlsfio.h +____________________________________________________________________________ +[ 3650] By: gsar on 1999/07/07 17:45:52 + Log: applied new parts of suggested patch + From: Charles Bailey + Date: Fri, 02 Jul 1999 19:18:41 -0400 (EDT) + Message-id: <01JD3M8W1VXS000S5G@mail.newman.upenn.edu> + Subject: [PATCH 5.005_57] Consolidated VMS patch + Branch: perl + ! configure.com ext/IO/lib/IO/File.pm iperlsys.h + ! lib/ExtUtils/MM_VMS.pm lib/File/Basename.pm + ! lib/File/Spec/VMS.pm pod/perldiag.pod t/base/rs.t + ! t/lib/io_multihomed.t t/lib/textfill.t t/lib/textwrap.t + ! t/op/filetest.t t/op/mkdir.t thread.h vms/vms.c +____________________________________________________________________________ +[ 3649] By: jhi on 1999/07/07 13:38:02 + Log: Sync regcomp warn with reality. + Branch: cfgperl + ! t/pragma/warn/regcomp +____________________________________________________________________________ +[ 3648] By: jhi on 1999/07/07 13:04:55 + Log: Integrate with Sarathy; one conflict in t/pragma/warn/recgomp + resolved manually. + Branch: cfgperl + +> pod/perllexwarn.pod t/pragma/warn/6default t/pragma/warn/av + +> t/pragma/warn/doop t/pragma/warn/hv t/pragma/warn/malloc + +> t/pragma/warn/perlio t/pragma/warn/run t/pragma/warn/utf8 + - README.lexwarn + !> (integrate 79 files) +____________________________________________________________________________ +[ 3647] By: gsar on 1999/07/07 10:32:03 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Thu, 01 Jul 1999 11:17:53 +0200 + Message-ID: <377b2ca4.14467042@smtp1.ibm.net> + Subject: [PATCH 5.005_57] MakeMaker support for pod2html + Branch: perl + ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_Win32.pm + ! lib/ExtUtils/MakeMaker.pm +____________________________________________________________________________ +[ 3646] By: gsar on 1999/07/07 10:27:55 + Log: fix undocumented IO::Handle functions as suggested + by cj10@cam.ac.uk + Branch: perl + ! ext/IO/lib/IO/Handle.pm +____________________________________________________________________________ +[ 3645] By: gsar on 1999/07/07 10:18:55 + Log: prohibit thread join()ing itself (from Dan Sugalski) + Branch: perl + ! ext/Thread/Thread.xs +____________________________________________________________________________ +[ 3644] By: gsar on 1999/07/07 10:14:26 + Log: From: "Vishal Bhatia" + Date: Wed, 30 Jun 1999 14:02:42 -0700 + Message-ID: + Subject: [PATCH 5.005_57] Compiler and XSUBS + Branch: perl + ! ext/B/B/C.pm +____________________________________________________________________________ +[ 3643] By: gsar on 1999/07/07 10:08:38 + Log: mention C syntax + (from François Désarménien ) + Branch: perl + ! pod/perlsyn.pod +____________________________________________________________________________ +[ 3642] By: gsar on 1999/07/07 10:03:24 + Log: From: Doug MacEachern + Date: Sun, 27 Jun 1999 22:43:25 -0700 (PDT) + Message-ID: + Subject: [PATCH 5.005_57] add B::PV::{LEN,CUR} + Branch: perl + ! ext/B/B.xs +____________________________________________________________________________ +[ 3641] By: gsar on 1999/07/07 10:00:57 + Log: slightly modified version of suggested patch + From: Steven N. Hirsch + Date: Mon, 28 Jun 1999 14:23:59 -0400 + Message-Id: <199906281823.OAA24912@stargate.btv.ibm.com> + Subject: [ID 19990628.007] POSIX::tmpnam() broken for threaded 5.00503 + Branch: perl + ! ext/POSIX/POSIX.xs +____________________________________________________________________________ +[ 3640] By: gsar on 1999/07/07 09:45:43 + Log: lexical warnings update (warning.t fails one test + due to leaked scalar, investigation pending) + From: paul.marquess@bt.com + Date: Sat, 26 Jun 1999 23:19:52 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB29C6C8E@mbtlipnt02.btlabs.bt.co.uk> + Subject: [PATCH 5.005_57] Lexical Warnings - mandatory warning are now default warnings + Branch: perl + + pod/perllexwarn.pod t/pragma/warn/6default t/pragma/warn/av + + t/pragma/warn/doop t/pragma/warn/hv t/pragma/warn/malloc + + t/pragma/warn/perlio t/pragma/warn/run t/pragma/warn/utf8 + - README.lexwarn + ! Changes MANIFEST av.c djgpp/djgpp.c doio.c doop.c + ! ext/B/B/Asmdata.pm ext/ByteLoader/byterun.c + ! ext/ByteLoader/byterun.h gv.c hv.c jpl/JNI/JNI.xs + ! lib/warning.pm mg.c op.c os2/os2.c perl.c perlio.c + ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod + ! pod/perlmodlib.pod pod/perlrun.pod pod/perlvar.pod pp.c + ! pp_ctl.c run.c sv.c t/pragma/warn/3both t/pragma/warn/doio + ! t/pragma/warn/gv t/pragma/warn/mg t/pragma/warn/op + ! t/pragma/warn/perl t/pragma/warn/perly t/pragma/warn/pp + ! t/pragma/warn/pp_ctl t/pragma/warn/pp_hot t/pragma/warn/pp_sys + ! t/pragma/warn/regcomp t/pragma/warn/regexec t/pragma/warn/sv + ! t/pragma/warn/taint t/pragma/warn/toke t/pragma/warn/universal + ! t/pragma/warn/util t/pragma/warning.t toke.c utf8.c util.c + ! warning.h warning.pl win32/win32.c +____________________________________________________________________________ +[ 3639] By: gsar on 1999/07/07 08:09:30 + Log: From: Brian Jepson + Date: Sat, 26 Jun 1999 10:47:45 -0500 (EST) + Message-ID: + Subject: Patch to JPL example program + Branch: perl + ! jpl/JPL_Rolo/JPL_Rolo.jpl +____________________________________________________________________________ +[ 3638] By: jhi on 1999/07/07 08:07:58 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 34 files) +____________________________________________________________________________ +[ 3637] By: gsar on 1999/07/07 08:07:49 + Log: From: Stephen McCamant + Date: Fri, 25 Jun 1999 13:38:44 -0500 (CDT) + Message-ID: <14193.25034.113373.245377@alias-2.pr.mcs.net> + Subject: [PATCH _57, long] Eliminate CONDOPs + Branch: perl + ! bytecode.pl dump.c ext/B/B.pm ext/B/B.xs ext/B/B/Bblock.pm + ! ext/B/B/Bytecode.pm ext/B/B/C.pm ext/B/B/CC.pm + ! ext/B/B/Debug.pm ext/B/B/Xref.pm ext/B/ramblings/flip-flop + ! ext/B/typemap op.c op.h opcode.h opcode.pl perl.h + ! pod/perltoc.pod pp_ctl.c pp_hot.c +____________________________________________________________________________ +[ 3636] By: gsar on 1999/07/07 07:50:51 + Log: adapted suggested patch for IO-1.20x + From: ian@dial.pipex.com + Date: Fri, 25 Jun 1999 10:39:42 +0100 + Message-Id: <199906250939.KAA02152@homer.diplex.co.uk> + Subject: [ID 19990625.001] Minor fixes for IO::Socket.pm + Branch: perl + ! ext/IO/lib/IO/Socket.pm +____________________________________________________________________________ +[ 3635] By: gsar on 1999/07/07 07:26:05 + Log: PowerMAX hints update from Tom Horsley + Branch: perl + ! hints/powerux.sh +____________________________________________________________________________ +[ 3634] By: gsar on 1999/07/07 07:20:02 + Log: From: Hugo van der Sanden + Date: Wed, 23 Jun 1999 16:16:05 +0100 + Message-Id: <199906231516.QAA23851@crypt.compulink.co.uk> + Subject: [PATCH 5.005_57] memleak in optimizer + Branch: perl + ! embed.h embed.pl objXSUB.h op.c proto.h +____________________________________________________________________________ +[ 3633] By: gsar on 1999/07/07 07:10:52 + Log: add do-not-edit caveats for files generated by opcode.pl + (suggested by Hugo van der Sanden) + Branch: perl + ! opcode.h opcode.pl pp.sym pp_proto.h +____________________________________________________________________________ +[ 3632] By: gsar on 1999/07/07 06:41:13 + Log: better diagnostics on read operations from write-only + filehandles + Branch: perl + ! doio.c perl.c pod/perldelta.pod pod/perldiag.pod pp_hot.c + ! pp_sys.c t/pragma/warn/pp_hot t/pragma/warn/pp_sys +____________________________________________________________________________ +[ 3631] By: gsar on 1999/07/07 02:03:34 + Log: make Sys::Hostname safe against C<$SIG{CHLD}='IGNORE'> (suggested + by David Muir Sharnoff ) + Branch: perl + ! lib/Sys/Hostname.pm +____________________________________________________________________________ +[ 3630] By: gsar on 1999/07/07 01:57:16 + Log: From: "Vishal Bhatia" + Date: Sun, 20 Jun 1999 17:17:17 -0700 + Message-ID: + Subject: [PATCH 5.005_57] Minor bug fix in pp_require + Branch: perl + ! ext/B/B/CC.pm +____________________________________________________________________________ +[ 3629] By: gsar on 1999/07/07 01:46:03 + Log: installperl should write normal messages to STDOUT, not STDERR + Branch: perl + ! installperl +____________________________________________________________________________ +[ 3628] By: gsar on 1999/07/07 01:41:25 + Log: BSD/OS needs -DSTRUCT_TM_HASZONE as of 4.0.1 (from mab@alink.net) + Branch: perl + ! hints/bsdos.sh +____________________________________________________________________________ +[ 3627] By: gsar on 1999/07/07 00:27:10 + Log: make diagnostic on C etc., more readable + Branch: perl + ! op.c +____________________________________________________________________________ +[ 3626] By: gsar on 1999/07/06 23:47:27 + Log: From: Andy Dougherty + Date: Thu, 17 Jun 1999 12:07:11 -0400 (EDT) + Message-Id: + Subject: [ID 19990617.004 [PATCH 5.005_57] make distclean fixes] + Branch: perl + ! Makefile.SH utils/Makefile +____________________________________________________________________________ +[ 3625] By: jhi on 1999/07/06 21:50:46 + Log: Some new files of #3624 missing from MANIFEST. + Branch: cfgperl + ! MANIFEST +____________________________________________________________________________ +[ 3624] By: jhi on 1999/07/06 21:47:04 + Log: POSIX [[:character class:]] support for standard, locale, + and utf8. If both utf8 and locale are on, utf8 wins. + I don't fully understand why so many tables changed in + lib/unicode because of "make" -- maybe it was just overdue. + Branch: cfgperl + + lib/unicode/Is/ASCII.pl lib/unicode/Is/Cntrl.pl + + lib/unicode/Is/Graph.pl lib/unicode/Is/Punct.pl + + lib/unicode/Is/Word.pl lib/unicode/Is/XDigit.pl + ! MANIFEST Todo-5.005 embed.h embed.pl embedvar.h global.sym + ! handy.h intrpvar.h lib/unicode/Bidirectional.pl + ! lib/unicode/Block.pl lib/unicode/Category.pl + ! lib/unicode/Is/Alnum.pl lib/unicode/Is/Alpha.pl + ! lib/unicode/Is/BidiL.pl lib/unicode/Is/Digit.pl + ! lib/unicode/Is/L.pl lib/unicode/Is/Lo.pl + ! lib/unicode/Is/Lower.pl lib/unicode/Is/Print.pl + ! lib/unicode/Is/Space.pl lib/unicode/Is/Upper.pl + ! lib/unicode/Is/Z.pl lib/unicode/Is/Zs.pl lib/unicode/Name.pl + ! lib/unicode/To/Digit.pl lib/unicode/mktables.PL objXSUB.h + ! pod/perldelta.pod pod/perldiag.pod pod/perlre.pod proto.h + ! regcomp.c regcomp.h regcomp.sym regexec.c regnodes.h + ! t/op/pat.t t/op/re_tests t/op/regexp.t t/pragma/utf8.t + ! t/pragma/warn/regcomp utf8.c +____________________________________________________________________________ +[ 3623] By: gsar on 1999/07/06 20:52:48 + Log: From: Ilya Zakharevich + Date: Wed, 16 Jun 1999 14:57:22 -0400 + Message-ID: <19990616145722.B16258@monk.mps.ohio-state.edu> + Subject: [PATCH 5.00557] Devel::Peek + Branch: perl + ! ext/Devel/Peek/Peek.pm ext/Devel/Peek/Peek.xs +____________________________________________________________________________ +[ 3622] By: gsar on 1999/07/06 20:22:59 + Log: applied patch after demunging headers with appropriate paths + From: "Vishal Bhatia" + Date: Sat, 12 Jun 1999 08:23:59 -0700 + Message-ID: + Subject: [Patch 5.005_57] unsigned arithmetic (Compiler) + Branch: perl + ! cc_runtime.h ext/B/B.xs ext/B/B/CC.pm ext/B/B/Stackobj.pm + ! ext/B/defsubs.h.PL lib/ExtUtils/typemap t/harness +____________________________________________________________________________ +[ 3621] By: gsar on 1999/07/06 20:10:50 + Log: From: Ilya Zakharevich + Date: Thu, 10 Jun 1999 04:05:22 -0400 (EDT) + Message-Id: <199906100805.EAA18216@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] Optimize 2>&1 in commands + Branch: perl + ! doio.c +____________________________________________________________________________ +[ 3620] By: jhi on 1999/07/06 19:16:47 + Log: Mention EPOC and SOCKS. + Branch: cfgperl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 3619] By: gsar on 1999/07/06 16:52:37 + Log: fix int vs STRLEN issue + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 3618] By: jhi on 1999/07/06 16:52:20 + Log: There ain't Perl_atonv(). + Branch: cfgperl + ! ext/ByteLoader/bytecode.h +____________________________________________________________________________ +[ 3617] By: jhi on 1999/07/06 15:55:22 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Makefile.SH +____________________________________________________________________________ +[ 3616] By: jhi on 1999/07/06 15:54:09 + Log: Tweak for #3613. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3615] By: gsar on 1999/07/06 11:00:21 + Log: From: "Todd C. Miller" + Date: Sun, 13 Jun 1999 17:46:13 -0600 (MDT) + Message-Id: <199906132346.RAA26632@xerxes.courtesan.com> + Subject: [ID 19990613.003 linklibperl set incorrectly in Makefile.SH for OpenBSD] + Branch: perl + ! Makefile.SH +____________________________________________________________________________ +[ 3614] By: jhi on 1999/07/06 10:44:48 + Log: Integrate with Sarathy. + Branch: cfgperl + !> ext/IO/lib/IO/File.pm op.c op.h opcode.h opcode.pl perl.h pp.h + !> pp.sym pp_proto.h t/base/rs.t t/pragma/warn/op +____________________________________________________________________________ +[ 3613] By: jhi on 1999/07/06 10:43:20 + Log: From: Nathan Kurz + Subject: [ID 19990612.001 compiling three deep modules within ext/] + ply-To: nate@valleytel.net + erl5-porters@perl.org + Date: Sat, 12 Jun 1999 01:26:04 -0500 + Message-Id: <199906120626.BAA04996@trinkpad.valleytel.net> + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3612] By: gsar on 1999/07/06 10:17:52 + Log: From: Ilya Zakharevich + Date: Sat, 12 Jun 1999 04:49:09 -0400 (EDT) + Message-Id: <199906120849.EAA26986@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] Optimize away OP_SASSIGN + Branch: perl + ! op.c op.h opcode.h opcode.pl pp.h pp.sym pp_proto.h +____________________________________________________________________________ +[ 3611] By: gsar on 1999/07/06 09:51:20 + Log: From: pvhp@forte.com (Peter Prymmer) + Date: Fri, 11 Jun 99 17:07:19 PDT + Message-Id: <9906120007.AA13802@forte.com> + Subject: [PATCH _03 && _57]portability fix for IO::File and FileHandle + Branch: perl + ! ext/IO/lib/IO/File.pm +____________________________________________________________________________ +[ 3610] By: gsar on 1999/07/06 09:37:37 + Log: fix for C<$/ = 42> setting paragraph mode (applied with small + tweak) + From: "M.J.T. Guy" + Date: Wed, 09 Jun 1999 18:27:51 +0100 + Message-Id: + Subject: Re: [ID 19990608.002] Possible bug with binmode and on Perl 5.005_03 Win32 + Branch: perl + ! perl.h t/base/rs.t +____________________________________________________________________________ +[ 3609] By: jhi on 1999/07/06 09:28:48 + Log: Integrate with Sarathy. + Branch: cfgperl + !> (integrate 49 files) +____________________________________________________________________________ +[ 3608] By: gsar on 1999/07/06 09:28:21 + Log: test tweak + Branch: perl + ! t/pragma/warn/op +____________________________________________________________________________ +[ 3607] By: jhi on 1999/07/06 09:22:48 + Log: Put back the cygwin32 Configure fix of 3582 undone by 3597. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3606] By: gsar on 1999/07/06 09:05:02 + Log: applied slightly tweaked version of suggested patch for + improved RE API + From: Ilya Zakharevich + Date: Wed, 9 Jun 1999 18:14:27 -0400 (EDT) + Message-Id: <199906092214.SAA14126@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_57] REx engine rehash + Branch: perl + ! Changes dump.c embed.h embed.pl embedvar.h ext/re/Makefile.PL + ! ext/re/re.xs global.sym objXSUB.h perl.c perl.h pp.c pp_hot.c + ! proto.h regcomp.c regcomp.h regexec.c regexp.h thrdvar.h + ! util.c +____________________________________________________________________________ +[ 3605] By: gsar on 1999/07/06 08:54:03 + Log: bug in change#3602 (cpp conditionals not allowed inside macro args) + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 3604] By: gsar on 1999/07/06 07:08:30 + Log: From: paul.marquess@bt.com + Date: Tue, 8 Jun 1999 22:37:58 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB29C6C3C@mbtlipnt02.btlabs.bt.co.uk> + Subject: [PATCH 5.005_57] DB_File 1.67 + Branch: perl + ! ext/DB_File/Changes ext/DB_File/DB_File.pm + ! ext/DB_File/DB_File.xs ext/DB_File/typemap +____________________________________________________________________________ +[ 3603] By: gsar on 1999/07/06 07:04:50 + Log: From: paul.marquess@bt.com + Date: Tue, 8 Jun 1999 22:34:01 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB29C6C3B@mbtlipnt02.btlabs.bt.co.uk> + Subject: [PATCH 5.005_57] DBM Filters + Branch: perl + ! ext/GDBM_File/GDBM_File.pm ext/GDBM_File/GDBM_File.xs + ! ext/NDBM_File/NDBM_File.pm ext/NDBM_File/NDBM_File.xs + ! ext/ODBM_File/ODBM_File.pm ext/ODBM_File/ODBM_File.xs + ! ext/SDBM_File/SDBM_File.pm ext/SDBM_File/SDBM_File.xs +____________________________________________________________________________ +[ 3602] By: gsar on 1999/07/06 07:00:01 + Log: slightly tweaked version of suggested patch + From: Dan Sugalski + Date: Tue, 08 Jun 1999 14:09:38 -0700 + Message-Id: <3.0.6.32.19990608140938.030f12e0@ous.edu> + Subject: [PATCH 5.005_57]Use NV instead of double in the core + Branch: perl + ! av.h bytecode.pl cv.h doio.c dump.c embed.pl + ! ext/ByteLoader/bytecode.h ext/ByteLoader/byterun.c hv.h + ! intrpvar.h mg.c op.c perl.h pp.c pp.h pp_ctl.c pp_sys.c + ! proto.h sv.c sv.h toke.c universal.c util.c +____________________________________________________________________________ +[ 3601] By: gsar on 1999/07/06 06:52:57 + Log: integrate cfgperl contents into mainline + Branch: perl + +> README.epoc epoc/config.h epoc/epoc.c epoc/epocish.h + +> epoc/perl.mmp epoc/perl.pkg + !> (integrate 30 files) +____________________________________________________________________________ +[ 3598] By: jhi on 1999/07/05 20:02:55 + Log: Integrate with mainperl. + Branch: cfgperl + +> lib/CGI/Pretty.pm + !> Changes ext/B/B/Bblock.pm ext/B/B/C.pm ext/B/B/CC.pm + !> ext/B/B/Stackobj.pm ext/GDBM_File/GDBM_File.xs mg.c op.c + !> opcode.h opcode.pl pp_sys.c t/lib/io_udp.t thread.h toke.c + !> vms/descrip_mms.template vms/subconfigure.com vms/vms.c + !> vms/vmsish.h +____________________________________________________________________________ +[ 3597] By: jhi on 1999/07/05 19:59:48 + Log: Hack SOCKS support some more plus a patch from Andy Dougherty + that addresses the notorious "Additional libraries" question. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH doio.c ext/Socket/Socket.xs hints/aix.sh perl.c + ! pp_sys.c +____________________________________________________________________________ +[ 3596] By: gsar on 1999/07/05 18:30:51 + Log: From: Ilya Zakharevich + Date: Tue, 8 Jun 1999 04:47:58 -0400 (EDT) + Message-Id: <199906080847.EAA03810@monk.mps.ohio-state.edu> + Subject: [PATCH 5.00557] Long-standing UDP sockets bug on OS/2 + Branch: perl + ! pp_sys.c t/lib/io_udp.t +____________________________________________________________________________ +[ 3595] By: gsar on 1999/07/05 18:29:08 + Log: From: Ilya Zakharevich + Date: Tue, 8 Jun 1999 04:44:58 -0400 (EDT) + Message-Id: <199906080844.EAA03784@monk.mps.ohio-state.edu> + Subject: [PATCH 5.00557] Setting $^E wipes out $! + Branch: perl + ! mg.c +____________________________________________________________________________ +[ 3594] By: gsar on 1999/07/05 18:24:53 + Log: hand-apply whitespace mutiliated patch + From: Dan Sugalski + Date: Mon, 07 Jun 1999 14:46:42 -0700 + Message-Id: <3.0.6.32.19990607144642.03079100@ous.edu> + Subject: [PATCH 5.005_57]Updated VMS patch + Branch: perl + ! thread.h vms/descrip_mms.template vms/subconfigure.com + ! vms/vms.c vms/vmsish.h +____________________________________________________________________________ +[ 3593] By: gsar on 1999/07/05 17:53:04 + Log: applied parts not duplicated by previous patches + From: "Vishal Bhatia" + Date: Sat, 05 Jun 1999 08:42:17 -0700 + Message-ID: + Subject: Fwd: [PATCH 5.005_57] consolidated compiler changes + Branch: perl + ! Changes ext/B/B/Bblock.pm ext/B/B/C.pm ext/B/B/CC.pm + ! ext/B/B/Stackobj.pm +____________________________________________________________________________ +[ 3592] By: jhi on 1999/07/05 17:17:22 + Log: AIX threaded build, plus few more on the side. + Branch: cfgperl + ! embed.h embed.pl ext/DynaLoader/dl_aix.xs + ! ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_rhapsody.xs + ! ext/DynaLoader/dl_vms.xs hints/aix.sh objXSUB.h perl.h + ! perl_exp.SH pp_ctl.c proto.h toke.c util.c +____________________________________________________________________________ +[ 3591] By: gsar on 1999/07/05 16:52:34 + Log: "\e" and "\a" didn't produce right escape under EBCDIC + From: pvhp@forte.com (Peter Prymmer) + Date: Fri, 4 Jun 99 12:00:27 PDT + Message-Id: <9906041900.AA28387@forte.com> + Subject: [PATCH 5.005_57]lingering ASCIIism in tokener + Branch: perl + ! toke.c +____________________________________________________________________________ +[ 3590] By: gsar on 1999/07/05 16:40:01 + Log: s/scalar ref constructor/single ref constructor/ (suggested + by Stephen McCamant) + Branch: perl + ! opcode.h opcode.pl +____________________________________________________________________________ +[ 3589] By: gsar on 1999/07/05 16:34:06 + Log: no such thing as gdbm_clearerr() (from Andy Dougherty) + Branch: perl + ! ext/GDBM_File/GDBM_File.xs +____________________________________________________________________________ +[ 3588] By: gsar on 1999/07/05 16:29:39 + Log: allow C<-foo> under C (behavior of C<-$string> + is unchanged still) + Branch: perl + ! op.c +____________________________________________________________________________ +[ 3587] By: jhi on 1999/07/05 10:31:43 + Log: Make perl_exp.SH smarter about what to include and what to exclude. + Branch: cfgperl + ! perl_exp.SH +____________________________________________________________________________ +[ 3586] By: jhi on 1999/07/05 09:29:31 + Log: Remove unnecessary and extraneous my $i = 0. + Branch: cfgperl + ! bytecode.pl +____________________________________________________________________________ +[ 3585] By: jhi on 1999/07/05 07:28:59 + Log: Integrate with mainperl. + Branch: cfgperl + !> (integrate 30 files) +____________________________________________________________________________ +[ 3584] By: gsar on 1999/07/05 05:36:28 + Log: From: Vishal Bhatia + Date: Thu, 03 Jun 1999 00:57:48 PDT + Message-ID: <19990603075749.86665.qmail@hotmail.com> + Subject: Re: [PATCH 5.005_57] pp_sort sorted out + Branch: perl + ! ext/B/B/Bblock.pm ext/B/B/C.pm ext/B/B/CC.pm +____________________________________________________________________________ +[ 3583] By: gsar on 1999/07/05 05:31:19 + Log: suppress fancy display when in verbose mode (suggested by + Paul Johnson ) + Branch: perl + ! lib/Test/Harness.pm +____________________________________________________________________________ +[ 3582] By: gsar on 1999/07/05 05:17:12 + Log: cygwin32 update + From: "Fifer, Eric" + Date: Wed, 2 Jun 1999 15:16:05 +0100 + Message-Id: <71E287AB0D94D111BBD600600849EC8185EDD9@POST> + Subject: [ID 19990602.003] perl5.005_03 (CORE) cygwin32 port + Branch: perl + ! Configure Makefile.SH README.cygwin32 cygwin32/Makefile.SHs + ! cygwin32/build-instructions.READFIRST + ! cygwin32/build-instructions.charles-wilson + ! cygwin32/build-instructions.sebastien-barre + ! cygwin32/build-instructions.steven-morlock + ! cygwin32/build-instructions.steven-morlock2 doio.c dosish.h + ! ext/POSIX/Makefile.PL ext/POSIX/POSIX.xs hints/cygwin32.sh + ! lib/Cwd.pm lib/ExtUtils/MM_Cygwin.pm perl.h pp_hot.c + ! t/op/magic.t util.c +____________________________________________________________________________ +[ 3581] By: gsar on 1999/07/05 02:46:18 + Log: NeXT doesn't have FD_CLOEXEC (suggested by Hans Mulder) + Branch: perl + ! util.c +____________________________________________________________________________ +[ 3580] By: gsar on 1999/07/05 02:38:03 + Log: From: "Ed Peschko" + Date: Mon, 31 May 1999 18:18:13 -0600 + Message-ID: <19990601001813.AAA17834@csgsystems.com> + Subject: [ PATCH perl5.005_57 ] new perlcc + regression tests + Branch: perl + ! t/TEST t/UTEST t/harness utils/perlcc.PL +____________________________________________________________________________ +[ 3579] By: gsar on 1999/07/05 01:20:58 + Log: compatibility tweak for Class::Struct + Branch: perl + ! lib/Class/Struct.pm +____________________________________________________________________________ +[ 3578] By: jhi on 1999/07/04 23:26:01 + Log: Miscellaneus AIX fixes + SOCKS support. + Branch: cfgperl + ! Configure Makefile.SH Porting/Glossary Porting/config.sh + ! Porting/config_H config_h.SH doio.c ext/Socket/Socket.xs + ! hints/aix.sh pp_sys.c +____________________________________________________________________________ +[ 3577] By: gsar on 1999/07/04 23:07:39 + Log: test tweak + Branch: perl + ! t/io/openpid.t +____________________________________________________________________________ +[ 3576] By: jhi on 1999/07/04 22:39:23 + Log: Integrate with mainperl. + Branch: cfgperl + +> t/io/openpid.t + - win32/perlhost.h + !> (integrate 51 files) +____________________________________________________________________________ +[ 3575] By: jhi on 1999/07/04 22:26:48 + Log: Added 64-bit support for AIX 4.3 or better + based on Martin H. Rusoff's observations. + Branch: cfgperl + ! Configure config_h.SH hints/aix.sh +____________________________________________________________________________ +[ 3574] By: jhi on 1999/07/04 21:34:47 + Log: Do not throw away gccvers compilation errors. + From: Andy Dougherty + To: Ron Seguin + Cc: Perl Porters + Subject: [PATCH] Re: [ID 19990625.011] WHOA There + Date: Mon, 28 Jun 1999 12:36:38 -0400 (EDT) + Message-Id: + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3573] By: gsar on 1999/07/04 21:10:32 + Log: adapted suggested tests for addition to testsuite + From: RonaldWS@aol.com + Date: Sun, 30 May 1999 16:27:28 EDT + Message-Id: <25cd799f.2482f930@aol.com> + Subject: [19990530.007] Open with pipe | does not return pid under win32 + Branch: perl + + t/io/openpid.t + ! MANIFEST win32/win32.c +____________________________________________________________________________ +[ 3572] By: gsar on 1999/07/04 20:29:32 + Log: perl_run() should call my_exit(0) for normal completion + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 3571] By: jhi on 1999/07/04 20:10:44 + Log: Add test for change #3568 plus general cleanup. + Branch: cfgperl + ! t/pragma/locale.t +____________________________________________________________________________ +[ 3570] By: gsar on 1999/07/04 20:03:21 + Log: make overload, Data::Dumper, and dumpvar understand qr// stringify + overloading + Branch: perl + ! ext/Data/Dumper/Dumper.pm ext/Data/Dumper/Dumper.xs + ! lib/Dumpvalue.pm lib/dumpvar.pl lib/overload.pm pp_ctl.c +____________________________________________________________________________ +[ 3569] By: gsar on 1999/07/04 18:04:48 + Log: make AIX dynaloading work when libperl is shared (and thus under + mod_perl etc.) + From: Jens-Uwe Mager + Date: Sat, 29 May 1999 17:09:52 +0200 + Message-Id: <199905291509.RAA43978@ans.helios.de> + Subject: [19990529.002] DynaLoader does not work properly if perl is not the main program (AIX) + Branch: perl + ! ext/DynaLoader/dl_aix.xs +____________________________________________________________________________ +[ 3568] By: jhi on 1999/07/04 14:54:23 + Log: pp_lc/pp_lcfirst/pp_quotemeta/pp_uc/pp_ucfirst were not calling mg_set(). + This resulted for example in the 'o' magic not being cleared by + magic_setcollxfrm(), which resulted in strange cmp results. + The bug was reported originally in the message + Subject: Bug with locale + From: Jan Starzynski + To: perlbug@perl.com + Date: Fri, 09 Apr 1999 13:23:07 +0200 + Message-ID: <370DE31B.DAEE1332@planet.de> + Branch: cfgperl + ! pp.c +____________________________________________________________________________ +[ 3567] By: gsar on 1999/07/04 02:38:34 + Log: remove misleading info on defined(&func), unclutter deprecation + about defined(@array) + Branch: perl + ! op.c pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod + ! t/pragma/warn/op +____________________________________________________________________________ +[ 3566] By: gsar on 1999/07/04 01:46:31 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Wed, 26 May 1999 22:07:17 +0200 + Message-ID: <374c53ac.10322322@smtp1.ibm.net> + Subject: [PATCH 5.005_57] MINGW32 and EGCS 1.1.2 support + Branch: perl + ! Changes win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 3565] By: gsar on 1999/07/04 01:26:02 + Log: newer version of perlxstut from Jeff Okamoto (slightly edited + for win32 issues) + Branch: perl + ! pod/perlxstut.pod +____________________________________________________________________________ +[ 3564] By: gsar on 1999/07/02 03:09:04 + Log: avoid warnings + Branch: perl + ! ext/Thread/Thread/Specific.pm lib/fields.pm +____________________________________________________________________________ +[ 3563] By: gsar on 1999/06/28 19:23:47 + Log: inc version (for CPAN.pm sanity) + Branch: perl + ! lib/Text/ParseWords.pm +____________________________________________________________________________ +[ 3562] By: gsar on 1999/06/28 19:19:01 + Log: regen perltoc + Branch: perl + ! pod/perltoc.pod +____________________________________________________________________________ +[ 3561] By: gsar on 1999/06/28 19:08:41 + Log: From: Damian Conway + Date: Wed, 26 May 1999 00:58:35 -0400 + Message-Id: <199905260458.AAA06411@defender.perl.org> + Subject: [19990526.002] Misc. improvements to Class:Struct + Branch: perl + ! MANIFEST lib/Class/Struct.pm +____________________________________________________________________________ +[ 3560] By: gsar on 1999/06/28 18:50:52 + Log: remove bogus PL_optype_size + Branch: perl + ! bytecode.pl ext/ByteLoader/byterun.h +____________________________________________________________________________ +[ 3559] By: gsar on 1999/06/28 18:22:26 + Log: upgrade CGI.pm to v2.53 (CGI/{Apache,Switch}.pm NOT deleted) + Branch: perl + + lib/CGI/Pretty.pm + ! eg/cgi/file_upload.cgi lib/CGI.pm lib/CGI/Carp.pm + ! lib/CGI/Cookie.pm lib/CGI/Fast.pm t/lib/cgi-form.t + ! t/lib/cgi-html.t t/lib/cgi-request.t +____________________________________________________________________________ +[ 3558] By: jhi on 1999/06/28 07:30:21 + Log: Change Olaf Lebbe's email address. + Branch: cfgperl + ! README.epoc +____________________________________________________________________________ +[ 3557] By: gsar on 1999/06/28 00:07:33 + Log: make autogenerated files writable + Branch: perl + - win32/perlhost.h + ! MANIFEST Porting/makerel embed.h embedvar.h ext/B/B/Asmdata.pm + ! ext/ByteLoader/byterun.c ext/ByteLoader/byterun.h global.sym + ! keywords.h lib/warning.pm objXSUB.h opcode.h pp.sym pp_proto.h + ! proto.h regnodes.h warning.h win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc +____________________________________________________________________________ +[ 3556] By: jhi on 1999/06/27 19:22:53 + Log: Update MANIFEST to match #3555. + Branch: cfgperl + ! MANIFEST +____________________________________________________________________________ +[ 3555] By: jhi on 1999/06/27 19:16:22 + Log: EPOC port to Psion5. + From: Olaf Flebbe + To: Jarkko Hietaniemi + Cc: perl5-porters@perl.org + Subject: Re: Psion5 + Date: Sun, 27 Jun 1999 20:50:30 +0200 (METDST) + Message-ID: + Branch: cfgperl + + README.epoc epoc/config.h epoc/epoc.c epoc/epocish.h + + epoc/perl.mmp epoc/perl.pkg + ! MANIFEST doio.c lib/Term/ReadLine.pm lib/perl5db.pl perl.c + ! perl.h sv.c util.c +____________________________________________________________________________ +[ 3554] By: jhi on 1999/06/27 18:50:52 + Log: Integrate from mainperl. + Branch: cfgperl + !> (integrate 48 files) +____________________________________________________________________________ +[ 3553] By: gsar on 1999/06/27 14:28:49 + Log: somewhat untested PERL_OBJECT cleanups (C++isms mostly + gone from the public API); PERL_OBJECT builds again on + windows + + TODO: namespace-clean the typedefs in iperlsys.h and + elsewhere; remove C++ remnants from public headers + Branch: perl + ! XSUB.h bytecode.pl cv.h embed.h embed.pl ext/B/B.xs + ! ext/ByteLoader/ByteLoader.xs ext/ByteLoader/bytecode.h + ! ext/ByteLoader/byterun.c ext/ByteLoader/byterun.h + ! ext/DynaLoader/dlutils.c global.sym globals.c iperlsys.h + ! lib/ExtUtils/Embed.pm lib/ExtUtils/xsubpp mg.c objXSUB.h + ! opcode.h opcode.pl perl.c perl.h pod/perlhist.pod pp_ctl.c + ! pp_hot.c proto.h scope.h sv.h toke.c universal.c util.c + ! win32/GenCAPI.pl win32/Makefile win32/config.bc + ! win32/config.gc win32/config.vc win32/dl_win32.xs + ! win32/makedef.pl win32/makefile.mk win32/perllib.c + ! win32/runperl.c win32/win32.c win32/win32.h win32/win32iop.h + ! win32/win32sck.c +____________________________________________________________________________ +[ 3552] By: gsar on 1999/06/27 13:49:31 + Log: integrate cfgperl changes into mainline + Branch: perl + !> dump.c embed.h embed.pl embedvar.h global.sym intrpvar.h mg.c + !> objXSUB.h op.c perl.c perl.h perlvars.h pp.c pp_ctl.c + !> pp_proto.h pp_sys.c proto.h sv.c t/pragma/locale.t toke.c + !> util.c +____________________________________________________________________________ +[ 3551] By: gsar on 1999/06/27 13:31:11 + Log: fix indents + Branch: perl + ! op.c +____________________________________________________________________________ +[ 3550] By: gsar on 1999/06/24 22:42:53 + Log: update Changes + Branch: perl + ! Changes +____________________________________________________________________________ +[ 3549] By: gsar on 1999/06/24 22:41:17 + Log: avoid race condition in the CAPI extension bootstrap handler + Branch: perl + ! lib/ExtUtils/xsubpp win32/GenCAPI.pl +____________________________________________________________________________ +[ 3548] By: gsar on 1999/06/24 22:39:53 + Log: sanity check to cover the case when perl is installed into the + X:\ (drive root) + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 3547] By: gsar on 1999/06/22 19:30:32 + Log: tweak RefHash to make intent clearer (suggested by John Dlugosz) + Branch: perl + ! lib/Tie/RefHash.pm +____________________________________________________________________________ +[ 3544] By: jhi on 1999/06/18 19:24:28 + Log: Tidy up #3542 and #3543. + Branch: cfgperl + ! t/pragma/locale.t util.c +____________________________________________________________________________ +[ 3543] By: jhi on 1999/06/18 10:28:45 + Log: Spice up locale.t. + Branch: cfgperl + ! t/pragma/locale.t +____________________________________________________________________________ +[ 3542] By: jhi on 1999/06/17 22:42:03 + Log: Fixed two long-standing locale bugs. + + Both problems were related to numeric locale which + controls the radix character aka the decimal separator. + (1) printf (and sprintf) were resetting the numeric locale to C. + (2) Using locale-numerically formatted floating point + numbers (e.g. "1,23") together with -w caused warnings about + "isn't numeric". The operations were working fine, though, + because atof() was using the local locale. + Both problems reported by Stefan Vogtner. + + Introduced a wrapper for atof() that attempts to convert + the string both ways. This helps Perl to understand + numbers like this "4.56" even when using a local locale + makes atof() understand only numbers like this "7,89". + + Remaining related problems, both of which existed before + this patch and continue to exist after this patch: + (a) The behaviour of print() is _not_ as documented by perllocale. + Instead of always using the C locale, print() does use the + local locale, just like the *printf() do. This may be fixable + now that switching to-and-fro between locales has been made + more consistent, but fixing print() would change existing + behaviour. perllocale is not changed by this patch. + (b) If a number has been stringified (say, via "$number") under + a local locale, the cached string value persists even under + "no locale". This may or may not be a problem: operations + work fine because the original number is still there, but + that the string form keeps its locale-ish outlook may be + somewhat confusing. + Branch: cfgperl + ! dump.c embed.h embed.pl embedvar.h global.sym intrpvar.h mg.c + ! objXSUB.h op.c perl.c perl.h perlvars.h pp.c pp_ctl.c + ! pp_proto.h pp_sys.c proto.h sv.c t/pragma/locale.t toke.c + ! util.c +____________________________________________________________________________ +[ 3541] By: jhi on 1999/06/17 20:00:16 + Log: Integrate from mainperl. + Branch: cfgperl + !> ext/Data/Dumper/Dumper.pm op.c +____________________________________________________________________________ +[ 3540] By: gsar on 1999/06/16 16:49:55 + Log: dump C<0> as such, not C<'0'> + Branch: perl + ! ext/Data/Dumper/Dumper.pm +____________________________________________________________________________ +[ 3539] By: gsar on 1999/06/13 04:04:40 + Log: fix coredumper in change#3498 + Branch: perl + ! op.c +____________________________________________________________________________ +[ 3538] By: jhi on 1999/06/12 22:01:26 + Log: Integrate from mainperl. + Branch: cfgperl + +> lib/caller.pm + !> (integrate 36 files) +____________________________________________________________________________ +[ 3537] By: gsar on 1999/06/12 06:43:03 + Log: EXTERN_C declarations for global arrays in various + headers, so perl can be built even in C++ mode; win32 + build fixups; regen headers + Branch: perl + ! XSUB.h embedvar.h ext/B/B.xs objXSUB.h opcode.h opcode.pl + ! perl.h regcomp.h regexec.c utf8.h win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 3536] By: gsar on 1999/06/12 06:38:21 + Log: caller.pm typos + Branch: perl + ! lib/caller.pm +____________________________________________________________________________ +[ 3535] By: gsar on 1999/06/11 23:13:54 + Log: various little tweaks; most globals are now in intrpvar.h, ninterps + is temporarily gone + Branch: perl + ! embed.pl intrpvar.h os2/os2.c perl.c perlvars.h + ! pod/perldelta.pod proto.h win32/perllib.c +____________________________________________________________________________ +[ 3534] By: gsar on 1999/06/11 20:41:51 + Log: implement C + Branch: perl + + lib/caller.pm + ! MANIFEST perl.h pod/perldelta.pod pod/perlfunc.pod pp_ctl.c +____________________________________________________________________________ +[ 3533] By: gsar on 1999/06/11 16:51:04 + Log: truncate() has a peculiar exemption from strict barewords, even + though it has a non-filehandle prototype + Branch: perl + ! op.c t/io/fs.t +____________________________________________________________________________ +[ 3532] By: gsar on 1999/06/11 09:09:16 + Log: GDBM tweak + Branch: perl + ! ext/GDBM_File/GDBM_File.xs ext/GDBM_File/typemap +____________________________________________________________________________ +[ 3531] By: gsar on 1999/06/10 23:34:19 + Log: part of the platform changes for IMPLICIT_CONTEXT + Branch: perl + ! djgpp/djgpp.c jpl/JNI/JNI.xs jpl/JNI/typemap + ! jpl/PerlInterpreter/PerlInterpreter.c + ! jpl/PerlInterpreter/PerlInterpreter.h + ! os2/OS2/ExtAttr/ExtAttr.xs os2/OS2/PrfDB/PrfDB.xs + ! os2/OS2/Process/Process.xs os2/OS2/REXX/REXX.xs perl.h +____________________________________________________________________________ +[ 3530] By: jhi on 1999/06/10 20:55:56 + Log: Integrate from mainperl. + Branch: cfgperl + !> ext/DB_File/DB_File.xs ext/DB_File/typemap +____________________________________________________________________________ +[ 3529] By: gsar on 1999/06/10 20:40:01 + Log: DB_File tweaks for IMPLICIT CONTEXT + Branch: perl + ! ext/DB_File/DB_File.xs ext/DB_File/typemap +____________________________________________________________________________ +[ 3528] By: jhi on 1999/06/10 10:18:15 + Log: Integrate from mainperl. + Branch: cfgperl + !> (integrate 105 files) +____________________________________________________________________________ +[ 3527] By: gsar on 1999/06/10 09:30:35 + Log: most globals are now interpreter local; locale initialization + was too early, defer it until interpreter is allocated and + initialized; multiple interpreters should now be + concurrency-safe (untested) + Branch: perl + ! embedvar.h intrpvar.h malloc.c miniperlmain.c perl.c perl.h + ! perlvars.h +____________________________________________________________________________ +[ 3526] By: gsar on 1999/06/10 08:38:00 + Log: fix small nits + Branch: perl + ! cc_runtime.h ext/B/B/CC.pm run.c +____________________________________________________________________________ +[ 3525] By: gsar on 1999/06/10 04:41:38 + Log: win32 build fixes + Branch: perl + ! bytecode.pl dosish.h embed.h embed.pl ext/B/B.xs + ! ext/ByteLoader/ByteLoader.xs ext/ByteLoader/bytecode.h + ! ext/ByteLoader/byterun.h ext/SDBM_File/sdbm/sdbm.c globals.c + ! mg.c objXSUB.h op.h perl.c perl.h pp_sys.c proto.h sv.c util.c + ! win32/Makefile win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc win32/config_h.PL win32/dl_win32.xs + ! win32/makedef.pl win32/makefile.mk win32/perllib.c + ! win32/win32.c win32/win32.h win32/win32sck.c + ! win32/win32thread.c win32/win32thread.h +____________________________________________________________________________ +[ 3524] By: gsar on 1999/06/09 18:03:01 + Log: more complete support for implicit thread/interpreter pointer, + enabled via -DPERL_IMPLICIT_CONTEXT (all changes are noops + without that enabled): + - USE_THREADS now enables PERL_IMPLICIT_CONTEXT, so dTHR + is a noop; tests pass on Solaris; should be faster now! + - MULTIPLICITY has been tested with and without + PERL_IMPLICIT_CONTEXT on Solaris + - improved function database now merged with embed.pl + - everything except the varargs functions have foo(a,b,c) macros + to provide compatibility + - varargs functions default to compatibility variants that + get the context pointer using dTHX + - there should be almost no source compatibility issues as a + result of all this + - dl_foo.xs changes other than dl_dlopen.xs untested + - still needs documentation, fixups for win32 etc + Next step: migrate most non-mutex variables from perlvars.h + to intrpvar.h + Branch: perl + - proto.pl + ! MANIFEST XSUB.h av.c bytecode.pl cv.h doio.c doop.c dump.c + ! ebcdic.c embed.h embed.pl embedvar.h ext/B/B.xs ext/B/typemap + ! ext/ByteLoader/ByteLoader.xs ext/ByteLoader/bytecode.h + ! ext/ByteLoader/byterun.c ext/ByteLoader/byterun.h + ! ext/Data/Dumper/Dumper.xs ext/Devel/Peek/Peek.xs + ! ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_beos.xs + ! ext/DynaLoader/dl_cygwin32.xs ext/DynaLoader/dl_dld.xs + ! ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs + ! ext/DynaLoader/dl_mpeix.xs ext/DynaLoader/dl_next.xs + ! ext/DynaLoader/dl_none.xs ext/DynaLoader/dl_rhapsody.xs + ! ext/DynaLoader/dl_vmesa.xs ext/DynaLoader/dl_vms.xs + ! ext/DynaLoader/dlutils.c ext/Opcode/Opcode.xs + ! ext/POSIX/POSIX.xs ext/Thread/Thread.xs ext/re/re.xs + ! global.sym globals.c gv.c hv.c lib/ExtUtils/typemap + ! lib/ExtUtils/xsubpp malloc.c mg.c mg.h miniperlmain.c + ! objXSUB.h op.c opcode.h opcode.pl perl.c perl.h perlio.c + ! perlsfio.h perly.c pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c + ! proto.h regcomp.c regcomp.h regexec.c run.c scope.c scope.h + ! sv.c taint.c thrdvar.h thread.h toke.c universal.c utf8.c + ! util.c win32/Makefile win32/makefile.mk writemain.SH +____________________________________________________________________________ +[ 3523] By: gsar on 1999/06/07 05:24:13 + Log: missed a file + Branch: perl + + proto.pl + ! MANIFEST +____________________________________________________________________________ +[ 3522] By: gsar on 1999/06/07 05:18:34 + Log: initial stub implementation of implicit thread/this + pointer argument; builds/tests on Solaris, win32 + hasn't been fixed up yet; proto.h, global.sym and + static function decls are now generated from a common + database in proto.pl; some inconsistently named + perl_foo() things are now Perl_foo(), compatibility + #defines provided; perl_foo() (lowercase 'p') reserved + for functions that take an explicit context argument; + next step: generate #define foo(a,b) Perl_foo(aTHX_ a,b) + Branch: perl + ! XSUB.h av.c cop.h deb.c doio.c doop.c dump.c ebcdic.c embed.h + ! embed.pl ext/POSIX/POSIX.xs global.sym globals.c gv.c gv.h + ! hv.c malloc.c mg.c miniperlmain.c objXSUB.h op.c opcode.h + ! opcode.pl perl.c perl.h perl_exp.SH perlio.c perly.c perly.y + ! pp.c pp.sym pp_ctl.c pp_hot.c pp_proto.h pp_sys.c proto.h + ! regcomp.c regexec.c run.c scope.c scope.h sv.c taint.c toke.c + ! universal.c utf8.c util.c +____________________________________________________________________________ +[ 3521] By: gsar on 1999/06/04 23:00:22 + Log: clean up some stray "global" symbols + Branch: perl + ! embed.h embed.pl global.sym objXSUB.h opcode.pl pp.sym + ! pp_proto.h proto.h +____________________________________________________________________________ +[ 3520] By: jhi on 1999/06/02 21:33:28 + Log: Integrate from mainperl. + Branch: cfgperl + !> (integrate 94 files) +____________________________________________________________________________ +[ 3519] By: gsar on 1999/06/02 07:16:10 + Log: avoid dereferencing null pointer from getpwent() et al + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 3518] By: gsar on 1999/06/02 04:47:10 + Log: remove _() non-ansism + Branch: perl + ! Porting/config_H XSUB.h config_h.SH cv.h doio.c doop.c + ! ext/B/B/C.pm ext/B/B/CC.pm ext/B/byteperl.c + ! ext/ByteLoader/ByteLoader.xs ext/Data/Dumper/Dumper.xs + ! ext/DynaLoader/dl_beos.xs ext/DynaLoader/dl_dlopen.xs + ! ext/DynaLoader/dl_vmesa.xs ext/IO/poll.h ext/IPC/SysV/SysV.xs + ! ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs ext/Thread/Thread.xs + ! ext/re/re.xs handy.h hv.c iperlsys.h + ! jpl/PerlInterpreter/PerlInterpreter.c lib/ExtUtils/Embed.pm + ! malloc.c mg.c mg.h minimod.pl miniperlmain.c op.c op.h + ! opcode.h opcode.pl os2/POSIX.mkfifo perl.c perl.h + ! plan9/config.plan9 pod/perlembed.pod pod/perlguts.pod pp.c + ! pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regexec.c run.c + ! scope.h sv.c sv.h thread.h toke.c util.c vms/sockadapt.h + ! vms/vmsish.h vms/writemain.pl vos/config.h + ! vos/config_h.SH_orig win32/GenCAPI.pl win32/config_H.bc + ! win32/config_H.gc win32/config_H.vc win32/makemain.pl + ! win32/perllib.c win32/runperl.c win32/win32.h + ! win32/win32thread.h writemain.SH x2p/a2p.c x2p/a2p.h x2p/a2p.y + ! x2p/hash.h x2p/str.h x2p/util.h x2p/walk.c +____________________________________________________________________________ +[ 3517] By: gsar on 1999/06/02 02:17:51 + Log: missed a few files + Branch: perl + ! ext/POSIX/POSIX.xs jpl/JNI/JNI.xs +____________________________________________________________________________ +[ 3516] By: gsar on 1999/06/02 01:37:33 + Log: integrate cfgperl contents into mainline + Branch: perl + +> ext/ByteLoader/bytecode.h ext/ByteLoader/byterun.c + +> ext/ByteLoader/byterun.h + - bytecode.h byterun.c byterun.h + ! Changes + !> (integrate 58 files) +____________________________________________________________________________ +[ 3515] By: gsar on 1999/06/02 00:48:50 + Log: remove stray K&R-isms + Branch: perl + ! ext/SDBM_File/sdbm/dba.c ext/SDBM_File/sdbm/dbd.c + ! ext/SDBM_File/sdbm/dbe.c ext/SDBM_File/sdbm/dbm.c + ! ext/SDBM_File/sdbm/dbu.c mg.c op.c pp_ctl.c pp_sys.c sv.c + ! toke.c util.c win32/win32.c x2p/hash.c +____________________________________________________________________________ +[ 3514] By: gsar on 1999/06/01 15:55:55 + Log: change#3447 didn't do enough to exempt Foo->bar(qw/.../) from + strict 'subs' + Branch: perl + ! op.c t/pragma/strict-subs +____________________________________________________________________________ +[ 3513] By: jhi on 1999/06/01 07:17:05 + Log: Patch applying of #3499 had gone awry. + Branch: cfgperl + ! ext/ByteLoader/bytecode.h ext/ByteLoader/byterun.h +____________________________________________________________________________ +[ 3512] By: gsar on 1999/05/31 19:21:30 + Log: tighter -help output + Branch: perl + ! perl.c +____________________________________________________________________________ +[ 3511] By: gsar on 1999/05/31 17:18:23 + Log: fix memory leak in C + Branch: perl + ! embed.h embed.pl objXSUB.h pp_ctl.c proto.h +____________________________________________________________________________ +[ 3510] By: gsar on 1999/05/31 14:11:46 + Log: tweak C++isms + Branch: perl + ! win32/dl_win32.xs win32/win32.c +____________________________________________________________________________ +[ 3509] By: jhi on 1999/05/30 13:02:26 + Log: Cleanup of #3488. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3508] By: jhi on 1999/05/30 11:16:01 + Log: From: Ilya Zakharevich + To: Mailing list Perl5 + Subject: [PATCH 5.005_57] Teach Socket and io_unix.t the syntax of OS/2 + Date: Sat, 29 May 1999 20:18:13 -0400 + Message-ID: <19990529201813.B9489@monk.mps.ohio-state.edu> + Branch: cfgperl + ! ext/Socket/Socket.xs os2/os2ish.h t/lib/io_unix.t +____________________________________________________________________________ +[ 3507] By: jhi on 1999/05/29 20:05:40 + Log: From: Mark-Jason Dominus + To: perl5-porters@perl.com + Subject: PATCH (5.005_57): Document use of `SPECIAL' flag for `pushre': + Date: Sat, 29 May 1999 14:45:10 -0400 + Message-ID: <19990529184510.27557.qmail@plover.com> + Branch: cfgperl + ! op.h +____________________________________________________________________________ +[ 3506] By: gsar on 1999/05/29 16:49:39 + Log: avoid gv_check() recursive pit + Branch: perl + ! gv.c +____________________________________________________________________________ +[ 3505] By: jhi on 1999/05/29 11:38:16 + Log: From: jan.dubois@ibm.net (Jan Dubois) + To: Gurusamy Sarathy + Cc: perl5-porters@perl.org + Subject: [PATCH 5.005_57]Safeguard against unimplemented functions in pwuid.t and grent.t + Date: Sat, 29 May 1999 08:46:22 +0200 + Message-ID: <374f8007.2016008@smtp1.ibm.net> + Branch: cfgperl + ! t/op/grent.t t/op/pwent.t +____________________________________________________________________________ +[ 3504] By: jhi on 1999/05/29 11:07:10 + Log: QNX needs to define fd_set. + + From: Norton Allen + To: perl5-porters@perl.org + Subject: [19990526.016] Not OK: perl 5.00503 on x86-qnx 424 + Date: Wed, 26 May 1999 13:51:27 -0400 (EDT) + Message-Id: <199905261751.NAA20966@bottesini.harvard.edu> + Branch: cfgperl + ! ext/IO/poll.c +____________________________________________________________________________ +[ 3503] By: jhi on 1999/05/29 10:53:31 + Log: From: jan.dubois@ibm.net (Jan Dubois) + To: Gurusamy Sarathy , perl5-porters@perl.org + Subject: [PATCH all versions] (was Re: Unitialized Value Complaints in Math::BigFloat) + Date: Fri, 28 May 1999 20:14:35 +0200 + Message-ID: <3751daa4.7188847@smtp1.ibm.net> + Branch: cfgperl + ! lib/Math/BigFloat.pm +____________________________________________________________________________ +[ 3502] By: jhi on 1999/05/29 10:44:44 + Log: Make Configure support the change #3367, + SysV shadow passwords. + Branch: cfgperl + ! Configure config_h.SH pp_sys.c +____________________________________________________________________________ +[ 3501] By: gsar on 1999/05/28 21:22:23 + Log: add wide versions of win32 system calls (first step in + globalization); delayload winsock for performance if compiling + with VC 6.0 + Branch: perl + ! win32/Makefile win32/dl_win32.xs win32/makefile.mk + ! win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 3500] By: jhi on 1999/05/28 21:17:24 + Log: The new t/lib/io_linenum.t was using stricture + before @INC was set up. + Branch: cfgperl + ! t/lib/io_linenum.t +____________________________________________________________________________ +[ 3499] By: jhi on 1999/05/28 17:13:23 + Log: From: Tom Hughes + To: perl5-porters@perl.org + Subject: [PATCH 5.005_57] ByteLoader mark 2 + Date: Wed, 26 May 1999 23:59:49 +0100 + Message-ID: + + plus resolve tiny conflict with #3479 + plus regen_headers. + Branch: cfgperl + + ext/ByteLoader/bytecode.h ext/ByteLoader/byterun.c + + ext/ByteLoader/byterun.h + - bytecode.h byterun.c byterun.h + ! MANIFEST Makefile.SH bytecode.pl embed.h embedvar.h ext/B/B.pm + ! ext/B/B.xs ext/B/B/Bytecode.pm ext/B/Makefile.PL + ! ext/ByteLoader/ByteLoader.pm ext/ByteLoader/ByteLoader.xs + ! ext/ByteLoader/Makefile.PL global.sym intrpvar.h objXSUB.h + ! perl.h perlvars.h proto.h util.c utils/Makefile +____________________________________________________________________________ +[ 3498] By: jhi on 1999/05/28 16:53:04 + Log: From: Mark-Jason Dominus + To: perl5-porters@perl.com + Subject: PATCH (5.005_57): defined(@a) now deprecated + Date: Thu, 27 May 1999 16:05:44 -0400 + Message-ID: <19990527200544.13330.qmail@plover.com> + Branch: cfgperl + ! lib/Carp.pm op.c opcode.h opcode.pl pod/perldelta.pod + ! pod/perldiag.pod pod/perlfunc.pod pp_proto.h t/pragma/warn/op +____________________________________________________________________________ +[ 3497] By: jhi on 1999/05/28 16:50:54 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.00557] Cosmetic OS/2-related patches + Date: Fri, 28 May 1999 12:13:00 -0400 (EDT) + Message-Id: <199905281613.MAA02048@monk.mps.ohio-state.edu> + Branch: cfgperl + ! MANIFEST Makefile.SH ext/POSIX/POSIX.xs hints/os2.sh + ! os2/Makefile.SHs t/io/pipe.t t/lib/io_sock.t +____________________________________________________________________________ +[ 3496] By: jhi on 1999/05/28 16:48:39 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.00557] Required OS/2-related patches + Date: Fri, 28 May 1999 12:11:48 -0400 (EDT) + Message-Id: <199905281611.MAA02037@monk.mps.ohio-state.edu> + Branch: cfgperl + ! os2/os2.c t/lib/bigfloatpm.t t/lib/io_unix.t t/op/groups.t + ! t/op/stat.t util.c +____________________________________________________________________________ +[ 3495] By: jhi on 1999/05/28 16:45:56 + Log: From: Paul Johnson + To: perl5-porters + Subject: [PATCH 5.005_57] Provide more useful test okay percentage + Date: Fri, 28 May 1999 15:13:54 +0100 + Message-ID: <19990528151354.B289@west-tip.transeda.com> + Branch: cfgperl + ! t/TEST +____________________________________________________________________________ +[ 3494] By: jhi on 1999/05/28 16:44:34 + Log: From: Paul Johnson + To: perl5-porters + Subject: [PATCH 5.005_57] Fixes related to working local $. + Date: Fri, 28 May 1999 15:11:18 +0100 + Message-ID: <19990528151118.A289@west-tip.transeda.com> + Branch: cfgperl + ! ext/IO/lib/IO/Handle.pm pod/perlvar.pod t/lib/io_linenum.t +____________________________________________________________________________ +[ 3493] By: gsar on 1999/05/28 16:37:26 + Log: change#3449 wasn't doing enough + Branch: perl + ! op.c t/comp/proto.t +____________________________________________________________________________ +[ 3492] By: jhi on 1999/05/28 08:12:23 + Log: From: paul.marquess@bt.com + To: doughera@lafayette.edu + Cc: perl5-porters@perl.org + Subject: RE: [19990527.002] DBM Filters in _57 cause problems in NDBM_File + Date: Thu, 27 May 1999 23:31:38 +0100 + Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB29C6C03@mbtlipnt02.btlabs.bt.co.uk> + + Had to be applied manually; some mailer had munged the patch slightly. + Branch: cfgperl + ! ext/NDBM_File/NDBM_File.xs +____________________________________________________________________________ +[ 3491] By: jhi on 1999/05/28 07:51:17 + Log: From: "Vishal Bhatia" + To: perl5-porters@perl.org + Subject: [PATCH 5.005_57] fixing eval in the compiler + Date: Thu, 27 May 1999 07:56:54 -0700 + Message-ID: + Branch: cfgperl + ! cc_runtime.h scope.h +____________________________________________________________________________ +[ 3490] By: jhi on 1999/05/28 07:47:06 + Log: From: Andy Dougherty + To: perlbug@perl.com + Cc: Jarkko Hietaniemi + Subject: [PATCH] Configure updates for ISC 4.1 + Date: Thu, 27 May 1999 15:19:21 -0400 (EDT) + Message-Id: + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3489] By: jhi on 1999/05/28 07:39:17 + Log: Integrate from mainperl. + Branch: cfgperl + !> malloc.c win32/makedef.pl win32/win32.c +____________________________________________________________________________ +[ 3488] By: jhi on 1999/05/27 16:57:19 + Log: From: Andy Dougherty + To: Perl Porters + Subject: [PATCH] Re: 5.005_57 NOT OK on SunOS 4.1.3 + Date: Thu, 27 May 1999 12:26:28 -0400 (EDT) + Message-Id: + Branch: cfgperl + ! Configure config_h.SH hints/sunos_4_1.sh util.c +____________________________________________________________________________ +[ 3487] By: gsar on 1999/05/27 03:56:20 + Log: make win32_spawnvp() inherit standard handles even when they + may be redirected + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 3486] By: jhi on 1999/05/26 19:55:52 + Log: From: Andy Dougherty + To: perl5-porters@perl.org + Subject: Re: BUG -> [19990526.004] perl5.005_57 error in util.c on sun4-solaris2.6 + Date: Wed, 26 May 1999 14:49:52 -0400 (EDT) + Message-Id: + Branch: cfgperl + ! util.c +____________________________________________________________________________ +[ 3485] By: chip on 1999/05/26 17:19:11 + Log: Look for Linux FILE structure in libio.h, for glibc-2.1. + Branch: maint-5.004/perl + ! Configure +____________________________________________________________________________ +[ 3484] By: gsar on 1999/05/26 01:56:28 + Log: fix missing exported symbol + Branch: perl + ! malloc.c win32/makedef.pl +____________________________________________________________________________ +[ 3483] By: jhi on 1999/05/25 23:08:07 + Log: Configure -Dopenbsd_distribution to build for the OpenBSD tree. + + From: "Todd C. Miller" + To: perlbug@perl.com + Subject: OpenBSD hints file update + Date: Tue, 25 May 1999 12:12:38 -0600 (MDT) + Message-Id: <199905251812.MAA06032@xerxes.courtesan.com> + Branch: cfgperl + ! hints/openbsd.sh +____________________________________________________________________________ +[ 3482] By: jhi on 1999/05/25 23:01:25 + Log: From: Tom Hughes + To: perl5-porters@perl.org + Subject: [PATCH 5.005_57] Make Configure recognise glibc 2.1 stdio + Date: Tue, 25 May 1999 23:10:23 +0100 + Message-ID: <1ed7f10749.tom@compton.compton.nu> + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3481] By: jhi on 1999/05/25 22:31:50 + Log: 3479, 3480, 3481 seems logical. + Branch: cfgperl + !> hints/aix.sh +____________________________________________________________________________ +[ 3480] By: jhi on 1999/05/25 22:13:39 + Log: The change #3479 wasn't perfect. + Branch: perl + ! hints/aix.sh +____________________________________________________________________________ +[ 3479] By: jhi on 1999/05/25 21:59:21 + Log: Cures for _57 in AIX 4.1.5.0. + (1) The lddlflags lost its -lc by change #3660 + (and the politeness of change #3257). + (2) optype_size must end up in perl.exp (as PL_optype_size). + Added it to perlvars.h, fixed bytecode.pl, + regen'ed the relevant headers. + Branch: cfgperl + ! bytecode.h bytecode.pl byterun.h embed.h embedvar.h objXSUB.h + ! perlvars.h + Branch: perl + ! hints/aix.sh +____________________________________________________________________________ +[ 3478] By: jhi on 1999/05/25 20:13:47 + Log: Integrate from mainperl. + Branch: cfgperl + +> pod/perltootc.pod + !> (integrate 101 files) +____________________________________________________________________________ +[ 3477] By: gsar on 1999/05/25 10:43:48 + Log: here be 5.005_57 + Branch: perl + ! Changes MANIFEST Porting/makerel + !> Changes5.005 + +---------------- +Version 5.005_57 +---------------- + +____________________________________________________________________________ +[ 3476] By: gsar on 1999/05/25 09:23:43 + Log: up patchlevel &c + Branch: perl + ! Changes patchlevel.h pod/perlhist.pod win32/Makefile + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/makefile.mk +____________________________________________________________________________ +[ 3475] By: gsar on 1999/05/25 09:14:51 + Log: From: Ilya Zakharevich + Date: Tue, 25 May 1999 02:42:23 -0400 (EDT) + Message-Id: <199905250642.CAA06208@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_56] REx engine improvements + Branch: perl + ! embedvar.h mg.c objXSUB.h pp.c pp_ctl.c pp_hot.c regcomp.c + ! regexec.c regexp.h t/op/pat.t t/op/re_tests t/op/regexp.t + ! thrdvar.h util.c +____________________________________________________________________________ +[ 3474] By: gsar on 1999/05/25 08:39:56 + Log: test case for change#3470 + Branch: perl + ! t/lib/bigintpm.t +____________________________________________________________________________ +[ 3473] By: gsar on 1999/05/25 08:36:52 + Log: perlport 1.43 update from Chris Nandor and Tom Christiansen + Branch: perl + ! Changes pod/perlport.pod +____________________________________________________________________________ +[ 3472] By: gsar on 1999/05/25 08:28:57 + Log: assorted tweaks + Branch: perl + ! doio.c iperlsys.h win32/config.bc win32/config.gc + ! win32/config.vc win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc win32/makedef.pl +____________________________________________________________________________ +[ 3471] By: gsar on 1999/05/25 06:06:04 + Log: perlref update from Tom Christiansen + Branch: perl + ! pod/perlref.pod +____________________________________________________________________________ +[ 3470] By: gsar on 1999/05/25 06:03:27 + Log: From: Ilya Zakharevich + Date: Mon, 24 May 1999 17:43:56 -0400 + Message-ID: <19990524174356.A1944@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_*] hv.c calling negative malloc() + Branch: perl + ! hv.c +____________________________________________________________________________ +[ 3469] By: gsar on 1999/05/25 05:59:22 + Log: avoid temporary files that have a constant name (from a suggestion + by Anthony J. Lill ) + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 3468] By: gsar on 1999/05/25 05:54:29 + Log: From: pvhp@forte.com (Peter Prymmer) + Date: Mon, 24 May 99 11:20:25 PDT + Message-Id: <9905241820.AA28071@forte.com> + Subject: [PATCH: _56 and _03]EBCDIC %HTML_Escapes for Pod::Text, plus sync patch. + Branch: perl + ! lib/Pod/Text.pm +____________________________________________________________________________ +[ 3467] By: gsar on 1999/05/25 04:08:50 + Log: fix glob() bug that resulted in missing symlinks that don't point + anywhere + Branch: perl + ! pp_hot.c +____________________________________________________________________________ +[ 3466] By: gsar on 1999/05/25 03:00:00 + Log: avoid enumerating @INC contents in diagnostic if @INC was never + searched + Branch: perl + ! pod/perldiag.pod pp_ctl.c +____________________________________________________________________________ +[ 3465] By: gsar on 1999/05/25 02:24:08 + Log: add caveat about close(PIPE) carelessness + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 3464] By: gsar on 1999/05/24 23:55:53 + Log: fix bogus line numbers for void context warnings + (change#2548 was overeager) + Branch: perl + ! op.c +____________________________________________________________________________ +[ 3463] By: gsar on 1999/05/24 23:31:58 + Log: change#3455 had a typo + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3462] By: gsar on 1999/05/24 17:32:20 + Log: more pod updates from Tom Christiansen; regen perltoc + Branch: perl + ! pod/perl.pod pod/perldelta.pod pod/perlmod.pod pod/perlobj.pod + ! pod/perlre.pod pod/perltoc.pod pod/perlvar.pod +____________________________________________________________________________ +[ 3461] By: gsar on 1999/05/24 07:41:32 + Log: perlmod notes from Damian Conway (via Tom Christiansen) + Branch: perl + ! pod/perlmod.pod +____________________________________________________________________________ +[ 3460] By: gsar on 1999/05/24 07:24:11 + Log: major pod update from Tom Christiansen + Branch: perl + + pod/perltootc.pod + ! MANIFEST lib/Pod/Functions.pm pod/Makefile pod/buildtoc + ! pod/perl.pod pod/perl5004delta.pod pod/perlcall.pod + ! pod/perldata.pod pod/perldebug.pod pod/perldelta.pod + ! pod/perldsc.pod pod/perlfunc.pod pod/perlipc.pod + ! pod/perllol.pod pod/perlmod.pod pod/perlmodinstall.pod + ! pod/perlmodlib.pod pod/perlobj.pod pod/perlop.pod + ! pod/perlopentut.pod pod/perlpod.pod pod/perlport.pod + ! pod/perlre.pod pod/perlref.pod pod/perlrun.pod pod/perlsec.pod + ! pod/perlsub.pod pod/perlsyn.pod pod/perlthrtut.pod + ! pod/perltie.pod pod/perltrap.pod pod/perlvar.pod + ! pod/perlxs.pod pod/pod2man.PL +____________________________________________________________________________ +[ 3459] By: gsar on 1999/05/24 06:26:48 + Log: perlfaq update from Tom Christiansen + Branch: perl + ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod + ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod + ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod + ! pod/perlfaq9.pod +____________________________________________________________________________ +[ 3458] By: gsar on 1999/05/24 05:55:11 + Log: updated to v1.50 from CPAN + Branch: perl ! lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm ____________________________________________________________________________ -[ 3196] By: gbarr on 1999/03/28 17:21:27 - Log: AIX hints update from Jarkko - Branch: maint-5.005/perl +[ 3457] By: gsar on 1999/05/24 05:46:20 + Log: From: Hugo van der Sanden + Date: Sun, 23 May 1999 16:35:07 +0100 + Message-Id: <199905231535.QAA00032@crypt.compulink.co.uk> + Subject: [PATCH 5.005_56] name PL_in_eval bits + Branch: perl + ! cop.h op.c perl.c pp_ctl.c toke.c util.c +____________________________________________________________________________ +[ 3456] By: gsar on 1999/05/24 05:18:06 + Log: make -t mode the default on emacs/dumb terminals + Branch: perl + ! Changes utils/perldoc.PL +____________________________________________________________________________ +[ 3455] By: gsar on 1999/05/24 05:05:19 + Log: return 0 rather than "" when scalar grep has nothing to iterate + on (brings behavior in line with documentation) + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3454] By: gsar on 1999/05/24 04:52:52 + Log: From: Tim Jenness + Date: Thu, 20 May 1999 13:27:02 -1000 + Message-Id: + Subject: Problem with MM_Unix in 5.005_03 + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 3453] By: gsar on 1999/05/24 04:39:49 + Log: avoid removing duplicates in user-generated warnings + From: byron@omix.com (Byron Brummer) + Date: Thu, 20 May 1999 04:01:17 -0700 (PDT) + Message-Id: <199905201101.EAA91175@thrush.omix.com> + Subject: [PATCH] Re: warn buffers/loses output in ?? - 5.005_03 + Branch: perl + ! lib/diagnostics.pm +____________________________________________________________________________ +[ 3452] By: gsar on 1999/05/24 04:23:10 + Log: straighten some code to avoid NeXT compiler bugs (from + Geoff Kuenning ) + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3451] By: gsar on 1999/05/24 03:03:05 + Log: minor logic tweak for reserved word warning + Branch: perl + ! lib/Test/Harness.pm toke.c +____________________________________________________________________________ +[ 3450] By: gsar on 1999/05/24 02:34:20 + Log: oops, some files missing in change#3449 + Branch: perl + ! op.c op.h toke.c +____________________________________________________________________________ +[ 3449] By: gsar on 1999/05/24 02:33:12 + Log: allow '*' prototype to autoquote even barewords that happen to be + function names; parens or ampersand continue to force the other + interpretation; makes C + do the right thing, for example + Branch: perl + ! t/comp/proto.t +____________________________________________________________________________ +[ 3448] By: gsar on 1999/05/24 01:51:24 + Log: remove vestiges of PL_last_proto + Branch: perl + ! embedvar.h intrpvar.h objXSUB.h +____________________________________________________________________________ +[ 3447] By: gsar on 1999/05/24 01:49:20 + Log: redo change#2061 and parts of change#1169 with code in the + parser; PL_last_proto hackery gone, strict 'subs' in now + implemented in the optimizer where specifying the exceptional + cases is much more robust; '*' (bareword) prototype now works + reliably when used in second and subsequent arguments + Branch: perl + ! dump.c embed.h embed.pl objXSUB.h op.c op.h proto.h toke.c +____________________________________________________________________________ +[ 3446] By: gsar on 1999/05/23 05:00:55 + Log: remove redundant part of change#1169 superceded by change#2061; + avoid "future reserved word" warning on prototypical bearwords + Branch: perl + ! t/lib/fatal.t toke.c +____________________________________________________________________________ +[ 3445] By: gsar on 1999/05/21 23:36:49 + Log: s/isspace/isSPACE/g and make sure the CRT version is always + passed an unsigned char (fixes random occurrence of spaces in + arguments containing high-bit chars passed to spawned children, + on win32) + Branch: perl + ! ext/SDBM_File/sdbm/dbe.c win32/perlhost.h win32/win32.c +____________________________________________________________________________ +[ 3444] By: gsar on 1999/05/21 23:08:55 + Log: integrate Configure changes from cfgperl + Branch: perl + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH +____________________________________________________________________________ +[ 3443] By: jhi on 1999/05/21 22:00:56 + Log: Integrate from mainperl. + Branch: cfgperl + !> Changes doop.c ext/SDBM_File/sdbm/dba.c + !> ext/SDBM_File/sdbm/dbd.c ext/SDBM_File/sdbm/dbe.c os2/os2.c + !> perl.h pod/perldiag.pod pod/perlport.pod pp.c t/comp/proto.t + !> win32/perlhost.h win32/win32.c x2p/walk.c +____________________________________________________________________________ +[ 3442] By: jhi on 1999/05/21 21:59:46 + Log: fflush. + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH +____________________________________________________________________________ +[ 3441] By: gsar on 1999/05/21 17:48:55 + Log: integrate cfgperl changes + Branch: perl + !> Configure Porting/Glossary Porting/config.sh Porting/config_H + !> config_h.SH hints/sunos_4_1.sh installperl +____________________________________________________________________________ +[ 3440] By: gsar on 1999/05/21 17:42:49 + Log: test tweak + Branch: perl + ! t/comp/proto.t +____________________________________________________________________________ +[ 3439] By: gsar on 1999/05/21 17:31:26 + Log: fix breakage when neither FFLUSH_ALL nor FFLUSH_NULL are #defined. + (Configure fflush(NULL) detection seems broken on Solaris, which + is why I hit the problem) + Branch: perl + ! Changes perl.h +____________________________________________________________________________ +[ 3438] By: gsar on 1999/05/20 16:41:01 + Log: perlport 1.41 update from Chris Nandor + Branch: perl + ! pod/perlport.pod +____________________________________________________________________________ +[ 3437] By: jhi on 1999/05/20 07:14:39 + Log: Patches to fflushing in SunOS 4 from Andy Dougherty + (via private email). + Branch: cfgperl + ! Configure Porting/Glossary Porting/config.sh Porting/config_H + ! config_h.SH hints/sunos_4_1.sh +____________________________________________________________________________ +[ 3436] By: gsar on 1999/05/20 05:18:26 + Log: various little nits + Branch: perl + ! doop.c ext/SDBM_File/sdbm/dba.c ext/SDBM_File/sdbm/dbd.c + ! ext/SDBM_File/sdbm/dbe.c os2/os2.c pod/perldiag.pod pp.c + ! win32/perlhost.h win32/win32.c x2p/walk.c +____________________________________________________________________________ +[ 3435] By: jhi on 1999/05/18 16:25:49 + Log: From: Hugo van der Sanden + To: perl5-porters@perl.org + Subject: installperl + Date: Fri, 14 May 1999 21:34:58 +0100 + Message-Id: <199905142034.VAA00865@crypt.compulink.co.uk> + Branch: cfgperl + ! installperl +____________________________________________________________________________ +[ 3434] By: jhi on 1999/05/17 21:25:54 + Log: Integrate from mainperl. + Branch: cfgperl + +> lib/ExtUtils/MM_Cygwin.pm + - cygwin32/impure_ptr.c + !> MANIFEST README.cygwin32 XSUB.h cygwin32/Makefile.SHs + !> cygwin32/perlld.in dosish.h ext/DynaLoader/dl_cygwin32.xs + !> ext/POSIX/POSIX.xs gv.c hints/cygwin32.sh installman + !> installperl perl.h pod/perldiag.pod pp.c pp_hot.c util.c + !> x2p/find2perl.PL +____________________________________________________________________________ +[ 3433] By: gsar on 1999/05/17 09:49:01 + Log: integrate cfgperl changes into mainline + Branch: perl + !> Configure INSTALL config_h.SH configure.com embed.h + !> ext/Devel/Peek/Peek.xs ext/Socket/Socket.xs global.sym + !> hints/dec_osf.sh objXSUB.h perl.h pod/perldiag.pod proto.h + !> util.c +____________________________________________________________________________ +[ 3432] By: gsar on 1999/05/17 09:06:45 + Log: emit more appropriate diagnostic for failed glob (variant + of patch suggested by Graham Barr) + Branch: perl + ! gv.c pod/perldiag.pod pp.c pp_hot.c +____________________________________________________________________________ +[ 3431] By: gsar on 1999/05/17 08:38:09 + Log: From: "Todd C. Miller" + Date: Thu, 13 May 1999 22:18:43 -0600 (MDT) + Message-Id: <199905140418.WAA18826@xerxes.courtesan.com> + Subject: find2perl does not grok the 'c' suffix to the -size argument + Branch: perl + ! x2p/find2perl.PL +____________________________________________________________________________ +[ 3430] By: gsar on 1999/05/17 08:26:21 + Log: additional cleanups for cygwin32 port + From: "Fifer, Eric" + Date: Wed, 12 May 1999 20:25:54 +0100 + Message-ID: <71E287AB0D94D111BBD600600849EC8185EDAF@POST> + Subject: [PATCH]perl5.005_03 (CORE) cygwin32 port + Branch: perl + + lib/ExtUtils/MM_Cygwin.pm + - cygwin32/impure_ptr.c + ! MANIFEST README.cygwin32 XSUB.h cygwin32/Makefile.SHs + ! cygwin32/perlld.in dosish.h ext/DynaLoader/dl_cygwin32.xs + ! ext/POSIX/POSIX.xs hints/cygwin32.sh installman installperl + ! perl.h util.c +____________________________________________________________________________ +[ 3429] By: gsar on 1999/05/17 08:01:04 + Log: From: Andy Dougherty + Date: Wed, 12 May 1999 11:44:11 -0400 (EDT) + Message-Id: + Subject: [PATCH] (Was Re: SunOS4.1 compilation error) + Branch: perl + ! INSTALL +____________________________________________________________________________ +[ 3428] By: jhi on 1999/05/17 07:03:26 + Log: Integrate from mainperl modulo the Socket.xs change. + Branch: cfgperl + !> ext/Socket/Socket.xs op.c win32/include/sys/socket.h + !> win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 3427] By: jhi on 1999/05/16 22:09:11 + Log: From: Ilya Zakharevich + To: perl5-porters@perl.org (Mailing list Perl5) + Subject: [PATCH 5.005_56] Devel::Peek::mstat not working + Date: Sun, 16 May 1999 01:28:18 -0400 (EDT) + Message-Id: <199905160528.BAA23376@monk.mps.ohio-state.edu> + Branch: cfgperl + ! ext/Devel/Peek/Peek.xs +____________________________________________________________________________ +[ 3426] By: jhi on 1999/05/16 22:07:11 + Log: From: Mark-Jason Dominus + To: perl5-porters@perl.com + Subject: DOC PATCH (5.005_55): Error message missing from perldiag.pod + Date: Sat, 15 May 1999 12:43:47 -0400 + Message-ID: <19990515164348.7313.qmail@plover.com> + Branch: cfgperl + ! pod/perldiag.pod +____________________________________________________________________________ +[ 3425] By: nick on 1999/05/15 15:56:10 + Log: Mingw32 + w32api-0.1.5 tweaks + - now more like other Win32 compilers + Branch: perl + ! ext/Socket/Socket.xs win32/include/sys/socket.h win32/win32.c + ! win32/win32.h +____________________________________________________________________________ +[ 3424] By: nick on 1999/05/14 21:04:22 + Log: Experimental "slab" allocator for ops. + To try it -DPL_OP_SLAB_ALLOC for op.c + This is for proof of concept only, it leaks memory + (ops are not free'd) so don't use in embedded apps. + If this minimalist version does not show performance + gain then whole idea is worthless. + Nick see's approx 12% speed up vs perlmalloc running + perl -Ilib -MCPAN -e '' + Solaris2.6, gcc-2.8.1 but numbers are not repeatable. + Branch: perl + ! op.c +____________________________________________________________________________ +[ 3423] By: gsar on 1999/05/14 19:55:04 + Log: on win32, look for "site/5.XXX/lib" if "site/5.XXXYY/lib" isn't + found (brings sitelib intuition in line with privlib) + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 3422] By: jhi on 1999/05/14 08:08:01 + Log: From: pvhp@forte.com (Peter Prymmer) + To: perl5-porters@perl.org, vmsperl@perl.org + Subject: [PATCH: 5.005_56] add config.msg to VMS configure.com + Date: Thu, 13 May 99 15:29:57 PDT + Message-Id: <9905132229.AA15854@forte.com> + Branch: cfgperl + ! configure.com +____________________________________________________________________________ +[ 3421] By: jhi on 1999/05/14 07:34:20 + Log: Integrate from mainperl. + Branch: cfgperl + !> lib/ExtUtils/MM_Unix.pm win32/win32.c +____________________________________________________________________________ +[ 3420] By: jhi on 1999/05/14 07:33:26 + Log: Still fflushing. + Branch: cfgperl + ! Configure config_h.SH util.c +____________________________________________________________________________ +[ 3419] By: gsar on 1999/05/14 03:08:29 + Log: mortalize string allocations by win32_get_{priv,site}lib() + (fixes small memory leak in interpreter) + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 3418] By: gsar on 1999/05/14 03:06:50 + Log: make win32_longname() preserve kind of slashes in argument + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 3417] By: gsar on 1999/05/14 03:04:44 + Log: canonicalize path for $(FULLPERL) and $(PERL) in MakeMaker + Branch: perl + ! lib/ExtUtils/MM_Unix.pm +____________________________________________________________________________ +[ 3416] By: jhi on 1999/05/13 21:18:06 + Log: Integrate from mainperl. + Branch: cfgperl + !> pp_ctl.c +____________________________________________________________________________ +[ 3415] By: jhi on 1999/05/13 21:16:49 + Log: Fixes from Andy Dougherty (via private email). + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3414] By: nick on 1999/05/13 20:04:26 + Log: valist vs va_list typo + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3413] By: jhi on 1999/05/13 15:04:05 + Log: From: Andy Dougherty + To: perlbug@perl.com + Subject: [PATCH] (Was Re: SunOS4.1 compilation error) + Date: Wed, 12 May 1999 11:44:11 -0400 (EDT) + Message-Id: + Branch: cfgperl + ! INSTALL +____________________________________________________________________________ +[ 3412] By: jhi on 1999/05/13 14:20:17 + Log: Integrate from mainperl. + Branch: cfgperl + !> pp_ctl.c +____________________________________________________________________________ +[ 3411] By: gsar on 1999/05/13 14:16:56 + Log: docatch_body() declaration mismatch + Branch: perl + ! pp_ctl.c +____________________________________________________________________________ +[ 3410] By: jhi on 1999/05/13 13:51:44 + Log: Add HAS_MEMCHR and make memchr into a cpp macro if it already isn't. + Branch: cfgperl + ! Configure config_h.SH perl.h +____________________________________________________________________________ +[ 3409] By: jhi on 1999/05/13 13:31:53 + Log: Still fflushing strong. + Branch: cfgperl + ! Configure config_h.SH embed.h global.sym objXSUB.h perl.h + ! proto.h util.c +____________________________________________________________________________ +[ 3408] By: jhi on 1999/05/12 14:30:23 + Log: Integrate from mainperl. + Branch: cfgperl + !> (integrate 30 files) +____________________________________________________________________________ +[ 3407] By: jhi on 1999/05/12 12:28:31 + Log: Be tidier with fflush(NULL) testing. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3406] By: gsar on 1999/05/12 11:26:03 + Log: better range-checking on list slices, with test + From: Hugo van der Sanden + Date: Sun, 02 May 1999 17:02:53 +0100 + Message-Id: <199905021602.RAA13905@crypt.compulink.co.uk> + Subject: Re: List slice of undefs returns 0 items + Branch: perl + ! pp.c t/op/list.t +____________________________________________________________________________ +[ 3405] By: gsar on 1999/05/12 11:22:27 + Log: change#3397 needs test tweak + Branch: perl + ! Changes t/pragma/warn/sv +____________________________________________________________________________ +[ 3404] By: gsar on 1999/05/12 11:07:44 + Log: typo in change#3397 + Branch: perl + ! doop.c +____________________________________________________________________________ +[ 3403] By: gsar on 1999/05/12 10:49:01 + Log: From: Stephen Zander + Date: 12 May 1999 01:22:31 -0700 + Message-ID: <87u2tik88o.fsf@pooh.fire-swamp.net> + Subject: Re: Test::Harness runs tainted tests with wrong library path + Branch: perl + ! lib/Test/Harness.pm +____________________________________________________________________________ +[ 3402] By: gsar on 1999/05/12 10:42:06 + Log: typo in change#3400 + Branch: perl + ! ext/B/B/Deparse.pm +____________________________________________________________________________ +[ 3401] By: jhi on 1999/05/12 10:40:42 + Log: A better, shinier, and possibly even correctly working + reincarnation of #3398. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3400] By: gsar on 1999/05/12 10:40:11 + Log: deparse \&func() as \(&func()) for clarity + From: Albert Dvornik + Date: 11 May 1999 13:32:04 -0400 + Message-ID: + Subject: [PATCH 5.005_56] Deparse and \&func() (was Re: File::Find...) + Branch: perl + ! ext/B/B/Deparse.pm +____________________________________________________________________________ +[ 3399] By: gsar on 1999/05/12 10:36:02 + Log: more testsuite smarts (many of them courtesy Ilya) + Branch: perl + ! lib/Test/Harness.pm t/comp/cpp.t t/io/pipe.t t/lib/db-btree.t + ! t/lib/db-hash.t t/lib/db-recno.t t/lib/gdbm.t + ! t/lib/io_multihomed.t t/lib/io_pipe.t t/lib/io_sock.t + ! t/lib/io_udp.t t/lib/io_unix.t t/lib/ipc_sysv.t t/lib/ndbm.t + ! t/lib/odbm.t t/lib/thread.t t/op/exec.t t/op/fork.t + ! t/op/grent.t t/op/groups.t t/op/nothread.t t/op/numconvert.t + ! t/op/pwent.t +____________________________________________________________________________ +[ 3398] By: jhi on 1999/05/12 09:33:08 + Log: Detect whether fflush(NULL) works as per change #3352. + Branch: cfgperl + ! Configure config_h.SH perl.h +____________________________________________________________________________ +[ 3397] By: gsar on 1999/05/12 08:56:03 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Wed, 12 May 1999 01:01:00 +0200 + Message-ID: <3741b5e8.20386944@smtp1.ibm.net> + Subject: [PATCH 5.005_03] chop/chomp modify readonly values + Branch: perl + ! doop.c +____________________________________________________________________________ +[ 3396] By: gsar on 1999/05/12 08:23:27 + Log: opendir(D,"x:") on win32 opens cwd() for drive rather than root; + stat() behaves similarly + Branch: perl + ! win32/win32.c +____________________________________________________________________________ +[ 3395] By: jhi on 1999/05/11 22:21:32 + Log: Redo parts of #3341 and #3358 that #3394 undid. + Branch: cfgperl + ! Configure config_h.SH +____________________________________________________________________________ +[ 3394] By: jhi on 1999/05/11 22:03:48 + Log: Add I_NETINET_TCP to help change #3391. + Branch: cfgperl + ! Configure config_h.SH ext/Socket/Socket.xs +____________________________________________________________________________ +[ 3393] By: jhi on 1999/05/11 21:44:59 + Log: Integrate from mainperl. + Branch: cfgperl + !> (integrate 55 files) +____________________________________________________________________________ +[ 3392] By: gsar on 1999/05/11 20:56:43 + Log: update embedvar.h + Branch: perl + ! embedvar.h ext/ByteLoader/ByteLoader.pm pod/perldelta.pod +____________________________________________________________________________ +[ 3391] By: gsar on 1999/05/11 16:32:05 + Log: From: Joshua Pritikin + Date: Tue, 11 May 1999 11:10:13 -0400 (EDT) + Message-ID: + Subject: Socket IPPROTO_TCP [PATCH 5.005_5x] + Branch: perl + ! ext/Socket/Socket.pm ext/Socket/Socket.xs +____________________________________________________________________________ +[ 3390] By: gsar on 1999/05/11 15:27:40 + Log: display more frequent progress messages when STDOUT is a tty + Branch: perl + ! lib/Test/Harness.pm +____________________________________________________________________________ +[ 3389] By: gsar on 1999/05/11 14:40:58 + Log: From: Ilya Zakharevich + Date: Mon, 10 May 1999 02:07:01 -0400 (EDT) + Message-Id: <199905100607.CAA26045@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_53] Explanations by Test::Harness + Branch: perl + ! lib/Test/Harness.pm +____________________________________________________________________________ +[ 3388] By: gsar on 1999/05/11 14:08:14 + Log: avoid creating spurious subroutine stubs on failed subroutine + call and other places of sv_2cv() misuse; fixes problems with + failed subroutine calls "hiding" later attempts to lookup methods + in base classes + Branch: perl + ! gv.c perl.c pod/perlguts.pod pp_hot.c sv.c t/op/method.t +____________________________________________________________________________ +[ 3387] By: gsar on 1999/05/11 09:34:13 + Log: various fixes for clean build and test on win32; configpm broken, + needed to open myconfig.SH rather than myconfig; sundry adjustments + to bytecode stuff; tweaks to DYNAMIC_ENV_FETCH code to make it + work under win32; getenv_sv() changed to getenv_len() since SVs + aren't visible in the lower echelons; remove bogus exports from + config.sym; PERL_OBJECT-ness for C++ exception support; null out + IoDIRP in filter_del() or sv_free() will attempt to close it + Branch: perl + ! Changes bytecode.pl byterun.c byterun.h configpm embed.h + ! embed.pl ext/B/B/Asmdata.pm ext/ByteLoader/ByteLoader.xs + ! ext/DynaLoader/dlutils.c global.sym hv.c iperlsys.h objXSUB.h + ! op.c perl.c perl.h pp.c pp_ctl.c proto.h scope.c scope.h + ! t/io/open.t t/op/magic.t toke.c util.c vms/vms.c vms/vmsish.h + ! win32/GenCAPI.pl win32/Makefile win32/config.bc + ! win32/config.gc win32/config.vc win32/makedef.pl + ! win32/makefile.mk win32/perlhost.h win32/runperl.c + ! win32/win32.c win32/win32.h +____________________________________________________________________________ +[ 3386] By: gsar on 1999/05/11 02:49:07 + Log: gutsupport for C++ exceptions + From: Chip Salzenberg + Date: Tue, 9 Mar 1999 11:51:57 -0500 + Message-ID: <19990309115157.E7911@perlsupport.com> + Subject: [PATCH 5.005] Flexible Exceptions + Branch: perl + ! embed.h global.sym objXSUB.h perl.c perl.h pp_ctl.c proto.h + ! scope.c scope.h thrdvar.h util.c +____________________________________________________________________________ +[ 3385] By: gsar on 1999/05/10 19:33:36 + Log: "weak" references internals, still needs perlguts documentation + (somewhat modified version of patch suggested by Tuomas J. Lukka + ) + Branch: perl + ! dump.c embed.h embed.pl global.sym mg.c objXSUB.h perl.h + ! pod/perldiag.pod proto.h sv.c sv.h util.c +____________________________________________________________________________ +[ 3384] By: jhi on 1999/05/10 18:21:43 + Log: Circumnavigate Digital UNIX 4.0D miniperl core dump + (due to QAR 56761) (the bug has been fixed in 4.0E or better) + Branch: cfgperl + ! INSTALL hints/dec_osf.sh +____________________________________________________________________________ +[ 3381] By: jhi on 1999/05/10 14:39:28 + Log: Integrate from mainperl. + Branch: cfgperl + +> cygwin32/Makefile.SHs cygwin32/build-instructions.READFIRST + +> cygwin32/build-instructions.charles-wilson + +> cygwin32/build-instructions.sebastien-barre + +> cygwin32/build-instructions.steven-morlock + +> cygwin32/build-instructions.steven-morlock2 + +> cygwin32/impure_ptr.c cygwin32/ld2.in cygwin32/perlld.in + +> ext/ByteLoader/ByteLoader.pm ext/ByteLoader/ByteLoader.xs + +> ext/ByteLoader/Makefile.PL pod/Win32.pod t/lib/io_linenum.t + +> t/op/numconvert.t utils/perlbc.PL + - cygwin32/cw32imp.h cygwin32/gcc2 cygwin32/ld2 cygwin32/perlgcc + - cygwin32/perlld + !> (integrate 105 files) +____________________________________________________________________________ +[ 3380] By: gsar on 1999/05/10 12:27:14 + Log: regen regnodes.h + Branch: perl + ! Changes regnodes.h +____________________________________________________________________________ +[ 3379] By: gsar on 1999/05/10 12:17:26 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Sat, 01 May 1999 22:55:36 +0200 + Message-ID: <373067e9.56194713@smtp1.ibm.net> + Subject: [PATCH 5.005_56] Win32 and VC++ 98 doesn't support CASTI + Branch: perl + ! pod/perlfunc.pod pod/perlop.pod win32/config.vc + ! win32/config_H.vc +____________________________________________________________________________ +[ 3378] By: gsar on 1999/05/10 12:07:13 + Log: From: Ilya Zakharevich + Date: Fri, 30 Apr 1999 22:26:09 -0400 (EDT) + Message-Id: <199905010226.WAA19127@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_56] Self-consistent numeric conversion again + Branch: perl + + t/op/numconvert.t + ! MANIFEST doio.c dump.c perl.h pp.c pp_hot.c sv.c sv.h toke.c + ! util.c +____________________________________________________________________________ +[ 3377] By: gsar on 1999/05/10 11:39:48 + Log: pp_modulo comment tweak from Ilya + Branch: perl + ! pp.c +____________________________________________________________________________ +[ 3376] By: gsar on 1999/05/10 11:30:40 + Log: From: Joshua Pritikin + Date: Fri, 7 May 1999 11:31:00 -0400 (EDT) + Message-ID: + Subject: Test.pm update [PATCH _56] + Branch: perl + ! lib/Test.pm +____________________________________________________________________________ +[ 3375] By: gsar on 1999/05/10 11:28:30 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Fri, 07 May 1999 00:59:54 +0200 + Message-ID: <373318ae.19292461@smtp1.ibm.net> + Subject: Re: Using existing memory for an SV's PV + Branch: perl + ! sv.c +____________________________________________________________________________ +[ 3374] By: gsar on 1999/05/10 11:23:44 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Fri, 07 May 1999 00:59:52 +0200 + Message-ID: <37321800.19118320@smtp1.ibm.net> + Subject: [PATCH 5.005_56] Fix -Dm memory debugging for PERL_OBJECT + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 3373] By: gsar on 1999/05/10 11:22:10 + Log: From: Ilya Zakharevich + Date: Thu, 6 May 1999 18:17:28 -0400 + Message-ID: <19990506181728.A12433@monk.mps.ohio-state.edu> + Subject: Re: [PATCH 5.005_56] Make open(F,"command |") return correct err(no) + Branch: perl + ! doio.c embed.h global.sym objXSUB.h pod/perldiag.pod proto.h + ! util.c +____________________________________________________________________________ +[ 3372] By: gsar on 1999/05/10 10:57:49 + Log: From: Ilya Zakharevich + Date: Thu, 6 May 1999 01:21:05 -0400 (EDT) + Message-Id: <199905060521.BAA03485@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_56] Cosmetic: data-driven REx-dump + Branch: perl + ! regcomp.c regcomp.pl +____________________________________________________________________________ +[ 3371] By: gsar on 1999/05/10 10:54:01 + Log: From: lane@duphy4.physics.drexel.edu + Date: Tue, 04 May 1999 10:19:25 -0700 + Message-Id: <3.0.6.32.19990504101925.02ecde30@ous.edu> + Subject: [PATCH 5.005.56] pod->html VMS fixes + Branch: perl + ! installhtml lib/Pod/Html.pm +____________________________________________________________________________ +[ 3370] By: gsar on 1999/05/10 10:45:52 + Log: testsuite nits + Branch: perl + ! t/lib/io_linenum.t t/op/filetest.t +____________________________________________________________________________ +[ 3369] By: gsar on 1999/05/10 10:35:22 + Log: From: Ilya Zakharevich + Date: Mon, 3 May 1999 22:38:50 -0400 (EDT) + Message-Id: <199905040238.WAA01865@monk.mps.ohio-state.edu> + Subject: [PATCH 5.005_53] Quickier thread-specific data on OS/2 + Branch: perl + ! os2/os2ish.h os2/os2thread.h +____________________________________________________________________________ +[ 3368] By: gsar on 1999/05/10 10:00:11 + Log: From: Albert Dvornik + Date: 03 May 1999 12:20:57 -0400 + Message-ID: + Subject: [PATCH 5.005_56] do_sv_dump does dump (core) on IO handles + Branch: perl + ! dump.c +____________________________________________________________________________ +[ 3367] By: gsar on 1999/05/10 09:55:51 + Log: shadow password support for Solaris (needs Configure help to + determine HAS_GETSPENT) + From: "Patrick O'Brien" + Date: Sat, 01 May 1999 19:41:17 -0400 + Message-Id: <199905012341.TAA23989@optimus.cs.umd.edu> + Subject: getpwent() under solaris + Branch: perl + ! pp_sys.c +____________________________________________________________________________ +[ 3366] By: gsar on 1999/05/10 09:45:58 + Log: From: jan.dubois@ibm.net (Jan Dubois) + Date: Sat, 01 May 1999 23:45:47 +0200 + Message-ID: <373373fb.59284266@smtp1.ibm.net> + Subject: [PATCH 5.005_56] Add POLLUTE=1 option to MakeMaker + Branch: perl + ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm + ! pod/perldelta.pod +____________________________________________________________________________ +[ 3365] By: gsar on 1999/05/10 09:34:22 + Log: test suite and fix input_line_number() + From: Paul Johnson + Date: Thu, 29 Apr 1999 06:28:14 +0100 + Message-ID: <19990429062814.A17906@west-tip.transeda.com> + Subject: [PATCH] IO::Handle 1.20 (was Re: FAIL Gedcom-1.01 i86pc-solaris 2.6) + Branch: perl + + t/lib/io_linenum.t + ! MANIFEST ext/IO/lib/IO/Handle.pm +____________________________________________________________________________ +[ 3364] By: gsar on 1999/05/10 09:20:56 + Log: fix overeager [:foo:] parsing + From: Hugo van der Sanden + Date: Fri, 30 Apr 1999 09:26:18 +0100 + Message-Id: <199904300826.JAA01257@crypt.compulink.co.uk> + Subject: [PATCH 5.005_{56,03}] Re: Regular expression difference b/n 5.004 & 5.005 + Branch: perl + ! regcomp.c t/op/re_tests +____________________________________________________________________________ +[ 3363] By: gsar on 1999/05/10 09:09:21 + Log: documentation for Win32 builtins (somewhat modified) + From: jan.dubois@ibm.net (Jan Dubois) + Date: Tue, 30 Mar 1999 08:05:03 +0200 + Message-ID: <37006783.1926460@smtp1.ibm.net> + Subject: Re: Issues with build 509 + Branch: perl + + pod/Win32.pod + ! MANIFEST +____________________________________________________________________________ +[ 3362] By: gsar on 1999/05/10 08:22:07 + Log: provide File::Copy::syscopy() via Win32::CopyFile() on win32 + Branch: perl + ! lib/File/Copy.pm win32/win32.c +____________________________________________________________________________ +[ 3361] By: gsar on 1999/05/10 08:11:29 + Log: escape ampersands in
 sections
+     Branch: perl
+           ! Changes lib/Pod/Html.pm
+____________________________________________________________________________
+[  3360] By: gsar                                  on 1999/05/10  08:04:14
+        Log: AIX hints enhancements (threads build, SOCKS support)
+             From: "David R. Favor" 
+             Date: Wed, 28 Apr 1999 08:45:28 -0500
+             Message-ID: <372710F8.B1F73BEB@austin.ibm.com>
+             Subject: Working build for AIX + gcc + threading
+     Branch: perl
            ! hints/aix.sh
 ____________________________________________________________________________
+[  3359] By: gsar                                  on 1999/05/10  07:49:26
+        Log: more Compiler patches from Vishal Bhatia 
+             Date: Tue, 27 Apr 1999 23:47:24 PDT
+             Message-ID: <19990428064724.95244.qmail@hotmail.com>
+             Subject: [PATCH 5.005_56] Saving Tied hashes ( C.pm)
+             --
+             Date: Thu, 29 Apr 1999 18:21:06 -0700
+             Message-ID: 
+             Subject: [PATCH 5.005_56] double constants ( C.pm)
+             --
+             Date: Mon, 03 May 1999 20:21:31 PDT
+             Message-ID: <19990504032131.81113.qmail@hotmail.com>
+             Subject: [PATCH 5.005_56] Overloading implementation ( Compiler)
+             --
+             Date: Thu, 06 May 1999 17:57:09 -0700
+             Message-ID: 
+             Subject: Stash.pm
+     Branch: perl
+	   ! ext/B/B.pm ext/B/B.xs ext/B/B/Bblock.pm ext/B/B/C.pm
+           ! ext/B/B/CC.pm ext/B/B/Stash.pm t/harness
+____________________________________________________________________________
+[  3358] By: gsar                                  on 1999/05/10  04:39:15
+        Log: cygwin32 update (untested adaptation of patch against 5.005_03)
+             From: alexander smishlajev 
+             Date: Sun, 25 Apr 1999 14:58:29 +0300
+             Message-ID: <37230365.5F68B460@turnhere.com>
+             Subject: [PATCH]5.005_03 (CORE) cygwin32 port
+     Branch: perl
+	   + cygwin32/Makefile.SHs cygwin32/build-instructions.READFIRST
+	   + cygwin32/build-instructions.charles-wilson
+	   + cygwin32/build-instructions.sebastien-barre
+	   + cygwin32/build-instructions.steven-morlock
+	   + cygwin32/build-instructions.steven-morlock2
+           + cygwin32/impure_ptr.c cygwin32/ld2.in cygwin32/perlld.in
+	   - cygwin32/cw32imp.h cygwin32/gcc2 cygwin32/ld2 cygwin32/perlgcc
+           - cygwin32/perlld
+	   ! Configure EXTERN.h MANIFEST Makefile.SH README.cygwin32 XSUB.h
+	   ! cflags.SH config_h.SH dosish.h ext/POSIX/Makefile.PL
+	   ! ext/SDBM_File/sdbm/pair.c hints/cygwin32.sh installperl
+	   ! lib/Cwd.pm lib/ExtUtils/MakeMaker.pm lib/perl5db.pl
+	   ! makedepend.SH perl.h perlvars.h pp_hot.c pp_sys.c regcomp.c
+           ! t/io/fs.t t/io/tell.t t/lib/anydbm.t t/op/stat.t util.c
+____________________________________________________________________________
+[  3357] By: gsar                                  on 1999/05/10  04:07:07
+        Log: applied suggested patch, modulo already applied parts
+             From: Charles Bailey 
+             Date: Sat, 24 Apr 1999 20:12:43 -0400 (EDT)
+             Message-id: <01JAF9UAV9XG002O0W@mail.newman.upenn.edu>
+             Subject: [Patch 5.005_56] VMS consolidated patch #2
+     Branch: perl
+	   ! configure.com t/op/filetest.t t/op/taint.t t/pragma/warn/doio
+	   ! t/pragma/warn/mg t/pragma/warn/pp_sys t/pragma/warn/sv
+	   ! vms/descrip_mms.template vms/ext/vmsish.t vms/perlvms.pod
+           ! vms/subconfigure.com vms/test.com vms/vms.c
+____________________________________________________________________________
+[  3356] By: gsar                                  on 1999/05/10  03:48:08
+        Log: applied suggested patch, with win32 and PERL_OBJECT additions
+             From: Tom Hughes 
+             Date: Sat, 24 Apr 1999 18:11:59 +0100
+             Message-ID: <609bdff748.tom@compton.compton.nu>
+             Subject: ByteLoader patch
+     Branch: perl
+	   + ext/ByteLoader/ByteLoader.pm ext/ByteLoader/ByteLoader.xs
+           + ext/ByteLoader/Makefile.PL utils/perlbc.PL
+	   ! MANIFEST bytecode.h bytecode.pl byterun.c byterun.h embed.h
+	   ! embed.pl ext/B/B.xs ext/B/B/Asmdata.pm ext/B/B/Bytecode.pm
+	   ! ext/B/B/Debug.pm objXSUB.h op.c pp_ctl.c proto.h
+           ! utils/Makefile win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  3355] By: gsar                                  on 1999/05/10  03:22:49
+        Log: document 'test' attribute (from Andreas Koenig)
+     Branch: perl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  3354] By: gsar                                  on 1999/05/10  03:12:37
+        Log: From: pmarquess@bfsec.bt.co.uk
+             Date: Thu, 22 Apr 1999 23:12:08 +0100
+             Message-ID: <5104D4DBC598D211B5FE0000F8FE7EB29C6B45@mbtlipnt02.btlabs.bt.co.uk>
+             Subject: PATCH for small bug in scan_bin
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[  3353] By: gsar                                  on 1999/05/10  02:39:33
+        Log: more bulletproof workaround for mangled paths (updates changes#3345,3350);
+             provide Win32::GetLongPathName() to complement Win32::GetShortPathName()
+     Branch: perl
+	   ! t/op/magic.t win32/makedef.pl win32/runperl.c win32/win32.c
+           ! win32/win32iop.h
+____________________________________________________________________________
+[  3352] By: gsar                                  on 1999/05/09  22:47:39
+        Log: flush all open output buffers before fork(), exec(), system, qx//
+             and pipe open() operations, simplifying buffering headaches faced
+             by users; uses fflush(NULL), which may need Configure test
+     Branch: perl
+	   ! perl.h pod/perldelta.pod pod/perlfunc.pod pod/perlipc.pod
+           ! pp_sys.c util.c vmesa/vmesa.c vms/vms.c win32/win32.c
+____________________________________________________________________________
+[  3351] By: gsar                                  on 1999/05/09  21:11:51
+        Log: perlcc on win32 (correct version of fix suggested by Jean-Louis
+             Leroy )
+     Branch: perl
+           ! utils/perlcc.PL
+____________________________________________________________________________
+[  3350] By: gsar                                  on 1999/05/09  20:39:11
+        Log: normalize $^X to full pathname on win32
+     Branch: perl
+           ! win32/runperl.c
+____________________________________________________________________________
+[  3349] By: gsar                                  on 1999/05/09  20:23:07
+        Log: allow readline($globref), <$globref> already works
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[  3348] By: gsar                                  on 1999/05/09  20:00:09
+        Log: perldoc cleanups (variant of changes suggested by Christian Lemburg
+             )
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  3347] By: gsar                                  on 1999/05/09  18:47:21
+        Log: additions to Thread.pm docs from Tuomas J. Lukka
+             
+     Branch: perl
+           ! ext/Thread/Thread.pm
+____________________________________________________________________________
+[  3346] By: gsar                                  on 1999/05/09  18:38:00
+        Log: From: Stephen McCamant 
+             Date: Sat, 17 Apr 1999 02:46:13 -0700 (PDT)
+             Message-ID: <14103.57454.614253.598264@fre-76-120.reshall.berkeley.edu>
+             Subject: [PATCH _56] Re: pdt: Perl Development Tools? 
+     Branch: perl
+           ! ext/B/B/Xref.pm
+____________________________________________________________________________
+[  3345] By: gsar                                  on 1999/05/09  18:22:43
+        Log: work around mangled archname on win32 while finding privlib/sitelib;
+             normalize lib paths to forward slashes internally
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3344] By: gsar                                  on 1999/05/09  03:20:06
+        Log: fix typo in dbm filters that caused odbm.t to fail
+     Branch: perl
+           ! ext/ODBM_File/ODBM_File.xs t/lib/odbm.t
+____________________________________________________________________________
+[  3343] By: gsar                                  on 1999/05/09  02:02:59
+        Log: tweak test totals
+     Branch: perl
+           ! Changes t/lib/tie-stdhandle.t
+____________________________________________________________________________
+[  3342] By: gsar                                  on 1999/05/09  01:42:06
+        Log: import list propagation busted (pointed out by Ton Hospel
+             )
+     Branch: perl
+           ! lib/autouse.pm
+____________________________________________________________________________
+[  3341] By: gsar                                  on 1999/05/09  00:54:18
+        Log: hpux needs {SHLIB_PATH,LDOPTS} rather than LD_{LIBRARY,RUN}_PATH
+             (as suggested by Eric Boehm )
+     Branch: perl
+           ! Configure Makefile.SH
+____________________________________________________________________________
+[  3340] By: gsar                                  on 1999/05/09  00:40:41
+        Log: generate manpages for newly added utils
+     Branch: perl
+           ! installman
+____________________________________________________________________________
+[  3339] By: gsar                                  on 1999/05/09  00:33:50
+        Log: From: Hugo van der Sanden 
+             Date: Sun, 02 May 1999 17:59:24 +0100
+             Message-Id: <199905021659.RAA14016@crypt.compulink.co.uk>
+             Subject: [PATCH] Re: ptr to realloced memory in yylex
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[  3338] By: jhi                                   on 1999/05/08  22:40:29
+        Log: Remove CONFIG item, add Digital UNIX 'ld' bug.
+     Branch: cfgperl
+           ! INSTALL
+____________________________________________________________________________
+[  3337] By: jhi                                   on 1999/05/08  22:22:26
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> pod/perldbmfilter.pod t/io/open.t t/lib/tie-stdhandle.t
+          !> (integrate 54 files)
+____________________________________________________________________________
+[  3336] By: gsar                                  on 1999/05/08  21:48:22
+        Log: make perldoc -f grok nested =items
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  3335] By: gsar                                  on 1999/05/08  19:48:11
+        Log: allow AV/HV dereferences on pseudohashes ($ph->{foo}[1], etc.)
+     Branch: perl
+           ! op.c t/lib/fields.t
+____________________________________________________________________________
+[  3334] By: gsar                                  on 1999/05/08  19:09:41
+        Log: update test totals
+     Branch: perl
+           ! t/lib/bigintpm.t
+____________________________________________________________________________
+[  3333] By: gsar                                  on 1999/05/08  16:56:02
+        Log: mention unpack('pP',...) footshot (from Albert Dvornik )
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  3332] By: gsar                                  on 1999/05/08  16:46:44
+        Log: applied suggested patch, added tests
+             From: William Mann 
+             Date: Mon, 12 Apr 1999 12:25:22 -0400 (EDT)
+             Message-Id: <199904121625.MAA00983@hwsrv1.avici.com>
+             Subject: BigInt.pm extensions for logical operations
+     Branch: perl
+           ! lib/Math/BigInt.pm pod/perldelta.pod t/lib/bigintpm.t
+____________________________________________________________________________
+[  3331] By: gsar                                  on 1999/05/08  16:09:33
+        Log: avoid temporary files named 'tmp'
+     Branch: perl
+           ! Makefile.SH pp.c
+____________________________________________________________________________
+[  3330] By: nick                                  on 1999/05/08  14:16:30
+        Log: Implement OPEN, EOF, SEEK, TELL, BINMODE and FILENO as TIEHANDLE methods.
+             Provide Tie::StdHandle
+             Basic update of docs.
+     Branch: perl
+           + t/lib/tie-stdhandle.t
+           ! lib/Tie/Handle.pm pod/perltie.pod pp_sys.c
+____________________________________________________________________________
+[  3329] By: nick                                  on 1999/05/08  12:03:45
+        Log: Tweaks to open(my $fh,...) stuff
+     Branch: perl
+           ! op.c pp.c pp_sys.c t/io/open.t
+____________________________________________________________________________
+[  3328] By: nick                                  on 1999/05/08  11:18:42
+        Log: Bring SDBM_File.xs into line with new typemap
+     Branch: perl
+           ! ext/SDBM_File/SDBM_File.xs
+____________________________________________________________________________
+[  3327] By: gsar                                  on 1999/05/08  00:07:11
+        Log: add test case for AUTOLOAD reentrancy fix in change#3279
+     Branch: perl
+           ! t/lib/autoloader.t
+____________________________________________________________________________
+[  3326] By: nick                                  on 1999/05/07  21:24:50
+        Log: Implement open( my $fh, ...) and similar.
+             Set flag in op.c for "constructor ops"
+             In pp_rv2gv, if flag is set and arg is PADSV and uninit
+             vivify as reference to a detached GV.
+             (Name of GV is the pad name.)
+             This scheme should "just work" for pipe/socket etc. too.
+             
+             #if 0 out the open(FH,undef) for now.
+             Change t/io/open.t to test open(my $fh,...)
+     Branch: perl
+           ! op.c pp.c pp_sys.c t/io/open.t
+____________________________________________________________________________
+[  3325] By: nick                                  on 1999/05/07  21:18:42
+        Log: Correct SvLEN vs SvCUR  which leads to odd "chunk" vs "line" in mess().
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[  3324] By: gsar                                  on 1999/05/07  20:28:31
+        Log: avoid using PL_sv_mutex in condpair_magic() (avoids hangs when
+             intervening code has to allocate SVs)
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[  3323] By: gsar                                  on 1999/05/07  19:45:08
+        Log: allow line numbers to show in diagnostics during global destruction
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[  3322] By: gsar                                  on 1999/05/07  09:38:11
+        Log: From: Dan Sugalski 
+             Date: Fri, 09 Apr 1999 16:16:39 -0700
+             Message-Id: <3.0.6.32.19990409161639.02ea1050@ous.edu>
+             Subject: [PATCH 5.005_03]Bug in MM_VMS.PM
+     Branch: perl
+           ! lib/ExtUtils/MM_VMS.pm
+____________________________________________________________________________
+[  3321] By: gsar                                  on 1999/05/07  09:08:23
+        Log: From: kwzh@gnu.org (Karl Heuer)
+             Date: Wed, 7 Apr 1999 23:58:58 -0400
+             Message-Id: <199904080358.XAA01192@mescaline.gnu.org>
+             Subject: [perl-5.005.02] detect lack of /dev/tty
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  3320] By: gsar                                  on 1999/05/07  08:52:14
+        Log: allow distinct prefix for versioned executables
+             From: Roderick Schertler 
+             Date: Wed, 07 Apr 1999 15:34:56 -0400
+             Message-ID: <3003.923513696@eeyore.ibcinc.com>
+             Subject: perl55.00503 -> perl5.00503 patch for installperl
+     Branch: perl
+           ! INSTALL installperl
+____________________________________________________________________________
+[  3319] By: gsar                                  on 1999/05/07  08:07:02
+        Log: From: Dan Sugalski 
+             Date: Mon, 05 Apr 1999 15:38:42 -0700
+             Message-Id: <3.0.6.32.19990405153842.0367b650@ous.edu>
+             Subject: Re: chomp fails with $/ in fixed-length record mode
+             --
+             From: Roderick Schertler 
+             Date: Tue, 06 Apr 1999 21:11:37 -0400
+             Message-ID: <2795.923447497@eeyore.ibcinc.com>
+             Subject: Re: chomp fails with $/ in fixed-length record mode
+     Branch: perl
+           ! doop.c pod/perlfunc.pod t/op/chop.t
+____________________________________________________________________________
+[  3318] By: gsar                                  on 1999/05/07  07:56:35
+        Log: From: Ilya Zakharevich 
+             Date: Tue, 6 Apr 1999 01:40:36 -0400
+             Message-ID: <19990406014035.A1238@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Make % use fmod()
+     Branch: perl
+           ! pp.c t/op/arith.t
+____________________________________________________________________________
+[  3317] By: gsar                                  on 1999/05/07  04:18:11
+        Log: DBM Filters (via private mail)
+             From: pmarquess@bfsec.bt.co.uk
+             Date: Sun, 18 Apr 1999 21:05:52 +0100
+             Message-Id: <199904182009.NAA19152@activestate.com>
+             Subject: DBM Filters
+     Branch: perl
+           + pod/perldbmfilter.pod
+	   ! MANIFEST ext/DB_File/Changes ext/DB_File/DB_File.pm
+	   ! ext/DB_File/DB_File.xs ext/DB_File/typemap
+	   ! ext/GDBM_File/GDBM_File.pm ext/GDBM_File/GDBM_File.xs
+	   ! ext/GDBM_File/typemap ext/NDBM_File/NDBM_File.pm
+	   ! ext/NDBM_File/NDBM_File.xs ext/NDBM_File/typemap
+	   ! ext/ODBM_File/ODBM_File.pm ext/ODBM_File/ODBM_File.xs
+	   ! ext/ODBM_File/typemap ext/SDBM_File/SDBM_File.pm
+	   ! ext/SDBM_File/SDBM_File.xs ext/SDBM_File/typemap
+	   ! lib/AnyDBM_File.pm pod/Makefile pod/buildtoc pod/perl.pod
+	   ! pod/perldelta.pod t/lib/db-btree.t t/lib/db-hash.t
+	   ! t/lib/db-recno.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t
+           ! t/lib/sdbm.t
+____________________________________________________________________________
+[  3316] By: gsar                                  on 1999/05/07  03:28:53
+        Log: avoid negative return value from Win32::GetTickCount()
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sat, 03 Apr 1999 19:04:18 +0200
+             Message-ID: <37084742.22824479@smtp1.ibm.net>
+             Subject: Re: Win32::GetTickCount
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3314] By: gsar                                  on 1999/05/06  08:01:23
+        Log: compiler fixes from Vishal Bhatia 
+             Date: Tue, 30 Mar 1999 23:40:34 PST
+             Message-ID: <19990331074034.6117.qmail@hotmail.com>
+             Subject: [PATCH 5.005_56] pp_entersub and pp_leavewrite(CC.pm)
+             --
+             Date: Wed, 07 Apr 1999 00:28:23 -0800
+             Message-ID: 
+             Subject: [PATCH 5.005_56] function prototypes(B.pm)
+             --
+             Date: Thu, 22 Apr 1999 23:40:52 -0700
+             Message-ID: 
+             Subject: [PATCH 5.005_56 ] discarding worthless padsvs
+             --
+             Date: Tue, 27 Apr 1999 01:14:49 PDT
+             Message-ID: <19990427081449.28615.qmail@hotmail.com>
+             Subject: [PATCH 5.005_56] pp_ncmp implementation ( CC.pm)
+     Branch: perl
+	   ! ext/B/B.pm ext/B/B/CC.pm ext/B/B/Stackobj.pm t/op/gv.t
+           ! t/op/ref.t
+____________________________________________________________________________
+[  3313] By: jhi                                   on 1999/05/06  07:59:52
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> (integrate 33 files)
+____________________________________________________________________________
+[  3312] By: gsar                                  on 1999/05/06  07:11:50
+        Log: add Ethiopic section to unicode master database (from Ken
+             Whistler )
+     Branch: perl
+           ! lib/unicode/UnicodeData-Latest.txt
+____________________________________________________________________________
+[  3311] By: gsar                                  on 1999/05/06  05:37:55
+        Log: From: Damon Atkins 
+             Date: Tue, 30 Mar 1999 11:26:11 +1000 (EST)
+             Message-Id: <199903300126.LAA20870@sysmgtdev.nabaus.com.au>
+             Subject: Largefiles for Solaris
+     Branch: perl
+           ! hints/solaris_2.sh
+____________________________________________________________________________
+[  3310] By: gsar                                  on 1999/05/06  05:14:35
+        Log: emit more accurate diagnostic for syntax errors involving <>
+             within eval""
+     Branch: perl
+           ! toke.c utils/perldoc.PL
+____________________________________________________________________________
+[  3309] By: gsar                                  on 1999/05/06  04:36:31
+        Log: additional test for IPC::Open3 (courtesy RonaldWS@aol.com)
+     Branch: perl
+           ! t/lib/open3.t
+____________________________________________________________________________
+[  3308] By: gsar                                  on 1999/05/06  03:19:16
+        Log: applied first part of suggested patch (bug described cannot be
+             reproduced any longer, so the second inconclusive part has not
+             been applied)
+             From: Hugo van der Sanden 
+             Date: Sun, 28 Mar 1999 04:51:34 +0100
+             Message-Id: <199903280351.EAA20430@crypt.compulink.co.uk>
+             Subject: [PATCH 5.005_56] Re: A core dump 
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[  3307] By: gsar                                  on 1999/05/06  01:56:06
+        Log: fix bogus OPf_REF context in C (extension of
+             change#3180)
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[  3306] By: gsar                                  on 1999/05/05  17:17:34
+        Log: applied non-conflicting parts of suggested patch
+             From: Charles Bailey 
+             Date: Sat, 27 Mar 1999 00:16:51 -0400 (EDT)
+             Message-id: <01J9AZY8I2PW001O2S@mail.newman.upenn.edu>
+             Subject: [Patch 5.005_56] Revised VMS patch
+     Branch: perl
+	   ! Changes ext/B/defsubs.h.PL hv.c iperlsys.h perl.c
+           ! pod/perldiag.pod proto.h util.c vms/perlvms.pod vms/vms.c
+____________________________________________________________________________
+[  3305] By: gsar                                  on 1999/05/05  16:20:19
+        Log: make perldoc use backslashed pathnames within system() on win32
+     Branch: perl
+           ! pod/perldiag.pod pod/perlthrtut.pod utils/perldoc.PL
+____________________________________________________________________________
+[  3304] By: gsar                                  on 1999/05/05  07:29:43
+        Log: upgrade Pod::Parser to v1.081 from CPAN
+     Branch: perl
+	   ! lib/Pod/Checker.pm lib/Pod/InputObjects.pm lib/Pod/Parser.pm
+	   ! lib/Pod/PlainText.pm lib/Pod/Select.pm lib/Pod/Usage.pm
+           ! t/pod/special_seqs.t t/pod/special_seqs.xr t/pod/testp2pt.pl
+____________________________________________________________________________
+[  3303] By: gsar                                  on 1999/05/05  07:02:07
+        Log: From: Andy Dougherty 
+             Date: Fri, 19 Mar 1999 12:31:35 -0500 (EST)
+             Message-Id: 
+             Subject: [PATCH 5.005_03-MT3] INSTALL patches
+     Branch: perl
+           ! INSTALL
+____________________________________________________________________________
+[  3302] By: gsar                                  on 1999/05/05  06:55:21
+        Log: load base packages based on nonexistent $VERSION
+             From: andreas.koenig@anima.de (Andreas J. Koenig)
+             Date: 19 Mar 1999 06:00:28 +0100
+             Message-ID: 
+             Subject: Re: base.pm flaw
+     Branch: perl
+           ! lib/base.pm lib/locale.pm
+____________________________________________________________________________
+[  3301] By: gsar                                  on 1999/05/04  05:41:08
+        Log: pod2man outputs switched date and revision label (fix suggested by
+             EthanSasiela@mede.com)
+     Branch: perl
+           ! pod/pod2man.PL
+____________________________________________________________________________
+[  3300] By: gsar                                  on 1999/05/03  18:48:25
+        Log: adjust win32_stat() to cope with FindFirstFile() and stat() bugs
+             (makes opendir(D,"c:") work reliably)
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3299] By: gsar                                  on 1999/05/02  19:39:55
+        Log: add test case for change#3298
+     Branch: perl
+           ! sv.c t/op/readdir.t
+____________________________________________________________________________
+[  3298] By: gsar                                  on 1999/05/02  19:24:41
+        Log: close directory handles properly when localized
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  3297] By: jhi                                   on 1999/04/30  11:42:14
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+	  !> Changes config_h.SH configure.com lib/AutoLoader.pm
+	  !> lib/AutoSplit.pm lib/File/Path.pm pod/perlre.pod pp.c pp_ctl.c
+	  !> pp_sys.c proto.h regcomp.c t/op/die.t t/op/ref.t util.c
+	  !> vms/descrip_mms.template vms/gen_shrfls.pl vms/munchconfig.c
+          !> vms/subconfigure.com win32/win32.c
+____________________________________________________________________________
+[  3293] By: chip                                  on 1999/04/29  18:50:49
+        Log: Fix shebang lines.
+     Branch: maint-5.004/perl
+	   ! Porting/p4d2p h2pl/mksizes pod/checkpods.PL pod/pod2html.PL
+	   ! pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL utils/c2ph.PL
+	   ! utils/h2ph.PL utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL
+	   ! utils/pl2pm.PL utils/splain.PL win32/bin/search.pl
+           ! x2p/find2perl.PL x2p/s2p.PL
+____________________________________________________________________________
+[  3284] By: gsar                                  on 1999/04/27  00:48:42
+        Log: integrate change#3279 from maint-5.004
+     Branch: perl
+           ! lib/AutoLoader.pm
+____________________________________________________________________________
+[  3279] By: chip                                  on 1999/04/26  23:09:26
+        Log: Make &AutoLoad::AUTOLOAD reentrant.
+     Branch: maint-5.004/perl
+           ! lib/AutoLoader.pm
+____________________________________________________________________________
+[  3276] By: chip                                  on 1999/04/26  22:34:36
+        Log: Make porting scripts executable.
+     Branch: maint-5.004/perl
+	   ! Changes Porting/genlog Porting/makerel Porting/p4desc
+           ! Porting/patchls
+____________________________________________________________________________
+[  3274] By: gsar                                  on 1999/04/26  17:30:31
+        Log: allow embedded null characters in diagnostics
+     Branch: perl
+           ! pp_ctl.c pp_sys.c proto.h regcomp.c t/op/die.t util.c
+____________________________________________________________________________
+[  3273] By: gsar                                  on 1999/04/26  08:27:22
+        Log: hand-applied conflicting parts of suggested patch
+             From: Charles Bailey 
+             Date: Wed, 17 Mar 1999 23:55:23 -0400 (EDT)
+             Message-id: <01J8YELSL7WK001E7S@mail.newman.upenn.edu>
+             Subject: [PATCH 5.005_56] VMS configuration/build
+     Branch: perl
+	   ! configure.com vms/descrip_mms.template vms/gen_shrfls.pl
+           ! vms/munchconfig.c vms/subconfigure.com
+____________________________________________________________________________
+[  3272] By: gsar                                  on 1999/04/26  08:25:41
+        Log: update Changes; tweak minor regressions
+     Branch: perl
+           ! Changes lib/AutoSplit.pm lib/File/Path.pm
+____________________________________________________________________________
+[  3271] By: gsar                                  on 1999/04/26  07:52:51
+        Log: integrate change#3229 from maint-5.004
+     Branch: perl
+           ! pp_ctl.c util.c
+____________________________________________________________________________
+[  3270] By: gsar                                  on 1999/04/25  22:58:27
+        Log: fix buggy reference count on refs to SVs with autoviv magic
+             (resulted in C and Data::Dumper
+             accessing free()d memory)
+     Branch: perl
+           ! pp.c t/op/ref.t
+____________________________________________________________________________
+[  3269] By: gsar                                  on 1999/04/24  17:07:55
+        Log: fix bug in change#3123 (off-by-one, caused C to fail
+             on win32)
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3268] By: gsar                                  on 1999/04/24  16:38:25
+        Log: kill dup hunk
+     Branch: perl
+           ! config_h.SH
+____________________________________________________________________________
+[  3267] By: gsar                                  on 1999/04/24  16:35:57
+        Log: integrate cfgperl changes into mainline
+     Branch: perl
+          +> myconfig.SH
+           - myconfig
+           ! pod/perlre.pod
+          !> (integrate 38 files)
+____________________________________________________________________________
+[  3266] By: jhi                                   on 1999/04/23  18:42:44
+        Log: From: "Kurt D. Starsinic" 
+             To: perl5-porters@perl.org, Jarkko Hietaniemi ,
+             Graham Barr , Gurusamy Sarathy 
+             Cc: Lionel Cons ,
+             Ilya Zakharevich ,
+             David Hayes 
+             Subject: [PATCH] h2ph
+             Date: Fri, 23 Apr 1999 12:37:23 -0400
+             Message-ID: <19990423123723.A49550@O2.chapin.edu>
+     Branch: cfgperl
+           ! utils/h2ph.PL
+____________________________________________________________________________
+[  3265] By: jhi                                   on 1999/04/21  18:17:12
+        Log: From: lane@duphy4.physics.drexel.edu (by way of Dan Sugalski )
+             To: perlbug@perl.org
+             Subject: [PATCH Perl 5.005.56] descrip_mms.template installed files fix
+             Date: Wed, 21 Apr 1999 08:17:54 -0700
+             Message-Id: <3.0.6.32.19990421081754.03127b60@ous.edu>
+     Branch: cfgperl
+           ! vms/descrip_mms.template
+____________________________________________________________________________
+[  3264] By: jhi                                   on 1999/04/20  08:50:54
+        Log: From: Andy Dougherty 
+             To: The Perl Porters Mailing List 
+             Subject: [PATCH 5.005_56] Re: 5.006 Todo
+             Date: Mon, 19 Apr 1999 16:27:07 -0400 (EDT)
+             Message-Id: 
+     Branch: cfgperl
+           ! Porting/pumpkin.pod
+____________________________________________________________________________
+[  3263] By: jhi                                   on 1999/04/20  08:05:01
+        Log: From: Chip Salzenberg 
+             To: Perl 5 Porters 
+             Subject: [PATCH 5.005_56] Configure: $sig_count
+             Date: Sun, 18 Apr 1999 17:54:36 -0400
+             Message-ID: <19990418175436.A27496@perlsupport.com>
+     Branch: cfgperl
+	   ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+           ! config_h.SH
+____________________________________________________________________________
+[  3262] By: jhi                                   on 1999/04/19  18:23:50
+        Log: Subject: PATCH wrong faq reference in perlbook.pod
+             From: Robin Barker 
+             To: perlbug@perl.com
+             Date: Fri, 9 Apr 1999 16:05:23 +0100 (BST)
+             Message-Id: <199904091505.QAA03757@cyclone.cise.npl.co.uk>
+     Branch: cfgperl
+           ! pod/perlbook.pod
+____________________________________________________________________________
+[  3261] By: jhi                                   on 1999/04/15  13:59:04
+        Log: From: Andy Dougherty 
+             To: Hugo van der Sanden 
+             Cc: Perl Porters 
+             Subject: [PATCH] Re: 5.005_03 and gcc, GNU ld under Solaris 2.6
+             Date: Wed, 14 Apr 1999 17:07:43 -0400 (EDT)
+             Message-Id: 
+     Branch: cfgperl
+           ! hints/solaris_2.sh
+____________________________________________________________________________
+[  3260] By: jhi                                   on 1999/04/15  13:56:53
+        Log: From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: PATCH: 5.005_56: perldata.pod (UPDATE)
+             Date: Thu, 15 Apr 1999 07:13:41 -0600
+             Message-Id: <199904151313.HAA07682@jhereg.perl.com>
+     Branch: cfgperl
+           ! pod/perldata.pod
+____________________________________________________________________________
+[  3259] By: jhi                                   on 1999/04/13  23:12:52
+        Log: LDLIBPTH also on 'clean' targets.
+     Branch: cfgperl
+           ! Makefile.SH
+____________________________________________________________________________
+[  3258] By: jhi                                   on 1999/04/13  21:38:46
+        Log: Add information about the two DEC C compiler optimizer bugs
+             (what patch levels of the compilers fix them).
+     Branch: cfgperl
+           ! pp.c t/op/repeat.t
+____________________________________________________________________________
+[  3257] By: jhi                                   on 1999/04/13  14:25:08
+        Log: Be polite about ccdlflags and lddflags, too.
+             Avoid Perl's malloc only when threaded.
+     Branch: cfgperl
+           ! hints/aix.sh
+____________________________________________________________________________
+[  3256] By: jhi                                   on 1999/04/13  10:21:33
+        Log: Croak if no known ways to semctl() (don't assume union semun).
+     Branch: cfgperl
+           ! doio.c perl.h
+____________________________________________________________________________
+[  3255] By: jhi                                   on 1999/04/13  09:10:26
+        Log: From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [Patch 5.005/5.006]Another MM_VMS.pm patch
+             Date: Mon, 12 Apr 1999 13:36:48 -0700
+             Message-Id: <3.0.6.32.19990412133648.030e7ec0@ous.edu>
+     Branch: cfgperl
+           ! lib/ExtUtils/MM_VMS.pm
+____________________________________________________________________________
+[  3254] By: jhi                                   on 1999/04/13  06:56:26
+        Log: From: "Todd C. Miller" 
+             To: perlbug@perl.com
+             Subject: Update for OpenBSD hints
+             Date: Mon, 12 Apr 1999 23:12:22 -0600 (MDT)
+             Message-Id: <199904130512.XAA27712@xerxes.courtesan.com>
+     Branch: cfgperl
+           ! hints/openbsd.sh
+____________________________________________________________________________
+[  3229] By: chip                                  on 1999/04/13  04:04:14
+        Log: Preserve errno from importunities of sfio.
+     Branch: maint-5.004/perl
+           ! pp_ctl.c util.c
+____________________________________________________________________________
+[  3226] By: jhi                                   on 1999/04/11  12:52:26
+        Log: If both ways to call semctl are broken,	skip the tests.
+     Branch: cfgperl
+           ! t/lib/ipc_sysv.t
+____________________________________________________________________________
+[  3225] By: jhi                                   on 1999/04/10  22:27:28
+        Log: From: Andy Dougherty 
+             To: dsembr01@ox.slug.louisville.edu
+             Cc: perlbug@perl.com
+             Subject: [PATCH 5.004_05 5.005_03 5.005_56] Re: Misspelled macro in ext/POSIX/POSIX.xs?
+             Date: Fri, 9 Apr 1999 16:58:08 -0400 (EDT)
+             Message-Id: 
+     Branch: cfgperl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  3224] By: jhi                                   on 1999/04/09  18:50:32
+        Log: From: Andy Dougherty 
+             To: Perl Porters 
+             Subject: [PATCH 5.005_56] Re: prefix= in hints
+             Date: Fri, 9 Apr 1999 14:54:18 -0400 (EDT)
+             Message-Id: 
+             
+             (Overrides change #3204 from Kurt)
+     Branch: cfgperl
+           ! hints/linux.sh
+____________________________________________________________________________
+[  3223] By: jhi                                   on 1999/04/09  18:37:55
+        Log: Understand Apollo's //node notation.
+             
+             From: Johann Klasek 
+             To: jhi@iki.fi
+             Subject: Re: DomainPerl
+             Date: Fri, 9 Apr 1999 18:21:37 +0200
+             Message-ID: <19990409182137.A2299@euklid.auto.tuwien.ac.at>
+     Branch: cfgperl
+           ! lib/Cwd.pm
+____________________________________________________________________________
+[  3220] By: jhi                                   on 1999/04/04  16:33:49
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> (integrate 39 files)
+____________________________________________________________________________
+[  3219] By: gsar                                  on 1999/04/04  02:48:17
+        Log: tweak previous change
+     Branch: maint-5.005/perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3218] By: gsar                                  on 1999/04/04  02:44:47
+        Log: be careful about extending the stack for the Win32:: builtins
+     Branch: maint-5.005/perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3217] By: gsar                                  on 1999/04/04  01:59:26
+        Log: correct places that said newSVpv() when they meant newSVpvn()
+     Branch: perl
+	   ! XSUB.h dump.c ext/B/B.xs ext/B/defsubs.h.PL
+	   ! ext/DB_File/DB_File.xs ext/DynaLoader/dl_vms.xs
+	   ! ext/IPC/SysV/SysV.xs ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs
+	   ! ext/Socket/Socket.xs ext/attrs/attrs.xs gv.c hv.c hv.h
+	   ! jpl/JNI/JNI.xs mg.c op.c perl.c pod/perlguts.pod pp.c pp_ctl.c
+	   ! pp_sys.c regcomp.c toke.c util.c win32/dl_win32.xs
+           ! win32/win32.c
+____________________________________________________________________________
+[  3216] By: gsar                                  on 1999/04/03  23:58:27
+        Log: avoid duplicate code
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  3215] By: gsar                                  on 1999/04/03  23:14:34
+        Log: grow PL_tmps_stack more efficiently; make it more amenable to
+             STRESS_REALLOC testing
+     Branch: perl
+	   ! embed.h embed.pl global.sym objXSUB.h pp.h proto.h scope.c
+           ! sv.c
+____________________________________________________________________________
+[  3214] By: gsar                                  on 1999/04/03  21:01:09
+        Log: scrounge and save three extra branches in pp_entersub()
+     Branch: perl
+           ! cv.h pp_ctl.c pp_hot.c
+____________________________________________________________________________
+[  3213] By: gsar                                  on 1999/04/03  17:43:23
+        Log: remove duplicate code and an extra branch in sv_setsv() and
+             other hot code by making SvTHINKFIRST() think about FAKE SVs
+     Branch: perl
+	   ! doio.c embed.h embed.pl global.sym objXSUB.h pp.c pp_hot.c
+           ! proto.h scope.c sv.c sv.h
+____________________________________________________________________________
+[  3212] By: jhi                                   on 1999/04/03  16:20:09
+        Log: Fix up some _t nits (Pid_t, Gid_t, Uid_t, etc. instead of int).
+             
+             From: John Bley 
+             To: perlbug@perl.org
+             Subject: [PATCH]5.005_03 (CORE) Fix some _t nits
+             Date: Thu, 1 Apr 1999 02:01:47 -0500 (EST)
+             Message-ID: 
+     Branch: cfgperl
+           ! doio.c pp_sys.c
+____________________________________________________________________________
+[  3211] By: jhi                                   on 1999/04/03  13:27:26
+        Log: Change #3210 was rather unportable.  This is better.
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
+[  3210] By: jhi                                   on 1999/04/03  13:16:20
+        Log: Avoid Digital UNIX' ksh.
+             
+             From: Jarkko Hietaniemi  
+             To: Henrik Tougaard  
+             Cc: perlbug@perl.com, ht000@foa.dk 
+             Subject: Re: Not OK perl5.005_03-MAINT_TRIAL_4
+             Date: Wed, 27 Jan 1999 16:52:33 +0200 (EET) 
+             Message-ID: <13999.10289.319422.239987@alpha.hut.fi> 
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
+[  3209] By: jhi                                   on 1999/04/03  12:49:04
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> Changes Makefile.SH README installperl t/lib/bigfloatpm.t
+____________________________________________________________________________
+[  3208] By: jhi                                   on 1999/04/03  12:27:24
+        Log: Add -mabi=64 to ccflags for 64-bit IRIX gcc.
+             
+             From: Lionel Cons 
+             To: jhi@iki.fi
+             Cc: perlbug@perl.com, kstar@isinet.com,
+             Philippe Defert 
+             Subject: Re: Not OK: perl 5.00503 on IP27-irix 6.5 (UNINSTALLED)
+             Date: Thu, 1 Apr 1999 14:05:28 +0200 (METDST)
+             Message-Id: <199904011205.OAA11380@mercury.cern.ch>
+     Branch: cfgperl
+           ! hints/irix_6.sh
+____________________________________________________________________________
+[  3207] By: jhi                                   on 1999/04/03  12:20:21
+        Log: Be polite about usemymalloc.
+     Branch: cfgperl
+           ! hints/aix.sh
+____________________________________________________________________________
+[  3206] By: gsar                                  on 1999/04/02  23:31:59
+        Log: a typo in change#3205
+     Branch: perl
+           ! t/lib/bigfloatpm.t
+____________________________________________________________________________
+[  3205] By: gsar                                  on 1999/04/02  23:20:31
+        Log: make testsuite reflect change#3157  (Math::BigFloat->new now
+             returns NaNs faithfully)
+     Branch: perl
+           ! t/lib/bigfloatpm.t
+____________________________________________________________________________
+[  3204] By: jhi                                   on 1999/04/02  22:03:23
+        Log: On -Uinstallusrbinperl and no -Dprefix, set prefix to /usr/local.
+             
+             From: "Kurt D. Starsinic" 
+             To: perl5-porters@perl.org
+             Subject: linux hints nit
+             Date: Fri, 2 Apr 1999 16:49:47 -0500
+             Message-ID: <19990402164947.E80926@O2.chapin.edu>
+     Branch: cfgperl
+           ! hints/linux.sh
+____________________________________________________________________________
+[  3203] By: jhi                                   on 1999/04/02  22:00:56
+        Log: Display exact glibc version in Linux. 
+             
+             From: Andy Dougherty 
+             To: Perl Porters 
+             Subject: Displaying glibc version on Linux
+             Date: Mon, 29 Mar 1999 15:04:26 -0500 (EST)
+             Message-Id: 
+     Branch: cfgperl
+           ! hints/linux.sh
+____________________________________________________________________________
+[  3202] By: gsar                                  on 1999/04/02  21:23:18
+        Log: various little goofs
+     Branch: perl
+           ! Changes Makefile.SH README installperl
+____________________________________________________________________________
+[  3201] By: jhi                                   on 1999/04/02  13:13:39
+        Log: Configure regen.
+             
+             Add llseek + offset_t probing.
+             Change CONFIG to CONFIGDOTSH.
+             'unset foo' is unportable, use foo=''.
+     Branch: cfgperl
+	   ! Configure Makefile.SH Policy_sh.SH cflags.SH config_h.SH
+	   ! configpm makeaperl.SH makedepend.SH makedir.SH myconfig.SH
+           ! perl_exp.SH writemain.SH
+____________________________________________________________________________
+[  3200] By: jhi                                   on 1999/04/02  12:06:22
+        Log: Introduce myconfig.SH.
+             
+             From: Andy Dougherty 
+             To: Jarkko Hietaniemi 
+             Cc: Nick Ing-Simmons , Perl Porters 
+             Subject: [PATCH] myconfig.SH (was Re: perl install bug on AIX 4.3.1.0)
+             Date: Tue, 30 Mar 1999 12:41:29 -0500 (EST)
+             Message-Id: 
+     Branch: cfgperl
+           + myconfig.SH
+           - myconfig
+           ! MANIFEST
+____________________________________________________________________________
 [  3195] By: jhi                                   on 1999/03/28  16:42:54
         Log: Update perlhist on 5_03.
      Branch: maint-5.005/perl
            ! pod/perlhist.pod
 ____________________________________________________________________________
-[  3193] By: gsar                                  on 1999/03/28  09:46:29
-        Log: =end needs matching =begin (or installhtml will croak)
-     Branch: maint-5.005/perl
-           ! pod/perlhist.pod
-____________________________________________________________________________
-[  3192] By: gsar                                  on 1999/03/28  09:10:15
-        Log: update pod/Makefile
-     Branch: maint-5.005/perl
-           ! pod/Makefile
-____________________________________________________________________________
-[  3191] By: gsar                                  on 1999/03/28  08:43:47
-        Log: integrate change#3180 from mainline
-             
-             fix bogus OPf_REF context for the BLOCK in C
-             (sometimes caused bizarreness in the BLOCK)
-     Branch: maint-5.005/perl
+[  3194] By: jhi                                   on 1999/03/28  12:30:01
+        Log: Integrate from mainperl.
+     Branch: cfgperl
           +> t/op/grep.t
-          !> MANIFEST op.c
-____________________________________________________________________________
-[  3190] By: gsar                                  on 1999/03/28  08:29:51
-        Log: integrate change#3147 from mainline
-             
-             warn about newfangled vfork() caveats
-     Branch: maint-5.005/perl
-           ! Configure
+	   ! lib/Math/BigFloat.pm lib/Math/BigInt.pm lib/bigfloat.pl
+           ! t/lib/bigintpm.t
+	  !> MANIFEST Porting/p4desc ext/Thread/Thread.xs op.c
+          !> t/lib/thread.t
 ____________________________________________________________________________
 [  3189] By: gsar                                  on 1999/03/28  08:22:00
         Log: various pod niggles
@@ -130,11 +18479,6 @@ ____________________________________________________________________________
 	   ! pod/perl.pod pod/perldebug.pod pod/perldiag.pod
            ! pod/perlfunc.pod pod/perlhist.pod
 ____________________________________________________________________________
-[  3188] By: gsar                                  on 1999/03/28  07:37:43
-        Log: integrate binary compatible variant of change#3098 from mainline
-     Branch: maint-5.005/perl
-           ! op.c perl.h t/base/lex.t toke.c
-____________________________________________________________________________
 [  3187] By: gsar                                  on 1999/03/28  07:31:16
         Log: regularize CAPI declarations (CAPI extensions now build under
              the Borland compiler)
@@ -147,38 +18491,22 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! XSlock.h win32/GenCAPI.pl win32/Makefile win32/makefile.mk
 ____________________________________________________________________________
-[  3185] By: gbarr                                 on 1999/03/28  06:37:41
-        Log: integrate change #2846 from mainline
-             
-             a modified version of suggested patch for pack template 'Z'; added docs
-             From: "Valeriy E. Ushakov" 
-             Date: Mon, 16 Jun 1997 03:00:31 +0400 (MSD)
-             Message-ID: <%lOHpzIuGV@snark.ptc.spbu.ru>
-             Subject: lack of pack/unpack letter with useful symmetry for C null delimited strings
-     Branch: maint-5.005/perl
-           ! pod/perldelta.pod pod/perlfunc.pod pp.c
-          !> t/op/pack.t
+[  3183] By: gsar                                  on 1999/03/28  06:00:46
+        Log: update p4 utility to ignore non-text files
+     Branch: perl
+           ! Porting/p4desc
 ____________________________________________________________________________
-[  3184] By: gbarr                                 on 1999/03/28  06:35:50
-        Log: integrate change # 3160 from mainline
-             
-             better description of OP_UNSTACK (s/unstack/iteration finalizer/)
-     Branch: maint-5.005/perl
-           ! opcode.h opcode.pl
+[  3181] By: gsar                                  on 1999/03/28  03:37:23
+        Log: integrate change#3179 from maint-5.005
+     Branch: perl
+          !> ext/Thread/Thread.xs t/lib/thread.t
 ____________________________________________________________________________
-[  3182] By: gbarr                                 on 1999/03/28  03:40:28
-        Log: Integrate changes #3067 and #3106 from mainline
-             
-             exempt $foo::a,$foo::b from warnings only if sort() was seen in package foo
-             From: Graham Barr 
-             Date: Wed, 3 Mar 1999 17:23:56 -0600
-             Message-ID: <19990303172356.F7442@dal.asp.ti.com>
-             Subject: Re: 'use strict' doesn't work for one-letter variables
-             
-             change#3067 failed package.t due to needless creation of $a and $b;
-             fixed to do that only for C, not C
-     Branch: maint-5.005/perl
-           ! gv.c op.c t/pragma/warn-1global
+[  3180] By: gsar                                  on 1999/03/28  02:28:20
+        Log: fix bogus OPf_REF context for the BLOCK in C
+             (sometimes caused bizarreness in the BLOCK)
+     Branch: perl
+           + t/op/grep.t
+           ! MANIFEST op.c
 ____________________________________________________________________________
 [  3179] By: gsar                                  on 1999/03/28  02:14:04
         Log: fix thread segfault when passing large number of arguments to child
@@ -196,57 +18524,285 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! pod/perlthrtut.pod
 ____________________________________________________________________________
-[  3177] By: gbarr                                 on 1999/03/28  01:09:59
-        Log: Integrate #2910 from mainline
-             
-             slurping an empty file should return '' rather than undef, with
-             commensurate effects on ARGV processing
-     Branch: maint-5.005/perl
-           ! pod/perldelta.pod pp_hot.c sv.h
-          !> t/io/argv.t
-____________________________________________________________________________
-[  3176] By: gbarr                                 on 1999/03/28  00:00:30
-        Log: Integrate relevant doc changes from mainline
-     Branch: maint-5.005/perl
-          !> (integrate 34 files)
-____________________________________________________________________________
-[  3175] By: gbarr                                 on 1999/03/27  19:20:32
-        Log: Integrated #2352 and #2397 from mainline
-             
-             Implement $^C to allow perl access to -c flag - I think this 
-             was agreed once...
-             
-             Update docs and English.pm for $^C
-     Branch: maint-5.005/perl
-           ! gv.c mg.c
-          !> lib/English.pm
-____________________________________________________________________________
-[  3174] By: gbarr                                 on 1999/03/27  18:21:01
-        Log: Update Copyright year
-     Branch: maint-5.005/perl
-	   ! EXTERN.h INTERN.h README av.c av.h cop.h cv.h deb.c doio.c
-	   ! doop.c dump.c form.h gv.c gv.h handy.h hv.c hv.h mg.c mg.h
-	   ! op.c op.h perl.h perly.y pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c
-	   ! regcomp.c regexec.c run.c scope.c sv.c sv.h toke.c util.c
-           ! util.h
-____________________________________________________________________________
 [  3173] By: gbarr                                 on 1999/03/27  18:19:47
         Log: Update Test.pm to VERSION 1.122 from CPAN
      Branch: maint-5.005/perl
            ! lib/Test.pm
 ____________________________________________________________________________
+[  3171] By: jhi                                   on 1999/03/26  22:38:28
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> (integrate 37 files)
+____________________________________________________________________________
+[  3170] By: gsar                                  on 1999/03/26  01:30:25
+        Log: specify type of bracket in "Unmatched bracket" diagnostic;
+             prefer 'brace' or 'curly bracket' over 'curly brace'
+     Branch: perl
+	   ! pod/perldiag.pod pod/perlreftut.pod pod/perlstyle.pod
+           ! t/op/misc.t t/op/re_tests toke.c
+____________________________________________________________________________
+[  3169] By: gsar                                  on 1999/03/26  00:50:51
+        Log: better description of "Integer overflow" diagnostic
+     Branch: perl
+           ! pod/perldiag.pod
+____________________________________________________________________________
+[  3168] By: gsar                                  on 1999/03/25  11:02:46
+        Log: applied needful parts of suggested patch
+             From: "Vishal Bhatia" 
+             Date: Tue, 23 Mar 1999 16:21:43 -0800
+             Message-ID: 
+             Subject: [PATCH 5.005_56] pp_formline correction
+     Branch: perl
+           ! ext/B/B/Bblock.pm ext/B/B/CC.pm
+____________________________________________________________________________
+[  3167] By: gsar                                  on 1999/03/25  10:39:02
+        Log: clarify what a "comment" means (due to Mark-Jason Dominus
+             )
+     Branch: perl
+           ! pod/perlsyn.pod
+____________________________________________________________________________
+[  3166] By: gsar                                  on 1999/03/25  10:33:18
+        Log: describe current behavior on local($foo{nothere}) (suggested by
+             Lionel Cons )
+     Branch: perl
+           ! pod/perlsub.pod
+____________________________________________________________________________
+[  3165] By: gsar                                  on 1999/03/25  06:21:05
+        Log: fix refcnt on PL_main_cv (variant of suggestion by Vishal Bhatia
+             )
+     Branch: perl
+           ! ext/B/B/C.pm
+____________________________________________________________________________
+[  3164] By: gsar                                  on 1999/03/25  06:17:27
+        Log: From: Stephen McCamant 
+             Date: Tue, 23 Mar 1999 17:47:04 -0800 (PST)
+             Message-ID: <14072.16859.154428.241373@fre-76-120.reshall.berkeley.edu>
+             Subject: [PATCH _56] Compiler needs to know about utf8 SVOP tr///s
+     Branch: perl
+           ! ext/B/B.xs op.h opcode.pl
+____________________________________________________________________________
+[  3163] By: gsar                                  on 1999/03/25  06:15:49
+        Log: B::Deparse update from Stephen McCamant 
+             Date: Tue, 23 Mar 1999 02:41:34 -0800 (PST)
+             Message-ID: <14071.27445.867782.852353@fre-76-120.reshall.berkeley.edu>
+             Subject: [PATCH _56] B::Deparse 0.57
+             --
+             Date: Tue, 23 Mar 1999 13:08:12 -0800 (PST)
+             Message-ID: <14072.502.107712.175179@fre-76-120.reshall.berkeley.edu>
+             Subject: Re: [PATCH _56] B::Deparse 0.57 
+     Branch: perl
+           ! AUTHORS MAINTAIN ext/B/B/Deparse.pm
+____________________________________________________________________________
+[  3162] By: gsar                                  on 1999/03/25  06:11:46
+        Log: fix a few places that said 'int', but meant 'STRLEN'
+     Branch: perl
+           ! pod/perlguts.pod proto.h sv.c
+____________________________________________________________________________
+[  3161] By: gsar                                  on 1999/03/25  06:01:18
+        Log: From: Russ Allbery 
+             Date: 22 Mar 1999 04:26:26 -0800
+             Message-ID: 
+             Subject: [5.005_56] Add EXISTS to SDBM_File and libsdbm
+     Branch: perl
+	   ! ext/SDBM_File/SDBM_File.xs ext/SDBM_File/sdbm/README.too
+	   ! ext/SDBM_File/sdbm/pair.c ext/SDBM_File/sdbm/pair.h
+	   ! ext/SDBM_File/sdbm/sdbm.3 ext/SDBM_File/sdbm/sdbm.c
+           ! ext/SDBM_File/sdbm/sdbm.h pod/perldelta.pod t/lib/sdbm.t
+____________________________________________________________________________
+[  3160] By: gsar                                  on 1999/03/25  02:26:31
+        Log: better description of OP_UNSTACK (s/unstack/iteration finalizer/)
+     Branch: perl
+           ! opcode.h opcode.pl
+____________________________________________________________________________
+[  3159] By: gsar                                  on 1999/03/25  02:18:17
+        Log: add statement-modifier loops to :base_loop class
+     Branch: perl
+           ! ext/Opcode/Opcode.pm
+____________________________________________________________________________
+[  3158] By: gsar                                  on 1999/03/25  00:36:57
+        Log: integrate changes#3105,3130,3154 from maint-5.005
+     Branch: perl
+          !> Configure INSTALL hints/dec_osf.sh hints/netbsd.sh
+____________________________________________________________________________
+[  3157] By: gsar                                  on 1999/03/25  00:24:17
+        Log: remove bogus panic()
+     Branch: perl
+           ! Changes lib/Math/BigFloat.pm
+____________________________________________________________________________
+[  3156] By: jhi                                   on 1999/03/24  22:43:43
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> (branch 38 files)
+          !> (integrate 68 files)
+____________________________________________________________________________
+[  3155] By: jhi                                   on 1999/03/24  22:12:17
+        Log: Configure regenerated because of changes #3130/#3154 and #3147.
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
 [  3154] By: jhi                                   on 1999/03/24  21:40:51
         Log: Reword the shared library search path (LD_LIBRARY_PATH) info
              based on suggestions from Andy Dougherty.
      Branch: maint-5.005/perl
            ! INSTALL
 ____________________________________________________________________________
+[  3153] By: gsar                                  on 1999/03/24  10:38:05
+        Log: applied suggested patch, modulo superceded parts
+             From: Charles Bailey 
+             Date: Thu, 18 Mar 1999 00:10:44 -0400 (EDT)
+             Message-id: <01J8YFGIHW2W001E7S@mail.newman.upenn.edu>
+             Subject: [PATCH 5.005_56] Miscellaneous VMS-specific fixes
+     Branch: perl
+	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm
+	   ! t/comp/require.t t/op/lex_assign.t t/op/taint.t
+	   ! utils/perldoc.PL vms/ext/Stdio/Stdio.pm vms/ext/Stdio/Stdio.xs
+           ! vms/ext/Stdio/test.pl vms/test.com vms/vmsish.h
+____________________________________________________________________________
+[  3152] By: gsar                                  on 1999/03/24  10:30:51
+        Log: applied suggested patch, modulo superceded parts
+             From: Charles Bailey 
+             Date: Thu, 18 Mar 1999 00:04:31 -0400 (EDT)
+             Message-id: <01J8YF0EOWLU001E7S@mail.newman.upenn.edu>
+             Subject: [PATCH 5.005_56] Miscellaneous small fixes
+     Branch: perl
+	   ! ext/B/defsubs.h.PL ext/re/re.pm lib/ExtUtils/MM_Unix.pm
+           ! lib/File/Basename.pm
+____________________________________________________________________________
+[  3151] By: gsar                                  on 1999/03/24  10:15:00
+        Log: doc tweak suggested by M.J.T. Guy 
+     Branch: perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[  3150] By: gsar                                  on 1999/03/24  10:09:13
+        Log: missing integration in previous change
+     Branch: perl
+          !> README.apollo
+____________________________________________________________________________
+[  3149] By: gsar                                  on 1999/03/24  10:06:44
+        Log: integrate changes#3116,3119 from maint-5.005
+     Branch: perl
+           + README.apollo
+          +> apollo/netinet/in.h
+          !> MANIFEST hints/apollo.sh t/lib/io_udp.t
+____________________________________________________________________________
+[  3148] By: gsar                                  on 1999/03/24  10:01:56
+        Log: integrate changes#3091-3094 from maint-5.005
+     Branch: perl
+	  !> README.hurd vms/subconfigure.com vos/config.h
+          !> vos/config_h.SH_orig
+____________________________________________________________________________
+[  3147] By: gsar                                  on 1999/03/24  09:31:49
+        Log: warn about newfangled vfork() caveats
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
 [  3146] By: jhi                                   on 1999/03/24  09:20:14
         Log: Bring in changes #2808 and #2812 (from mainline perl)
              that enhance the perlbug checklist.
      Branch: maint-5.005/perl
            ! utils/perlbug.PL
 ____________________________________________________________________________
+[  3145] By: gsar                                  on 1999/03/24  08:37:02
+        Log: integrate change#3115 from maint-5.005
+     Branch: perl
+	  !> ext/DB_File/Changes ext/DB_File/DB_File.pm
+          !> ext/DB_File/DB_File.xs ext/DB_File/typemap
+____________________________________________________________________________
+[  3144] By: gsar                                  on 1999/03/24  08:33:59
+        Log: add note about map in scalar context
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  3143] By: gsar                                  on 1999/03/24  08:25:59
+        Log: doc tweak
+     Branch: perl
+           ! lib/Time/Local.pm
+____________________________________________________________________________
+[  3142] By: gsar                                  on 1999/03/24  08:20:37
+        Log: applied suggested patch, modulo bogus hunk
+             From: "Vishal Bhatia" 
+             Date: Thu, 11 Mar 1999 07:40:27 PST
+             Message-ID: <19990311154027.25891.qmail@hotmail.com>
+             Subject: [PATCH 5.005_56] Minor fixes in perlcc
+     Branch: perl
+           ! ext/B/B/C.pm ext/B/B/CC.pm utils/perlcc.PL
+____________________________________________________________________________
+[  3141] By: gsar                                  on 1999/03/24  08:06:12
+        Log: integrate change#3104 from maint-5.005
+     Branch: perl
+          !> README.os390 t/lib/posix.t
+____________________________________________________________________________
+[  3140] By: gsar                                  on 1999/03/24  06:34:56
+        Log: fix failure of C<&locked_sub;> under -Dusethreads
+     Branch: perl
+           ! pp_hot.c t/lib/thread.t
+____________________________________________________________________________
+[  3139] By: gsar                                  on 1999/03/24  05:52:00
+        Log: debugger tweak (wasn't printing a newline after recalled commands)
+     Branch: perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[  3138] By: gsar                                  on 1999/03/24  05:33:28
+        Log: document OO exceptions (based on a suggestion by Andreas Koenig
+             )
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  3137] By: gsar                                  on 1999/03/24  02:50:20
+        Log: better "Illegal %s digit ignored" warnings
+     Branch: perl
+	   ! MANIFEST pod/perldiag.pod pod/perlfunc.pod t/pragma/warn/util
+           ! toke.c util.c
+____________________________________________________________________________
+[  3136] By: gsar                                  on 1999/03/24  02:26:38
+        Log: fix off-by-one that resulted in misparse of C
+     Branch: perl
+           + t/pragma/utf8.t
+           ! regcomp.c
+____________________________________________________________________________
+[  3135] By: gsar                                  on 1999/03/24  01:29:09
+        Log: flip release & version in win32_uname()
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3134] By: gsar                                  on 1999/03/24  01:08:33
+        Log: support POSIX::uname() via win32_uname()
+     Branch: perl
+	   ! XSUB.h iperlsys.h win32/GenCAPI.pl win32/config.bc
+	   ! win32/config.gc win32/config.vc win32/config_H.bc
+	   ! win32/config_H.gc win32/config_H.vc win32/makedef.pl
+           ! win32/perlhost.h win32/win32.c win32/win32.h win32/win32iop.h
+____________________________________________________________________________
+[  3133] By: gsar                                  on 1999/03/23  22:20:10
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sat, 06 Mar 1999 21:42:56 +0100
+             Message-ID: <36e49281.50337171@smtp1.ibm.net>
+             Subject: [PATCH 5.005_56] perldelta.pod changes for Win32::* functions
+     Branch: perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  3132] By: gsar                                  on 1999/03/23  22:17:45
+        Log: File::Spec fixes from Jan Dubois 
+             Date: Sat, 06 Mar 1999 17:50:49 +0100
+             Message-ID: <36e25209.33833760@smtp1.ibm.net>
+             Subject: [PATCH 5.005_56] Fixes for File::Spec::Functions.pm
+             --
+             Date: Sat, 06 Mar 1999 18:15:00 +0100
+             Message-ID: <36e36222.37954195@smtp1.ibm.net>
+             Subject: [PATCH 5.005_56] Fix for File::Spec::Win32.pm
+     Branch: perl
+           + t/lib/filefunc.t
+	   ! MANIFEST lib/File/Spec/Functions.pm lib/File/Spec/Win32.pm
+           ! pod/perldelta.pod pod/perlmodlib.pod
+____________________________________________________________________________
+[  3131] By: gsar                                  on 1999/03/23  22:07:59
+        Log: integrate cfgperl changes into mainline
+     Branch: perl
+          +> ext/DynaLoader/dl_rhapsody.xs hints/rhapsody.sh
+	  !> Configure Makefile.SH config_h.SH configure.gnu handy.h
+	  !> installperl malloc.c perl.c perl.h pod/perl.pod
+          !> pod/perldelta.pod pp_sys.c t/op/stat.t x2p/util.c
+____________________________________________________________________________
 [  3130] By: jhi                                   on 1999/03/23  22:02:23
         Log: Don't use config.msg to remind about the
              LD_LIBRARY_PATH because Makefile.SH takes
@@ -258,6 +18814,67 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! Configure hints/dec_osf.sh
 ____________________________________________________________________________
+[  3129] By: gsar                                  on 1999/03/23  21:38:03
+        Log: add Pod-Parser-1.08 (verbatim module =include tests elided owing
+             to size	and better maintainability)
+     Branch: perl
+	   + lib/Pod/Checker.pm lib/Pod/InputObjects.pm lib/Pod/Parser.pm
+	   + lib/Pod/PlainText.pm lib/Pod/Select.pm lib/Pod/Usage.pm
+	   + pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL
+	   + t/pod/emptycmd.t t/pod/emptycmd.xr t/pod/for.t t/pod/for.xr
+	   + t/pod/headings.t t/pod/headings.xr t/pod/include.t
+	   + t/pod/include.xr t/pod/included.t t/pod/included.xr
+	   + t/pod/lref.t t/pod/lref.xr t/pod/nested_items.t
+	   + t/pod/nested_items.xr t/pod/nested_seqs.t t/pod/nested_seqs.xr
+	   + t/pod/oneline_cmds.t t/pod/oneline_cmds.xr t/pod/poderrs.t
+	   + t/pod/poderrs.xr t/pod/special_seqs.t t/pod/special_seqs.xr
+           + t/pod/testcmp.pl t/pod/testp2pt.pl t/pod/testpchk.pl
+	   ! AUTHORS MAINTAIN MANIFEST installperl pod/Makefile
+           ! win32/Makefile win32/makefile.mk win32/pod.mak
+____________________________________________________________________________
+[  3128] By: jhi                                   on 1999/03/23  10:14:54
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> (integrate 46 files)
+____________________________________________________________________________
+[  3127] By: gsar                                  on 1999/03/23  06:57:30
+        Log: From: Tim Witham - FES 
+             Date: Thu, 4 Mar 1999 10:54:01 -0800
+             Message-Id: <9903041854.AA46868@frc0000>
+             Subject: patch for useless Math::BigInt warnings
+     Branch: perl
+           ! lib/Math/BigInt.pm
+____________________________________________________________________________
+[  3126] By: gsar                                  on 1999/03/23  05:54:37
+        Log: avoid literal 'undef' in $lddlflags under `Configure -Uoptimize`
+             From: "Kurt D. Starsinic" 
+             Date: Fri, 19 Feb 1999 15:47:59 -0500
+             Message-ID: <19990219154759.A32350@O2.chapin.edu>
+             Subject: [PATCH] OSF/1 hints
+     Branch: perl
+           ! hints/dec_osf.sh
+____________________________________________________________________________
+[  3125] By: gsar                                  on 1999/03/23  00:56:38
+        Log: avoid typeglob persistence in pp_readline()
+     Branch: perl
+           ! sv.c t/op/gv.t
+____________________________________________________________________________
+[  3124] By: gsar                                  on 1999/03/22  21:12:23
+        Log: update copyright years
+     Branch: perl
+	   ! Changes EXTERN.h INTERN.h av.c av.h bytecode.pl cop.h cv.h
+	   ! deb.c doio.c doop.c dump.c form.h gv.c gv.h handy.h hv.c hv.h
+	   ! malloc.c mg.c mg.h op.c op.h perl.c perl.h perlio.c pp.c pp.h
+	   ! pp_ctl.c pp_hot.c pp_sys.c regcomp.c regexec.c run.c scope.c
+           ! sv.c sv.h toke.c utf8.c utf8.h util.c
+____________________________________________________________________________
+[  3123] By: gsar                                  on 1999/03/22  07:07:06
+        Log: implement win32_spawnvp() internally, making it return true PIDs
+             for asynchronous spawns; fix win32_kill() to always deal with
+             PIDs
+     Branch: perl
+           ! win32/win32.c win32/win32.h
+____________________________________________________________________________
 [  3122] By: jhi                                   on 1999/03/19  21:12:14
         Log: Describe the new Benchmark feature in more detail.
      Branch: cfgperl
@@ -272,6 +18889,11 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! pod/perl.pod
 ____________________________________________________________________________
+[  3120] By: jhi                                   on 1999/03/17  14:52:17
+        Log: Rhapsody change assumed too much.
+     Branch: cfgperl
+           ! t/op/stat.t
+____________________________________________________________________________
 [  3119] By: jhi                                   on 1999/03/17  14:33:43
         Log: More Apollo fixes.
      Branch: maint-5.005/perl
@@ -328,6 +18950,12 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! pod/perldelta.pod
 ____________________________________________________________________________
+[  3112] By: jhi                                   on 1999/03/16  10:35:21
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+	  !> lib/unicode/MakeEthiopicSyllables.PL pod/perldelta.pod
+          !> pod/perlhist.pod pod/perlmodinstall.pod pod/perltodo.pod
+____________________________________________________________________________
 [  3111] By: jhi                                   on 1999/03/16  10:28:10
         Log: AVAILABILITY update: still mention PowerUX,
              Novell Netware now has sources available.
@@ -336,6 +18964,69 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! pod/perl.pod
 ____________________________________________________________________________
+[  3110] By: gsar                                  on 1999/03/16  04:34:23
+        Log: sundry pod niggles
+     Branch: perl
+	   ! lib/unicode/MakeEthiopicSyllables.PL pod/perldelta.pod
+           ! pod/perlhist.pod pod/perlmodinstall.pod pod/perltodo.pod
+____________________________________________________________________________
+[  3109] By: jhi                                   on 1999/03/15  17:00:11
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+	  +> lib/unicode/EthiopicSyllables.txt lib/unicode/In/Ethiopic.pl
+	  +> lib/unicode/Is/Syllable.pl
+	  +> lib/unicode/MakeEthiopicSyllables.PL
+          +> lib/unicode/README.Ethiopic
+	  !> AUTHORS MAINTAIN MANIFEST lib/unicode/Block.pl
+	  !> lib/unicode/Category.pl lib/unicode/Is/Alnum.pl
+	  !> lib/unicode/Is/Alpha.pl lib/unicode/Is/Digit.pl
+	  !> lib/unicode/Is/L.pl lib/unicode/Is/Lo.pl lib/unicode/Is/N.pl
+	  !> lib/unicode/Is/Nd.pl lib/unicode/Is/No.pl lib/unicode/Is/P.pl
+	  !> lib/unicode/Is/Po.pl lib/unicode/Is/Space.pl
+	  !> lib/unicode/Is/Z.pl lib/unicode/Is/Zs.pl lib/unicode/Makefile
+          !> lib/unicode/Name.pl lib/unicode/Number.pl op.c
+____________________________________________________________________________
+[  3108] By: jhi                                   on 1999/03/15  16:58:12
+        Log: First pass of integrating the Rhapsody port,
+             
+             From: Wilfredo Sanchez  
+             Subject: Keeping the world in sync.
+             Reply-To: wsanchez@apple.com 
+             To: perlbug@perl.com 
+             Date: Fri, 13 Nov 1998 17:11:30 -0800 
+             Message-Id: <199811140111.RAA41784@scv4.apple.com> 
+     Branch: cfgperl
+           + ext/DynaLoader/dl_rhapsody.xs hints/rhapsody.sh
+	   ! Configure Makefile.SH config_h.SH configure.gnu handy.h
+	   ! installperl malloc.c perl.c perl.h pp_sys.c t/op/stat.t
+           ! x2p/util.c
+____________________________________________________________________________
+[  3107] By: gsar                                  on 1999/03/15  03:22:10
+        Log: applied suggested patch (mailed to perl-unicode@perl.org) with minor tweaks
+             From: Daniel Yacob 
+             Date: Tue, 23 Feb 1999 16:13:42 -0500 (EST)
+             Message-Id: <199902232113.QAA26135@drum.cs.indiana.edu>
+             Subject: ../lib/unicode/ Unicode 3.0 Extensions for Ethiopic
+     Branch: perl
+	   + lib/unicode/EthiopicSyllables.txt lib/unicode/In/Ethiopic.pl
+	   + lib/unicode/Is/Syllable.pl
+	   + lib/unicode/MakeEthiopicSyllables.PL
+           + lib/unicode/README.Ethiopic
+	   ! AUTHORS MAINTAIN MANIFEST lib/unicode/Block.pl
+	   ! lib/unicode/Category.pl lib/unicode/Is/Alnum.pl
+	   ! lib/unicode/Is/Alpha.pl lib/unicode/Is/Digit.pl
+	   ! lib/unicode/Is/L.pl lib/unicode/Is/Lo.pl lib/unicode/Is/N.pl
+	   ! lib/unicode/Is/Nd.pl lib/unicode/Is/No.pl lib/unicode/Is/P.pl
+	   ! lib/unicode/Is/Po.pl lib/unicode/Is/Space.pl
+	   ! lib/unicode/Is/Z.pl lib/unicode/Is/Zs.pl lib/unicode/Makefile
+           ! lib/unicode/Name.pl lib/unicode/Number.pl
+____________________________________________________________________________
+[  3106] By: gsar                                  on 1999/03/12  20:35:36
+        Log: change#3067 failed package.t due to needless creation of $a and $b;
+             fixed to do that only for C, not C
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
 [  3105] By: jhi                                   on 1999/03/12  15:54:57
         Log: Recognize the NetBSD packages collection.
      Branch: maint-5.005/perl
@@ -350,6 +19041,13 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! README.os390 t/lib/posix.t
 ____________________________________________________________________________
+[  3103] By: jhi                                   on 1999/03/10  11:07:46
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+	  !> Changes embed.h embed.pl embedvar.h global.sym objXSUB.h op.c
+	  !> perl.c perl.h pod/perldelta.pod pod/pod2man.PL t/base/lex.t
+          !> t/pragma/warn/1global toke.c win32/makedef.pl
+____________________________________________________________________________
 [  3102] By: jhi                                   on 1999/03/10  11:01:20
         Log: From: pvhp@forte.com (Peter Prymmer)
              To: perl5-porters@perl.org
@@ -368,6 +19066,53 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! pod/perlfunc.pod
 ____________________________________________________________________________
+[  3100] By: gsar                                  on 1999/03/09  23:04:44
+        Log: change#3060 had the wrong quotes
+     Branch: perl
+           ! pod/pod2man.PL
+____________________________________________________________________________
+[  3099] By: jhi                                   on 1999/03/09  12:52:21
+        Log: d_uname was broken (probably since _53), reported by
+             
+             From: Alan Burlison 
+             To: p5p , Gurusamy Sarathy ,
+             cpan-testers@perl.org
+             Subject: Not OK: perl 5.00556 on sun4-solaris 2.6
+             Date: Mon, 08 Mar 1999 13:22:31 +0000
+             Message-ID: <36E3CF17.EA1FEDAA@uk.sun.com>
+             
+             and
+             
+             From: lvirden@cas.org (Larry W. Virden)
+             To: perlbug@perl.com
+             Subject: configure not correctly identifying uname posix compatibility
+             Date: Mon, 8 Mar 1999 06:36:16 -0500 (EST)
+             Message-Id: <199903081136.GAA23682@cas.org>
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
+[  3098] By: gsar                                  on 1999/03/09  03:16:07
+        Log: fix parsing of here documents in C
+     Branch: perl
+           ! op.c perl.h pod/perldelta.pod t/base/lex.t toke.c
+____________________________________________________________________________
+[  3097] By: gsar                                  on 1999/03/09  02:50:43
+        Log: use yyerror() instead of croak() so that compile-time failures in
+             my(LIST) don't confuse globals with lexicals
+     Branch: perl
+           ! op.c toke.c
+____________________________________________________________________________
+[  3096] By: gsar                                  on 1999/03/09  02:47:36
+        Log: adjust testsuite for change#3067
+     Branch: perl
+           ! t/pragma/warn/1global
+____________________________________________________________________________
+[  3095] By: gsar                                  on 1999/03/08  21:04:48
+        Log: remove bogus symbols from global.sym
+     Branch: perl
+	   ! Changes embed.h embed.pl embedvar.h global.sym objXSUB.h
+           ! perl.h win32/makedef.pl
+____________________________________________________________________________
 [  3094] By: jhi                                   on 1999/03/06  16:16:15
         Log: From: Mark Kettenis 
              To: jhi@iki.fi
@@ -412,202 +19157,151 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
           !> perl.c
 ____________________________________________________________________________
-[  3086] By: gbarr                                 on 1999/03/05  01:48:05
-        Log: #3085 was a bit premature, this is MT6 as 2 files were
-             missing from MANIFEST
-     Branch: maint-5.005/perl
-           ! MANIFEST
+[  3089] By: gsar                                  on 1999/03/06  04:30:40
+        Log: tolerate CRs after options
+     Branch: perl
+           ! perl.c
 ____________________________________________________________________________
-[  3085] By: gbarr                                 on 1999/03/05  01:41:06
-        Log: Trial release 6
-     Branch: maint-5.005/perl
-           ! Changes
+[  3088] By: jhi                                   on 1999/03/05  12:49:01
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> README.hurd
+          !> MANIFEST ext/Errno/Errno_pm.PL t/lib/io_sock.t
 ____________________________________________________________________________
-[  3084] By: gbarr                                 on 1999/03/05  01:34:07
-        Log: Don't process - as a file in Errno_pm.PL
-             
-             From: Jarkko Hietaniemi 
-             Date: Thu, 4 Mar 1999 13:29:23 +0200 (EET)
-             Message-ID: <14046.28307.561693.849859@alpha.hut.fi>
-             Subject: Re: maint-5.005
-     Branch: maint-5.005/perl
-           ! ext/Errno/Errno_pm.PL
+[  3087] By: gsar                                  on 1999/03/05  06:41:16
+        Log: adjust timeouts to accomodate slow/busy systems
+     Branch: perl
+           ! t/lib/io_sock.t
+____________________________________________________________________________
+[  3083] By: gsar                                  on 1999/03/05  01:32:47
+        Log: integrate change#3081 from maint-5.005
+     Branch: perl
+          !> ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  3082] By: gsar                                  on 1999/03/05  01:31:06
+        Log: integrate change#2904 from maint-5.005
+     Branch: perl
+          +> README.hurd
+          !> MANIFEST
 ____________________________________________________________________________
 [  3081] By: gsar                                  on 1999/03/05  00:14:33
         Log: protect against doubled backslashes
      Branch: maint-5.005/perl
            ! ext/Errno/Errno_pm.PL
 ____________________________________________________________________________
-[  3080] By: gsar                                  on 1999/03/04  23:37:20
-        Log: pick up AIX hints from mainline
-     Branch: maint-5.005/perl
-          !> hints/aix.sh
+[  3077] By: jhi                                   on 1999/03/04  08:10:13
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> ext/B/B/Stash.pm
+	  !> MANIFEST README.hpux cc_runtime.h config_h.SH ext/B/B/C.pm
+	  !> ext/B/B/CC.pm gv.c lib/File/Compare.pm lib/Test/Harness.pm
+	  !> op.c pod/perldelta.pod pod/perlfunc.pod pod/pod2man.PL
+          !> t/lib/bigfloatpm.t t/lib/io_sock.t utils/perlcc.PL
 ____________________________________________________________________________
-[  3079] By: gsar                                  on 1999/03/04  21:09:43
-        Log: tweak cast and crew
-     Branch: maint-5.005/perl
-           ! Changes
-____________________________________________________________________________
-[  3078] By: gsar                                  on 1999/03/04  21:03:04
-        Log: update patchlevel, Changes
-     Branch: maint-5.005/perl
-           ! Changes README.win32 patchlevel.h
-          !> pod/perlhist.pod
-____________________________________________________________________________
-[  3075] By: gsar                                  on 1999/03/04  07:36:53
-        Log: integrate changes#3037,3041 from mainline
+[  3076] By: jhi                                   on 1999/03/04  08:07:59
+        Log: Regen config_h.SH once more because of *size, 
+             noticed by
              
-             fix longstanding bug: searches for lexicals originating within eval''
-             weren't stopping at the subroutine boundary correctly
-             --
-             fix subtle bug in eval'' testsuite
-     Branch: maint-5.005/perl
-          !> op.c proto.h t/op/eval.t
+             From: Hans Mulder 
+             To: Jarkko Hietaniemi 
+             Cc: perl5-porters@perl.org
+             Subject: [PATCH for _56] LONGSIZE used before it is set in config.h
+             Date: Thu,  4 Mar 99 00:10:45 +0100
+             Message-Id: <9903032317.AA23021@icgned.icgroup.nl>
+     Branch: cfgperl
+           ! Configure config_h.SH
 ____________________________________________________________________________
-[  3074] By: gsar                                  on 1999/03/04  07:32:15
-        Log: integrate change#3048 from mainline
-             
-             updated HP-UX notes from Jeff Okamoto 
-     Branch: maint-5.005/perl
-          !> MANIFEST README.hpux
+[  3068] By: gsar                                  on 1999/03/04  05:48:03
+        Log: From: Hans Mulder 
+             Date: Thu,  4 Mar 99 00:10:45 +0100
+             Message-Id: <9903032317.AA23021@icgned.icgroup.nl>
+             Subject: [PATCH for _56] LONGSIZE used before it is set in config.h
+     Branch: perl
+           ! config_h.SH
 ____________________________________________________________________________
-[  3073] By: gsar                                  on 1999/03/04  07:29:43
-        Log: integrate changes#3014,3015,3021,3032,3034,3045 from mainline
-             
-             more "correct" utbuf for utime()
-             --
-             avoid modifying readonly values from qw()
-             --
-             ansify perlio.c, fix PerlIO-ish typos
-             --
-             add README.hpux
-             --
-             s/print STDERR/warn/ suggested by abigail@fnx.com; add $VERSION
-             --
-             destroy PL_svref_mutex in perl_destruct()
-     Branch: maint-5.005/perl
-          +> README.hpux
-	  !> MANIFEST doio.c ext/DynaLoader/dl_beos.xs
-	  !> ext/DynaLoader/dl_cygwin32.xs iperlsys.h
-          !> lib/ExtUtils/MM_Unix.pm lib/Getopt/Std.pm perl.c perlio.c
+[  3067] By: gsar                                  on 1999/03/04  05:44:32
+        Log: exempt $foo::a,$foo::b from warnings only if sort() was seen in package foo
+             From: Graham Barr 
+             Date: Wed, 3 Mar 1999 17:23:56 -0600
+             Message-ID: <19990303172356.F7442@dal.asp.ti.com>
+             Subject: Re: 'use strict' doesn't work for one-letter variables
+     Branch: perl
+           ! gv.c op.c
 ____________________________________________________________________________
-[  3072] By: gsar                                  on 1999/03/04  07:12:15
-        Log: integrate changes#2978,2979 from mainline
-             
-             bring '*' prototype closer to how it behaves internally
-             --
-             doc for change#2978
-     Branch: maint-5.005/perl
-          +> t/lib/fatal.t
-          !> MANIFEST lib/Fatal.pm op.c pod/perlsub.pod t/comp/proto.t
+[  3066] By: gsar                                  on 1999/03/04  05:20:50
+        Log: updates to compiler modules
+             From: "Vishal Bhatia" 
+             Date: Tue, 02 Mar 1999 23:27:25 PST
+             Message-ID: <19990303072725.779.qmail@hotmail.com>
+             Subject: PATCH 5.005_56 + Test procedure
+     Branch: perl
+           + ext/B/B/Stash.pm
+	   ! MANIFEST cc_runtime.h ext/B/B/C.pm ext/B/B/CC.pm
+           ! lib/Test/Harness.pm utils/perlcc.PL
 ____________________________________________________________________________
-[  3071] By: gsar                                  on 1999/03/04  07:05:50
-        Log: integrate changes#2919,2920,2921,2928,2932,2933 from mainline
-             
-             applied suggested patch, with several language/readability tweaks
-             From: Ilya Zakharevich 
-             Date: Fri, 29 Jan 1999 00:25:02 -0500
-             Message-ID: <19990129002502.C2898@monk.mps.ohio-state.edu>
-             Subject: Re: [PATCH 5.005_*] Better parsing docs
-             --
-             tweak READ() docs to mention $buffer must be altered by reference
-             --
-             use New() et al., rather than safemalloc() et al.
+[  3065] By: gsar                                  on 1999/03/04  05:03:30
+        Log: more s/s_/s!/ etc.
+     Branch: perl
+           ! pod/perldelta.pod pod/perlfunc.pod
+____________________________________________________________________________
+[  3064] By: gsar                                  on 1999/03/04  04:50:45
+        Log: integrate cfgperl contents into mainline
+     Branch: perl
+	  !> Configure README.vms bytecode.h config_h.SH configure.com
+	  !> ext/B/defsubs.h.PL hints/hpux.sh pod/perldelta.pod
+	  !> pod/perldiag.pod pp.c t/lib/ipc_sysv.t t/op/pack.t thread.h
+          !> vms/ext/vmsish.pm vms/subconfigure.com vms/vms.c vms/vmsish.h
+____________________________________________________________________________
+[  3063] By: gsar                                  on 1999/03/04  04:44:13
+        Log: HP-UX has yet another spelling for /NaNQ?/
+     Branch: perl
+           ! t/lib/bigfloatpm.t
+____________________________________________________________________________
+[  3062] By: gsar                                  on 1999/03/04  04:36:08
+        Log: error-check for accept() test
+     Branch: perl
+           ! t/lib/io_sock.t
+____________________________________________________________________________
+[  3061] By: gsar                                  on 1999/03/04  03:40:25
+        Log: allow custom comparison function in File::Compare::compare_text()
              From: jan.dubois@ibm.net (Jan Dubois)
-             Date: Fri, 29 Jan 1999 23:27:22 +0100
-             Message-ID: <36bd33f2.51029616@smtp1.ibm.net>
-             Subject: [PATCH _03-MT5] POSIX.xs memory API
-             --
-             allow the Carp routines to pass through exception objects
-             --
-             clarify what a "line" is
-             --
-             From: "J. van Krieken" 
-             Date: Thu, 4 Feb 1999 17:25:25 +0100 (MET)
-             Message-Id: <199902041625.RAA14489@atcmpg.ATComputing.nl>
-             Subject: s2p incorrectly handles hold space commands
-     Branch: maint-5.005/perl
-	  !> ext/POSIX/POSIX.xs lib/Carp.pm pod/perlfunc.pod pod/perlop.pod
-          !> pod/perltie.pod pod/perlvar.pod x2p/s2p.PL
+             Date: Fri, 26 Feb 1999 21:56:09 +0100
+             Message-ID: <36db0838.8805651@smtp1.ibm.net>
+             Subject: Re: PodParser 1.07 (was: RE: C vs stuff()) 
+     Branch: perl
+           ! lib/File/Compare.pm
 ____________________________________________________________________________
-[  3070] By: gsar                                  on 1999/03/04  06:43:57
-        Log: integrate changes#2748,2753,2754,2819,2824,2855,2866,2867,2869,2885,2888,2889
-             from mainline
-             
-             From: "Jonathan I. Kamens" 
-             Date: Thu, 3 Dec 1998 15:10:17 -0500
-             Message-Id: <199812032010.PAA09692@jik.shore.net>
-             Subject: sample checksum code in "perlfunc" man page is wrong
-             --
-             Todo tweaks
-             --
-             Todo updates from Andy Dougherty 
-             --
-             avoid garbage in db->dirbuf
-             From: Masahiro KAJIURA 
-             Date: Sat, 05 Dec 1998 14:14:54 +0900
-             Message-Id: <199812050514.OAA23268@toshiba.co.jp>
-             Subject: SDBM bug
-             --
-             tweak doc on bitwise ops
-             --
-             applied suggested patch; added tests
-             From: Adam Krolnik 
-             Date: Sat, 12 Dec 98 15:30:18 -0600
-             Message-Id: <9812122130.AA03717@gypsy.eng.cyrix.com>
-             Subject: Range operation doesn't handle IV_MAX
-             --
-             display full pathname of unreadable files
-             --
-             av_extend() doc tweak from Jan Dubois
-             --
-             update win32/pod.mak
-             --
-             note how to find REG_INFTY limit
-             --
-             add note about test-notty target
-             --
-             tweak PERL_STRICT_CR notes
-     Branch: maint-5.005/perl
-	  !> Porting/pumpkin.pod README.win32 Todo Todo-5.005
-	  !> ext/SDBM_File/sdbm/sdbm.c pod/perldelta.pod pod/perlfunc.pod
-	  !> pod/perlguts.pod pod/perlop.pod pod/perlre.pod pp_ctl.c
-          !> t/op/range.t utils/perldoc.PL win32/pod.mak
+[  3060] By: gsar                                  on 1999/03/04  03:37:38
+        Log: better version of change#3038
+             From: abigail@fnx.com
+             Date: Mon, 1 Mar 1999 14:11:36 -0500 (EST)
+             Message-ID: <19990301191136.5557.qmail@alexandra.wayne.fnx.com>
+             Subject: Re: [PATCH 5.005_03 TRIAL-5 pod/pod2man.PL] Recognize -> and => inside
+     Branch: perl
+           ! pod/pod2man.PL
 ____________________________________________________________________________
-[  3069] By: gsar                                  on 1999/03/04  06:02:29
-        Log: integrate change#2747 from mainline
-             
-             typos in Pod/Text.pm
-     Branch: maint-5.005/perl
-          !> lib/Pod/Text.pm
+[  3058] By: jhi                                   on 1999/03/03  22:30:40
+        Log: Configure regen to
+             (1) match maint-5.005 patches #3056 and #3057
+             (2) better version of PHOSTNAME of #3050
+             (3) the crosscompile/multiarch config_h.SH trouble solved for now
+     Branch: cfgperl
+           ! Configure config_h.SH
 ____________________________________________________________________________
-[  3059] By: jhi                                   on 1999/03/03  22:46:43
-        Log: Document HP-UX 11 Y2K patch effect, based on
-             
-             From: "Richard L. England" 
-             To: perlbug@perl.com
-             CC: "England, Richard" 
-             Subject: test io/fs.t number 18 fails on HPUX 11.0 when Y2K patch installed.
-             Date: Fri, 26 Feb 1999 15:35:49 -0800
-             Message-ID: <36D72FD4.4136C84F@mentorg.com>
-     Branch: maint-5.005/perl
-           ! INSTALL
+[  3054] By: jhi                                   on 1999/03/03  09:57:59
+        Log: Change #3053 missed perldelta.
+     Branch: cfgperl
+           ! pod/perldelta.pod
 ____________________________________________________________________________
-[  3057] By: jhi                                   on 1999/03/03  21:42:22
-        Log: The *symbols patch (for Kurt's h2ph fixes) haunted us in AIX.
-     Branch: maint-5.005/perl
-           ! Configure
+[  3053] By: jhi                                   on 1999/03/03  08:29:43
+        Log: Use '!' to mark native integer packings instead of '_'.
+     Branch: cfgperl
+           ! pod/perldiag.pod pp.c t/lib/ipc_sysv.t t/op/pack.t
 ____________________________________________________________________________
-[  3056] By: jhi                                   on 1999/03/03  21:21:46
-        Log: Fixed the pthreads_created_joinable test messed up
-             by the Mach cthreads change.
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  3055] By: jhi                                   on 1999/03/03  18:17:55
-        Log: Configure and make gotchas.
-     Branch: maint-5.005/perl
-           ! INSTALL
+[  3052] By: jhi                                   on 1999/03/02  23:12:36
+        Log: The HP-UX threads patch (change #3028) is needed also here.
+     Branch: cfgperl
+           ! hints/hpux.sh thread.h
 ____________________________________________________________________________
 [  3051] By: jhi                                   on 1999/03/02  08:24:52
         Log: From: Dan Sugalski 
@@ -620,6 +19314,25 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! README.vms
 ____________________________________________________________________________
+[  3050] By: jhi                                   on 1999/03/02  08:22:29
+        Log: From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [PATCH5.005_56]Diffs to get 5.005_56 building on VMS
+             Date: Mon, 01 Mar 1999 16:06:29 -0800
+             Message-Id: <3.0.6.32.19990301160629.02e09ec0@ous.edu>
+             
+             From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [PATCH 5.005_56]vmsish.pm patch
+             Date: Mon, 01 Mar 1999 20:19:04 -0800
+             Message-Id: <3.0.6.32.19990301201904.02cff460@ous.edu>
+             
+             plus Configure regen containing a "solution" to the
+             crosscompile/multiarch problem.
+     Branch: cfgperl
+	   ! Configure config_h.SH configure.com ext/B/defsubs.h.PL
+           ! vms/ext/vmsish.pm vms/subconfigure.com vms/vms.c vms/vmsish.h
+____________________________________________________________________________
 [  3049] By: jhi                                   on 1999/03/02  07:34:21
         Log: From: Spider Boardman 
              To: perl5-porters@perl.org
@@ -631,6 +19344,140 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! bytecode.h
 ____________________________________________________________________________
+[  3048] By: gsar                                  on 1999/03/02  06:41:21
+        Log: updated HP-UX notes from Jeff Okamoto 
+     Branch: perl
+           ! MANIFEST README.hpux
+____________________________________________________________________________
+[  3047] By: jhi                                   on 1999/03/01  06:34:43
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> README.hpux lib/File/Spec/Functions.pm
+          !> (integrate 28 files)
+____________________________________________________________________________
+[  3046] By: gsar                                  on 1999/03/01  05:34:28
+        Log: this is 5.005_56
+     Branch: perl
+           ! Changes
+
+----------------
+Version 5.005_56
+----------------
+
+____________________________________________________________________________
+[  3045] By: gsar                                  on 1999/03/01  03:32:30
+        Log: destroy PL_svref_mutex in perl_destruct()
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[  3044] By: gsar                                  on 1999/03/01  00:38:50
+        Log: up patchlevel &c.
+     Branch: perl
+	   ! Changes patchlevel.h pod/perlhist.pod win32/Makefile
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  3043] By: gsar                                  on 1999/03/01  00:14:15
+        Log: integrate cfgperl contents into mainline
+     Branch: perl
+           ! pod/perldelta.pod
+          !> Configure config_h.SH
+____________________________________________________________________________
+[  3042] By: gsar                                  on 1999/02/28  23:55:08
+        Log: slightly edited version of suggested patch
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Mon, 01 Mar 1999 00:32:05 +0100
+             Message-ID: <36dbcf2c.12325433@smtp1.ibm.net>
+             Subject: Re: [PATCH 5.005_55] Cleanup of File::Spec module
+     Branch: perl
+           + lib/File/Spec/Functions.pm
+           ! MANIFEST lib/File/Spec.pm
+____________________________________________________________________________
+[  3041] By: gsar                                  on 1999/02/28  22:47:19
+        Log: fix subtle bug in eval'' testsuite
+     Branch: perl
+           ! t/op/eval.t
+____________________________________________________________________________
+[  3040] By: gsar                                  on 1999/02/28  22:46:24
+        Log: avoid literal control characters in change#3039
+     Branch: perl
+           ! t/base/lex.t
+____________________________________________________________________________
+[  3039] By: gsar                                  on 1999/02/28  21:47:18
+        Log: todo item: permit extended control variables a la ${^Foo} (patch
+             courtesy Mark-Jason Dominus )
+     Branch: perl
+	   ! op.c pod/perldelta.pod pod/perltodo.pod pod/perlvar.pod
+           ! t/base/lex.t toke.c
+____________________________________________________________________________
+[  3038] By: gsar                                  on 1999/02/28  21:21:05
+        Log: From: abigail@fnx.com
+             Date: Sun, 28 Feb 1999 10:59:16 -0500 (EST)
+             Message-ID: <19990228155916.14496.qmail@alexandra.wayne.fnx.com>
+             Subject: Recognize -> and => inside [A-Z]<> sequences.
+     Branch: perl
+           ! pod/pod2man.PL
+____________________________________________________________________________
+[  3037] By: gsar                                  on 1999/02/28  21:12:22
+        Log: fix longstanding bug: searches for lexicals originating within eval''
+             weren't stopping at the subroutine boundary correctly
+     Branch: perl
+           ! op.c proto.h t/op/eval.t
+____________________________________________________________________________
+[  3036] By: gsar                                  on 1999/02/28  20:02:29
+        Log: revert parts of change#2990 to preserve predictable usage of Win32::Foo()
+             as stacked list values
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sat, 27 Feb 1999 18:24:17 +0100
+             Message-ID: <36e22849.36531259@smtp1.ibm.net>
+             Subject: Re: resend [PATCH 5.005_55] Various win32/win32.c cleanup 
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  3035] By: gsar                                  on 1999/02/28  19:48:54
+        Log: remove superfluous stack_sp decl
+     Branch: perl
+           ! jpl/JNI/JNI.xs
+____________________________________________________________________________
+[  3034] By: gsar                                  on 1999/02/28  19:34:58
+        Log: s/print STDERR/warn/ suggested by abigail@fnx.com; add $VERSION
+     Branch: perl
+           ! lib/Getopt/Std.pm
+____________________________________________________________________________
+[  3033] By: gsar                                  on 1999/02/28  19:23:41
+        Log: add File::Compare::compare_text()
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Fri, 26 Feb 1999 00:20:41 +0100
+             Message-ID: <36dcd8ab.20195659@smtp1.ibm.net>
+             Subject: Re: PodParser 1.07 (was: RE: C vs stuff()) 
+     Branch: perl
+           ! lib/File/Compare.pm pod/perltodo.pod
+____________________________________________________________________________
+[  3032] By: gsar                                  on 1999/02/28  19:01:33
+        Log: add README.hpux
+     Branch: perl
+           + README.hpux
+           ! MAINTAIN MANIFEST
+____________________________________________________________________________
+[  3031] By: gsar                                  on 1999/02/28  18:49:08
+        Log: avoid escaping & et al multiple times (variant of fix suggested by
+             James Cromie 
+     Branch: perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  3030] By: gsar                                  on 1999/02/28  18:35:09
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Wed, 24 Feb 1999 22:34:56 +0100
+             Message-ID: <36d86f1e.11495549@smtp1.ibm.net>
+             Subject: [PATCH 5.005_55] Test::Harness setting $ENV{HARNESS_ACTIVE}
+     Branch: perl
+           ! lib/Test/Harness.pm
+____________________________________________________________________________
+[  3029] By: gsar                                  on 1999/02/28  18:28:18
+        Log: add note about env pollution
+     Branch: perl
+           ! INSTALL pod/perltodo.pod
+____________________________________________________________________________
 [  3028] By: jhi                                   on 1999/02/26  14:40:00
         Log: HP-UX 11 threads.
              
@@ -656,23 +19503,90 @@ ____________________________________________________________________________
              
              You don't have to *use* either gdbm or pthreads in the executable,
              just linking them together is enough.  Workaround is to recompile
-             the GDBM under HP-UX 11, that makes the problem to go away.
+             the GDBM under HP-UX 11, that makes the problem go away.
      Branch: maint-5.005/perl
            ! hints/hpux.sh thread.h
 ____________________________________________________________________________
-[  3027] By: jhi                                   on 1999/02/26  09:04:29
-        Log: From: abigail@fnx.com
-             To: perl5-porters@perl.org (Perl Porters)
-             Subject: [PATCH 5.005_02 Getopt::Std] warn() instead of print STDERR.
-             Date: Thu, 25 Feb 1999 22:08:41 -0500 (EST)
-             Message-ID: <19990226030841.5985.qmail@alexandra.wayne.fnx.com>
-     Branch: maint-5.005/perl
-           ! lib/Getopt/Std.pm
+[  3025] By: jhi                                   on 1999/02/25  20:41:07
+        Log: Temporary workaround for the config_h.SH versus
+             crosscompile and multiarch plus introduce 'rt'
+             to $libswanted: in UNIX98 sched_yield() lives there.
+     Branch: cfgperl
+           ! Configure config_h.SH
 ____________________________________________________________________________
-[  3026] By: jhi                                   on 1999/02/26  08:18:26
-        Log: full_ar wasn't propagated.
-     Branch: maint-5.005/perl
-           ! Configure
+[  3024] By: jhi                                   on 1999/02/24  12:54:59
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> t/lib/fatal.t
+          !> (integrate 44 files)
+____________________________________________________________________________
+[  3023] By: gsar                                  on 1999/02/24  07:02:12
+        Log: integrate cfgperl contents
+     Branch: perl
+          !> (integrate 30 files)
+____________________________________________________________________________
+[  3022] By: gsar                                  on 1999/02/24  05:59:47
+        Log: From: Daniel Grisinger 
+             Date: 23 Feb 1999 17:53:22 -0700
+             Message-ID: 
+             Subject: [PATCH: _55] perldoc -q broken
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  3021] By: gsar                                  on 1999/02/24  05:51:53
+        Log: ansify perlio.c, fix PerlIO-ish typos
+     Branch: perl
+	   ! ext/DynaLoader/dl_beos.xs ext/DynaLoader/dl_cygwin32.xs
+           ! iperlsys.h perlio.c
+____________________________________________________________________________
+[  3020] By: gsar                                  on 1999/02/24  05:28:06
+        Log: adjust a Perl_malloc() flag for NeXT
+             From: Hans Mulder 
+             Date: Tue, 23 Feb 99 00:26:25 +0100
+             Message-Id: <9902222329.AA17516@icgned.icgroup.nl>
+             Subject: [PATCH for _55] MUTEX_INIT_CALLS_MALLOC no longer necessary
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[  3019] By: gsar                                  on 1999/02/24  05:19:42
+        Log: perltodo adjustments from Joshua Pritikin 
+     Branch: perl
+           ! pod/perltodo.pod
+____________________________________________________________________________
+[  3018] By: gsar                                  on 1999/02/24  04:15:18
+        Log: From: Joshua Pritikin 
+             Date: Mon, 22 Feb 1999 11:29:09 -0500 (EST)
+             Message-ID: 
+             Subject: improved error message [PATCH _55] [RESEND]
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  3017] By: gsar                                  on 1999/02/24  03:50:34
+        Log: From: Tom Christiansen 
+             Date: Sun, 21 Feb 1999 20:02:18 -0700
+             Message-Id: <199902220302.UAA09981@jhereg.perl.com>
+             Subject: perlfunc updates (against 55)
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  3016] By: gsar                                  on 1999/02/24  03:17:05
+        Log: testsuite adjustments
+             From: "M.J.T. Guy" 
+             Date: Sat, 20 Feb 1999 15:24:57 +0000
+             Message-Id: 
+             Subject: Not quite OK: perl5.005_55 on SunOS 4.1.3 / gcc
+     Branch: perl
+           ! t/lib/io_sock.t t/op/lex_assign.t
+____________________________________________________________________________
+[  3015] By: gsar                                  on 1999/02/24  02:54:47
+        Log: avoid modifying readonly values from qw()
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  3014] By: gsar                                  on 1999/02/24  02:49:04
+        Log: more "correct" utbuf for utime()
+     Branch: perl
+           ! doio.c
 ____________________________________________________________________________
 [  3013] By: jhi                                   on 1999/02/22  19:27:44
         Log: Fix MacPerl version, change PowerUX to PowerMAX.
@@ -695,17 +19609,55 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! pod/perl.pod
 ____________________________________________________________________________
-[  3010] By: jhi                                   on 1999/02/22  10:21:55
+[  3012] By: jhi                                   on 1999/02/22  10:26:11
+        Log: Snapshot the cross-compilation/multiarchitecture stuff
+             (currently broken in next)
+     Branch: cfgperl
+           ! Configure config_h.SH pp.c
+____________________________________________________________________________
+[  3011] By: jhi                                   on 1999/02/22  10:24:51
         Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-             To: gbarr@pobox.com (Graham Barr)
-             Cc: perl5-porters@perl.org
-             Subject: [PATCH 5.005_03-MT5] DB_File 1.64 patch
-             Date: Mon, 22 Feb 1999 10:12:34 +0000 (GMT)
-             Message-Id: <9902221012.AA17784@claudius.bfsec.bt.co.uk>
-     Branch: maint-5.005/perl
+             To: gsar@activestate.com (Gurusamy Sarathy)
+             Cc: perl5-porters@perl.org (Perl5 Porters)
+             Subject: [PATCH 5.005_55] DB_File 1.64 patch
+             Date: Mon, 22 Feb 1999 10:07:00 +0000 (GMT)
+             Message-Id: <9902221007.AA17751@claudius.bfsec.bt.co.uk>
+     Branch: cfgperl
 	   ! ext/DB_File/Changes ext/DB_File/DB_File.pm
            ! ext/DB_File/DB_File.xs ext/DB_File/typemap t/lib/db-recno.t
 ____________________________________________________________________________
+[  3009] By: jhi                                   on 1999/02/22  09:14:26
+        Log: Scratch #3008 and introduce $crosscompile and $multiarch
+             also in non-Configure lands.
+     Branch: cfgperl
+	   ! Configure config_h.SH hints/next_3.sh hints/next_3_0.sh
+	   ! hints/next_4.sh vms/subconfigure.com win32/config.bc
+	   ! win32/config.gc win32/config.vc win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc
+____________________________________________________________________________
+[  3008] By: jhi                                   on 1999/02/22  08:58:04
+        Log: Add -DMULTIARCH (see change #3006).
+     Branch: cfgperl
+           ! hints/next_3.sh hints/next_3_0.sh hints/next_4.sh
+____________________________________________________________________________
+[  3007] By: jhi                                   on 1999/02/22  08:54:06
+        Log: Undo the references to local{lib,arch} introduced by #3006.
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
+[  3006] By: jhi                                   on 1999/02/22  08:43:50
+        Log: From: hansm@icgned.icgroup.nl
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00555 on OPENSTEP-Mach-thread 4_2 (UNINSTALLED)
+             Date: Sun, 21 Feb 1999 22:58:55 +0100
+             Reply-To: hansmu@xs4all.nl
+             Message-Id: <9902212201.AA13386@icgned.icgroup.nl>
+             
+             plus other Configure changes: prepare for cross-compilation/
+             multiarchitecture builds.
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
 [  3005] By: jhi                                   on 1999/02/22  08:35:30
         Log: Configure/Perl knew how to look for use Mach cthreads
              but Configure didn't let them to be used ($osname 'next').
@@ -732,42 +19684,97 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! pod/perlref.pod
 ____________________________________________________________________________
-[  3000] By: jhi                                   on 1999/02/21  14:15:31
-        Log: pack s/l for negative numbers was broken on platforms
-             where sizeof(short) != 2 or sizeof(long) != 4 (Alpha, Cray).
-             pack v was broken for sizeof(short) == 8 big-endian platforms
-             (Cray), only zeros were produced.
-     Branch: maint-5.005/perl
-           ! perl.h pod/perlfunc.pod pp.c t/op/pack.t
+[  3002] By: jhi                                   on 1999/02/21  14:35:22
+        Log: Sync cfgperl with maint-5.005 change #3000.
+     Branch: cfgperl
+           ! pod/perlfunc.pod t/op/pack.t
 ____________________________________________________________________________
-[  2997] By: jhi                                   on 1999/02/20  14:00:26
-        Log: Glossary update.
-     Branch: maint-5.005/perl
-           ! Porting/Glossary
+[  2999] By: gsar                                  on 1999/02/20  22:48:30
+        Log: From:    John Bley 
+             Date:    Sat, 20 Feb 1999 16:02:34 EST
+             Message-Id: 
+             Subject: [PATCH]5.005_55 (CORE) Sparse intializer in regcomp.c
+     Branch: perl
+           ! regcomp.c
 ____________________________________________________________________________
-[  2995] By: jhi                                   on 1999/02/20  12:25:10
-        Log: Document #2893, Mach cthreads support.
-     Branch: maint-5.005/perl
+[  2998] By: jhi                                   on 1999/02/20  14:13:06
+        Log: Enhanced the endianness description.
+     Branch: cfgperl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2996] By: jhi                                   on 1999/02/20  13:55:41
+        Log: Glossary now mostly fixed.
+     Branch: cfgperl
+	   ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+           ! config_h.SH
+____________________________________________________________________________
+[  2994] By: jhi                                   on 1999/02/20  11:58:33
+        Log: Perldeltify GNU/Hurd.
+     Branch: cfgperl
            ! pod/perldelta.pod
 ____________________________________________________________________________
-[  2986] By: jhi                                   on 1999/02/19  23:26:34
-        Log: Remove the unnecessary osf1 -D__LANGUAGE_C__.
-     Branch: maint-5.005/perl
-           ! Configure
+[  2993] By: gsar                                  on 1999/02/20  00:59:10
+        Log: fix typo in Perl_sbrk()
+             From: hansm@icgned.icgroup.nl
+             Date: Fri, 19 Feb 1999 23:19:31 +0100
+             Message-Id: <9902192221.AA07213@icgned.icgroup.nl>
+             Subject: Not OK: perl 5.00555 on OPENSTEP-Mach 4_2 (UNINSTALLED)
+     Branch: perl
+           ! malloc.c
 ____________________________________________________________________________
-[  2983] By: jhi                                   on 1999/02/19  20:35:51
-        Log: Mach cthreads:
-             From: brie@corp.home.net (Brian Harrison) 
-             Subject: perl5.005_02 patch for mthreads
-             To: perl5-porters@perl.org 
-             Date: Fri, 23 Oct 1998 14:20:57 -0700 (PDT) 
-             Message-ID:  
-     Branch: maint-5.005/perl
-	   ! Configure Porting/Glossary config_h.SH malloc.c perl.h
-           ! thread.h
+[  2992] By: gsar                                  on 1999/02/20  00:51:08
+        Log: integrate change#2980 from maint-5.005
+     Branch: perl
+          !> utils/h2xs.PL
 ____________________________________________________________________________
-[  2981] By: jhi                                   on 1999/02/19  19:49:03
-        Log: From: "Kurt D. Starsinic" 
+[  2991] By: gsar                                  on 1999/02/20  00:34:01
+        Log: From: Hugo van der Sanden 
+             Date: Thu, 18 Feb 1999 18:51:38 +0000
+             Message-Id: <199902181851.SAA14018@crypt.compulink.co.uk>
+             Subject: [PATCH 5.005_55] test failures with MIME-tools-4.122 and perl 5.005_55 
+     Branch: perl
+           ! pp_hot.c t/op/pat.t
+____________________________________________________________________________
+[  2990] By: gsar                                  on 1999/02/20  00:30:48
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Thu, 18 Feb 1999 19:14:07 +0100
+             Message-ID: <36d15809.40853323@smtp1.ibm.net>
+             Subject: resend [PATCH 5.005_55] Various win32/win32.c cleanup
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  2989] By: gsar                                  on 1999/02/20  00:27:01
+        Log: do poll() emulation unless HAS_POLL && I_POLL
+     Branch: perl
+           ! ext/IO/poll.h
+____________________________________________________________________________
+[  2988] By: gsar                                  on 1999/02/19  23:52:12
+        Log: tweak RE for NaNQ? recognition
+     Branch: perl
+           ! t/lib/bigfloatpm.t
+____________________________________________________________________________
+[  2987] By: gsar                                  on 1999/02/19  23:29:59
+        Log: mention C and C in perldelta
+     Branch: perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2985] By: jhi                                   on 1999/02/19  20:43:19
+        Log: pack/unpack better in (network-)short-non-16-bits and
+             (network-)long-non-32-bits systems such as Cray C90.
+     Branch: cfgperl
+           ! perl.h pp.c t/op/pack.t
+____________________________________________________________________________
+[  2984] By: jhi                                   on 1999/02/19  20:38:54
+        Log: Regen Configure.
+     Branch: cfgperl
+	   ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+           ! perl.c
+____________________________________________________________________________
+[  2982] By: jhi                                   on 1999/02/19  19:51:49
+        Log: Configure update: fstatvfs/fstafs/getmntent/hasmntopt were
+             not probed for and 	
+             
+             From: "Kurt D. Starsinic" 
              To: Chaim Frenkel ,
              Russ Allbery ,
              Jarkko Hietaniemi ,
@@ -777,97 +19784,646 @@ ____________________________________________________________________________
              Subject: [PATCH] Re: Solaris 7 for Intel
              Message-ID: <19990219124404.A30182@O2.chapin.edu>
              
-             and Glossary update.
-     Branch: maint-5.005/perl
-           ! Configure Makefile.SH Porting/Glossary
+             Glossary is still missing some terms because
+             mkglossary is misbehaving (change #2981 updated
+             Glossary manually)
+     Branch: cfgperl
+	   ! Configure Makefile.SH Porting/Glossary Porting/config.sh
+           ! Porting/config_H
 ____________________________________________________________________________
 [  2980] By: gbarr                                 on 1999/02/19  16:06:53
         Log: Make result of h2xs work when user adds C
      Branch: maint-5.005/perl
            ! utils/h2xs.PL
 ____________________________________________________________________________
-[  2976] By: gsar                                  on 1999/02/18  21:54:09
-        Log: integrate change#2975 from mainline
-             
-             distinguish eval'' from BEGIN|INIT|END CVs (fixes buggy propagation
-             of lexical searches in BEGIN|INIT|END)
-     Branch: maint-5.005/perl
-	  !> cop.h cv.h op.c perly.c perly.y pp_ctl.c t/op/misc.t
-          !> vms/perly_c.vms
+[  2979] By: gsar                                  on 1999/02/19  05:24:29
+        Log: doc for change#2978
+     Branch: perl
+           ! pod/perlsub.pod
 ____________________________________________________________________________
-[  2971] By: jhi                                   on 1999/02/18  11:14:24
-        Log: AIX syscalls.exp scan missed explicitly 32/64-bit syscalls.
+[  2978] By: gsar                                  on 1999/02/19  05:08:29
+        Log: bring '*' prototype closer to how it behaves internally
+     Branch: perl
+           + t/lib/fatal.t
+           ! MANIFEST lib/Fatal.pm op.c t/comp/proto.t
+____________________________________________________________________________
+[  2977] By: gsar                                  on 1999/02/19  02:50:31
+        Log: stem leakage of perly.h #defines #ifndef PERL_CORE
+     Branch: perl
+           ! perly.h
+____________________________________________________________________________
+[  2975] By: gsar                                  on 1999/02/18  21:41:57
+        Log: distinguish eval'' from BEGIN|INIT|END CVs (fixes buggy propagation
+             of lexical searches in BEGIN|INIT|END)
+     Branch: perl
+	   ! cop.h cv.h op.c perly.c perly.y pp_ctl.c t/op/misc.t
+           ! vms/perly_c.vms
+____________________________________________________________________________
+[  2974] By: gsar                                  on 1999/02/18  21:03:06
+        Log: missing PERL_POLLUTE_MALLOC
+     Branch: perl
+           ! ext/SDBM_File/sdbm/sdbm.h
+____________________________________________________________________________
+[  2973] By: gsar                                  on 1999/02/18  17:10:49
+        Log: From:    Andy Dougherty 
+             Date:    Wed, 17 Feb 1999 17:22:50 EST
+             Message-Id: 
+             Subject: [PATCH 5.005_xx] dotsh.pl triggers new warnings
+     Branch: perl
+           ! lib/dotsh.pl
+____________________________________________________________________________
+[  2972] By: gsar                                  on 1999/02/18  17:04:12
+        Log: s/#defined/#define/
+     Branch: perl
+           ! ext/Data/Dumper/Dumper.xs
+____________________________________________________________________________
+[  2970] By: gsar                                  on 1999/02/18  03:26:43
+        Log: ensure is data malloc()ed by GDBM is free()d (not Perl_mfree()d)
+     Branch: perl
+	   ! ext/GDBM_File/GDBM_File.pm ext/GDBM_File/GDBM_File.xs
+           ! ext/GDBM_File/typemap
+____________________________________________________________________________
+[  2969] By: gsar                                  on 1999/02/17  23:30:47
+        Log: correct slurp mode doc
+     Branch: perl
+           ! pod/perlfunc.pod pod/perlop.pod
+____________________________________________________________________________
+[  2968] By: jhi                                   on 1999/02/17  23:15:49
+        Log: Ultrix hints update.
+             
+             From: Spider Boardman 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00555 on RISC-ultrix 4.4 (UNINSTALLED)
+             Date: Tue, 16 Feb 1999 23:04:28 -0500
+             Message-Id: <9902170404.AA11036@abyss.zk3.dec.com>
+     Branch: cfgperl
+           ! hints/ultrix_4.sh
+____________________________________________________________________________
+[  2966] By: jhi                                   on 1999/02/17  23:09:21
+        Log: Change #2965 wiped out some Sarathy's _55 changes.
+             Now unwiped.
+     Branch: cfgperl
+           ! Configure pp.c t/op/pack.t
+____________________________________________________________________________
+[  2965] By: jhi                                   on 1999/02/17  23:00:04
+        Log: Configure tweaks.
+             
+             Fix the Unixware/SCO uname scan:
+             
+             From: Tom Hughes 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00555 on i386-svr4 [actually Unixware 2.1] (UNINSTALLED)
+             Date: 17 Feb 1999 15:34:15 +0000    
+             Message-ID: 
+             
+             AIX syscalls.exp scan: the syscall might be marked 32, 3264, or 64
              
              From: Joe Buehler 
              To: perl5-porters@perl.org
              Subject: setsid not detected by perl 5.005_02 configure under AIX 4.3
              Date: 12 Feb 1999 11:25:21 -0500
              Message-ID: 
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  2967] By: jhi                                   on 1999/02/17  23:12:59
-        Log: Make SCO/Unixware scan to work in Unixware, too.
              
-             From: Tom Hughes 
-             To: perlbug@perl.com
-             Subject: Not OK: perl 5.00555 on i386-svr4 [actually Unixware 2.1] (UNINSTALLED)
-             Date: 17 Feb 1999 15:34:15 +0000     
-             Message-ID: 
-     Branch: maint-5.005/perl
+             Make the pthreads joinable constant scan to output to fd 4, not 2.
+     Branch: cfgperl
            ! Configure
 ____________________________________________________________________________
-[  2956] By: jhi                                   on 1999/02/15  21:03:28
-        Log: OpenBSD sparc SHMLBA (like change #2945).
-     Branch: maint-5.005/perl
+[  2964] By: gsar                                  on 1999/02/17  21:30:07
+        Log: From: Tom Christiansen 
+             Date: Wed, 17 Feb 1999 06:53:13 -0700
+             Message-Id: <199902171353.GAA15682@jhereg.perl.com>
+             Subject: PATCH: lib/Pod/Functions.pm for perl5.005_55
+     Branch: perl
+           ! lib/Pod/Functions.pm
+____________________________________________________________________________
+[  2963] By: gsar                                  on 1999/02/17  21:18:21
+        Log: fix comppad handling for failures in eval 'qr/(?p{...})/'
+             From: Hugo van der Sanden 
+             Date: Wed, 17 Feb 1999 10:06:01 +0000
+             Message-Id: <199902171006.KAA10204@crypt.compulink.co.uk>
+             Subject: Re: [5.005_53] panic: pad_free curpad 
+     Branch: perl
+           ! regcomp.c regexec.c t/op/misc.t
+____________________________________________________________________________
+[  2962] By: gsar                                  on 1999/02/16  21:26:28
+        Log: NaNQ? tweak
+     Branch: perl
+           ! t/lib/bigfloatpm.t
+____________________________________________________________________________
+[  2961] By: jhi                                   on 1999/02/16  19:26:38
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> (integrate 37 files)
+____________________________________________________________________________
+[  2960] By: gsar                                  on 1999/02/16  18:04:29
+        Log: undo change#2465 (qw[] is a real list now)
+     Branch: perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[  2959] By: gsar                                  on 1999/02/16  07:09:33
+        Log: this was 5.005_55
+     Branch: perl
+           ! Changes
+
+----------------
+Version 5.005_55
+----------------
+
+____________________________________________________________________________
+[  2958] By: gsar                                  on 1999/02/16  06:18:27
+        Log: integrate change#2852 from maint-5.005; integrate cfgperl contents;
+             elide dups and non-dependents from Changes
+     Branch: perl
+           ! Changes pod/perlhist.pod
+	  !> Configure INSTALL README.threads doio.c ext/IPC/SysV/SysV.xs
+	  !> hints/ultrix_4.sh pod/perl.pod pod/perlfunc.pod
+          !> pod/perlport.pod pp.c t/op/pack.t
+____________________________________________________________________________
+[  2957] By: gsar                                  on 1999/02/16  04:09:47
+        Log: propagate PERL_VERSION everywhere, add to pod
+     Branch: perl
+	   ! Configure configpm configure.com ext/B/B/C.pm ext/B/byteperl.c
+	   ! ext/DB_File/DB_File.xs ext/Data/Dumper/Dumper.xs ext/IO/IO.xs
+	   ! hints/freebsd.sh hints/os2.sh installman installperl myconfig
+	   ! os2/Makefile.SHs os2/os2.c patchlevel.h perl.c perl.h
+	   ! plan9/genconfig.pl plan9/myconfig.plan9 plan9/versnum
+	   ! pod/perldebug.pod pod/perldelta.pod vms/genconfig.pl
+	   ! vms/myconfig.com vms/subconfigure.com win32/config.bc
+	   ! win32/config.gc win32/config.vc win32/config_sh.PL
+           ! win32/win32.c x2p/a2py.c
+____________________________________________________________________________
+[  2955] By: jhi                                   on 1999/02/15  16:15:03
+        Log: The pack tests now better in C90 (after the packnative patches).
+     Branch: cfgperl
+           ! t/op/pack.t
+____________________________________________________________________________
+[  2954] By: gsar                                  on 1999/02/15  14:11:50
+        Log: tweak Configure to follow new PERL_VERSION etc.
+     Branch: perl
+           ! Configure patchlevel.h pod/perlhist.pod
+____________________________________________________________________________
+[  2953] By: jhi                                   on 1999/02/15  14:02:21
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> MANIFEST Porting/makerel
+____________________________________________________________________________
+[  2952] By: jhi                                   on 1999/02/15  13:50:07
+        Log: Enhance the packnative patch: use the packnative code
+             only if required.  Also added hefty testing (hopefully
+             I didn't assume too much...).  Tested on alpha, ix86, sparc.
+     Branch: cfgperl
+           ! pod/perlfunc.pod pp.c t/op/pack.t
+____________________________________________________________________________
+[  2951] By: jhi                                   on 1999/02/15  13:46:56
+        Log: AVAILABILITY from 5.005_03-tobe, will of course
+             require updating when 5.006 comes out.
+     Branch: cfgperl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2949] By: gsar                                  on 1999/02/15  13:28:51
+        Log: will this be it for 5.005_55?
+     Branch: perl
+           ! MANIFEST Porting/makerel
+____________________________________________________________________________
+[  2948] By: jhi                                   on 1999/02/15  13:23:52
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+	  !> Changes Makefile.SH ext/B/B/C.pm patchlevel.h perl.h
+	  !> pod/perldiag.pod pod/perlembed.pod pod/perlfaq3.pod
+	  !> pod/perlfaq4.pod pod/perlfaq9.pod pod/perlmodinstall.pod
+	  !> pod/perlmodlib.pod pod/perltoc.pod t/io/argv.t
+	  !> t/lib/bigfloatpm.t t/lib/h2ph.t 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
+____________________________________________________________________________
+[  2947] By: jhi                                   on 1999/02/15  13:20:41
+        Log: perlport.pod 1.39 from Chris.
+     Branch: cfgperl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  2946] By: jhi                                   on 1999/02/15  13:09:58
+        Log: Import Ultrix update, change #2864, 
+             
+             From: Spider Boardman 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_5 on RISC-ultrix 4.4 (UNINSTALLED)
+             Date: Wed, 10 Feb 1999 23:33:31 -0500
+             Message-Id: <9902110433.AA12816@abyss.zk3.dec.com>
+     Branch: cfgperl
+           ! doio.c ext/IPC/SysV/SysV.xs hints/ultrix_4.sh
+____________________________________________________________________________
+[  2945] By: jhi                                   on 1999/02/15  13:04:50
+        Log: OpenBSD sparc SHMLBA.
+     Branch: cfgperl
            ! ext/IPC/SysV/SysV.xs
 ____________________________________________________________________________
-[  2950] By: jhi                                   on 1999/02/15  13:37:28
-        Log: AVAILABILITY sync.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2944] By: gsar                                  on 1999/02/15  12:09:52
+        Log: update win32/config* stuff, Changes
+     Branch: perl
+	   ! Changes 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
 ____________________________________________________________________________
-[  2906] By: jhi                                   on 1999/02/13  14:55:47
-        Log: AVAILABILITY sync.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2943] By: gsar                                  on 1999/02/15  11:54:08
+        Log: #include patchlevel.h by default, provide
+             PERL_{REVISION,VERSION,SUBVERSION}
+     Branch: perl
+           ! patchlevel.h perl.h
 ____________________________________________________________________________
-[  2905] By: gsar                                  on 1999/02/13  00:12:53
-        Log: integrate change#2898 from mainline
-             
-             support win32_putenv()
-     Branch: maint-5.005/perl
-	  !> mg.c util.c win32/GenCAPI.pl win32/makedef.pl win32/perlhost.h
-          !> win32/win32.c win32/win32iop.h
+[  2942] By: gsar                                  on 1999/02/15  10:26:59
+        Log: allow /0|NaN/ on some bigfloatpm.t tests for portability; other
+             misc fixes
+     Branch: perl
+           ! Makefile.SH t/io/argv.t t/lib/bigfloatpm.t t/lib/h2ph.t
 ____________________________________________________________________________
-[  2904] By: jhi                                   on 1999/02/12  21:23:30
-        Log: Add README.hurd, from Mark Kettenis .
-     Branch: maint-5.005/perl
-           + README.hurd
-           ! MANIFEST
+[  2941] By: gsar                                  on 1999/02/15  10:24:37
+        Log: broken URLs fixed (from Michael G Schwern )
+             Message-ID: <19990207002851.B9185@toldyouso.com>
+             Message-ID: <19990207212152.A9765@toldyouso.com>
+             Message-ID: <19990207212041.A9622@toldyouso.com>
+             Message-ID: <19990207213127.A10244@toldyouso.com>
+             Message-ID: <19990207212559.A9950@toldyouso.com>
+             Message-ID: <19990207212842.A9994@toldyouso.com>
+             Message-ID: <19990207212500.A9860@toldyouso.com>
+             Message-ID: <19990207213013.A10105@toldyouso.com>
+     Branch: perl
+	   ! pod/perldiag.pod pod/perlembed.pod pod/perlfaq3.pod
+	   ! pod/perlfaq4.pod pod/perlfaq9.pod pod/perlmodinstall.pod
+           ! pod/perlmodlib.pod pod/perltoc.pod
 ____________________________________________________________________________
-[  2900] By: jhi                                   on 1999/02/12  12:07:28
-        Log: SCO ODT/OSR release scanning.
-     Branch: maint-5.005/perl
-           ! Configure
+[  2940] By: gsar                                  on 1999/02/15  10:07:08
+        Log: enable dynaloading in C.pm-compiled programs (non-conflicting part
+             of suggested patch)
+             From: "Vishal Bhatia" 
+             Date: Mon, 08 Feb 1999 01:14:41 -0000
+             Message-ID: 
+             Subject: [PATCH 5.005_54] some pending C.pm stuff 
+     Branch: perl
+           ! ext/B/B/C.pm
 ____________________________________________________________________________
-[  2897] By: jhi                                   on 1999/02/12  11:24:25
-        Log: Undo a big bad paste from change #2884.
-     Branch: maint-5.005/perl
-           ! hints/openbsd.sh
+[  2939] By: jhi                                   on 1999/02/15  08:40:18
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> t/lib/bigfloat.t t/lib/bigfloatpm.t
+           - lib/File/PathConvert.pm
+          !> (integrate 81 files)
 ____________________________________________________________________________
-[  2896] By: jhi                                   on 1999/02/12  11:19:52
-        Log: Update the error message of db-recno.t to DB version 1.86
-             and the URL to www.sleepycat.com instead of www.bostic.com.
-     Branch: maint-5.005/perl
-           ! t/lib/db-recno.t
+[  2938] By: gsar                                  on 1999/02/15  06:56:39
+        Log: change#2839 was bogus, redo
+     Branch: perl
+          !> t/lib/h2ph.pht
 ____________________________________________________________________________
-[  2895] By: gsar                                  on 1999/02/12  11:18:59
-        Log: integrate change#2854 from mainline
-             
-             compatibility fix: magic non-propagation in foreach implicit localization
-     Branch: maint-5.005/perl
-          !> pp_ctl.c t/op/local.t
+[  2937] By: gsar                                  on 1999/02/15  06:38:15
+        Log: support Win32::GetFullPathName() and Win32::SetLastError()
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Tue, 09 Feb 1999 22:27:31 +0100
+             Message-ID: <36c1a2ed.8007554@smtp1.ibm.net>
+             Subject: [PATCH _54] Win32::GetFullPathName (Re: File::Spec::Win32 and UNCs)
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  2936] By: gsar                                  on 1999/02/15  06:26:39
+        Log: support native integers, pack("L_",...) etc. (via private mail)
+             From: Jarkko Hietaniemi 
+             Date: Wed, 10 Feb 1999 00:04:52 +0200 (EET)
+             Message-Id: <199902092204.AAA29065@alpha.hut.fi>
+             Subject: the "packnative" patch
+     Branch: perl
+	   ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod pp.c
+           ! t/lib/ipc_sysv.t t/op/pack.t
+____________________________________________________________________________
+[  2935] By: gsar                                  on 1999/02/15  06:04:02
+        Log: From: Michael G Schwern 
+             Date: Tue, 9 Feb 1999 04:13:12 -0500
+             Message-ID: <19990209041312.A15788@toldyouso.com>
+             Subject: [PATCH]5.005_03-MAINT_TRIAL_5 utils/h2xs fixing -A & more
+     Branch: perl
+           ! utils/h2xs.PL
+____________________________________________________________________________
+[  2934] By: gsar                                  on 1999/02/15  05:30:13
+        Log: fix bugs in the handling of negative numbers, among other things
+             From: Steven Knight 
+             Date: Mon, 8 Feb 1999 01:16:24 -0600
+             Message-Id: <199902080716.BAA24652@theopera.baldmt.citilink.com>
+             Subject: Math::BigFloat and Math::BigInt
+     Branch: perl
+           + t/lib/bigfloat.t t/lib/bigfloatpm.t
+	   ! lib/Math/BigFloat.pm lib/Math/BigInt.pm lib/bigfloat.pl
+           ! t/lib/bigintpm.t
+____________________________________________________________________________
+[  2933] By: gsar                                  on 1999/02/15  04:57:52
+        Log: From: "J. van Krieken" 
+             Date: Thu, 4 Feb 1999 17:25:25 +0100 (MET)
+             Message-Id: <199902041625.RAA14489@atcmpg.ATComputing.nl>
+             Subject: s2p incorrectly handles hold space commands
+     Branch: perl
+           ! x2p/s2p.PL
+____________________________________________________________________________
+[  2932] By: gsar                                  on 1999/02/15  04:45:55
+        Log: clarify what a "line" is
+     Branch: perl
+           ! pod/perlfunc.pod pod/perlvar.pod
+____________________________________________________________________________
+[  2931] By: gsar                                  on 1999/02/15  04:23:29
+        Log: backout change#2811 and add newer version based on File::Spec
+             From: Barrie Slaymaker 
+             Date: Thu, 11 Feb 1999 16:29:24 -0500
+             Message-ID: <36C34BB4.A62090E0@telerama.com>
+             Subject: [PATCH]5.005_54 (pod2html) Relative URLs using new File::Spec
+     Branch: perl
+           - lib/File/PathConvert.pm
+           ! MANIFEST installhtml lib/Pod/Html.pm
+____________________________________________________________________________
+[  2930] By: gsar                                  on 1999/02/15  04:16:25
+        Log: From: Barrie Slaymaker 
+             Date: Thu, 11 Feb 1999 19:39:48 -0500
+             Message-ID: <36C37854.707D139@telerama.com>
+             Subject: [PATCH] 5.005_54 #2 Merging File::PathConvert in to File::Spec
+     Branch: perl
+           ! lib/File/Spec/Unix.pm lib/File/Spec/Win32.pm
+____________________________________________________________________________
+[  2929] By: gsar                                  on 1999/02/15  04:06:50
+        Log: patches suggested by John Bley  (with minor edits)
+             Date: Wed, 3 Feb 1999 05:24:55 -0500 (EST)
+             Message-ID: 
+             Subject: [PATCH]5.005_54 (DOC) fix many typos
+             --
+             Date: Wed, 3 Feb 1999 08:53:53 -0500 (EST)
+             Message-ID: 
+             Subject: [PATCH]5.005_54 (DOC) typos
+     Branch: perl
+	   ! pod/perl5004delta.pod pod/perl5005delta.pod pod/perlcall.pod
+	   ! pod/perldebug.pod pod/perlfaq1.pod pod/perlfaq2.pod
+	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
+	   ! pod/perlfaq9.pod pod/perlfunc.pod pod/perlguts.pod
+	   ! pod/perllol.pod pod/perlmod.pod pod/perlref.pod
+	   ! pod/perlrun.pod pod/perlsub.pod pod/perltoc.pod
+           ! pod/perlvar.pod pod/perlxs.pod
+____________________________________________________________________________
+[  2928] By: gsar                                  on 1999/02/15  03:39:53
+        Log: allow the Carp routines to pass through exception objects
+     Branch: perl
+           ! lib/Carp.pm
+____________________________________________________________________________
+[  2927] By: gsar                                  on 1999/02/15  03:22:57
+        Log: mention Proc::Daemon (suggested by Michael G Schwern )
+     Branch: perl
+           ! pod/perlfaq8.pod
+____________________________________________________________________________
+[  2926] By: gsar                                  on 1999/02/15  03:19:39
+        Log: integrate h2ph.PL fixes from change#2809 (change#2838 was supposed to
+             have done that, but didn't)
+     Branch: perl
+          !> utils/h2ph.PL
+____________________________________________________________________________
+[  2925] By: gsar                                  on 1999/02/15  03:17:01
+        Log: integrate cfgperl changes into mainline
+     Branch: perl
+           ! Changes
+	  !> Configure Porting/Glossary Porting/config.sh Porting/config_H
+	  !> config_h.SH hints/openbsd.sh hints/ultrix_4.sh
+	  !> pod/perlport.pod t/lib/h2ph.pht utils/h2ph.PL
+          !> vms/subconfigure.com
+____________________________________________________________________________
+[  2924] By: gsar                                  on 1999/02/15  03:07:08
+        Log: add const qualifier to most char* prototypes, handle ripple effect
+     Branch: perl
+	   ! gv.c hv.c hv.h mg.c op.c perl.c pod/perlguts.pod proto.h sv.c
+           ! universal.c util.c
+____________________________________________________________________________
+[  2923] By: gsar                                  on 1999/02/15  01:04:30
+        Log: From: Hugo van der Sanden 
+             Date: Thu, 04 Feb 1999 02:37:31 +0000
+             Message-Id: <199902040237.CAA03255@crypt.compulink.co.uk>
+             Subject: [PATCH 5.005_54] Re: .. misinterpreted as flipflop 
+     Branch: perl
+           ! pp_ctl.c t/op/range.t
+____________________________________________________________________________
+[  2922] By: gsar                                  on 1999/02/15  00:24:34
+        Log: From: Hugo van der Sanden 
+             Date: Sun, 31 Jan 1999 01:50:06 +0000
+             Message-Id: <199901310150.BAA16299@crypt.compulink.co.uk>
+             Subject: [PATCH 5.005_03t4] regexp flags bug
+     Branch: perl
+           ! regcomp.c t/op/re_tests
+____________________________________________________________________________
+[  2921] By: gsar                                  on 1999/02/15  00:13:02
+        Log: use New() et al., rather than safemalloc() et al.
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Fri, 29 Jan 1999 23:27:22 +0100
+             Message-ID: <36bd33f2.51029616@smtp1.ibm.net>
+             Subject: [PATCH _03-MT5] POSIX.xs memory API
+     Branch: perl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2920] By: gsar                                  on 1999/02/15  00:05:33
+        Log: tweak READ() docs to mention $buffer must be altered by reference
+     Branch: perl
+           ! pod/perltie.pod
+____________________________________________________________________________
+[  2919] By: gsar                                  on 1999/02/14  23:50:39
+        Log: applied suggested patch, with several language/readability tweaks
+             From: Ilya Zakharevich 
+             Date: Fri, 29 Jan 1999 00:25:02 -0500
+             Message-ID: <19990129002502.C2898@monk.mps.ohio-state.edu>
+             Subject: Re: [PATCH 5.005_*] Better parsing docs
+     Branch: perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[  2918] By: gsar                                  on 1999/02/14  23:20:42
+        Log: several bug fixes; now croak()s when date exceeds integer limits (instead
+             of silently returning bogus values)
+             From: Peter Chines 
+             Date: Wed, 27 Jan 1999 16:11:31 -0500
+             Message-Id: <199901272117.QAA21458@kronos.nhgri.nih.gov>
+             Subject: Time::Local
+     Branch: perl
+           ! lib/Time/Local.pm pod/perldelta.pod
+____________________________________________________________________________
+[  2917] By: gsar                                  on 1999/02/14  11:21:43
+        Log: From: Ilya Zakharevich 
+             Date: Thu, 28 Jan 1999 10:02:20 -0500
+             Message-ID: <19990128100220.A1321@monk.mps.ohio-state.edu>
+             Subject: Re: [PATCH 5.005_53] Better perldoc
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  2916] By: gsar                                  on 1999/02/14  10:59:38
+        Log: back out change#2751, apply updated version 
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sat, 06 Feb 1999 01:06:29 +0100
+             Message-ID: <36bc844c.18763049@smtp1.ibm.net>
+             Subject: [PATCH] Cleanup of File::Spec module
+     Branch: perl
+	   ! lib/File/Spec.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
+____________________________________________________________________________
+[  2915] By: gsar                                  on 1999/02/14  10:48:01
+        Log: tweak select() test
+     Branch: perl
+           ! pod/perlipc.pod t/op/fh.t
+____________________________________________________________________________
+[  2914] By: gsar                                  on 1999/02/14  10:25:55
+        Log: allow C to autovivify *foo (SelectSaver expects that)
+     Branch: perl
+           ! op.c pod/perldiag.pod pp_sys.c t/op/misc.t
+____________________________________________________________________________
+[  2913] By: gsar                                  on 1999/02/14  10:03:51
+        Log: From: Kenneth Albanowski 
+             Date: Sat, 23 Jan 1999 21:52:15 -0500 (EST)
+             Message-ID: 
+             Subject: Re: SvOPV() or SvPV_nolen() or ...
+     Branch: perl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[  2912] By: gsar                                  on 1999/02/14  09:57:29
+        Log: provide SvPV_nolen(sv) to avoid use of PL_na
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sun, 24 Jan 1999 02:45:32 +0100
+             Message-ID: <36bb7ada.68485547@smtp1.ibm.net>
+             Subject: [PATCH 5.005_54]  _54 version of SvPV_nolen patch
+     Branch: perl
+	   ! embed.h global.sym objXSUB.h pod/perlguts.pod proto.h sv.c
+           ! sv.h
+____________________________________________________________________________
+[  2911] By: gsar                                  on 1999/02/14  06:51:05
+        Log: elide stray effluvium
+     Branch: perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2910] By: gsar                                  on 1999/02/14  05:51:56
+        Log: slurping an empty file should return '' rather than undef, with
+             commensurate effects on ARGV processing
+     Branch: perl
+	   ! pod/perldelta.pod pod/perlfunc.pod pod/perlop.pod
+           ! pod/perlvar.pod pp_hot.c sv.h t/io/argv.t
+____________________________________________________________________________
+[  2909] By: gsar                                  on 1999/02/14  00:02:11
+        Log: perly_c.diff typo
+     Branch: perl
+           ! perly.c perly_c.diff vms/perly_c.vms
+____________________________________________________________________________
+[  2908] By: gsar                                  on 1999/02/13  18:20:13
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sat, 13 Feb 1999 13:25:53 +0100
+             Message-Id: <36c9629c.13334874@smtp1.ibm.net>
+             Subject: [PATCH 5.005_03-MT5] "goto must have label" message for C
+     Branch: perl
+           ! pod/perlfunc.pod pp_ctl.c t/lib/io_unix.t
+____________________________________________________________________________
+[  2907] By: jhi                                   on 1999/02/13  15:07:26
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> emacs/e2ctags.pl pod/perltodo.pod t/op/lop.t
+          !> (integrate 150 files)
+____________________________________________________________________________
+[  2903] By: gsar                                  on 1999/02/12  13:25:59
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sun, 24 Jan 1999 01:12:00 +0100
+             Message-ID: <36b66479.62756298@smtp1.ibm.net>
+             Subject: [PATCH 5.005_54] remove OVERLOAD conditionals
+     Branch: perl
+	   ! XSUB.h dump.c gv.c hv.h mg.c perl.h perlvars.h pp.c pp.h
+           ! proto.h sv.c sv.h
+____________________________________________________________________________
+[  2902] By: gsar                                  on 1999/02/12  12:55:11
+        Log: script to generate ctags from etags
+             From: Colin Kuskie 
+             Date: Wed, 20 Jan 1999 16:29:35 -0800 (PST)
+             Message-ID: 
+             Subject: [PATCH 5.005_54] adding ctags to the source, FAQ, make
+     Branch: perl
+           + emacs/e2ctags.pl
+           ! Makefile.SH pod/perlfaq3.pod
+____________________________________________________________________________
+[  2901] By: gsar                                  on 1999/02/12  12:40:17
+        Log: allow boolean assign ops to be lvalues
+             From: Stephen McCamant 
+             Date: Mon, 11 Jan 1999 16:52:18 -0600 (CST)
+             Message-ID: <13978.32609.495338.544643@alias-2.pr.mcs.net>
+             --
+             From: Hugo van der Sanden 
+             Date: Mon, 18 Jan 1999 10:04:00 +0000
+             Message-Id: <199901181004.KAA17471@crypt.compulink.co.uk>
+             Subject: Re: [inconsistency 5.005_54] ||= not an lvalue 
+     Branch: perl
+           + t/op/lop.t
+           ! MANIFEST op.c
+____________________________________________________________________________
+[  2899] By: jhi                                   on 1999/02/12  12:03:48
+        Log: Configure update: OpenBSD thread-awareness, SCO ODT/OSR osvers.
+     Branch: cfgperl
+	   ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+           ! config_h.SH hints/openbsd.sh
+____________________________________________________________________________
+[  2898] By: gsar                                  on 1999/02/12  11:49:25
+        Log: support win32_putenv()
+     Branch: perl
+	   ! mg.c util.c win32/GenCAPI.pl win32/makedef.pl win32/perlhost.h
+           ! win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[  2894] By: gsar                                  on 1999/02/12  11:09:27
+        Log: add missing hunk in change#2657
+     Branch: perl
+           ! ext/B/B/CC.pm
+____________________________________________________________________________
+[  2893] By: gsar                                  on 1999/02/12  11:00:13
+        Log: From: Ilya Zakharevich 
+             Date: Tue, 19 Jan 1999 20:13:15 -0500
+             Message-ID: <19990119201315.A21167@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_53] Remove extraneous sh in test suites
+     Branch: perl
+	   ! t/op/fh.t t/op/misc.t t/op/runlevel.t t/pragma/strict.t
+           ! t/pragma/subs.t t/pragma/warning.t
+____________________________________________________________________________
+[  2892] By: gsar                                  on 1999/02/12  10:44:38
+        Log: update change#2670 to later version
+             From: Hugo van der Sanden 
+             Date: Sun, 31 Jan 1999 16:16:14 +0000
+             Message-Id: <199901311616.QAA17673@crypt.compulink.co.uk>
+             Subject: Re: [PATCH 5.005_54] Evalled substitution parsing 
+     Branch: perl
+           ! t/op/subst.t toke.c
+____________________________________________________________________________
+[  2891] By: gsar                                  on 1999/02/12  10:31:17
+        Log: make testsuite somewhat location independent
+     Branch: perl
+           ! (edit 117 files)
+____________________________________________________________________________
+[  2890] By: gsar                                  on 1999/02/12  10:00:30
+        Log: add $AutoLoader::VERSION
+     Branch: perl
+           ! lib/AutoLoader.pm
+____________________________________________________________________________
+[  2889] By: gsar                                  on 1999/02/12  09:55:48
+        Log: tweak PERL_STRICT_CR notes
+     Branch: perl
+           ! pod/perl5005delta.pod
+____________________________________________________________________________
+[  2888] By: gsar                                  on 1999/02/12  09:41:45
+        Log: add note about test-notty target
+     Branch: perl
+           ! README.win32
+____________________________________________________________________________
+[  2887] By: gsar                                  on 1999/02/12  09:37:37
+        Log: add perltodo.pod
+     Branch: perl
+           + pod/perltodo.pod
+	   ! MANIFEST Todo pod/Makefile pod/perl.pod pod/roffitall
+           ! win32/pod.mak
+____________________________________________________________________________
+[  2886] By: jhi                                   on 1999/02/12  08:52:14
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> t/op/fh.t
+          !> (integrate 30 files)
+____________________________________________________________________________
+[  2885] By: gsar                                  on 1999/02/12  08:42:10
+        Log: note how to find REG_INFTY limit
+     Branch: perl
+           ! pod/perlre.pod
 ____________________________________________________________________________
 [  2884] By: jhi                                   on 1999/02/12  08:36:14
         Log: OpenBSD pthreads awareness, thanks to
@@ -875,55 +20431,74 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! Configure hints/openbsd.sh
 ____________________________________________________________________________
-[  2883] By: jhi                                   on 1999/02/12  08:29:51
-        Log: AVAILABILITY sync.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2882] By: gsar                                  on 1999/02/12  08:05:20
+        Log: IO is maintained by p5p (per Graham Barr's wishes)
+     Branch: perl
+	   ! MAINTAIN ext/IO/ChangeLog ext/IO/README ext/IO/lib/IO/Dir.pm
+	   ! ext/IO/lib/IO/Pipe.pm ext/IO/lib/IO/Poll.pm
+	   ! ext/IO/lib/IO/Select.pm ext/IO/lib/IO/Socket.pm
+           ! ext/IO/lib/IO/Socket/INET.pm ext/IO/lib/IO/Socket/UNIX.pm
 ____________________________________________________________________________
-[  2878] By: jhi                                   on 1999/02/11  22:00:50
-        Log: Replace changes #2783, #2784, #2785, with a single tested
-             patch from Francois Desarmenien . 
-     Branch: maint-5.005/perl
-	   ! MANIFEST ext/GDBM_File/hints/sco.pl ext/IPC/SysV/SysV.xs
-           ! hints/sco.sh
+[  2881] By: gsar                                  on 1999/02/12  07:57:13
+        Log: fh.t typo
+     Branch: perl
+           ! t/op/fh.t
 ____________________________________________________________________________
-[  2876] By: jhi                                   on 1999/02/11  20:43:17
+[  2880] By: gsar                                  on 1999/02/12  07:38:16
+        Log: PERL5OPT=-T enables taint mode (suggested by Jason Riedy )
+     Branch: perl
+           ! perl.c pod/perlrun.pod
+____________________________________________________________________________
+[  2879] By: gsar                                  on 1999/02/12  05:39:29
+        Log: fix ops that are not filehandle constructors to not create GV if it
+             doesn't already exist (avoids leaks); extend semantics of defined()
+             so that defined(*{$foo}) works (experimental)
+     Branch: perl
+           + t/op/fh.t
+	   ! MANIFEST embed.h embed.pl objXSUB.h op.c pod/perldiag.pod pp.c
+           ! pp_hot.c pp_sys.c proto.h t/op/gv.t t/op/misc.t
+____________________________________________________________________________
+[  2877] By: jhi                                   on 1999/02/11  20:44:00
         Log: From: Chris Nandor 
              To: perl5-porters@perl.org
              Subject: [PATCH] perlport.pod 1.39
              Date: Thu, 11 Feb 1999 12:28:35 -0500
              Message-Id: 
-     Branch: maint-5.005/perl
+     Branch: cfgperl
            ! pod/perlport.pod
 ____________________________________________________________________________
-[  2875] By: jhi                                   on 1999/02/11  20:35:08
-        Log: The fpsetmask() really is SCO5 only.
-     Branch: maint-5.005/perl
-           ! unixish.h
+[  2870] By: gsar                                  on 1999/02/11  11:17:08
+        Log: remove double typeglob deref (suggested by RonaldWS )
+     Branch: perl
+           ! ext/IO/lib/IO/Pipe.pm
 ____________________________________________________________________________
-[  2874] By: jhi                                   on 1999/02/11  20:32:06
-        Log: Change #2783 missed these.
-     Branch: maint-5.005/perl
-           ! ext/IPC/SysV/SysV.xs unixish.h
+[  2869] By: gsar                                  on 1999/02/11  11:00:56
+        Log: update win32/pod.mak
+     Branch: perl
+           ! win32/pod.mak
 ____________________________________________________________________________
-[  2873] By: jhi                                   on 1999/02/11  20:27:45
-        Log: Import the change #2810 from cfgperl.
-     Branch: maint-5.005/perl
-           + ext/GDBM_File/hints/sco.pl
-           ! MANIFEST hints/sco.sh unixish.h
+[  2868] By: gsar                                  on 1999/02/11  10:42:44
+        Log: From: Benjamin Low 
+             Date: Fri, 08 Jan 1999 14:36:53 +1100
+             Message-ID: <36957D55.1D65A0B2@unsw.edu.au>
+             Subject: Re: [Fwd: IO::Socket::connect and blocking]
+     Branch: perl
+           ! ext/IO/lib/IO/Socket.pm
 ____________________________________________________________________________
-[  2872] By: jhi                                   on 1999/02/11  19:57:37
-        Log: Sync the current AVAILABILITY.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod pod/perldelta.pod
+[  2867] By: gsar                                  on 1999/02/11  09:43:03
+        Log: av_extend() doc tweak from Jan Dubois
+     Branch: perl
+           ! pod/perlguts.pod
 ____________________________________________________________________________
-[  2871] By: jhi                                   on 1999/02/11  19:42:54
-        Log: Copied the GNU/Hurd hints file over from cfgperl
-             because it works well enough (there are still some
-             rough edges in Hurd), verified via private
-             email from Mark Kettenis 
-     Branch: maint-5.005/perl
-           + hints/gnu.sh
+[  2866] By: gsar                                  on 1999/02/11  09:27:17
+        Log: display full pathname of unreadable files
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  2865] By: gsar                                  on 1999/02/11  09:02:31
+        Log: missing patch in change#2522
+     Branch: perl
+           ! lib/Pod/Text.pm
 ____________________________________________________________________________
 [  2864] By: jhi                                   on 1999/02/11  08:45:00
         Log: From: Spider Boardman 
@@ -934,90 +20509,302 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! doio.c ext/IPC/SysV/SysV.xs hints/ultrix_4.sh
 ____________________________________________________________________________
-[  2863] By: jhi                                   on 1999/02/11  08:35:35
-        Log: AVAILABILITY.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2862] By: gsar                                  on 1999/02/11  08:14:34
+        Log: integrate changes#2738,2740 from maint-5.005
+     Branch: perl
+          !> lib/ExtUtils/MakeMaker.pm
 ____________________________________________________________________________
-[  2858] By: gsar                                  on 1999/02/11  07:10:59
-        Log: remove dup hunk
-     Branch: maint-5.005/perl
-           ! pod/perldelta.pod
+[  2861] By: jhi                                   on 1999/02/11  08:04:25
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+	  !> Changes perl.h pod/perl5005delta.pod pp_ctl.c t/op/local.t
+          !> t/op/range.t win32/config.gc
 ____________________________________________________________________________
-[  2857] By: gsar                                  on 1999/02/11  07:09:20
-        Log: sync with parent version of perldelta.pod
-     Branch: maint-5.005/perl
-          !> pod/perldelta.pod
+[  2860] By: gsar                                  on 1999/02/11  07:30:08
+        Log: binmode() support for cygwin32 (suggested by Steven Morlock
+             )
+     Branch: perl
+           ! perl.h
 ____________________________________________________________________________
-[  2853] By: gsar                                  on 1999/02/11  00:33:06
-        Log: integrate change#2816 from mainline
-             
-             minor bug in dumping blessed subrefs
-     Branch: maint-5.005/perl
-          !> ext/Data/Dumper/Dumper.pm
+[  2859] By: gsar                                  on 1999/02/11  07:14:21
+        Log: update Changes
+     Branch: perl
+           ! Changes
+          !> pod/perl5005delta.pod
+____________________________________________________________________________
+[  2856] By: gsar                                  on 1999/02/11  07:07:39
+        Log: integrate perldelta changes from maint-5.005
+     Branch: perl
+          !> pod/perl5005delta.pod
+____________________________________________________________________________
+[  2855] By: gsar                                  on 1999/02/11  06:31:50
+        Log: applied suggested patch; added tests
+             From: Adam Krolnik 
+             Date: Sat, 12 Dec 98 15:30:18 -0600
+             Message-Id: <9812122130.AA03717@gypsy.eng.cyrix.com>
+             Subject: Range operation doesn't handle IV_MAX
+     Branch: perl
+           ! pp_ctl.c t/op/range.t
+____________________________________________________________________________
+[  2854] By: gsar                                  on 1999/02/11  05:00:55
+        Log: compatibility fix: magic non-propagation in foreach implicit localization
+     Branch: perl
+           ! pp_ctl.c t/op/local.t win32/config.gc
 ____________________________________________________________________________
 [  2852] By: gsar                                  on 1999/02/10  23:17:49
         Log: fair warning about -Dusethreads
      Branch: maint-5.005/perl
            ! Configure INSTALL README.threads
 ____________________________________________________________________________
-[  2851] By: jhi                                   on 1999/02/10  23:00:39
-        Log: Snapshot of the ongoing AVAILABILITY discussion.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2847] By: jhi                                   on 1999/02/09  19:13:28
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+	  !> pod/perldelta.pod pod/perlfunc.pod pod/perlobj.pod
+          !> pod/perlop.pod pp.c t/op/method.t t/op/pack.t
 ____________________________________________________________________________
-[  2850] By: jhi                                   on 1999/02/10  16:07:32
-        Log: OS390 and Windows AVAILABILITY entries enhanced.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2846] By: gsar                                  on 1999/02/09  13:53:28
+        Log: a modified version of suggested patch for pack template 'Z'; added docs
+             From: "Valeriy E. Ushakov" 
+             Date: Mon, 16 Jun 1997 03:00:31 +0400 (MSD)
+             Message-ID: <%lOHpzIuGV@snark.ptc.spbu.ru>
+             Subject: lack of pack/unpack letter with useful symmetry for C null delimited strings
+     Branch: perl
+           ! pod/perldelta.pod pod/perlfunc.pod pp.c t/op/pack.t
 ____________________________________________________________________________
-[  2849] By: jhi                                   on 1999/02/10  12:39:46
-        Log: AS/400 and Mac were not described right.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2845] By: gsar                                  on 1999/02/09  00:03:26
+        Log: clarify docs for change#2835
+     Branch: perl
+           ! pod/perldelta.pod pod/perlop.pod
 ____________________________________________________________________________
-[  2848] By: jhi                                   on 1999/02/10  09:13:49
-        Log: Added AVAILABILITY section.
-     Branch: maint-5.005/perl
-           ! pod/perl.pod
+[  2844] By: gsar                                  on 1999/02/08  23:40:57
+        Log: addendum to change#2823
+             From: Stephen McCamant 
+             Date: Sun, 13 Dec 1998 16:06:04 -0800 (PST)
+             Message-ID: <13940.21805.470054.299@fre-76-120.reshall.berkeley.edu>
+             Subject: [PATCH] Docs and tests for method-call syntax
+     Branch: perl
+           ! pod/perlobj.pod t/op/method.t
 ____________________________________________________________________________
-[  2837] By: jhi                                   on 1999/02/08  14:51:39
-        Log: Fix typo introduced in change #2836.
-     Branch: maint-5.005/perl
-           ! Configure
+[  2843] By: jhi                                   on 1999/02/08  21:06:28
+        Log: Ultrix mmap tidbit.
+     Branch: cfgperl
+           ! hints/ultrix_4.sh
 ____________________________________________________________________________
-[  2836] By: jhi                                   on 1999/02/08  14:44:31
-        Log: Augment change #2809, the h2ph-*symbols patch.
-     Branch: maint-5.005/perl
-           ! Configure t/lib/h2ph.pht
+[  2842] By: jhi                                   on 1999/02/08  20:22:55
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> t/op/subst_wamp.t
+          !> (integrate 35 files)
 ____________________________________________________________________________
-[  2815] By: gsar                                  on 1999/02/05  03:44:50
-        Log: integrate change#2242 from mainline
+[  2841] By: jhi                                   on 1999/02/08  18:23:26
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_53] s/\ba/./g was over-optimized
+             Date: Sun, 7 Feb 1999 17:25:22 -0500
+             Message-ID: <19990207172522.B894@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           + t/op/subst_amp.t
+           ! MANIFEST regcomp.c t/op/subst.t
+____________________________________________________________________________
+[  2840] By: jhi                                   on 1999/02/08  18:16:54
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_53] Fix list-context //g with zero-length matches
+             Date: Sun, 7 Feb 1999 17:00:10 -0500
+             Message-ID: <19990207170009.A894@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           ! pp_hot.c t/op/pat.t
+____________________________________________________________________________
+[  2839] By: jhi                                   on 1999/02/08  17:25:30
+        Log: A require was missing.
+     Branch: cfgperl
+           ! t/lib/h2ph.pht
+____________________________________________________________________________
+[  2838] By: jhi                                   on 1999/02/08  16:38:41
+        Log: Bring in the change #2809 (the Configure part has been
+             modified rather a lot since the #2809, though.)
+     Branch: cfgperl
+           ! Configure utils/h2ph.PL
+____________________________________________________________________________
+[  2835] By: gsar                                  on 1999/02/08  14:40:23
+        Log: make qw() into a true list at compile time (slightly modified
+             variant of patch suggested by Tom Hughes )
+     Branch: perl
+           ! pod/perldelta.pod pod/perlop.pod pp_hot.c toke.c
+____________________________________________________________________________
+[  2834] By: gsar                                  on 1999/02/08  13:23:16
+        Log: make safesysmalloc() etc., always available; safemalloc() et al are
+             now macros that point to the right malloc; fix various places in
+             sources that need to always use safesysmalloc() et al
+     Branch: perl
+	   ! embed.h embedvar.h global.sym iperlsys.h mg.c objXSUB.h perl.h
+           ! perl_exp.SH proto.h util.c vms/gen_shrfls.pl win32/makedef.pl
+____________________________________________________________________________
+[  2833] By: gsar                                  on 1999/02/08  10:56:16
+        Log: remove spurious #endif in last change
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[  2832] By: gsar                                  on 1999/02/08  10:34:55
+        Log: make EMBEDMYMALLOC the default and provide PERL_POLLUTE_MALLOC to let
+             them ask for insanity (untested)
+     Branch: perl
+	   ! INSTALL Todo-5.005 ext/SDBM_File/sdbm/sdbm.h hints/machten.sh
+	   ! hints/next_3.sh hints/next_4.sh hints/qnx.sh iperlsys.h
+           ! malloc.c perl.h pod/perldelta.pod pod/perlguts.pod sv.c
+____________________________________________________________________________
+[  2831] By: jhi                                   on 1999/02/08  08:33:33
+        Log: Update vms/subconfigure.com along the lines of change #2829.
+     Branch: cfgperl
+           ! vms/subconfigure.com
+____________________________________________________________________________
+[  2830] By: gsar                                  on 1999/02/08  00:19:46
+        Log: integrate cfgperl changes into mainline
+     Branch: perl
+	  +> ext/DynaLoader/dl_beos.xs ext/GDBM_File/hints/sco.pl
+          +> lib/File/PathConvert.pm pod/perlthrtut.pod
+           ! Changes
+          !> (integrate 93 files)
+____________________________________________________________________________
+[  2829] By: jhi                                   on 1999/02/07  23:49:46
+        Log: Configure update.
              
-             fix skipspace() to properly account for newlines in eval''-ed
-             strings (caused bogus line numbers in diagnostics and debugger)
-     Branch: maint-5.005/perl
-          !> toke.c
+             Probe for mmap() et alia.
+             The *cc*symbols patch (just Configure, no h2ph).
+     Branch: cfgperl
+	   ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+           ! config_h.SH perl.h
 ____________________________________________________________________________
-[  2814] By: jhi                                   on 1999/02/04  21:21:39
-        Log: Stratus perlport update.
-     Branch: maint-5.005/perl
-           ! pod/perlport.pod
+[  2828] By: gsar                                  on 1999/02/07  23:38:47
+        Log: From: Ilya Zakharevich 
+             Date: Sun, 7 Feb 1999 17:25:22 -0500
+             Message-ID: <19990207172522.B894@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_53] s/\ba/./g was over-optimized
+     Branch: perl
+           + t/op/subst_amp.t t/op/subst_wamp.t
+           ! MANIFEST regcomp.c t/op/subst.t
 ____________________________________________________________________________
-[  2813] By: jhi                                   on 1999/02/04  21:16:54
-        Log: Stratus VOS update.
+[  2827] By: gsar                                  on 1999/02/07  23:27:32
+        Log: From: Ilya Zakharevich 
+             Date: Sun, 7 Feb 1999 17:00:10 -0500
+             Message-ID: <19990207170009.A894@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_53] Fix list-context //g with zero-length matches
+     Branch: perl
+           ! pp_hot.c t/op/pat.t
+____________________________________________________________________________
+[  2826] By: gsar                                  on 1999/02/07  23:26:04
+        Log: patch for change#2822, done right; add PERL_OBJECT stuff; regen headers
+             From: Ilya Zakharevich 
+             Date: Sun, 7 Feb 1999 15:07:27 -0500
+             Message-ID: <19990207150726.A571@monk.mps.ohio-state.edu>
+             Subject: Re: fixing memory leaks in REx compilation
+     Branch: perl
+	   ! embed.h embed.pl objXSUB.h proto.h regcomp.c regcomp.h
+           ! regexec.c
+____________________________________________________________________________
+[  2825] By: jhi                                   on 1999/02/07  18:05:13
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> lib/DB.pm t/comp/bproto.t
+	  !> MANIFEST ext/Data/Dumper/Dumper.pm ext/SDBM_File/sdbm/sdbm.c
+	  !> lib/Pod/Html.pm op.c perly.c perly.y perly_c.diff
+	  !> pod/perldelta.pod pod/perlfunc.pod pod/perlop.pod regcomp.h
+          !> toke.c vms/perly_c.vms
+____________________________________________________________________________
+[  2824] By: gsar                                  on 1999/02/07  14:21:48
+        Log: tweak doc on bitwise ops
+     Branch: perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[  2823] By: gsar                                  on 1999/02/07  13:38:31
+        Log: applied suggested patch; regen perly* and vms/perly*
+             From: Stephen McCamant 
+             Date: Sun, 13 Dec 1998 01:10:12 -0800 (PST)
+             Message-ID: <13939.26706.620683.846776@fre-76-120.reshall.berkeley.edu>
+             Subject: [PATCH] Re: Suggestion for perlobj man page
+     Branch: perl
+           ! perly.c perly.y perly_c.diff toke.c vms/perly_c.vms
+____________________________________________________________________________
+[  2822] By: gsar                                  on 1999/02/07  12:39:09
+        Log: Ilya's idea for cleaning up failed regex allocs (substantive parts
+             disabled, fails tests)
+     Branch: perl
+           ! regcomp.h
+____________________________________________________________________________
+[  2821] By: gsar                                  on 1999/02/07  11:09:39
+        Log: pod2html misinterprets Foo::Bar as a URL (fix suggested by Alexander Barilo
+             )
+     Branch: perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  2820] By: gsar                                  on 1999/02/07  10:20:35
+        Log: add draft debugging API implementation
+     Branch: perl
+           + lib/DB.pm
+           ! MANIFEST
+____________________________________________________________________________
+[  2819] By: gsar                                  on 1999/02/07  09:58:45
+        Log: avoid garbage in db->dirbuf
+             From: Masahiro KAJIURA 
+             Date: Sat, 05 Dec 1998 14:14:54 +0900
+             Message-Id: <199812050514.OAA23268@toshiba.co.jp>
+             Subject: SDBM bug
+     Branch: perl
+           ! ext/SDBM_File/sdbm/sdbm.c
+____________________________________________________________________________
+[  2818] By: gsar                                  on 1999/02/07  09:32:24
+        Log: missing entry
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[  2817] By: gsar                                  on 1999/02/07  09:30:47
+        Log: properly prototype check parenthesized unary ops (e.g. defined(&a,&b))
+     Branch: perl
+           + t/comp/bproto.t
+           ! op.c pod/perldelta.pod pod/perlfunc.pod pod/perlop.pod
+____________________________________________________________________________
+[  2816] By: gsar                                  on 1999/02/06  00:14:29
+        Log: minor bug in dumping blessed subrefs
+     Branch: perl
+           ! ext/Data/Dumper/Dumper.pm
+____________________________________________________________________________
+[  2812] By: jhi                                   on 1999/02/03  22:02:24
+        Log: Enhance change #2808.
              
-             From: Paul_Green@stratus.com
-             To: jhi@iki.fi
-             Subject: RE: VOS changes for Perl5.005_03 are ready!
-             Date: Thu, 4 Feb 1999 14:51:07 -0500
-             Message-ID: <1D1A4EF7AD4DD211A80D00A0C9D7DB665A0168@exna1.stratus.com>
-     Branch: maint-5.005/perl
-           + vos/vos_accept.c
-	   ! MANIFEST README.vos perl.c pod/perlport.pod vos/Changes
-	   ! vos/build.cm vos/compile_perl.cm vos/config.h
-	   ! vos/config_h.SH_orig vos/perl.bind vos/test_vos_dummies.c
-           ! vos/vos_dummies.c vos/vosish.h
+             From: "M.J.T. Guy" 
+             To: perl5-porters@perl.org
+             Subject: Re: [PATCH 5.00*]: perlbug checklist
+             Date: Wed, 3 Feb 1999 19:02:27 +0000
+             Message-Id: 
+     Branch: cfgperl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  2811] By: jhi                                   on 1999/02/03  21:53:23
+        Log: From: Barrie Slaymaker 
+             To: perl5-porters@perl.org
+             CC: pod-people@perl.org
+             Subject: [PATCH]5.005_54 (pod2html) Generate Relative URLs
+             Date: Wed, 03 Feb 1999 10:34:18 -0500
+             Message-ID: <36B86C7A.E99EFFF1@telerama.com>
+             
+             Add File::PathConvert.pm.
+             Fix Pod::Html and installhtml to understand relative urls.
+     Branch: cfgperl
+           + lib/File/PathConvert.pm
+           ! MANIFEST installhtml lib/Pod/Html.pm
+____________________________________________________________________________
+[  2810] By: jhi                                   on 1999/02/03  20:25:10
+        Log: From: Francois Desarmenien 
+             To: Mailing list Perl5 
+             Subject: [PATCH]5.005_54 (hints) SCO 3/5 hint files and SysV correction
+             Date: Wed, 03 Feb 1999 13:13:24 +0000
+             Message-ID: <36B84B74.5EC9B6C8@club-internet.fr>
+             
+             (note: this patch completely overrides Tom Wolfe's patch,
+             change #2604)
+     Branch: cfgperl
+           + ext/GDBM_File/hints/sco.pl
+           ! MANIFEST ext/IPC/SysV/SysV.xs hints/sco.sh
 ____________________________________________________________________________
 [  2809] By: jhi                                   on 1999/02/03  19:54:16
         Log: h2ph fixes + Configure patch to support them.
@@ -1032,45 +20819,328 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! Configure utils/h2ph.PL
 ____________________________________________________________________________
-[  2802] By: jhi                                   on 1999/02/02  17:41:23
+[  2808] By: jhi                                   on 1999/02/03  16:59:55
+        Log: Enhance the perlbug checklist.
+     Branch: cfgperl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  2807] By: jhi                                   on 1999/02/03  14:01:37
+        Log: Document the standard strftime %formats.
+             
+             From: Dominic Dunlop 
+             To: "Kurt D. Starsinic" , Ben Gertzfield 
+             Subject: [PATCH] 5.00[45]*: Re: POSIX's strftime() does not enforce POSIX %C on Solaris
+             Date: Tue, 2 Feb 1999 15:55:29 +0100
+             Message-Id: 
+     Branch: cfgperl
+           ! ext/POSIX/POSIX.pod
+____________________________________________________________________________
+[  2806] By: jhi                                   on 1999/02/03  13:58:00
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          !> perl.h
+____________________________________________________________________________
+[  2805] By: gsar                                  on 1999/02/03  03:32:31
+        Log: PL_uuemap[] init needs help for sizeof()
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[  2804] By: jhi                                   on 1999/02/02  20:44:30
+        Log: These should've been already in #2803.
+     Branch: cfgperl
+           ! Configure config_h.SH vms/subconfigure.com
+____________________________________________________________________________
+[  2803] By: jhi                                   on 1999/02/02  20:38:45
+        Log: telldir prototype issue, from mists of time...
+     Branch: cfgperl
+           ! hints/netbsd.sh pp_sys.c
+____________________________________________________________________________
+[  2801] By: jhi                                   on 1999/02/02  17:40:14
         Log: From: John Bley 
              To: perlbug@perl.org
              Subject: [PATCH]5.005_54 (DOC) fix minor typos
              Date: Tue, 2 Feb 1999 07:52:52 -0500 (EST)
              Message-ID: 
-     Branch: maint-5.005/perl
+     Branch: cfgperl
            ! pod/perlre.pod
 ____________________________________________________________________________
-[  2790] By: jhi                                   on 1999/02/02  16:51:45
-        Log: Re-introduce the typo corrections (update to CGI 2.46
-             overran them).
-     Branch: maint-5.005/perl
-           ! lib/CGI.pm
+[  2800] By: jhi                                   on 1999/02/02  17:26:49
+        Log: Update todo with POSIX 1003.1 1996 Edition reminder.
+     Branch: cfgperl
+           ! Todo-5.005
+____________________________________________________________________________
+[  2799] By: jhi                                   on 1999/02/02  17:18:51
+        Log: Update FindBin from maint-5.005.
+     Branch: cfgperl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[  2798] By: jhi                                   on 1999/02/02  17:16:07
+        Log: Fix typecasts in #2797
+             
+             From: "G. Del Merritt" 
+             Date: Fri, 29 Jan 1999 11:47:25 -0700
+             Message-Id: <199901291847.LAA04828@jhereg.perl.com>
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_5 on MSWin32-x86-object 4.0 (PATCH included)
+     Branch: cfgperl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2797] By: jhi                                   on 1999/02/02  17:14:37
+        Log: From: Ted Law 
+             Date: Wed, 27 Jan 1999 14:54:03 -0500 (EST)
+             Message-Id: <199901271954.OAA07391@dcm2.cibcwg.com>
+             Subject: POSIX::strftime buffer overflow problem
+     Branch: cfgperl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2796] By: jhi                                   on 1999/02/02  17:13:23
+        Log: Do not use File::Slurp.
+     Branch: cfgperl
+           ! t/lib/textfill.t
+____________________________________________________________________________
+[  2795] By: jhi                                   on 1999/02/02  17:11:48
+        Log: perlhist update from maint-5.005.
+     Branch: cfgperl
+           ! pod/perlhist.pod
+____________________________________________________________________________
+[  2794] By: jhi                                   on 1999/02/02  17:10:33
+        Log: POSIX::redef setv?buf() to IO::Handle:: (by gbarr).
+     Branch: cfgperl
+           ! ext/POSIX/POSIX.pm
+____________________________________________________________________________
+[  2793] By: jhi                                   on 1999/02/02  17:08:39
+        Log: Missed the html test from change #2787. 
+     Branch: cfgperl
+           ! t/lib/cgi-html.t
+____________________________________________________________________________
+[  2792] By: jhi                                   on 1999/02/02  17:01:24
+        Log: Update Getopt::Long to 2.19.
+     Branch: cfgperl
+           ! lib/Getopt/Long.pm
+____________________________________________________________________________
+[  2791] By: jhi                                   on 1999/02/02  16:59:13
+        Log: overload syntax is no longer experimental
+     Branch: cfgperl
+           ! lib/overload.pm
+____________________________________________________________________________
+[  2789] By: jhi                                   on 1999/02/02  16:47:50
+        Log: Still doc fixes.
+     Branch: cfgperl
+           ! lib/diagnostics.pm
+____________________________________________________________________________
+[  2788] By: jhi                                   on 1999/02/02  16:47:07
+        Log: Doc fixes.
+     Branch: cfgperl
+           ! lib/CGI.pm lib/diagnostics.pm
+____________________________________________________________________________
+[  2787] By: jhi                                   on 1999/02/02  16:38:55
+        Log: CGI.pm updated to 2.46 (the CGI docs fixes redone
+             where applicable).
+     Branch: cfgperl
+	   ! eg/cgi/RunMeFirst eg/cgi/caution.xbm
+	   ! eg/cgi/clickable_image.cgi eg/cgi/cookie.cgi eg/cgi/crash.cgi
+	   ! eg/cgi/customize.cgi eg/cgi/diff_upload.cgi
+	   ! eg/cgi/dna.small.gif.uu eg/cgi/file_upload.cgi
+	   ! eg/cgi/frameset.cgi eg/cgi/index.html
+	   ! eg/cgi/internal_links.cgi eg/cgi/javascript.cgi
+	   ! eg/cgi/monty.cgi eg/cgi/multiple_forms.cgi
+	   ! eg/cgi/nph-clock.cgi eg/cgi/nph-multipart.cgi eg/cgi/popup.cgi
+	   ! eg/cgi/save_state.cgi eg/cgi/tryit.cgi eg/cgi/wilogo.gif.uu
+	   ! lib/CGI.pm lib/CGI/Apache.pm lib/CGI/Carp.pm lib/CGI/Cookie.pm
+           ! lib/CGI/Fast.pm lib/CGI/Push.pm lib/CGI/Switch.pm
+____________________________________________________________________________
+[  2786] By: jhi                                   on 1999/02/02  16:17:52
+        Log: Update CPAN to 1.47.
+     Branch: cfgperl
+           ! lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm
+____________________________________________________________________________
+[  2785] By: jhi                                   on 1999/02/02  16:09:03
+        Log: From: Mark-Jason Dominus 
+             Date: Sat, 16 Jan 1999 17:22:06 -0500
+             Subject: Re: DOC PATCH (5.005_54 perlsub.pod)
+             Message-ID: <19990116222206.3674.qmail@plover.com>
+     Branch: cfgperl
+           ! pod/perlsub.pod
+____________________________________________________________________________
+[  2784] By: jhi                                   on 1999/02/02  16:01:31
+        Log: Fix incorrect "used only once" warnings
+             
+             From: Ilya Zakharevich 
+             Date: Fri, 8 Jan 1999 04:37:10 -0500
+             Message-ID: <19990108043710.A14390@monk.mps.ohio-state.edu>
+             Subject: Re: change#965 flakiness
+     Branch: cfgperl
+           ! gv.c
+____________________________________________________________________________
+[  2783] By: jhi                                   on 1999/02/02  15:50:38
+        Log: perldelta updates.
+     Branch: cfgperl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2782] By: jhi                                   on 1999/02/02  14:28:26
+        Log: Mirror change #2781.
+     Branch: cfgperl
+           ! hints/linux.sh
 ____________________________________________________________________________
 [  2781] By: jhi                                   on 1999/02/02  14:27:01
         Log: Update the MkLinux note.
      Branch: maint-5.005/perl
            ! hints/linux.sh
 ____________________________________________________________________________
-[  2775] By: jhi                                   on 1999/02/02  13:13:24
-        Log: Mention lib/Dumpvalue.pm.
-     Branch: maint-5.005/perl
-           ! pod/roffitall
+[  2780] By: jhi                                   on 1999/02/02  14:10:59
+        Log: Update todo.
+     Branch: cfgperl
+           ! Todo-5.005
 ____________________________________________________________________________
-[  2767] By: jhi                                   on 1999/02/02  12:29:57
-        Log: Demangle spaces to tab+space.
-     Branch: maint-5.005/perl
-           ! hints/freebsd.sh
+[  2779] By: jhi                                   on 1999/02/02  14:00:25
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+           ! t/lib/textfill.t t/lib/textwrap.t
+          !> (integrate 32 files)
 ____________________________________________________________________________
-[  2758] By: jhi                                   on 1999/02/02  10:51:26
-        Log: Detypo.
-     Branch: maint-5.005/perl
+[  2778] By: jhi                                   on 1999/02/02  13:56:23
+        Log: VMS update, applicable parts of
+             
+             From: Dan Sugalski 
+             To: perl5-porters@perl.org
+             Subject: [PATCH 5.005_03MT3]VMS configure tweak
+             Date: Wed, 20 Jan 1999 12:05:18 -0800
+             Message-Id: <3.0.6.32.19990120120518.00a98470@ous.edu>
+             
+             From: Dan Sugalski 
+             To: perlbug@perl.com, vmsperl@perl.org
+             Subject: NOT OK: perl 5.00503 +MAINT_TRIAL_4 on VMSAXP (Patch included, of course)
+             Date: Tue, 26 Jan 1999 14:40:38 -0800
+             Message-Id: <3.0.6.32.19990126144038.02e5d650@ous.edu>
+             
+             From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [PATCH 5.005_03-MAILT_TRIAL_4]VMS test patches
+             Date: Tue, 26 Jan 1999 14:55:29 -0800
+             Message-Id: <3.0.6.32.19990126145529.02f22280@ous.edu>
+     Branch: cfgperl
+           ! vms/ext/Stdio/test.pl vms/subconfigure.com
+____________________________________________________________________________
+[  2777] By: jhi                                   on 1999/02/02  13:43:24
+        Log: Synch usethreads parts from maint-5.005.
+     Branch: cfgperl
+	   ! hints/aix.sh hints/dec_osf.sh hints/dos_djgpp.sh
+	   ! hints/freebsd.sh hints/hpux.sh hints/irix_4.sh hints/irix_5.sh
+	   ! hints/irix_6.sh hints/irix_6_0.sh hints/irix_6_1.sh
+           ! hints/linux.sh hints/os2.sh hints/solaris_2.sh hints/vmesa.sh
+____________________________________________________________________________
+[  2776] By: jhi                                   on 1999/02/02  13:17:16
+        Log: Jumbo FreeBSD update from Anton Berezin 
+     Branch: cfgperl
+           ! Makefile.SH hints/freebsd.sh
+____________________________________________________________________________
+[  2774] By: jhi                                   on 1999/02/02  13:10:39
+        Log: Add perlthrtut, update pod/* machinery.
+             (a pod/Makefile.SH is sorely needed)
+     Branch: cfgperl
+           + pod/perlthrtut.pod
+           ! MANIFEST pod/Makefile pod/perl.pod pod/roffitall
+____________________________________________________________________________
+[  2773] By: jhi                                   on 1999/02/02  12:54:24
+        Log: From: "M.J.T. Guy" 
+             To: perl5-porters@perl.org
+             Subject: Re: [PATCH] perl5.005_03-MAINT_TRIAL_3: clarify Sv[INU]V versus Sv[INU]VX in perlguts
+             Date: Tue, 26 Jan 1999 22:25:07 +0000
+             Message-Id: 
+     Branch: cfgperl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[  2771] By: jhi                                   on 1999/02/02  12:47:34
+        Log: Use perlbug instead of personal email address.
+     Branch: cfgperl
+           ! Configure
+____________________________________________________________________________
+[  2770] By: jhi                                   on 1999/02/02  12:42:06
+        Log: Miniperl fails to build (pp_sys.c was changed and iperlsys.h wasn't)
+             
+             From: "G. Del Merritt" 
+             To: perlbug@perl.com
+             Subject: NOT OK: perl 5.00503 +MAINT_TRIAL_4 on MSWin32-x86-object (PATCHES included)
+             Date: Tue, 26 Jan 1999 12:09:09 -0700
+             Message-Id: <199901261909.MAA25525@jhereg.perl.com>
+     Branch: cfgperl
+           ! iperlsys.h
+____________________________________________________________________________
+[  2769] By: jhi                                   on 1999/02/02  12:37:57
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_*] OS/2 threads
+             Date: Tue, 26 Jan 1999 13:39:46 -0500
+             Message-ID: <19990126133946.A11594@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           ! os2/os2ish.h
+____________________________________________________________________________
+[  2768] By: jhi                                   on 1999/02/02  12:36:16
+        Log: Apply change #2711 from maint-5.005:
+             
+             make ok", "make okfile", and "make nok" were broken
+             with -Duseshrplib, because of a shared typo.
+             
+             From: Spider Boardman 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_4 on alpha-dec_osf-thread 5.0 (UNINSTALLED)
+             Date: Wed, 27 Jan 1999 12:27:15 -0500
+             Message-Id: <199901271727.MAA233455@web.zk3.dec.com>
+     Branch: cfgperl
+           ! Makefile.SH
+____________________________________________________________________________
+[  2766] By: jhi                                   on 1999/02/02  12:27:08
+        Log: Make Configure use "int main()" instead of bare "main()".
+             Like maint-5.005 change #2703 but now via metaconfig.
+     Branch: cfgperl
+           ! Configure
+____________________________________________________________________________
+[  2765] By: jhi                                   on 1999/02/02  11:59:30
+        Log: Undo part of change #2562.
+     Branch: cfgperl
+           ! Configure
+____________________________________________________________________________
+[  2764] By: jhi                                   on 1999/02/02  11:52:39
+        Log: NetBSD synch with maint-5.005.
+     Branch: cfgperl
+           ! Makefile.SH hints/netbsd.sh makedepend.SH unixish.h
+____________________________________________________________________________
+[  2763] By: jhi                                   on 1999/02/02  11:44:07
+        Log: $Config{installusrbinperl}
+             (maint-5.005 changes #2614 and #2709)
+     Branch: cfgperl
+           ! Configure installperl
+____________________________________________________________________________
+[  2762] By: jhi                                   on 1999/02/02  11:29:13
+        Log: Errno update from maint-5.005 (changes #2583, #2710).
+     Branch: cfgperl
+           ! Configure ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  2759] By: jhi                                   on 1999/02/02  10:53:20
+        Log: Update Trig.pm from maint-5.005.
+     Branch: cfgperl
            ! lib/Math/Trig.pm
 ____________________________________________________________________________
-[  2755] By: jhi                                   on 1999/02/02  09:07:51
-        Log: Make FreeBSD 2.2.7 work with -Duseshrplib -ders.
-     Branch: maint-5.005/perl
-           ! hints/freebsd.sh
+[  2757] By: jhi                                   on 1999/02/02  10:41:26
+        Log: MPE/iX update (mirror maint-5.005 change #2715)
+     Branch: cfgperl
+           ! hints/mpeix.sh mpeix/relink
+____________________________________________________________________________
+[  2756] By: jhi                                   on 1999/02/02  10:38:08
+        Log: BeOS update (Mirror maint-5.005 change #2727).
+     Branch: cfgperl
+           + ext/DynaLoader/dl_beos.xs
+	   ! Configure MANIFEST Makefile.SH README.beos hints/beos.sh
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  2754] By: gsar                                  on 1999/02/02  08:52:13
+        Log: Todo updates from Andy Dougherty 
+     Branch: perl
+           ! Porting/pumpkin.pod Todo Todo-5.005
+____________________________________________________________________________
+[  2753] By: gsar                                  on 1999/02/02  08:46:21
+        Log: Todo tweaks
+     Branch: perl
+           ! Todo Todo-5.005
 ____________________________________________________________________________
 [  2752] By: jhi                                   on 1999/02/01  22:15:12
         Log: Add perlthrtut.pod.
@@ -1085,15 +21155,76 @@ ____________________________________________________________________________
 	   ! MANIFEST pod/Makefile pod/buildtoc pod/perldelta.pod
            ! pod/roffitall
 ____________________________________________________________________________
-[  2741] By: gbarr                                 on 1999/02/01  03:00:42
-        Log: Fix typecasts in #2728
-             
-             From: "G. Del Merritt" 
-             Date: Fri, 29 Jan 1999 11:47:25 -0700
-             Message-Id: <199901291847.LAA04828@jhereg.perl.com>
-             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_5 on MSWin32-x86-object 4.0 (PATCH included)
-     Branch: maint-5.005/perl
-           ! ext/POSIX/POSIX.xs
+[  2751] By: gsar                                  on 1999/02/01  07:28:05
+        Log: devnull() support from Jan Dubois  and others
+     Branch: perl
+	   ! lib/File/Spec/OS2.pm lib/File/Spec/Unix.pm
+           ! lib/File/Spec/VMS.pm lib/File/Spec/Win32.pm
+____________________________________________________________________________
+[  2750] By: gsar                                  on 1999/02/01  07:09:20
+        Log: From: Ilya Zakharevich 
+             Date: Fri, 4 Dec 1998 01:02:03 -0500 (EST)
+             Message-Id: <199812040602.BAA07215@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_53] Debugging REx with lookbehind
+     Branch: perl
+           ! regexec.c
+____________________________________________________________________________
+[  2749] By: gsar                                  on 1999/02/01  07:07:59
+        Log: From: Ilya Zakharevich 
+             Date: Fri, 4 Dec 1998 00:05:41 -0500 (EST)
+             Message-Id: <199812040505.AAA16616@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_53] Speed up .*? and half-fix UTF lookbehind
+     Branch: perl
+           ! regexec.c
+____________________________________________________________________________
+[  2748] By: gsar                                  on 1999/02/01  06:47:06
+        Log: From: "Jonathan I. Kamens" 
+             Date: Thu, 3 Dec 1998 15:10:17 -0500
+             Message-Id: <199812032010.PAA09692@jik.shore.net>
+             Subject: sample checksum code in "perlfunc" man page is wrong
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2747] By: gsar                                  on 1999/02/01  06:35:13
+        Log: typos in Pod/Text.pm
+             From: "Greg Chapman" 
+             Date: Tue, 1 Dec 1998 10:50:18 -0800
+             Message-Id: <199812011849.KAA08816@smtp.well.com>
+             Subject: Glitch in Pod::Text
+     Branch: perl
+           ! lib/Pod/Text.pm
+____________________________________________________________________________
+[  2746] By: gsar                                  on 1999/02/01  06:27:35
+        Log: various win32-ish changes merged from maint-5.005
+     Branch: perl
+	   ! README.win32 embedvar.h globvar.sym lib/ExtUtils/MM_Unix.pm
+	   ! objXSUB.h op.c perl.h perlvars.h pp.c sv.c t/io/fs.t toke.c
+	   ! win32/Makefile win32/config.bc win32/config.vc
+	   ! win32/config_sh.PL win32/makefile.mk win32/runperl.c
+           ! win32/win32.c
+____________________________________________________________________________
+[  2745] By: gsar                                  on 1999/02/01  04:51:54
+        Log: integrate cfgperl changes into mainline
+     Branch: perl
+          !> INSTALL hints/aix.sh lib/Time/Local.pm pod/perldelta.pod
+____________________________________________________________________________
+[  2744] By: gsar                                  on 1999/02/01  04:31:09
+        Log: improved diagnostic on syntax errors at EOL
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[  2743] By: gsar                                  on 1999/02/01  03:59:13
+        Log: don't attempt connect() to bogus IP addresses
+             From:    Graham Barr 
+             Date:    Sun, 31 Jan 1999 21:50:45 CST
+             Message-Id: <19990131215045.A633@pobox.com>
+     Branch: perl
+           ! t/lib/io_multihomed.t
+____________________________________________________________________________
+[  2742] By: gsar                                  on 1999/02/01  03:08:58
+        Log: update Changes
+     Branch: perl
+           ! Changes pod/perldelta.pod
 ____________________________________________________________________________
 [  2740] By: gsar                                  on 1999/02/01  02:43:07
         Log: CAPI inheritance tweak and doc
@@ -1112,40 +21243,6 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! lib/ExtUtils/MakeMaker.pm
 ____________________________________________________________________________
-[  2737] By: gsar                                  on 1999/01/31  04:55:06
-        Log: remove the big ugly thing jhi sneezed into INSTALL :-)
-     Branch: maint-5.005/perl
-           ! INSTALL
-____________________________________________________________________________
-[  2736] By: jhi                                   on 1999/01/30  12:57:06
-        Log: From: pvhp@forte.com (Peter Prymmer)
-             To: perl-mvs@perl.org, perlbug@perl.com
-             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_5 on os390 05.00 (UNINSTALLED)
-             Date: Fri, 29 Jan 99 19:22:31 PST
-             Message-Id: <9901300322.AA19136@forte.com>
-             
-             (slighty edited at the end)
-     Branch: maint-5.005/perl
-           ! README.os390
-____________________________________________________________________________
-[  2735] By: jhi                                   on 1999/01/30  11:49:54
-        Log: Undo 5.005-devel random, srandom mention.
-     Branch: maint-5.005/perl
-           ! INSTALL
-____________________________________________________________________________
-[  2734] By: jhi                                   on 1999/01/29  22:22:00
-        Log: Add perlreftut.
-     Branch: maint-5.005/perl
-           + pod/perlreftut.pod
-           ! MANIFEST pod/perl.pod pod/perldelta.pod pod/roffitall
-____________________________________________________________________________
-[  2732] By: gsar                                  on 1999/01/29  20:09:44
-        Log: integrate change#2720 from mainline
-             
-             missing space while munging CCFLAGS for PERL_CAPI
-     Branch: maint-5.005/perl
-          !> lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
 [  2731] By: jhi                                   on 1999/01/29  14:33:12
         Log: FreeBSD version numbers can be like "2.2.8-release".
      Branch: maint-5.005/perl
@@ -1158,27 +21255,6 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! hints/freebsd.sh
 ____________________________________________________________________________
-[  2729] By: gbarr                                 on 1999/01/29  05:06:32
-        Log: Trial release 5
-     Branch: maint-5.005/perl
-           ! Changes patchlevel.h pod/perlhist.pod
-____________________________________________________________________________
-[  2728] By: gbarr                                 on 1999/01/29  04:10:37
-        Log: From: Ted Law 
-             Date: Wed, 27 Jan 1999 14:54:03 -0500 (EST)
-             Message-Id: <199901271954.OAA07391@dcm2.cibcwg.com>
-             Subject: POSIX::strftime buffer overflow problem
-     Branch: maint-5.005/perl
-           ! ext/POSIX/POSIX.xs
-____________________________________________________________________________
-[  2728] By: gbarr                                 on 1999/01/29  04:10:37
-        Log: From: Ted Law 
-             Date: Wed, 27 Jan 1999 14:54:03 -0500 (EST)
-             Message-Id: <199901271954.OAA07391@dcm2.cibcwg.com>
-             Subject: POSIX::strftime buffer overflow problem
-     Branch: maint-5.005/perl
-           ! ext/POSIX/POSIX.xs
-____________________________________________________________________________
 [  2727] By: gbarr                                 on 1999/01/29  04:09:57
         Log: From: Tom Spindler 
              Date: Thu, 28 Jan 1999 17:15:11 -0800
@@ -1202,41 +21278,10 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! win32/Makefile win32/makefile.mk
 ____________________________________________________________________________
-[  2724] By: jhi                                   on 1999/01/28  19:27:15
-        Log: Change jhi@iki.fi to perlbug@perl.com.
-             Cosmetic change in semctl probing messages.
-     Branch: maint-5.005/perl
-           ! Configure hints/freebsd.sh
-____________________________________________________________________________
-[  2723] By: jhi                                   on 1999/01/28  17:27:49
-        Log: Yet another typo in a test program.
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  2722] By: jhi                                   on 1999/01/28  17:13:52
-        Log: The pthreads_created_joinable test had a typo,
-             by blind luck the default value works almost anywhere.
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  2721] By: jhi                                   on 1999/01/28  13:04:23
-        Log: MinT support, adapted from change #2594.
-     Branch: maint-5.005/perl
-	   + README.mint ext/POSIX/hints/mint.pl hints/mint.sh
-	   + mint/Makefile mint/README mint/errno.h mint/pwd.c mint/stdio.h
-           + mint/sys/time.h mint/time.h
-	   ! MANIFEST doio.c malloc.c miniperlmain.c perl.c
-	   ! pod/perldelta.pod t/io/fs.t t/lib/safe2.t t/op/groups.t
-           ! t/op/mkdir.t t/op/taint.t
-____________________________________________________________________________
-[  2719] By: jhi                                   on 1999/01/27  19:49:49
-        Log: From: "M.J.T. Guy" 
-             To: perl5-porters@perl.org
-             Subject: Re: [PATCH] perl5.005_03-MAINT_TRIAL_3: clarify Sv[INU]V versus Sv[INU]VX in perlguts
-             Date: Tue, 26 Jan 1999 22:25:07 +0000
-             Message-Id: 
-     Branch: maint-5.005/perl
-           ! pod/perlguts.pod
+[  2720] By: gsar                                  on 1999/01/27  21:54:42
+        Log: missing space while munging CCFLAGS for PERL_CAPI
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm
 ____________________________________________________________________________
 [  2718] By: jhi                                   on 1999/01/27  19:46:04
         Log: io/fs.t fails test #18 (sense of tests appears to have been
@@ -1262,22 +21307,6 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! iperlsys.h
 ____________________________________________________________________________
-[  2716] By: jhi                                   on 1999/01/27  19:38:36
-        Log: From: Dan Sugalski 
-             To: perlbug@perl.com, vmsperl@perl.org
-             Subject: NOT OK: perl 5.00503 +MAINT_TRIAL_4 on VMSAXP (Patch included, of course)
-             Date: Tue, 26 Jan 1999 14:40:38 -0800
-             Message-Id: <3.0.6.32.19990126144038.02e5d650@ous.edu>
-             
-             From: Dan Sugalski 
-             To: perl5-porters@perl.org, vmsperl@perl.org
-             Subject: [PATCH 5.005_03-MAILT_TRIAL_4]VMS test patches
-             Date: Tue, 26 Jan 1999 14:55:29 -0800
-             Message-Id: <3.0.6.32.19990126145529.02f22280@ous.edu>
-     Branch: maint-5.005/perl
-	   ! t/lib/textfill.t t/lib/textwrap.t vms/ext/Stdio/test.pl
-           ! vms/subconfigure.com
-____________________________________________________________________________
 [  2715] By: jhi                                   on 1999/01/27  19:34:28
         Log: From: Mark Bixby 
              To: perl5-porters@perl.org
@@ -1287,38 +21316,6 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! hints/mpeix.sh mpeix/relink
 ____________________________________________________________________________
-[  2714] By: jhi                                   on 1999/01/27  19:32:41
-        Log: NetBSD does not do setruid, setrgid.
-     Branch: maint-5.005/perl
-           ! hints/netbsd.sh
-____________________________________________________________________________
-[  2713] By: jhi                                   on 1999/01/27  19:28:53
-        Log: FreeBSD usethreads, based on private email with
-             Anton Berezin .
-     Branch: maint-5.005/perl
-           ! hints/freebsd.sh
-____________________________________________________________________________
-[  2712] By: jhi                                   on 1999/01/27  19:26:17
-        Log: From: Ilya Zakharevich 
-             To: Mailing list Perl5 
-             Subject: [PATCH 5.005_*] OS/2 threads
-             Date: Tue, 26 Jan 1999 13:39:46 -0500
-             Message-ID: <19990126133946.A11594@monk.mps.ohio-state.edu>
-     Branch: maint-5.005/perl
-           ! os2/os2ish.h
-____________________________________________________________________________
-[  2711] By: jhi                                   on 1999/01/27  19:24:28
-        Log: "make ok", "make okfile", and "make nok" were broken
-             with -Duseshrplib, because of a shared typo.
-             
-             From: Spider Boardman 
-             To: perlbug@perl.com
-             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_4 on alpha-dec_osf-thread 5.0 (UNINSTALLED)
-             Date: Wed, 27 Jan 1999 12:27:15 -0500
-             Message-Id: <199901271727.MAA233455@web.zk3.dec.com>
-     Branch: maint-5.005/perl
-           ! Makefile.SH
-____________________________________________________________________________
 [  2710] By: jhi                                   on 1999/01/27  19:22:23
         Log: Errno fixes:
              
@@ -1348,160 +21345,70 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! Configure
 ____________________________________________________________________________
-[  2708] By: gbarr                                 on 1999/01/26  04:14:42
-        Log: Trial release 4
-     Branch: maint-5.005/perl
-           ! Changes patchlevel.h pod/perlhist.pod
-____________________________________________________________________________
 [  2707] By: gbarr                                 on 1999/01/26  02:06:17
         Log: Add redef IO::Handle::* for setv?buf()
      Branch: maint-5.005/perl
            ! ext/POSIX/POSIX.pm
 ____________________________________________________________________________
-[  2706] By: jhi                                   on 1999/01/24  22:26:12
-        Log: Better AIX libc nm scan.
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  2703] By: jhi                                   on 1999/01/24  14:26:18
-        Log: Minor Configure adjustments.
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  2702] By: jhi                                   on 1999/01/24  13:57:33
-        Log: Use usethreads.cbu consistently.
-     Branch: maint-5.005/perl
-	   ! Configure hints/aix.sh hints/dec_osf.sh hints/dos_djgpp.sh
-	   ! hints/freebsd.sh hints/hpux.sh hints/irix_4.sh hints/irix_5.sh
-	   ! hints/irix_6.sh hints/irix_6_0.sh hints/irix_6_1.sh
-           ! hints/linux.sh hints/os2.sh hints/solaris_2.sh
-____________________________________________________________________________
-[  2701] By: jhi                                   on 1999/01/24  13:55:43
-        Log: Mention year-1900 and month 0..11 also here.
-     Branch: maint-5.005/perl
+[  2705] By: jhi                                   on 1999/01/24  15:14:30
+        Log: Mention year-1900 and month 0..11.
+     Branch: cfgperl
            ! lib/Time/Local.pm
 ____________________________________________________________________________
-[  2700] By: jhi                                   on 1999/01/24  13:52:36
+[  2704] By: jhi                                   on 1999/01/24  15:13:36
         Log: Document Configure -Uinstallusrbinperl.
-     Branch: maint-5.005/perl
+     Branch: cfgperl
            ! INSTALL pod/perldelta.pod
 ____________________________________________________________________________
-[  2699] By: jhi                                   on 1999/01/24  13:01:57
-        Log: perlopentut was missing.
-     Branch: maint-5.005/perl
-           + pod/perlopentut.pod
-           ! MANIFEST pod/perldelta.pod
+[  2698] By: jhi                                   on 1999/01/24  12:46:00
+        Log: Use only xlc_r for usethreads.
+     Branch: cfgperl
+           ! hints/aix.sh
 ____________________________________________________________________________
-[  2697] By: jhi                                   on 1999/01/24  12:31:33
-        Log: Remove t/op/grent.t (t/op/pwent.t was removed by #2685).
-     Branch: maint-5.005/perl
-           - t/op/grent.t
-           ! MANIFEST
+[  2695] By: gsar                                  on 1999/01/24  07:09:05
+        Log: integrate cfgperl changes into mainline
+     Branch: perl
+          +> lib/Exporter/Heavy.pm
+          !> (integrate 65 files)
 ____________________________________________________________________________
-[  2696] By: gsar                                  on 1999/01/24  11:39:39
-        Log: integrate changes#2255,2694 from mainline 
-             
-             another win32 portability fix: make sysread() and syswrite()
-             work on sockets
-             
-             better notes on 'make' on win32
-     Branch: maint-5.005/perl
-           ! README.win32 pp_sys.c win32/win32.h
+[  2694] By: gsar                                  on 1999/01/24  01:28:49
+        Log: better notes on 'make' on win32
+     Branch: perl
+           ! README.win32
 ____________________________________________________________________________
-[  2693] By: gbarr                                 on 1999/01/24  00:53:31
-        Log: Integrate changes #2646,2647 from cfgperl
-             
-             Show LANGUAGE env var when needed. (Augment change #2645).
-             
-             SHMLBA strikes back in NetBSD/sparc.
-             
-             From: Dave Nelson 
-             To: jhi@iki.fi
-             Subject: perl5.005_02 + IPC::SysV + NetBSD/Sparc
-             Date: Mon, 18 Jan 1999 22:07:56 -0600
-             Message-Id: <199901190407.WAA02543@longhorn.bellcow.com>
-     Branch: maint-5.005/perl
-           ! util.c utils/perlbug.PL
-          !> ext/IPC/SysV/SysV.xs
+[  2683] By: jhi                                   on 1999/01/22  15:41:00
+        Log: More de-cut-and-pastos.
+     Branch: cfgperl
+           ! hints/irix_6.sh hints/os2.sh
 ____________________________________________________________________________
-[  2692] By: gbarr                                 on 1999/01/24  00:28:52
-        Log: Integrate #2630 from mainline and an errno save fix
-     Branch: maint-5.005/perl
-          !> doio.c
+[  2682] By: jhi                                   on 1999/01/22  15:30:51
+        Log: usethreads.cbu cut-and-pasto.
+     Branch: cfgperl
+           ! hints/solaris_2.sh
 ____________________________________________________________________________
-[  2691] By: gbarr                                 on 1999/01/24  00:28:37
-        Log: Update CGI modules to 2.46 and Getopt::Long to 2.19
-     Branch: maint-5.005/perl
-	   ! lib/CGI.pm lib/CGI/Carp.pm lib/CGI/Cookie.pm lib/CGI/Fast.pm
-           ! lib/CGI/Push.pm lib/Getopt/Long.pm t/lib/cgi-html.t
+[  2681] By: jhi                                   on 1999/01/22  14:54:55
+        Log: Better (I hope) LANGUAGE documentation.
+     Branch: cfgperl
+           ! pod/perllocale.pod
 ____________________________________________________________________________
-[  2690] By: gbarr                                 on 1999/01/23  23:35:39
-        Log: Integrate #2681 from cfgperl
-             
-             Better (I hope) LANGUAGE documentation.
-     Branch: maint-5.005/perl
-          !> pod/perllocale.pod
+[  2680] By: jhi                                   on 1999/01/22  09:20:29
+        Log: From: Dan Sugalski 
+             To: perl5-porters@perl.org
+             Subject: [PATCH 5.005_03MT3]VMS configure tweak
+             Date: Wed, 20 Jan 1999 12:05:18 -0800
+             Message-Id: <3.0.6.32.19990120120518.00a98470@ous.edu>
+     Branch: cfgperl
+           ! vms/subconfigure.com
 ____________________________________________________________________________
-[  2689] By: gbarr                                 on 1999/01/23  23:31:59
-        Log: More nosuid patches
-             
-             From: Jarkko Hietaniemi 
-             Date: Fri, 22 Jan 1999 12:12:45 +0200 (EET)
-             Message-ID: <13992.20253.269284.841300@alpha.hut.fi>
-             Subject: Re: [PATCH] 5.005*: the "nosuid" problem: v2
-     Branch: maint-5.005/perl
-	   ! Configure config_h.SH perl.c perl.h pod/perldelta.pod
-           ! pod/perldiag.pod
+[  2679] By: jhi                                   on 1999/01/22  09:13:18
+        Log: nosuid getmntent() branch.
+     Branch: cfgperl
+           ! perl.c perl.h
 ____________________________________________________________________________
-[  2688] By: gbarr                                 on 1999/01/23  23:03:39
-        Log: From: Anton Berezin 
-             Date: 21 Jan 1999 17:07:28 +0100
-             Message-ID: <86emood2yn.fsf@lion.plab.ku.dk>
-             Subject: [PATCH 5.005_54] hints/freebsd.sh - reflect the birth of version 4.0
-     Branch: maint-5.005/perl
-           ! hints/freebsd.sh
-____________________________________________________________________________
-[  2687] By: gbarr                                 on 1999/01/23  22:52:58
-        Log: overload syntax is no longer experimental
-     Branch: maint-5.005/perl
-           ! lib/overload.pm
-____________________________________________________________________________
-[  2685] By: gbarr                                 on 1999/01/23  22:15:46
-        Log: Remove t/op/pwent.t added from cfgperl, but is not robust.
-     Branch: maint-5.005/perl
-           - t/op/pwent.t
-           ! MANIFEST
-____________________________________________________________________________
-[  2684] By: gbarr                                 on 1999/01/23  22:13:07
-        Log: More doc typos from Abigail, and undo some in lib/diagnostics.pm
-             from change #2672
-             
-             From: abigail@fnx.com
-             Date: Tue, 19 Jan 1999 19:32:42 -0500 (EST)
-             Message-Id: <19990120003242.19938.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/CGI.pm] Typos
-             
-             From: abigail@fnx.com
-             Date: Tue, 19 Jan 1999 19:40:41 -0500 (EST)
-             Message-Id: <19990120004041.20052.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/CPAN.pm] Typos
-     Branch: maint-5.005/perl
-           ! lib/CGI.pm lib/CPAN.pm lib/diagnostics.pm
-____________________________________________________________________________
-[  2677] By: gbarr                                 on 1999/01/22  03:38:07
-        Log: Integrate #2645, #2648 and update patching.pod
-             
-             Document the GNU LANGUAGE env var.
-             
-             Mention /usr/share/locale.
-             
-             From: Daniel Grisinger 
-             Date: 21 Jan 1999 00:17:35 -0700
-             Message-Id: 
-             Subject: [PATCH] patching.pod, misc fixes (was Re: Which ? What ? Why ? When ?)
-     Branch: maint-5.005/perl
-           ! Porting/patching.pod
-          !> pod/perllocale.pod
+[  2678] By: jhi                                   on 1999/01/22  08:54:19
+        Log: nosuid patch continued: *BSD needs .
+     Branch: cfgperl
+           ! Configure config_h.SH
 ____________________________________________________________________________
 [  2676] By: gbarr                                 on 1999/01/22  01:54:02
         Log: Fixup FindBin to use File::Spec
@@ -1513,114 +21420,6 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! lib/FindBin.pm
 ____________________________________________________________________________
-[  2675] By: gbarr                                 on 1999/01/22  01:38:31
-        Log: Add new config values added for nosuid fix into VMS configure
-             
-             From: Dan Sugalski 
-             Date: Wed, 20 Jan 1999 12:05:18 -0800
-             Message-Id: <3.0.6.32.19990120120518.00a98470@ous.edu>
-             Subject: [PATCH 5.005_03MT3]VMS configure tweak
-     Branch: maint-5.005/perl
-           ! vms/subconfigure.com
-____________________________________________________________________________
-[  2674] By: gbarr                                 on 1999/01/22  01:36:35
-        Log: Fix for buggy compiler optimization on dec for pack("I",...)
-             
-             From: Achim Bohnet 
-             Date: Wed, 20 Jan 1999 20:25:53 +0100
-             Message-Id: <199901201925.UAA16940@o06.xray.mpe.mpg.de>
-             Subject: [PATCH] Not OK: perl 5.00503 +MAINT_TRIAL_3 on alpha-dec_osf 4.0
-     Branch: maint-5.005/perl
-           ! pp.c
-____________________________________________________________________________
-[  2673] By: gbarr                                 on 1999/01/22  01:29:37
-        Log: OS/2 patches from Ilya
-             
-             Date: Thu, 21 Jan 1999 02:08:27 -0500
-             From: Ilya Zakharevich 
-             Subject: [PATCH 5.00*] makedepend
-             Message-Id: <19990121020827.A25509@monk.mps.ohio-state.edu>
-             
-             Date: Thu, 21 Jan 1999 02:46:34 -0500
-             From: Ilya Zakharevich 
-             Subject: [PATCH 5.005_*] Errno.pm suffers from \\ too
-             Message-Id: <19990121024634.A25600@monk.mps.ohio-state.edu>
-             
-             Date: Thu, 21 Jan 1999 02:50:16 -0500
-             From: Ilya Zakharevich 
-             Subject: [PATCH 5.005_03] Resend of OS/2 patch
-             Message-Id: <19990121025016.A25612@monk.mps.ohio-state.edu>
-             
-             Date: Thu, 21 Jan 1999 03:58:29 -0500
-             From: Ilya Zakharevich 
-             Subject: [PATCH 5.005_*] OS2::PrfDB was exploiting a bug in U32 XSUBs
-             Message-Id: <19990121035829.A25822@monk.mps.ohio-state.edu>
-     Branch: maint-5.005/perl
-	   ! ext/Errno/Errno_pm.PL makedepend.SH os2/Changes
-           ! os2/Makefile.SHs os2/OS2/PrfDB/PrfDB.xs os2/os2.c
-____________________________________________________________________________
-[  2672] By: gbarr                                 on 1999/01/22  01:05:45
-        Log: More doc typo patches from Abigail
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120001410.19645.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL 3 lib/AutoLoader.pm]  Typos
-             Date: Tue, 19 Jan 1999 19:14:10 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120004312.20152.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/Carp.pm] Typo
-             Date: Tue, 19 Jan 1999 19:43:12 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120004429.20190.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/Cwd.pm] Typo
-             Date: Tue, 19 Jan 1999 19:44:29 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120005241.20693.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/Safe.pm] Typo
-             Date: Tue, 19 Jan 1999 19:52:41 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120005525.20788.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/SelfLoader.pm] Typos
-             Date: Tue, 19 Jan 1999 19:55:25 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120005821.20926.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/Symbol.pm] Typo
-             Date: Tue, 19 Jan 1999 19:58:21 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120010002.20973.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/Test.pm] Typo
-             Date: Tue, 19 Jan 1999 20:00:02 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120013823.23015.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/diagnostics.pm] Typos  (ignore
-             Date: Tue, 19 Jan 1999 20:38:23 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120013909.23085.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/ops.pm] Typo
-             Date: Tue, 19 Jan 1999 20:39:09 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120015817.24306.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/overload.pm] Typos
-             Date: Tue, 19 Jan 1999 20:58:16 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-Id: <19990120020326.24373.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL3 lib/re.pm] Typos
-             Date: Tue, 19 Jan 1999 21:03:26 -0500 (EST)
-     Branch: maint-5.005/perl
-	   ! ext/Opcode/Safe.pm ext/Opcode/ops.pm ext/re/re.pm
-	   ! lib/AutoLoader.pm lib/Carp.pm lib/Cwd.pm lib/SelfLoader.pm
-           ! lib/Symbol.pm lib/Test.pm lib/diagnostics.pm lib/overload.pm
-____________________________________________________________________________
 [  2671] By: gbarr                                 on 1999/01/22  00:40:13
         Log: Fix win32 for Borland compiler and spaces in paths
              
@@ -1632,69 +21431,403 @@ ____________________________________________________________________________
 	   ! README.win32 win32/Makefile win32/config_sh.PL
            ! win32/makefile.mk win32/runperl.c
 ____________________________________________________________________________
-[  2637] By: gbarr                                 on 1999/01/18  02:52:18
-        Log: Update DB_File to 1.63
-             
-             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-             Date: Tue, 29 Dec 1998 16:23:54 +0000 (GMT)
-             Message-Id: <9812291623.AA20884@claudius.bfsec.bt.co.uk>
-             Subject: PATCH DB_File 1.63 for 5.005_54 & 5.005_03
-     Branch: maint-5.005/perl
-	   ! ext/DB_File/Changes ext/DB_File/DB_File.pm
-           ! ext/DB_File/DB_File.xs ext/DB_File/dbinfo ext/DB_File/typemap
+[  2670] By: jhi                                   on 1999/01/21  16:12:38
+        Log: From: Hugo van der Sanden 
+             To: perl5-porters@perl.org
+             Subject: Re: [PATCH 5.005_54] Evalled substitution parsing
+             Date: Thu, 21 Jan 1999 12:08:01 +0000
+             Message-Id: <199901211208.MAA01228@crypt.compulink.co.uk>
+     Branch: cfgperl
+           ! pod/perldiag.pod t/op/subst.t toke.c
 ____________________________________________________________________________
-[  2636] By: gbarr                                 on 1999/01/17  18:03:31
-        Log: Trial release 3
-     Branch: maint-5.005/perl
-           ! Changes patchlevel.h
+[  2669] By: jhi                                   on 1999/01/21  16:11:46
+        Log: To: perl5-porters@perl.org
+             Subject: [PATCH 5.005_54] hints/freebsd.sh - reflect the birth of version 4.0
+             From: Anton Berezin 
+             Date: 21 Jan 1999 17:07:28 +0100
+             Message-ID: <86emood2yn.fsf@lion.plab.ku.dk>
+     Branch: cfgperl
+           ! hints/freebsd.sh
 ____________________________________________________________________________
-[  2635] By: gbarr                                 on 1999/01/17  17:32:01
-        Log: Update to CPAN-1.44
-             
-             From: Mark-Jason Dominus 
-             Date: Sat, 16 Jan 1999 17:22:06 -0500
-             Message-ID: <19990116222206.3674.qmail@plover.com>
-             Subject: Re: DOC PATCH (5.005_54 perlsub.pod)
-     Branch: maint-5.005/perl
-	   ! lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm
-           ! pod/perlsub.pod
+[  2668] By: jhi                                   on 1999/01/21  15:38:34
+        Log: Add Daniel Grisinger .
+     Branch: cfgperl
+           ! AUTHORS MAINTAIN
 ____________________________________________________________________________
-[  2634] By: gbarr                                 on 1999/01/17  17:27:12
-        Log: Fix for suidperl when script is on a nosuid filesystem
-             
-             From: Jarkko Hietaniemi 
-             Date: Sun, 17 Jan 1999 16:27:06 +0200 (EET)
-             Message-ID: <13985.62266.324824.292401@alpha.hut.fi>
-             Subject: [PATCH] 5.005*: the "nosuid" problem: v2
-     Branch: maint-5.005/perl
-           ! Configure config_h.SH perl.c perl.h pod/perldiag.pod
+[  2667] By: jhi                                   on 1999/01/21  15:32:28
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_53] Lean Exporter.pm
+             Date: Thu, 21 Jan 1999 03:25:23 -0500
+             Message-ID: <19990121032523.A25704@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           + lib/Exporter/Heavy.pm
+           ! MANIFEST lib/Exporter.pm
 ____________________________________________________________________________
-[  2618] By: gbarr                                 on 1999/01/16  19:18:26
-        Log: Added Dumpvalue.pm
-             
-             From: Ilya Zakharevich 
-             Date: Mon, 7 Dec 1998 02:44:25 -0500 (EST)
-             Message-Id: <199812070744.CAA18949@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Dumpvar.pm
-     Branch: maint-5.005/perl
-           + lib/Dumpvalue.pm
-           ! MANIFEST pod/perldelta.pod
+[  2666] By: jhi                                   on 1999/01/21  15:24:10
+        Log: From: "W. Phillip Moore" 
+             To: Graham Barr , perlbug@perl.org
+             Subject: Re: [PATCH] File::Path 1.04 bug (all perl5 core versions)
+             Date: Tue, 19 Jan 1999 11:39:11 -0500 (EST)
+             Message-ID: <13988.46383.298992.97303@zappa>
+     Branch: cfgperl
+           ! lib/File/Path.pm
 ____________________________________________________________________________
-[  2617] By: gbarr                                 on 1999/01/16  19:09:36
-        Log: Minor change to perlxstut and added perlopentut.pod
+[  2665] By: jhi                                   on 1999/01/21  15:20:48
+        Log: CPAN update (CPAN-1.44_54) from Andreas and
+             jumbo doc patch from Abigail.
              
-             From: Nathan Torkington 
-             Date: Sat, 26 Dec 1998 14:28:21 +1300 (NZDT)
-             Message-ID: <13956.15285.933914.320849@localhost.frii.com>
-             Subject: [PATCH] perlxstut.pod fix
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL 3 lib/AutoLoader.pm]  Typos
+             Date: Tue, 19 Jan 1999 19:14:10 -0500 (EST)
+             Message-ID: <19990120001410.19645.qmail@alexandra.wayne.fnx.com>
              
-             From: Tom Christiansen 
-             Date: Sat, 09 Jan 1999 08:13:18 -0700
-             Message-Id: <199901091513.IAA17512@jhereg.perl.com>
-             Subject: perlopentut.pod
-     Branch: maint-5.005/perl
-	   ! MANIFEST pod/perl.pod pod/perldelta.pod pod/perlxstut.pod
-           ! pod/roffitall
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/CGI.pm] Typos
+             Date: Tue, 19 Jan 1999 19:32:42 -0500 (EST)
+             Message-ID: <19990120003242.19938.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/CPAN.pm] Typos
+             Date: Tue, 19 Jan 1999 19:40:41 -0500 (EST)
+             Message-ID: <19990120004041.20052.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Carp.pm] Typo
+             Date: Tue, 19 Jan 1999 19:43:12 -0500 (EST)
+             Message-ID: <19990120004312.20152.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Cwd.pm] Typo
+             Date: Tue, 19 Jan 1999 19:44:29 -0500 (EST)
+             Message-ID: <19990120004429.20190.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Safe.pm] Typo
+             Date: Tue, 19 Jan 1999 19:52:41 -0500 (EST)
+             Message-ID: <19990120005241.20693.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/SelfLoader.pm] Typos
+             Date: Tue, 19 Jan 1999 19:55:25 -0500 (EST)
+             Message-ID: <19990120005525.20788.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Symbol.pm] Typo
+             Date: Tue, 19 Jan 1999 19:58:21 -0500 (EST)
+             Message-ID: <19990120005821.20926.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Test.pm] Typo
+             Date: Tue, 19 Jan 1999 20:00:02 -0500 (EST)
+             Message-ID: <19990120010002.20973.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/ops.pm] Typo
+             Date: Tue, 19 Jan 1999 20:39:09 -0500 (EST)
+             Message-ID: <19990120013909.23085.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/diagnostics.pm] Typos  (ignore previous patch for this file...)
+             Date: Tue, 19 Jan 1999 20:38:23 -0500 (EST)
+             Message-ID: <19990120013823.23015.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/overload.pm] Typos
+             Date: Tue, 19 Jan 1999 20:58:16 -0500 (EST)
+             Message-ID: <19990120015817.24306.qmail@alexandra.wayne.fnx.com>
+             
+             From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_03 TRIAL3 lib/re.pm] Typos
+             Date: Tue, 19 Jan 1999 21:03:26 -0500 (EST)
+             Message-ID: <19990120020326.24373.qmail@alexandra.wayne.fnx.com>
+     Branch: cfgperl
+	   ! ext/Opcode/Safe.pm ext/Opcode/ops.pm lib/AutoLoader.pm
+	   ! lib/CGI.pm lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm
+	   ! lib/Carp.pm lib/Cwd.pm lib/SelfLoader.pm lib/Symbol.pm
+           ! lib/Test.pm lib/diagnostics.pm lib/fields.pm lib/overload.pm
+____________________________________________________________________________
+[  2664] By: jhi                                   on 1999/01/21  14:47:43
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_*] OS2::PrfDB was exploiting a bug in U32 XSUBs
+             Date: Thu, 21 Jan 1999 03:58:29 -0500
+             Message-ID: <19990121035829.A25822@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           ! os2/Changes os2/OS2/PrfDB/PrfDB.xs
+____________________________________________________________________________
+[  2663] By: jhi                                   on 1999/01/21  14:43:58
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_*] Errno.pm suffers from \\ too
+             Date: Thu, 21 Jan 1999 02:46:34 -0500
+             Message-ID: <19990121024634.A25600@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           ! ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  2662] By: jhi                                   on 1999/01/21  14:42:42
+        Log: From: Daniel Grisinger 
+             To: Francois Desarmenien 
+             Cc: Gurusamy Sarathy ,
+             Mailing list Perl5 , bugmongers@perl.org
+             Subject: [PATCH] patching.pod, misc fixes (was Re: Which ? What ? Why ? When ?)
+             Date: 21 Jan 1999 00:17:35 -0700
+             Message-ID: 
+     Branch: cfgperl
+           ! Porting/patching.pod
+____________________________________________________________________________
+[  2661] By: jhi                                   on 1999/01/21  14:41:13
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.00*] makedepend
+             Date: Thu, 21 Jan 1999 02:08:27 -0500
+             Message-ID: <19990121020827.A25509@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           ! makedepend.SH
+____________________________________________________________________________
+[  2660] By: jhi                                   on 1999/01/21  14:36:45
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_53] Pipes and 2>&1 on OS/2
+             Date: Tue, 19 Jan 1999 20:06:45 -0500
+             Message-ID: <19990119200645.A21154@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           ! os2/Changes os2/os2.c
+____________________________________________________________________________
+[  2657] By: jhi                                   on 1999/01/21  11:40:35
+        Log: From: "Vishal Bhatia" 
+             To: perl5-porters@perl.org
+             Subject: [PATCH 5.005_54]pp_mapstart & pp_grepstart return val (CC.pm)
+             Date: Mon, 18 Jan 1999 01:32:31 PST
+             Message-ID: <19990118093231.18443.qmail@hotmail.com>
+     Branch: cfgperl
+           ! ext/B/B/CC.pm
+____________________________________________________________________________
+[  2656] By: jhi                                   on 1999/01/21  11:35:34
+        Log: From: Achim Bohnet 
+             Subject: [PATCH] Not OK: perl 5.00503 +MAINT_TRIAL_3 on alpha-dec_osf 4.0 (UNINSTALLED) 
+             Date: Wed, 20 Jan 1999 20:25:53 +0100
+             Message-Id: <199901201925.UAA16940@o06.xray.mpe.mpg.de>
+     Branch: cfgperl
+           ! pp.c
+____________________________________________________________________________
+[  2655] By: jhi                                   on 1999/01/21  10:46:01
+        Log: Handle NIS (and NetInfo) more robustly.
+     Branch: cfgperl
+           ! t/op/grent.t t/op/pwent.t
+____________________________________________________________________________
+[  2654] By: jhi                                   on 1999/01/21  10:17:20
+        Log: Two-argument eaccess() of SCO.
+     Branch: cfgperl
+           ! pp_sys.c
+____________________________________________________________________________
+[  2653] By: jhi                                   on 1999/01/21  08:53:14
+        Log: -DNO_NOSUID_CHECK for those platforms which have no way
+             of checking for nosuid but still want suidperl.
+     Branch: cfgperl
+           ! perl.c
+____________________________________________________________________________
+[  2652] By: jhi                                   on 1999/01/21  08:22:50
+        Log: The LANGUAGE mirrors LC_ALL usage.
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
+[  2651] By: jhi                                   on 1999/01/20  22:01:21
+        Log: I_MNTENT was missing.
+     Branch: cfgperl
+           ! Configure config_h.SH
+____________________________________________________________________________
+[  2650] By: jhi                                   on 1999/01/19  13:42:03
+        Log: NetBSD update, based on patches from the NetBSD packages system.
+     Branch: cfgperl
+           ! Makefile.SH hints/netbsd.sh makedepend.SH unixish.h
+____________________________________________________________________________
+[  2649] By: jhi                                   on 1999/01/19  12:44:02
+        Log: Jumbo Configure update.
+             * -Uinstallusrbinperl: disable /usr/bin/perl installation
+             by installperl
+             * usethreads.cbu
+             * use64bits.cbu
+             * "nosuid"
+     Branch: cfgperl
+	   ! Configure config_h.SH hints/aix.sh hints/dec_osf.sh
+	   ! hints/dos_djgpp.sh hints/freebsd.sh hints/hpux.sh
+	   ! hints/irix_4.sh hints/irix_5.sh hints/irix_6.sh
+	   ! hints/irix_6_0.sh hints/irix_6_1.sh hints/linux.sh
+	   ! hints/os2.sh hints/solaris_2.sh hints/vmesa.sh perl.c perl.h
+           ! pod/perldiag.pod
+____________________________________________________________________________
+[  2648] By: jhi                                   on 1999/01/19  09:16:44
+        Log: Mention /usr/share/locale.
+     Branch: cfgperl
+           ! pod/perllocale.pod
+____________________________________________________________________________
+[  2647] By: jhi                                   on 1999/01/19  09:11:11
+        Log: SHMLBA strikes back in NetBSD/sparc.
+             
+             From: Dave Nelson 
+             To: jhi@iki.fi
+             Subject: perl5.005_02 + IPC::SysV + NetBSD/Sparc
+             Date: Mon, 18 Jan 1999 22:07:56 -0600
+             Message-Id: <199901190407.WAA02543@longhorn.bellcow.com>
+     Branch: cfgperl
+           ! ext/IPC/SysV/SysV.xs
+____________________________________________________________________________
+[  2646] By: jhi                                   on 1999/01/19  08:58:17
+        Log: Show LANGUAGE env var when needed. (Augment change #2645).
+     Branch: cfgperl
+           ! util.c utils/perlbug.PL
+____________________________________________________________________________
+[  2645] By: jhi                                   on 1999/01/19  08:52:15
+        Log: Document the GNU LANGUAGE env var.
+     Branch: cfgperl
+           ! pod/perllocale.pod
+____________________________________________________________________________
+[  2644] By: jhi                                   on 1999/01/19  08:42:25
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_53] Fixing \G bug by Francois Desarmenien
+             Date: Mon, 18 Jan 1999 20:57:02 -0500
+             Message-ID: <19990118205702.A18379@monk.mps.ohio-state.edu>
+     Branch: cfgperl
+           ! pp_hot.c t/op/pat.t
+____________________________________________________________________________
+[  2643] By: jhi                                   on 1999/01/18  11:23:41
+        Log: Add various cruft to "clean" target. (Time for t/Makefile?)
+     Branch: cfgperl
+           ! Makefile.SH
+____________________________________________________________________________
+[  2642] By: jhi                                   on 1999/01/18  11:03:38
+        Log: GNU libc locale system has LANGUAGE env var that partly
+             overrides even LC_ALL.
+     Branch: cfgperl
+           ! t/lib/safe2.t t/op/groups.t t/op/mkdir.t
+____________________________________________________________________________
+[  2641] By: jhi                                   on 1999/01/18  10:55:04
+        Log: Integrate from mainperl.
+     Branch: cfgperl
+          +> ext/B/defsubs.h.PL
+           ! t/op/groups.t
+          !> (integrate 38 files)
+____________________________________________________________________________
+[  2640] By: gsar                                  on 1999/01/18  10:06:29
+        Log: a few random cleanups
+     Branch: perl
+           ! ext/B/Makefile.PL lib/Test/Harness.pm t/pragma/warn/doio
+____________________________________________________________________________
+[  2639] By: gsar                                  on 1999/01/18  05:56:21
+        Log: From:    "Vishal Bhatia" 
+             Date:    Sun, 17 Jan 1999 16:41:10 PST
+             Message-Id: <19990118004111.29667.qmail@hotmail.com>
+             Subject: [PATCH 5.005_54]Duplicate saved ops (CC.pm)
+     Branch: perl
+           ! ext/B/B/C.pm
+____________________________________________________________________________
+[  2638] By: gsar                                  on 1999/01/18  05:41:21
+        Log: From:    jan.dubois@ibm.net (Jan Dubois)
+             Date:    Mon, 18 Jan 1999 00:37:41 +0100
+             Message-Id: <36a271cd.2105507@smtp1.ibm.net>
+             Subject: [PATCH 5.005_54] fix bugs in do_sv_dump() from Devel::Peek integration
+     Branch: perl
+           ! dump.c
+____________________________________________________________________________
+[  2633] By: gsar                                  on 1999/01/17  13:39:59
+        Log: bogus assert()
+     Branch: perl
+           ! pp.c t/op/groups.t
+____________________________________________________________________________
+[  2632] By: gsar                                  on 1999/01/17  13:22:04
+        Log: various tweaks for clean build and test on win32
+     Branch: perl
+	   ! embed.h ext/B/Makefile.PL global.sym lib/FindBin.pm objXSUB.h
+           ! op.c t/pragma/warn/doio
+____________________________________________________________________________
+[  2631] By: gsar                                  on 1999/01/17  12:28:06
+        Log: undo change#2336, and add clarification about subversive
+             CPAN distributions from Andreas Koenig
+     Branch: perl
+           ! Porting/pumpkin.pod lib/CPAN.pm
+____________________________________________________________________________
+[  2630] By: gsar                                  on 1999/01/17  12:04:06
+        Log: fix silent taint failures under -U
+     Branch: perl
+           ! doio.c
+____________________________________________________________________________
+[  2629] By: gsar                                  on 1999/01/17  12:00:23
+        Log: sanity check piped opens (tweaked version of patch suggested
+             by Mark-Jason Dominus)
+     Branch: perl
+	   ! doio.c pod/perldelta.pod pod/perldiag.pod t/io/pipe.t
+           ! t/op/taint.t t/pragma/warn/doio
+____________________________________________________________________________
+[  2628] By: gsar                                  on 1999/01/17  11:26:21
+        Log: regen headers
+     Branch: perl
+           ! embed.h embedvar.h objXSUB.h
+____________________________________________________________________________
+[  2627] By: gsar                                  on 1999/01/17  11:23:37
+        Log: PERL_OBJECTness for change#2595
+     Branch: perl
+           ! embed.pl op.c pod/perlport.pod proto.h
+____________________________________________________________________________
+[  2626] By: gsar                                  on 1999/01/17  09:47:07
+        Log: PERL_OBJECT tweaks for change#2426
+     Branch: perl
+           ! embed.pl proto.h regcomp.c
+____________________________________________________________________________
+[  2625] By: gsar                                  on 1999/01/17  09:37:58
+        Log: documentation in change#2596 is not quite right; fix it
+     Branch: perl
+           ! lib/Math/BigFloat.pm pod/perlguts.pod
+____________________________________________________________________________
+[  2624] By: gsar                                  on 1999/01/17  09:28:34
+        Log: undo change#2571; C instead
+     Branch: perl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[  2623] By: gsar                                  on 1999/01/17  09:20:42
+        Log: change#2572 is not applicable; undo, retaining scan_bin addition
+             to global.sym
+     Branch: perl
+           ! global.sym perl.c proto.h
+____________________________________________________________________________
+[  2622] By: gsar                                  on 1999/01/17  09:17:42
+        Log: change#2576 is based on a wrong premise; undo it
+     Branch: perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[  2621] By: gsar                                  on 1999/01/17  09:12:42
+        Log: fix change#2602 to not used hard coded constants
+     Branch: perl
+           ! ext/B/B/C.pm ext/B/defsubs.h.PL
+____________________________________________________________________________
+[  2620] By: gsar                                  on 1999/01/17  09:02:07
+        Log: integrate cfgperl changes into mainline, fix conflicts
+     Branch: perl
+	  +> AUTHORS MAINTAIN README.mint ext/DynaLoader/hints/linux.pl
+	  +> ext/POSIX/hints/mint.pl hints/gnu.sh hints/mint.sh
+	  +> lib/Dumpvalue.pm mint/Makefile mint/README mint/errno.h
+	  +> mint/pwd.c mint/stdio.h mint/sys/time.h mint/time.h
+          +> pod/perlopentut.pod
+          !> (integrate 162 files)
+____________________________________________________________________________
+[  2619] By: gsar                                  on 1999/01/17  08:42:04
+        Log: a few doc typos
+     Branch: perl
+           ! lib/utf8.pm pod/perlfunc.pod pod/perlre.pod
 ____________________________________________________________________________
 [  2616] By: gbarr                                 on 1999/01/16  18:59:55
         Log: Win32 changes from Jan
@@ -1748,75 +21881,266 @@ ____________________________________________________________________________
 	   ! Configure Makefile.SH hints/netbsd.sh installperl
            ! makedepend.SH unixish.h
 ____________________________________________________________________________
-[  2613] By: gbarr                                 on 1999/01/16  16:28:40
-        Log: From: Laszlo Molnar 
-             Date: Thu, 14 Jan 1999 22:37:26 +0100
-             Message-ID: <19990114223726.A177@beeblebrox>
-             Subject: [PATCH for 5.005_03-MAINT_TRIAL_2] dos-djgpp update
-     Branch: maint-5.005/perl
-           ! djgpp/config.over djgpp/djgpp.c
-____________________________________________________________________________
-[  2612] By: gbarr                                 on 1999/01/16  16:27:25
-        Log: Hints for sco.sh to automatically support dynamic linking
-             
-             From: Peter Wolfe 
-             Date: Mon, 11 Jan 1999 11:50:20 -0800 (PST)
-             Message-Id: <199901111950.LAA01703@titan.teloseng.com>
-             Subject: SCO 3.2v5 patch for perl5.005_03-MAINT_TRIAL_1
-     Branch: maint-5.005/perl
-           ! hints/sco.sh
-____________________________________________________________________________
-[  2610] By: gbarr                                 on 1999/01/14  03:07:33
-        Log: Fix login in installperl for pods
-             
-             From: Robin Barker 
-             Date: Mon, 4 Jan 1999 13:50:10 GMT
-             Message-Id: <199901041350.NAA19665@cyclone.cise.npl.co.uk>
-             Subject: PATCH to installperl
-     Branch: maint-5.005/perl
-           ! installperl
-____________________________________________________________________________
-[  2609] By: gbarr                                 on 1999/01/14  03:04:37
-        Log: Fix incorrect "used only once" warnings
-             
-             From: Ilya Zakharevich 
-             Date: Fri, 8 Jan 1999 04:37:10 -0500
-             Message-ID: <19990108043710.A14390@monk.mps.ohio-state.edu>
-             Subject: Re: change#965 flakiness
-     Branch: maint-5.005/perl
-           ! gv.c
-____________________________________________________________________________
-[  2608] By: gbarr                                 on 1999/01/14  02:56:46
-        Log: Fixed double GLOB de-reference
-             
-             From: Gurusamy Sarathy 
-             Date: Sat, 09 Jan 1999 23:40:24 -0500
-             Message-Id: <199901100440.XAA12360@aatma.engin.umich.edu>
-             Subject: Re: IO::Pipe with perl -d (on HPUX)
-     Branch: maint-5.005/perl
-           ! ext/IO/lib/IO/Pipe.pm
+[  2611] By: jhi                                   on 1999/01/14  12:16:14
+        Log: From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: perlopentut.pod
+             Date: Sat, 09 Jan 1999 08:13:18 -0700
+             Message-Id: <199901091513.IAA17512@jhereg.perl.com>
+     Branch: cfgperl
+           + pod/perlopentut.pod
+           ! MANIFEST pod/perl.pod pod/perldelta.pod pod/roffitall
 ____________________________________________________________________________
 [  2607] By: gbarr                                 on 1999/01/14  02:53:40
         Log: Added Carp::cluck to perldelta.pod
      Branch: maint-5.005/perl
            ! pod/perldelta.pod
 ____________________________________________________________________________
-[  2606] By: gbarr                                 on 1999/01/14  02:44:04
-        Log: New perlfaq*.pod from Tom (private mail)
-     Branch: maint-5.005/perl
+[  2605] By: jhi                                   on 1999/01/13  18:26:19
+        Log: From: "Jonathan Fine (IT- Borders Online)" 
+             To: "'cpan@perl.org'" 
+             Subject: "Bug" fix for File::Find.pm
+             Date:   Thu, 31 Dec 1998 13:01:50 -0500
+             Message-ID: <311F144DB5E5D011B03F00805FE954B10708BE17@exchange01_ph.borders.com>
+     Branch: cfgperl
+           ! lib/File/Find.pm
+____________________________________________________________________________
+[  2604] By: jhi                                   on 1999/01/13  18:08:45
+        Log: From: Peter Wolfe 
+             Subject: SCO 3.2v5 patch for perl5.005_03-MAINT_TRIAL_1
+             To: perlbug@perl.com
+             Date: 11 Jan 1999 23:00:05 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! hints/sco.sh
+____________________________________________________________________________
+[  2603] By: jhi                                   on 1999/01/13  18:06:56
+        Log: From: hans@icgroup.nl (Hans Mulder)
+             Subject: [Patch for 5.005_54] re::debugcolors dumps core
+             To: perlbug@perl.com
+             Cc: hansmu@xs4all.nl
+             Date: 11 Jan 1999 22:22:45 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! ext/re/re.pm regcomp.c
+____________________________________________________________________________
+[  2602] By: jhi                                   on 1999/01/13  18:05:43
+        Log: From: "Vishal Bhatia" 
+             Subject: [PATCH 5.005_54]B::MAGIC::PTR doesnot check for valid length.
+             Date: 11 Jan 1999 08:02:41 +0200
+             Lines: 134
+             Message-ID: 
+     Branch: cfgperl
+           ! ext/B/B.xs ext/B/B/C.pm
+____________________________________________________________________________
+[  2601] By: jhi                                   on 1999/01/13  18:01:53
+        Log: From: James FitzGibbon 
+             Subject: Trivial patch for HP-UX 11 and shared libperl
+             To: perl5-porters@perl.org
+             Date: 8 Jan 1999 19:13:23 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! Makefile.SH
+____________________________________________________________________________
+[  2600] By: jhi                                   on 1999/01/13  17:59:45
+        Log: From: "Vishal Bhatia" 
+             Subject: [PATCH 5.005_54] B::CC::pp_rv2cv problem
+             To: perl5-porters@perl.org
+             Date: 8 Jan 1999 12:43:36 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! ext/B/B/CC.pm
+____________________________________________________________________________
+[  2599] By: jhi                                   on 1999/01/13  17:50:11
+        Log: From: Robin Barker 
+             Subject: PATCH to installperl
+             To: perl5-porters@perl.org
+             Date: 4 Jan 1999 16:15:18 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! installperl
+____________________________________________________________________________
+[  2598] By: jhi                                   on 1999/01/13  17:34:51
+        Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             To: gsar@engin.umich.edu (Gurusamy Sarathy), gbarr@pobox.com
+             Cc: perl5-porters@perl.org
+             Subject: PATCH DB_File 1.63 for 5.005_54 & 5.005_03
+             Date: Tue, 29 Dec 1998 16:23:54 +0000 (GMT)
+             Message-Id: <9812291623.AA20884@claudius.bfsec.bt.co.uk>
+     Branch: cfgperl
+	   ! ext/DB_File/Changes ext/DB_File/DB_File.pm
+           ! ext/DB_File/DB_File.xs ext/DB_File/dbinfo ext/DB_File/typemap
+____________________________________________________________________________
+[  2597] By: jhi                                   on 1999/01/13  17:30:33
+        Log: From: David Dyck 
+             To: Perl Porters ,
+             Gurusamy Sarathy 
+             Subject: PATCH to perl5.005_54/pod/perldsc.pod (fix typo)
+             Date: Tue, 12 Jan 1999 11:14:19 -0800 (PST)
+             Message-ID: 
+     Branch: cfgperl
+           ! pod/perldsc.pod
+____________________________________________________________________________
+[  2596] By: jhi                                   on 1999/01/13  17:26:44
+        Log: From: Joshua Pritikin 
+             To: perl5-porters@perl.org
+             Subject: [PATCH] modglobal w/ spelling fixes
+             Date: Tue, 12 Jan 1999 18:06:01 -0500 (EST)
+             Message-ID: 
+     Branch: cfgperl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[  2595] By: jhi                                   on 1999/01/13  17:24:59
+        Log: From: Hans Mulder 
+             Optimize common sort routines.  Thread started by the message
+             
+             From: Hans Mulder 
+             Sender: owner-perl5-porters@perl.org
+             To: perl5-porters@perl.org
+             Subject: [Patch for 5.00554] From the Todo list: Optimize sort by { $a <=> $b
+             Message-Id: <9901092156.AA03831@icgned.icgroup.nl>
+             
+             and the patch from the message
+             
+             From: Hans Mulder 
+             To: jhi@iki.fi
+             Cc: perl5-porters@perl.org
+             Subject: Re: [Patch for 5.00554] From the Todo list: Optimize sort by { $a <=>
+             $b }
+             Date: Wed, 13 Jan 1999 17:39:35 +0100
+             Message-Id: <9901131639.AA17419@icgned.icgroup.nl>
+     Branch: cfgperl
+           ! Todo op.c op.h pp_ctl.c t/op/sort.t
+____________________________________________________________________________
+[  2594] By: jhi                                   on 1999/01/13  16:50:17
+        Log: Atari MiNT port by Guido Flohr 
+             (the diffs were based on 5.004_02).  Tested by Guido
+             and Frank Naumann .
+     Branch: cfgperl
+	   + README.mint ext/POSIX/hints/mint.pl hints/mint.sh
+	   + mint/Makefile mint/README mint/errno.h mint/pwd.c mint/stdio.h
+           + mint/sys/time.h mint/time.h
+	   ! MANIFEST doio.c malloc.c miniperlmain.c perl.c t/io/fs.t
+           ! t/lib/safe2.t t/op/groups.t t/op/mkdir.t t/op/taint.t util.c
+____________________________________________________________________________
+[  2593] By: jhi                                   on 1999/01/09  16:54:26
+        Log: Detypo.
+     Branch: cfgperl
+           ! hints/dec_osf.sh
+____________________________________________________________________________
+[  2592] By: jhi                                   on 1999/01/09  16:17:13
+        Log: Move usethreads and use64bits logic from hints to Configure.
+     Branch: cfgperl
+	   ! Configure hints/README.hints hints/aix.sh hints/dec_osf.sh
+	   ! hints/dos_djgpp.sh hints/freebsd.sh hints/hpux.sh
+	   ! hints/irix_6.sh hints/irix_6_0.sh hints/irix_6_1.sh
+           ! hints/linux.sh hints/os2.sh hints/solaris_2.sh hints/vmesa.sh
+____________________________________________________________________________
+[  2591] By: jhi                                   on 1999/01/09  14:45:24
+        Log: Missing dTHRs added.
+     Branch: cfgperl
+           ! regcomp.c toke.c
+____________________________________________________________________________
+[  2590] By: jhi                                   on 1999/01/08  15:27:17
+        Log: Finalize change #2589 and add better AIX nm scanning from:
+             
+             Message-Id: 
+             From: bll@gentoo.com (Brad Lanam)
+             Subject: Re: mailhelp returned a non-zero status
+             In-Reply-To: <199901072155.WAA14369@hptnocou.grenoble.hp.com> from Raphael Manfredi at "Jan 7, 1999 10:55:24 pm"
+             To: ram@hptnocou.grenoble.hp.com (Raphael Manfredi)
+     Branch: cfgperl
+           ! Configure hints/freebsd.sh hints/linux.sh
+____________________________________________________________________________
+[  2589] By: jhi                                   on 1999/01/08  15:14:54
+        Log: Undo change #2581.
+     Branch: cfgperl
+           ! Configure hints/freebsd.sh hints/linux.sh
+____________________________________________________________________________
+[  2588] By: jhi                                   on 1999/01/08  11:51:52
+        Log: FAQ jumbo patch from tchrist.
+             
+             Message-Id: <199901080605.XAA20229@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq.pod
+             Date: Thu, 7 Jan 1999 23:05:02 -0700
+             
+             Message-Id: <199901080605.XAA20231@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq1.pod
+             Date: Thu, 7 Jan 1999 23:05:02 -0700
+             
+             Message-Id: <199901080605.XAA20233@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq2.pod
+             Date: Thu, 7 Jan 1999 23:05:02 -0700
+             
+             Message-Id: <199901080605.XAA20235@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq3.pod
+             Date: Thu, 7 Jan 1999 23:05:02 -0700
+             
+             Message-Id: <199901080605.XAA20237@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq4.pod
+             Date: Thu, 7 Jan 1999 23:05:02 -0700
+             
+             Message-Id: <199901080605.XAA20239@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq5.pod
+             Date: Thu, 7 Jan 1999 23:05:02 -0700
+             
+             Message-Id: <199901080605.XAA20241@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq6.pod
+             Date: Thu, 7 Jan 1999 23:05:02 -0700
+             
+             Message-Id: <199901080605.XAA20243@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq7.pod
+             Date: Thu, 7 Jan 1999 23:05:03 -0700
+             
+             Message-Id: <199901080605.XAA20245@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq8.pod
+             Date: Thu, 7 Jan 1999 23:05:03 -0700
+             
+             Message-Id: <199901080605.XAA20257@jhereg.perl.com>
+             From: Tom Christiansen 
+             To: pumpkings@jhereg.perl.com
+             Subject: newest version of perlfaq9.pod
+             Date: Thu, 7 Jan 1999 23:05:03 -0700
+     Branch: cfgperl
 	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
 	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
 	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
            ! pod/perlfaq9.pod
 ____________________________________________________________________________
-[  2584] By: gbarr                                 on 1999/01/08  04:50:56
-        Log: implemented Ilya's suggested fix, and added a testcase
+[  2587] By: jhi                                   on 1999/01/08  11:17:43
+        Log: More doc fixes from Abigail.
+     Branch: cfgperl
+	   ! lib/Time/gmtime.pm lib/Time/localtime.pm lib/User/grent.pm
+           ! lib/User/pwent.pm
+____________________________________________________________________________
+[  2585] By: jhi                                   on 1999/01/08  08:31:02
+        Log: Change #2584 from maint-5.005:
+             
+             implemented Ilya's suggested fix, and added a testcase
              
              From: Ilya Zakharevich 
              Date: Tue, 5 Jan 1999 00:56:01 -0500 (EST)
              Message-Id: <199901050556.AAA02597@monk.mps.ohio-state.edu>
              Subject: Re: Text::ParseWords: regex fix
-     Branch: maint-5.005/perl
+     Branch: cfgperl
            ! lib/Text/ParseWords.pm t/lib/parsewords.t
 ____________________________________________________________________________
 [  2583] By: gbarr                                 on 1999/01/08  04:50:03
@@ -1827,41 +22151,23 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! ext/Errno/Errno_pm.PL
 ____________________________________________________________________________
-[  2582] By: gbarr                                 on 1999/01/08  03:37:55
-        Log: More doc changes from Abigail, and included change #2575 from cfgperl
-             
-             From: abigail@fnx.com
-             Message-ID: <19990107041434.22326.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL2 lib/Time/gmtime.pm] Typo fix
-             Date: Wed, 6 Jan 1999 23:14:34 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-ID: <19990107041746.22376.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL2 lib/Time/localtime.pm] Typo fix
-             Date: Wed, 6 Jan 1999 23:17:46 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-ID: <19990107042105.22527.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL2 lib/User/grent.pm] Typo fix
-             Date: Wed, 6 Jan 1999 23:21:05 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-ID: <19990107042254.22624.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL2 lib/User/pwent.pw] Typo fix
-             Date: Wed, 6 Jan 1999 23:22:54 -0500 (EST)
-     Branch: maint-5.005/perl
-	   ! lib/Math/Trig.pm lib/Time/gmtime.pm lib/Time/localtime.pm
-           ! lib/User/grent.pm lib/User/pwent.pm
+[  2581] By: jhi                                   on 1999/01/07  16:38:03
+        Log: Configure update:
+             - usethreads, use64bits, and usemultiplicity
+             are no more interactively asked by Configure
+             - "int main()" (vs bare "main()") enforced in test programs
+     Branch: cfgperl
+           ! Configure hints/freebsd.sh hints/linux.sh
 ____________________________________________________________________________
-[  2578] By: gbarr                                 on 1999/01/07  04:30:26
+[  2580] By: jhi                                   on 1999/01/07  11:19:12
         Log: From: Dan Sugalski 
              Date: Wed, 06 Jan 1999 13:47:34 -0800
              Message-Id: <3.0.6.32.19990106134734.0334d260@ous.edu>
              Subject: [PATCH 5.005_02-MT2, 5.005_5x]VMS.C tweak for occasional system() error
-     Branch: maint-5.005/perl
+     Branch: cfgperl
            ! vms/vms.c
 ____________________________________________________________________________
-[  2577] By: gbarr                                 on 1999/01/07  04:26:28
+[  2579] By: jhi                                   on 1999/01/07  09:08:36
         Log: Another set of doc patches from Abigail
              
              From: abigail@fnx.com
@@ -1933,64 +22239,85 @@ ____________________________________________________________________________
              Message-ID: <19990107041136.22174.qmail@alexandra.wayne.fnx.com>
              Subject: [PATCH 5.005_03 TRIAL2 lib/Tie/Hash.pm] Typo fix
              Date: Wed, 6 Jan 1999 23:11:36 -0500 (EST)
-     Branch: maint-5.005/perl
+     Branch: cfgperl
 	   ! lib/CGI/Apache.pm lib/CGI/Push.pm lib/File/Copy.pm
 	   ! lib/File/Spec.pm lib/File/Spec/Mac.pm lib/Math/BigFloat.pm
 	   ! lib/Math/BigInt.pm lib/Net/hostent.pm lib/Net/netent.pm
 	   ! lib/Term/Complete.pm lib/Term/ReadLine.pm lib/Text/Wrap.pm
            ! lib/Tie/Array.pm lib/Tie/Hash.pm
 ____________________________________________________________________________
-[  2568] By: gbarr                                 on 1999/01/06  03:13:15
-        Log: From: jan.dubois@ibm.net (Jan Dubois)
-             Date: Wed, 06 Jan 1999 01:24:09 +0100
-             Message-ID: <3696aa85.18259325@smtp1.ibm.net>
-             Subject: [PATCH 5.005_03-MAINT_TRIAL2] fixes for PERL_OBJECT and USE_THREADS builds
-     Branch: maint-5.005/perl
-	   ! embed.h global.sym objXSUB.h objpp.h perl.c proto.h
-           ! win32/GenCAPI.pl win32/makedef.pl
+[  2576] By: jhi                                   on 1999/01/06  17:05:20
+        Log: Change #2582 fallout: the amagic_cmp* are no more file static.
+     Branch: cfgperl
+           ! pp_ctl.c
 ____________________________________________________________________________
-[  2567] By: gbarr                                 on 1999/01/06  02:31:28
-        Log: From: Dan Sugalski 
-             Date: Tue, 05 Jan 1999 16:47:31 -0800
-             Message-Id: <3.0.6.32.19990105164731.00b5b2d0@ous.edu>
-             Subject: [PATCH 5.005_03-MAINT_TRIAL_2]taint.c fix for VMS
-     Branch: maint-5.005/perl
-           ! taint.c
+[  2575] By: jhi                                   on 1999/01/06  13:18:56
+        Log: Enhance the great_circle_distance() documentation.
+     Branch: cfgperl
+           ! lib/Math/Trig.pm
 ____________________________________________________________________________
-[  2566] By: gbarr                                 on 1999/01/06  02:29:05
-        Log: From: "W. Phillip Moore" 
-             Date: Tue, 5 Jan 1999 12:40:27 -0500 (EST)
-             Message-ID: <13970.20107.190314.549471@zappa>
-             Subject: [PATCH] POSIX getpgrp is not -w clean
-     Branch: maint-5.005/perl
-           ! ext/POSIX/POSIX.pm
-____________________________________________________________________________
-[  2565] By: gbarr                                 on 1999/01/06  02:19:00
-        Log: From: Slaven Rezic 
-             Date: Mon, 4 Jan 1999 23:01:46 +0100 (CET)
-             Message-Id: <199901042201.XAA01875@cabulja.herceg.de>
-             Subject: FindBin.pm on Win32 systems
-     Branch: maint-5.005/perl
-           ! lib/FindBin.pm
-____________________________________________________________________________
-[  2564] By: gbarr                                 on 1999/01/06  02:13:23
+[  2574] By: jhi                                   on 1999/01/06  12:58:03
         Log: From: Mark Bixby 
+             To: perlbug@perl.com
+             Subject: [PATCH 5.005_03-MAINT_TRIAL_2] t/op/sysio.t for MPE/iX
              Date: Mon, 4 Jan 1999 13:34:58 -0800 (PST)
              Message-Id: <199901042134.NAA18852@spock.dis.cccd.edu>
-             Subject: [PATCH 5.005_03-MAINT_TRIAL_2] t/op/sysio.t for MPE/iX
-     Branch: maint-5.005/perl
+     Branch: cfgperl
            ! t/op/sysio.t
 ____________________________________________________________________________
-[  2563] By: gbarr                                 on 1999/01/06  02:03:44
-        Log: From: Jarkko Hietaniemi 
-             Date: Mon, 4 Jan 1999 19:25:03 +0200 (EET)
-             Message-Id: <199901041725.TAA30462@alpha.hut.fi>
-             Subject: [PATCH] 5.005_03-MAINT_TRIAL_2: undo untrue HP-UX 64-bitness (mostly harmless but misleading)
-     Branch: maint-5.005/perl
-           ! hints/hpux.sh
+[  2573] By: jhi                                   on 1999/01/06  12:40:19
+        Log: From: "W. Phillip Moore" 
+             To: perlbug@perl.org
+             Subject: [PATCH] POSIX getpgrp is not -w clean
+             Date: Tue, 5 Jan 1999 12:40:27 -0500 (EST)
+             Message-ID: <13970.20107.190314.549471@zappa>
+     Branch: cfgperl
+           ! ext/POSIX/POSIX.pm
 ____________________________________________________________________________
-[  2562] By: gbarr                                 on 1999/01/06  02:02:18
-        Log: Jumbo doc patch from Abigail
+[  2572] By: jhi                                   on 1999/01/06  12:25:24
+        Log: Based on
+             From: jan.dubois@ibm.net (Jan Dubois)
+             To: perl5-porters@perl.org
+             Subject: [PATCH 5.005_03-MAINT_TRIAL2] fixes for PERL_OBJECT and USE_THREADS builds
+             Date: Wed, 06 Jan 1999 01:24:09 +0100
+             Message-ID: <3696aa85.18259325@smtp1.ibm.net>
+             except that
+             - objXSUB.h was already okay
+             - embed.h patching is futile, global.sym patched instead
+             - objpp.h does not exist
+             - proto.h addition applied manually
+             - win32/GenCAPI.pl was already okay
+             - win32/makedef.pl was already okay
+     Branch: cfgperl
+           ! global.sym perl.c proto.h
+____________________________________________________________________________
+[  2571] By: jhi                                   on 1999/01/06  11:25:48
+        Log: From: Slaven Rezic 
+             To: perlbug@perl.com
+             Subject: FindBin.pm on Win32 systems
+             Date: Mon, 4 Jan 1999 23:01:46 +0100 (CET)
+             Message-Id: <199901042201.XAA01875@cabulja.herceg.de>
+     Branch: cfgperl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[  2570] By: jhi                                   on 1999/01/06  11:21:48
+        Log: From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [PATCH 5.005_03-MAINT_TRIAL_2]taint.c fix for VMS
+             Date: Tue, 05 Jan 1999 16:47:31 -0800
+             Message-Id: <3.0.6.32.19990105164731.00b5b2d0@ous.edu>
+             
+             (the ext/IO/lib/IO/Socket.pm was not really changed here;
+             it was a leftover from #2569)
+     Branch: cfgperl
+           ! ext/IO/lib/IO/Socket.pm taint.c
+____________________________________________________________________________
+[  2569] By: jhi                                   on 1999/01/06  11:18:22
+        Log: Jumbo doc patch from Abigail (almost identical to
+             the 5.005-maint change #2562 except for the
+             ext/IO/lib/IO/Socket.pm patch which was not
+             applicable because the IO version of 5.005-devel
+             is somewhat different (why?))
              
              From: abigail@fnx.com
              Message-ID: <19990105170142.4889.qmail@alexandra.wayne.fnx.com>
@@ -2041,23 +22368,42 @@ ____________________________________________________________________________
              Message-ID: <19990106012047.9459.qmail@alexandra.wayne.fnx.com>
              Subject: [PATCH 5.005_03 TRAIL2 lib/IO/Seekable.pm] Typo fixes
              Date: Tue, 5 Jan 1999 20:20:47 -0500 (EST)
-             
-             From: abigail@fnx.com
-             Message-ID: <19990106012338.9536.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_03 TRIAL2 lib/IO/Socket.pm] Typo fix
-             Date: Tue, 5 Jan 1999 20:23:38 -0500 (EST)
-     Branch: maint-5.005/perl
+     Branch: cfgperl
 	   ! ext/IO/lib/IO/Pipe.pm ext/IO/lib/IO/Seekable.pm
-	   ! ext/IO/lib/IO/Socket.pm lib/ExtUtils/Command.pm
-	   ! lib/ExtUtils/Embed.pm lib/ExtUtils/Install.pm
-	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
-           ! lib/ExtUtils/Mksymlists.pm
+	   ! lib/ExtUtils/Command.pm lib/ExtUtils/Embed.pm
+	   ! lib/ExtUtils/Install.pm lib/ExtUtils/Liblist.pm
+	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+           ! lib/ExtUtils/Manifest.pm lib/ExtUtils/Mksymlists.pm
 ____________________________________________________________________________
-[  2560] By: gbarr                                 on 1999/01/03  16:59:01
-        Log: Trial release 2
+[  2568] By: gbarr                                 on 1999/01/06  03:13:15
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Wed, 06 Jan 1999 01:24:09 +0100
+             Message-ID: <3696aa85.18259325@smtp1.ibm.net>
+             Subject: [PATCH 5.005_03-MAINT_TRIAL2] fixes for PERL_OBJECT and USE_THREADS builds
      Branch: maint-5.005/perl
-           ! Changes patchlevel.h
+	   ! embed.h global.sym objXSUB.h objpp.h perl.c proto.h
+           ! win32/GenCAPI.pl win32/makedef.pl
+____________________________________________________________________________
+[  2566] By: gbarr                                 on 1999/01/06  02:29:05
+        Log: From: "W. Phillip Moore" 
+             Date: Tue, 5 Jan 1999 12:40:27 -0500 (EST)
+             Message-ID: <13970.20107.190314.549471@zappa>
+             Subject: [PATCH] POSIX getpgrp is not -w clean
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.pm
+____________________________________________________________________________
+[  2565] By: gbarr                                 on 1999/01/06  02:19:00
+        Log: From: Slaven Rezic 
+             Date: Mon, 4 Jan 1999 23:01:46 +0100 (CET)
+             Message-Id: <199901042201.XAA01875@cabulja.herceg.de>
+             Subject: FindBin.pm on Win32 systems
+     Branch: maint-5.005/perl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[  2561] By: jhi                                   on 1999/01/05  10:49:10
+        Log: Reword the setlocale() 1-arg case better.
+     Branch: cfgperl
+           ! ext/POSIX/POSIX.pod
 ____________________________________________________________________________
 [  2559] By: gbarr                                 on 1999/01/02  15:37:35
         Log: From: Blair Zajac 
@@ -2067,20 +22413,46 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! lib/Tie/SubstrHash.pm
 ____________________________________________________________________________
-[  2558] By: gbarr                                 on 1999/01/02  15:30:01
-        Log: integrate change #2544
-             
-             From: Tim Bunce  
-             Subject: bug in pod2man search for perl binary [5.005_5x]
-             Date: Sat, 12 Dec 1998 23:08:51 +0000 
-             Message-ID: <19981212230851.A20578@ig.co.uk> 
-     Branch: maint-5.005/perl
-          !> pod/pod2man.PL
+[  2554] By: jhi                                   on 1999/01/02  14:55:06
+        Log: Object destruction order testing.
+     Branch: cfgperl
+           ! t/op/misc.t
 ____________________________________________________________________________
-[  2557] By: gbarr                                 on 1999/01/02  15:20:42
-        Log: integrate change #2548
-             
-             From: Hugo van der Sanden 
+[  2553] By: jhi                                   on 1999/01/02  14:49:40
+        Log: perldelta the Dumpvalue.pm of change #2513.
+     Branch: cfgperl
+           ! lib/Dumpvalue.pm pod/perldelta.pod
+____________________________________________________________________________
+[  2552] By: nick                                  on 1999/01/02  14:45:38
+        Log: Tone down Makefile.PL so it works on Win32
+     Branch: perl
+           ! ext/B/Makefile.PL
+____________________________________________________________________________
+[  2551] By: nick                                  on 1999/01/02  14:06:30
+        Log: Export constant subs from B.xs for op.h, cop.h and a few others.
+             Use them in various B::* rather than have local defs.
+     Branch: perl
+           + ext/B/defsubs.h.PL
+	   ! ext/B/B.pm ext/B/B.xs ext/B/B/Bytecode.pm ext/B/B/C.pm
+	   ! ext/B/B/CC.pm ext/B/B/Deparse.pm ext/B/B/Lint.pm
+           ! ext/B/B/Stackobj.pm ext/B/B/Xref.pm ext/B/Makefile.PL
+____________________________________________________________________________
+[  2550] By: nick                                  on 1999/01/02  10:04:02
+        Log: Integrate ext/B changes from //depot/cfgperl
+     Branch: perl
+          !> ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm ext/B/B/Stackobj.pm
+____________________________________________________________________________
+[  2549] By: jhi                                   on 1999/01/01  13:54:16
+        Log: From: "Paul Holser" 
+             To: perlbug@perl.com
+             Subject: op/groups.t fails test 1 on HP-UX 10.20
+             Date: Wed, 30 Dec 1998 15:16:12 -0600 (CST)
+             Message-Id: <199812302116.PAA12439@crchh44c.us.nortel.com>
+     Branch: cfgperl
+           ! t/op/groups.t
+____________________________________________________________________________
+[  2548] By: jhi                                   on 1999/01/01  13:53:31
+        Log: From: Hugo van der Sanden 
              To: perl5-porters@perl.org
              cc: hv@crypt0.demon.co.uk
              Subject: [bug 5.004_54] duplicate error message
@@ -2100,75 +22472,47 @@ ____________________________________________________________________________
              cc: hv@crypt0.demon.co.uk, perl5-porters@perl.org
              Subject: [TEST PATCH _54] Re: duplicate error message 
              Date: Fri, 01 Jan 1999 07:32:14 +0000
-     Branch: maint-5.005/perl
-           ! op.c t/pragma/warn-1global taint.c
+     Branch: cfgperl
+           ! op.c t/pragma/warn/op
 ____________________________________________________________________________
-[  2556] By: gbarr                                 on 1999/01/02  15:18:58
-        Log: From: abigail@fnx.com
-             Date: Mon, 28 Dec 1998 14:16:12 -0500 (EST)
-             Message-ID: <19981228191612.8380.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_02; lib/fields.pm] Typos in pod.
-     Branch: maint-5.005/perl
-           ! lib/fields.pm
-____________________________________________________________________________
-[  2555] By: gbarr                                 on 1999/01/02  15:11:45
-        Log: intregrate change #2547
-             
-             From: Chris Nandor 
+[  2547] By: jhi                                   on 1998/12/31  14:15:04
+        Log: From: Chris Nandor 
+             To: jhi@iki.fi
+             Cc: perl5-porters@perl.org
              Subject: Re: [PATCH] perlport.pod 1.38
              Date: Thu, 31 Dec 1998 09:06:48 -0500
              Message-Id: 
-     Branch: maint-5.005/perl
-          !> pod/perlport.pod
+     Branch: cfgperl
+           ! pod/perlport.pod
 ____________________________________________________________________________
-[  2543] By: gbarr                                 on 1998/12/31  06:17:13
-        Log: integrated relevant parts og changes #2385 & #2387 from mainline
-             
-             various fixes for race conditions under threads: mutex locks based
-             on PL_threadnum were seriously flawed, since it means more than one
-             thread could enter the critical region; PL_na was global instead of
-             thread-local; child thread could finish and free thr structures
-             before Thread->new() got around to creating the Thread object;
-             cv_clone() needed locking, as it mucks with PL_comppad and other
-             global data; new_struct_thread() needed to lock template-thread's
-             mutex while copying its data
-             
-             another threads reliability fix: serialize writes to thr->threadsv
-             avoid most uses of PL_na (which is much more inefficient than a
-             simple local); update docs to suit; PL_na now being thr->Tna may
-             be a minor compatibility issue for extensions--will require dTHR
-             outside of XSUBs (those get automatic dTHR)
-     Branch: maint-5.005/perl
-	   ! XSUB.h djgpp/djgpp.c doio.c doop.c dump.c embedvar.h
-	   ! ext/DynaLoader/dl_next.xs ext/IO/IO.xs ext/Opcode/Opcode.xs
-	   ! ext/POSIX/POSIX.xs ext/Thread/Thread.xs ext/attrs/attrs.xs
-	   ! gv.c malloc.c mg.c objXSUB.h op.c os2/OS2/REXX/REXX.xs
-	   ! os2/os2.c perl.c perlvars.h perly.c perly.y pod/perlcall.pod
-	   ! pod/perlembed.pod pod/perlguts.pod pod/perlxs.pod pp.c pp.h
-	   ! pp_ctl.c pp_hot.c pp_sys.c run.c sv.c taint.c thread.h toke.c
-	   ! universal.c util.c vms/ext/Stdio/Stdio.xs vms/perly_c.vms
-           ! vms/vms.c win32/win32.c win32/win32thread.c
+[  2546] By: jhi                                   on 1998/12/31  11:18:17
+        Log: From: Wilson P. Snyder II
+             To: perl5-porters@perl.org
+             Subject: [PATCH v5.5.53] REV2: Binary number support
+             Date: 1998/11/30
+             Message-ID: <199811301543.KAA15689@vulcan.maker.com>
+     Branch: cfgperl
+	   ! pod/perldata.pod pod/perldelta.pod pod/perlfunc.pod pp.c
+	   ! proto.h sv.c t/op/oct.t t/op/sprintf.t t/pragma/warn/util
+           ! toke.c util.c
 ____________________________________________________________________________
-[  2542] By: gbarr                                 on 1998/12/30  14:46:40
-        Log: doc updates
-             
-             From: abigail@fnx.com
-             Date: Wed, 23 Dec 1998 22:32:07 -0500 (EST)
-             Message-ID: <19981224033207.16751.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_02] Typo in documentation of pod2html.
-             
-             From: abigail@fnx.com
-             Date: Wed, 23 Dec 1998 22:59:59 -0500 (EST)
-             Message-ID: <19981224035959.16994.qmail@alexandra.wayne.fnx.com>
-             Subject: [PATCH 5.005_02] Re: m// doc is buggy (was Re: m'$foo' is undocumented)
-             
-             pod/perldelta.pod from:
-             From: Jarkko Hietaniemi 
-             Date: Thu, 17 Dec 1998 16:13:34 +0200 (EET)
-             Message-ID: <13945.4494.140163.973953@alpha.hut.fi>
-             Subject: Re: important UNDOC issues for 5.005_54
-     Branch: maint-5.005/perl
-           ! pod/perldelta.pod pod/perlop.pod pod/pod2html.PL
+[  2545] By: jhi                                   on 1998/12/31  09:27:40
+        Log: From: "Todd C. Miller" 
+             To: perlbug@perl.com
+             Subject: "perl -T -P" dumps core on OpenBSD and Linux
+             Date: Wed, 30 Dec 1998 21:11:05 -0700 (MST)
+             Message-Id: <199812310411.VAA37568@xerxes.courtesan.com>
+     Branch: cfgperl
+           ! taint.c
+____________________________________________________________________________
+[  2544] By: jhi                                   on 1998/12/31  09:21:45
+        Log: From: Tim Bunce  
+             To: perlbug@perl.com 
+             Subject: bug in pod2man search for perl binary [5.005_5x]
+             Date: Sat, 12 Dec 1998 23:08:51 +0000 
+             Message-ID: <19981212230851.A20578@ig.co.uk> 
+     Branch: cfgperl
+           ! pod/pod2man.PL
 ____________________________________________________________________________
 [  2541] By: gbarr                                 on 1998/12/30  14:37:14
         Log: From: jan.dubois@ibm.net (Jan Dubois)
@@ -2178,40 +22522,24 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! lib/ExtUtils/MakeMaker.pm
 ____________________________________________________________________________
-[  2538] By: gbarr                                 on 1998/12/29  14:41:29
-        Log: From: Jarkko Hietaniemi 
-             Date: Tue, 22 Dec 1998 10:57:48 +0200 (EET)
-             Message-ID: <13951.24332.932827.831376@alpha.hut.fi>
-             Subject: Re: x operator broken in DEC Alpha for 8-bit characters (Re: Digest-MD5-2.00 test fails on DEC Alpha - a patch)
-     Branch: maint-5.005/perl
-           ! t/op/repeat.t util.c
+[  2540] By: jhi                                   on 1998/12/30  08:42:04
+        Log: Evermore AUTHORS and MAINTAIN.
+     Branch: cfgperl
+           ! AUTHORS MAINTAIN
 ____________________________________________________________________________
-[  2535] By: gbarr                                 on 1998/12/29  14:27:56
-        Log: From: Jarkko Hietaniemi 
-             Date: Fri, 18 Dec 1998 16:39:27 +0200 (EET)
-             Message-ID: <13946.26911.140905.387070@alpha.hut.fi>
-             Subject: Math::Trig, Math::Complex, Fcntl, addressed (Re: Undocumentation Issues for 5.005)
-     Branch: maint-5.005/perl
-           ! pod/perldelta.pod
+[  2539] By: jhi                                   on 1998/12/29  15:10:34
+        Log: More AUTHORS and MAINTAIN.
+     Branch: cfgperl
+           ! AUTHORS MAINTAIN
 ____________________________________________________________________________
-[  2534] By: gbarr                                 on 1998/12/29  14:23:02
-        Log: From: Jarkko Hietaniemi 
-             Date: Tue, 15 Dec 1998 17:52:32 +0200 (EET)
-             Message-ID: <13942.34240.66558.169330@alpha.hut.fi>
-             Subject: some doc link fixes
-     Branch: maint-5.005/perl
-	   ! pod/perlcall.pod pod/perldata.pod pod/perldiag.pod
-	   ! pod/perlfaq5.pod pod/perlfaq7.pod pod/perlfunc.pod
-	   ! pod/perlguts.pod pod/perllocale.pod pod/perlobj.pod
-           ! pod/perlsub.pod pod/perlvar.pod
-____________________________________________________________________________
-[  2533] By: gbarr                                 on 1998/12/29  14:23:00
-        Log: From: Chris Nandor 
-             Date: Sat, 19 Dec 1998 12:54:34 -0500
-             Message-Id: 
-             Subject: [PATCH] perlport.pod v1.37
-     Branch: maint-5.005/perl
-           ! pod/perlport.pod
+[  2537] By: jhi                                   on 1998/12/29  14:34:47
+        Log: From: Frank Ridderbusch 
+             Date: Tue, 15 Dec 1998 16:23:12 +0100 (MET)
+             Message-ID: <13942.32480.700000.640927@utensil>
+             Subject: Minor Bug in AutoSplit.qm in 5.005 and 5.004
+             (mirror change#2531 in the 5.005-maint)
+     Branch: cfgperl
+           ! lib/AutoSplit.pm
 ____________________________________________________________________________
 [  2531] By: gbarr                                 on 1998/12/29  14:12:25
         Log: change in_pod pattern to /^=\w/ from /^=/
@@ -2222,53 +22550,113 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! lib/AutoSplit.pm
 ____________________________________________________________________________
-[  2530] By: gbarr                                 on 1998/12/29  14:09:51
-        Log: undo the "perlsyn intrusion" into perlfunc
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod
+[  2525] By: jhi                                   on 1998/12/29  13:06:26
+        Log: From: "Vishal Bhatia" 
+             To: perl5-porters@perl.org
+             Subject: [PATCH 5.005_54] More minor  Fixes in CC.pm/C.pm
+             Date: 16 Dec 1998 03:17:03 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! ext/B/B/C.pm ext/B/B/CC.pm ext/B/B/Stackobj.pm
 ____________________________________________________________________________
-[  2529] By: gbarr                                 on 1998/12/29  14:04:35
-        Log: From: Jarkko Hietaniemi 
-             Date: Sun, 13 Dec 1998 14:54:56 +0200 (EET)
-             Message-Id: <199812131254.OAA24494@koah.research.nokia.com>
-             Subject: ignore_versioned_libs isn't used anywhere (it became ignore_versioned_solibs)
-     Branch: maint-5.005/perl
-           ! hints/linux.sh
-____________________________________________________________________________
-[  2528] By: gbarr                                 on 1998/12/29  13:59:49
-        Log: From: Ilya Zakharevich 
-             Date: Wed, 28 Oct 1998 01:20:33 -0500 (EST)
-             Message-Id: <199810280620.BAA06893@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.00552] Make sort respect overloading
-     Branch: maint-5.005/perl
-           ! pp_ctl.c t/pragma/overload.t
-____________________________________________________________________________
-[  2527] By: gbarr                                 on 1998/12/29  13:58:56
-        Log: doc update, quads only work on 64-but platforms
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  2526] By: gbarr                                 on 1998/12/29  13:49:55
-        Log: From: Andy Dougherty 
-             Date: Tue, 1 Dec 1998 12:50:27 -0500 (EST)
-             Message-Id: 
-             Subject: [PATCH 5.005_xx] erroneous 'none' in lddlflags
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  2512] By: gbarr                                 on 1998/12/28  14:56:36
-        Log: change t/op/pwent.t to ignore NIS includes
-             From: achampio@lehman.com (Alan Champion)
-             Date: Tue, 1 Dec 1998 15:18:03 GMT
-             Message-Id: <9812011518.AA00005@lonhpov1.lehman.com>
-             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_1 on sun4-solaris 2.3 (UNINSTALLED)
+[  2524] By: jhi                                   on 1998/12/29  13:00:06
+        Log: From: "Vishal Bhatia" 
+             To: perl5-porters@perl.org
+             Cc: rmb1@cise.npl.co.uk, nick@ni-s.u-net.com
+             Subject: [PATCH 5.005_54] Re:perlcc -e 'my $x = shift; print +($x ?...' failure
+             Date: 10 Dec 1998 08:30:02 +0200
+             Message-ID: 
              
-             From: pvhp@forte.com (Peter Prymmer)
-             Date: Fri, 4 Dec 98 17:11:41 PST
-             Message-Id: <9812050111.AA16778@forte.com>
-             Subject: [PATCH 5.005_03-MAINT_TRIAL_1 && 5.005_54]dumper and searchdict ebcdic style
-     Branch: maint-5.005/perl
-           ! t/lib/dumper.t t/lib/searchdict.t t/op/pwent.t
+             (Nick's part was applied earlier, in change #2460)
+     Branch: cfgperl
+           ! ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm ext/B/B/Stackobj.pm
+____________________________________________________________________________
+[  2523] By: jhi                                   on 1998/12/29  12:41:31
+        Log: From: "vishal bhatia" 
+             To: nick@ni-s.u-net.com
+             Cc: perl5-porters@perl.org
+             Subject: [PATCH 5.005_54] return value of perlcc/B::CC generated functions.
+             Date: 9 Dec 1998 06:50:30 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! ext/B/B/CC.pm
+____________________________________________________________________________
+[  2522] By: jhi                                   on 1998/12/29  12:15:18
+        Log: From: rjk@linguist.dartmouth.edu (Ronald J. Kimball)
+             To: perl5-porters@perl.org (Perl 5 Porters)
+             Subject: [PATCH 5.005_54] Pod::Text.pm reformating indented paragraphs
+             Date: 25 Dec 1998 23:02:28 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! lib/Pod/Text.pm
+____________________________________________________________________________
+[  2521] By: jhi                                   on 1998/12/29  12:07:54
+        Log: Undo #2519 (breaks universal.c).
+     Branch: cfgperl
+           ! XSUB.h
+____________________________________________________________________________
+[  2519] By: jhi                                   on 1998/12/29  11:41:10
+        Log: From: Joshua Pritikin 
+             To: perl5-porters@perl.org
+             Cc: perl-xs@perl.org
+             Subject: XSUB.h refinement [PATCH]
+             Date: 18 Dec 1998 03:58:44 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! XSUB.h
+____________________________________________________________________________
+[  2518] By: jhi                                   on 1998/12/29  11:36:19
+        Log: From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_02; lib/fields.pm] Typos in pod.
+             Date: 28 Dec 1998 21:39:15 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! lib/fields.pm
+____________________________________________________________________________
+[  2517] By: jhi                                   on 1998/12/29  11:35:03
+        Log: Document change #2516.
+     Branch: cfgperl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2516] By: jhi                                   on 1998/12/29  11:32:26
+        Log: From: Ilya Zakharevich 
+             To: perl5-porters@perl.org (Mailing list Perl5)
+             Subject: [PATCH 5.005_53] Warn on unrecognized alpha escapes.
+             Date: 9 Dec 1998 10:39:31 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! pod/perldiag.pod regcomp.c toke.c
+____________________________________________________________________________
+[  2515] By: jhi                                   on 1998/12/29  11:27:11
+        Log: From: Ilya Zakharevich 
+             To: perl5-porters@perl.org (Mailing list Perl5)
+             Subject: [PATCH 5.005_53] Bugs in hairy interactions of feature in REx
+             Date: 8 Dec 1998 09:02:04 +0200
+             Message-ID: 
+             
+             \G fixes (wasn't working right with //g, s///, and $_ in (?{})).
+     Branch: cfgperl
+           ! pp_ctl.c pp_hot.c regexec.c regexp.h t/op/pat.t t/op/subst.t
+____________________________________________________________________________
+[  2514] By: jhi                                   on 1998/12/29  11:21:31
+        Log: From: Ilya Zakharevich 
+             To: perl5-porters@perl.org (Mailing list Perl5)
+             Subject: [PATCH 5.005_53] Regexp tests and UTF8
+             Date: 8 Dec 1998 07:02:01 +0200
+             Message-ID: 
+     Branch: cfgperl
+           ! regcomp.c
+____________________________________________________________________________
+[  2513] By: jhi                                   on 1998/12/29  11:18:34
+        Log: From: Ilya Zakharevich 
+             Subject: [PATCH 5.005_*] Dumpvar.pm
+             To: perl5-porters@perl.org (Mailing list Perl5)
+             Date: 7 Dec 1998 10:17:35 +0200
+             Message-ID: 
+     Branch: cfgperl
+           + lib/Dumpvalue.pm
+           ! MANIFEST
 ____________________________________________________________________________
 [  2511] By: gbarr                                 on 1998/12/28  14:55:28
         Log: From: jan.dubois@ibm.net (Jan Dubois)
@@ -2285,1905 +22673,4577 @@ ____________________________________________________________________________
 	   ! win32/config.bc win32/config.gc win32/config.vc
            ! win32/config_sh.PL win32/makedef.pl
 ____________________________________________________________________________
-[  2510] By: gbarr                                 on 1998/12/28  14:37:35
-        Log: From: Ilya Zakharevich 
-             Date: Tue, 1 Dec 1998 00:34:08 -0500 (EST)
-             Message-Id: <199812010534.AAA21371@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Debugger 'v' command
-     Branch: maint-5.005/perl
-           ! lib/perl5db.pl
+[  2509] By: jhi                                   on 1998/12/28  13:00:31
+    Log: Kickstart AUTHORS and MAINTAIN.
+ Branch: cfgperl
+       + AUTHORS MAINTAIN
+       ! MANIFEST
 ____________________________________________________________________________
-[  2478] By: gbarr                                 on 1998/12/13  16:02:24
-        Log: From: pvhp@forte.com (Peter Prymmer)
-             Date: Mon, 30 Nov 98 21:08:36 PST
-             Message-Id: <9812010508.AA07791@forte.com>
-             Subject: [PATCH 5.005_03t1 && 5.005_54]dll linkage side decks for OS/390
-     Branch: maint-5.005/perl
-           ! hints/os390.sh
+[  2508] By: jhi                                   on 1998/12/28  08:04:00
+    Log: From: Nathan Torkington 
+	 To: perlbug@perl.com
+	 Subject: [PATCH] perlxstut.pod fix
+	 Date: Sat, 26 Dec 1998 14:28:21 +1300 (NZDT)
+	 Message-ID: <13956.15285.933914.320849@localhost.frii.com>
+ Branch: cfgperl
+       ! pod/perlxstut.pod
 ____________________________________________________________________________
-[  2477] By: gbarr                                 on 1998/12/13  16:00:23
-        Log: From: Dan Sugalski 
-             Date: Mon, 30 Nov 1998 17:08:12 -0800
-             Message-Id: <3.0.6.32.19981130170812.00b12b70@ous.edu>
-             Subject: [PATCH 5.005_03]Minor VMS patches needed to build
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/MM_VMS.pm vms/subconfigure.com
+[  2507] By: jhi                                   on 1998/12/28  07:59:00
+    Log: From: abigail@fnx.com
+	 To: perlbug@perl.com
+	 Subject: [PATCH 5.005_02] Re: m// doc is buggy (was Re: m'$foo' is undocumented)
+	 Date: Wed, 23 Dec 1998 22:59:59 -0500 (EST)
+	 Message-ID: <19981224035959.16994.qmail@alexandra.wayne.fnx.com>
+	 (slightly modified, a part of the patch was rejected)
+	 (strange, I thought I had already submitted this one
+	 but Perforce disagrees with me...)
+ Branch: cfgperl
+       ! pod/perlop.pod
 ____________________________________________________________________________
-[  2476] By: gbarr                                 on 1998/12/13  15:30:58
-        Log: From: pvhp@forte.com (Peter Prymmer)
-             Date: Fri, 4 Dec 98 00:37:32 PST
-             Message-Id: <9812040837.AA10908@forte.com>
-             Subject: Re: [PATCH 5.005_03-MAINT-TRIAL1] some tweaks to the build process for OS/390
-     Branch: maint-5.005/perl
-           ! Makefile.SH regcomp.c
+[  2506] By: jhi                                   on 1998/12/28  07:56:59
+    Log: From: Artur 
+	 To: perlbug@perl.com
+	 Subject: PATCH: perlmodlib.pod
+	 Date: Fri, 25 Dec 1998 00:48:39 +0000
+	 Message-ID: <3682E0E7.EBFB5D65@vogon-solutions.com>
+ Branch: cfgperl
+       ! pod/perlmodlib.pod pod/perlop.pod
+____________________________________________________________________________
+[  2505] By: jhi                                   on 1998/12/28  07:46:06
+    Log: From: abigail@fnx.com
+	 To: perl5-porters@perl.org (Perl Porters)
+	 Subject: [PATCH 5.005_02] Typo in documentation of pod2html.
+	 Date: Wed, 23 Dec 1998 22:32:07 -0500 (EST)
+	 Message-ID: <19981224033207.16751.qmail@alexandra.wayne.fnx.com>
+ Branch: cfgperl
+       ! pod/pod2html.PL
+____________________________________________________________________________
+[  2504] By: jhi                                   on 1998/12/28  07:44:35
+    Log: From: Jim Avera 
+	 To: perlbug@perl.com
+	 Subject: perlbug bug - shows dates reversed
+	 Date: Wed, 23 Dec 1998 18:08:56 -0800 (PST)
+	 Message-Id: <199812240208.SAA27616@membrane.ssd.hal.com>
+ Branch: cfgperl
+       ! utils/perlbug.PL
+____________________________________________________________________________
+[  2503] By: jhi                                   on 1998/12/28  07:41:39
+    Log: From: jan.dubois@ibm.net (Jan Dubois)
+	 To: makemaker@franz.ww.TU-Berlin.DE, perl5-porters@perl.org
+	 Subject: [PATCH 5.005_03m1] subdirectory Makefiles should inherit CAPI setting from command line
+	 Date: Wed, 23 Dec 1998 21:26:38 +0100
+	 Message-ID: <36895086.8849224@smtp1.ibm.net>
+ Branch: cfgperl
+       ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  2502] By: jhi                                   on 1998/12/28  07:39:20
+    Log: From: Blair Zajac 
+	 To: perl5-porters@perl.org
+	 Subject: Tie::SubstrHash patch
+	 Date: Wed, 23 Dec 1998 17:13:32 -0800
+	 Message-ID: <3681953C.8B6A90AA@geostaff.com>
+ Branch: cfgperl
+       ! lib/Tie/SubstrHash.pm
+____________________________________________________________________________
+[  2501] By: jhi                                   on 1998/12/28  07:37:16
+    Log: From: Alan.Harder@Ebay.Sun.COM (Alan Harder)
+	 To: perlbug@perl.com
+	 Subject: perlfaq9 minor error
+	 Date: Wed, 23 Dec 1998 14:54:19 -0800
+	 Message-Id: <199812232254.OAA05986@moshpit.EBay.Sun.COM>
+ Branch: cfgperl
+       ! pod/perlfaq9.pod
+____________________________________________________________________________
+[  2500] By: jhi                                   on 1998/12/23  10:38:18
+    Log: More porting notes about filesystems, AmigaOS, and MiNT.
+ Branch: cfgperl
+       ! pod/perlport.pod
+____________________________________________________________________________
+[  2499] By: jhi                                   on 1998/12/22  09:26:49
+    Log: Add few MSG_ and uio constants.
+ Branch: cfgperl
+       ! ext/Socket/Socket.pm ext/Socket/Socket.xs iperlsys.h
+____________________________________________________________________________
+[  2498] By: jhi                                   on 1998/12/22  08:39:30
+    Log: Slight recoding of util.c:repeatcpy() to circumnavigate
+	 a Digital C compiler optimizer bug that broke the 'x'
+	 operator under certain circumstances.  See t/op/repeat.t
+	 test #20 for graphic details.  Reported in
+	 
+	 From: Gisle Aas 
+	 To: Mark Martinec 
+	 Cc: ach@xray.mpe.mpg.de, cpan-testers@perl.org, perl5-porters@perl.org
+	 Subject: Re: Digest-MD5-2.00 test fails on DEC Alpha - a patch
+	 Date: 18 Dec 1998 14:27:40 +0100
+	 Message-ID: 
+	 
+	 and discussed further in the thread
+	 
+	 From: Jarkko Hietaniemi 
+	 To: Gisle Aas 
+	 Cc: Mark Martinec , ach@xray.mpe.mpg.de,
+	 cpan-testers@perl.org, perl5-porters@perl.org
+	 Subject: x operator broken in DEC Alpha for 8-bit characters (Re: Digest-MD5-2.00 test fails on DEC Alpha - a patch)
+	 Date: Fri, 18 Dec 1998 16:18:37 +0200 (EET)
+	 Message-ID: <13946.25661.193449.138023@alpha.hut.fi>
+ Branch: cfgperl
+       ! t/op/repeat.t util.c
+____________________________________________________________________________
+[  2497] By: jhi                                   on 1998/12/21  14:18:57
+    Log: Change #2483 update.
+ Branch: cfgperl
+       ! t/op/tr.t
+____________________________________________________________________________
+[  2496] By: jhi                                   on 1998/12/21  14:07:41
+    Log: Update on change #2493.
+ Branch: cfgperl
+       ! t/pragma/warn/op
+____________________________________________________________________________
+[  2495] By: jhi                                   on 1998/12/21  13:52:00
+    Log: Change #2487 aftershock.
+ Branch: cfgperl
+       ! warning.pl
+____________________________________________________________________________
+[  2494] By: jhi                                   on 1998/12/21  12:35:00
+    Log: From: Chris Nandor 
+	 To: perl5-porters@perl.org
+	 Subject: [PATCH] perlport.pod v1.37
+	 Date: Sat, 19 Dec 1998 12:54:34 -0500
+	 Message-Id: 
+ Branch: cfgperl
+       ! pod/perlport.pod
+____________________________________________________________________________
+[  2493] By: jhi                                   on 1998/12/21  12:22:44
+    Log: From: Mark-Jason Dominus 
+	 To: perl5-porters@perl.com
+	 Subject: PATCH (5.005_02): Dejargonizing
+	 Date: Sun, 20 Dec 1998 14:35:20 -0500
+	 Message-ID: <19981220193520.11230.qmail@plover.com>
+	 
+	 From: Mark-Jason Dominus 
+	 To: perl5-porters@perl.com
+	 Subject: PATCH (5.005_02): Spelling correction in warning message
+	 Date: Sun, 20 Dec 1998 13:51:30 -0500
+	 Message-ID: <19981220185130.11067.qmail@plover.com>
+ Branch: cfgperl
+       ! doio.c op.c
+____________________________________________________________________________
+[  2492] By: jhi                                   on 1998/12/21  09:00:05
+    Log: From: "Vishal Bhatia" 
+	 To: perl5-porters@perl.org
+	 Subject: [PATCH 5.005_54] pp_next/pp_last/pp_redo problems
+	 Date: Sun, 20 Dec 1998 19:03:25 PST
+	 Message-ID: <19981221030326.27660.qmail@hotmail.com>
+	 
+	 (slightly reformatted)
+ Branch: cfgperl
+       ! ext/B/B/CC.pm
+____________________________________________________________________________
+[  2491] By: nick                                  on 1998/12/20  14:21:29
+    Log: Save _all_ GV's which have SV, AV or HV set.
+ Branch: perl
+       ! ext/B/B/C.pm
+____________________________________________________________________________
+[  2490] By: jhi                                   on 1998/12/18  15:13:19
+    Log: Add idea about generalising cpp symbol probing of Errno.
+ Branch: cfgperl
+       ! Todo
+____________________________________________________________________________
+[  2489] By: jhi                                   on 1998/12/18  14:47:57
+    Log: Address some of the issues of:
+	 
+	 From: Tom Christiansen 
+	 To: perl-porters-active@jhereg.perl.com
+	 Subject: Undocumentation Issues for 5.005
+	 Date: Thu, 17 Dec 1998 14:46:24 -0700
+	 Message-Id: <199812172146.OAA05316@jhereg.perl.com>
+ Branch: cfgperl
+       ! pod/perl5005delta.pod
+____________________________________________________________________________
+[  2488] By: jhi                                   on 1998/12/18  11:26:32
+    Log: From: root 
+	 To: perlbug@perl.com
+	 Cc: k@dubravka.in-berlin.de
+	 Subject: Please add no_modify to PERL_POLLUTE
+	 Date: Fri, 18 Dec 1998 10:45:52 +0100
+	 Message-Id: <199812180945.KAA05275@dubravka.in-berlin.de>
+	 
+	 (Really from Andreas König)
+ Branch: cfgperl
+       ! embed.pl
+____________________________________________________________________________
+[  2487] By: jhi                                   on 1998/12/17  14:05:52
+    Log: Some (by far not all) issues of the below message addressed.
+	 
+	 From: Tom Christiansen 
+	 To: The Perl Porters Mailing List 
+	 Subject: important UNDOC issues for 5.005_54
+	 Date: Wed, 16 Dec 1998 21:14:53 -0700
+	 Message-Id: <199812170414.VAA25860@jhereg.perl.com>
+ Branch: cfgperl
+       ! lib/warning.pm pod/perl5005delta.pod pod/perldelta.pod
+____________________________________________________________________________
+[  2486] By: jhi                                   on 1998/12/17  12:47:15
+    Log: From: Ilya Zakharevich 
+	 To: domo@computer.org
+	 Cc: jhi@iki.fi, perl5-porters@perl.org
+	 Subject: Re: stuff related to malloc.c
+	 Date: Wed, 16 Dec 1998 16:40:27 -0500 (EST)
+	 Message-Id: <199812162140.QAA04925@monk.mps.ohio-state.edu>
+ Branch: cfgperl
+       ! malloc.c
+____________________________________________________________________________
+[  2485] By: jhi                                   on 1998/12/17  12:17:19
+    Log: More porting notes.
+ Branch: cfgperl
+       ! Porting/pumpkin.pod
+____________________________________________________________________________
+[  2484] By: jhi                                   on 1998/12/15  08:38:05
+    Log: Undo #2386 and #2205.
+ Branch: cfgperl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2483] By: jhi                                   on 1998/12/14  17:58:35
+    Log: lib was missing from @INC.
+ Branch: cfgperl
+       ! t/op/tr.t
+____________________________________________________________________________
+[  2482] By: jhi                                   on 1998/12/14  17:52:42
+    Log: Was missing use Text::Wrap.
+ Branch: cfgperl
+       ! t/lib/textfill.t
+____________________________________________________________________________
+[  2481] By: jhi                                   on 1998/12/14  16:00:22
+    Log: nlist.h not yet Configure-probed but DynaLoader Linux-hinted.
+	 
+	 From: Jonathan Roy 
+	 To: perl5-porters@perl.org
+	 Subject: nlist.h add to Configure checks?
+	 Date: Sun, 13 Dec 1998 22:22:49 -0500
+	 Message-Id: <4.1.19981213221847.00a3e100@pop-server.tampabay.rr.com>
+ Branch: cfgperl
+       + ext/DynaLoader/hints/linux.pl
+       ! MANIFEST
+____________________________________________________________________________
+[  2480] By: jhi                                   on 1998/12/14  15:02:44
+    Log: Give up completely using nm in AIX.
+	 
+	 From: "Kurt D. Starsinic" 
+	 To: Gurusamy Sarathy , Jarkko Hietaniemi 
+	 Cc: perl5-porters@perl.org
+	 Subject: [PATCH 5.005_54] AIX 4.3.1.0 fails to locate some functions
+	 Date: Thu, 10 Dec 1998 00:51:46 -0500
+	 Message-ID: <19981210005146.B29986@O2.chapin.edu>
+ Branch: cfgperl
+       ! hints/aix.sh
+____________________________________________________________________________
+[  2479] By: jhi                                   on 1998/12/14  14:39:52
+    Log: AIX' error messages are different.
+	 
+	 From: "Kurt D. Starsinic" 
+	 To: Gurusamy Sarathy 
+	 Cc: perl5-porters@perl.org
+	 Subject: [PATCH 5.005_54] AIX 4.1.3.0 fails pragma/warning.t
+	 Date: Thu, 10 Dec 1998 00:42:36 -0500
+	 Message-ID: <19981210004236.A29986@O2.chapin.edu>
+	 
+	 From: Michael Engel 
+	 To: perlbug@perl.com
+	 Subject: erroes in installing perl5*53 on IBM RS6000, aix 4.1
+	 Date: Mon, 14 Dec 1998 16:15:20 +0200 (IST)
+	 Message-ID: 
+ Branch: cfgperl
+       ! t/pragma/warn/doio
+____________________________________________________________________________
+[  2475] By: jhi                                   on 1998/12/13  12:35:55
+    Log: From: Ilya Zakharevich 
+	 To: jhi@iki.fi
+	 Cc: Carl_Adler@idx.com, perl5-porters@perl.org
+	 Subject: Re: stuff related to malloc.c
+	 Date: Sat, 12 Dec 1998 19:39:44 -0500 (EST)
+	 Message-Id: <199812130039.TAA21704@monk.mps.ohio-state.edu>
+ Branch: cfgperl
+       ! malloc.c
+____________________________________________________________________________
+[  2474] By: jhi                                   on 1998/12/13  12:32:42
+    Log: Some notes about porting issues.
+ Branch: cfgperl
+       ! Porting/pumpkin.pod
+____________________________________________________________________________
+[  2473] By: jhi                                   on 1998/12/13  12:03:58
+    Log: From: Laszlo Molnar 
+	 To: Perl 5 Porters 
+	 Subject: [patch 5.005_02] dos-djgpp update
+	 Date: Sun, 13 Dec 1998 00:08:44 +0100
+	 Message-ID: <19981213000844.C264@beeblebrox>
+ Branch: cfgperl
+       ! djgpp/config.over
 ____________________________________________________________________________
 [  2472] By: gbarr                                 on 1998/12/12  17:12:28
-        Log: undo changes to Exporter.pm from #2312
-     Branch: maint-5.005/perl
-           ! lib/Exporter.pm
+    Log: undo changes to Exporter.pm from #2312
+ Branch: maint-5.005/perl
+       ! lib/Exporter.pm
 ____________________________________________________________________________
-[  2471] By: gbarr                                 on 1998/12/12  17:09:39
-        Log: integrate change#2459 from cfgperl
-             
-             enclose case want_vtbl_collxfrm with #ifdef USE_LOCALE_COLLATE
-             
-             From: hansm@icgroup.nl 
-             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_1 on OPENSTEP-Mach 4_1 (UNINSTALLED)
-             Date: Sun, 6 Dec 98 22:19:54 +0100 
-             Message-Id: <9812062116.AA26445@icgned.icgroup.nl> 
-     Branch: maint-5.005/perl
-           ! util.c
+[  2465] By: jhi                                   on 1998/12/12  12:31:21
+    Log: Document that qw() taints.
+	 
+	 From: Christian Burger  
+	 To: perlbug@perl.com 
+	 Subject: taint problems
+	 Date: Sun, 1 Nov 1998 22:28:41 +0100 (MET) 
+	 Message-Id: <199811012128.WAA23381@terra.mpikg-teltow.mpg.de>
+ Branch: cfgperl
+       ! pod/perlop.pod
 ____________________________________________________________________________
-[  2470] By: gbarr                                 on 1998/12/12  16:46:03
-        Log: re-sync'd Text::Wrap with new version from CPAN
-     Branch: maint-5.005/perl
-          +> t/lib/textfill.t
-           ! MANIFEST
-          !> lib/Text/Wrap.pm t/lib/textwrap.t
+[  2464] By: jhi                                   on 1998/12/11  14:09:51
+    Log: From: Horst von Brand 
+	 To: dist-users@foretune.co.jp
+	 Subject: (dist-users 871) dist-3.0@70 generates lots of main() without type
+	 Date: Mon, 07 Dec 1998 20:13:04 -0400
+	 Message-Id: <199812072313.UAA06181@sleipnir.valparaiso.cl>
+ Branch: cfgperl
+       ! Configure
 ____________________________________________________________________________
-[  2469] By: gbarr                                 on 1998/12/12  15:58:43
-        Log: integrate changes#2435,2436 from cfgperl
-             
-             Pod::Html and Pod::Text were not locale-savvy:
-             for example in =head1 all non-ASCII-\w-runs were
-             turned into underscores in NAME tags.  This could
-             result in several NAME tags becoming identical.
-             Reported by:
-             
-             From: Fyodor Krasnov  
-             Subject: pod2html vs Russian Characters
-             To: Tom.Christiansen@snn.aha.ru, tchrist@perl.com 
-             Date: Tue, 24 Nov 1998 19:00:36 +0300 (MSK) 
-             Message-Id: <199811241600.TAA05149@stat.aha.ru> 
-             
-             One paste too many in #2435.
-     Branch: maint-5.005/perl
-          !> lib/Pod/Html.pm lib/Pod/Text.pm
+[  2463] By: jhi                                   on 1998/12/11  13:29:54
+    Log: MAXPATHLEN.
+ Branch: cfgperl
+       ! perl.h
 ____________________________________________________________________________
-[  2468] By: gbarr                                 on 1998/12/12  15:01:58
-        Log: redirect trail program to error msg file in Configure
-             
-             From: Andy Dougherty 
-             Date: Tue, 1 Dec 1998 13:40:12 -0500 (EST)
-             Message-Id: 
-             Subject: [PATCH 5.005_xx] Missing redirection of simple test program
-     Branch: maint-5.005/perl
-           ! Configure
+[  2462] By: jhi                                   on 1998/12/11  08:37:58
+    Log: From: Mark Kettenis 
+	 To: perl5-porters@perl.org
+	 Subject: [PATCH]5.005_54 (CONFIG) Added support for GNU/Hurd
+	 Date: Thu, 10 Dec 1998 22:00:57 +0100 (CET)
+	 Message-Id: <199812102100.WAA00097@delius.kettenis.nl>
+ Branch: cfgperl
+       + hints/gnu.sh
 ____________________________________________________________________________
-[  2467] By: gbarr                                 on 1998/12/12  14:52:24
-        Log: Change reall_srchlen back to an int from a #define
-             
-             From: Graham Barr 
-             Date: Mon, 30 Nov 1998 14:29:14 -0600
-             Message-ID: <19981130142914.X1504@asic.sc.ti.com>
-             Subject: [PATCH 5.005_03-MT!] Re: one compilation warning from 5_03-MT1
-     Branch: maint-5.005/perl
-           ! malloc.c
+[  2461] By: nick                                  on 1998/12/10  21:00:50
+    Log: Date: Wed, 09 Dec 1998 22:16:50 PST
+	 From: Vishal Bhatia 
+	 1. Fixes the bug  reported by  Robin Barker  
+	 2. Fixes the bug  regarding return value of c-functions generated out 
+	 of perl subs. ( Just includes the patch I sent earlier)
+	 3. Incorporates the other changes that need to be done to get CC.pm
+	 use ISA search for packages and methods on the same lines as C.pm
+	 
+	 Vishal would appreciate comments about B::Stackobj changes from 
+	 someone knowing that module well.
+ Branch: perl
+       ! ext/B/B/C.pm ext/B/B/CC.pm ext/B/B/Stackobj.pm
 ____________________________________________________________________________
-[  2466] By: gbarr                                 on 1998/12/12  14:40:56
-        Log: s/SCM_CREDENTIALSS/SCM_CREDENTIALs/ in Socket.xs
-             
-             From: Andy Dougherty 
-             Date: Thu, 3 Dec 1998 11:26:25 -0500 (EST)
-             Message-Id: 
-             Subject: [PATCH 5.005_03-MAINT_TRIAL_1] Trivial grammar patch
-     Branch: maint-5.005/perl
-           ! Porting/Glossary
-          !> ext/Socket/Socket.xs
+[  2460] By: jhi                                   on 1998/12/08  08:11:27
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      !> Changes ext/B/B.pm ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm
+      !> ext/B/B/Deparse.pm perl.h pod/perl.pod pod/perl5005delta.pod
+      !> pod/perldiag.pod pod/perlfunc.pod pp_sys.c t/lib/io_unix.t
+      !> toke.c util.c
+____________________________________________________________________________
+[  2459] By: jhi                                   on 1998/12/07  07:50:11
+    Log: From: hansm@icgroup.nl 
+	 Subject: Not OK: perl 5.00503 +MAINT_TRIAL_1 on OPENSTEP-Mach 4_1 (UNINSTALLED)
+	 Reply-To: hansmu@xs4all.nl 
+	 To: perlbug@perl.com 
+	 Date: Sun, 6 Dec 98 22:19:54 +0100 
+	 Message-Id: <9812062116.AA26445@icgned.icgroup.nl> 
+ Branch: cfgperl
+       ! util.c
+____________________________________________________________________________
+[  2458] By: gsar                                  on 1998/12/07  06:00:55
+    Log: fix dup lexical
+ Branch: perl
+       ! ext/B/B/Deparse.pm t/lib/io_unix.t
+____________________________________________________________________________
+[  2457] By: gsar                                  on 1998/12/06  14:38:59
+    Log: mention limit on line numbers reported by diagnostics
+ Branch: perl
+       ! pod/perl.pod toke.c
 ____________________________________________________________________________
 [  2456] By: gsar                                  on 1998/12/06  13:49:02
-        Log: branch perldelta.pod
-     Branch: maint-5.005/perl
-          +> pod/perldelta.pod
+    Log: branch perldelta.pod
+ Branch: maint-5.005/perl
+      +> pod/perldelta.pod
 ____________________________________________________________________________
 [  2455] By: gsar                                  on 1998/12/06  13:47:21
-        Log: clobber perldelta.pod to reestablish branch from perl5005delta.pod
-     Branch: maint-5.005/perl
-           - pod/perldelta.pod
+    Log: clobber perldelta.pod to reestablish branch from perl5005delta.pod
+ Branch: maint-5.005/perl
+       - pod/perldelta.pod
 ____________________________________________________________________________
-[  2415] By: gbarr                                 on 1998/11/30  02:31:15
-        Log: Chnages,patchlevel.h etc...
-     Branch: maint-5.005/perl
-	   ! Changes MANIFEST patchlevel.h t/op/tr.t win32/Makefile
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-           ! win32/makefile.mk
+[  2454] By: gsar                                  on 1998/12/06  13:35:31
+    Log: fix outdated/incorrect info about arbitrary limits
+ Branch: perl
+       ! Changes perl.h pod/perl.pod pod/perl5005delta.pod
+       ! pod/perldiag.pod pod/perlfunc.pod pp_sys.c util.c
 ____________________________________________________________________________
-[  2411] By: gbarr                                 on 1998/11/30  01:31:22
-        Log: integrated changes#2323,2353,2369
-             
-             From: maeda@src.ricoh.co.jp
-             Date: Tue, 24 Nov 1998 10:37:45 +0900
-             Message-Id: <199811240137.KAA05867@luna.src.ricoh.co.jp>
-             Subject: format "..." bug
-             
-             Locale collation, ctype, and numeric, were initialized wrong
-             (if LC_ALL or LANG were unset, so were the collation/ctype/numeric),
-             as reported by
-             
-             From: Ilya.Sandler@etak.com (Ilya Sandler)
-             Subject: a bug in locale handling: LC_COLLATE ignored sometimes
-             Date: 25 Nov 1998 04:53:52 +0200
-             Message-ID: 
-             
-             allow final period in a file (not followed by a newline) to
-             terminate format spec
-     Branch: maint-5.005/perl
-           ! pp_ctl.c toke.c util.c
-          !> t/op/write.t
+[  2453] By: nick                                  on 1998/12/05  16:14:42
+    Log: Avoid hard-coding op numbers
+	 Update CC.pm to save %INC, and to co-exist with new C.pm
+ Branch: perl
+       ! ext/B/B.pm ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm
 ____________________________________________________________________________
-[  2408] By: gbarr                                 on 1998/11/30  01:29:19
-        Log: integrated ext/B/... changes from mainline
-     Branch: maint-5.005/perl
-	  !> ext/B/B.pm ext/B/B.xs ext/B/B/Assembler.pm ext/B/B/C.pm
-          !> ext/B/B/Disassembler.pm
+[  2452] By: nick                                  on 1998/12/05  10:44:28
+    Log: B.xs had its own code to calculate hash() which differed from
+	 PERL_HASH in hv.h - so all saved HV's were mangled - including %INC
+	 which meant that run-time require was re-done.
+	 Removed some debug from C.pm
+ Branch: perl
+       ! ext/B/B.xs ext/B/B/C.pm
 ____________________________________________________________________________
-[  2404] By: gbarr                                 on 1998/11/30  00:26:36
-        Log: integrate some of change#2318 from mainline
-     Branch: maint-5.005/perl
-          +> t/op/grent.t t/op/pwent.t
-	  !> ext/DB_File/Changes ext/DB_File/DB_File.pm
-	  !> ext/DB_File/DB_File.xs ext/POSIX/hints/dynixptx.pl
-	  !> ext/Socket/Socket.pm ext/Socket/Socket.xs lib/Benchmark.pm
-          !> pod/perldata.pod t/op/sort.t
+[  2451] By: nick                                  on 1998/12/04  21:58:49
+    Log: Snapshot of re-worked B::C which compiles Tk apps at least as
+	 well as _54, but with pre-scan for classes and save the ISA scheme.
+ Branch: perl
+       ! ext/B/B/C.pm
 ____________________________________________________________________________
-[  2398] By: gbarr                                 on 1998/11/29  22:11:16
-        Log: integrate changes#2254,2259,2335,2345,2348,2361,2368,2380 from mainline
-             
-             win32_recvfrom() compatibility fix
-             
-             From: "Kurt D. Starsinic" 
-             Subject: Re: [PATCH] Re: pod2man bug in date generated line
-             To: Albert Dvornik , "Larry W. Virden" 
-             Cc: perlbug@perl.com
-             Date: 20 Nov 1998 21:30:17 +0200
-             Message-ID: 
-             
-             make $1 et al readonly under threads; make C fail like
-             C<$1 = undef> does
-             
-             fix typo in pp_defined() causing C to fail
-             
-             more conservative version of changes#2345,2346,2347; those break
-             C which seems to be extensively used in
-             the libs :-(
-             
-             fix uninitialized warnings
-             From: Brian Callaghan 
-             Date: Thu, 19 Nov 1998 17:49:10 -0800
-             Message-Id: <3654CA96.B64FCAEB@itginc.com>
-             Subject: Complete.pm patch (version 1.1)
-             
-             Liblist tweak suggested by Swen Thuemmler ;
-             add C<$Config{installarchlib}/CORE> to the default locations searched
-             on win32
-             
-             prefer IO::Handle for IO if FileHandle:: is empty (as suggested by
-             Tim Bunce)
-     Branch: maint-5.005/perl
-           ! gv.c op.c pp.c
-	  !> lib/ExtUtils/Liblist.pm lib/Term/Complete.pm pod/perlfaq4.pod
-          !> pod/pod2man.PL t/op/undef.t win32/win32sck.c
+[  2450] By: nick                                  on 1998/12/04  17:58:44
+    Log: Vishal Bhatia's patch as a basis.
+ Branch: perl
+       ! ext/B/B/C.pm ext/B/B/CC.pm
+____________________________________________________________________________
+[  2449] By: jhi                                   on 1998/12/04  16:39:21
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      !> t/op/goto.t t/op/tr.t
+____________________________________________________________________________
+[  2448] By: gsar                                  on 1998/12/04  06:06:49
+    Log: tweak test for UTEST
+ Branch: perl
+       ! t/op/tr.t
+____________________________________________________________________________
+[  2444] By: jhi                                   on 1998/12/03  14:37:22
+    Log: s/\bthe the\b/the/g *.pod
+ Branch: cfgperl
+       ! pod/perlfaq8.pod pod/perlfunc.pod pod/perlguts.pod
+____________________________________________________________________________
+[  2443] By: jhi                                   on 1998/12/03  13:39:53
+    Log: Change#2441 aftermath.
+ Branch: cfgperl
+       ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+       ! config_h.SH thread.h vms/subconfigure.com
+____________________________________________________________________________
+[  2441] By: jhi                                   on 1998/12/03  08:15:13
+    Log: From: Dan Sugalski 
+	 To: perl5-porters@perl.org, vmsperl@cor.newman.upenn.edu
+	 Subject: [PATCH 5.005_54]Initial VMS patches
+	 Date: 3 Dec 1998 01:05:55 +0200
+	 Message-ID: 
+	 
+	 The patch to config_h.SH requires more study because
+	 metaconfig needs to agree.
+ Branch: cfgperl
+       ! config_h.SH configure.com global.sym lib/ExtUtils/MM_VMS.pm
+       ! t/lib/textfill.t t/pragma/warning.t vms/descrip_mms.template
+       ! vms/gen_shrfls.pl vms/subconfigure.com vms/vmsish.h
+____________________________________________________________________________
+[  2440] By: gsar                                  on 1998/12/03  01:32:16
+    Log: add failed check-in of goto.t from change#1867
+ Branch: perl
+       ! t/op/goto.t
+____________________________________________________________________________
+[  2437] By: jhi                                   on 1998/12/02  18:03:51
+    Log: Fix most of the bad L<> links of
+	 
+	 From: Tom Christiansen  
+	 Subject: bad L<> links
+	 Reply-to: tchrist@perl.com 
+	 To: perlbug@jhereg.perl.com 
+	 Date: Tue, 11 Aug 1998 10:58:07 -0500 
+	 Message-Id: <199808111658.KAA00484@jhereg.perl.com> 
+	 
+	 The ones not fixed may require darker Pod::HTML magic,
+	 for example the perlguts.html#tags should work fine, IMHO.
+ Branch: cfgperl
+       ! pod/perl5005delta.pod pod/perlcall.pod pod/perldata.pod
+       ! pod/perldiag.pod pod/perlfaq5.pod pod/perlfaq7.pod
+       ! pod/perlfunc.pod pod/perlguts.pod pod/perllocale.pod
+       ! pod/perlobj.pod pod/perlport.pod pod/perlsub.pod
+       ! pod/perlvar.pod
+____________________________________________________________________________
+[  2436] By: jhi                                   on 1998/12/02  16:35:04
+    Log: One paste too many in #2345.
+ Branch: cfgperl
+       ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  2435] By: jhi                                   on 1998/12/02  16:32:33
+    Log: Pod::Html and Pod::Text were not locale-savvy:
+	 for example in =head1 all non-ASCII-\w-runs were
+	 turned into underscores in NAME tags.  This could
+	 result in several NAME tags becoming identical.
+	 Reported by:
+	 
+	 From: Fyodor Krasnov  
+	 Subject: pod2html vs Russian Characters
+	 To: Tom.Christiansen@snn.aha.ru, tchrist@perl.com 
+	 Date: Tue, 24 Nov 1998 19:00:36 +0300 (MSK) 
+	 Message-Id: <199811241600.TAA05149@stat.aha.ru> 
+ Branch: cfgperl
+       ! lib/Pod/Html.pm lib/Pod/Text.pm
+____________________________________________________________________________
+[  2434] By: jhi                                   on 1998/12/02  10:29:00
+    Log: The real Mc5_54 integration.
+ Branch: cfgperl
+      !> Changes MANIFEST pod/perlhist.pod pp_hot.c
+____________________________________________________________________________
+[  2433] By: jhi                                   on 1998/12/02  08:52:13
+    Log: From: Andy Dougherty 
+	 To: Perl Porters 
+	 Subject: [PATCH 5.005_xx] Missing redirection of simple test program
+	 Date: Tue, 1 Dec 1998 13:40:12 -0500 (EST)
+	 Message-Id: 
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2432] By: jhi                                   on 1998/12/02  08:49:47
+    Log: From: Andy Dougherty 
+	 To: Perl Porters 
+	 Subject: [PATCH 5.005_xx] erroneous 'none' in lddlflags
+	 Date: Tue, 1 Dec 1998 12:50:27 -0500 (EST)
+	 Message-Id: 
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2431] By: jhi                                   on 1998/12/01  16:11:50
+    Log: From: achampio@lehman.com (Alan Champion)
+	 Subject: Not OK: perl 5.00503 +MAINT_TRIAL_1 on sun4-solaris 2.3 (UNINSTALLED)
+	 To: perlbug@perl.com
+	 Date: 1 Dec 1998 17:36:33 +0200
+	 Message-ID: 
+	 
+	 Skip NIS includes.
+ Branch: cfgperl
+       ! t/op/pwent.t
+____________________________________________________________________________
+[  2430] By: gsar                                  on 1998/12/01  12:12:50
+    Log: 5.005_54, as released
+ Branch: perl
+       ! Changes MANIFEST pod/perlhist.pod pp_hot.c
+____________________________________________________________________________
+[  2429] By: jhi                                   on 1998/12/01  11:28:39
+    Log: From: Anton Berezin 
+	 To: perl5-porters@perl.org
+	 Subject: [PATCH 5.005_54] Configure - hints/freebsd.sh signal handler type
+	 Date: 30 Nov 1998 19:46:24 +0100
+	 Message-ID: <864srhhvcv.fsf@lion.plab.ku.dk>
+ Branch: cfgperl
+       ! hints/freebsd.sh
+____________________________________________________________________________
+[  2428] By: jhi                                   on 1998/12/01  11:08:16
+    Log: Integrate from _54 mainperl modulo the NetBSD ifdef in util.c.
+ Branch: cfgperl
+      +> (branch 30 files)
+      !> (integrate 71 files)
+____________________________________________________________________________
+[  2427] By: jhi                                   on 1998/12/01  10:51:37
+    Log: Default to accepting a hinted $randfunc even when $csym
+	 does not find it.  (the previous defaylt behaviour was not
+	 to accept).
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2426] By: jhi                                   on 1998/12/01  10:13:03
+    Log: Separated the [:foo:] parsing to its own function.
+	 Passes all tests.
+ Branch: cfgperl
+       ! regcomp.c
+____________________________________________________________________________
+[  2425] By: jhi                                   on 1998/12/01  08:22:49
+    Log: Typo in comments.
+ Branch: cfgperl
+       ! regexec.c
+____________________________________________________________________________
+[  2424] By: jhi                                   on 1998/12/01  08:21:38
+    Log: From: Ilya Zakharevich 
+	 Subject: [PATCH 5.005_*] Debugger 'v' command
+	 To: perl5-porters@perl.org (Mailing list Perl5)
+	 Date: 1 Dec 1998 07:55:11 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! lib/perl5db.pl
+____________________________________________________________________________
+[  2423] By: jhi                                   on 1998/12/01  08:19:08
+    Log: From: pvhp@forte.com (Peter Prymmer)
+	 Subject: [PATCH 5.005_03t1 && 5.005_54]dll linkage side decks for OS/390
+	 To: perl5-porters@perl.org
+	 Date: 1 Dec 1998 07:27:11 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! hints/os390.sh
+____________________________________________________________________________
+[  2417] By: jhi                                   on 1998/11/30  08:14:00
+    Log: s/SCM_CREDENTIALSS/SCM_CREDENTIAL/
+ Branch: cfgperl
+       ! ext/Socket/Socket.xs
+____________________________________________________________________________
+[  2416] By: jhi                                   on 1998/11/30  08:00:15
+    Log: Undo #2395, seems more like a problem in netbsd-current.
+ Branch: cfgperl
+       ! util.c
+
+----------------
+Version 5.005_54
+----------------
+
+____________________________________________________________________________
+[  2414] By: gsar                                  on 1998/11/30  02:23:55
+    Log: more JPL tweaks
+ Branch: perl
+       - jpl/JNI/MANIFEST jpl/PerlInterpreter/Makefile
+       ! Changes MANIFEST jpl/JNI/JNI.pm jpl/README
+____________________________________________________________________________
+[  2413] By: gsar                                  on 1998/11/30  01:35:56
+    Log: stub bin/jpl that just runs JPL::Compile::files()
+ Branch: perl
+       + jpl/bin/jpl
+____________________________________________________________________________
+[  2412] By: gsar                                  on 1998/11/30  01:32:14
+    Log: delete symlink
+ Branch: perl
+       - jpl/bin/jpl
+____________________________________________________________________________
+[  2410] By: gsar                                  on 1998/11/30  01:30:44
+    Log: branch jpl from perlext to perl
+ Branch: perl
+      +> (branch 30 files)
+____________________________________________________________________________
+[  2407] By: gsar                                  on 1998/11/30  01:24:53
+    Log: JPL tweaks to build with 5.005
+ Branch: perlext
+       ! jpl/JNI/JNI.xs jpl/JNI/typemap jpl/JPL/Compile.pm
+       ! jpl/PerlInterpreter/PerlInterpreter.c jpl/README
+____________________________________________________________________________
+[  2406] By: gsar                                  on 1998/11/30  00:55:54
+    Log: integrate changes#2273,2274,2288,2291 from maint-5.004
+ Branch: perl
+       ! Porting/patchls doio.c lib/Sys/Syslog.pm t/op/die_exit.t
+____________________________________________________________________________
+[  2405] By: gsar                                  on 1998/11/30  00:28:55
+    Log: patchlevel up to 54
+ Branch: perl
+       ! patchlevel.h win32/Makefile win32/config_H.bc
+       ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  2403] By: gsar                                  on 1998/11/29  23:35:50
+    Log: integrate cfgperl changes into mainline
+ Branch: perl
+      !> Configure Porting/Glossary Porting/config.sh Porting/config_H
+      !> config_h.SH pod/perlfunc.pod t/op/grent.t t/op/pwent.t util.c
+____________________________________________________________________________
+[  2402] By: gsar                                  on 1998/11/29  23:08:42
+    Log: sync Text::Wrap version number
+ Branch: perl
+       ! lib/Text/Wrap.pm
+____________________________________________________________________________
+[  2401] By: gsar                                  on 1998/11/29  22:56:21
+    Log: textfill.t tweak
+ Branch: perl
+       ! t/lib/textfill.t
+____________________________________________________________________________
+[  2400] By: gsar                                  on 1998/11/29  22:50:41
+    Log: update to Text::Wrap 98.112901 from David Muir Sharnoff
+	 
+ Branch: perl
+       + t/lib/textfill.t
+       ! MANIFEST lib/Text/Wrap.pm
+____________________________________________________________________________
+[  2399] By: gsar                                  on 1998/11/29  22:28:05
+    Log: updated to Text::Wrap 98.112801 from CPAN; one published change
+	 has happened without the authors knowledge or consent; the subversive
+	 version (which is in 5.00502) breaks one of the tests in the
+	 authors testsuite; attempts are being made to find a fix that
+	 avoids breaking code already running with the 5.005_02 version
+	 From:    David Muir Sharnoff 
+	 Date:    Sat, 28 Nov 1998 04:34:17 PST
+	 Message-Id: <199811281234.EAA03082@idiom.com>
+	 Subject: Updated Text::Wrap, Time::ParseDate, File::Flock
+ Branch: perl
+       ! lib/Text/Wrap.pm t/lib/textwrap.t
+____________________________________________________________________________
+[  2397] By: nick                                  on 1998/11/29  20:13:58
+    Log: Update docs and English.pm for $^C
+ Branch: perl
+       ! lib/English.pm pod/perlvar.pod
+____________________________________________________________________________
+[  2396] By: jhi                                   on 1998/11/29  20:13:03
+    Log: Mirror #2384.
+ Branch: cfgperl
+       ! t/op/pwent.t
+____________________________________________________________________________
+[  2395] By: jhi                                   on 1998/11/29  19:59:12
+    Log: Newer NetBSDs don't have NSIG in , they need .
+ Branch: cfgperl
+       ! util.c
+____________________________________________________________________________
+[  2394] By: gsar                                  on 1998/11/29  19:49:08
+    Log: updated perlreftut.pod
+ Branch: perl
+       ! pod/perlreftut.pod
+____________________________________________________________________________
+[  2393] By: gsar                                  on 1998/11/29  19:31:56
+    Log: misc tweaks
+ Branch: perl
+       ! ext/IO/Makefile.PL lib/Test.pm t/lib/io_poll.t t/op/sort.t
+____________________________________________________________________________
+[  2392] By: gsar                                  on 1998/11/29  19:31:18
+    Log: notes about -DPERL_POLLUTE
+ Branch: perl
+       ! INSTALL pod/perldelta.pod win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2391] By: gsar                                  on 1998/11/29  19:13:52
+    Log: explain various win32 build caveats more clearly
+ Branch: perl
+       ! README.win32 win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2390] By: gsar                                  on 1998/11/29  16:51:59
+    Log: remove I_POLL detection (Configure will do that now)
+ Branch: perl
+       ! ext/IO/Makefile.PL
+____________________________________________________________________________
+[  2389] By: jhi                                   on 1998/11/29  16:39:16
+    Log: Add I_POLL for IO 1.20.
+ Branch: cfgperl
+       ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+       ! config_h.SH
+____________________________________________________________________________
+[  2388] By: gsar                                  on 1998/11/29  16:23:30
+    Log: add p4desc (augments 'p4 describe' output with diffs for new files)
+ Branch: perl
+       + Porting/p4desc
+       ! MANIFEST
+____________________________________________________________________________
+[  2387] By: gsar                                  on 1998/11/29  16:08:03
+    Log: another threads reliability fix: serialize writes to thr->threadsv
+	 avoid most uses of PL_na (which is much more inefficient than a
+	 simple local); update docs to suit; PL_na now being thr->Tna may
+	 be a minor compatibility issue for extensions--will require dTHR
+	 outside of XSUBs (those get automatic dTHR)
+ Branch: perl
+       ! XSUB.h djgpp/djgpp.c doio.c doop.c dump.c ext/B/B.xs
+       ! ext/DB_File/DB_File.xs ext/DynaLoader/dl_next.xs
+       ! ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs ext/Thread/Thread.xs
+       ! ext/attrs/attrs.xs gv.c malloc.c mg.c op.c
+       ! os2/OS2/REXX/REXX.xs os2/os2.c perl.c perly.c perly.y
+       ! pod/perlcall.pod pod/perlembed.pod pod/perlguts.pod
+       ! pod/perlxs.pod pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c run.c sv.c
+       ! t/op/pwent.t taint.c toke.c universal.c vmesa/vmesa.c
+       ! vms/ext/Stdio/Stdio.xs vms/perly_c.vms vms/vms.c win32/win32.c
+____________________________________________________________________________
+[  2386] By: jhi                                   on 1998/11/29  15:40:42
+    Log: Tune the "if" entry.
+ Branch: cfgperl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2385] By: gsar                                  on 1998/11/29  12:40:28
+    Log: various fixes for race conditions under threads: mutex locks based
+	 on PL_threadnum were seriously flawed, since it means more than one
+	 thread could enter the critical region; PL_na was global instead of
+	 thread-local; child thread could finish and free thr structures
+	 before Thread->new() got around to creating the Thread object;
+	 cv_clone() needed locking, as it mucks with PL_comppad and other
+	 global data; new_struct_thread() needed to lock template-thread's
+	 mutex while copying its data
+ Branch: perl
+       ! embedvar.h ext/Thread/Thread.xs gv.c op.c perl.c perlvars.h
+       ! pp_hot.c thrdvar.h thread.h util.c win32/win32thread.c
+____________________________________________________________________________
+[  2384] By: gsar                                  on 1998/11/29  10:54:38
+    Log: s/warn/print/ on multiply defined groups
+ Branch: perl
+       ! t/op/grent.t
+____________________________________________________________________________
+[  2383] By: gsar                                  on 1998/11/29  10:48:39
+    Log: backout change#2334
+ Branch: perl
+       ! pod/perlfunc.pod pp_hot.c sv.c thrdvar.h
+____________________________________________________________________________
+[  2382] By: jhi                                   on 1998/11/29  10:33:40
+    Log: Better NetInfo behaviour.
+ Branch: cfgperl
+       ! t/op/grent.t t/op/pwent.t
+____________________________________________________________________________
+[  2381] By: jhi                                   on 1998/11/29  10:08:15
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      +> ext/IO/ChangeLog ext/IO/lib/IO/Dir.pm ext/IO/lib/IO/Poll.pm
+      +> ext/IO/lib/IO/Socket/INET.pm ext/IO/lib/IO/Socket/UNIX.pm
+      +> ext/IO/poll.c ext/IO/poll.h pod/perlreftut.pod
+      +> t/lib/io_const.t t/lib/io_dir.t t/lib/io_multihomed.t
+      +> t/lib/io_poll.t t/lib/io_unix.t
+      !> (integrate 58 files)
+____________________________________________________________________________
+[  2380] By: gsar                                  on 1998/11/29  08:22:49
+    Log: prefer IO::Handle for IO if FileHandle:: is empty (as suggested by
+	 Tim Bunce)
+ Branch: perl
+       ! gv.c
+____________________________________________________________________________
+[  2379] By: gsar                                  on 1998/11/29  07:06:43
+    Log: fix for pat.t failure under USE_THREADS
+ Branch: perl
+       ! pp_ctl.c regexec.c
+____________________________________________________________________________
+[  2378] By: nick                                  on 1998/11/28  22:46:57
+    Log: More C.pm tweaks
+	 Save globs even if we have saved cv itself before - may be imported.
+	 
+	 While we don't save "bootstrap" CV we need to provide a stub,
+	 so that if we require it later we don't fall through and attempt
+	 to DynaLoad module again.
+	 
+	 Attempt to save %INC so that "require" does not reload things
+	 we have compiled-in (does not work right yet - seems to be due
+	 to PL_incgv being created in perl_parse() current scheme setting 
+	 GvHV() is "better" than saving the glob, but still does not 
+	 work as I expect). 
+ Branch: perl
+       ! ext/B/B/C.pm
+____________________________________________________________________________
+[  2377] By: gsar                                  on 1998/11/28  22:30:38
+    Log: various tweaks; result passes all tests for normal build on Solaris;
+	 fails two pat.t tests under USE_THREADS; io_poll.t test#3 fails on
+	 win32 due to lack of select() that works on non-socket fds
+ Branch: perl
+       ! ext/IO/poll.c regcomp.c regexec.c scope.c
+       ! t/lib/io_multihomed.t win32/makefile.mk
+____________________________________________________________________________
+[  2376] By: gsar                                  on 1998/11/28  20:44:39
+    Log: add $config_args to perl -V display (suggested by Ilya Zakharevich)
+ Branch: perl
+       ! myconfig
+____________________________________________________________________________
+[  2375] By: gsar                                  on 1998/11/28  20:42:58
+    Log: integrate cfgperl changes into mainline
+ Branch: perl
+      !> Configure ext/POSIX/hints/dynixptx.pl myconfig t/op/grent.t
+      !> t/op/pwent.t t/op/undef.t t/pragma/locale.t util.c
+____________________________________________________________________________
+[  2374] By: gsar                                  on 1998/11/28  20:02:03
+    Log: From: Ilya Zakharevich 
+	 Date: Thu, 5 Nov 1998 02:21:12 -0500 (EST)
+	 Message-Id: <199811050721.CAA27998@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00553] Yet another OS/2 patch
+ Branch: perl
+       ! os2/Changes os2/Makefile.SHs os2/os2.c t/pragma/warn/op
+____________________________________________________________________________
+[  2373] By: gsar                                  on 1998/11/28  19:30:06
+    Log: From: Ilya Zakharevich 
+	 Date: Sat, 28 Nov 1998 01:51:56 -0500 (EST)
+	 Message-Id: <199811280651.BAA18095@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_53] Change $#+
+ Branch: perl
+       ! mg.c pod/perlvar.pod t/op/pat.t
+____________________________________________________________________________
+[  2372] By: gsar                                  on 1998/11/28  19:28:00
+    Log: From: Ilya Zakharevich 
+	 Date: Sat, 28 Nov 1998 00:33:17 -0500 (EST)
+	 Message-Id: <199811280533.AAA25654@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_53] Finishing off SNOBOL: $1 in (?{})
+ Branch: perl
+       ! embedvar.h mg.c objXSUB.h perl.c regexec.c t/op/pat.t
+       ! thrdvar.h
+____________________________________________________________________________
+[  2371] By: gsar                                  on 1998/11/28  19:23:53
+    Log: From: Ilya Zakharevich 
+	 Date: Fri, 27 Nov 1998 16:16:48 -0500 (EST)
+	 Message-Id: <199811272116.QAA03502@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_53] better -Mre=debugcolor
+ Branch: perl
+       ! embedvar.h objXSUB.h regexec.c thrdvar.h
+____________________________________________________________________________
+[  2370] By: gsar                                  on 1998/11/28  19:21:17
+    Log: From: Ilya Zakharevich 
+	 Date: Fri, 27 Nov 1998 15:22:19 -0500 (EST)
+	 Message-Id: <199811272022.PAA17874@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] regcolors
+ Branch: perl
+       ! embed.h global.sym objXSUB.h proto.h regcomp.c regexec.c
+____________________________________________________________________________
+[  2369] By: gsar                                  on 1998/11/28  19:00:15
+    Log: allow final period in a file (not followed by a newline) to
+	 terminate format spec
+ Branch: perl
+       ! toke.c
+____________________________________________________________________________
+[  2368] By: gsar                                  on 1998/11/28  18:58:25
+    Log: Liblist tweak suggested by Swen Thuemmler ;
+	 add C<$Config{installarchlib}/CORE> to the default locations searched
+	 on win32
+ Branch: perl
+       ! lib/ExtUtils/Liblist.pm
+____________________________________________________________________________
+[  2367] By: gsar                                  on 1998/11/28  18:46:05
+    Log: applied suggested patch with PERL_OBJECT tweaks
+	 From: Ilya Zakharevich 
+	 Date: Thu, 26 Nov 1998 02:46:20 -0500 (EST)
+	 Message-Id: <199811260746.CAA23164@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_53] Enable $_ and pos() inside (?{ CODE }) in RExen
+ Branch: perl
+       ! embed.h embed.pl embedvar.h objXSUB.h pp_ctl.c proto.h
+       ! regexec.c t/op/pat.t thrdvar.h
+____________________________________________________________________________
+[  2366] By: gsar                                  on 1998/11/28  18:38:34
+    Log: additional documentation for qr//
+	 From: Ilya Zakharevich 
+	 Message-Id: <199811260751.CAA24560@monk.mps.ohio-state.edu>
+	 Date: Thu, 26 Nov 1998 02:51:09 -0500 (EST)
+	 Subject: [PATCH 5.005_*] Documentation (fwd)
+ Branch: perl
+       ! pod/perlfunc.pod pod/perlop.pod pod/perlpod.pod
+____________________________________________________________________________
+[  2365] By: gsar                                  on 1998/11/28  18:35:35
+    Log: From: Ilya Zakharevich 
+	 Date: Wed, 25 Nov 1998 23:33:45 -0500 (EST)
+	 Message-Id: <199811260433.XAA29281@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] Fix \G in REx without //g
+ Branch: perl
+       ! cop.h embedvar.h objXSUB.h pp.c pp_ctl.c pp_hot.c regexec.c
+       ! regexp.h t/op/pat.t thrdvar.h
+____________________________________________________________________________
+[  2364] By: gsar                                  on 1998/11/28  18:24:20
+    Log: update Test.pm to Test-1.12; tweak 're' detection
+ Branch: perl
+       ! lib/Test.pm
+____________________________________________________________________________
+[  2363] By: gsar                                  on 1998/11/28  18:12:04
+    Log: avoid command-line quoting portability problems in lex_assign.t
+ Branch: perl
+       ! t/op/lex_assign.t
+____________________________________________________________________________
+[  2362] By: gsar                                  on 1998/11/28  18:08:50
+    Log: From: John Tobey 
+	 Date: Thu, 19 Nov 1998 14:14:15 -0500 (EST)
+	 Message-Id: 
+	 Subject: PATCH: document English.pm sawampersand and thread issues
+ Branch: perl
+       ! lib/English.pm pod/perlvar.pod
+____________________________________________________________________________
+[  2361] By: gsar                                  on 1998/11/28  18:03:04
+    Log: fix uninitialized warnings
+	 From: Brian Callaghan 
+	 Date: Thu, 19 Nov 1998 17:49:10 -0800
+	 Message-Id: <3654CA96.B64FCAEB@itginc.com>
+	 Subject: Complete.pm patch (version 1.1)
+ Branch: perl
+       ! lib/Term/Complete.pm
+____________________________________________________________________________
+[  2360] By: gsar                                  on 1998/11/28  17:59:16
+    Log: s/Array/List/ suggested by John Tobey
+ Branch: perl
+       ! pod/perldata.pod
+____________________________________________________________________________
+[  2359] By: gsar                                  on 1998/11/28  17:47:48
+    Log: update tie() entry in perlfunc to reflect TIEARRAY and TIEHANDLE
+ Branch: perl
+       ! lib/Tie/Handle.pm pod/perlfunc.pod
+____________________________________________________________________________
+[  2358] By: jhi                                   on 1998/11/28  17:23:15
+    Log: Revamp the locale tests.
+	 (0) Instead of rewiring a few locales scan for them.
+	 (1) Bogus test #101 removed.
+	 (2) All the locales are checked, the lists of failed
+	 and non-failed ones are displayed.
+	 (3) The test #103 is again 'active' so that it may fail.
+	 (4) To balance (3) a hopefully pacifying message is shown
+	 if the #103 fails.
+ Branch: cfgperl
+       ! t/pragma/locale.t
+____________________________________________________________________________
+[  2357] By: gsar                                  on 1998/11/28  17:21:07
+    Log: add perlreftut.pod
+ Branch: perl
+       + pod/perlreftut.pod
+       ! MANIFEST pod/Makefile pod/buildtoc pod/perl.pod
+       ! pod/perlref.pod pod/roffitall vms/descrip_mms.template
+       ! win32/pod.mak
+____________________________________________________________________________
+[  2356] By: jhi                                   on 1998/11/28  16:58:01
+    Log: Change #2346 fallout.
+ Branch: cfgperl
+       ! t/op/undef.t
+____________________________________________________________________________
+[  2355] By: gsar                                  on 1998/11/28  16:46:43
+    Log: IO.xs tweaks; avoid coredump in io_xs.t; remove newCONSTSUB();
+	 ANSI prototypes
+ Branch: perl
+       ! ext/IO/IO.xs
+____________________________________________________________________________
+[  2354] By: gsar                                  on 1998/11/28  16:08:07
+    Log: add IO-1.20; mess with t/lib/io_*.t in an attempt to
+	 keep platform hacks that aren't in the 1.20 dist; add new files
+	 to MANIFEST; hack Makefile.PL; result hasn't been tested
+	 anywhere
+ Branch: perl
+       + ext/IO/ChangeLog ext/IO/lib/IO/Dir.pm ext/IO/lib/IO/Poll.pm
+       + ext/IO/lib/IO/Socket/INET.pm ext/IO/lib/IO/Socket/UNIX.pm
+       + ext/IO/poll.c ext/IO/poll.h t/lib/io_const.t t/lib/io_dir.t
+       + t/lib/io_multihomed.t t/lib/io_poll.t t/lib/io_unix.t
+       ! MANIFEST ext/IO/IO.pm ext/IO/IO.xs ext/IO/Makefile.PL
+       ! ext/IO/README ext/IO/lib/IO/File.pm ext/IO/lib/IO/Handle.pm
+       ! ext/IO/lib/IO/Pipe.pm ext/IO/lib/IO/Seekable.pm
+       ! ext/IO/lib/IO/Select.pm ext/IO/lib/IO/Socket.pm
+       ! t/lib/io_sock.t t/lib/io_udp.t
+____________________________________________________________________________
+[  2353] By: jhi                                   on 1998/11/28  15:51:03
+    Log: Locale collation, ctype, and numeric, were initialized wrong
+	 (if LC_ALL or LANG were unset, so were the collation/ctype/numeric),
+	 as reported by
+	 
+	 From: Ilya.Sandler@etak.com (Ilya Sandler)
+	 Subject: a bug in locale handling: LC_COLLATE ignored sometimes
+	 To: perlbug@perl.com
+	 Date: 25 Nov 1998 04:53:52 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! util.c
+____________________________________________________________________________
+[  2352] By: nick                                  on 1998/11/28  15:21:59
+    Log: Implement $^C to allow perl access to -c flag - I think this 
+	 was agreed once...
+ Branch: perl
+       ! gv.c mg.c
+____________________________________________________________________________
+[  2351] By: jhi                                   on 1998/11/28  15:14:24
+    Log: Change #2251 fixup.
+ Branch: cfgperl
+       ! myconfig
+____________________________________________________________________________
+[  2350] By: jhi                                   on 1998/11/28  14:58:19
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      +> ext/Devel/Peek/Changes ext/Devel/Peek/Makefile.PL
+      +> ext/Devel/Peek/Peek.pm ext/Devel/Peek/Peek.xs
+      +> pod/perl5005delta.pod
+      !> (integrate 49 files)
+____________________________________________________________________________
+[  2349] By: jhi                                   on 1998/11/28  14:27:36
+    Log: Passwd and group file groveling.
+ Branch: cfgperl
+       ! t/op/grent.t t/op/pwent.t
+____________________________________________________________________________
+[  2348] By: gsar                                  on 1998/11/28  14:09:50
+    Log: more conservative version of changes#2345,2346,2347; those break
+	 C which seems to be extensively used in
+	 the libs :-(
+ Branch: perl
+       ! pp.c t/op/method.t
+____________________________________________________________________________
+[  2347] By: gsar                                  on 1998/11/28  13:36:08
+    Log: tweak bogus test
+ Branch: perl
+       ! t/op/method.t
+____________________________________________________________________________
+[  2346] By: gsar                                  on 1998/11/28  13:20:34
+    Log: test cases for previous change
+ Branch: perl
+       ! t/op/undef.t
+____________________________________________________________________________
+[  2345] By: gsar                                  on 1998/11/28  13:07:17
+    Log: fix typo in pp_defined() causing C to fail
+ Branch: perl
+       ! pp.c
+____________________________________________________________________________
+[  2344] By: gsar                                  on 1998/11/28  13:03:29
+    Log: s/comment/comment_t/ tweak (suggested by John Gorman
+	 )
+ Branch: perl
+       ! ext/B/B/Assembler.pm ext/B/B/Disassembler.pm
+____________________________________________________________________________
+[  2343] By: gsar                                  on 1998/11/28  12:52:40
+    Log: add (stub) perldelta.pod
+ Branch: perl
+       + pod/perldelta.pod
+____________________________________________________________________________
+[  2342] By: gsar                                  on 1998/11/28  12:49:26
+    Log: rename perldelta.pod to perl5005delta.pod in preparation for
+	 starting a new one
+ Branch: perl
+      +> pod/perl5005delta.pod
+       - pod/perldelta.pod
+       ! MANIFEST pod/perl.pod
+____________________________________________________________________________
+[  2341] By: gsar                                  on 1998/11/28  12:41:55
+    Log: fix MALLOC_LOCK #define
+ Branch: perl
+       ! malloc.c
+____________________________________________________________________________
+[  2340] By: gsar                                  on 1998/11/28  12:18:23
+    Log: From: Ilya Zakharevich 
+	 Date: Sun, 15 Nov 1998 20:25:50 -0500 (EST)
+	 Message-Id: <199811160125.UAA05268@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_53] OS/2 events get closer to Perl
+ Branch: perl
+       ! os2/Changes os2/os2.c os2/os2.sym os2/os2ish.h
+____________________________________________________________________________
+[  2339] By: jhi                                   on 1998/11/28  11:59:01
+    Log: Add -lm to dynix/ptx POSIX hints.
+	 From: "Martin J. Bligh" 
+	 To: jhi@iki.fi
+	 Subject: Re: Making Perl work on DYNIX/ptx
+	 Date: Wed, 25 Nov 1998 10:34:41 -0800
+	 Message-ID: <1457015007.911990081@w-186d219.rhe.sequent.com>
+ Branch: cfgperl
+       ! ext/POSIX/hints/dynixptx.pl
+____________________________________________________________________________
+[  2338] By: jhi                                   on 1998/11/28  11:57:19
+    Log: Detypo.
+ Branch: cfgperl
+       ! lib/filetest.pm
+____________________________________________________________________________
+[  2337] By: jhi                                   on 1998/11/28  11:56:29
+    Log: Better LD_LIBRARY_PATH instructions for Bourneists.
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2336] By: gsar                                  on 1998/11/28  11:41:14
+    Log: teach CPAN.pm to ignore beta perl distributions when looking for
+	 modules
+	 From: root@dogberry.rutgers.edu (root)
+	 Date: Thu, 12 Nov 1998 23:08:39 -0500
+	 Message-Id: <199811130408.XAA10578@dogberry.rutgers.edu>
+	 Subject: recompile tries getting a perl distribution
+ Branch: perl
+       ! lib/CPAN.pm
+____________________________________________________________________________
+[  2335] By: gsar                                  on 1998/11/28  11:27:46
+    Log: make $1 et al readonly under threads; make C fail like
+	 C<$1 = undef> does
+ Branch: perl
+       ! op.c pp.c t/op/undef.t
+____________________________________________________________________________
+[  2334] By: gsar                                  on 1998/11/28  10:24:52
+    Log: s/Regexp/re/ and clarify policy on lowercased object namespaces
+ Branch: perl
+       ! pod/perlfunc.pod pp_hot.c sv.c thrdvar.h
+____________________________________________________________________________
+[  2333] By: gsar                                  on 1998/11/28  09:36:40
+    Log: document changed PERL_HASH()
+ Branch: perl
+       ! pod/perlfunc.pod pod/perlguts.pod
+____________________________________________________________________________
+[  2332] By: nick                                  on 1998/11/27  21:10:27
+    Log: Handle INIT list in C.pm
+	 1. Provide init_av() from B.xs
+	 2. Export it in B.pm
+	 3. Use it in C.pm
+	 Also disable some pruning in savecv() which seems to undo
+	 my previous patch.
+	 Experimental feature - save pathnames of .so files in easily 
+	 grep-able form for use in wrapper to feed to linker.  
+ Branch: perl
+       ! ext/B/B.pm ext/B/B.xs ext/B/B/C.pm
+____________________________________________________________________________
+[  2327] By: gsar                                  on 1998/11/27  15:12:01
+    Log: integrate change#2315 from maint-5.005
+ Branch: perl
+       ! t/op/sort.t
+      !> op.c sv.c
+____________________________________________________________________________
+[  2326] By: gsar                                  on 1998/11/27  15:00:42
+    Log: integrate changes#2304,2305,2306,2308 from maint-5.005
+ Branch: perl
+      !> ext/DynaLoader/dl_mpeix.xs installperl lib/ExtUtils/MM_Unix.pm
+      !> lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm
+      !> lib/ExtUtils/typemap
+____________________________________________________________________________
+[  2325] By: gsar                                  on 1998/11/27  14:46:18
+    Log: malloc bugfix and documentation from Ilya Zakharevich
+	 Date: Tue, 24 Nov 1998 17:24:55 -0500 (EST)
+	 Message-Id: <199811242224.RAA22618@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] Re: Internal coredump
+	 --
+	 Date: Thu, 26 Nov 1998 03:06:10 -0500 (EST)
+	 Message-Id: <199811260806.DAA28913@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] malloc.c documentation
+ Branch: perl
+       ! malloc.c
+____________________________________________________________________________
+[  2324] By: gsar                                  on 1998/11/27  14:41:38
+    Log: B::C tweaks to allow Tk compiles from Nick Ing-Simmons
+ Branch: perl
+       ! ext/B/B/C.pm
+____________________________________________________________________________
+[  2323] By: gsar                                  on 1998/11/27  14:33:44
+    Log: From: maeda@src.ricoh.co.jp
+	 Date: Tue, 24 Nov 1998 10:37:45 +0900
+	 Message-Id: <199811240137.KAA05867@luna.src.ricoh.co.jp>
+	 Subject: format "..." bug
+ Branch: perl
+       ! pp_ctl.c t/op/write.t
+____________________________________________________________________________
+[  2322] By: gsar                                  on 1998/11/27  14:20:12
+    Log: add ext/Devel/Peek
+	 From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Mon, 23 Nov 1998 00:48:11 +0100
+	 Message-ID: <36589ec9.49964585@smtp1.ibm.net>
+	 Subject: [PATCH 5.005_53] Devel::Peek integration
+ Branch: perl
+       + ext/Devel/Peek/Changes ext/Devel/Peek/Makefile.PL
+       + ext/Devel/Peek/Peek.pm ext/Devel/Peek/Peek.xs
+       ! MANIFEST dump.c embed.h embedvar.h global.sym intrpvar.h
+       ! objXSUB.h perl.c perl.h proto.h sv.c sv.h thrdvar.h
+       ! win32/GenCAPI.pl win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2321] By: gsar                                  on 1998/11/27  13:03:08
+    Log: ensure 'make regen_headers' even without perl installed
+	 (suggested by Ilya Zakharevich)
+ Branch: perl
+       ! bytecode.pl warning.pl
+____________________________________________________________________________
+[  2320] By: gsar                                  on 1998/11/27  12:58:36
+    Log: From: Ilya Zakharevich 
+	 Date: Mon, 9 Nov 1998 19:03:25 -0500 (EST)
+	 Message-Id: <199811100003.TAA05815@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] Cosmetic malloc patch
+ Branch: perl
+       ! malloc.c
+____________________________________________________________________________
+[  2319] By: gsar                                  on 1998/11/27  12:56:13
+    Log: eliminate dup hunk from integration
+ Branch: perl
+       ! lib/filetest.pm perl.h
+____________________________________________________________________________
+[  2318] By: gsar                                  on 1998/11/27  12:50:08
+    Log: integrate cfgperl changes into mainline
+ Branch: perl
+      +> ext/DB_File/hints/dynixptx.pl ext/POSIX/hints/dynixptx.pl
+       ! pod/perlfaq4.pod
+      !> (integrate 30 files)
+____________________________________________________________________________
+[  2317] By: jhi                                   on 1998/11/27  11:38:13
+    Log: C<-x>.
+ Branch: cfgperl
+       ! lib/filetest.pm
+____________________________________________________________________________
+[  2316] By: jhi                                   on 1998/11/27  11:10:22
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      !> XSUB.h embed.h embed.pl embedvar.h ext/Thread/Thread.xs
+      !> iperlsys.h mg.c objXSUB.h op.c pp_ctl.c pp_sys.c proto.h
+      !> t/comp/package.t t/lib/dumper.t t/pragma/warn/pp_ctl
+      !> universal.c util.c win32/GenCAPI.pl win32/win32.h
+      !> win32/win32sck.c
 ____________________________________________________________________________
 [  2315] By: gbarr                                 on 1998/11/27  05:16:50
-        Log: integrate change#2246 from mainline, while still allowing
-             C
-             
-             allow C
-     Branch: maint-5.005/perl
-           ! op.c sv.c
-          !> t/op/sort.t
-____________________________________________________________________________
-[  2314] By: gbarr                                 on 1998/11/27  04:03:58
-        Log: integrate change#2159 from mainline
-             
-             Data::Dumper update
-     Branch: maint-5.005/perl
-	  !> ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm
-          !> ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Todo t/lib/dumper.t
-____________________________________________________________________________
-[  2313] By: gbarr                                 on 1998/11/27  03:04:21
-        Log: Fix typo in change#2312
-     Branch: maint-5.005/perl
-           ! ext/Thread/Thread.xs
-____________________________________________________________________________
-[  2312] By: gbarr                                 on 1998/11/27  03:03:03
-        Log: integrate change#1837,1967,1986,2060,2068,2146,2214,2224,2300,2301 from mainline
-             
-             (via private mail)
-             From: Charles Bailey 
-             Date: Sat, 05 Sep 1998 01:23:58 -0400 (EDT)
-             Message-id: <01J1FH7R43NS002F14@cor.newman.upenn.edu>
-             Subject: [Patch 5.005_02] Miscellaneous VMS cleanup
-             
-             correct bugs exposed in MM_Unix.pm by commenting out Selfloader
-             (MAN3PODS cannot be set to ' '; stray stricture violation)
-             
-             qualify names of builtins
-             
-             handle '::' in section names properly
-             From: Graham Barr 
-             Date: Sat, 17 Oct 1998 12:57:54 -0500
-             Message-ID: <19981017125754.C510@pobox.com>
-             Subject: Re: pod2html
-             
-             From: Zachary Miller 
-             Date: Tue, 20 Oct 1998 20:52:20 -0500
-             Message-Id: <199810210152.UAA07792@simon.er.usgs.gov>
-             Subject: Exporter.pm's export_to_level() argument handling buggy
-             
-             hand-apply whitespace-mutiliated patch
-             From: "vishal bhatia" 
-             Date: Wed, 28 Oct 1998 23:45:32 PST
-             Message-ID: <19981029074534.2334.qmail@hotmail.com>
-             Subject: [PATCH 5.005_52]Compiling modules,more bugfixes for B
-             
-             typo in newHVhv()
-             
-             avoid endless loops in Text::Wrap (from a suggestion by Lupe
-             Christoph )
-             
-             properly free temporaries created by threads
-             
-             fix PL_defoutgv leak under threads
-     Branch: maint-5.005/perl
-          !> (integrate 31 files)
-____________________________________________________________________________
-[  2311] By: gbarr                                 on 1998/11/27  01:31:36
-        Log: integrate change#2210 from mainline
-             
-             fix AvREALISH bogusness
-     Branch: maint-5.005/perl
-           ! av.c
-          !> t/op/array.t
-____________________________________________________________________________
-[  2310] By: gbarr                                 on 1998/11/27  00:20:21
-        Log: integrate changes#2235,2299,2300 from mainline
-             
-             catch a neophyte trap: open(), close() etc.
-             
-             fix C misoptimization that fails
-             to set the package for the block properly
-             
-             properly free temporaries created by threads
-     Branch: maint-5.005/perl
-           ! ext/Thread/Thread.xs op.c perl.h util.c
-          !> t/comp/package.t
-____________________________________________________________________________
-[  2309] By: gbarr                                 on 1998/11/27  00:16:36
-        Log: integrate change#2298 from mainline
-     Branch: maint-5.005/perl
-          !> universal.c
+    Log: integrate change#2246 from mainline, while still allowing
+	 C
+	 
+	 allow C
+ Branch: maint-5.005/perl
+       ! op.c sv.c
+      !> t/op/sort.t
 ____________________________________________________________________________
 [  2308] By: gbarr                                 on 1998/11/27  00:11:44
-        Log: Updates for MPE/iX DynaLoader and installperl, via private mail
-             forwarded by Jarkko Hietaniemi from Mark Bixby
-     Branch: maint-5.005/perl
-           ! ext/DynaLoader/dl_mpeix.xs installperl
-____________________________________________________________________________
-[  2307] By: gbarr                                 on 1998/11/27  00:07:27
-        Log: Remove docs for feature not in _0*
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod
+    Log: Updates for MPE/iX DynaLoader and installperl, via private mail
+	 forwarded by Jarkko Hietaniemi from Mark Bixby
+ Branch: maint-5.005/perl
+       ! ext/DynaLoader/dl_mpeix.xs installperl
 ____________________________________________________________________________
 [  2306] By: gbarr                                 on 1998/11/26  23:44:47
-        Log: Allow PL_FILES to have multiple targets from one source by allowing
-             an array ref as the value in the hash
-     Branch: maint-5.005/perl
-	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
-           ! lib/ExtUtils/MakeMaker.pm
+    Log: Allow PL_FILES to have multiple targets from one source by allowing
+	 an array ref as the value in the hash
+ Branch: maint-5.005/perl
+       ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
+       ! lib/ExtUtils/MakeMaker.pm
 ____________________________________________________________________________
 [  2305] By: gbarr                                 on 1998/11/26  23:38:06
-        Log: fix unsigned variables to use SvUV and sv_setuv
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/typemap
+    Log: fix unsigned variables to use SvUV and sv_setuv
+ Branch: maint-5.005/perl
+       ! lib/ExtUtils/typemap
 ____________________________________________________________________________
 [  2304] By: gbarr                                 on 1998/11/26  23:36:17
-        Log: Fix embeded \n in ABSTRACT and <> in AUTHOR
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/MM_Unix.pm
+    Log: Fix embeded \n in ABSTRACT and <> in AUTHOR
+ Branch: maint-5.005/perl
+       ! lib/ExtUtils/MM_Unix.pm
 ____________________________________________________________________________
-[  2302] By: gbarr                                 on 1998/11/26  15:27:03
-        Log: integrate changes#2177,2189,2228,2229 from cfgperl
-             
-             0**0 = 1, from
-             
-             From: d-lewart@uiuc.edu (Daniel S. Lewart)
-             Subject: Math::Complex 0**0 patches
-             Date: Sun, 1 Nov 1998 19:21:48 -0600 (CST)
-             Message-Id: <199811020121.TAA28310@staff2.cso.uiuc.edu>
-             
-             sysio.t failure: fix undefined order of evaluation, from
-             
-             From: Spider Boardman 
-             Subject: Not OK: perl 5.00553 on alpha-thread 5.0 [PATCH]
-             Date: 4 Nov 1998 01:22:30 +0200
-             Message-ID: 
-             
-             From: "Martin J. Bligh" 
-             Message-ID: <187803647.910720870@w-186d219.rhe.sequent.com>
-             Subject: Re: Making Perl work on DYNIX/ptx
-             Date: Tue, 10 Nov 1998 18:01:10 -0800
-             
-             From: "Martin J. Bligh" 
-             Subject: Re: Making Perl work on DYNIX/ptx
-             Date: Tue, 10 Nov 1998 16:24:26 -0800
-             Message-ID: <181999655.910715066@w-186d219.rhe.sequent.com>
-     Branch: maint-5.005/perl
-          +> ext/DB_File/hints/dynixptx.pl ext/POSIX/hints/dynixptx.pl
-           ! pp_sys.c
-          !> hints/dynixptx.sh lib/Math/Complex.pm t/lib/complex.t
+[  2301] By: gsar                                  on 1998/11/26  10:16:54
+    Log: fix PL_defoutgv leak under threads
+ Branch: perl
+       ! ext/Thread/Thread.xs
 ____________________________________________________________________________
-[  2297] By: gbarr                                 on 1998/11/24  02:32:38
-        Log: integrate change#2266 from cfgperl
-             From: John Tobey 
-             Subject: [PATCH] perlfaq typos
-             To: perl5-porters@perl.com
-             Date: 22 Nov 1998 04:25:15 +0200
-             Message-ID: 
-     Branch: maint-5.005/perl
-	  !> pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
-          !> pod/perlfaq7.pod pod/perlfaq8.pod
+[  2300] By: gsar                                  on 1998/11/26  09:04:44
+    Log: properly free temporaries created by threads
+ Branch: perl
+       ! ext/Thread/Thread.xs
 ____________________________________________________________________________
-[  2296] By: gbarr                                 on 1998/11/24  01:39:18
-        Log: integrated changes#2011,2092,2106,2108,2143 from cfgperl
-             
-             More robust yacc/bison failure output handling.
-             
-             More robustness.
-             
-             Bison says 'parse error', not 'parser error'.
-             
-             The "parse error" must be converted to "syntax error",
-             just matching it aint' enough.
-             
-             There can be multiple yacc/bison errors.
-     Branch: maint-5.005/perl
-	  !> t/comp/require.t t/op/misc.t t/pragma/subs.t
-          !> t/pragma/warning.t
+[  2299] By: gsar                                  on 1998/11/26  06:51:16
+    Log: fix C misoptimization that fails
+	 to set the package for the block properly
+ Branch: perl
+       ! op.c t/comp/package.t t/lib/dumper.t
 ____________________________________________________________________________
-[  2295] By: gbarr                                 on 1998/11/24  00:49:28
-        Log: integrate change#1823 from mainline
-             From: Joe Buehler 
+[  2298] By: nick                                  on 1998/11/24  22:04:20
+    Log: Part-1 of tweaks to allow Tk to be "compiled"
+	 Make XS_UNIVERSAL_xxx non-static so they can be found in libperl.
+	 (May also need attention to exports etc. - to follow.)
+ Branch: perl
+       ! universal.c
+____________________________________________________________________________
+[  2294] By: jhi                                   on 1998/11/23  10:44:26
+    Log: The new socket tests need in some platforms
+	 to #include .
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2293] By: jhi                                   on 1998/11/23  10:33:42
+    Log: From: Gerben Wierda 
+	 To: Jarkko Hietaniemi 
+	 Subject: Re: Test results for perl5.005_53 under NEXTSTEP 3.3 (intel)
+	 Date: Mon, 23 Nov 1998 10:07:04 +0100
+	 Message-Id: <9811230907.AA06484@AWT.nl>
+	 
+	 NeXTstep NetInfo uses nidump to get the user/group databases.
+ Branch: cfgperl
+       ! t/op/grent.t t/op/pwent.t
+____________________________________________________________________________
+[  2291] By: TimBunce                              on 1998/11/22  22:23:09
+    Log: Updated Porting/patchls utility.
+ Branch: maint-5.004/perl
+       ! Porting/patchls
+____________________________________________________________________________
+[  2288] By: TimBunce                              on 1998/11/22  21:46:11
+    Log: Title:  "Buglet in Sys::Syslog.pm (with fix)"
+	 From:  Henrik Tougaard 
+	 Msg-ID:  
+	 Files:  lib/Sys/Syslog.pm
+ Branch: maint-5.004/perl
+       ! lib/Sys/Syslog.pm
+____________________________________________________________________________
+[  2286] By: jhi                                   on 1998/11/22  19:08:42
+    Log: Change#2284 aid: allow also for plain old MSG_ and SCM_ #defines.
+ Branch: cfgperl
+       ! ext/Socket/Socket.xs
+____________________________________________________________________________
+[  2285] By: jhi                                   on 1998/11/22  18:21:07
+    Log: MSG_PROXY for GNU/Hurd (previously we believed that
+	 all GNU libc platforms have MSG_PROXY.  Untrue).
+	 In fact this ended up as a major MSG_* and SCM_*
+	 update.  The MSG_XXX known to be enums in some
+	 versions of the glibc are now probed for and respective
+	 HAS_MSG_XXX are defined.  While I was at it I noticed
+	 SCM_RIGHTS being similarly an enum.  This reminded me of
+	 an ancient discussion in perl5-porters:
+	 http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/9612/msg01017.html
+	 The BSD socket interface has a nifty feature for passing
+	 file descriptors and credentials--via sockets.  It may be
+	 too late to add this functionality to the CORE but
+	 at least Configure now probes for the functions,
+	 structs, and includes, defining the appropriate
+	 HAS_YYY and I_ZZZ, and the Socket extension exports
+	 the constants, in case somebody wants to write an
+	 extension for this interface.
+ Branch: cfgperl
+       ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+       ! config_h.SH ext/Socket/Socket.pm ext/Socket/Socket.xs
+       ! iperlsys.h
+____________________________________________________________________________
+[  2284] By: jhi                                   on 1998/11/22  18:13:21
+    Log: perlhist.pod 1.54, containing 5_53.
+ Branch: cfgperl
+       ! pod/perlhist.pod
+____________________________________________________________________________
+[  2274] By: TimBunce                              on 1998/11/22  16:25:46
+    Log: Preserve errno around fcntl(fd,F_SETFD,fd > maxsysfd) in do_open()
+ Branch: maint-5.004/perl
+       ! doio.c
+____________________________________________________________________________
+[  2273] By: TimBunce                              on 1998/11/22  16:17:43
+    Log: Improve op/die_exit.t test for implicit close changing $!
+ Branch: maint-5.004/perl
+       ! t/op/die_exit.t
+____________________________________________________________________________
+[  2268] By: jhi                                   on 1998/11/22  14:44:11
+    Log: Fix thinko.
+ Branch: cfgperl
+       ! hints/dynixptx.sh
+____________________________________________________________________________
+[  2267] By: jhi                                   on 1998/11/22  13:19:41
+    Log: Document the d_socket override.
+ Branch: cfgperl
+       ! hints/dynixptx.sh
+____________________________________________________________________________
+[  2266] By: jhi                                   on 1998/11/22  12:12:29
+    Log: From: John Tobey 
+	 Subject: [PATCH] perlfaq typos
+	 To: perl5-porters@perl.com
+	 Date: 22 Nov 1998 04:25:15 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+       ! pod/perlfaq7.pod pod/perlfaq8.pod
+____________________________________________________________________________
+[  2265] By: jhi                                   on 1998/11/22  12:06:29
+    Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+	 Subject: DB_File 1.61 patch for 5.005_53 & 5.005_02
+	 Newsgroups: hut.lists.perl5-porters
+	 To: gsar@engin.umich.edu (Gurusamy Sarathy)
+	 Cc: perl5-porters@perl.org (Perl5 Porters)
+	 Date: 20 Nov 1998 12:20:41 +0200
+ Branch: cfgperl
+       ! ext/DB_File/Changes ext/DB_File/DB_File.pm
+       ! ext/DB_File/DB_File.xs
+____________________________________________________________________________
+[  2264] By: jhi                                   on 1998/11/22  11:55:09
+    Log: NeXTstep /etc/group and /etc/passwd are used only at boot time,
+	 From: Gerben Wierda 
+	 Subject: Test results for perl5.005_53 under NEXTSTEP 3.3 (intel)
+	 To: perlbug@perl.com
+	 Date: 20 Nov 1998 18:39:06 +0200
+	 Lines: 47
+	 Message-ID: 
+ Branch: cfgperl
+       ! t/op/grent.t t/op/pwent.t
+____________________________________________________________________________
+[  2263] By: jhi                                   on 1998/11/22  11:42:59
+    Log: Permission testing is tricky when we have too much power.
+	 Problem reported in
+	 From: Gerben Wierda 
+	 Subject: Test results for perl5.005_53 under NEXTSTEP 3.3 (intel)
+	 To: perlbug@perl.com
+	 Date: 20 Nov 1998 18:39:06 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! t/op/filetest.t
+____________________________________________________________________________
+[  2262] By: gsar                                  on 1998/11/22  11:37:02
+    Log: fix broken CAPI generation
+ Branch: perl
+       ! win32/GenCAPI.pl
+____________________________________________________________________________
+[  2261] By: jhi                                   on 1998/11/22  11:17:00
+    Log: -x should be C<-x>, reported by Gerben Wierda.
+ Branch: cfgperl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2260] By: gsar                                  on 1998/11/22  11:12:02
+    Log: phase 2 of PERL_OBJECT cleanup; objXSUB.h autogeneration
+ Branch: perl
+       ! XSUB.h embed.h embed.pl embedvar.h iperlsys.h objXSUB.h
+       ! proto.h
+____________________________________________________________________________
+[  2259] By: jhi                                   on 1998/11/22  11:06:40
+    Log: From: "Kurt D. Starsinic" 
+	 Subject: Re: [PATCH] Re: pod2man bug in date generated line
+	 To: Albert Dvornik , "Larry W. Virden" 
+	 Cc: perlbug@perl.com
+	 Date: 20 Nov 1998 21:30:17 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! pod/pod2man.PL
+____________________________________________________________________________
+[  2256] By: jhi                                   on 1998/11/21  10:44:01
+    Log: From: Thomas Bowditch 
+	 Subject: Benchmark.pm suggestion
+	 To: jhi@iki.fi, Tim.Bunce@ig.co.uk
+	 Date: Fri, 20 Nov 1998 17:43:46 -0500
+	 Message-Id: <199811202243.RAA26252@harp.camb.inmet.com>
+	 
+	 Added timesum().
+ Branch: cfgperl
+       ! lib/Benchmark.pm
+____________________________________________________________________________
+[  2255] By: gsar                                  on 1998/11/21  08:45:06
+    Log: another win32 portability fix: make sysread() and syswrite()
+	 work on sockets
+ Branch: perl
+       ! pp_sys.c win32/win32.h
+____________________________________________________________________________
+[  2254] By: gsar                                  on 1998/11/21  07:49:06
+    Log: win32_recvfrom() compatibility fix
+ Branch: perl
+       ! win32/win32sck.c
+____________________________________________________________________________
+[  2253] By: jhi                                   on 1998/11/20  08:22:06
+    Log: From: Mark Bixby 
+	 To: jhi@iki.fi
+	 Subject: MPE/iX Perl 5.005_02 oops
+	 Date: Thu, 19 Nov 1998 17:10:45 -0800 (PST)
+	 Message-Id: <199811200110.RAA07395@spock.dis.cccd.edu>
+ Branch: cfgperl
+       ! ext/DynaLoader/dl_mpeix.xs installperl
+____________________________________________________________________________
+[  2252] By: gsar                                  on 1998/11/19  17:38:03
+    Log: mess_sv tweak for change#2249
+ Branch: perl
+       ! util.c
+____________________________________________________________________________
+[  2251] By: jhi                                   on 1998/11/18  12:32:19
+    Log: Display use64bits and usemultiplicity but only if necessary.
+ Branch: cfgperl
+       ! myconfig
+____________________________________________________________________________
+[  2250] By: jhi                                   on 1998/11/18  12:26:50
+    Log: From: Horst von Brand  
+	 Subject: pp.c uses 'unsigned Quad_t'
+	 To: perlbug@perl.com 
+	 Date: Sun, 15 Nov 1998 20:57:05 -0300 
+	 Message-Id: <199811152357.UAA12768@sleipnir.valparaiso.cl>
+ Branch: cfgperl
+       ! perl.h pp.c
+____________________________________________________________________________
+[  2249] By: gsar                                  on 1998/11/18  05:43:11
+    Log: use PL_mess_sv only during global destruction (fixes problems with
+	 overlapping invocations of form()/warn()/die()/croak() trampling on
+	 each other's messages)
+ Branch: perl
+       ! mg.c util.c
+____________________________________________________________________________
+[  2248] By: gsar                                  on 1998/11/18  05:39:36
+    Log: tweak change#2245 to skip previous message if any
+ Branch: perl
+       ! pp_ctl.c t/pragma/warn/pp_ctl
+____________________________________________________________________________
+[  2247] By: jhi                                   on 1998/11/17  11:46:56
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      !> (integrate 26 files)
+____________________________________________________________________________
+[  2246] By: gsar                                  on 1998/11/17  09:41:10
+    Log: allow C
+ Branch: perl
+       ! op.c t/op/sort.t t/pragma/overload.t
+____________________________________________________________________________
+[  2245] By: gsar                                  on 1998/11/17  08:28:26
+    Log: propagate failures in DESTROY() as (optional) warnings
+ Branch: perl
+       ! pod/perldiag.pod pp_ctl.c t/pragma/warn/pp_ctl
+____________________________________________________________________________
+[  2244] By: gsar                                  on 1998/11/17  07:43:08
+    Log: ensure PL_dirty is reinit-ed properly under -DMULTIPLICITY
+ Branch: perl
+       ! perl.c thrdvar.h
+____________________________________________________________________________
+[  2243] By: gsar                                  on 1998/11/17  07:40:09
+    Log: sort WARN_FOO symbols to avoid hash traversal order dependency
+ Branch: perl
+       ! lib/warning.pm warning.h warning.pl
+____________________________________________________________________________
+[  2242] By: gsar                                  on 1998/11/17  06:32:39
+    Log: fix skipspace() to properly account for newlines in eval''-ed
+	 strings (caused bogus line numbers in diagnostics and debugger)
+ Branch: perl
+       ! t/pragma/warn/pp_ctl t/pragma/warn/toke toke.c
+____________________________________________________________________________
+[  2241] By: gsar                                  on 1998/11/17  03:48:12
+    Log: s/Perl_utf8skip/PL_utf8skip/g
+ Branch: perl
+       ! embed.h embed.pl global.sym globvar.sym regexec.c utf8.h
+____________________________________________________________________________
+[  2240] By: gsar                                  on 1998/11/14  06:09:06
+    Log: rework op/groups.t
+ Branch: perl
+       ! t/op/filetest.t t/op/groups.t
+____________________________________________________________________________
+[  2235] By: gsar                                  on 1998/11/14  00:17:05
+    Log: catch a neophyte trap: open(), close() etc.
+ Branch: perl
+       ! op.c
+____________________________________________________________________________
+[  2234] By: gsar                                  on 1998/11/14  00:14:02
+    Log: update Changes
+ Branch: perl
+       ! Changes win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  2233] By: gsar                                  on 1998/11/13  09:43:03
+    Log: doc tweak
+ Branch: perl
+       ! README.win32
+____________________________________________________________________________
+[  2230] By: jhi                                   on 1998/11/12  17:07:45
+    Log: Allow hints file override for d_socket
+	 (based on Sequent-induced change #2229).
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2229] By: jhi                                   on 1998/11/12  16:32:33
+    Log: 
+	 From: "Martin J. Bligh" 
+	 To: jhi@iki.fi
+	 cc: gbarr@ti.com, gbarr@pobox.com, gsar@umich.edu
+	 Subject: Re: Making Perl work on DYNIX/ptx
+	 Date: Tue, 10 Nov 1998 16:24:26 -0800
+	 Message-ID: <181999655.910715066@w-186d219.rhe.sequent.com>
+ Branch: cfgperl
+       ! hints/dynixptx.sh
+____________________________________________________________________________
+[  2228] By: jhi                                   on 1998/11/12  11:40:37
+    Log: From: "Martin J. Bligh" 
+	 Message-ID: <187803647.910720870@w-186d219.rhe.sequent.com>
+	 To: jhi@iki.fi
+	 cc: gbarr@ti.com, gbarr@pobox.com, gsar@umich.edu
+	 Subject: Re: Making Perl work on DYNIX/ptx
+	 Date: Tue, 10 Nov 1998 18:01:10 -0800
+ Branch: cfgperl
+       + ext/DB_File/hints/dynixptx.pl ext/POSIX/hints/dynixptx.pl
+____________________________________________________________________________
+[  2227] By: jhi                                   on 1998/11/12  11:17:42
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      !> Changes XSUB.h av.c embed.h embed.pl embedvar.h
+      !> ext/IPC/SysV/Msg.pm global.sym hv.c lib/Text/Wrap.pm objXSUB.h
+      !> perl.c perl.h pod/perlfunc.pod pod/perlvar.pod pp_sys.c
+      !> proto.h regexec.c t/op/array.t util.c win32/makedef.pl
+      !> win32/win32.c x2p/s2p.PL
+____________________________________________________________________________
+[  2226] By: gsar                                  on 1998/11/11  21:05:42
+    Log: provide -DPERL_POLLUTE
+ Branch: perl
+       ! embed.pl embedvar.h
+____________________________________________________________________________
+[  2225] By: jhi                                   on 1998/11/09  07:45:12
+    Log: From: Hans Mulder 
+	 To: Ilya Zakharevich 
+	 Cc: gsar@engin.umich.edu (Gurusamy Sarathy), jhi@iki.fi,
+	 perl5-porters@perl.org
+	 Subject: Re: [PATCH] Re: Not OK: perl 5.00553 on OPENSTEP-Mach 4_1
+	 (UNINSTALLED)
+	 Date: Sun,  8 Nov 98 22:20:23 +0100
+	 Message-Id: <9811082119.AA11802@icgned.icgroup.nl>
+ Branch: cfgperl
+       ! malloc.c perl.h
+____________________________________________________________________________
+[  2224] By: gsar                                  on 1998/11/09  03:13:14
+    Log: avoid endless loops in Text::Wrap (from a suggestion by Lupe
+	 Christoph )
+ Branch: perl
+       ! lib/Text/Wrap.pm
+____________________________________________________________________________
+[  2223] By: gsar                                  on 1998/11/09  02:09:06
+    Log: fix misplaced brace in s2p (as suggested by Lionel Fourquaux
+	 )
+ Branch: perl
+       ! x2p/s2p.PL
+____________________________________________________________________________
+[  2222] By: gsar                                  on 1998/11/09  01:56:24
+    Log: patches from Hugo van der Sanden 
+	 Date: Wed, 04 Nov 1998 12:19:44 +0000
+	 Message-Id: <199811041219.MAA05451@crypt.compulink.co.uk>
+	 Subject: [PATCH] Re: [5.005_53] read overflow? 
+	 --
+	 Date: Wed, 04 Nov 1998 13:15:18 +0000
+	 Message-Id: <199811041315.NAA05711@crypt.compulink.co.uk>
+	 Subject: [PATCH 5.005_53] perl -V fix
+ Branch: perl
+       ! perl.c regexec.c
+____________________________________________________________________________
+[  2221] By: gsar                                  on 1998/11/09  01:34:56
+    Log: From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Sun, 01 Nov 1998 00:05:01 +0100
+	 Message-ID: <364294bd.18052307@smtp1.ibm.net>
+	 Subject: [PATCH v5.5.53, WIN32] PL_block_type undefined unless DEBUGGING
+ Branch: perl
+       ! Changes win32/makedef.pl
+____________________________________________________________________________
+[  2220] By: gsar                                  on 1998/11/08  21:13:07
+    Log: integrate changes#2120,2168,2218 from maint-5.005;
+	 add new vtbls; s/\bvtbl_/PL_vtbl_/; remove trailing comma in
+	 enum; make regen_headers
+ Branch: perl
+       ! XSUB.h embed.h embedvar.h ext/IPC/SysV/Msg.pm global.sym
+       ! objXSUB.h perl.h pod/perlfunc.pod proto.h util.c win32/win32.c
+____________________________________________________________________________
+[  2219] By: gsar                                  on 1998/11/08  19:42:57
+    Log: integrate cfgperl changes into mainline
+ Branch: perl
+      +> README.vmesa
+      !> Configure MANIFEST Porting/Glossary Porting/config.sh
+      !> Porting/config_H config_h.SH ext/Thread/Thread.xs
+      !> hints/hpux.sh hints/vmesa.sh lib/Math/Complex.pm malloc.c
+      !> perl.h pod/perlfunc.pod pod/perllocale.pod pod/perlport.pod
+      !> pp_sys.c sv.c t/lib/complex.t t/op/groups.t t/op/lex_assign.t
+      !> thread.h vms/subconfigure.com vos/config.h
+____________________________________________________________________________
+[  2218] By: gbarr                                 on 1998/11/08  16:48:44
+    Log: From: Graham Barr 
+	 Date: Mon, 2 Nov 1998 07:38:52 -0600
+	 Message-ID: <19981102073852.A12751@asic.sc.ti.com>
+	 Subject: [PATCH 5.005_*] Re: IPC::Msg 1.03
+ Branch: maint-5.005/perl
+       ! ext/IPC/SysV/Msg.pm
+____________________________________________________________________________
+[  2215] By: gsar                                  on 1998/11/08  02:52:52
+    Log: set close-on-exec bit on pipe() FDs
+ Branch: perl
+       ! pod/perlfunc.pod pod/perlvar.pod pp_sys.c
+____________________________________________________________________________
+[  2214] By: gsar                                  on 1998/11/08  02:27:57
+    Log: typo in newHVhv()
+ Branch: perl
+       ! hv.c
+____________________________________________________________________________
+[  2211] By: jhi                                   on 1998/11/07  21:14:18
+    Log: Finalize the Mach CThreads support.
+	 
+	 From: Hans Mulder 
+	 Date: Sat,  7 Nov 98 22:06:20 +0100
+	 To: Gurusamy Sarathy 
+	 Cc: jhi@iki.fi, perl5-porters@perl.org
+	 Subject: [PATCH] Re: Not OK: perl 5.00553 on OPENSTEP-Mach 4_1 (UNINSTALLED) 
+	 Message-Id: <9811072105.AA07794@icgned.icgroup.nl>
+ Branch: cfgperl
+       ! malloc.c perl.h
+____________________________________________________________________________
+[  2210] By: gsar                                  on 1998/11/06  20:36:50
+    Log: fix AvREALISH bogusness
+ Branch: perl
+       ! av.c t/op/array.t
+____________________________________________________________________________
+[  2209] By: jhi                                   on 1998/11/06  08:05:31
+    Log: Renamed malloc.c ASSERT() macro to P_ASSERT() because
+	 ASSERT() causes problems in {NeXTStep,OpenStep}.
+	 
+	 From: Hans Mulder 
+	 To: Jarkko Hietaniemi 
+	 Subject: Re: Not OK: perl 5.00553 on OPENSTEP-Mach 4_1 (UNINSTALLED)
+	 Date: Fri,  6 Nov 98 01:27:41 +0100
+	 Message-Id: <9811060025.AA27389@icgned.icgroup.nl>
+	 
+	 and
+	 
+	 From: Ilya Zakharevich 
+	 Subject: Re: ASSERT() in malloc.c
+	 To: jhi@iki.fi
+	 Date: Fri, 6 Nov 1998 02:59:29 -0500 (EST)
+	 Message-Id: <199811060759.CAA18915@monk.mps.ohio-state.edu>
+ Branch: cfgperl
+       ! malloc.c
+____________________________________________________________________________
+[  2208] By: jhi                                   on 1998/11/06  07:55:38
+    Log: Mach CThreads needs #include .
+ Branch: cfgperl
+       ! perl.h
+____________________________________________________________________________
+[  2206] By: jhi                                   on 1998/11/05  14:54:52
+    Log: PERL_BADLANG wrongly documented.
+	 
+	 From: ts 
+	 To: jhi@cc.hut.fi
+	 Subject: Re: Locale warning messages
+	 Date: Thu, 5 Nov 1998 14:34:19 +0100 (MET)
+	 Message-Id: <199811051334.OAA24863@moulon.inra.fr>
+	 
+	 and
+	 
+	 From: Ilya Zakharevich 
+	 Subject: Re: PERL_BADLANG
+	 To: jhi@iki.fi
+	 Subject: Re: PERL_BADLANG
+	 Date: Thu, 5 Nov 1998 09:49:00 -0500 (EST)
+	 Message-Id: <199811051449.JAA04238@monk.mps.ohio-state.edu>
+ Branch: cfgperl
+       ! pod/perllocale.pod
+____________________________________________________________________________
+[  2205] By: jhi                                   on 1998/11/05  14:24:33
+    Log: Document all the control flow keywords in perlfunc
+	 so that "perlfunc -f while" works.
+ Branch: cfgperl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2204] By: jhi                                   on 1998/11/05  12:46:02
+    Log: Configure update.  Remove last trace of PTHREADS_CREATED_JOINABLE
+	 (from vos/config.h).  Update Porting/{Glossary,config*}.
+ Branch: cfgperl
+       ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+       ! config_h.SH vos/config.h
+____________________________________________________________________________
+[  2203] By: jhi                                   on 1998/11/05  08:34:39
+    Log: VM/ESA and VMS sig_num_init (change#2101) catchup.
+ Branch: cfgperl
+       ! hints/vmesa.sh vms/subconfigure.com
+____________________________________________________________________________
+[  2202] By: jhi                                   on 1998/11/05  08:03:20
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      !> Changes cop.h doop.c gv.c mg.c perl.c pp_ctl.c sv.c util.c
+      !> win32/Makefile win32/makefile.mk win32/win32.c
+____________________________________________________________________________
+[  2201] By: gsar                                  on 1998/11/05  04:40:44
+    Log: another POPSTACK victim
+ Branch: perl
+       ! cop.h sv.c
+____________________________________________________________________________
+[  2196] By: gsar                                  on 1998/11/05  02:07:54
+    Log: fix a location affected by change#2191, add note about POPSTACK
+ Branch: perl
+       ! cop.h gv.c pp_ctl.c
+____________________________________________________________________________
+[  2195] By: gsar                                  on 1998/11/05  02:04:45
+    Log: makefile notes
+ Branch: perl
+       ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2192] By: gsar                                  on 1998/11/04  23:48:53
+    Log: indeterminate order-of-evaluation fixes
+ Branch: perl
+       ! mg.c
+____________________________________________________________________________
+[  2191] By: gsar                                  on 1998/11/04  23:02:16
+    Log: refetch local stack pointer in POPSTACK
+ Branch: perl
+       ! cop.h perl.c
+____________________________________________________________________________
+[  2190] By: jhi                                   on 1998/11/04  08:50:40
+    Log: Configure update.
+	 Sequent DYNIX/ptx updates: osvers=$4 (instead of $3) of uname -a,
+	 
+	 From: Andy Dougherty 
+	 To: Martin Bligh 
+	 Cc: Jarkko Hietaniemi 
+	 Subject: Re: Perl 5's configure on DYNIX/ptx
+	 Message-Id: 
+	 Date: Tue, 3 Nov 1998 09:35:26 -0500 (EST)
+	 
+	 find sockets also from libsocket, not just libnet.
+	 OS390: $compile_ok instead of $compile for ,
+	 
+	 From: pvhp@forte.com (Peter Prymmer)
+	 To: Thomas.Dorner@start.de, jhi@iki.fi, neale@VMA.TABNSW.COM.AU
+	 Subject: _53 not OK on os390 but looking better than ever
+	 Date: Tue, 3 Nov 98 17:33:22 PST
+	 Message-Id: <9811040133.AA09450@forte.com>
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2189] By: jhi                                   on 1998/11/04  07:43:58
+    Log: sysio.t failure: fix undefined order of evaluation, from
+	 
+	 From: Spider Boardman 
+	 Subject: Not OK: perl 5.00553 on alpha-thread 5.0 [PATCH]
+	 To: perlbug@perl.com
+	 Date: 4 Nov 1998 01:22:30 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! pp_sys.c
+____________________________________________________________________________
+[  2188] By: gsar                                  on 1998/11/04  02:59:16
+    Log: fix return value of win32_pclose()
+ Branch: perl
+       ! win32/win32.c
+____________________________________________________________________________
+[  2187] By: gsar                                  on 1998/11/04  02:56:34
+    Log: s/sv_upgrade/SvUPGRADE/ a couple of places
+ Branch: perl
+       ! Changes doop.c gv.c util.c
+____________________________________________________________________________
+[  2186] By: jhi                                   on 1998/11/03  08:17:52
+    Log: Document quads in pack.
+ Branch: cfgperl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2185] By: jhi                                   on 1998/11/03  07:49:35
+    Log: (IV) vs (I32) vs I_V()
+	 
+	 Subject: [PATCH 5.005_53] Reverting typecast in sv_upgrade()
+	 From: Anton Berezin  
+	 To: "p5p"  
+	 Date: 01 Nov 1998 15:09:11 +0100 
+	 Message-ID: <86hfwjtshk.fsf@lion.plab.ku.dk>
+	 
+	 and
+	 
+	 From: Andy Dougherty  
+	 Date: Mon, 2 Nov 1998 10:17:34 -0500 (EST) 
+	 Message-Id: 
+ Branch: cfgperl
+       ! sv.c
+____________________________________________________________________________
+[  2184] By: jhi                                   on 1998/11/03  07:42:46
+    Log: VM/ESA updates.
+ Branch: cfgperl
+       + README.vmesa
+       ! MANIFEST pod/perlfunc.pod pod/perlport.pod
+____________________________________________________________________________
+[  2183] By: jhi                                   on 1998/11/02  12:58:13
+    Log: The id(1)-parsing is real fun.
+ Branch: cfgperl
+       ! t/op/groups.t
+____________________________________________________________________________
+[  2182] By: jhi                                   on 1998/11/02  12:07:43
+    Log: Decommission the symlink test.
+ Branch: cfgperl
+       ! t/op/lex_assign.t
+____________________________________________________________________________
+[  2181] By: jhi                                   on 1998/11/02  12:03:08
+    Log: Replace ATTR_JOINABLE with true Configure probe
+	 for PTHREAD_CREATE_JOINABLE (or equivalent:
+	 PTHREAD_CREATE_UNDETACHED or __UNDETACHED).
+	 Remove ATTR_JOINABLE itself: Thread.xs uses
+	 PTHREAD_CREATE_JOINABLE (or equivalent) directly.
+	 
+	 Really scan for  only if usethreads.
+ Branch: cfgperl
+       ! Configure config_h.SH ext/Thread/Thread.xs thread.h
+____________________________________________________________________________
+[  2180] By: jhi                                   on 1998/11/02  11:07:34
+    Log: In HP-UX 10.X usethreads only if the required files are present.
+ Branch: cfgperl
+       ! hints/hpux.sh
+____________________________________________________________________________
+[  2179] By: jhi                                   on 1998/11/02  09:10:33
+    Log: Prefer groups(1).
+	 id -Gn can be broken.
+	 id -a can save the day.
+ Branch: cfgperl
+       ! t/op/groups.t
+____________________________________________________________________________
+[  2178] By: jhi                                   on 1998/11/02  08:35:29
+    Log: Detrail enum comma.
+ Branch: cfgperl
+       ! perl.h
+____________________________________________________________________________
+[  2177] By: jhi                                   on 1998/11/02  08:24:12
+    Log: 0**0 = 1, from
+	 
+	 From: d-lewart@uiuc.edu (Daniel S. Lewart)
+	 Subject: Math::Complex 0**0 patches
+	 Date: Sun, 1 Nov 1998 19:21:48 -0600 (CST)
+	 Message-Id: <199811020121.TAA28310@staff2.cso.uiuc.edu>
+	 To: jhi@iki.fi (Jarkko Hietaniemi),
+	 Raphael_Manfredi@grenoble.hp.com (Raphael Manfredi)
+ Branch: cfgperl
+       ! lib/Math/Complex.pm t/lib/complex.t
+____________________________________________________________________________
+[  2168] By: gbarr                                 on 1998/11/01  01:58:58
+    Log: From: jan.dubois@ibm.net (Jan Dubois)   
+	 Date: Fri, 09 Oct 1998 23:28:31 +0200
+	 Message-ID: <36217b7f.3193091@smtp1.ibm.net>
+	 Subject: [PATCH 5.005_02] Allow XS access to vtbl_*s when compiled with PERL_OBJECT
+ Branch: maint-5.005/perl
+       ! XSUB.h
+____________________________________________________________________________
+[  2164] By: jhi                                   on 1998/10/31  15:50:02
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      +> t/op/lex_assign.t
+      !> (integrate 45 files)
+
+----------------
+Version 5.005_53
+----------------
+
+____________________________________________________________________________
+[  2163] By: gsar                                  on 1998/10/31  11:31:12
+    Log: bump patchlevel; other minor fixes for clean build and test on
+	 Solaris and win32
+ Branch: perl
+       ! Changes ext/Data/Dumper/Dumper.xs patchlevel.h pp.h sv.c
+       ! t/lib/dumper.t t/op/groups.t t/op/lex_assign.t
+       ! t/pragma/warn/regexec win32/Makefile win32/config_H.bc
+       ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+       ! x2p/a2p.c
+____________________________________________________________________________
+[  2162] By: gsar                                  on 1998/10/31  09:40:31
+    Log: From: Ilya Zakharevich 
+	 Date: Fri, 30 Oct 1998 18:36:20 -0500 (EST)
+	 Message-Id: <199810302336.SAA17336@monk.mps.ohio-state.edu>
+	 Subject: Re: [PATCH 5.00552] Overloaded <> and deref again
+ Branch: perl
+       ! pp.h
+____________________________________________________________________________
+[  2161] By: gsar                                  on 1998/10/31  09:39:13
+    Log: From: Albert Dvornik 
+	 Date: 30 Oct 1998 17:50:04 -0500
+	 Message-Id: 
+	 Subject: [PATCH perl5.00[45]] a2p: make sprintf less greedy without -o
+ Branch: perl
+       ! x2p/Makefile.SH x2p/a2p.c x2p/a2p.pod x2p/a2p.y x2p/a2py.c
+____________________________________________________________________________
+[  2160] By: gsar                                  on 1998/10/31  09:35:03
+    Log: fix for bugs in -x mode
+	 From: Ilya Zakharevich 
+	 Date: Sat, 31 Oct 1998 00:30:57 -0500 (EST)
+	 Message-Id: <199810310530.AAA22277@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] Fix h2xs
+ Branch: perl
+       ! utils/h2xs.PL
+____________________________________________________________________________
+[  2159] By: gsar                                  on 1998/10/31  09:31:36
+    Log: Data::Dumper update
+ Branch: perl
+       ! ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm
+       ! ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Todo
+____________________________________________________________________________
+[  2153] By: gsar                                  on 1998/10/30  21:40:09
+    Log: add testsuite portion of patch
+	 From: Ilya Zakharevich 
+	 Date: Thu, 29 Oct 1998 23:20:01 -0500 (EST)
+	 Message-Id: <199810300420.XAA25651@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00321 ;-)] 87% speedup
+ Branch: perl
+       + t/op/lex_assign.t
+       ! MANIFEST
+____________________________________________________________________________
+[  2152] By: gsar                                  on 1998/10/30  21:08:11
+    Log: mention the C<$SIG{CHLD} = 'IGNORE'> special case
+ Branch: perl
+       ! pod/perlfunc.pod pod/perlipc.pod pod/perlvar.pod
+____________________________________________________________________________
+[  2151] By: gsar                                  on 1998/10/30  20:18:09
+    Log: From: Mark-Jason Dominus 
+	 Date: Fri, 30 Oct 1998 14:24:23 EST
+	 Message-Id: <19981030192423.27276.qmail@plover.com>
+	 Subject: PATCH: (5.005_02)  a2p should use `chomp' instead of `chop'
+ Branch: perl
+       ! x2p/walk.c
+____________________________________________________________________________
+[  2150] By: gsar                                  on 1998/10/30  20:08:57
+    Log: From: Ilya Zakharevich 
+	 Date: Thu, 29 Oct 1998 22:04:54 -0500 (EST)
+	 Message-Id: <199810300304.WAA23291@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] Overloaded <> and deref again
+ Branch: perl
+       ! gv.c lib/overload.pm perl.h pp.c pp.h pp_hot.c pp_sys.c sv.c
+       ! t/pragma/overload.t toke.c
+____________________________________________________________________________
+[  2149] By: gsar                                  on 1998/10/30  19:38:15
+    Log: From: Roderick Schertler 
+	 Date: Thu, 29 Oct 1998 14:50:18 -0500
+	 Message-ID: <17625.909690618@eeyore.ibcinc.com>
+	 Subject: patch for daemonization docs in perlipc
+ Branch: perl
+       ! pod/perlipc.pod
+____________________________________________________________________________
+[  2148] By: gsar                                  on 1998/10/30  19:36:07
+    Log: From: Anton Berezin 
+	 Date: 29 Oct 1998 17:06:25 +0100
+	 Message-ID: <86pvbbuzcu.fsf@lion.plab.ku.dk>
+	 Subject: [PATCH 5.005_52] win32_opendir() fails on empty drives
+ Branch: perl
+       ! win32/win32.c
+____________________________________________________________________________
+[  2147] By: gsar                                  on 1998/10/30  19:31:37
+    Log: tweaked version of suggested patch
+	 From: Anton Berezin 
+	 Date: 29 Oct 1998 14:48:54 +0100
+	 Message-ID: <86yapzv5q1.fsf@lion.plab.ku.dk>
+	 Subject: [PATCH 5.005_52] One more problem with win32_stat and MSVC
+ Branch: perl
+       ! win32/win32.c
+____________________________________________________________________________
+[  2146] By: gsar                                  on 1998/10/30  19:03:50
+    Log: hand-apply whitespace-mutiliated patch
+	 From: "vishal bhatia" 
+	 Date: Wed, 28 Oct 1998 23:45:32 PST
+	 Message-ID: <19981029074534.2334.qmail@hotmail.com>
+	 Subject: [PATCH 5.005_52]Compiling modules,more bugfixes for B
+ Branch: perl
+       ! ext/B/B/C.pm ext/B/B/CC.pm
+____________________________________________________________________________
+[  2145] By: gsar                                  on 1998/10/30  18:46:58
+    Log: remaining PL_foo stragglers
+ Branch: perl
+       ! doio.c ext/B/B.pm ext/IPC/SysV/SysV.xs ext/Opcode/Opcode.pm
+       ! op.h os2/os2.c vms/gen_shrfls.pl
+____________________________________________________________________________
+[  2144] By: gsar                                  on 1998/10/30  17:38:36
+    Log: integrate cfgperl tweaks into mainline
+ Branch: perl
+      !> Makefile.SH README.posix-bc doio.c ext/POSIX/POSIX.xs proto.h
+      !> t/op/misc.t t/pragma/subs.t t/pragma/warning.t
+____________________________________________________________________________
+[  2143] By: jhi                                   on 1998/10/30  13:27:39
+    Log: There can be multiple yacc/bison errors.
+ Branch: cfgperl
+       ! t/op/misc.t t/pragma/subs.t t/pragma/warning.t
+____________________________________________________________________________
+[  2142] By: jhi                                   on 1998/10/30  13:18:43
+    Log: README.posix-bc update.
+ Branch: cfgperl
+       ! README.posix-bc
+____________________________________________________________________________
+[  2141] By: jhi                                   on 1998/10/30  09:12:59
+    Log: #2133 fallout.
+ Branch: cfgperl
+       ! doio.c ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2140] By: jhi                                   on 1998/10/30  08:43:18
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      +> globvar.sym pp.sym
+       - objpp.h thread.sym
+      !> (integrate 61 files)
+____________________________________________________________________________
+[  2133] By: gsar                                  on 1998/10/30  02:51:39
+    Log: phase 1 of somewhat major rearrangement of PERL_OBJECT stuff
+	 (objpp.h is gone, embed.pl now does some of that); objXSUB.h
+	 should soon be automated also; the global variables that
+	 escaped the PL_foo conversion are now reined in; renamed
+	 MAGIC in regcomp.h to REG_MAGIC to avoid collision with the
+	 type of same name; duplicated lists of pp_things in various
+	 places is now gone; result has only been tested on win32
+ Branch: perl
+       + globvar.sym pp.sym
+       - objpp.h thread.sym
+       ! MANIFEST Makefile.SH av.c bytecode.h byterun.h cop.h doio.c
+       ! doop.c dump.c embed.h embed.pl embedvar.h ext/B/B.xs
+       ! ext/POSIX/POSIX.xs ext/Thread/Thread.xs global.sym globals.c
+       ! gv.c malloc.c mg.c objXSUB.h op.c opcode.h opcode.pl perl.c
+       ! perl.h perl_exp.SH perlvars.h perly.c pod/perlguts.pod pp.c
+       ! pp.h pp_ctl.c pp_hot.c pp_proto.h pp_sys.c proto.h regcomp.c
+       ! regcomp.h regcomp.pl regcomp.sym regexec.c regnodes.h run.c
+       ! scope.c sv.c t/op/filetest.t taint.c thrdvar.h toke.c util.c
+       ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+       ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+       ! win32/makedef.pl win32/makefile.mk win32/perlhost.h
+____________________________________________________________________________
+[  2130] By: jhi                                   on 1998/10/29  15:31:26
+    Log: Pure bison yylex() proto was broken.
+ Branch: cfgperl
+       ! proto.h
+____________________________________________________________________________
+[  2126] By: jhi                                   on 1998/10/29  08:35:54
+    Log: Integrate mainperl.
+ Branch: cfgperl
+      !> INSTALL README.cygwin32 cygwin32/gcc2 cygwin32/ld2
+      !> lib/ExtUtils/MakeMaker.pm lib/perl5db.pl malloc.c pp.c
+      !> pp_ctl.c proto.h regexec.c t/pragma/overload.t
+      !> t/pragma/warn/doio toke.c win32/makefile.mk
+____________________________________________________________________________
+[  2125] By: jhi                                   on 1998/10/29  08:32:38
+    Log: EBCDIC Makefile.SH iteration converges.  Hopefully.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2124] By: jhi                                   on 1998/10/29  08:06:44
+    Log: EBCDIC Makefile.SH tuneup.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2119] By: gsar                                  on 1998/10/28  23:24:04
+    Log: remove doubled hunk from integration
+ Branch: perl
+       ! pp.c
+____________________________________________________________________________
+[  2118] By: gsar                                  on 1998/10/28  22:03:31
+    Log: From: Ilya Zakharevich 
+	 Date: Wed, 28 Oct 1998 01:23:27 -0500 (EST)
+	 Message-Id: <199810280623.BAA06968@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] Minor debugger tweaks
+ Branch: perl
+       ! lib/perl5db.pl
+____________________________________________________________________________
+[  2117] By: gsar                                  on 1998/10/28  22:02:30
+    Log: From: Ilya Zakharevich 
+	 Date: Wed, 28 Oct 1998 01:20:33 -0500 (EST)
+	 Message-Id: <199810280620.BAA06893@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] Make sort respect overloading
+ Branch: perl
+       ! pp_ctl.c proto.h t/pragma/overload.t
+____________________________________________________________________________
+[  2116] By: gsar                                  on 1998/10/28  21:51:11
+    Log: MM patches from Ilya Zakharevich
+	 Date: Wed, 28 Oct 1998 01:27:04 -0500 (EST)
+	 Message-Id: <199810280627.BAA07053@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] Make MakeMaker more verbose
+	 --
+	 Date: Wed, 28 Oct 1998 01:25:36 -0500 (EST)
+	 Message-Id: <199810280625.BAA06980@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] Make MakeMaker ignore errors in kid Makefile.PL
+ Branch: perl
+       ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  2115] By: gsar                                  on 1998/10/28  21:46:19
+    Log: add explicit references to perl source path in ld2 and gcc2
+ Branch: perl
+       ! README.cygwin32 cygwin32/gcc2 cygwin32/ld2
+____________________________________________________________________________
+[  2114] By: gsar                                  on 1998/10/28  21:39:56
+    Log: From: Andy Dougherty 
+	 Date: Tue, 27 Oct 1998 10:40:41 -0500 (EST)
+	 Message-Id: 
+	 Subject: [PATCH] Re: Problems with: Creating an installable tar archive
+ Branch: perl
+       ! INSTALL
+____________________________________________________________________________
+[  2113] By: gsar                                  on 1998/10/28  21:21:16
+    Log: integrate cfgperl into mainline
+ Branch: perl
+      +> t/op/filetest.t
+      !> Configure MANIFEST Makefile.SH config_h.SH perl.h perly.y
+      !> perly_c.diff pp.c proto.h t/comp/require.t t/io/pipe.t
+      !> t/op/groups.t t/op/misc.t t/pragma/subs.t t/pragma/warning.t
+      !> thread.h toke.c vmesa/Makefile
+____________________________________________________________________________
+[  2112] By: gsar                                  on 1998/10/28  21:14:18
+    Log: minor cleanup
+ Branch: perl
+       ! malloc.c regexec.c t/pragma/warn/doio win32/makefile.mk
+____________________________________________________________________________
+[  2111] By: gsar                                  on 1998/10/28  18:52:10
+    Log: smarter C<$SIG{FOO} = BAREWORD;> warning
+ Branch: perl
+       ! toke.c
+____________________________________________________________________________
+[  2110] By: jhi                                   on 1998/10/28  15:07:54
+    Log: posix-bc doesn't want to regenerate a2p.h from a2p.y.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2109] By: jhi                                   on 1998/10/28  13:39:54
+    Log: a2p.y needs to generate also y.tab.h.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2108] By: jhi                                   on 1998/10/28  10:33:36
+    Log: The "parse error" must be converted to "syntax error",
+	 just matching it aint' enough.
+ Branch: cfgperl
+       ! t/comp/require.t t/op/misc.t t/pragma/subs.t
+       ! t/pragma/warning.t
+____________________________________________________________________________
+[  2107] By: jhi                                   on 1998/10/28  10:23:05
+    Log: Regen sig_n{ame,umber}* if slightest doubt.
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2106] By: jhi                                   on 1998/10/28  08:44:49
+    Log: Bison says 'parse error', not 'parser error'.
+ Branch: cfgperl
+       ! t/comp/require.t t/op/misc.t t/pragma/subs.t
+       ! t/pragma/warning.t
+____________________________________________________________________________
+[  2105] By: jhi                                   on 1998/10/28  08:42:09
+    Log: yylex() parametrization.
+ Branch: cfgperl
+       ! proto.h toke.c
+____________________________________________________________________________
+[  2104] By: jhi                                   on 1998/10/28  08:25:09
+    Log: Bring in #2102.
+ Branch: cfgperl
+       ! pp.c
+____________________________________________________________________________
+[  2103] By: jhi                                   on 1998/10/28  08:22:04
+    Log: From: Dominic Dunlop 
+	 Subject: [PATCH 5.005_02]  Re: perl5.004_04 testing problem
+	 Date: 27 Oct 1998 20:47:25 +0200
+	 Message-ID: 
+ Branch: cfgperl
+       ! t/op/groups.t
+____________________________________________________________________________
+[  2102] By: larry                                 on 1998/10/27  18:58:55
+    Log: utf8 change to quotemeta broke EBCDIC
+ Branch: perl
+       ! pp.c
+____________________________________________________________________________
+[  2101] By: jhi                                   on 1998/10/27  12:55:34
+    Log: $Config{sig_num_init}.
+	 Also, a new approach to the 'pthreads-created-joinable': drop
+	 it and use {PTHREAD_CREATE_{JOINABLE,UNDETACHED},__UNDETACHED}
+	 directly. (See also #2096).
+ Branch: cfgperl
+       ! Configure config_h.SH
+____________________________________________________________________________
+[  2100] By: jhi                                   on 1998/10/27  10:48:55
+    Log: Regenerated perly_c.diff.
+ Branch: cfgperl
+       ! perly_c.diff
+____________________________________________________________________________
+[  2099] By: jhi                                   on 1998/10/27  08:42:25
+    Log: First the mangler was Netscape, then it was me.
+ Branch: cfgperl
+       ! vmesa/Makefile
+____________________________________________________________________________
+[  2098] By: jhi                                   on 1998/10/27  08:34:40
+    Log: `id -Gn` might be available where `groups` is not.
+ Branch: cfgperl
+       ! t/op/groups.t
+____________________________________________________________________________
+[  2097] By: jhi                                   on 1998/10/27  08:05:17
+    Log: Netscape had mangled the tabs.
+ Branch: cfgperl
+       ! vmesa/Makefile
+____________________________________________________________________________
+[  2096] By: jhi                                   on 1998/10/27  08:03:05
+    Log: ATTR_JOINABLE logic, based on (private email)
+	 
+	 From: Neale Ferguson 
+	 Subject: Some little diffs
+	 Message-ID: <36350969.DA33E7B4@mailbox.tabnsw.com.au>
+	 Date: Tue, 27 Oct 1998 13:44:42 +1300
+ Branch: cfgperl
+       ! thread.h
+____________________________________________________________________________
+[  2095] By: jhi                                   on 1998/10/27  07:56:57
+    Log: Mach cthreads support based on:
+	 
+	 From: brie@corp.home.net (Brian Harrison)
+	 Subject: perl5.005_02 patch for mthreads
+	 To: perl5-porters@perl.org
+	 Date: 24 Oct 1998 01:01:55 +0300
+	 Message-ID: 
+	 
+	 Pthread yield probe (dejavu)
+	 Cosmetic nanochange for the union semun output.
+	 Better inttypes.h probe.
+	 Undo the 'void *' $selecttype probe from #1971 because
+	 it breaks the $selectminbits test.
+ Branch: cfgperl
+       ! Configure config_h.SH perl.h thread.h
+____________________________________________________________________________
+[  2094] By: jhi                                   on 1998/10/26  13:02:07
+    Log: Also posix-bc wants to reyacc.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2093] By: jhi                                   on 1998/10/26  10:17:21
+    Log: Removed !(*s & 0x80) from pp_quotemeta(), introduced after
+	 5_02 and really breaking things in non-ASCII worlds.
+ Branch: cfgperl
+       ! pp.c
+____________________________________________________________________________
+[  2092] By: jhi                                   on 1998/10/26  09:08:00
+    Log: More robustness.
+ Branch: cfgperl
+       ! t/comp/require.t t/op/misc.t t/pragma/subs.t
+       ! t/pragma/warning.t
+____________________________________________________________________________
+[  2091] By: jhi                                   on 1998/10/26  08:47:32
+    Log: s/YYLEXPARAM/PERL_YYLEX_PARAM_DECL/g
+	 Bison really wants YYLEX_PARAM.
+ Branch: cfgperl
+       ! perly.y proto.h toke.c
+____________________________________________________________________________
+[  2090] By: jhi                                   on 1998/10/26  08:21:25
+    Log: s/YYLEX_PARAM/YYLEXPARAM/
+ Branch: cfgperl
+       ! perly.y
+____________________________________________________________________________
+[  2089] By: jhi                                   on 1998/10/26  08:17:33
+    Log: Indicate skipped subtests.
+ Branch: cfgperl
+       ! t/io/pipe.t
+____________________________________________________________________________
+[  2088] By: jhi                                   on 1998/10/26  08:11:36
+    Log: Integrate from mainperl.
+ Branch: cfgperl
+      !> (integrate 54 files)
+____________________________________________________________________________
+[  2087] By: jhi                                   on 1998/10/26  08:08:02
+    Log: Add test for filetests.
+ Branch: cfgperl
+       + t/op/filetest.t
+       ! MANIFEST
+____________________________________________________________________________
+[  2086] By: gsar                                  on 1998/10/26  02:44:44
+    Log: various win32 tweaks; disable new xs_cpp section (it creates
+	 ambiguous inference graph for %.xs --> %.o)
+ Branch: perl
+       ! ext/Thread/Thread.xs gv.c lib/ExtUtils/MakeMaker.pm mg.c pp.c
+       ! pp_hot.c proto.h win32/GenCAPI.pl win32/Makefile
+       ! win32/config.gc win32/config_H.gc win32/makedef.pl
+       ! win32/makefile.mk win32/win32.h
+____________________________________________________________________________
+[  2085] By: gsar                                  on 1998/10/26  00:50:02
+    Log: sanity-check $Config{drand01} in rand.t
+ Branch: perl
+       ! t/op/rand.t win32/config.bc win32/config.gc win32/config.vc
+       ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+____________________________________________________________________________
+[  2078] By: gsar                                  on 1998/10/25  10:22:04
+    Log: update win32/config*.?c
+ Branch: perl
+       ! Changes win32/config.bc win32/config.gc win32/config.vc
+       ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+____________________________________________________________________________
+[  2077] By: gsar                                  on 1998/10/25  08:39:25
+    Log: From: Graham Barr 
+	 Date: Sat, 24 Oct 1998 21:45:50 -0500
+	 Message-ID: <19981024214550.C508@pobox.com>
+	 Subject: Re: die with a reference  should use overload "" operator
+ Branch: perl
+       ! pp_ctl.c
+____________________________________________________________________________
+[  2076] By: gsar                                  on 1998/10/25  08:37:49
+    Log: From: Graham Barr 
+	 Date: Sat, 24 Oct 1998 12:45:21 -0500
+	 Message-ID: <19981024124521.C512@pobox.com>
+	 Subject: [PATCH 5.005_02] Re: Auto-incrementing tied scalar causes SEGV
+ Branch: perl
+       ! sv.c
+____________________________________________________________________________
+[  2075] By: gsar                                  on 1998/10/25  08:24:09
+    Log: fix C etc.
+ Branch: perl
+       ! toke.c
+____________________________________________________________________________
+[  2074] By: gsar                                  on 1998/10/25  08:12:28
+    Log: list builtins with portability caveats
+	 From: Jarkko Hietaniemi 
+	 Date: Fri, 23 Oct 1998 14:05:23 +0300 (EET DST)
+	 Message-Id: <199810231105.OAA02411@alpha.hut.fi>
+	 Subject: [PATCH] 5.005_02 and 5.005_52: perlfunc.pod and perlport.pod
+ Branch: perl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2073] By: gsar                                  on 1998/10/25  07:55:43
+    Log: fix stack overrun in file test operators
+ Branch: perl
+       ! pp_sys.c
+____________________________________________________________________________
+[  2072] By: gsar                                  on 1998/10/25  07:29:45
+    Log: implement C and other fixes (via private mail)
+	 From:    "vishal bhatia" 
+	 Date:    Wed, 21 Oct 1998 22:59:03 PDT
+	 Message-Id: <19981022055904.20083.qmail@hotmail.com>
+	 Subject: [PATCH 5.005_52] More fixes for B
+ Branch: perl
+       ! ext/B/B.pm ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm
+____________________________________________________________________________
+[  2071] By: gsar                                  on 1998/10/25  07:14:41
+    Log: From: Graham Barr 
+	 Date: Sat, 17 Oct 1998 20:42:41 -0500
+	 Message-ID: <19981017204241.G510@pobox.com>
+	 Subject: Re: taint checking for: use lib "$ENV{'EVIL'}"
+ Branch: perl
+       ! pp_ctl.c
+____________________________________________________________________________
+[  2070] By: gsar                                  on 1998/10/25  07:07:29
+    Log: avoid bogus line number in XSUB redefined warnings
+ Branch: perl
+       ! op.c
+____________________________________________________________________________
+[  2069] By: gsar                                  on 1998/10/25  06:59:03
+    Log: From: Martijn Koster 
+	 Date: Wed, 21 Oct 1998 13:12:03 +0100
+	 Message-ID: <19981021131203.A15661@excitecorp.com>
+	 Subject: File::Path::mkpath reports the wrong error
+ Branch: perl
+       ! lib/File/Path.pm
+____________________________________________________________________________
+[  2068] By: gsar                                  on 1998/10/25  06:54:43
+    Log: From: Zachary Miller 
+	 Date: Tue, 20 Oct 1998 20:52:20 -0500
+	 Message-Id: <199810210152.UAA07792@simon.er.usgs.gov>
+	 Subject: Exporter.pm's export_to_level() argument handling buggy
+ Branch: perl
+       ! lib/Exporter.pm
+____________________________________________________________________________
+[  2067] By: gsar                                  on 1998/10/25  06:50:19
+    Log: From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Wed, 21 Oct 1998 00:55:51 +0200
+	 Message-ID: <36380269.55370608@smtp1.ibm.net>
+	 Subject: Make _really_ sure Dynaloader.xs code is initialized only once
+ Branch: perl
+       ! ext/DynaLoader/DynaLoader_pm.PL
+____________________________________________________________________________
+[  2066] By: gsar                                  on 1998/10/25  06:48:19
+    Log: recognize '%' as a shell metachar for win32
+	 From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Tue, 20 Oct 1998 21:57:35 +0200
+	 Message-ID: <3636ea31.49170453@smtp1.ibm.net>
+	 Subject: [PATCH 5.005_02, Win32]  Re: %ENV% not expanded in backquotes?
+ Branch: perl
+       ! win32/win32.c
+____________________________________________________________________________
+[  2065] By: gsar                                  on 1998/10/25  06:46:30
+    Log: remove FAST_SV_GETS remnant (as suggested by Gisle Aas)
+ Branch: perl
+       ! sv.c
+____________________________________________________________________________
+[  2064] By: gsar                                  on 1998/10/25  06:45:09
+    Log: From: Gisle Aas 
+	 Date: 20 Oct 1998 14:24:44 +0200
+	 Message-ID: 
+	 Subject: ord() and unpack("U*",...) should not be negative
+ Branch: perl
+       ! pp.c
+____________________________________________________________________________
+[  2063] By: gsar                                  on 1998/10/25  06:42:29
+    Log: From: Ilya Zakharevich 
+	 Date: Sun, 18 Oct 1998 23:20:57 -0400 (EDT)
+	 Message-Id: <199810190320.XAA28249@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] Improve sbrk() on OS/2
+ Branch: perl
+       ! os2/os2.c
+____________________________________________________________________________
+[  2062] By: gsar                                  on 1998/10/25  06:41:26
+    Log: From: Ilya Zakharevich 
+	 Date: Sun, 18 Oct 1998 23:10:29 -0400 (EDT)
+	 Message-Id: <199810190310.XAA28102@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] Speed up aassign
+ Branch: perl
+       ! pp_hot.c
+____________________________________________________________________________
+[  2061] By: gsar                                  on 1998/10/25  06:39:04
+    Log: From: Graham Barr 
+	 Date: Sat, 17 Oct 1998 22:22:02 -0500
+	 Message-ID: <19981017222202.J510@pobox.com>
+	 Subject: Re: '*' prototype does not allow bareword with strict
+ Branch: perl
+       ! toke.c
+____________________________________________________________________________
+[  2060] By: gsar                                  on 1998/10/25  06:37:34
+    Log: handle '::' in section names properly
+	 From: Graham Barr 
+	 Date: Sat, 17 Oct 1998 12:57:54 -0500
+	 Message-ID: <19981017125754.C510@pobox.com>
+	 Subject: Re: pod2html
+ Branch: perl
+       ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  2059] By: gsar                                  on 1998/10/25  06:33:43
+    Log: integrate changes#1982,2014,2021 (from maint-5.005)
+ Branch: perl
+      !> av.c doop.c ext/POSIX/POSIX.xs hv.c lib/ExtUtils/MakeMaker.pm
+      !> mg.c mg.h pp.c pp_hot.c pp_sys.c scope.c t/op/tie.t
+____________________________________________________________________________
+[  2058] By: gsar                                  on 1998/10/25  05:44:17
+    Log: allow more win32 symbol exports (suggested by Jan Dubois)
+ Branch: perl
+       ! win32/makedef.pl
+____________________________________________________________________________
+[  2057] By: gsar                                  on 1998/10/25  05:40:40
+    Log: integrate change#2053 from maint-5.005
+ Branch: perl
+      !> cop.h t/cmd/while.t
+____________________________________________________________________________
+[  2056] By: gsar                                  on 1998/10/25  05:16:41
+    Log: commented version of a patch suggested by Drago Goricanec
+	 From: Jarkko Hietaniemi 
+	 Date: 16 Oct 1998 15:24:45 +0300
+	 Message-ID: 
+	 Subject: Re: [PATCH 5.005_52] Linux select fails with more than 32 FDs
+ Branch: perl
+       ! pp_sys.c
+____________________________________________________________________________
+[  2055] By: gsar                                  on 1998/10/25  05:11:03
+    Log: include eof() in description of buffering caveats
+	 From: Anton Berezin 
+	 Date: Fri, 16 Oct 1998 19:22:41 +0200 (CEST)
+	 Message-Id: <199810161722.TAA28813@lion.plab.ku.dk>
+	 Subject: [DOCPATCH] pod/perlfunc.pod
+ Branch: perl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2054] By: gsar                                  on 1998/10/25  05:07:42
+    Log: disallow 'x' in hex numbers (except leading '0x')
+	 From: Gisle Aas 
+	 Date: 16 Oct 1998 16:33:12 +0200
+	 Message-ID: 
+	 Subject: Re: [PATCH 5.005_52] 'x' is not a legal hex digit
+ Branch: perl
+       ! perlvars.h t/op/oct.t util.c
+____________________________________________________________________________
+[  2052] By: gsar                                  on 1998/10/25  04:49:04
+    Log: avoid the circular refcnt logic in magic_mutexfree()
+ Branch: perl
+       ! mg.c pp.c pp_hot.c
+____________________________________________________________________________
+[  2051] By: gsar                                  on 1998/10/25  04:35:07
+    Log: properly restore PL_rsfp_filters after require
+ Branch: perl
+       ! embed.h global.sym objXSUB.h objpp.h pp_ctl.c proto.h scope.c
+       ! scope.h
+____________________________________________________________________________
+[  2050] By: gsar                                  on 1998/10/25  02:42:32
+    Log: integrate cfgperl changes back into mainline
+ Branch: perl
+      +> README.posix-bc hints/posix-bc.sh hints/vmesa.sh
+      +> vmesa/Makefile vmesa/vmesa.c vmesa/vmesaish.h
+      !> (integrate 33 files)
+____________________________________________________________________________
+[  2049] By: gsar                                  on 1998/10/25  01:30:48
+    Log: avoid "mysterious" compile-time failures without messages
+ Branch: perl
+       ! gv.c
+____________________________________________________________________________
+[  2041] By: gsar                                  on 1998/10/23  21:11:56
+    Log: checkin jpl under //depot/perlext/jpl/...
+ Branch: perlext
+       + jpl/JNI/Changes jpl/JNI/JNI.pm jpl/JNI/JNI.xs jpl/JNI/MANIFEST
+       + jpl/JNI/Makefile.PL jpl/JNI/test.pl jpl/JNI/typemap
+       + jpl/JPL/AutoLoader.pm jpl/JPL/Class.pm jpl/JPL/Compile.pm
+       + jpl/JPL/Makefile.PL jpl/JPL_Rolo/JPL_Rolo.jpl
+       + jpl/JPL_Rolo/Makefile.PL jpl/JPL_Rolo/README
+       + jpl/JPL_Rolo/cardfile jpl/PerlInterpreter/Makefile
+       + jpl/PerlInterpreter/Makefile.PL
+       + jpl/PerlInterpreter/PerlInterpreter.c
+       + jpl/PerlInterpreter/PerlInterpreter.h
+       + jpl/PerlInterpreter/PerlInterpreter.java jpl/README
+       + jpl/Sample/Makefile.PL jpl/Sample/Sample.jpl
+       + jpl/Test/Makefile.PL jpl/Test/Test.jpl jpl/bin/jpl
+       + jpl/get_jdk/README jpl/get_jdk/get_jdk.pl
+       + jpl/get_jdk/jdk_hosts jpl/install-jpl
+____________________________________________________________________________
+[  2040] By: larry                                 on 1998/10/23  19:31:42
+    Log: chr(0xFFFFFFFF) didn't translate to utf8 character
+ Branch: perl
+       ! pp.c
+____________________________________________________________________________
+[  2039] By: larry                                 on 1998/10/23  18:48:34
+    Log: tr///d does not seem to work
+ Branch: perl
+       ! lib/utf8_heavy.pl
+____________________________________________________________________________
+[  2038] By: larry                                 on 1998/10/23  18:00:41
+    Log: Program with utf8 identifiers fails to compile
+ Branch: perl
+       ! doop.c gv.c op.c pp.c pp_hot.c toke.c
+____________________________________________________________________________
+[  2037] By: jhi                                   on 1998/10/23  14:04:51
+    Log: Test suite portability:
+	 - posix-bc does not write to broken pipes
+	 - filehand #11 only iff we have fork
+	 - warning.t can now match $expected using regular expressions
+ Branch: cfgperl
+       ! t/io/pipe.t t/lib/filehand.t t/pragma/warn/doio
+       ! t/pragma/warning.t
+____________________________________________________________________________
+[  2036] By: jhi                                   on 1998/10/23  12:12:07
+    Log: yacc clarification.
+ Branch: cfgperl
+       ! README.posix-bc
+____________________________________________________________________________
+[  2035] By: jhi                                   on 1998/10/23  12:09:59
+    Log: Some C compilers get upset about 8-bit characters in /* comments. */
+ Branch: cfgperl
+       ! mg.c
+____________________________________________________________________________
+[  2034] By: jhi                                   on 1998/10/22  09:11:52
+    Log: Configure update: both for pthread_yield more robust
+	 testing (all variants of pthread_attr_getdetachstate()) --
+	 and because Configure was broken in major way! About 1000
+	 last lines were truncated.
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2033] By: jhi                                   on 1998/10/22  07:47:10
+    Log: DJGPP feedback for #2028.
+ Branch: cfgperl
+       ! thread.h
+____________________________________________________________________________
+[  2032] By: jhi                                   on 1998/10/21  13:03:57
+    Log: yielding, the saga continues.
+ Branch: cfgperl
+       ! Configure config_h.SH
+      !> av.c lib/constant.pm op.c pod/perldiag.pod pp_ctl.c
+      !> t/op/goto.t t/pragma/constant.t
+____________________________________________________________________________
+[  2031] By: jhi                                   on 1998/10/21  09:15:42
+    Log: VM/ESA feedback for #2028.
+ Branch: cfgperl
+       ! Configure config_h.SH thread.h
+____________________________________________________________________________
+[  2030] By: gsar                                  on 1998/10/21  04:22:53
+    Log: fix handling of mayhaps-extended @_ in goto &sub
+ Branch: perl
+       ! av.c pp_ctl.c t/op/goto.t
+____________________________________________________________________________
+[  2029] By: gsar                                  on 1998/10/21  00:54:14
+    Log: restore sanity to "constant" references
+ Branch: perl
+       ! lib/constant.pm op.c pod/perldiag.pod t/pragma/constant.t
+____________________________________________________________________________
+[  2028] By: jhi                                   on 1998/10/20  15:01:20
+    Log: OLD_PTHREADS_API reorganizing.
+ Branch: cfgperl
+       ! dosish.h ext/Thread/Thread.xs perl.h thread.h util.c
+       ! vmesa/vmesaish.h
+____________________________________________________________________________
+[  2027] By: jhi                                   on 1998/10/20  14:14:51
+    Log: #2026 fallout.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2026] By: jhi                                   on 1998/10/20  11:47:21
+    Log: VM/ESA update.
+ Branch: cfgperl
+       ! Makefile.SH vmesa/vmesa.c vmesa/vmesaish.h
+____________________________________________________________________________
+[  2025] By: jhi                                   on 1998/10/20  08:20:56
+    Log: 64-bitness, based on
+	 
+	 From: Scott Henry 
+	 To: perl-64bit@perl.org
+	 Message-ID: 
+	 Subject: Re: Configure problems/questions...
+	 Date: 19 Oct 1998 22:38:06 -0700
+ Branch: cfgperl
+       ! hints/irix_6.sh perl.h
+____________________________________________________________________________
+[  2024] By: jhi                                   on 1998/10/20  08:09:07
+    Log: Add lseeksize.
+ Branch: cfgperl
+       ! config_h.SH
+____________________________________________________________________________
+[  2023] By: jhi                                   on 1998/10/20  08:08:33
+    Log: Mumble about _yields() only when threaded.
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2022] By: jhi                                   on 1998/10/20  07:46:26
+    Log: Thinko at PTHREADS_CREATED_JOINABLE.
+ Branch: cfgperl
+       ! thread.h
+____________________________________________________________________________
+[  2021] By: gbarr                                 on 1998/10/20  01:25:23
+    Log: From: Chip Salzenberg 
+	 Date: Tue, 6 Oct 1998 13:33:05 -0400
+	 Message-ID: <19981006133305.A2348@perlsupport.com>
+	 Subject: [PATCH] 5.005_02: Eliminate leak on self-ties
+ Branch: maint-5.005/perl
+       ! av.c doop.c hv.c mg.c mg.h pp.c pp_hot.c pp_sys.c scope.c
+       ! t/op/tie.t
+____________________________________________________________________________
+[  2020] By: jhi                                   on 1998/10/19  09:15:53
+    Log: YIELD more robustly.
+ Branch: cfgperl
+       ! thread.h
+____________________________________________________________________________
+[  2019] By: jhi                                   on 1998/10/19  08:48:33
+    Log: VM/ESA (and OS390) are in between of OLD_PTHREADS_API and
+	 the 'new' one (just like DJGPP, it seems).
+ Branch: cfgperl
+       ! thread.h
+____________________________________________________________________________
+[  2018] By: jhi                                   on 1998/10/19  07:02:44
+    Log: vmesaish.h doesn't exclude unixish.h.
+ Branch: cfgperl
+       ! perl.h
+____________________________________________________________________________
+[  2017] By: jhi                                   on 1998/10/19  06:44:19
+    Log: 1<<$randbits is not good for randbits=48.
+ Branch: cfgperl
+       ! t/op/rand.t
+____________________________________________________________________________
+[  2016] By: jhi                                   on 1998/10/19  06:39:47
+    Log: Make #2012 glob pattern more portable.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2014] By: gbarr                                 on 1998/10/17  20:31:42
+    Log: Fix POSIX::sigprocmask not to check type of $old parameter
+	 as it is output only
+ Branch: maint-5.005/perl
+       ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2012] By: jhi                                   on 1998/10/17  15:04:23
+    Log: clean numbered core dumps and t/tmp[0-9]*.
+ Branch: cfgperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  2011] By: jhi                                   on 1998/10/17  14:59:15
+    Log: More robust yacc/bison failure output handling.
+ Branch: cfgperl
+       ! t/comp/require.t t/op/misc.t t/pragma/subs.t
+____________________________________________________________________________
+[  2010] By: jhi                                   on 1998/10/17  14:51:05
+    Log: BC2000 POSIX update.
+ Branch: cfgperl
+       ! MANIFEST
+____________________________________________________________________________
+[  2009] By: jhi                                   on 1998/10/17  14:49:46
+    Log: POSIX BC2000 port from perl-mvs:
+	 
+	 Subject: Ported perl 5.005.02 to BS2000 / POSIX
+	 From: Dorner Thomas  
+	 Date: Tue, 29 Sep 1998 13:29:36 +0100 
+	 Message-ID: <9CE47B416A24D2118BC40000F84009B20B72C5@start.de> 
+ Branch: cfgperl
+       + README.posix-bc hints/posix-bc.sh
+       ! Configure MANIFEST perl.c perly.y proto.h t/lib/cgi-html.t
+       ! t/op/magic.t t/op/pack.t t/op/quotemeta.t t/op/subst.t toke.c
+       ! unixish.h
+____________________________________________________________________________
+[  2008] By: jhi                                   on 1998/10/17  14:07:49
+    Log: VM/ESA-update.
+ Branch: cfgperl
+       ! MANIFEST
+____________________________________________________________________________
+[  2007] By: jhi                                   on 1998/10/17  13:55:34
+    Log: Forgot few S_I* imports.
+ Branch: cfgperl
+       ! t/lib/ipc_sysv.t
+____________________________________________________________________________
+[  2006] By: jhi                                   on 1998/10/17  13:43:54
+    Log: The VM/ESA port essentials, based on
+	 
+	 perl-mvs:
+	 
+	 From: Neale Ferguson 
+	 Subject: Re: Can't find Data/Dumper.pm
+	 Date: Mon, 28 Sep 1998 07:40:49 +1300
+	 Message-ID: <360E86B0.23847AF4@mailbox.tabnsw.com.au>
+	 
+	 private email:
+	 
+	 From: Neale Ferguson 
+	 Subject: Re: Perl thread problems in VM/ESA
+	 Date: Thu, 15 Oct 1998 07:18:35 +1300
+	 Message-ID: <3624EAFA.16163A2B@mailbox.tabnsw.com.au>
+	 
+	 and private email:
+	 
+	 From: Neale Ferguson 
+	 Subject:  perl archive
+	 Date: 	Sun, 11 Oct 1998 19:28:54 EDT
+	 Message-Id: <19981011233112Z67215-26626+1513@outbound.Princeton.EDU>
+	 which gave a pointer to
+	 
+	 http://pucc.princeton.edu/~neale/perl.tar
+	 
+	 (based on Perl 5.005_51)
+ Branch: cfgperl
+       + hints/vmesa.sh vmesa/Makefile vmesa/vmesa.c vmesa/vmesaish.h
+       ! ext/Errno/Errno_pm.PL perl.c perl.h perly.y pp_sys.c
+       ! t/io/pipe.t t/lib/cgi-html.t t/lib/ipc_sysv.t t/op/magic.t
+       ! t/op/pack.t t/op/quotemeta.t t/op/subst.t util.c x2p/a2p.h
+____________________________________________________________________________
+[  2005] By: jhi                                   on 1998/10/17  13:17:19
+    Log: Integrate mainperl.
+ Branch: cfgperl
+      !> Porting/genlog ext/B/B/CC.pm ext/POSIX/POSIX.pm
+      !> lib/ExtUtils/MM_Win32.pm lib/ExtUtils/MakeMaker.pm
+      !> lib/Term/Complete.pm op.c opcode.h opcode.pl os2/Makefile.SHs
+      !> os2/os2.c pod/perlfunc.pod pod/perlxs.pod pp.c sv.c
+      !> t/op/grent.t t/op/sysio.t t/op/tiehandle.t toke.c
+      !> utils/perldoc.PL vms/ext/Stdio/Stdio.pm win32/Makefile
+      !> win32/makefile.mk
+____________________________________________________________________________
+[  2004] By: jhi                                   on 1998/10/17  11:19:06
+    Log: Removed an extra ' from the int64_t test.
+ Branch: cfgperl
+       ! Configure
+____________________________________________________________________________
+[  2003] By: gsar                                  on 1998/10/17  04:11:40
+    Log: silence -w noises (suggested by Greg Bacon)
+ Branch: perl
+       ! lib/Term/Complete.pm
+____________________________________________________________________________
+[  2002] By: gsar                                  on 1998/10/17  04:07:48
+    Log: From: Gisle Aas 
+	 Date: 14 Oct 1998 15:53:14 +0200
+	 Message-ID: 
+	 Subject: Re: chr(0xFFFF_FFFF) and "\x{10_FFFF}" [PATCH 5.005_52]
+ Branch: perl
+       ! util.c
+____________________________________________________________________________
+[  2001] By: gsar                                  on 1998/10/17  04:06:10
+    Log: From: Gisle Aas 
+	 Date: 14 Oct 1998 15:17:44 +0200
+	 Message-ID: 
+	 Subject: [PATCH 5.005_52] Core dump from "Missing right brace on \x{}"
+ Branch: perl
+       ! toke.c
+____________________________________________________________________________
+[  2000] By: gsar                                  on 1998/10/17  03:06:33
+    Log: From: Gisle Aas 
+	 Date: 14 Oct 1998 00:38:06 +0200
+	 Message-ID: 
+	 Subject: [PATCH 5.005_52] utf8 substr can access memory outside PVX buffer
+ Branch: perl
+       ! sv.c
+____________________________________________________________________________
+[  1999] By: gsar                                  on 1998/10/17  03:04:48
+    Log: From: Dan Sugalski 
+	 Date: Tue, 13 Oct 1998 15:10:57 -0700
+	 Message-Id: <3.0.6.32.19981013151057.00a947a0@ous.edu>
+	 Subject: [PATCH 5.004/5.005/5.006]Doc patch to VMS::Stdio module
+ Branch: perl
+       ! vms/ext/Stdio/Stdio.pm
+____________________________________________________________________________
+[  1998] By: gsar                                  on 1998/10/17  03:00:40
+    Log: skip readonly vars and unref references when doing a reset()
+ Branch: perl
+       ! sv.c
+____________________________________________________________________________
+[  1997] By: gsar                                  on 1998/10/17  02:49:19
+    Log: fix buggy treatment of large checksums on unicode strings
+	 From: Gisle Aas 
+	 Date: 13 Oct 1998 21:35:39 +0200
+	 Message-ID: 
+	 Subject: unpack("%48U*",...)  [PATCH 5.005_52]
+ Branch: perl
+       ! pp.c
+____________________________________________________________________________
+[  1996] By: gsar                                  on 1998/10/17  02:43:22
+    Log: From: Ilya Zakharevich 
+	 Date: Tue, 13 Oct 1998 04:46:00 -0400 (EDT)
+	 Message-Id: <199810130846.EAA00769@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_52] Memory overrun in os2.c
+ Branch: perl
+       ! os2/Makefile.SHs os2/os2.c
+____________________________________________________________________________
+[  1995] By: gsar                                  on 1998/10/17  02:42:01
+    Log: clarify section name rules for typemaps
+ Branch: perl
+       ! pod/perlxs.pod
+____________________________________________________________________________
+[  1994] By: gsar                                  on 1998/10/17  02:33:02
+    Log: whitespace-proof grent.t
+ Branch: perl
+       ! t/op/grent.t
+____________________________________________________________________________
+[  1993] By: gsar                                  on 1998/10/17  02:27:29
+    Log: fix bug in B::CC::pp_sassign()
+	 From: "vishal bhatia" 
+	 Date: Sun, 11 Oct 1998 18:41:38 PDT
+	 Message-ID: <19981012014139.19614.qmail@hotmail.com>
+	 Subject: B::CC problems with pp_sassign routine
+ Branch: perl
+       ! ext/B/B/CC.pm
+____________________________________________________________________________
+[  1992] By: gsar                                  on 1998/10/17  02:17:49
+    Log: applied suggested patch with small doc tweak
+	 From: Gisle Aas 
+	 Date: 11 Oct 1998 12:53:13 +0200
+	 Message-ID: 
+	 Subject: Re: [PATCH 5.005_52] Optional syswrite LENGTH argument
+ Branch: perl
+       ! opcode.h opcode.pl pod/perlfunc.pod pp_sys.c t/op/sysio.t
+       ! t/op/tiehandle.t
+____________________________________________________________________________
+[  1991] By: gsar                                  on 1998/10/17  02:08:30
+    Log: apply non-conflicting parts from suggested patch
+	 From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Sat, 10 Oct 1998 13:15:45 +0200
+	 Message-ID: <36223ed7.18279374@smtp1.ibm.net>
+	 Subject: [PATCH 5.005_52] Still more MakeMaker  patches
+ Branch: perl
+       ! lib/ExtUtils/MM_Win32.pm lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1990] By: gsar                                  on 1998/10/17  02:01:24
+    Log: provide option to enable optimization with VC (suggested by Jan
+	 Dubois)
+ Branch: perl
+       ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1989] By: gsar                                  on 1998/10/17  01:55:27
+    Log: Rhapsody DR2 has bsd/ctypes.h, not objc/NXCType.h (suggested by
+	 Dave Leppik 
+ Branch: perl
+       ! perl.h
+____________________________________________________________________________
+[  1988] By: gsar                                  on 1998/10/17  01:49:05
+    Log: stray typo found by Hugo van der Sanden
+ Branch: perl
+       ! op.c
+____________________________________________________________________________
+[  1987] By: gsar                                  on 1998/10/17  01:45:52
+    Log: perldoc pod update
+	 From: Daniel Grisinger 
+	 Date: 06 Oct 1998 23:56:51 -0600
+	 Message-ID: 
+	 Subject: [PATCH _02 and _52] perldoc
+ Branch: perl
+       ! utils/perldoc.PL
+____________________________________________________________________________
+[  1986] By: gsar                                  on 1998/10/17  01:41:40
+    Log: qualify names of builtins
+ Branch: perl
+       ! ext/POSIX/POSIX.pm
+____________________________________________________________________________
+[  1982] By: gbarr                                 on 1998/10/17  00:20:57
+    Log: From: Jochen Wiedmann 
+	 Date: Thu, 17 Sep 1998 17:16:06 +0200
+	 Message-ID: <360127B6.E44564A@ispsoft.de>
+	 Subject: [PATCH] ExtUtils::MakeMaker::prompt cannot return 0
+ Branch: maint-5.005/perl
+       ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1978] By: gsar                                  on 1998/10/16  01:58:58
+    Log: integrate cfgperl mods into mainline
+ Branch: perl
+      +> ext/DynaLoader/dl_vmesa.xs
+       ! Porting/genlog
+      !> Configure MANIFEST Makefile.SH config_h.SH
+      !> ext/Thread/Thread.xs gv.c hints/hpux.sh hints/irix_6.sh
+      !> hints/linux.sh hints/os390.sh op.c t/op/pat.t thread.h
+      !> x2p/Makefile.SH
+____________________________________________________________________________
+[  1976] By: gsar                                  on 1998/10/16  00:10:52
+    Log: stray tweak
+ Branch: perl
+       ! op.c
+____________________________________________________________________________
+[  1975] By: gsar                                  on 1998/10/15  23:54:38
+    Log: propagate typeness of lexicals while cloning them
+ Branch: perl
+       ! op.c
+____________________________________________________________________________
+[  1974] By: gsar                                  on 1998/10/15  23:53:25
+    Log: s/last/first/ typo in append_list()
+ Branch: perl
+       ! op.c
+____________________________________________________________________________
+[  1973] By: gsar                                  on 1998/10/15  20:06:17
+    Log: nuke confperl branch and contents
+ Branch: confperl
+       - (delete 1284 files)
+____________________________________________________________________________
+[  1972] By: jhi                                   on 1998/10/15  07:07:35
+    Log: Test #162 had been added but the "print 1..161" had not been updated.
+ Branch: cfgperl
+       ! t/op/pat.t
+____________________________________________________________________________
+[  1971] By: gsar                                  on 1998/10/15  03:09:58
+    Log: check in all confperl changes as of change#1964 into cfgperl
+ Branch: cfgperl
+       + ext/DynaLoader/dl_vmesa.xs
+       ! Configure MANIFEST Makefile.SH config_h.SH
+       ! ext/Thread/Thread.xs gv.c hints/hpux.sh hints/irix_6.sh
+       ! hints/linux.sh hints/os390.sh op.c thread.h x2p/Makefile.SH
+____________________________________________________________________________
+[  1970] By: gsar                                  on 1998/10/15  03:05:59
+    Log: integrate mainline to get tr.t
+ Branch: cfgperl
+      +> t/op/tr.t
+____________________________________________________________________________
+[  1969] By: gsar                                  on 1998/10/15  03:04:17
+    Log: add missing tr.t to repository
+ Branch: perl
+       + t/op/tr.t
+____________________________________________________________________________
+[  1968] By: gsar                                  on 1998/10/15  03:02:43
+    Log: create cfgperl branch
+ Branch: cfgperl
+      +> (branch 1282 files)
+____________________________________________________________________________
+[  1967] By: gsar                                  on 1998/10/15  02:46:08
+    Log: correct bugs exposed in MM_Unix.pm by commenting out Selfloader
+	 (MAN3PODS cannot be set to ' '; stray stricture violation)
+ Branch: perl
+       ! ext/B/Makefile.PL ext/DB_File/Makefile.PL
+       ! ext/Data/Dumper/Makefile.PL ext/DynaLoader/Makefile.PL
+       ! ext/Errno/Makefile.PL ext/Fcntl/Makefile.PL
+       ! ext/GDBM_File/Makefile.PL ext/IO/Makefile.PL
+       ! ext/IPC/SysV/Makefile.PL ext/NDBM_File/Makefile.PL
+       ! ext/ODBM_File/Makefile.PL ext/Opcode/Makefile.PL
+       ! ext/POSIX/Makefile.PL ext/SDBM_File/Makefile.PL
+       ! ext/Socket/Makefile.PL ext/Thread/Makefile.PL
+       ! ext/attrs/Makefile.PL ext/re/Makefile.PL
+       ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  1966] By: gsar                                  on 1998/10/15  02:19:03
+    Log: tweak to make fix in change#1944 behave correctly for closures
+	 created within eval''
+ Branch: perl
+       ! op.c t/op/eval.t
+____________________________________________________________________________
+[  1965] By: gsar                                  on 1998/10/14  23:22:41
+    Log: use better numbers for exitstatus test
+ Branch: perl
+       ! t/op/die_exit.t
+____________________________________________________________________________
+[  1964] By: jhi                                   on 1998/10/14  17:25:41
+    Log: Add VM/ESA dynaloading (uses ).
+ Branch: confperl
+       + ext/DynaLoader/dl_vmesa.xs
+       ! MANIFEST
+____________________________________________________________________________
+[  1963] By: jhi                                   on 1998/10/14  17:17:10
+    Log: Remove a2p.loadmap in 'clean' target.
+ Branch: confperl
+       ! x2p/Makefile.SH
+____________________________________________________________________________
+[  1962] By: jhi                                   on 1998/10/14  17:13:11
+    Log: VM/ESA produces also .prelmaps. (No, not .perlmaps...)
+ Branch: confperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  1961] By: jhi                                   on 1998/10/14  16:27:39
+    Log: VM/ESA creates executable.loadmaps.
+ Branch: confperl
+       ! Makefile.SH
+____________________________________________________________________________
+[  1960] By: jhi                                   on 1998/10/14  15:37:39
+    Log: Introduce SCHED_YIELD (one of sched_yield(),
+	 pthread_yield(), or pthread_yield(NULL)).
+	 YIELD is then defined using SCHED_YIELD unless
+	 a platform-specific YIELD has already been defined.
+	 
+	 Support pthread_attr_setdetachstate(pthread_attr_t*, int*).
+	 
+	 The need for pthread_yield(NULL) and pthread_attr_setdet...
+	 introduced by (private email)
+	 
+	 From: Neale Ferguson 
+	 Date: Sat, 10 Oct 1998 21:08:15 +1300
+	 Message-ID: <361F15EE.47376EC@mailbox.tabnsw.com.au>
+	 Subject: Re: Perl thread problems in VM/ESA
+	 
+	 Better select() protoprobe (for AIX), from (private email)
+	 From: Andy Dougherty 
+	 Date: Fri, 2 Oct 1998 14:52:25 -0400 (EDT)
+	 Message-Id: 
+	 Subject: AIX select (fwd)
+	 From: Lars Hecking 
+	 To: Andy Dougherty 
+	 Date: Fri, 2 Oct 1998 10:40:01 +0100
+	 Subject: AIX select
+	 
+	 Linux-avoid-so.X.Y, based on
+	 From: "Kurt D. Starsinic" 
+	 Date: Tue, 13 Oct 1998 15:55:07 -0400
+	 Message-ID: <19981013155507.B4004@O2.chapin.edu>
+	 Subject: Re: [PATCH 5.005_52] [Was: Re: How can Debian accomodate new installation ?]
+ Branch: confperl
+       ! Configure config_h.SH ext/Thread/Thread.xs hints/linux.sh
+       ! thread.h
+____________________________________________________________________________
+[  1959] By: jhi                                   on 1998/10/14  12:51:26
+    Log: Some old pthread implementations have
+	 pthread_attr_setdetachstate(pthread_attr_t*, int*).
+ Branch: confperl
+       ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[  1958] By: jhi                                   on 1998/10/14  12:41:11
+    Log: SCHED_YIELD and ATTR_JOINABLE fixes.  Thread.xs and Configure
+	 counterparts will follow soon.
+ Branch: confperl
+       ! thread.h
+____________________________________________________________________________
+[  1957] By: jhi                                   on 1998/10/14  12:38:11
+    Log: Add tr.t (MANIFEST already knew about it, strange)
+ Branch: confperl
+       + t/op/tr.t
+____________________________________________________________________________
+[  1956] By: jhi                                   on 1998/10/14  12:24:35
+    Log: Mutexen should be initialized only once.
+ Branch: confperl
+       ! gv.c op.c
+____________________________________________________________________________
+[  1955] By: jhi                                   on 1998/10/14  12:19:38
+    Log: os390 has its own cppstdin.
+ Branch: confperl
+       ! hints/os390.sh
+____________________________________________________________________________
+[  1954] By: jhi                                   on 1998/10/14  12:15:06
+    Log: Integrate with mainperl.
+ Branch: confperl
+      !> (integrate 1280 files)
+____________________________________________________________________________
+[  1953] By: jhi                                   on 1998/10/14  11:48:08
+    Log: Removed duplicate CMA threads code for HPUX 10.X.
+	 (probably residue of patch(1) being too understanding)
+	 Enhanced 64-bit settings. (redo change#1940)
+ Branch: confperl
+       ! hints/hpux.sh
+____________________________________________________________________________
+[  1952] By: jhi                                   on 1998/10/14  11:45:16
+    Log: (redo change#1949) Detypo in the d_open64 warning about
+	 the impending WHOA.
+ Branch: confperl
+       ! hints/irix_6.sh
+____________________________________________________________________________
+[  1951] By: jhi                                   on 1998/10/14  10:54:16
+    Log: Mutexen should only be inited once, after they have been New()ed.
+ Branch: confperl
+       ! gv.c op.c
+____________________________________________________________________________
+[  1950] By: jhi                                   on 1998/10/14  10:41:43
+    Log: Own cppstdin.
+ Branch: confperl
+       ! hints/os390.sh
+____________________________________________________________________________
+[  1949] By: jhi                                   on 1998/10/14  10:34:23
+    Log: Detypo in the d_open64 warning about the impending WHOA.
+ Branch: confperl
+       ! hints/irix_6.sh
+____________________________________________________________________________
+[  1948] By: gsar                                  on 1998/10/14  05:38:01
+    Log: two typos
+ Branch: perl
+       ! pp_hot.c t/op/eval.t
+____________________________________________________________________________
+[  1947] By: gsar                                  on 1998/10/14  05:37:10
+    Log: let docatch() pass the buck when restartop turns out to be null,
+	 making exceptions in BEGIN{} propagate as expected
+ Branch: perl
+       ! pp_ctl.c t/op/misc.t
+____________________________________________________________________________
+[  1946] By: gsar                                  on 1998/10/13  03:41:49
+    Log: add missing file from change#1943
+ Branch: perl
+       ! proto.h
+____________________________________________________________________________
+[  1945] By: gsar                                  on 1998/10/13  03:32:02
+    Log: defer "deep recursion" warnings until CXt_SUB context is properly
+	 set up
+ Branch: perl
+       ! pp_hot.c t/pragma/warn/pp_hot
+____________________________________________________________________________
+[  1944] By: gsar                                  on 1998/10/13  03:15:50
+    Log: change#1614 merely disabled earlier fix (doh!); undo it and properly
+	 fixup the cop_seq value that must be seen by lexical lookups that
+	 emanate within eval''
+ Branch: perl
+       ! cop.h op.c pp_ctl.c pp_hot.c scope.c t/op/eval.t
+____________________________________________________________________________
+[  1943] By: gsar                                  on 1998/10/13  02:06:09
+    Log: ensure recursive attempts to findlex()icals know enough about where
+	 the last eval'' context was encountered
+ Branch: perl
+       ! op.c t/op/eval.t
+____________________________________________________________________________
+[  1942] By: gsar                                  on 1998/10/13  02:01:24
+    Log: force copy of substrings when matching against temporaries
+ Branch: perl
+       ! pp_hot.c t/op/pat.t
+____________________________________________________________________________
+[  1941] By: gsar                                  on 1998/10/13  01:49:16
+    Log: don't longjmp() in pp_goto() (regressive bug from old single-stack
+	 implementation)
+ Branch: perl
+       ! pp_ctl.c t/op/runlevel.t
+____________________________________________________________________________
+[  1940] By: jhi                                   on 1998/10/12  09:57:44
+    Log: Removed duplicate CMA threads code for HPUX 10.X.
+	 (probably residue of patch(1) being too understanding)
+	 Enhanced 64-bit settings.
+ Branch: confperl
+       ! hints/hpux.sh
+____________________________________________________________________________
+[  1939] By: jhi                                   on 1998/10/12  09:53:11
+    Log: Initial sync from mainline perl.
+ Branch: confperl
+       + (add 1282 files)
+____________________________________________________________________________
+[  1937] By: gsar                                  on 1998/10/06  21:16:34
+    Log: fix $/ init for USE_THREADS
+ Branch: perl
+       ! perl.c
+____________________________________________________________________________
+[  1936] By: gsar                                  on 1998/10/06  07:19:39
+    Log: fix globals caught by change#1927; builds and tests on Solaris
+ Branch: perl
+       ! Changes mg.c op.c perl.c pp_ctl.c regcomp.c utf8.c utf8.h
+       ! warning.h warning.pl
+____________________________________________________________________________
+[  1935] By: gsar                                  on 1998/10/06  06:50:35
+    Log: add test for previous fix
+ Branch: perl
+       ! ext/Thread/create.t
+____________________________________________________________________________
+[  1934] By: gsar                                  on 1998/10/06  06:37:36
+    Log: fix USE_THREADS coredump due to uninitialized PL_hv_fetch_ent_mh
+ Branch: perl
+       ! util.c
+____________________________________________________________________________
+[  1933] By: gsar                                  on 1998/10/06  05:04:20
+    Log: undo bogus part of change#1903 (as pointed out by Larry)
+ Branch: perl
+       ! pp_ctl.c
+____________________________________________________________________________
+[  1932] By: gsar                                  on 1998/10/06  04:21:31
+    Log: added tweaked version of suggested patch
+	 From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Sat, 03 Oct 1998 19:04:48 +0200
+	 Message-ID: <361d54b2.36841294@smtp1.ibm.net>
+	 Subject: [PATCH 5.005_52] More MakeMaker  patches
+ Branch: perl
+       ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+       ! lib/ExtUtils/Mkbootstrap.pm lib/ExtUtils/Mksymlists.pm
+____________________________________________________________________________
+[  1931] By: gsar                                  on 1998/10/06  04:04:33
+    Log: use cpp symbols instead of hardwired constants
+	 From: Hugo van der Sanden 
+	 Date: Mon, 05 Oct 1998 09:23:33 +0100
+	 Message-Id: <199810050823.JAA00891@crypt.compulink.co.uk>
+	 Subject: [PATCH 5.005_52] By the numbers (resend)
+ Branch: perl
+       ! op.c
+____________________________________________________________________________
+[  1930] By: gsar                                  on 1998/10/06  04:01:55
+    Log: From: Ilya Zakharevich 
+	 Message-Id: <199810050637.CAA07781@monk.mps.ohio-state.edu>
+	 Date: Mon, 5 Oct 1998 02:37:43 -0400 (EDT)
+	 Subject: [PATCH 5.005_52] Cumulative OS/2-related patch
+ Branch: perl
+       ! Makefile.SH hints/os2.sh lib/ExtUtils/MM_OS2.pm mg.c
+       ! os2/Changes os2/Makefile.SHs os2/os2.c perl_exp.SH util.c
+____________________________________________________________________________
+[  1929] By: gsar                                  on 1998/10/06  03:50:36
+    Log: From: Ilya Zakharevich 
+	 Date: Mon, 5 Oct 1998 02:39:00 -0400 (EDT)
+	 Message-Id: <199810050639.CAA07803@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] Minor test improvement
+ Branch: perl
+       ! t/op/magic.t
+____________________________________________________________________________
+[  1928] By: gsar                                  on 1998/10/06  03:49:03
+    Log: From: Ilya Zakharevich 
+	 Date: Mon, 5 Oct 1998 02:38:23 -0400 (EDT)
+	 Message-Id: <199810050638.CAA07792@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.00552] emacs/ptags inprovements
+ Branch: perl
+       ! emacs/ptags
+____________________________________________________________________________
+[  1927] By: gsar                                  on 1998/10/06  03:47:44
+    Log: disable C<#define dirty PL_dirty> et al.
+ Branch: perl
+       ! embed.pl embedvar.h
+____________________________________________________________________________
+[  1926] By: gsar                                  on 1998/10/06  03:43:32
+    Log: From: Mark-Jason Dominus 
+	 Date: Sun, 04 Oct 1998 14:48:11 -0400
+	 Message-ID: <19981004184811.16048.qmail@plover.com>
+	 Subject: PATCH: perldoc -f does not locate -e, -r, -x, etc.
+ Branch: perl
+       ! utils/perldoc.PL
+____________________________________________________________________________
+[  1925] By: gsar                                  on 1998/10/06  03:27:35
+    Log: disable USE_THREADS when PERL_OBJECT is enabled
+ Branch: perl
+       ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1924] By: gsar                                  on 1998/10/06  03:26:54
+    Log: remove spurious unused conflicting globals (PL_yy{v,s}sp)
+ Branch: perl
+       ! Makefile.SH Todo-5.005 embedvar.h perlvars.h perly.c toke.c
+       ! vms/perly_c.vms
+____________________________________________________________________________
+[  1923] By: gsar                                  on 1998/10/03  05:19:56
+    Log: make C recognize C overrides; allow C to be
+	 overridden
+ Branch: perl
+       ! embed.h global.sym objXSUB.h objpp.h op.c perly.c perly.y
+       ! proto.h vms/perly_c.vms
+____________________________________________________________________________
+[  1922] By: gsar                                  on 1998/10/03  03:59:50
+    Log: suppress manifypods leak in extensions
+ Branch: perl
+       ! ext/Errno/Makefile.PL ext/IPC/SysV/Makefile.PL pod/pod2man.PL
+____________________________________________________________________________
+[  1921] By: gsar                                  on 1998/10/02  22:30:15
+    Log: os390 fixes (suggested by Peter Prymmer)
+ Branch: perl
+       ! Makefile.SH regcomp.c
+____________________________________________________________________________
+[  1920] By: gsar                                  on 1998/10/02  21:41:19
+    Log: squelch undef warnings
+	 From: Hugo van der Sanden 
+	 Date: Fri, 02 Oct 1998 11:01:14 +0100
+	 Message-Id: <199810021001.LAA19214@crypt.compulink.co.uk>
+	 Subject: [PATCH] Re: Apparent bug in Math::BigInt 
+ Branch: perl
+       ! Changes lib/Math/BigInt.pm
+____________________________________________________________________________
+[  1919] By: gsar                                  on 1998/10/02  04:59:13
+    Log: add note to INSTALL about ANSI C
+ Branch: perl
+       ! INSTALL
+____________________________________________________________________________
+[  1918] By: gsar                                  on 1998/10/02  04:21:10
+    Log: tolerate spaces when fixing up __cplusplus output by old h2xs
+	 From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Wed, 30 Sep 1998 23:35:30 +0200
+	 Message-ID: <3619a1e8.12336659@smtp1.ibm.net>
+	 Subject: [PATCH 5.005_52]: xsubpp and PERL_OBJECT
+ Branch: perl
+       ! lib/ExtUtils/xsubpp
+____________________________________________________________________________
+[  1917] By: gsar                                  on 1998/10/02  04:16:02
+    Log: From: Jarkko Hietaniemi 
+	 Date: Thu, 1 Oct 1998 11:37:26 +0300 (EET DST)
+	 Message-Id: <199810010837.LAA31371@alpha.hut.fi>
+	 Subject: Re: Configure test for selectbits busted
+ Branch: perl
+       ! Configure
+____________________________________________________________________________
+[  1916] By: gsar                                  on 1998/10/02  04:14:17
+    Log: From: Dan Sugalski 
+	 Date: Wed, 30 Sep 1998 17:15:20 -0700
+	 Message-Id: <3.0.6.32.19980930171520.00b22eb0@ous.edu>
+	 Subject: [PATCH 5.005_02]VMS config tweaks
+ Branch: perl
+       ! vms/descrip_mms.template vms/subconfigure.com
+____________________________________________________________________________
+[  1915] By: gsar                                  on 1998/10/02  04:10:47
+    Log: use Off_t to permit 64-bit seek()
+	 From: Scott Henry 
+	 Date: 29 Sep 1998 17:38:46 -0700
+	 Message-ID: 
+	 Subject: Re: [PATCH] 5.005_02: Configure "Massive Attack"
+	 --
+	 Date: 28 Sep 1998 18:55:37 -0700
+	 Message-ID: 
+	 Subject: Re: [PATCH] 5.005_51: Configure "Massive Attack"
+ Branch: perl
+       ! doio.c pp_sys.c proto.h sv.c
+____________________________________________________________________________
+[  1914] By: gsar                                  on 1998/10/02  04:05:36
+    Log: normalize tm struct passed to strftime() with mktime()
+	 From: Spider Boardman 
+	 Date: Wed, 30 Sep 1998 15:12:09 -0400
+	 Message-Id: <199809301912.PAA26119@Orb.Nashua.NH.US>
+	 Subject: [PATCH 5.005_52] Re: POSIX::strftime returns incorrect date 
+ Branch: perl
+       ! ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  1913] By: gsar                                  on 1998/10/02  03:59:46
+    Log: don't try to run foo_SH.orig etc.
+ Branch: perl
+       ! Configure
+____________________________________________________________________________
+[  1912] By: gsar                                  on 1998/10/02  03:45:37
+    Log: make warning about glob process failure optional
+ Branch: perl
+       ! pod/perldiag.pod pp_hot.c
+____________________________________________________________________________
+[  1911] By: gsar                                  on 1998/10/02  02:52:21
+    Log: document yet another RE diagnostic, make it consistent with REG_INFTY
+	 From: Dominic Dunlop 
+	 Date: Tue, 29 Sep 1998 21:06:30 +0000
+	 Message-Id: 
+	 Subject: [PATCH 5.005_52] Fix hard-coded "matches null string many times" limit
+	 --
+	 Date: Wed, 30 Sep 1998 11:46:44 +0000
+	 Message-Id: 
+	 Subject: [PATCH 5.005_52] Add "Strange *+?{} ..." to perldiag
+ Branch: perl
+       ! pod/perldiag.pod regcomp.c
+____________________________________________________________________________
+[  1910] By: gsar                                  on 1998/10/02  02:48:48
+    Log: minor Configure tweaks (via private mail)
+	 From: Jarkko Hietaniemi 
+	 Date: Wed, 30 Sep 1998 02:25:06 +0300 (EET DST)
+	 Message-Id: <199809292325.CAA19737@alpha.hut.fi>
+	 Subject: [PATCH] 5.005_52: the drizzle continues
+ Branch: perl
+       ! Configure config_h.SH handy.h
+____________________________________________________________________________
+[  1909] By: gsar                                  on 1998/10/02  02:46:39
+    Log: update SCO hints for dynamic loading
+	 From: Andy Dougherty 
+	 Date: Mon, 28 Sep 1998 16:50:38 -0400 (EDT)
+	 Message-Id: 
+	 Subject: [PATCH 5.004_04-MAINT_TRIAL_5 and 5.005_xx] Re: Perl on SCO_SV
+	 --
+	 Date: Tue, 29 Sep 1998 16:48:55 -0400 (EDT)
+	 Message-Id: 
+	 Subject: Re: [PATCH 5.004_04-MAINT_TRIAL_5 and 5.005_xx] Re: Perl on SCO_SV
+ Branch: perl
+       ! hints/sco.sh
+____________________________________________________________________________
+[  1908] By: gsar                                  on 1998/10/02  02:33:39
+    Log: make File::Find work when wanted() is autoloaded or a symbolic ref
+ Branch: perl
+       ! lib/File/Find.pm
+____________________________________________________________________________
+[  1907] By: gsar                                  on 1998/10/02  02:21:52
+    Log: applied patches, but retained old behavior for win32 (where compilers
+	 can't read from stdin at all)
+	 From: Graham Barr 
+	 Date: Mon, 28 Sep 1998 09:41:49 -0500
+	 Message-ID: <19980928094149.B26576@asic.sc.ti.com>
+	 Subject: Re: 5.005_51 Errno invokes cpprun incorrectly
+	 --
+	 Date: Tue, 29 Sep 1998 12:35:43 -0500
+	 Message-ID: <19980929123543.Z26576@asic.sc.ti.com>
+	 Subject: Re: 5.005_51 Errno invokes cpprun incorrectly
+ Branch: perl
+       ! ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  1906] By: gsar                                  on 1998/10/02  02:02:19
+    Log: tolerate whitespace in /etc/group entries (suggested by Jarkko
+	 Hietaniemi)
+ Branch: perl
+       ! t/op/grent.t
+____________________________________________________________________________
+[  1905] By: gsar                                  on 1998/10/02  01:59:56
+    Log: win32 caveats about truncate()
+ Branch: perl
+       ! pod/perlport.pod
+____________________________________________________________________________
+[  1904] By: gsar                                  on 1998/10/02  01:53:25
+    Log: various Configure and hints updates (prefer drand48() or random()
+	 over rand(); add -Dusemultiplicity; enhanced 64-bitness);  patch
+	 applied modulo SCO hints superceded by later patch
+	 From: Jarkko Hietaniemi 
+	 Date: Tue, 29 Sep 1998 00:56:33 +0300 (EET DST)
+	 Message-Id: <199809282156.AAA18615@alpha.hut.fi>
+	 Subject: [PATCH] 5.005_52: Configure et al:
+ Branch: perl
+       + ext/IPC/SysV/hints/next_3.pl
+       ! Configure INSTALL MANIFEST config_h.SH ext/IPC/SysV/SysV.xs
+       ! hints/dec_osf.sh hints/irix_6.sh hints/next_3.sh
+       ! hints/solaris_2.sh perl.h pod/perldiag.pod pp.c pp_sys.c
+____________________________________________________________________________
+[  1903] By: gsar                                  on 1998/10/02  01:42:37
+    Log: fixes for bugs in /RE/p	from Hugo van der Sanden
+	 Date: Mon, 28 Sep 1998 17:41:49 +0100
+	 Message-Id: <199809281641.RAA02450@crypt.compulink.co.uk>
+	 Subject: [PATCH 5.005_52] Re: More on ?p 
+	 --
+	 Date: Thu, 01 Oct 1998 09:10:58 +0100
+	 Message-Id: <199810010810.JAA16426@crypt.compulink.co.uk>
+	 Subject: [PATCH 5.005_52] ?p fix
+	 --
+	 Date: Thu, 01 Oct 1998 10:45:56 +0100
+	 Message-Id: <199810010945.KAA16733@crypt.compulink.co.uk>
+	 Subject: [PATCH 5.005_52] more on ?p
+ Branch: perl
+       ! pp_ctl.c
+____________________________________________________________________________
+[  1902] By: gsar                                  on 1998/10/02  01:36:14
+    Log: From: Kenneth Duda 
+	 Date: Sun, 27 Sep 1998 20:22:12 -0700 (PDT)
+	 Message-Id: <199809280322.UAA01261@scorpion.cisco.com>
+	 Subject: writemain dies when there are more than 4000 characters of extensions
+ Branch: perl
+       ! writemain.SH
+____________________________________________________________________________
+[  1901] By: gsar                                  on 1998/10/02  01:33:16
+    Log: tweak run_byacc recipe
+ Branch: perl
+       ! Makefile.SH Porting/pumpkin.pod
+____________________________________________________________________________
+[  1900] By: gsar                                  on 1998/10/02  01:02:09
+    Log: use SETERRNO() to reset errno (suggested by Charles Bailey)
+ Branch: perl
+       ! perl.h pp_ctl.c
+____________________________________________________________________________
+[  1899] By: gsar                                  on 1998/09/28  20:46:30
+    Log: fix various 5.00552 mishaps (fixes suggested by Jan Dubois,
+	 Kurt Starsinic, Spider Boardman, Dan Sugalski and Albert
+	 Dvornik)
+ Branch: perl
+       ! hints/irix_6.sh lib/ExtUtils/MakeMaker.pm mg.c scope.c
+____________________________________________________________________________
+[  1898] By: gsar                                  on 1998/09/28  20:42:52
+    Log: flush unsubmitted 5.00552 change
+ Branch: perl
+       ! MANIFEST
+____________________________________________________________________________
+[  1897] By: gsar                                  on 1998/09/27  04:43:06
+    Log: run vms_yfix.pl
+ Branch: perl
+       ! vms/perly_c.vms
+____________________________________________________________________________
+[  1896] By: gsar                                  on 1998/09/27  03:38:55
+    Log: small tweak on last change
+ Branch: perl
+       ! win32/win32.c
+____________________________________________________________________________
+[  1895] By: gsar                                  on 1998/09/27  03:17:17
+    Log: fix win32_stat() to do the right thing for share names
+ Branch: perl
+       ! win32/win32.c
+____________________________________________________________________________
+[  1891] By: larry                                 on 1998/09/25  18:50:40
+    Log: Fixed apostrophe problem from Mark Knutsen.
+ Branch: perl
+       ! sv.h
+
+----------------
+Version 5.005_52
+----------------
+
+____________________________________________________________________________
+[  1890] By: gsar                                  on 1998/09/25  10:25:00
+    Log: update template config.sh, add new config vars to win32 stuff
+ Branch: perl
+       ! Changes Porting/config.sh Porting/config_H config_h.SH objpp.h
+       ! pp_sys.c proto.h win32/config.bc win32/config.gc
+       ! win32/config.vc win32/config_H.bc win32/config_H.gc
+       ! win32/config_H.vc win32/win32.h
+____________________________________________________________________________
+[  1889] By: gsar                                  on 1998/09/25  07:13:13
+    Log: big Configure update from Jarkko: sync metaconfig units; d_statblks fix
+	 for Linux; hpux CMA-threads hints; ELF support for FreeBSD; beginnings
+	 of full-fledged 64-bit support (including support for: fseeko/ftello,
+	 Quad_t aka long long, hpux and irix 64-bits hints, new 64-bit constants
+	 in Fcntl)
+	 From: Jarkko Hietaniemi 
+	 Date: Fri, 11 Sep 1998 23:56:11 +0300 (EET DST)
+	 Message-Id: <199809112056.XAA04720@alpha.hut.fi>
+	 Subject: [PATCH] 5.005_51: Configure "Massive Attack"
+	 --
+	 From: Jarkko Hietaniemi 
+	 Date: 12 Sep 1998 09:44:25 +0300
+	 Message-ID: 
+	 Subject: Re: [PATCH] 5.005_51: Configure "Massive Attack"
+ Branch: perl
+       + lib/filetest.pm
+       ! Configure MANIFEST Makefile.SH config_h.SH doio.c embedvar.h
+       ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs handy.h hints/dec_osf.sh
+       ! hints/freebsd.sh hints/hpux.sh hints/irix_6.sh objXSUB.h
+       ! perl.c perl.h perl_exp.SH perlio.c perlvars.h pod/perldiag.pod
+       ! pod/perlfunc.pod pp_sys.c proto.h win32/GenCAPI.pl
+       ! win32/makedef.pl
+____________________________________________________________________________
+[  1888] By: gsar                                  on 1998/09/25  06:27:12
+    Log: bump patchlevel to 52; other little tweaks for threads, win32 builds
+ Branch: perl
+       ! doop.c mg.c patchlevel.h regexec.c win32/Makefile
+       ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+       ! win32/makedef.pl win32/makefile.mk win32/win32.c
+____________________________________________________________________________
+[  1887] By: gsar                                  on 1998/09/25  04:50:49
+    Log: win32.c tweak
+ Branch: perl
+       ! win32/win32.c
+____________________________________________________________________________
+[  1886] By: gsar                                  on 1998/09/25  04:47:32
+    Log: s/MAKEMAKEROPT/PERL_MM_OPT/
+ Branch: perl
+       ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1885] By: gsar                                  on 1998/09/25  04:05:09
+    Log: From: Dominic Dunlop 
+	 Date: Thu, 10 Sep 1998 11:02:46 +0000
+	 Message-Id: 
+	 Subject: MM_Unix::canonpath erroneously turns leading // into /
+ Branch: perl
+       ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  1884] By: gsar                                  on 1998/09/25  03:06:10
+    Log: temporarily disable perl malloc for a2p until we clean up
+	 conflicting malloc() declarations everywhere
+ Branch: perl
+       ! x2p/Makefile.SH
+____________________________________________________________________________
+[  1883] By: gsar                                  on 1998/09/25  02:27:00
+    Log: remove obsolete win32/bin/*.pl
+ Branch: perl
+       - win32/bin/network.pl win32/bin/webget.pl win32/bin/www.pl
+       ! Changes MANIFEST win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1882] By: gsar                                  on 1998/09/25  02:04:43
+    Log: missing file in last submit
+ Branch: perl
+       ! proto.h
+____________________________________________________________________________
+[  1881] By: gsar                                  on 1998/09/25  01:56:54
+    Log: serial access to PL_x[inpr]v_root for USE_THREADS
+ Branch: perl
+       ! sv.c
+____________________________________________________________________________
+[  1880] By: gsar                                  on 1998/09/25  01:19:38
+    Log: lock sv_mutex in new_he() and del_he() for USE_THREADS
+	 From: Drago Goricanec 
+	 Date: Thu, 24 Sep 1998 22:01:09 +0900
+	 Message-Id: <19980924220109J.drago@otsd.ts.fujitsu.co.jp>
+	 Subject: [PATCH 5.005_51] Re: Perl 5.005_51 not yet multi Thread safe 
+ Branch: perl
+       ! hv.c proto.h
+____________________________________________________________________________
+[  1879] By: gsar                                  on 1998/09/25  00:20:07
+    Log: tweaks to enable PERL_OBJECT to build & test on win32
+ Branch: perl
+       ! Changes doop.c mg.c objpp.h proto.h regexec.c util.c
+       ! win32/GenCAPI.pl
+____________________________________________________________________________
+[  1878] By: gsar                                  on 1998/09/25  00:13:36
+    Log: fix change#1861, which breaks default boot_xxx symbol generation
+ Branch: perl
+       ! lib/ExtUtils/Mksymlists.pm
+____________________________________________________________________________
+[  1877] By: gsar                                  on 1998/09/24  10:29:54
+    Log: two tweaks for clean build and test on Solaris
+ Branch: perl
+       ! op.c t/op/subst.t
+____________________________________________________________________________
+[  1876] By: gsar                                  on 1998/09/24  09:04:43
+    Log: From: Colin Kuskie 
+	 Date: Wed, 26 Aug 1998 14:53:01 -0700 (PDT)
+	 Message-ID: 
+	 Subject: [PATCH 5.005_51] perlform.pod
+ Branch: perl
+       ! pod/perlform.pod
+____________________________________________________________________________
+[  1875] By: gsar                                  on 1998/09/24  08:47:47
+    Log: From: Ilya Zakharevich 
+	 Date: Tue, 25 Aug 1998 15:35:58 -0400 (EDT)
+	 Message-Id: <199808251935.PAA11384@monk.mps.ohio-state.edu>
+	 Subject: Re: problem with (?p{}) [PATCH 5.005_5*]
+ Branch: perl
+       ! regexec.c
+____________________________________________________________________________
+[  1874] By: gsar                                  on 1998/09/24  08:44:55
+    Log: From: Ilya Zakharevich 
+	 Date: Tue, 25 Aug 1998 14:56:06 -0400 (EDT)
+	 Message-Id: <199808251856.OAA10825@monk.mps.ohio-state.edu>
+	 Subject: Re: your Regexp.patch dated 21.8 [PATCH]
+ Branch: perl
+       ! toke.c
+____________________________________________________________________________
+[  1873] By: gsar                                  on 1998/09/24  08:39:41
+    Log: From: Ilya Zakharevich 
+	 Date: Tue, 25 Aug 1998 04:29:49 -0400 (EDT)
+	 Message-Id: <199808250829.EAA02470@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] Extraneous warning for (?()A|B)
+ Branch: perl
+       ! Changes regcomp.c
+____________________________________________________________________________
+[  1872] By: gsar                                  on 1998/09/24  08:37:00
+    Log: From: Krishna Sethuraman 
+	 Date: Sun, 23 Aug 1998 23:18:38 PDT
+	 Message-Id: <199808240618.XAA05329@shamu.engr.sgi.com>
+	 Subject: new irix_6.sh hints file
+ Branch: perl
+       ! hints/irix_6.sh
+____________________________________________________________________________
+[  1871] By: gsar                                  on 1998/09/24  07:26:37
+    Log: correct FSF address in various places
+ Branch: perl
+       ! Copying README ext/B/README lib/Getopt/Long.pm
+____________________________________________________________________________
+[  1870] By: gsar                                  on 1998/09/24  07:11:56
+    Log: From:    Dan Sugalski 
+	 Date:    Fri, 14 Aug 1998 09:20:16 PDT
+	 Message-Id: <3.0.5.32.19980814092016.00b37dc0@ous.edu>
+	 Subject: [PATCH 5.005_02] (and _5x I expect) VMS config procedure patch
+ Branch: perl
+       ! configure.com
+____________________________________________________________________________
+[  1869] By: gsar                                  on 1998/09/24  06:55:59
+    Log: use STRICT_ALIGNMENT on IRIX to allow usemymalloc=y again
+	 From:    Scott Henry 
+	 Date:    13 Aug 1998 09:52:15 PDT
+	 Message-Id: 
+	 Subject: [PATCH] Irix USE_LONG_LONG/malloc.c incompatibility (was...)
+ Branch: perl
+       ! hints/irix_6.sh
+____________________________________________________________________________
+[  1868] By: gsar                                  on 1998/09/24  06:51:23
+    Log: From:    Nathan Torkington 
+	 Date:    Thu, 13 Aug 1998 10:59:48 MDT
+	 Message-Id: <199808131659.KAA06179@prometheus.frii.com>
+	 Subject: [PATCH] 5.005_02 perlfunc.pod, improve umask entry
+ Branch: perl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1867] By: gsar                                  on 1998/09/24  06:45:13
+    Log: make C AUTOLOAD-aware (autouse now works for modules
+	 that are autoloaded)
+ Branch: perl
+       ! pp_ctl.c
+____________________________________________________________________________
+[  1866] By: gsar                                  on 1998/09/24  05:21:19
+    Log: grandfather deprecated "$$" no more
+ Branch: perl
+       ! pod/perldiag.pod toke.c
+____________________________________________________________________________
+[  1865] By: gsar                                  on 1998/09/24  04:52:48
+    Log: tweak PERL_HASH() to h=h+(h>>5) in order to improve distribution of
+	 low bits (suggested by Ilya Zakharevich)
+ Branch: perl
+       ! hv.h
+____________________________________________________________________________
+[  1864] By: gsar                                  on 1998/09/24  04:29:14
+    Log: move yyglobal decls from perly.c to perlvars.h, regen headers, tweak
+	 perly_c.diff
+ Branch: perl
+       ! embed.h embedvar.h global.sym perlvars.h perly.c perly.h
+       ! perly_c.diff toke.c
+____________________________________________________________________________
+[  1863] By: gsar                                  on 1998/09/24  03:36:30
+    Log: provide locked access to string table for USE_THREADS
+ Branch: perl
+       ! embedvar.h hv.c intrpvar.h objXSUB.h perl.c thread.h
+____________________________________________________________________________
+[  1862] By: gsar                                  on 1998/09/24  03:30:32
+    Log: remove bogus warn()
+ Branch: perl
+       ! embed.pl
+____________________________________________________________________________
+[  1861] By: gsar                                  on 1998/09/24  02:58:51
+    Log: applied suggested patch, adapted for all platforms
+	 From: jan.dubois@ibm.net (Jan Dubois)
+	 Date: Sun, 20 Sep 1998 12:56:38 +0200
+	 Message-ID: <3604de0c.12319885@smtp1.ibm.net>
+	 Subject: [New PATCH 5.005_02] Support Mksymlists FUNCLIST argument in MakeMaker
+ Branch: perl
+       ! lib/ExtUtils/MM_OS2.pm lib/ExtUtils/MM_Unix.pm
+       ! lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MM_Win32.pm
+       ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1860] By: gsar                                  on 1998/09/24  02:16:14
+    Log: upgrade to CPAN-1.40
+ Branch: perl
+       ! Changes lib/CPAN.pm lib/CPAN/FirstTime.pm
+____________________________________________________________________________
+[  1859] By: gsar                                  on 1998/09/24  02:08:59
+    Log: use $ENV{MAKEMAKEROPT} to set default command line args
+ Branch: perl
+       ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1857] By: gsar                                  on 1998/09/23  10:58:36
+    Log: From: Ilya Zakharevich 
+	 Date: Tue, 22 Sep 1998 17:30:16 -0400 (EDT)
+	 Message-Id: <199809222130.RAA17034@monk.mps.ohio-state.edu>
+	 Subject: More verbose Test::Harness [PATCH]
+ Branch: perl
+       ! lib/Test/Harness.pm
+____________________________________________________________________________
+[  1856] By: gsar                                  on 1998/09/23  10:56:24
+    Log: update hints for OPENSTEP 4.2 on i386
+	 From: Gerben Wierda 
+	 Date: Sun, 20 Sep 1998 01:03:18 +0200
+	 Message-Id: <9809192303.AA29190@Spike>
+	 Subject: Perl 5.005_02 compilation problems
+ Branch: perl
+       ! hints/next_4.sh
+____________________________________________________________________________
+[  1855] By: gsar                                  on 1998/09/23  10:52:27
+    Log: reset errno after C search (as suggested by Larry)
+ Branch: perl
+       ! pp_ctl.c
+____________________________________________________________________________
+[  1854] By: gsar                                  on 1998/09/23  10:50:26
+    Log: misc pod tweaks
+ Branch: perl
+       ! pod/perldelta.pod pod/perldiag.pod pod/perlport.pod
+____________________________________________________________________________
+[  1853] By: gsar                                  on 1998/09/23  10:46:06
+    Log: make Pod/Html.pm handle the --title option properly (as suggested
+	 by gml4410@ggr.co.uk)
+ Branch: perl
+       ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  1852] By: gsar                                  on 1998/09/23  10:41:39
+    Log: SSNEW() API for allocating memory on the savestack
+	 From: Albert Dvornik 
+	 Date: 17 Sep 1998 19:23:07 -0400
+	 Message-Id: 
+	 Subject: [PATCH 5.005_51] (was: why SAVEDESTRUCTOR()...)
+ Branch: perl
+       ! Changes Changes5.005 embed.h global.sym mg.c objXSUB.h objpp.h
+       ! perl.h proto.h scope.c scope.h t/io/tell.t
+____________________________________________________________________________
+[  1851] By: gsar                                  on 1998/09/23  10:37:05
+    Log: From: Jochen Wiedmann 
+	 Date: Thu, 17 Sep 1998 17:16:06 +0200
+	 Message-ID: <360127B6.E44564A@ispsoft.de>
+	 Subject: [PATCH] ExtUtils::MakeMaker::prompt cannot return 0
+ Branch: perl
+       ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1850] By: gsar                                  on 1998/09/23  10:33:05
+    Log: From: andreas.koenig@kulturbox.de (Andreas J. Koenig)
+	 Date: 15 Sep 1998 01:32:31 +0200
+	 Message-ID: 
+	 Subject: Re: [PATCH] MakeMaker "test" target doesn't depend on "all"
+ Branch: perl
+       ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  1849] By: gsar                                  on 1998/09/23  10:29:04
+    Log: From: Charles Bailey 
+	 Date: Sat, 12 Sep 1998 19:25:32 -0400 (EDT)
+	 Message-id: <01J1QBJUAY1I002KOW@cor.newman.upenn.edu>
+	 Subject: Re: extralibs.ld problem in MM_VMS.pm
+ Branch: perl
+       ! lib/ExtUtils/MM_VMS.pm
+____________________________________________________________________________
+[  1848] By: gsar                                  on 1998/09/23  10:25:24
+    Log: From: Roderick Schertler 
+	 Date: 11 Sep 1998 16:19:21 -0400
+	 Message-ID: 
+	 Subject: Re: Open2 and memory leaks
+ Branch: perl
+       ! lib/IPC/Open3.pm
+____________________________________________________________________________
+[  1847] By: gsar                                  on 1998/09/23  10:18:31
+    Log: From: Roderick Schertler 
+	 Date: Wed, 09 Sep 1998 23:52:48 -0400
+	 Message-ID: <20567.905399568@eeyore.ibcinc.com>
+	 Subject: seed srand from /dev/urandom when possible
+ Branch: perl
+       ! pod/perlfunc.pod pp.c
+____________________________________________________________________________
+[  1846] By: gsar                                  on 1998/09/23  10:12:22
+    Log: From: Roderick Schertler 
+	 Date: Thu, 10 Sep 1998 00:32:17 -0400
+	 Message-ID: <21142.905401937@eeyore.ibcinc.com>
+	 Subject: doc update for crypt()'s salt
+ Branch: perl
+       ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1845] By: gsar                                  on 1998/09/23  10:09:23
+    Log: fix h2ph handling of C<#error "foo">
+	 From: SAKAI Kiyotaka 
+	 Date: Thu, 10 Sep 1998 09:59:33 +0900
+	 Message-Id: <19980910095933N.ksakai@netwk.ntt-at.co.jp>
+	 Subject: [5.005_02] h2ph problem
+ Branch: perl
+       ! utils/h2ph.PL
+____________________________________________________________________________
+[  1844] By: gsar                                  on 1998/09/23  10:06:13
+    Log: plug strictly private function leaks in API listing
+ Branch: perl
+       ! pod/perlguts.pod
+____________________________________________________________________________
+[  1843] By: gsar                                  on 1998/09/23  10:02:57
+    Log: hide symbol for static build
+	 From: Dominic Dunlop 
+	 Date: Tue, 8 Sep 1998 21:40:46 +0000
+	 Message-Id: 
+	 Subject: Not OK: perl 5.00551 on powerpc-machten 4.1.1 [PATCH]
+ Branch: perl
+       ! regcomp.c
+____________________________________________________________________________
+[  1842] By: gsar                                  on 1998/09/23  09:52:46
+    Log: define PUT_svindex(), PUT_opindex()
+ Branch: perl
+       ! ext/B/B/Assembler.pm
+____________________________________________________________________________
+[  1841] By: gsar                                  on 1998/09/23  09:44:25
+    Log: From: Dominic Dunlop 
+	 Date: Tue, 8 Sep 1998 15:34:53 +0000
+	 Message-Id: 
+	 Subject: [PATCH 5.005_51] Eliminate pragma/warn-regexec test dependence on REG_INFTY value
+ Branch: perl
+       ! t/pragma/warn/regexec
+____________________________________________________________________________
+[  1840] By: gsar                                  on 1998/09/23  09:42:17
+    Log: pl2bat tweak from Tye McQueen 
+ Branch: perl
+       ! win32/bin/pl2bat.pl
+____________________________________________________________________________
+[  1839] By: gsar                                  on 1998/09/23  09:38:18
+    Log: From: Drago Goricanec 
+	 Date: Mon, 7 Sep 1998 17:36:09 +0900
+	 Message-Id: <199809070836.RAA14631@raptor.otsd.ts.fujitsu.co.jp>
+	 Subject: Thread::cond_wait bug in 5.005.51 causes deadlock
+ Branch: perl
+       ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[  1838] By: gsar                                  on 1998/09/23  09:21:11
+    Log: From: "Green, Paul" 
+	 Date: Thu, 10 Sep 1998 00:02:07 -0400
+	 Message-ID: <646CD0392810D211B04A00A024BF26FB1022EB@terminator.sw.stratus.com>
+	 Subject: RE: [PATCH] 5.005_02 and 5.005_51: Stratus VOS port
+ Branch: perl
+       + README.vos vos/Changes vos/build.cm vos/compile_perl.cm
+       + vos/config.h vos/config_h.SH_orig vos/perl.bind
+       + vos/test_vos_dummies.c vos/vos_dummies.c vos/vosish.h
+       ! MANIFEST perl.c perl.h pod/perlport.pod
+____________________________________________________________________________
+[  1837] By: gsar                                  on 1998/09/23  08:45:58
+    Log: (via private mail)
+	 From: Charles Bailey 
+	 Date: Sat, 05 Sep 1998 01:23:58 -0400 (EDT)
+	 Message-id: <01J1FH7R43NS002F14@cor.newman.upenn.edu>
+	 Subject: [Patch 5.005_02] Miscellaneous VMS cleanup
+ Branch: perl
+       ! Changes Changes5.005 README.vms ext/DynaLoader/dl_vms.xs
+       ! lib/Cwd.pm lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm
+       ! lib/ExtUtils/Mksymlists.pm lib/File/Copy.pm lib/File/Path.pm
+       ! lib/File/Spec.pm pod/perldiag.pod pod/perlfaq1.pod
+       ! pod/perlport.pod pod/perlrun.pod vms/ext/DCLsym/0README.txt
+       ! vms/ext/DCLsym/DCLsym.pm vms/ext/DCLsym/DCLsym.xs
+       ! vms/ext/Filespec.pm vms/ext/XSSymSet.pm vms/gen_shrfls.pl
+       ! vms/mms2make.pl vms/perly_c.vms vms/sockadapt.c
+       ! vms/sockadapt.h vms/test.com vms/vms.c vms/vms_yfix.pl
+       ! vms/writemain.pl
+____________________________________________________________________________
+[  1836] By: gsar                                  on 1998/09/23  08:17:42
+    Log: From: Ilya Zakharevich 
+	 Date: Sat, 5 Sep 1998 00:14:51 -0400 (EDT)
+	 Message-Id: <199809050414.AAA19801@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] OS/2 spawning typos
+ Branch: perl
+       ! os2/os2.c
+____________________________________________________________________________
+[  1835] By: gsar                                  on 1998/09/23  08:09:55
+    Log: warn on C
+ Branch: perl
+       ! op.c pod/perldiag.pod
+____________________________________________________________________________
+[  1834] By: gsar                                  on 1998/09/23  07:35:56
+    Log: From: pvhp@forte.com (Peter Prymmer)
+	 Date: Fri, 4 Sep 98 13:27:41 PDT
+	 Message-Id: <9809042027.AA04463@forte.com>
+	 Subject: [PATCH 5.005_02 && 5.005_51] general updates to README.vms
+ Branch: perl
+       ! README.vms
+____________________________________________________________________________
+[  1833] By: gsar                                  on 1998/09/23  07:27:34
+    Log: From: Jeff Okamoto 
+	 Date: Wed, 2 Sep 1998 10:06:49 -0700 (PDT)
+	 Message-Id: <199809021706.KAA26349@xfiles.intercon.hp.com>
+	 Subject: PATCH: 5.005_02 hint/hpux.sh
+ Branch: perl
+       ! hints/hpux.sh
+____________________________________________________________________________
+[  1832] By: gsar                                  on 1998/09/23  07:22:40
+    Log: fix (some) installhtml bugs
+	 From: Larry Parmelee 
+	 Date: Tue, 1 Sep 1998 12:43:40 -0400 (EDT)
+	 Message-Id: <199809011643.MAA05702@sundown.cs.cornell.edu>
+	 Subject: installhtml script needs work
+ Branch: perl
+       ! installhtml
+____________________________________________________________________________
+[  1831] By: gsar                                  on 1998/09/23  07:19:30
+    Log: document 'U' magic with examples
+	 From: Alan Burlison 
+	 Date: Tue, 1 Sep 1998 15:54:06 +0100 (BST)
+	 Message-Id: <199809011455.PAA00631@sale-wts>
+	 Subject: Re: Looking for some XS MAGIC examples...
+ Branch: perl
+       ! pod/perlguts.pod
+____________________________________________________________________________
+[  1830] By: gsar                                  on 1998/09/23  07:16:43
+    Log: From: pvhp@forte.com (Peter Prymmer)
+	 Date: Mon, 31 Aug 98 17:13:49 PDT
+	 Message-Id: <9809010013.AA06737@forte.com>
+	 Subject: [PATCH: 5.005_02; yet another system configuration tip for OS/390]
+ Branch: perl
+       ! README.os390
+____________________________________________________________________________
+[  1829] By: gsar                                  on 1998/09/23  07:15:08
+    Log: fix problematic typecast in filter_del()
+	 From: Mark P Lutz 
+	 Date: Mon, 31 Aug 1998 21:13:11 GMT
+	 Message-Id: <199808312113.VAA53356@triton.ca.boeing.com>
+	 Subject: perl5.005_02 does not build on Cray T90
+ Branch: perl
+       ! toke.c
+____________________________________________________________________________
+[  1828] By: gsar                                  on 1998/09/23  07:11:34
+    Log: From: Ilya Zakharevich 
+	 Date: Mon, 31 Aug 1998 14:52:10 -0400 (EDT)
+	 Message-Id: <199808311852.OAA24676@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_5*] (?>) broken in RE
+ Branch: perl
+       ! regexec.c t/op/re_tests
+____________________________________________________________________________
+[  1827] By: gsar                                  on 1998/09/23  07:09:50
+    Log: U/WIN testsuite patches from Joe Buehler 
+ Branch: perl
+       ! t/op/grent.t t/op/groups.t
+____________________________________________________________________________
+[  1826] By: gsar                                  on 1998/09/23  07:03:16
+    Log: From: Jarkko Hietaniemi 
+	 Date: Wed, 12 Aug 1998 22:41:37 +0300 (EET DST)
+	 Message-Id: <199808121941.WAA06263@alpha.hut.fi>
+	 Subject: [PATCH] 5.004_50 or 5.005_02: get rid of interp.sym because not even AIX needs it
+ Branch: perl
+       - interp.sym
+       ! MANIFEST Makefile.SH embed.pl perl_exp.SH
+____________________________________________________________________________
+[  1825] By: gsar                                  on 1998/09/23  06:56:40
+    Log: re-introduce change#1703
+ Branch: perl
+       ! ext/re/re.pm pod/perlre.pod regcomp.c regexec.c thrdvar.h
+____________________________________________________________________________
+[  1824] By: gsar                                  on 1998/09/23  06:44:19
+    Log: From: Ilya Zakharevich 
+	 Date: Sat, 29 Aug 1998 17:38:30 -0400 (EDT)
+	 Message-Id: <199808292138.RAA18359@monk.mps.ohio-state.edu>
+	 Subject: [PATCH 5.005_*] Protect debugger from nonlocal exits
+ Branch: perl
+       ! lib/perl5db.pl
+____________________________________________________________________________
+[  1823] By: gsar                                  on 1998/09/23  06:41:34
+        Log: From: Joe Buehler 
              Date: 29 Aug 1998 17:13:28 -0400
              Message-ID: 
              Subject: patches for perl 5.005_51 under U/WIN
-     Branch: maint-5.005/perl
-          +> hints/uwin.sh
-           ! Configure
-          !> installman makedepend.SH t/lib/posix.t
+     Branch: perl
+           + hints/uwin.sh
+	   ! Configure installman lib/ExtUtils/MM_Unix.pm makedepend.SH
+           ! t/lib/posix.t
 ____________________________________________________________________________
-[  2258] By: gbarr                                 on 1998/11/21  20:48:02
-        Log: Another Configure patch from Jarkko
-     Branch: maint-5.005/perl
-           ! Configure
+[  1822] By: gsar                                  on 1998/09/23  06:36:59
+        Log: add missing C tweak from Larry
+     Branch: perl
+           ! t/op/subst.t
 ____________________________________________________________________________
-[  2257] By: gbarr                                 on 1998/11/21  17:23:13
-        Log: Big Configure patch from Jarkko Hietaniemi  via
-             private mail
-     Branch: maint-5.005/perl
-	   ! Configure Makefile.SH config_h.SH hints/dec_osf.sh
-	   ! hints/freebsd.sh hints/irix_6.sh hints/linux.sh
-           ! hints/next_3.sh hints/os390.sh pp_sys.c
+[  1821] By: gsar                                  on 1998/09/23  06:27:51
+        Log: s/runops/CALLRUNOPS/
+     Branch: perl
+           ! cc_runtime.h
 ____________________________________________________________________________
-[  2239] By: gbarr                                 on 1998/11/14  03:59:58
-        Log: more doc changes from mainline
-     Branch: maint-5.005/perl
-           ! pod/perldiag.pod pod/perlfunc.pod pod/perlre.pod
-          !> INSTALL README.vms vms/ext/Stdio/Stdio.pm
+[  1820] By: gsar                                  on 1998/09/23  06:24:49
+        Log: rename t/pragma/warn-* to t/pragma/warn/*, be 8.3-friendly
+     Branch: perl
+	  +> t/pragma/warn/1global t/pragma/warn/2use t/pragma/warn/3both
+	  +> t/pragma/warn/4lint t/pragma/warn/5nolint t/pragma/warn/doio
+	  +> t/pragma/warn/gv t/pragma/warn/mg t/pragma/warn/op
+	  +> t/pragma/warn/perl t/pragma/warn/perly t/pragma/warn/pp
+	  +> t/pragma/warn/pp_ctl t/pragma/warn/pp_hot t/pragma/warn/pp_sys
+	  +> t/pragma/warn/regcomp t/pragma/warn/regexec t/pragma/warn/sv
+	  +> t/pragma/warn/taint t/pragma/warn/toke t/pragma/warn/universal
+          +> t/pragma/warn/util
+	   - t/pragma/warn-1global t/pragma/warn-2use t/pragma/warn-3both
+	   - t/pragma/warn-4lint t/pragma/warn-5nolint t/pragma/warn-doio
+	   - t/pragma/warn-gv t/pragma/warn-mg t/pragma/warn-op
+	   - t/pragma/warn-perl t/pragma/warn-perly t/pragma/warn-pp
+	   - t/pragma/warn-pp_ctl t/pragma/warn-pp_hot t/pragma/warn-pp_sys
+	   - t/pragma/warn-regcomp t/pragma/warn-regexec t/pragma/warn-sv
+	   - t/pragma/warn-taint t/pragma/warn-toke t/pragma/warn-universal
+           - t/pragma/warn-util
+           ! MANIFEST t/pragma/warning.t
 ____________________________________________________________________________
-[  2238] By: gbarr                                 on 1998/11/14  02:51:51
-        Log: integrate doc changes from mainline, including
-             changes#1796,1811,1830,1831,1844,1846,1876,1905,2149,2152
-     Branch: maint-5.005/perl
-	  !> README.os390 pod/perl.pod pod/perldelta.pod pod/perlfaq1.pod
-	  !> pod/perlform.pod pod/perlfunc.pod pod/perlguts.pod
-	  !> pod/perlipc.pod pod/perllocale.pod pod/perlport.pod
-	  !> pod/perlref.pod pod/perlrun.pod pod/perlvar.pod pod/perlxs.pod
-          !> pod/pod2man.PL
-____________________________________________________________________________
-[  2237] By: gbarr                                 on 1998/11/14  02:51:49
-        Log: integrate change#1847 from mainline
-             From: Roderick Schertler 
-             Date: Wed, 09 Sep 1998 23:52:48 -0400
-             Message-ID: <20567.905399568@eeyore.ibcinc.com>
-             Subject: seed srand from /dev/urandom when possible
-     Branch: maint-5.005/perl
-           ! pp.c
-____________________________________________________________________________
-[  2232] By: gbarr                                 on 1998/11/13  03:12:37
-        Log: integrate change#2215 from mainline
-             set close-on-exec bit on pipe() FDs
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod pod/perlvar.pod pp_sys.c
-____________________________________________________________________________
-[  2231] By: gbarr                                 on 1998/11/13  02:16:03
-        Log: integrate change#2188 from mainline
-             fix return value of win32_pclose()
-     Branch: maint-5.005/perl
-          !> win32/win32.c
-____________________________________________________________________________
-[  2218] By: gbarr                                 on 1998/11/08  16:48:44
-        Log: From: Graham Barr 
-             Date: Mon, 2 Nov 1998 07:38:52 -0600
-             Message-ID: <19981102073852.A12751@asic.sc.ti.com>
-             Subject: [PATCH 5.005_*] Re: IPC::Msg 1.03
-     Branch: maint-5.005/perl
-           ! ext/IPC/SysV/Msg.pm
-____________________________________________________________________________
-[  2217] By: gbarr                                 on 1998/11/08  05:22:39
-        Log: fix changes in 2213 not to break binary compat
-     Branch: maint-5.005/perl
-           ! pp_ctl.c proto.h
-____________________________________________________________________________
-[  2216] By: gbarr                                 on 1998/11/08  04:21:01
-        Log: integrate change#2192 from mainline
-             indeterminate order-of-evaluation fixes
-     Branch: maint-5.005/perl
-           ! mg.c
-____________________________________________________________________________
-[  2213] By: gbarr                                 on 1998/11/08  00:39:44
-        Log: integrate change#2051 from mainline
-             properly restore PL_rsfp_filters after require
-     Branch: maint-5.005/perl
-	   ! embed.h global.sym objXSUB.h objpp.h pp_ctl.c proto.h scope.c
-           ! scope.h
-____________________________________________________________________________
-[  2212] By: gbarr                                 on 1998/11/07  23:13:29
-        Log: integrate changes#1914,1925,1926,1945,1956,1987 from mainline
-             
-             normalize tm struct passed to strftime() with mktime()
-             From: Spider Boardman 
-             Date: Wed, 30 Sep 1998 15:12:09 -0400
-             Message-Id: <199809301912.PAA26119@Orb.Nashua.NH.US>
-             Subject: [PATCH 5.005_52] Re: POSIX::strftime returns incorrect date 
-             
-             disable USE_THREADS when PERL_OBJECT is enabled
-             
-             From: Mark-Jason Dominus 
-             Date: Sun, 04 Oct 1998 14:48:11 -0400
-             Message-ID: <19981004184811.16048.qmail@plover.com>
-             Subject: PATCH: perldoc -f does not locate -e, -r, -x, etc.
-             
-             defer "deep recursion" warnings until CXt_SUB context is properly
-             set up
-             
-             Mutexen should be initialized only once.
-             
-             perldoc pod update
-             From: Daniel Grisinger 
-             Date: 06 Oct 1998 23:56:51 -0600
-             Message-ID: 
-             Subject: [PATCH _02 and _52] perldoc
-     Branch: maint-5.005/perl
-           ! gv.c op.c pp_hot.c
-	  !> ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs utils/perldoc.PL
-          !> win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  2207] By: gbarr                                 on 1998/11/06  01:36:17
-        Log: integrate changes#1912,1948 from mainline
-             change warning about glob process failure
-     Branch: maint-5.005/perl
-           ! pod/perldiag.pod pp_hot.c
-____________________________________________________________________________
-[  2200] By: gbarr                                 on 1998/11/05  04:26:26
-        Log: integrate changes#1840,1855,1860,1882,1884,1891,1900,1907 from mainline
-             pl2bat tweak from Tye McQueen 
-             
-             reset errno after C search (as suggested by Larry)
-             
-             upgrade to CPAN-1.40
-             
-             missing file in last submit (1881)
-             
-             temporarily disable perl malloc for a2p until we clean up
-             conflicting malloc() declarations everywhere
-             
-             Fixed apostrophe problem from Mark Knutsen.
-             
-             use SETERRNO() to reset errno (suggested by Charles Bailey)
-             
-             applied patches, but retained old behavior for win32 (where compilers
-             can't read from stdin at all)
-             From: Graham Barr 
-             Date: Mon, 28 Sep 1998 09:41:49 -0500
-             Message-ID: <19980928094149.B26576@asic.sc.ti.com>
-             Subject: Re: 5.005_51 Errno invokes cpprun incorrectly
+[  1819] By: gsar                                  on 1998/09/23  06:08:46
+        Log: make \(%foo) return refs to values (not copies of values)
+             From: Stephen McCamant 
+             Date: Fri, 28 Aug 1998 20:46:10 -0700 (PDT)
+             Message-ID: <13799.30680.47765.352558@fre-76-120.reshall.berkeley.edu>
              --
-             Date: Tue, 29 Sep 1998 12:35:43 -0500
-             Message-ID: <19980929123543.Z26576@asic.sc.ti.com>
-             Subject: Re: 5.005_51 Errno invokes cpprun incorrectly
-             
-             and ext/Errno/Errno_pm.PL from change#2050
-     Branch: maint-5.005/perl
-           ! perl.h pp_ctl.c proto.h sv.h
-	  !> ext/Errno/Errno_pm.PL lib/CPAN.pm lib/CPAN/FirstTime.pm
-          !> win32/bin/pl2bat.pl x2p/Makefile.SH
+             From: Roderick Schertler 
+             Date: Sat, 29 Aug 1998 00:58:33 -0400
+             Message-ID: <29894.904366713@eeyore.ibcinc.com>
+             Subject: Re: \(%x) problems
+     Branch: perl
+           ! doop.c pod/perlref.pod
 ____________________________________________________________________________
-[  2199] By: gbarr                                 on 1998/11/05  03:35:00
-        Log: integrate changes#1817,1856,1869,1909 from mainline
-             updated usethreads hints for hpux 10.X
+[  1818] By: gsar                                  on 1998/09/23  06:05:08
+        Log: make h2xs generate ANSI prototypes
+     Branch: perl
+           ! utils/h2xs.PL
+____________________________________________________________________________
+[  1817] By: gsar                                  on 1998/09/23  05:57:16
+        Log: updated usethreads hints for hpux 10.X
              From: Matthew T Harden 
              Date: Fri, 28 Aug 1998 14:10:42 GMT
              Message-Id: <199808281410.AA11058@mthard1.monsanto.com>
              Subject: Re: OK: perl 5.00502 on PA-RISC1.1-thread 10.20 (UNINSTALLED)
-             
-             update hints for OPENSTEP 4.2 on i386
-             From: Gerben Wierda 
-             Date: Sun, 20 Sep 1998 01:03:18 +0200
-             Message-Id: <9809192303.AA29190@Spike>
-             Subject: Perl 5.005_02 compilation problems
-             
-             use STRICT_ALIGNMENT on IRIX to allow usemymalloc=y again
-             From:    Scott Henry 
-             Date:    13 Aug 1998 09:52:15 PDT
-             Message-Id: 
-             Subject: [PATCH] Irix USE_LONG_LONG/malloc.c incompatibility (was...)
-             
-             update SCO hints for dynamic loading
-             From: Andy Dougherty 
-             Date: Mon, 28 Sep 1998 16:50:38 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.004_04-MAINT_TRIAL_5 and 5.005_xx] Re: Perl on SCO_SV
-             --
-             Date: Tue, 29 Sep 1998 16:48:55 -0400 (EDT)
-             Message-Id: 
-             Subject: Re: [PATCH 5.004_04-MAINT_TRIAL_5 and 5.005_xx] Re: Perl on SCO_SV
-     Branch: maint-5.005/perl
-          !> hints/hpux.sh hints/irix_6.sh hints/next_4.sh hints/sco.sh
+     Branch: perl
+           ! hints/hpux.sh perl.h
 ____________________________________________________________________________
-[  2198] By: gbarr                                 on 1998/11/05  03:00:51
-        Log: integrate OS2 changes from mainline, change#1836,1930,1996,2063
-             and os2/os2,c from #2145
-             
-             From: Ilya Zakharevich 
-             Date: Sat, 5 Sep 1998 00:14:51 -0400 (EDT)
-             Message-Id: <199809050414.AAA19801@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] OS/2 spawning typos
-             
-             From: Ilya Zakharevich 
-             Message-Id: <199810050637.CAA07781@monk.mps.ohio-state.edu>
-             Date: Mon, 5 Oct 1998 02:37:43 -0400 (EDT)
-             Subject: [PATCH 5.005_52] Cumulative OS/2-related patch
-             
-             From: Ilya Zakharevich 
-             Date: Tue, 13 Oct 1998 04:46:00 -0400 (EDT)
-             Message-Id: <199810130846.EAA00769@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_52] Memory overrun in os2.c
-             
-             From: Ilya Zakharevich 
-             Date: Sun, 18 Oct 1998 23:20:57 -0400 (EDT)
-             Message-Id: <199810190320.XAA28249@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Improve sbrk() on OS/2               
-             
-             remaining PL_foo stragglers
-     Branch: maint-5.005/perl
-           ! mg.c perl_exp.SH util.c
-          !> hints/os2.sh os2/Changes os2/Makefile.SHs os2/os2.c
-____________________________________________________________________________
-[  2197] By: gbarr                                 on 1998/11/05  02:15:53
-        Log: integrate changes#1826,1862 from mainline
-             
-             From: Jarkko Hietaniemi 
-             Date: Wed, 12 Aug 1998 22:41:37 +0300 (EET DST)
-             Message-Id: <199808121941.WAA06263@alpha.hut.fi>
-             Subject: [PATCH] 5.004_50 or 5.005_02: get rid of interp.sym because not even AIX needs it
-             
-             remove bogus warn()
-     Branch: maint-5.005/perl
-           - interp.sym
-           ! MANIFEST Makefile.SH embed.pl perl_exp.SH
-____________________________________________________________________________
-[  2194] By: gbarr                                 on 1998/11/05  01:26:46
-        Log: integarte malloc.c changes from mainline change#1807,2112,2133
-     Branch: maint-5.005/perl
-          !> malloc.c
-____________________________________________________________________________
-[  2193] By: gbarr                                 on 1998/11/05  01:25:31
-        Log: integrate changes#1763,1778,1801,1804 from mainline
-             
-             From: Stephen McCamant 
-             Date: Sun,  2 Aug 1998 16:33:18 -0500 (CDT)
-             Message-ID: <13764.55116.921952.837027@alias-2.pr.mcs.net>
-             Subject: [PATCH] Eliminate superfluous RV2p[AH]Vs in oops[AH]V()
-             
-             Implicit require during compile reset line numbering
-             
-             silence redefined warning for XS(INIT) {}
-             
-             From: Laszlo Molnar 
-             Date: Sun, 9 Aug 1998 22:38:23 +0200
-             Message-ID: <19980809223823.A215@cdata.tvnet.hu>
-             Subject: [PATCH 5.5002] dos-djgpp update
-     Branch: maint-5.005/perl
-           ! op.c pp_ctl.c
-          !> t/io/fs.t
-____________________________________________________________________________
-[  2176] By: gbarr                                 on 1998/11/02  04:51:48
-        Log: integrate change#2030 from mainline
-             
-             fix handling of mayhaps-extended @_ in goto &sub
-     Branch: maint-5.005/perl
-           ! av.c pp_ctl.c
-          !> t/op/goto.t
-____________________________________________________________________________
-[  2175] By: gbarr                                 on 1998/11/02  04:32:02
-        Log: integrate chnage#1934,1935 from mainline
-             fix USE_THREADS coredump due to uninitialized PL_hv_fetch_ent_mh
-             add test for previous fix
-     Branch: maint-5.005/perl
-           ! util.c
-          !> ext/Thread/create.t
-____________________________________________________________________________
-[  2174] By: gbarr                                 on 1998/11/02  04:22:20
-        Log: integrate change#1863,1881 from mainline
-             
-             provide locked access to string table for USE_THREADS
-             
-             serial access to PL_x[inpr]v_root for USE_THREADS
-     Branch: maint-5.005/perl
-           ! embedvar.h objXSUB.h perl.c proto.h sv.c
-          !> hv.c intrpvar.h thread.h
-____________________________________________________________________________
-[  2173] By: gbarr                                 on 1998/11/02  04:10:46
-        Log: integrate change#1990 from mainline
-             
-             provide option to enable optimization with VC (suggested by Jan
-             Dubois)
-     Branch: maint-5.005/perl
-          !> win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  2172] By: gbarr                                 on 1998/11/02  02:52:29
-        Log: integrate changes#1944,1948,1966 from mainline
-             
-             change#1614 merely disabled earlier fix (doh!); undo it and properly
-             fixup the cop_seq value that must be seen by lexical lookups that
-             emanate within eval''
-             
-             tweak to make fix in change#1944 behave correctly for closures
-             created within eval''
-     Branch: maint-5.005/perl
-           ! op.c pp_ctl.c pp_hot.c scope.c
-          !> cop.h t/op/eval.t
-____________________________________________________________________________
-[  2171] By: gbarr                                 on 1998/11/01  03:59:39
-        Log: integrate changes 1835,2003,2067 and File::Find change in 1938
-             warn on C
-             
-             silence -w noises (suggested by Greg Bacon) Term::Complete
-             
-             From: jan.dubois@ibm.net (Jan Dubois)
-             Date: Wed, 21 Oct 1998 00:55:51 +0200
-             Message-ID: <36380269.55370608@smtp1.ibm.net>
-             Subject: Make _really_ sure Dynaloader.xs code is initialized only once
-     Branch: maint-5.005/perl
-           ! op.c pod/perldiag.pod
-	  !> ext/DynaLoader/DynaLoader_pm.PL lib/File/Find.pm
-          !> lib/Term/Complete.pm
-____________________________________________________________________________
-[  2170] By: gbarr                                 on 1998/11/01  03:48:38
-        Log: integrate change 1992 from mainline
-             
-             applied suggested patch with small doc tweak
-             From: Gisle Aas 
-             Date: 11 Oct 1998 12:53:13 +0200
-             Message-ID: 
-             Subject: Re: [PATCH 5.005_52] Optional syswrite LENGTH argument
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod pp_sys.c
-          !> opcode.h opcode.pl t/op/sysio.t t/op/tiehandle.t
-____________________________________________________________________________
-[  2168] By: gbarr                                 on 1998/11/01  01:58:58
-        Log: From: jan.dubois@ibm.net (Jan Dubois)   
-             Date: Fri, 09 Oct 1998 23:28:31 +0200
-             Message-ID: <36217b7f.3193091@smtp1.ibm.net>
-             Subject: [PATCH 5.005_02] Allow XS access to vtbl_*s when compiled with PERL_OBJECT
-     Branch: maint-5.005/perl
-           ! XSUB.h
-____________________________________________________________________________
-[  2167] By: gbarr                                 on 1998/11/01  01:22:41
-        Log: integrate change#2029 from mainline
-             restore sanity to "constant" references
-     Branch: maint-5.005/perl
-           ! op.c pod/perldiag.pod
-          !> lib/constant.pm t/pragma/constant.t
-____________________________________________________________________________
-[  2166] By: gbarr                                 on 1998/11/01  01:04:24
-        Log: integrate changes#1895,1896,2066,2147,2148 from mainline
-             fix win32_stat() to do the right thing for share names
-             
-             small tweak on last change
-             
-             recognize '%' as a shell metachar for win32
-             From: jan.dubois@ibm.net (Jan Dubois)
-             Date: Tue, 20 Oct 1998 21:57:35 +0200
-             Message-ID: <3636ea31.49170453@smtp1.ibm.net>
-             Subject: [PATCH 5.005_02, Win32]  Re: %ENV% not expanded in backquotes?
-             
-             tweaked version of suggested patch
-             From: Anton Berezin 
-             Date: 29 Oct 1998 14:48:54 +0100
-             Message-ID: <86yapzv5q1.fsf@lion.plab.ku.dk>
-             Subject: [PATCH 5.005_52] One more problem with win32_stat and MSVC
-             
-             From: Anton Berezin 
-             Date: 29 Oct 1998 17:06:25 +0100
-             Message-ID: <86pvbbuzcu.fsf@lion.plab.ku.dk>
-             Subject: [PATCH 5.005_52] win32_opendir() fails on empty drives
-     Branch: maint-5.005/perl
-          !> win32/win32.c
-____________________________________________________________________________
-[  2165] By: gbarr                                 on 1998/11/01  00:10:15
-        Log: integrated changes#1941,1942,1943,1975,2061,2111,2151 from mainline
-             
-             don't longjmp() in pp_goto() (regressive bug from old single-stack
-             implementation)
-             
-             force copy of substrings when matching against temporaries
-             
-             ensure recursive attempts to findlex()icals know enough about where
-             the last eval'' context was encountered
-             
-             propagate typeness of lexicals while cloning them
-             
-             From: Graham Barr 
-             Date: Sat, 17 Oct 1998 22:22:02 -0500
-             Message-ID: <19981017222202.J510@pobox.com>
-             Subject: Re: '*' prototype does not allow bareword with strict
-             
-             smarter C<$SIG{FOO} = BAREWORD;> warning
-             
-             From: Mark-Jason Dominus 
-             Date: Fri, 30 Oct 1998 14:24:23 EST
-             Message-Id: <19981030192423.27276.qmail@plover.com>
-             Subject: PATCH: (5.005_02)  a2p should use `chomp' instead of `chop'
-     Branch: maint-5.005/perl
-           ! op.c pp_ctl.c pp_hot.c t/op/pat.t toke.c
-          !> t/op/eval.t t/op/runlevel.t x2p/walk.c
-____________________________________________________________________________
-[  2158] By: gbarr                                 on 1998/10/31  05:03:02
-        Log: integrate changes#1821 & 1857 from mainline
-             
-             s/runops/CALLRUNOPS/
-             
-             From: Ilya Zakharevich 
-             Date: Tue, 22 Sep 1998 17:30:16 -0400 (EDT)
-             Message-Id: <199809222130.RAA17034@monk.mps.ohio-state.edu>
-             Subject: More verbose Test::Harness [PATCH]
-     Branch: maint-5.005/perl
-          !> cc_runtime.h lib/Test/Harness.pm
-____________________________________________________________________________
-[  2157] By: gbarr                                 on 1998/10/31  02:35:07
-        Log: integrate change#1839 from mainline
-             From: Drago Goricanec 
-             Date: Mon, 7 Sep 1998 17:36:09 +0900
-             Message-Id: <199809070836.RAA14631@raptor.otsd.ts.fujitsu.co.jp>
-             Subject: Thread::cond_wait bug in 5.005.51 causes deadlock
-     Branch: maint-5.005/perl
-           ! ext/Thread/Thread.xs
-____________________________________________________________________________
-[  2156] By: gbarr                                 on 1998/10/31  02:22:11
-        Log: integrate change#1829 from mainline
-             fix problematic typecast in filter_del()
-             From: Mark P Lutz 
-             Date: Mon, 31 Aug 1998 21:13:11 GMT
-             Message-Id: <199808312113.VAA53356@triton.ca.boeing.com>
-             Subject: perl5.005_02 does not build on Cray T90
-     Branch: maint-5.005/perl
-           ! toke.c
-____________________________________________________________________________
-[  2155] By: gbarr                                 on 1998/10/31  01:59:08
-        Log: integrate chnages#1824,2118 from mainline
-             From: Ilya Zakharevich 
-             Date: Sat, 29 Aug 1998 17:38:30 -0400 (EDT)
-             Message-Id: <199808292138.RAA18359@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Protect debugger from nonlocal exits
-             
-             From: Ilya Zakharevich 
-             Date: Wed, 28 Oct 1998 01:23:27 -0500 (EST)
-             Message-Id: <199810280623.BAA06968@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.00552] Minor debugger tweaks
-     Branch: maint-5.005/perl
-          !> lib/perl5db.pl
-____________________________________________________________________________
-[  2154] By: gbarr                                 on 1998/10/31  01:06:35
-        Log: integrate all lib/ExtUtils/... changes from mainline
-     Branch: maint-5.005/perl
-	  !> lib/ExtUtils/MM_OS2.pm lib/ExtUtils/MM_Unix.pm
-	  !> lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MM_Win32.pm
-	  !> lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mkbootstrap.pm
-          !> lib/ExtUtils/Mksymlists.pm lib/ExtUtils/xsubpp
-____________________________________________________________________________
-[  2139] By: gbarr                                 on 1998/10/30  04:17:53
-        Log: apply chnage#2071 from mainline
-             From: Graham Barr 
-             Date: Sat, 17 Oct 1998 20:42:41 -0500
-             Message-ID: <19981017204241.G510@pobox.com>
-             Subject: Re: taint checking for: use lib "$ENV{'EVIL'}"
-     Branch: maint-5.005/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[  2138] By: gbarr                                 on 1998/10/30  04:14:35
-        Log: apply change#2077 from mainline
-             From: Graham Barr 
-             Date: Sat, 24 Oct 1998 21:45:50 -0500
-             Message-ID: <19981024214550.C508@pobox.com>
-             Subject: Re: die with a reference  should use overload "" operator
-     Branch: maint-5.005/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[  2137] By: gbarr                                 on 1998/10/30  04:01:06
-        Log: integrate change#1937 from mainline
-             fix $/ init for USE_THREADS
-     Branch: maint-5.005/perl
-           ! perl.c
-____________________________________________________________________________
-[  2136] By: gbarr                                 on 1998/10/30  03:40:55
-        Log: apply change#2076 from mainline
-             From: Graham Barr 
-             Date: Sat, 24 Oct 1998 12:45:21 -0500
-             Message-ID: <19981024124521.C512@pobox.com>
-             Subject: [PATCH 5.005_02] Re: Auto-incrementing tied scalar causes SEGV
-     Branch: maint-5.005/perl
-           ! sv.c
-____________________________________________________________________________
-[  2135] By: gbarr                                 on 1998/10/30  03:28:29
-        Log: integrate change#1873 from mainline
-             From: Ilya Zakharevich 
-             Date: Tue, 25 Aug 1998 04:29:49 -0400 (EDT)
-             Message-Id: <199808250829.EAA02470@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Extraneous warning for (?()A|B)
-     Branch: maint-5.005/perl
-           ! regcomp.c
-____________________________________________________________________________
-[  2134] By: gbarr                                 on 1998/10/30  03:15:12
-        Log: integrate change#1816 from mainline
-             don't create empty directories in installperl
+[  1816] By: gsar                                  on 1998/09/23  05:53:31
+        Log: don't create empty directories in installperl
              From: Robin Barker 
              Date: Fri, 21 Aug 1998 11:29:24 +0100 (BST)
              Message-Id: <199808211029.LAA00551@cyclone.cise.npl.co.uk>
              Subject: [PATCH 5.005_02] install: empty dirs
-     Branch: maint-5.005/perl
-          !> installperl
+     Branch: perl
+           ! installperl
 ____________________________________________________________________________
-[  2132] By: gbarr                                 on 1998/10/30  01:39:00
-        Log: integrate changes#1815 & 1828 from mainline
-             make behavior of /(a{3})+/ like /(aaa)+/ w.r.t where it matches
+[  1815] By: gsar                                  on 1998/09/23  05:50:36
+        Log: make behavior of /(a{3})+/ like /(aaa)+/ w.r.t where it matches
              From: Ilya Zakharevich 
              Date: Fri, 21 Aug 1998 05:41:02 -0400 (EDT)
              Message-Id: <199808210941.FAA16467@monk.mps.ohio-state.edu>
              Subject: Re: your mail
-             
-             From: Ilya Zakharevich 
-             Date: Mon, 31 Aug 1998 14:52:10 -0400 (EDT)
-             Message-Id: <199808311852.OAA24676@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_5*] (?>) broken in RE
-     Branch: maint-5.005/perl
-           ! regexec.c
-          !> t/op/re_tests
+     Branch: perl
+           ! regexec.c t/op/re_tests
 ____________________________________________________________________________
-[  2131] By: gbarr                                 on 1998/10/30  01:09:19
-        Log: integrate change#1947 from mainline
-             let docatch() pass the buck when restartop turns out to be null,
-             making exceptions in BEGIN{} propagate as expected
-     Branch: maint-5.005/perl
-           ! pp_ctl.c
-          !> t/op/misc.t
-____________________________________________________________________________
-[  2129] By: gbarr                                 on 1998/10/29  14:53:11
-        Log: integrate change#1810 from mainline
-             fix bogus integerization of pop()'s return value
-             From: Gurusamy Sarathy 
-             Date: Sat, 15 Aug 1998 23:27:54 -0400
-             Message-Id: <199808160327.XAA05186@aatma.engin.umich.edu>
-             Subject: Re: Complex expression does integer arithmetic 
-     Branch: maint-5.005/perl
-          !> opcode.h opcode.pl
-____________________________________________________________________________
-[  2128] By: gbarr                                 on 1998/10/29  14:28:13
-        Log: integrate change#1870 from mainline
-             From:    Dan Sugalski 
-             Date:    Fri, 14 Aug 1998 09:20:16 PDT
-             Message-Id: <3.0.5.32.19980814092016.00b37dc0@ous.edu>
-             Subject: [PATCH 5.005_02] (and _5x I expect) VMS config procedure patch
-     Branch: maint-5.005/perl
-          !> configure.com
-____________________________________________________________________________
-[  2127] By: gbarr                                 on 1998/10/29  13:36:29
-        Log: Integrate change#1789 from mainline
-             delay freeing itervar so C works
-     Branch: maint-5.005/perl
-          !> cop.h t/cmd/for.t
-____________________________________________________________________________
-[  2123] By: gbarr                                 on 1998/10/29  02:43:01
-        Log: Apply change#2075 from mainline
-             fix C etc.
-     Branch: maint-5.005/perl
-           ! toke.c
-____________________________________________________________________________
-[  2122] By: gbarr                                 on 1998/10/29  02:40:31
-        Log: Apply change#2070 from mainline
-             avoid bogus line number in XSUB redefined warnings
-     Branch: maint-5.005/perl
-           ! op.c
-____________________________________________________________________________
-[  2121] By: gbarr                                 on 1998/10/29  02:38:59
-        Log: Apply change#2052 from mainline
-             avoid the circular refcnt logic in magic_mutexfree()
-     Branch: maint-5.005/perl
-           ! mg.c pp.c pp_hot.c
-____________________________________________________________________________
-[  2120] By: gbarr                                 on 1998/10/29  02:36:23
-        Log: Remove "5.005" hard-coded and expose vtbl_* from the perl DLL
-             From: "Douglas Lankshear" 
-             Date: Mon, 28 Sep 1998 08:49:13 -0700
-             Message-ID: <000001bdeaf7$8a189350$a32fa8c0@tau.Active>
-             Subject: PATCH [5.005_02] update
-     Branch: maint-5.005/perl
-	   ! embed.h global.sym objXSUB.h objpp.h perl.h proto.h util.c
-           ! win32/win32.c
-____________________________________________________________________________
-[  2084] By: gbarr                                 on 1998/10/25  19:09:11
-        Log: Integrate change#2069 from mainline
-             From: Martijn Koster 
-             Date: Wed, 21 Oct 1998 13:12:03 +0100
-             Message-ID: <19981021131203.A15661@excitecorp.com>
-             Subject: File::Path::mkpath reports the wrong error
-     Branch: maint-5.005/perl
-          !> lib/File/Path.pm
-____________________________________________________________________________
-[  2083] By: gbarr                                 on 1998/10/25  18:48:39
-        Log: Integrate change#1965 from mainline
-             use better numbers for exitstatus test
-     Branch: maint-5.005/perl
-          !> t/op/die_exit.t
-____________________________________________________________________________
-[  2082] By: gbarr                                 on 1998/10/25  18:22:54
-        Log: Apply change 2054 from mainline
-             disallow 'x' in hex numbers (except leading '0x')
-             From: Gisle Aas 
-             Date: 16 Oct 1998 16:33:12 +0200
-             Message-ID: 
-             Subject: Re: [PATCH 5.005_52] 'x' is not a legal hex digit
-     Branch: maint-5.005/perl
-           ! perlvars.h util.c
-          !> t/op/oct.t
-____________________________________________________________________________
-[  2081] By: gbarr                                 on 1998/10/25  17:58:04
-        Log: Apply change #1998 from mainline
-             skip readonly vars and unref references when doing a reset()
-     Branch: maint-5.005/perl
-           ! sv.c
-____________________________________________________________________________
-[  2080] By: gbarr                                 on 1998/10/25  16:06:35
-        Log: Integrate changes #2072 & #1993 from mainline
-             fix bug in B::CC::pp_sassign()
-             From: "vishal bhatia" 
-             Date: Sun, 11 Oct 1998 18:41:38 PDT
-             Message-ID: <19981012014139.19614.qmail@hotmail.com>
-             Subject: B::CC problems with pp_sassign routine
-             implement C and other fixes (via private mail)
-             From:    "vishal bhatia" 
-             Date:    Wed, 21 Oct 1998 22:59:03 PDT
-             Message-Id: <19981022055904.20083.qmail@hotmail.com>
-             Subject: [PATCH 5.005_52] More fixes for B
-     Branch: maint-5.005/perl
-          !> ext/B/B.pm ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm
-____________________________________________________________________________
-[  2079] By: gbarr                                 on 1998/10/25  14:08:00
-        Log: integrate from mainline more FSF address changes
-     Branch: maint-5.005/perl
-          !> Copying ext/B/README lib/Getopt/Long.pm
-____________________________________________________________________________
-[  2053] By: gbarr                                 on 1998/10/25  04:56:47
-        Log: From: Graham Barr 
-             Date: Sat, 17 Oct 1998 23:05:18 -0500
-             Message-ID: <19981017230518.K510@pobox.com>
-             Subject: Re: redo LOOP not restoring $` $' $&
-     Branch: maint-5.005/perl
-           ! cop.h t/cmd/while.t
-____________________________________________________________________________
-[  2048] By: gbarr                                 on 1998/10/24  04:20:10
-        Log: Change Free Software Foundation address in README
-     Branch: maint-5.005/perl
-          !> README
-____________________________________________________________________________
-[  2047] By: gbarr                                 on 1998/10/24  04:02:20
-        Log: Remove #ifdef DEBUGGING around SvTEMP_off
-             From: Gurusamy Sarathy 
-             Date: Mon, 28 Sep 1998 15:23:39 -0400
-             Message-Id: <199809281923.PAA10303@aatma.engin.umich.edu>
-             Subject: Re: [PATCH] Re: 5.005_52: the miniperl coredump: touch magic and you're toast 
-     Branch: maint-5.005/perl
-           ! scope.c
-____________________________________________________________________________
-[  2046] By: gbarr                                 on 1998/10/24  04:00:54
-        Log: use cpp symbols instead of hardwired constants
-             From: Hugo van der Sanden 
-             Date: Mon, 05 Oct 1998 09:23:33 +0100
-             Message-Id: <199810050823.JAA00891@crypt.compulink.co.uk>
-             Subject: [PATCH 5.005_52] By the numbers (resend)
-     Branch: maint-5.005/perl
-           ! op.c
-____________________________________________________________________________
-[  2045] By: gbarr                                 on 1998/10/24  03:50:25
-        Log: squelch undef warnings
-             From: Hugo van der Sanden 
-             Date: Fri, 02 Oct 1998 11:01:14 +0100
-             Message-Id: <199810021001.LAA19214@crypt.compulink.co.uk>
-             Subject: [PATCH] Re: Apparent bug in Math::BigInt 
-     Branch: maint-5.005/perl
-          !> lib/Math/BigInt.pm
-____________________________________________________________________________
-[  2044] By: gbarr                                 on 1998/10/24  03:47:24
-        Log: Add note to INSTALL about ANSI C
-     Branch: maint-5.005/perl
-           ! INSTALL
-____________________________________________________________________________
-[  2043] By: gbarr                                 on 1998/10/24  02:38:12
-        Log: make C AUTOLOAD-aware (autouse now works for modules
-             that are autoloaded)
-             From: Gurusamy Sarathy 
-             Date: Thu, 24 Sep 1998 03:01:01 -0400
-             Message-Id: <199809240701.DAA16223@aatma.engin.umich.edu>
-             Subject: Re: autouse and Getopt::Long don't work together anymore 
-     Branch: maint-5.005/perl
-           ! pp_ctl.c t/op/goto.t
-____________________________________________________________________________
-[  2042] By: gbarr                                 on 1998/10/24  02:16:26
-        Log: From: jarkko.hietaniemi@research.nokia.com (Jarkko Hietaniemi)
-             Date: Wed, 12 Aug 1998 15:42:35 +0300
-             Message-Id: <199808121242.PAA29761@comanche.spices>
-             Subject: [PATCH] 5.004_02 or 5.005_51: fix regexp and tr character ranges in non-ASCII lands
-     Branch: maint-5.005/perl
-           + t/op/tr.t
-	   ! MANIFEST perl.h pod/perllocale.pod pod/perlop.pod
-           ! pod/perlre.pod regcomp.c t/pragma/locale.t toke.c
-____________________________________________________________________________
-[  2021] By: gbarr                                 on 1998/10/20  01:25:23
-        Log: From: Chip Salzenberg 
-             Date: Tue, 6 Oct 1998 13:33:05 -0400
-             Message-ID: <19981006133305.A2348@perlsupport.com>
-             Subject: [PATCH] 5.005_02: Eliminate leak on self-ties
-     Branch: maint-5.005/perl
-	   ! av.c doop.c hv.c mg.c mg.h pp.c pp_hot.c pp_sys.c scope.c
-           ! t/op/tie.t
-____________________________________________________________________________
-[  2015] By: gbarr                                 on 1998/10/17  21:49:56
-        Log: make h2xs generate ANSI prototypes
-     Branch: maint-5.005/perl
-          !> utils/h2xs.PL
-____________________________________________________________________________
-[  2014] By: gbarr                                 on 1998/10/17  20:31:42
-        Log: Fix POSIX::sigprocmask not to check type of $old parameter
-             as it is output only
-     Branch: maint-5.005/perl
-           ! ext/POSIX/POSIX.xs
-____________________________________________________________________________
-[  2013] By: gbarr                                 on 1998/10/17  17:51:16
+[  1814] By: gsar                                  on 1998/09/23  05:45:17
         Log: From: "Kurt D. Starsinic" 
              Date: Thu, 20 Aug 1998 20:59:03 -0400
              Message-ID: <19980820205903.A12908@O2.chapin.edu>
              Subject: [PATCH] h2ph misquotes #error directives
-             
-             fix h2ph handling of C<#error "foo">
-             From: SAKAI Kiyotaka 
-             Date: Thu, 10 Sep 1998 09:59:33 +0900
-             Message-Id: <19980910095933N.ksakai@netwk.ntt-at.co.jp>
-             Subject: [5.005_02] h2ph problem
-     Branch: maint-5.005/perl
-          !> t/lib/h2ph.pht utils/h2ph.PL
+     Branch: perl
+           ! t/lib/h2ph.pht utils/h2ph.PL
 ____________________________________________________________________________
-[  1985] By: gbarr                                 on 1998/10/17  00:41:40
-        Log: s/last/first/ typo in append_list()
-     Branch: maint-5.005/perl
-           ! op.c
+[  1813] By: gsar                                  on 1998/09/23  05:42:41
+        Log: patch to support computed regular subexpressions
+             From: Ilya Zakharevich 
+             Date: Thu, 20 Aug 1998 15:19:50 -0400 (EDT)
+             Message-Id: <199808201919.PAA04692@monk.mps.ohio-state.edu>
+             Subject: [5.005_5* PATCH] Postponed RE - now!
+     Branch: perl
+	   ! embedvar.h objXSUB.h pod/perlre.pod regcomp.c regexec.c
+           ! t/op/pat.t t/op/re_tests thrdvar.h toke.c
 ____________________________________________________________________________
-[  1984] By: gbarr                                 on 1998/10/17  00:36:51
-        Log: From: "Green, Paul" 
-             Date: Thu, 10 Sep 1998 00:02:07 -0400
-             Message-ID: <646CD0392810D211B04A00A024BF26FB1022EB@terminator.sw.stratus.com>
-             Subject: RE: [PATCH] 5.005_02 and 5.005_51: Stratus VOS port
-     Branch: maint-5.005/perl
-	   + README.vos vos/Changes vos/build.cm vos/compile_perl.cm
-	   + vos/config.h vos/config_h.SH_orig vos/perl.bind
-           + vos/test_vos_dummies.c vos/vos_dummies.c vos/vosish.h
-           ! MANIFEST perl.c perl.h pod/perlport.pod
-____________________________________________________________________________
-[  1983] By: gbarr                                 on 1998/10/17  00:23:31
-        Log: define PUT_svindex(), PUT_opindex()
-     Branch: maint-5.005/perl
-          !> ext/B/B/Assembler.pm
-____________________________________________________________________________
-[  1982] By: gbarr                                 on 1998/10/17  00:20:57
-        Log: From: Jochen Wiedmann 
-             Date: Thu, 17 Sep 1998 17:16:06 +0200
-             Message-ID: <360127B6.E44564A@ispsoft.de>
-             Subject: [PATCH] ExtUtils::MakeMaker::prompt cannot return 0
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[  1981] By: gbarr                                 on 1998/10/16  02:58:10
+[  1812] By: gsar                                  on 1998/09/23  05:26:26
         Log: better CR-handling on shebang line and in formats (fixed variant of
              patch suggested by Igor Sysoev )
-     Branch: maint-5.005/perl
+     Branch: perl
            ! perl.c toke.c
 ____________________________________________________________________________
-[  1980] By: gbarr                                 on 1998/10/16  02:21:57
-        Log: From: Roderick Schertler 
-             Date: 11 Sep 1998 16:19:21 -0400
-             Message-ID: 
-             Subject: Re: Open2 and memory leaks
-     Branch: maint-5.005/perl
-          !> lib/IPC/Open3.pm
+[  1811] By: gsar                                  on 1998/09/23  04:35:46
+        Log: document non-loopish blocks better
+             From: "M.J.T. Guy" 
+             Date: Tue, 18 Aug 1998 12:28:36 +0100
+             Message-Id: 
+             Subject: Re: next in do {} while block gives error message
+     Branch: perl
+           ! pod/perlfunc.pod
 ____________________________________________________________________________
-[  1979] By: gbarr                                 on 1998/10/16  02:15:54
-        Log: integrate change #1908 from mainline
-     Branch: maint-5.005/perl
-          !> lib/File/Find.pm
+[  1810] By: gsar                                  on 1998/09/23  04:12:05
+        Log: fix bogus integerization of pop()'s return value
+             From: Gurusamy Sarathy 
+             Date: Sat, 15 Aug 1998 23:27:54 -0400
+             Message-Id: <199808160327.XAA05186@aatma.engin.umich.edu>
+             Subject: Re: Complex expression does integer arithmetic 
+     Branch: perl
+           ! opcode.h opcode.pl
 ____________________________________________________________________________
-[  1977] By: gbarr                                 on 1998/10/16  01:52:46
-        Log: tests missing from change #1794
-     Branch: maint-5.005/perl
-           ! t/op/re_tests
+[  1809] By: gsar                                  on 1998/09/23  04:09:43
+        Log: tweak README.win32
+     Branch: perl
+           ! README.win32
 ____________________________________________________________________________
-[  1794] By: gbarr                                 on 1998/09/20  15:59:20
+[  1808] By: gsar                                  on 1998/09/23  03:40:57
+        Log: better diagnostic for do{} used as lvalue
+     Branch: perl
+           ! op.c pod/perlport.pod
+____________________________________________________________________________
+[  1807] By: gsar                                  on 1998/09/23  03:38:30
+        Log: enable PERL_SBRK_VIA_MALLOC on OPENSTEP-Mach
+             From: hansm@icgroup.nl
+             Date: Tue, 11 Aug 98 21:08:51 +0200
+             Message-Id: <9808111907.AA21903@icgned.icgroup.nl>
+             Subject: Not OK: perl 5.00551 on OPENSTEP-Mach 4_1 (UNINSTALLED)
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[  1806] By: gsar                                  on 1998/09/23  03:36:08
+        Log: support make written in perl (aka "pmake") on win32
+     Branch: perl
+           ! lib/ExtUtils/MM_Win32.pm
+____________________________________________________________________________
+[  1805] By: gsar                                  on 1998/09/23  03:30:07
+        Log: fix mismatched UV/U32 types for to_utf8_*()
+     Branch: perl
+           ! utf8.c
+____________________________________________________________________________
+[  1804] By: gsar                                  on 1998/09/23  03:22:22
+        Log: From: Laszlo Molnar 
+             Date: Sun, 9 Aug 1998 22:38:23 +0200
+             Message-ID: <19980809223823.A215@cdata.tvnet.hu>
+             Subject: [PATCH 5.5002] dos-djgpp update
+     Branch: perl
+           ! t/io/fs.t
+____________________________________________________________________________
+[  1803] By: gsar                                  on 1998/09/23  03:20:13
+        Log: apply minimal variant of patch (sent via private mail)
+             From: jarkko.hietaniemi@research.nokia.com (Jarkko Hietaniemi)
+             Date: Wed, 12 Aug 1998 15:42:35 +0300
+             Message-Id: <199808121242.PAA29761@comanche.spices>
+             Subject: [PATCH] 5.004_02 or 5.005_51: fix regexp and tr character ranges in non-ASCII lands
+     Branch: perl
+	   ! MANIFEST perl.h pod/perllocale.pod pod/perlop.pod
+           ! pod/perlre.pod regcomp.c t/pragma/locale.t toke.c
+____________________________________________________________________________
+[  1802] By: gsar                                  on 1998/09/23  03:03:39
+        Log: adjust searchdict.t for EBCDIC (still needs documenting)
+             From: pvhp@forte.com (Peter Prymmer)
+             Date: Thu, 6 Aug 98 18:09:39 PDT
+             Message-Id: <9808070109.AA06158@forte.com>
+             Subject: [PATCH 5.005_02-TRIAL2] potential modification to t/lib/searchdict.t
+     Branch: perl
+           ! README.os390 t/lib/searchdict.t
+____________________________________________________________________________
+[  1801] By: gsar                                  on 1998/09/23  02:54:15
+        Log: silence redefined warning for XS(INIT) {}
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[  1800] By: gsar                                  on 1998/09/23  02:42:23
+        Log: support match indices via special variables @- and @+
+             From: Ilya Zakharevich 
+             Date: Tue, 21 Jul 1998 23:00:35 -0400 (EDT)
+             Message-Id: <199807220300.XAA16081@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_76] @- and @+
+     Branch: perl
+	   ! av.c embed.h global.sym gv.c mg.c objXSUB.h objpp.h perl.h
+           ! pod/perlvar.pod proto.h regnodes.h sv.c t/op/pat.t toke.c
+____________________________________________________________________________
+[  1799] By: gsar                                  on 1998/09/23  01:44:31
         Log: From: Ilya Zakharevich 
              Date: Tue, 11 Aug 1998 18:43:29 -0400 (EDT)
              Message-Id: <199808112243.SAA14243@monk.mps.ohio-state.edu>
              Subject: Re: Segmentation fault for /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
-     Branch: maint-5.005/perl
+     Branch: perl
            ! regcomp.c t/op/re_tests
 ____________________________________________________________________________
-[  1793] By: gbarr                                 on 1998/09/20  15:39:41
-        Log: From: Peter Prymmer 
-             Date: Mon, 10 Aug 98 16:58:22 PDT
-             Message-Id: <9808102358.AA10616@forte.com>
-             Subject: fix for unpack('u') failures on OS/390
-     Branch: maint-5.005/perl
-           ! pp.c
-____________________________________________________________________________
-[  1792] By: gbarr                                 on 1998/09/20  15:11:33
-        Log: From: "M.J.T. Guy" 
-             Date: Sun, 9 Aug 1998 15:51:48 +0100
-             Message-Id: 
-             Subject: Fix typo, change "an array" to "a hash"
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1791] By: gbarr                                 on 1998/09/20  14:49:26
-        Log: From: Gurusamy Sarathy 
-             Date: Wed, 16 Sep 1998 22:13:17 -0400
-             Message-Id: <199809170213.WAA10546@aatma.engin.umich.edu>
-             Subject: fill gaps in sig_* entries in win32/config.?c
-             and resync win32/config.?c with Porting/config.sh to pick up apiversion
-     Branch: maint-5.005/perl
-           ! win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1790] By: gbarr                                 on 1998/09/20  14:40:56
-        Log: From: Gurusamy Sarathy 
-             Date: Sun, 06 Sep 1998 15:35:11 -0400
-             Message-Id: <199809061935.PAA21531@aatma.engin.umich.edu>
-             Subject: suppress bogus warning on C
-     Branch: maint-5.005/perl
-           ! toke.c
-____________________________________________________________________________
-[  1784] By: nick                                  on 1998/09/12  09:53:36
-        Log: Two tweaks to allow quiet compile qith egcs-1.1
-     Branch: maint-5.005/perl
-           ! win32/win32.h
-____________________________________________________________________________
-[  1783] By: gbarr                                 on 1998/09/07  20:33:11
-        Log: Subject: index() applied BM optimization to wrong argument
-             From: larry@wall.org (Larry Wall)
-             Date:  Thu, 3 Sep 1998 12:49:13 -0700
-             Message-Id: <199809031949.MAA29566@wall.org>, <199809060004.RAA23792@wall.org>
-     Branch: maint-5.005/perl
-           ! op.c util.c
-____________________________________________________________________________
-[  1782] By: gbarr                                 on 1998/09/07  18:54:49
-        Log: From: Gurusamy Sarathy 
-             Date: Fri, 28 Aug 1998 00:33:15 -0400
-             Mssage-Id: <199808280433.AAA06767@aatma.engin.umich.edu>
-             Subject: socket problems on NT 
-     Branch: maint-5.005/perl
-           ! objXSUB.h
-____________________________________________________________________________
-[  1759] By: gsar                                  on 1998/08/08  20:57:47
-        Log: pending submit of 5.005_02
-     Branch: maint-5.005/perl
+[  1798] By: gsar                                  on 1998/09/23  01:39:23
+        Log: integrate maint-5.005 changes (except conflicting change#1794)
+     Branch: perl
            ! Changes
-
-----------------
-Version 5.005_02        Second maintenance release of 5.005
-----------------
-
+	  !> objXSUB.h op.c pod/perlfunc.pod pp.c regcomp.c t/op/re_tests
+	  !> toke.c util.c win32/config.bc win32/config.gc win32/config.vc
+          !> win32/win32.h
 ____________________________________________________________________________
-[  1758] By: gsar                                  on 1998/08/08  03:45:04
-        Log: set patchlevel.h, other minor tweaks
-     Branch: maint-5.005/perl
-           ! Changes patchlevel.h pod/perlhist.pod pod/perlport.pod
-____________________________________________________________________________
-[  1757] By: gsar                                  on 1998/08/08  03:33:33
-        Log: prevent lexical leaks from Benchmark into target code (inspired by
-             an attempt by John Allen)
-     Branch: maint-5.005/perl
-           ! lib/Benchmark.pm
-____________________________________________________________________________
-[  1755] By: gsar                                  on 1998/08/07  23:58:33
-        Log: temporary opcode.pl workaround for ebcdic (suggested by
-             David J. Fiander  and M.J.T. Guy)
-     Branch: maint-5.005/perl
-           ! opcode.pl
-____________________________________________________________________________
-[  1754] By: gsar                                  on 1998/08/07  22:21:10
-        Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-             Date: Fri, 7 Aug 1998 09:56:01 +0100 (BST)
-             Message-Id: <9808070856.AA28065@claudius.bfsec.bt.co.uk>
-             Subject: [PATCH 5.005_50 & 5.005_02] Fix for command line use of source filters
-     Branch: maint-5.005/perl
-           ! perl.c
-____________________________________________________________________________
-[  1753] By: gsar                                  on 1998/08/07  22:19:42
-        Log: perlport.pod notes from Jarkko Hietaniemi; utime() note for Win32
-     Branch: maint-5.005/perl
-           ! pod/perlport.pod
-____________________________________________________________________________
-[  1752] By: gsar                                  on 1998/08/07  22:08:29
-        Log: perlport.pod v1.33 from Chris Nandor 
-     Branch: maint-5.005/perl
-           ! pod/perlport.pod
-____________________________________________________________________________
-[  1751] By: gsar                                  on 1998/08/07  22:01:04
-        Log: From: Ilya Zakharevich 
-             Date: Thu, 6 Aug 1998 19:44:16 -0400 (EDT)
-             Message-Id: <199808062344.TAA09505@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Minor cleanup of RE tests and docs
-     Branch: maint-5.005/perl
-           ! pod/perlre.pod t/op/regexp.t
-____________________________________________________________________________
-[  1750] By: gsar                                  on 1998/08/07  21:51:52
-        Log: allow more compatible interpretation of spaces File::DosGlob::glob()
-             patterns
-     Branch: maint-5.005/perl
-           ! lib/File/DosGlob.pm
-____________________________________________________________________________
-[  1749] By: gsar                                  on 1998/08/07  21:36:04
-        Log: don't use © in Test.pm (suggested by M.J.T. Guy)
-     Branch: maint-5.005/perl
-           ! lib/Test.pm
-____________________________________________________________________________
-[  1748] By: gsar                                  on 1998/08/07  21:31:46
-        Log: From: Dominic Dunlop 
-             Date: Thu, 6 Aug 1998 12:38:07 +0000
-             Message-Id: 
-             Subject: [Patch perl5.005_02-TRIAL2] Update hints, Configure for MachTen 4.1.1
-     Branch: maint-5.005/perl
-           ! Configure hints/machten.sh
-____________________________________________________________________________
-[  1746] By: gsar                                  on 1998/08/05  22:55:59
-        Log: MM_Win32.pm and Liblist.pm tweaks
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
-____________________________________________________________________________
-[  1745] By: gsar                                  on 1998/08/05  21:57:00
-        Log: pod/perlfaq* update from Tom Christiansen 
-     Branch: maint-5.005/perl
-	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
-           ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq8.pod
-____________________________________________________________________________
-[  1744] By: gsar                                  on 1998/08/05  21:53:30
-        Log: From: Chris Nandor 
-             Date: Wed, 5 Aug 1998 15:38:48 -0400
-             Message-Id: 
-             Subject: [PATCH] perlport 1.32
-     Branch: maint-5.005/perl
-           ! pod/perlport.pod
-____________________________________________________________________________
-[  1743] By: gsar                                  on 1998/08/05  21:52:05
-        Log: README.os2 update
-             From: Ilya Zakharevich 
-             Date: Wed, 5 Aug 1998 05:44:46 -0400 (EDT)
-             Message-Id: <199808050944.FAA09053@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Additional OS/2 tweaks: docs, tests
-     Branch: maint-5.005/perl
-           ! README.os2 t/lib/posix.t t/op/exec.t
-____________________________________________________________________________
-[  1742] By: gsar                                  on 1998/08/05  21:50:07
-        Log: additional INSTALL notes from Jarkko Hietaniemi 
-             on semget failure in t/lib/ipc_sysv.t
-     Branch: maint-5.005/perl
-           ! INSTALL
-____________________________________________________________________________
-[  1741] By: gsar                                  on 1998/08/05  21:46:13
-        Log: correct URL for perlcrt.dll
-     Branch: maint-5.005/perl
-           ! Changes win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1740] By: gsar                                  on 1998/08/05  10:05:46
-        Log: update Changes, patchlevel, tweak Liblist.pm
-     Branch: maint-5.005/perl
-           ! Changes lib/ExtUtils/Liblist.pm patchlevel.h
-____________________________________________________________________________
-[  1739] By: gsar                                  on 1998/08/05  09:10:45
-        Log: newer cperl-mode.el
-             From: Ilya Zakharevich 
-             Date: Wed, 5 Aug 1998 03:50:16 -0400 (EDT)
-             Message-Id: <199808050750.DAA07240@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] CPerl update
-     Branch: maint-5.005/perl
-           ! emacs/cperl-mode.el
-____________________________________________________________________________
-[  1738] By: gsar                                  on 1998/08/05  09:08:33
-        Log: support :nosearch in ExtUtils::Liblist for win32, and make -lfoo
-             processing (somewhat) compiler-specific
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
-____________________________________________________________________________
-[  1737] By: gsar                                  on 1998/08/05  03:20:03
-        Log: add index entries for -X
-             From:    Ilya Zakharevich 
-             Date:    Sun, 02 Aug 1998 16:33:18 EDT
-             Message-Id: <199808022033.QAA18778@monk.mps.ohio-state.edu>
-             Subject: [PATCH] A missing docu patch
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1736] By: gsar                                  on 1998/08/05  03:09:58
-        Log: make Test::Harness optionally check for stray files when running tests
-             From: Ilya Zakharevich 
-             Date: Sun, 2 Aug 1998 18:12:48 -0400 (EDT)
-             Message-Id: <199808022212.SAA20126@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] File leaked from test suite
-     Branch: maint-5.005/perl
-           ! lib/Test/Harness.pm
-____________________________________________________________________________
-[  1735] By: gsar                                  on 1998/08/05  02:29:46
-        Log: back out change#1703 that break bincompat with PERL_OBJECT and
-             MULTIPLICITY
-     Branch: maint-5.005/perl
-           ! ext/re/re.pm regcomp.c regexec.c thrdvar.h
-____________________________________________________________________________
-[  1734] By: gsar                                  on 1998/08/05  02:23:47
-        Log: fixes to enable ISC to build IPC/SysV
-             From: Jarkko Hietaniemi 
-             Date: 05 Aug 1998 00:59:13 +0300
-             Message-ID: 
-             Subject: [PATCH] 5.005_02-TRIAL1: (Re: Bug in pp_rename and ISC hint)
-     Branch: maint-5.005/perl
-           ! ext/IPC/SysV/SysV.xs hints/isc.sh hints/isc_2.sh
-____________________________________________________________________________
-[  1733] By: gsar                                  on 1998/08/05  01:20:29
-        Log: let some 'tr' be '$tr' for occult reasons
-             From: Jeff Okamoto 
-             Date: Mon, 3 Aug 1998 11:04:30 -0700 (PDT)
-             Message-Id: <199808031804.LAA25595@xfiles.intercon.hp.com>
-             Subject: PATCH: Configure uses tr, not $tr
-     Branch: maint-5.005/perl
-           ! Configure
-____________________________________________________________________________
-[  1732] By: gsar                                  on 1998/08/05  01:16:40
-        Log: perlre.pod tweak suggested by Mike Wescott 
-     Branch: maint-5.005/perl
-           ! pod/perlre.pod
-____________________________________________________________________________
-[  1731] By: gsar                                  on 1998/08/05  01:10:41
-        Log: explain caveat about use of numeric constants in podoc for sysopen()
-             From: "David J. Fiander" 
-             Date: Tue, 4 Aug 1998 13:09:58 -0400
-             Message-Id: <199808041709.NAA01750@mks.com>
-             Subject: Re: [PATCH] 5.005_01: OE MVS 
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1730] By: gsar                                  on 1998/08/05  00:46:53
-        Log: end pod processing when source file is closed (prevents it carrying
-             over into require()d files)
-     Branch: maint-5.005/perl
-           ! t/comp/require.t toke.c
-____________________________________________________________________________
-[  1729] By: gsar                                  on 1998/08/04  23:03:23
-        Log: correct prototype for des_fcrypt(), explain how to add it in more
-             detail, and supply a patch for libdes-3.06
-     Branch: maint-5.005/perl
-           + win32/des_fcrypt.patch
-	   ! MANIFEST README.win32 win32/Makefile win32/makefile.mk
-           ! win32/win32.c
-____________________________________________________________________________
-[  1728] By: gsar                                  on 1998/08/04  21:50:40
-        Log: tweak to avoid ambiguity warnings
-     Branch: maint-5.005/perl
-           ! pp.c
-____________________________________________________________________________
-[  1727] By: gsar                                  on 1998/08/04  20:31:04
-        Log: remove useless 'rcsid' (extension of a suggestion by
-             Stephen McCamant)
-     Branch: maint-5.005/perl
-	   ! embed.h ext/SDBM_File/sdbm/pair.c ext/SDBM_File/sdbm/sdbm.c
-           ! global.sym gv.c perl.c vms/gen_shrfls.pl
-____________________________________________________________________________
-[  1726] By: gsar                                  on 1998/08/04  19:52:43
-        Log: correct Pod::Html's notion of email addresses
-             From: abigail@fnx.com
-             Date: Mon, 3 Aug 1998 20:22:49 -0400 (EDT)
-             Message-ID: <19980804002249.2011.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.005_01] lib/Pod/Html.pm
-     Branch: maint-5.005/perl
-           ! lib/Pod/Html.pm
-____________________________________________________________________________
-[  1725] By: gsar                                  on 1998/08/04  19:50:06
-        Log: perlport.pod additions from Peter Prymmer 
-             Date: Mon, 3 Aug 98 15:31:35 PDT
-             Message-Id: <9808032231.AA22324@forte.com>
-             --
-             Date: Tue, 4 Aug 98 12:44:20 PDT
-             Message-Id: <9808041944.AA04815@forte.com>
-     Branch: maint-5.005/perl
-           ! pod/perlport.pod
-____________________________________________________________________________
-[  1724] By: gsar                                  on 1998/08/04  18:08:07
-        Log: From: Chris Nandor 
-             Date: Mon, 3 Aug 1998 13:35:25 -0400
-             Message-Id: 
-             Subject: [PATCH] perlport 1.30
-     Branch: maint-5.005/perl
-           ! pod/perlport.pod
-____________________________________________________________________________
-[  1723] By: gsar                                  on 1998/08/04  18:06:13
-        Log: update postscript generator
-             From: Tom Christiansen 
-             Date: Mon, 3 Aug 1998 05:29:25 -0600
-             Message-Id: <199808031129.FAA24985@chthon.perl.com>
-             Subject: PATCH: pod/roffitall (5.005_02)
-     Branch: maint-5.005/perl
-           ! pod/roffitall
-____________________________________________________________________________
-[  1722] By: gsar                                  on 1998/08/03  17:01:12
-        Log: applied suggested patch, slightly tweaked
-             From: Jarkko Hietaniemi 
-             Date: Mon, 3 Aug 1998 11:52:30 +0300 (EET DST)
-             Message-Id: <199808030852.LAA14153@alpha.hut.fi>
-             Subject: [PATCH] perl5.005_02-TRIAL1: pod/perlhist.pod
-     Branch: maint-5.005/perl
-           ! pod/perlhist.pod
-____________________________________________________________________________
-[  1721] By: gsar                                  on 1998/08/03  16:30:20
-        Log: fix segfault when threadsv is used as foreach itervar
-             From:    Stephen McCamant 
-             Date:    Sun, 02 Aug 1998 21:44:34 CDT
-             Message-Id: <13765.8641.997452.14516@alias-2.pr.mcs.net>
-             Subject: [PATCH] threadsv index in enteriter targ in op_free()
-     Branch: maint-5.005/perl
-           ! op.c
-____________________________________________________________________________
-[  1720] By: gsar                                  on 1998/08/02  23:33:42
-        Log: close() open files before unlink()
-             From: Ilya Zakharevich 
-             Date: Sun, 2 Aug 1998 18:14:22 -0400 (EDT)
-             Message-Id: <199808022214.SAA20135@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] File leaked from test suite - tests
-     Branch: maint-5.005/perl
-           ! t/base/rs.t t/op/defins.t
-____________________________________________________________________________
-[  1719] By: gsar                                  on 1998/08/02  23:31:51
-        Log: more pack() tests
-             From: Jarkko Hietaniemi 
-             Date: Mon, 3 Aug 1998 00:59:41 +0300 (EET DST)
-             Message-Id: <199808022159.AAA17160@alpha.hut.fi>
-             Subject: Re: uudecode 'u' problem 
-     Branch: maint-5.005/perl
-           ! t/op/pack.t
-____________________________________________________________________________
-[  1718] By: gsar                                  on 1998/08/02  23:26:51
-        Log: t/TEST aesthetic tweak suggested by Jarkko
-     Branch: maint-5.005/perl
-           ! t/TEST
-____________________________________________________________________________
-[  1717] By: gsar                                  on 1998/08/02  23:23:43
-        Log: add Digital Unix 3.x notes to README.threads (as suggested by
-             Phoenix )
-     Branch: maint-5.005/perl
-           ! README.threads
-____________________________________________________________________________
-[  1716] By: gsar                                  on 1998/08/02  23:15:00
-        Log: allow *FOO{BAR}[0] etc. (without intervening arrow)
-             From: Stephen McCamant 
-             Date: Sun,  2 Aug 1998 16:16:50 -0500 (CDT)
-             Message-ID: <13764.54929.60137.104838@alias-2.pr.mcs.net>
-             Subject: [PATCH] Re: Minor nit in glob notation
-     Branch: maint-5.005/perl
-           ! Changes op.c
-____________________________________________________________________________
-[  1715] By: gsar                                  on 1998/08/02  22:49:53
-        Log: fix unpack('u',...) problem with spaces in input
-     Branch: maint-5.005/perl
-           ! pp.c t/op/pack.t
-____________________________________________________________________________
-[  1714] By: gsar                                  on 1998/08/02  21:27:19
-        Log: update location of perlcrt.dll for win32 builds
-     Branch: maint-5.005/perl
+[  1797] By: gsar                                  on 1998/09/23  01:32:36
+        Log: add note to win32/Makefile about setting CCHOME
+     Branch: perl
            ! win32/Makefile win32/makefile.mk
 ____________________________________________________________________________
-[  1713] By: gsar                                  on 1998/08/02  09:28:32
-        Log: From: Ilya Zakharevich 
-             Date: Sun, 2 Aug 1998 04:35:11 -0400 (EDT)
-             Message-Id: <199808020835.EAA09367@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Better debugging output from malloc.c
-     Branch: maint-5.005/perl
-           ! malloc.c
+[  1796] By: gsar                                  on 1998/09/23  01:31:32
+        Log: perl.pod tweak
+     Branch: perl
+           ! pod/perl.pod
 ____________________________________________________________________________
-[  1712] By: gsar                                  on 1998/08/02  09:16:55
-        Log: fix longstanding bug in pack('u',...) (reads garbage beyond the end
-             of the input string)
-     Branch: maint-5.005/perl
-           ! pp.c
+[  1795] By: gsar                                  on 1998/09/21  20:34:10
+        Log: make xsubpp generate well-formed code with CAPI && !PERL_OBJECT
+     Branch: perl
+           ! lib/ExtUtils/xsubpp
 ____________________________________________________________________________
-[  1711] By: gsar                                  on 1998/08/02  08:14:25
-        Log: update Changes, tweak Porting/makerel
-     Branch: maint-5.005/perl
-           ! Changes Porting/makerel
+[  1789] By: gsar                                  on 1998/09/18  18:01:37
+        Log: delay freeing itervar so C works
+     Branch: perl
+           ! cop.h t/cmd/for.t
 ____________________________________________________________________________
-[  1710] By: gsar                                  on 1998/08/02  07:31:37
-        Log: remove CRs from djgpp/configure.bat (Porting/makerel adds them)
-     Branch: maint-5.005/perl
-           ! djgpp/configure.bat
+[  1788] By: gsar                                  on 1998/09/17  02:19:11
+        Log: resync win32/config.?c with Porting/config.sh to pick up apiversion
+     Branch: perl
+           ! win32/config.bc win32/config.gc win32/config.vc
 ____________________________________________________________________________
-[  1709] By: gsar                                  on 1998/08/02  07:27:34
-        Log: Porting/makerel tweaks
-     Branch: maint-5.005/perl
-           ! Porting/makerel
+[  1787] By: gsar                                  on 1998/09/17  01:45:14
+        Log: suppress bogus warning on C
+     Branch: perl
+           ! toke.c
 ____________________________________________________________________________
-[  1708] By: gsar                                  on 1998/08/02  07:09:35
-        Log: fixes for pod noises
-     Branch: maint-5.005/perl
-	   ! ext/B/B/Bytecode.pm ext/Thread/Thread/Specific.pm
-           ! pod/perlembed.pod pod/perlfaq.pod
+[  1786] By: gsar                                  on 1998/09/17  01:42:51
+        Log: ntohl typo in objXSUB.h
+     Branch: perl
+           ! objXSUB.h
 ____________________________________________________________________________
-[  1707] By: gsar                                  on 1998/08/02  06:59:47
-        Log: malloc.c tweaks
-             From:    Ilya Zakharevich 
-             Date:    Sat, 01 Aug 1998 18:46:32 EDT
-             Message-Id: <199808012246.SAA00699@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.005_*] Better malloc.c
-     Branch: maint-5.005/perl
-           ! malloc.c
+[  1785] By: gsar                                  on 1998/09/17  01:41:48
+        Log: fill gaps in sig_* entries in win32/config.?c
+     Branch: perl
+           ! win32/config.bc win32/config.gc win32/config.vc
 ____________________________________________________________________________
-[  1706] By: gsar                                  on 1998/08/02  06:56:37
-        Log: fix quoting of keys with embedded nulls 
-             From:    Slaven Rezic 
-             Date:    Sat, 01 Aug 1998 13:38:03 +0200
-             Message-Id: <199808011138.NAA05189@mail.cs.tu-berlin.de>
-             Subject: Data::Dumper 2.09, patch
-     Branch: maint-5.005/perl
-           ! ext/Data/Dumper/Dumper.xs
+[  1781] By: larry                                 on 1998/09/05  23:48:24
+        Log: tr/// logic was hosed under utf8
+     Branch: perl
+           ! doop.c op.c op.h pp.c proto.h
 ____________________________________________________________________________
-[  1705] By: gsar                                  on 1998/08/02  06:50:07
-        Log: From:    pvhp@forte.com (Peter Prymmer)
-             Date:    Fri, 31 Jul 1998 14:50:41 PDT
-             Message-Id: <9807312150.AA08867@forte.com>
-             Subject: Re: \Q doesn't work in interpolated regular expressions
-     Branch: maint-5.005/perl
-           ! pod/perlre.pod
+[  1780] By: larry                                 on 1998/09/05  23:44:16
+        Log: several new tests needed tweaking to work under utf8
+     Branch: perl
+           ! t/comp/require.t t/op/pack.t t/op/substr.t
 ____________________________________________________________________________
-[  1704] By: gsar                                  on 1998/08/02  06:37:06
-        Log: add test for magic autovivification
-             From: "M.J.T. Guy" 
-             Date: Thu, 30 Jul 1998 12:18:15 +0100
-             Message-Id: 
-             Subject: Re: Perl5.005_01 failing to autovivify subroutine args
-     Branch: maint-5.005/perl
-           ! pod/perldiag.pod t/cmd/subval.t
+[  1779] By: larry                                 on 1998/09/05  23:41:42
+        Log: index() applied BM optimization to wrong argument
+     Branch: perl
+           ! op.c util.c
 ____________________________________________________________________________
-[  1703] By: gsar                                  on 1998/08/02  06:26:57
-        Log: From: Ilya Zakharevich 
-             Date: Tue, 21 Jul 1998 23:58:53 -0400 (EDT)
-             Message-Id: <199807220358.XAA19811@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_76] better RE colors
-     Branch: maint-5.005/perl
-           ! ext/re/re.pm regcomp.c regexec.c thrdvar.h
+[  1778] By: larry                                 on 1998/09/05  23:38:29
+        Log: Implicit require during compile reset line numbering
+     Branch: perl
+           ! pp_ctl.c
+
+----------------
+Version 5.005_51
+----------------
+
 ____________________________________________________________________________
-[  1702] By: gsar                                  on 1998/08/02  06:22:15
-        Log: mark link type of exported functions for OS/2
-             From: Ilya Zakharevich 
-             Date: Sun, 26 Jul 1998 21:03:03 -0400 (EDT)
-             Message-Id: <199807270103.VAA04977@monk.mps.ohio-state.edu>
-             Subject: Re: Compiler linkage's types [PATCH 5.005]
-     Branch: maint-5.005/perl
-           ! os2/os2ish.h proto.h
+[  1777] By: gsar                                  on 1998/08/10  07:02:38
+        Log: various tweaks: fix signed vs. unsigned problems that prevented C++
+             builds; add sundry PERL_OBJECT scaffolding to get it to build; fix
+             lexical warning testsuite for win32
+     Branch: perl
+	   ! Changes doop.c embed.h global.sym objXSUB.h objpp.h op.c
+	   ! pod/perlhist.pod pp.c pp_hot.c proto.h regcomp.c regexec.c
+	   ! sv.c t/pragma/warn-doio t/pragma/warn-mg t/pragma/warn-op
+	   ! t/pragma/warn-regexec toke.c utf8.c win32/GenCAPI.pl
+           ! win32/Makefile win32/makefile.mk
 ____________________________________________________________________________
-[  1701] By: gsar                                  on 1998/08/02  06:16:03
-        Log: tweaked version of suggested patch
-             From: Ilya Zakharevich 
-             Date: Mon, 20 Jul 1998 21:40:00 -0400 (EDT)
-             Message-Id: <199807210140.VAA17186@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_75] Enable -DS
-     Branch: maint-5.005/perl
-	   ! README.threads ext/Thread/Thread.xs ext/Thread/typemap mg.c
-	   ! op.c perl.c perl.h pod/perlrun.pod pp.c pp_hot.c scope.c
-           ! thread.h util.c win32/win32thread.c
+[  1776] By: gsar                                  on 1998/08/09  17:53:48
+        Log: fix coredump with MULTIPLICITY (ckWARN() needs early curcop init)
+     Branch: perl
+           ! Changes MANIFEST perl.c pod/perlhist.pod
 ____________________________________________________________________________
-[  1700] By: gsar                                  on 1998/08/02  05:54:00
-        Log: up patchlevel to 5.005_02
-     Branch: maint-5.005/perl
-	   ! Changes patchlevel.h win32/Makefile win32/config_H.bc
+[  1775] By: gsar                                  on 1998/08/09  14:35:33
+        Log: tweak warning test
+     Branch: perl
+           ! t/pragma/warn-toke
+____________________________________________________________________________
+[  1774] By: gsar                                  on 1998/08/09  14:13:46
+        Log: add missing dTHR; notes for test failures due to small stacksize
+     Branch: perl
+	   ! doio.c gv.c op.c sv.c t/pragma/warn-mg t/pragma/warn-regexec
+           ! toke.c universal.c util.c
+____________________________________________________________________________
+[  1773] By: gsar                                  on 1998/08/09  11:31:53
+        Log: lexical warnings; tweaks to places that didn't apply correctly
+             From:    pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             Date:    Wed, 29 Jul 1998 09:28:45 BST
+             Message-Id: <9807290828.AA26286@claudius.bfsec.bt.co.uk>
+             Subject: lexical warnings patch for 5.005_50
+     Branch: perl
+	   + README.lexwarn lib/warning.pm t/pragma/warn-2use
+	   + t/pragma/warn-3both t/pragma/warn-4lint t/pragma/warn-5nolint
+	   + t/pragma/warn-doio t/pragma/warn-gv t/pragma/warn-mg
+	   + t/pragma/warn-op t/pragma/warn-perl t/pragma/warn-perly
+	   + t/pragma/warn-pp t/pragma/warn-pp_ctl t/pragma/warn-pp_hot
+	   + t/pragma/warn-pp_sys t/pragma/warn-regcomp
+	   + t/pragma/warn-regexec t/pragma/warn-sv t/pragma/warn-taint
+	   + t/pragma/warn-toke t/pragma/warn-universal t/pragma/warn-util
+           + warning.h warning.pl
+	   ! Changes MANIFEST Makefile.SH cop.h doio.c global.sym gv.c
+	   ! lib/diagnostics.pm mg.c op.c op.h perl.c perl.h pp.c pp_ctl.c
+	   ! pp_hot.c pp_sys.c proto.h regcomp.c regexec.c sv.c t/op/tie.t
+	   ! t/pragma/warn-1global t/pragma/warning.t taint.c toke.c
+           ! universal.c util.c
+____________________________________________________________________________
+[  1772] By: gsar                                  on 1998/08/08  23:06:00
+        Log: bump patchlevel to 5.005_51
+     Branch: perl
+	   ! patchlevel.h win32/Makefile win32/config_H.bc
            ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
 ____________________________________________________________________________
-[  1699] By: gsar                                  on 1998/08/02  05:50:01
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199807180809.EAA09379@monk.mps.ohio-state.edu>
-             Date: Sat, 18 Jul 1998 04:09:26 -0400 (EDT)
-             Subject: [PATCH 5.004_72] Make tests succeed on OS/2
-     Branch: maint-5.005/perl
-           ! t/io/fs.t t/lib/io_pipe.t t/lib/io_sock.t t/op/stat.t
+[  1771] By: gsar                                  on 1998/08/08  23:01:57
+        Log: fix bogus warning on "\x{123}"
+             From: pmarquess@claudius.bfsec.bt.co.uk (Paul Marquess)
+             Date: Mon, 27 Jul 1998 06:16:15 +0100 (BST)
+             Message-Id: <9807270534.AA11102@claudius.bfsec.bt.co.uk>
+             Subject: [5.005_50 PATCH] Some unicode problems
+     Branch: perl
+           ! regcomp.c toke.c
 ____________________________________________________________________________
-[  1698] By: gsar                                  on 1998/08/02  05:41:41
-        Log: use I32_MAX as the limit when U16_MAX > I32_MAX (for CRAY)
-     Branch: maint-5.005/perl
+[  1770] By: gsar                                  on 1998/08/08  22:56:55
+        Log: hide dup symbol for static build of ext/re
+             From: Dominic Dunlop 
+             Date: Wed, 29 Jul 1998 11:09:56 +0100 (WET DST)
+             Message-Id: <199807291009.LAA08935@ppp72.vo.lu>
+             Subject: Not OK: perl 5.00550 on powerpc-machten 4.1 [BOGUS PATCH]
+     Branch: perl
            ! regcomp.c
 ____________________________________________________________________________
-[  1697] By: gsar                                  on 1998/08/02  05:20:12
-        Log: support OE/MVS
-             From: Jarkko Hietaniemi 
-             Message-Id: <199808010903.MAA09371@alpha.hut.fi>
-             Date: Sat, 1 Aug 1998 12:03:02 +0300 (EET DST)
-             Subject: [PATCH] 5.005_01: OE MVS
-     Branch: maint-5.005/perl
-           + README.os390 ebcdic.c
-	   ! Configure MANIFEST doio.c ext/Errno/Errno_pm.PL gv.c handy.h
-	   ! hints/os390.sh lib/bigint.pl mg.c patchlevel.h perl.c perl.h
-	   ! perly.c perly.h perly.y perly_c.diff pod/perldelta.pod
-	   ! pod/perlport.pod pp.c pp_ctl.c pp_hot.c pp_sys.c sv.c
-	   ! t/base/term.t t/comp/package.t t/comp/require.t
-	   ! t/lib/bigintpm.t t/lib/cgi-html.t t/lib/filehand.t t/lib/ph.t
-	   ! t/op/auto.t t/op/bop.t t/op/each.t t/op/magic.t t/op/misc.t
-	   ! t/op/ord.t t/op/pack.t t/op/quotemeta.t t/op/re_tests
-	   ! t/op/regexp.t t/op/sort.t t/op/sprintf.t t/op/subst.t
-	   ! t/op/taint.t t/op/universal.t t/pragma/constant.t
-	   ! t/pragma/overload.t t/pragma/subs.t toke.c x2p/a2p.h
-           ! x2p/a2py.c
+[  1769] By: gsar                                  on 1998/08/08  22:45:06
+        Log: fix double free on -Mutf8 -e '$b=uc("")'
+             From: larry@wall.org (Larry Wall)
+             Date: Fri, 7 Aug 1998 14:42:43 -0700
+             Message-Id: <199808072142.OAA14920@wall.org>
+             Subject: [PATCH 5.005_50]: uc("") and lc("") under utf8 fails
+     Branch: perl
+           ! pp.c
 ____________________________________________________________________________
-[  1696] By: gsar                                  on 1998/08/02  05:03:09
-        Log: VMS patches
-             From: pvhp@forte.com (Peter Prymmer)
-             Message-Id: <9807290017.AA01833@forte.com>
-             Date: Tue, 28 Jul 98 17:17:33 PDT
-             Subject: Re: Not OK: perl 5.00501 on VMS_AXP-thread I7.2
-             --
-             From: Dan Sugalski 
-             Message-Id: <3.0.5.32.19980729125623.00b562b0@ous.edu>
-             Date: Wed, 29 Jul 1998 12:56:23 -0700
-             Subject: [PATCH 5.005_01]Typo in CONFIGURE.COM (vms)
-             --
-             From: Dan Sugalski 
-             Date: Thu, 30 Jul 1998 09:02:24 -0700
-             Message-Id: <3.0.5.32.19980730090224.00b70eb0@ous.edu>
-             Subject: [PATCH 5.005_01]VMS config SOCKETSHR typo patch and fcntl check
-     Branch: maint-5.005/perl
-           ! configure.com vms/subconfigure.com
+[  1768] By: gsar                                  on 1998/08/08  22:42:29
+        Log: substr() assumes utf8 without say-so
+             From: larry@wall.org (Larry Wall)
+             Date: Fri, 7 Aug 1998 12:25:12 -0700
+             Message-Id: <199808071925.MAA13436@wall.org>
+             Subject: [PATCH 5.005_50] substr bug?
+     Branch: perl
+           ! pp.c
 ____________________________________________________________________________
-[  1695] By: gsar                                  on 1998/08/02  04:49:32
-        Log: rename duplicate warning in regexec.c
-     Branch: maint-5.005/perl
-           ! regexec.c
+[  1767] By: gsar                                  on 1998/08/08  22:38:25
+        Log: fix intolerance of SWASHes for blank lines
+             From: Gisle Aas 
+             Date: 06 Aug 1998 23:28:57 +0200
+             Message-ID: 
+             Subject: Re: Re[2]: another joyride begins
+     Branch: perl
+           ! lib/utf8_heavy.pl
 ____________________________________________________________________________
-[  1694] By: gsar                                  on 1998/08/02  04:44:20
-        Log: beware egcs' ld on Solaris
-             From: Tom Spindler 
-             Message-ID: <19980801212158.A2934@home.merit.edu>
-             Date: Sat, 1 Aug 1998 21:21:58 -0400
-             Subject: Re: [PATCH perl5.005_01] hints/solaris_2.sh, egcs, and ld
-     Branch: maint-5.005/perl
-           ! hints/solaris_2.sh
+[  1766] By: gsar                                  on 1998/08/08  22:33:10
+        Log: utf8 doc tweak
+             From: Gisle Aas 
+             Date: 05 Aug 1998 00:41:04 +0200
+             Message-ID: 
+             Subject: Matching clumps
+     Branch: perl
+           ! lib/utf8.pm
 ____________________________________________________________________________
-[  1693] By: gsar                                  on 1998/08/02  04:41:43
-        Log: de-utf-ized variation of Ilya's patch
-             From: Jan-Pieter Cornet 
-             Date: 31 Jul 1998 12:44:57 +0200
-             Message-ID: <6ps779$hmj$1@xs1.xs4all.nl>
-             Subject: Re: s/\s*$//g in majordomo causes segfault under 5.005_01
-     Branch: maint-5.005/perl
-           ! regexec.c
+[  1765] By: gsar                                  on 1998/08/08  22:31:37
+        Log: kill bogus warning from -we 'use utf8; $_="\x{FF}"'
+             From: Gisle Aas 
+             Date: 04 Aug 1998 22:56:11 +0200
+             Message-ID: 
+             Subject: Re: another joyride begins
+     Branch: perl
+           ! lib/utf8_heavy.pl
 ____________________________________________________________________________
-[  1692] By: gsar                                  on 1998/08/02  04:39:14
-        Log: better validation of SysV IPC availability
-             From: Jarkko Hietaniemi 
-             Date: Fri, 31 Jul 1998 13:13:57 +0300 (EEST)
-             Message-Id: <199807311013.NAA28887@koah.research.nokia.com>
-             Subject: Re: lib/ipc_sysv.t fails under FreeBSD 2.2.1 
-     Branch: maint-5.005/perl
-	   ! Configure INSTALL ext/IPC/SysV/SysV.xs pod/perldiag.pod
-           ! t/lib/ipc_sysv.t
+[  1764] By: gsar                                  on 1998/08/08  22:28:43
+        Log: From: larry@wall.org (Larry Wall)
+             Date: Tue, 4 Aug 1998 17:04:51 -0700
+             Message-Id: <199808050004.RAA22592@wall.org>
+             Subject: [PATCH 5.005_50] \pX not implemented!
+     Branch: perl
+           ! regcomp.c
 ____________________________________________________________________________
-[  1691] By: gsar                                  on 1998/08/02  04:32:30
-        Log: fix bug in display of watched expressions
-             From: Ilya Zakharevich 
-             Date: Thu, 30 Jul 1998 20:02:04 -0400 (EDT)
-             Message-Id: <199807310002.UAA21681@monk.mps.ohio-state.edu>
-             Subject: Re: Bug? in perl5db.pl [PATCH]
-     Branch: maint-5.005/perl
-           ! lib/perl5db.pl
+[  1763] By: gsar                                  on 1998/08/08  22:27:15
+        Log: From: Stephen McCamant 
+             Date: Sun,  2 Aug 1998 16:33:18 -0500 (CDT)
+             Message-ID: <13764.55116.921952.837027@alias-2.pr.mcs.net>
+             Subject: [PATCH] Eliminate superfluous RV2p[AH]Vs in oops[AH]V()
+     Branch: perl
+           ! op.c
 ____________________________________________________________________________
-[  1690] By: gsar                                  on 1998/08/02  04:29:08
-        Log: applied all but one hunk
-             From: Horst von Brand 
-             Date: Thu, 30 Jul 1998 17:19:42 -0400
-             Message-Id: <199807302119.RAA06852@sleipnir.valparaiso.cl>
-             Subject: Some typos in perldelta.pod
-     Branch: maint-5.005/perl
-           ! pod/perldelta.pod
-____________________________________________________________________________
-[  1689] By: gsar                                  on 1998/08/02  04:27:02
-        Log: From: Andy Dougherty 
-             Date: Thu, 30 Jul 1998 10:22:36 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.005_05] Remove redundant dTHR
-     Branch: maint-5.005/perl
-           ! mg.c sv.c
-____________________________________________________________________________
-[  1688] By: gsar                                  on 1998/08/02  04:25:49
-        Log: From: Tom Hughes 
-             Date: 30 Jul 1998 09:47:31 +0100
-             Message-ID: 
-             Subject: Class::Struct has an incomplete tied array package
-     Branch: maint-5.005/perl
-           ! lib/Class/Struct.pm
-____________________________________________________________________________
-[  1687] By: gsar                                  on 1998/08/02  04:21:48
-        Log: ensure implicit close on local(*FH) doesn't affect $! and thence $?
-     Branch: maint-5.005/perl
-           ! sv.c t/op/die_exit.t
-____________________________________________________________________________
-[  1686] By: gsar                                  on 1998/08/02  03:57:28
+[  1762] By: gsar                                  on 1998/08/08  22:26:09
         Log: From: Jarkko Hietaniemi 
-             Date: Thu, 30 Jul 1998 00:39:30 +0300 (EET DST)
-             Message-Id: <199807292139.AAA01795@alpha.hut.fi>
-             Subject: Re: [PATCH] 5.004_05-MAINT_TRIAL_5: three locale fixes
-     Branch: maint-5.005/perl
-           ! ext/POSIX/POSIX.xs pod/perllocale.pod
+             Date: Sun, 2 Aug 1998 22:05:28 +0300 (EET DST)
+             Message-Id: <199808021905.WAA10592@alpha.hut.fi>
+             Subject: [PATCH] 5.005_02-TRIAL1 or 5.004_05-MAINT_TRIAL_5: t/op/{pw,gr}ent.t
+     Branch: perl
+           + t/op/grent.t t/op/pwent.t
+           ! MANIFEST
 ____________________________________________________________________________
-[  1685] By: gsar                                  on 1998/08/02  03:54:15
-        Log: PERL_OBJECT bincompat fixes from Douglas Lankshear 
-             Date: Wed, 29 Jul 1998 10:45:31 -0700
-             Message-ID: <000101bdbb18$ae767550$a32fa8c0@tau.Active>
-             Subject: [PATCH 5.005_01] Fixes binary compatibility for PERL_OBJECT
-             --
-             Date: Sat, 1 Aug 1998 09:33:19 -0700
-             Message-ID: <000701bdbd6a$17ada180$a32fa8c0@tau.Active>
-             Subject: [PATCH 5.005_01]
-     Branch: maint-5.005/perl
-           ! perl.h proto.h
+[  1761] By: gsar                                  on 1998/08/08  22:21:52
+        Log: From: Ilya Zakharevich 
+             Date: Thu, 30 Jul 1998 19:23:56 -0400 (EDT)
+             Message-Id: <199807302323.TAA21175@monk.mps.ohio-state.edu>
+             Subject: [5.005_50 PATCH] misprint in RE engine
+     Branch: perl
+           ! regexec.c t/op/re_tests
 ____________________________________________________________________________
-[  1684] By: gsar                                  on 1998/08/02  03:49:33
-        Log: hand-apply whitespace-mutiliated patch
-             From: Nicholas Clark 
-             Date: Tue, 28 Jul 1998 16:40:42 +0100 (BST)
-             Message-Id: <199807281540.QAA04640@flirble.org>
-             Subject: [PATCH] POSIX::ELOOP
-     Branch: maint-5.005/perl
-           ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
+[  1760] By: gsar                                  on 1998/08/08  22:18:54
+        Log: integrate maint-5.005 changes into mainline
+     Branch: perl
+          +> Porting/fixCORE README.os390 ebcdic.c win32/des_fcrypt.patch
+          !> (integrate 138 files)
 ____________________________________________________________________________
-[  1683] By: gsar                                  on 1998/08/02  03:45:26
-        Log: document return values of do() better
-             From: "M.J.T. Guy" 
-             Date: Tue, 28 Jul 1998 12:44:36 +0100
-             Message-Id: 
-             Subject: [PATCH] Re: Obscurity of lexicals with do ""
-     Branch: maint-5.005/perl
-           ! pod/perlfunc.pod
+[  1672] By: gsar                                  on 1998/07/27  18:35:28
+        Log: create new Changes
+     Branch: perl
+           + Changes
+           ! Changes5.005 MANIFEST
 ____________________________________________________________________________
-[  1682] By: gsar                                  on 1998/08/02  03:42:26
-        Log: avoid reusing foreach itervar if magic got tacked onto it
-             From: Stephen McCamant 
-             Date: Tue, 28 Jul 1998 22:18:25 -0500 (CDT)
-             Message-ID: <13758.36756.215424.719750@alias-2.pr.mcs.net>
-             Subject: [PATCH] Re: pos() resetting changed with 5.005?
-     Branch: maint-5.005/perl
-           ! pp_hot.c
+[  1671] By: gsar                                  on 1998/07/27  18:30:57
+        Log: rename Changes --> Changes5.005
+     Branch: perl
+          +> Changes5.005
+           - Changes
 ____________________________________________________________________________
-[  1681] By: gsar                                  on 1998/08/02  03:39:27
-        Log: From: Nick Ing-Simmons 
-             Date: Wed, 29 Jul 1998 13:28:14 +0100
-             Message-Id: <199807291228.NAA20055@tiuk.ti.com>
-             Subject: [Patch] Math::Complex - Ambiguous call resolved as CORE::foo()
-     Branch: maint-5.005/perl
-           + Porting/fixCORE
-           ! MANIFEST lib/Math/Complex.pm
+[  1670] By: gsar                                  on 1998/07/27  18:10:14
+        Log: integrate 5.005_01 changes from maint
+     Branch: perl
+           ! Changes
+	  !> README.win32 pod/perldelta.pod proto.h toke.c win32/GenCAPI.pl
+          !> win32/win32.c
 ____________________________________________________________________________
-[  1680] By: gsar                                  on 1998/08/02  03:33:07
-        Log: From: h.sanden@elsevier.nl (Hugo van der Sanden)
-             Date: Mon, 27 Jul 1998 13:34:45 +0200
-             Message-Id: <199807271134.NAA24475@dorlas.elsevier.nl>
-             Subject: perlcall.pod
-     Branch: maint-5.005/perl
-           ! pod/perlcall.pod
+[  1667] By: nick                                  on 1998/07/26  14:31:01
+        Log: Add dTHR so that it compiles miniperl in threaded mode
+     Branch: perl
+           ! doop.c mg.c regcomp.c regexec.c
 ____________________________________________________________________________
-[  1679] By: gsar                                  on 1998/08/02  03:29:41
-        Log: MM_Win32::maybe_command() case-insesitivity tweak
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/MM_Win32.pm
-____________________________________________________________________________
-[  1678] By: gsar                                  on 1998/08/02  03:24:29
-        Log: fix MM_Win32::maybe_command()
-     Branch: maint-5.005/perl
-           ! lib/ExtUtils/MM_Win32.pm
-____________________________________________________________________________
-[  1677] By: gsar                                  on 1998/08/01  19:52:19
-        Log: fixes for overloading bugs and docs, tweaked some
-             From: Ilya Zakharevich 
-             Date: Sat, 25 Jul 1998 21:28:16 -0400 (EDT)
-             Message-Id: <199807260128.VAA10543@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_76] better overloading
-     Branch: maint-5.005/perl
-	   ! Changes gv.c lib/dumpvar.pl lib/overload.pm lib/perl5db.pl
-           ! t/pragma/overload.t
-____________________________________________________________________________
-[  1676] By: gsar                                  on 1998/08/01  19:37:13
-        Log: stray s/foo/PL_foo/
-             From: win@in.rhein-main.de (Winfried Koenig)
-             Date: Mon, 27 Jul 98 21:13 MET
-             Message-Id: 
-             Subject: Bug in pp_rename and ISC hint
-     Branch: maint-5.005/perl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1675] By: gsar                                  on 1998/08/01  19:22:13
-        Log: newer Porting/patchls from maint-5.004
-     Branch: maint-5.005/perl
-           ! Porting/patchls
-____________________________________________________________________________
-[  1674] By: gsar                                  on 1998/08/01  17:50:44
-        Log: fix buggy detection of failed glob()
-     Branch: maint-5.005/perl
-           ! pp_hot.c
-____________________________________________________________________________
-[  1673] By: gsar                                  on 1998/07/29  18:14:32
-        Log: fix typo in change#1489 that prevented magic-autovivification
-     Branch: maint-5.005/perl
-           ! mg.c
+[  1666] By: nick                                  on 1998/07/26  13:01:10
+        Log: Resolve ansiperl against mainline (@1648?)
+             Unclear that change number has "taken".
+     Branch: ansiperl
+          +> (branch 169 files)
+           - ObjXSub.h XSLock.h compat3.sym fixvars pod/perld4.pod
+          !> (integrate 131 files)
 
 ----------------
-Version 5.005_01        First maintenance release of 5.005
+Version 5.005_50
 ----------------
 
 ____________________________________________________________________________
-[  1669] By: gsar                                  on 1998/07/26  23:19:02
-        Log: update Changes; add sv_*_mg() entries in win32/GenCAPI.pl
-     Branch: maint-5.005/perl
-           ! Changes proto.h win32/GenCAPI.pl
+[  1665] By: gsar                                  on 1998/07/26  05:38:48
+        Log: add trailing newline to file
+     Branch: perl
+           ! Changes lib/unicode/blocks.txt
 ____________________________________________________________________________
-[  1668] By: gsar                                  on 1998/07/26  21:12:11
-        Log: s/TMP_CRLF_PATCH/PERL_STRICT_CR/ with sense reversed, so they
-             can disable it from config.sh if they want; up patchlevel to 5_01;
-             little tweaks to pods
-     Branch: maint-5.005/perl
-	   ! README.win32 patchlevel.h pod/perldelta.pod toke.c
-	   ! win32/Makefile win32/config_H.bc win32/config_H.gc
-           ! win32/config_H.vc win32/makefile.mk win32/win32.c
+[  1664] By: gsar                                  on 1998/07/26  05:08:48
+        Log: integrate proto.h additions from maint-5.005
+     Branch: perl
+          !> pod/perlhist.pod proto.h
+____________________________________________________________________________
+[  1663] By: gsar                                  on 1998/07/26  05:07:05
+        Log: add new files to MANIFEST; add missing prototypes to proto.h;
+             s/PL_utf8skip/utf8skip/ for now, or we end up with Perl_PL_;
+             add typecasts to silence warnings; tweaks for win32 builds
+     Branch: perl
+	   ! MANIFEST embed.h global.sym proto.h regexec.c toke.c utf8.h
+           ! win32/Makefile win32/makefile.mk
 ____________________________________________________________________________
 [  1662] By: gsar                                  on 1998/07/26  05:01:52
         Log: add missing sv_*_mg() prototypes in proto.h, update perlhist.pod
      Branch: maint-5.005/perl
            ! pod/perlhist.pod proto.h
 ____________________________________________________________________________
+[  1661] By: gsar                                  on 1998/07/26  02:52:48
+        Log: up patchlevel to 5.005_50
+     Branch: perl
+	   ! Changes patchlevel.h win32/Makefile win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1660] By: gsar                                  on 1998/07/26  02:43:57
+        Log: integrate utfperl
+     Branch: perl
+          +> (branch 162 files)
+          !> (integrate 29 files)
+____________________________________________________________________________
+[  1659] By: gsar                                  on 1998/07/26  02:38:22
+        Log: integrate maint-5.005 changes
+     Branch: perl
+	  !> Changes README.vms djgpp/fixpmain emacs/ptags hints/beos.sh
+	  !> lib/Math/BigInt.pm pod/perldelta.pod pod/perlmodinstall.pod
+	  !> pod/perltoc.pod pp_sys.c t/lib/bigintpm.t
+          !> vms/descrip_mms.template vms/subconfigure.com
+____________________________________________________________________________
 [  1658] By: gsar                                  on 1998/07/26  02:23:46
         Log: VMS patches from Dan Sugalski 
              Date: Fri, 24 Jul 1998 11:38:25 -0700
@@ -4250,6 +27310,114 @@ ____________________________________________________________________________
      Branch: maint-5.005/perl
            ! lib/Math/BigInt.pm t/lib/bigintpm.t
 ____________________________________________________________________________
+[  1651] By: larry                                 on 1998/07/24  05:44:33
+        Log: Here are the long-expected Unicode/UTF-8 modifications.
+     Branch: utfperl
+	   + lib/unicode/ArabLink.pl lib/unicode/ArabLnkGrp.pl
+	   + lib/unicode/Bidirectional.pl lib/unicode/Block.pl
+	   + lib/unicode/Category.pl lib/unicode/CombiningClass.pl
+	   + lib/unicode/Decomposition.pl
+	   + lib/unicode/In/AlphabeticPresentationForms.pl
+	   + lib/unicode/In/Arabic.pl
+	   + lib/unicode/In/ArabicPresentationForms-A.pl
+	   + lib/unicode/In/ArabicPresentationForms-B.pl
+	   + lib/unicode/In/Armenian.pl lib/unicode/In/Arrows.pl
+	   + lib/unicode/In/BasicLatin.pl lib/unicode/In/Bengali.pl
+	   + lib/unicode/In/BlockElements.pl lib/unicode/In/Bopomofo.pl
+	   + lib/unicode/In/BoxDrawing.pl
+	   + lib/unicode/In/CJKCompatibility.pl
+	   + lib/unicode/In/CJKCompatibilityForms.pl
+	   + lib/unicode/In/CJKCompatibilityIdeographs.pl
+	   + lib/unicode/In/CJKSymbolsandPunctuation.pl
+	   + lib/unicode/In/CJKUnifiedIdeographs.pl
+	   + lib/unicode/In/CombiningDiacriticalMarks.pl
+	   + lib/unicode/In/CombiningHalfMarks.pl
+	   + lib/unicode/In/CombiningMarksforSymbols.pl
+	   + lib/unicode/In/ControlPictures.pl
+	   + lib/unicode/In/CurrencySymbols.pl lib/unicode/In/Cyrillic.pl
+	   + lib/unicode/In/Devanagari.pl lib/unicode/In/Dingbats.pl
+	   + lib/unicode/In/EnclosedAlphanumerics.pl
+	   + lib/unicode/In/EnclosedCJKLettersandMonths.pl
+	   + lib/unicode/In/GeneralPunctuation.pl
+	   + lib/unicode/In/GeometricShapes.pl lib/unicode/In/Georgian.pl
+	   + lib/unicode/In/Greek.pl lib/unicode/In/GreekExtended.pl
+	   + lib/unicode/In/Gujarati.pl lib/unicode/In/Gurmukhi.pl
+	   + lib/unicode/In/HalfwidthandFullwidthForms.pl
+	   + lib/unicode/In/HangulCompatibilityJamo.pl
+	   + lib/unicode/In/HangulJamo.pl lib/unicode/In/HangulSyllables.pl
+	   + lib/unicode/In/Hebrew.pl
+	   + lib/unicode/In/HighPrivateUseSurrogates.pl
+	   + lib/unicode/In/HighSurrogates.pl lib/unicode/In/Hiragana.pl
+	   + lib/unicode/In/IPAExtensions.pl lib/unicode/In/Kanbun.pl
+	   + lib/unicode/In/Kannada.pl lib/unicode/In/Katakana.pl
+	   + lib/unicode/In/Lao.pl lib/unicode/In/Latin-1Supplement.pl
+	   + lib/unicode/In/LatinExtended-A.pl
+	   + lib/unicode/In/LatinExtended-B.pl
+	   + lib/unicode/In/LatinExtendedAdditional.pl
+	   + lib/unicode/In/LetterlikeSymbols.pl
+	   + lib/unicode/In/LowSurrogates.pl lib/unicode/In/Malayalam.pl
+	   + lib/unicode/In/MathematicalOperators.pl
+	   + lib/unicode/In/MiscellaneousSymbols.pl
+	   + lib/unicode/In/MiscellaneousTechnical.pl
+	   + lib/unicode/In/NumberForms.pl
+	   + lib/unicode/In/OpticalCharacterRecognition.pl
+	   + lib/unicode/In/Oriya.pl lib/unicode/In/PrivateUse.pl
+	   + lib/unicode/In/SmallFormVariants.pl
+	   + lib/unicode/In/SpacingModifierLetters.pl
+	   + lib/unicode/In/Specials.pl
+	   + lib/unicode/In/SuperscriptsandSubscripts.pl
+	   + lib/unicode/In/Tamil.pl lib/unicode/In/Telugu.pl
+	   + lib/unicode/In/Thai.pl lib/unicode/In/Tibetan.pl
+	   + lib/unicode/Is/Alnum.pl lib/unicode/Is/Alpha.pl
+	   + lib/unicode/Is/BidiAN.pl lib/unicode/Is/BidiB.pl
+	   + lib/unicode/Is/BidiCS.pl lib/unicode/Is/BidiEN.pl
+	   + lib/unicode/Is/BidiES.pl lib/unicode/Is/BidiET.pl
+	   + lib/unicode/Is/BidiL.pl lib/unicode/Is/BidiON.pl
+	   + lib/unicode/Is/BidiR.pl lib/unicode/Is/BidiS.pl
+	   + lib/unicode/Is/BidiWS.pl lib/unicode/Is/C.pl
+	   + lib/unicode/Is/Cc.pl lib/unicode/Is/Cn.pl lib/unicode/Is/Co.pl
+	   + lib/unicode/Is/DCcircle.pl lib/unicode/Is/DCcompat.pl
+	   + lib/unicode/Is/DCfinal.pl lib/unicode/Is/DCfont.pl
+	   + lib/unicode/Is/DCinital.pl lib/unicode/Is/DCinitial.pl
+	   + lib/unicode/Is/DCisolated.pl lib/unicode/Is/DCnarrow.pl
+	   + lib/unicode/Is/DCnoBreak.pl lib/unicode/Is/DCsmall.pl
+	   + lib/unicode/Is/DCsquare.pl lib/unicode/Is/DCsub.pl
+	   + lib/unicode/Is/DCsuper.pl lib/unicode/Is/DCvertical.pl
+	   + lib/unicode/Is/DCwide.pl lib/unicode/Is/DecoCanon.pl
+	   + lib/unicode/Is/DecoCompat.pl lib/unicode/Is/Digit.pl
+	   + lib/unicode/Is/L.pl lib/unicode/Is/Ll.pl lib/unicode/Is/Lm.pl
+	   + lib/unicode/Is/Lo.pl lib/unicode/Is/Lower.pl
+	   + lib/unicode/Is/Lt.pl lib/unicode/Is/Lu.pl lib/unicode/Is/M.pl
+	   + lib/unicode/Is/Mc.pl lib/unicode/Is/Mirrored.pl
+	   + lib/unicode/Is/Mn.pl lib/unicode/Is/N.pl lib/unicode/Is/Nd.pl
+	   + lib/unicode/Is/No.pl lib/unicode/Is/P.pl lib/unicode/Is/Pd.pl
+	   + lib/unicode/Is/Pe.pl lib/unicode/Is/Po.pl
+	   + lib/unicode/Is/Print.pl lib/unicode/Is/Ps.pl
+	   + lib/unicode/Is/S.pl lib/unicode/Is/Sc.pl lib/unicode/Is/Sm.pl
+	   + lib/unicode/Is/So.pl lib/unicode/Is/Space.pl
+	   + lib/unicode/Is/Upper.pl lib/unicode/Is/Z.pl
+	   + lib/unicode/Is/Zl.pl lib/unicode/Is/Zp.pl lib/unicode/Is/Zs.pl
+	   + lib/unicode/JamoShort.pl lib/unicode/Makefile
+	   + lib/unicode/Name.pl lib/unicode/Number.pl
+	   + lib/unicode/To/Digit.pl lib/unicode/To/Lower.pl
+	   + lib/unicode/To/Title.pl lib/unicode/To/Upper.pl
+	   + lib/unicode/UnicodeData-Latest.txt lib/unicode/arabshp.txt
+	   + lib/unicode/blocks.txt lib/unicode/index2.txt
+	   + lib/unicode/jamo2.txt lib/unicode/mktables.PL
+	   + lib/unicode/names2.txt lib/unicode/props2.txt
+	   + lib/unicode/readme.txt lib/utf8.pm lib/utf8_heavy.pl t/UTEST
+           + utf8.c utf8.h
+	   ! Makefile.SH doop.c embed.h embedvar.h global.sym handy.h mg.c
+	   ! op.c op.h perl.h perlvars.h pod/perlfunc.pod pod/perlop.pod
+	   ! pod/perlre.pod pp.c pp_ctl.c pp_hot.c proto.h regcomp.c
+	   ! regcomp.h regcomp.sym regexec.c regexp.h regnodes.h sv.c
+           ! t/op/vec.t toke.c util.c vms/vmsish.h
+____________________________________________________________________________
+[  1650] By: gsar                                  on 1998/07/24  04:06:48
+        Log: create utfperl branch
+     Branch: utfperl
+          +> (branch 1079 files)
+____________________________________________________________________________
 [  1649] By: gsar                                  on 1998/07/24  03:56:56
         Log: create maint-5.005 branch
      Branch: maint-5.005/perl
@@ -4260,15077 +27428,3 @@ ____________________________________________________________________________
      Branch: perl
            ! Changes
 
--------------
-Version 5.005           Production release
--------------
-
-____________________________________________________________________________
-[  1647] By: gsar                                  on 1998/07/22  21:11:29
-        Log: sneak in hints/irix_6.sh update
-     Branch: perl
-           ! Changes hints/irix_6.sh
-____________________________________________________________________________
-[  1646] By: gsar                                  on 1998/07/22  21:00:44
-        Log: Update perldelta and Changes; refresh perltoc; newer perlembed.pod
-             from Jon Orwant ; update guts documentation
-             to reflect PL_* changes; is this *it* for 5.005?
-     Branch: perl
-	   ! Changes README.win32 patchlevel.h pod/perlcall.pod
-	   ! pod/perldelta.pod pod/perlembed.pod pod/perlguts.pod
-           ! pod/perltoc.pod pod/perlxs.pod
-____________________________________________________________________________
-[  1645] By: gsar                                  on 1998/07/22  19:37:41
-        Log: don't use qualify() in class methods
-             From:    Albert Dvornik 
-             Date:    22 Jul 1998 15:14:46 EDT
-             Message-Id: 
-             Subject: [PATCH 5.005-MAYBE] Bug in IO::Handle->input_record_separator
-     Branch: perl
-           ! ext/IO/lib/IO/Handle.pm
-____________________________________________________________________________
-[  1644] By: gsar                                  on 1998/07/22  18:13:31
-        Log: newer perlembed.pod
-     Branch: perl
-           ! pod/perlembed.pod
-____________________________________________________________________________
-[  1643] By: gsar                                  on 1998/07/22  18:03:42
-        Log: From:    Andy Dougherty 
-             Date:    Wed, 22 Jul 1998 13:42:20 EDT
-             Message-Id: 
-             Subject: Re: 5.005 - a sneak preview
-     Branch: perl
-           ! Porting/pumpkin.pod
-____________________________________________________________________________
-[  1642] By: gsar                                  on 1998/07/22  17:58:42
-        Log: add perlmodinstall, regen perltoc
-     Branch: perl
-           + pod/perlmodinstall.pod
-	   ! MANIFEST pod/Makefile pod/buildtoc pod/perl.pod
-           ! pod/perltoc.pod win32/pod.mak
-____________________________________________________________________________
-[  1641] By: gsar                                  on 1998/07/22  17:11:55
-        Log: support optional crypt() with PERL_OBJECT
-             From:    "Douglas Lankshear" 
-             Date:    Wed, 22 Jul 1998 08:21:10 PDT
-             Message-Id: <000701bdb584$5b57c070$a32fa8c0@tau.Active>
-             Subject: [PATCH 5.005 maybe] for crypt with PERL_OBJECT
-     Branch: perl
-	   ! iperlsys.h pp.c win32/Makefile win32/makefile.mk
-           ! win32/perlhost.h win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[  1640] By: gsar                                  on 1998/07/22  17:09:11
-        Log: win32 tweaks
-             Date:    Wed, 22 Jul 1998 07:09:09 PDT
-             Message-Id: <000001bdb57a$4bc9dd00$a32fa8c0@tau.Active>
-             From:    "Douglas Lankshear" 
-     Branch: perl
-           ! win32/Makefile win32/makefile.mk win32/win32.h
-____________________________________________________________________________
-[  1639] By: gsar                                  on 1998/07/22  17:00:30
-        Log: From:    d-lewart@uiuc.edu (Daniel S. Lewart)
-             Date:    Wed, 22 Jul 1998 06:20:08 CDT
-             Message-Id: <199807221120.GAA07962@staff2.cso.uiuc.edu>
-             Subject: [PATCH] lib/Sys/Syslog.pm doc
-     Branch: perl
-           ! Changes lib/Sys/Syslog.pm
-____________________________________________________________________________
-[  1638] By: gsar                                  on 1998/07/22  09:12:26
-        Log: up patchlevel etc (only doc patching from now on, testing in progress)
-     Branch: perl
-	   ! Changes patchlevel.h win32/Makefile win32/config_H.bc
-           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[  1637] By: gsar                                  on 1998/07/22  08:27:09
-        Log: VMS patches from Dan Sugalski 
-             Date:    Tue, 21 Jul 1998 16:04:40 PDT
-             Message-Id: <3.0.5.32.19980721160440.00a916f0@ous.edu>
-             Subject: [PATCH 5.004_76]Document Vax C's death for VMS
-             --
-             Date:    Tue, 21 Jul 1998 16:08:57 PDT
-             Message-Id: <3.0.5.32.19980721160857.00a6d250@ous.edu>
-             Subject: [PATCH 5.004_76]fix clean/realclean targets of VMS' makefile
-             --
-             Date:    Tue, 21 Jul 1998 16:05:56 PDT
-             Message-Id: <3.0.5.32.19980721160556.00a1a100@ous.edu>
-             Subject: [PATCH 5.004_76]Note the record-read capabilities of $/ in perldelta.pod
-     Branch: perl
-           ! README.vms pod/perldelta.pod vms/descrip_mms.template
-____________________________________________________________________________
-[  1636] By: gsar                                  on 1998/07/22  08:04:37
-        Log: fix quoting in t/io/inplace.t
-     Branch: perl
-           ! t/io/inplace.t
-____________________________________________________________________________
-[  1635] By: gsar                                  on 1998/07/22  07:59:30
-        Log: From:    Dan Sugalski 
-             Date:    Tue, 21 Jul 1998 13:06:44 PDT
-             Message-Id: <3.0.5.32.19980721130644.00ac5100@ous.edu>
-             Subject: [PATCH 5.004_76]t/io/inplace.t enabled for VMS
-     Branch: perl
-           ! t/io/inplace.t vms/test.com
-____________________________________________________________________________
-[  1634] By: gsar                                  on 1998/07/22  07:55:35
-        Log: From:    Dan Sugalski 
-             Date:    Tue, 21 Jul 1998 12:42:20 PDT
-             Message-Id: <3.0.5.32.19980721124220.00a82a20@ous.edu>
-             Subject: [PATCH 5.004_76]Fix inplace editing for VMS
-     Branch: perl
-           ! doio.c
-____________________________________________________________________________
-[  1633] By: gsar                                  on 1998/07/22  07:53:53
-        Log: fix AIX hints for PL_* changes
-             From:    Jarkko Hietaniemi 
-             Date:    Tue, 21 Jul 1998 22:53:54 +0300
-             Message-Id: <199807211953.WAA55724@vipunen.hut.fi>
-             Subject: Re: _76 fails to link B extension on AIX 414
-     Branch: perl
-           ! perl_exp.SH
-____________________________________________________________________________
-[  1632] By: gsar                                  on 1998/07/22  07:51:56
-        Log: From:    Anton Berezin 
-             Date:    Tue, 21 Jul 1998 21:46:45 +0200
-             Message-Id: <199807211946.VAA01301@lion.plab.ku.dk>
-             Subject: [PATCH _76] t/op/eval.t test for eval & scoping of lexicals
-     Branch: perl
-           ! t/op/eval.t
-____________________________________________________________________________
-[  1631] By: gsar                                  on 1998/07/22  07:48:20
-        Log: applied patch, with tweak suggested by Michael Parker
-             From:    Andy Dougherty 
-             Date:    Tue, 21 Jul 1998 14:30:05 EDT
-             Message-Id: 
-             Subject: Re: Not OK: _76 on IP22-irix6.2 fails tests
-     Branch: perl
-           ! hints/irix_6.sh
-____________________________________________________________________________
-[  1630] By: gsar                                  on 1998/07/22  07:40:25
-        Log: better diagnostic on errno.t failure
-             From:    Graham Barr 
-             Date:    Tue, 21 Jul 1998 13:07:29 CDT
-             Message-Id: <19980721130729.K4337@asic.sc.ti.com>
-     Branch: perl
-           ! t/lib/errno.t
-____________________________________________________________________________
-[  1629] By: gsar                                  on 1998/07/22  07:36:38
-        Log: win32 tweaks: disable XSLOCKS in perl.c, correct typo, search
-             the registry for anything that begins with "PERL", not "PERL5"
-             From:    "Douglas Lankshear" 
-             Date:    Tue, 21 Jul 1998 11:08:00 PDT
-             Message-Id: <000601bdb4d2$7ee74720$a32fa8c0@tau.Active>
-     Branch: perl
-           ! perl.c win32/perlhost.h win32/win32.c
-____________________________________________________________________________
-[  1628] By: gsar                                  on 1998/07/22  07:28:35
-        Log: suppress redefined warnings on C
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[  1627] By: gsar                                  on 1998/07/22  07:15:19
-        Log: remove spurious $VERSION line that confuses CPAN
-             From:    Johan Vromans 
-             Date:    Tue, 21 Jul 1998 20:01:36 +0200
-             Message-Id: <13748.55168.397720.564438@phoenix.squirrel.nl>
-             Subject: Re: 5.004_76 missing version numbers
-     Branch: perl
-           ! lib/Getopt/Long.pm
-____________________________________________________________________________
-[  1626] By: gsar                                  on 1998/07/22  06:57:56
-        Log: From:    Andy Dougherty 
-             Date:    Tue, 21 Jul 1998 10:20:13 EDT
-             Message-Id: 
-             Subject: [PATCH] Porting/config* updates for 5.005
-     Branch: perl
-           ! Changes Porting/config.sh Porting/config_H
-____________________________________________________________________________
-[  1625] By: gsar                                  on 1998/07/22  06:46:38
-        Log: add a few more globals with old names #defined
-     Branch: perl
-           ! embed.pl embedvar.h
-____________________________________________________________________________
-[  1624] By: gsar                                  on 1998/07/22  06:39:22
-        Log: allow extensions to be specified as paths 
-             From:    Paul Johnson 
-             Date:    Tue, 21 Jul 1998 12:04:27 BST
-             Message-Id: <19980721120427.F903@west-tip.transeda.com>
-             Subject: [PATCH] 5.004_75 Embed and static extensions
-     Branch: perl
-           ! lib/ExtUtils/Embed.pm
-____________________________________________________________________________
-[  1623] By: gsar                                  on 1998/07/22  06:12:50
-        Log: make $ prototype to accept THREADSVs
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[  1622] By: gsar                                  on 1998/07/22  06:04:25
-        Log: fix Liblist.pm to find entries that are plain pathnames on win32
-     Branch: perl
-           ! lib/ExtUtils/Liblist.pm
-____________________________________________________________________________
-[  1621] By: gsar                                  on 1998/07/22  05:10:53
-        Log: perlfaq update from From Tom Christiansen and Nathan Torkington
-             (removes all mention of training courses from perlfaq*.pod)
-     Branch: perl
-	   ! pod/perlfaq.pod pod/perlfaq2.pod pod/perlfaq3.pod
-	   ! pod/perlfaq4.pod pod/perlfaq6.pod pod/perlfaq7.pod
-           ! pod/perlfaq8.pod pod/perlfaq9.pod
-____________________________________________________________________________
-[  1620] By: gsar                                  on 1998/07/22  02:51:13
-        Log: applied patch, modulo parts already added to perldelta
-             From:    Stephen McCamant 
-             Date:    Tue, 21 Jul 1998 17:06:23 CDT
-             Message-Id: <13749.3106.995764.413053@alias-2.pr.mcs.net>
-             Subject: [PATCH] Re: Beta2 is available
-     Branch: perl
-           ! pod/perldelta.pod
-____________________________________________________________________________
-[  1619] By: gsar                                  on 1998/07/22  02:45:55
-        Log: applied patch, add new message to perldeta
-             From:    Stephen McCamant 
-             Date:    Tue, 21 Jul 1998 16:12:25 CDT
-             Message-Id: <13749.910.83378.949909@alias-2.pr.mcs.net>
-             Subject: [PATCH] Band-aid patch for local($avhv->{a})
-     Branch: perl
-           ! pod/perldelta.pod pod/perldiag.pod pp.c pp_hot.c
-____________________________________________________________________________
-[  1618] By: gsar                                  on 1998/07/22  02:08:00
-        Log: fix up B modules for PL_* changes
-     Branch: perl
-           ! ext/B/B/C.pm ext/B/B/CC.pm ext/B/B/Stackobj.pm
-____________________________________________________________________________
-[  1617] By: gsar                                  on 1998/07/22  01:42:14
-        Log: From:    Malcolm Beattie 
-             Date:    Tue, 21 Jul 1998 18:13:16 BST
-             Message-Id: <199807211713.SAA20735@sable.ox.ac.uk>
-             Subject: Compiler docs for 5.005
-     Branch: perl
-	   ! ext/B/B.pm ext/B/B/Bytecode.pm ext/B/B/C.pm ext/B/B/CC.pm
-           ! ext/B/O.pm
-____________________________________________________________________________
-[  1616] By: gsar                                  on 1998/07/22  01:29:09
-        Log: s/PL_sv/PL_bytecode_sv/ etc., so we have unique, case-insensitive
-             names
-     Branch: perl
-	   ! bytecode.h bytecode.pl byterun.c embedvar.h interp.sym
-           ! intrpvar.h
-____________________________________________________________________________
-[  1615] By: nick                                  on 1998/07/21  22:26:34
-        Log: Mingw32 PERL_OBJECT tweaks
-     Branch: perl
-           ! ext/Fcntl/Fcntl.xs ext/IO/IO.xs ext/POSIX/POSIX.xs
-____________________________________________________________________________
-[  1614] By: gsar                                  on 1998/07/21  19:43:32
-        Log: fix off-by-one in change#623 that broke lexical lookups in eval''
-     Branch: perl
-           ! pp_ctl.c
-
-----------------
-Version 5.004_76        5.005 Public Beta, Issue 2
-----------------
-
-____________________________________________________________________________
-[  1613] By: gsar                                  on 1998/07/21  10:26:01
-        Log: final tweaks before beta2
-     Branch: perl
-           + Porting/findvars
-          +> Porting/fixvars
-           - fixvars
-	   ! Changes MANIFEST intrpvar.h iperlsys.h
-           ! lib/ExtUtils/MM_Win32.pm win32/perlhost.h
-____________________________________________________________________________
-[  1612] By: gsar                                  on 1998/07/21  07:15:54
-        Log: fixes to enable PERL_OBJECT build with mingw32/egcs-1.0.2
-     Branch: perl
-	   ! ext/Opcode/Opcode.xs proto.h win32/makedef.pl
-	   ! win32/makefile.mk win32/perlhost.h win32/win32.c win32/win32.h
-           ! win32/win32sck.c
-____________________________________________________________________________
-[  1611] By: gsar                                  on 1998/07/21  07:12:00
-        Log: fix bytecode.pl with moved var names
-     Branch: perl
-           ! bytecode.pl byterun.c byterun.h ext/B/B/Asmdata.pm
-____________________________________________________________________________
-[  1610] By: gsar                                  on 1998/07/21  05:51:10
-        Log: tweak toke.c
-     Branch: perl
-           ! toke.c
-____________________________________________________________________________
-[  1609] By: gsar                                  on 1998/07/21  05:46:59
-        Log: change case of PERL_OBJECT filenames, consistent with the rest
-     Branch: perl
-           + XSlock.h objXSUB.h
-           - ObjXSub.h XSLock.h
-	   ! MANIFEST XSUB.h lib/ExtUtils/MM_Win32.pm perl.h
-           ! win32/GenCAPI.pl win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1608] By: gsar                                  on 1998/07/21  05:31:13
-        Log: part 2 of PERL_OBJECT fixes (globals in bytecode.h moved to intrpvar.h)
-     Branch: perl
-           ! bytecode.h byterun.c embedvar.h interp.sym intrpvar.h
-____________________________________________________________________________
-[  1607] By: gsar                                  on 1998/07/21  05:29:10
-        Log: part 1 of PERL_OBJECT fixes for new var names
-     Branch: perl
-	   ! ObjXSub.h bytecode.h globals.c iperlsys.h perl.h pp_ctl.c
-           ! run.c win32/GenCAPI.pl
-____________________________________________________________________________
-[  1606] By: gsar                                  on 1998/07/21  05:17:26
-        Log: From:    Stephen McCamant 
-             Date:    Mon, 20 Jul 1998 23:53:32 CDT
-             Message-Id: <13748.6947.311341.657005@alias-2.pr.mcs.net>
-             Subject: [PATCH] redundant RV2GVs in ck_fun()
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[  1605] By: gsar                                  on 1998/07/21  05:13:28
-        Log: From:    Stephen McCamant 
-             Date:    Mon, 20 Jul 1998 23:32:42 CDT
-             Message-Id: <13748.6392.921893.643238@alias-2.pr.mcs.net>
-             Subject: B::Deparse 0.56 (first testsuite fixes; big)
-     Branch: perl
-           ! ext/B/B/Deparse.pm
-____________________________________________________________________________
-[  1604] By: gsar                                  on 1998/07/21  05:07:29
-        Log: applied a slightly tweaked version of suggested patch
-             From: Colin Kuskie 
-             Date: Mon, 20 Jul 1998 15:58:31 -0700 (PDT)
-             Message-ID: 
-             Subject: [PATCH _75] More documentation for -i prefix
-     Branch: perl
-           ! pod/perlrun.pod
-____________________________________________________________________________
-[  1603] By: gsar                                  on 1998/07/21  04:59:19
-        Log: disable malloced_size() feedback with -DLEAKTEST
-             From: Ilya Zakharevich 
-             Date: Mon, 20 Jul 1998 21:20:21 -0400 (EDT)
-             Message-Id: <199807210120.VAA15031@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_75] -DLEAKTEST broken
-     Branch: perl
-           ! av.c sv.c
-____________________________________________________________________________
-[  1602] By: gsar                                  on 1998/07/21  04:57:43
-        Log: fix hints/hpux.sh for cpp recognition
-             From: Andy Dougherty 
-             Date: Mon, 20 Jul 1998 12:46:33 -0400 (EDT)
-             Message-Id: 
-             Subject: RE: Configure misses preprocessor on HP-UX
-     Branch: perl
-           ! hints/hpux.sh
-____________________________________________________________________________
-[  1601] By: gsar                                  on 1998/07/21  04:55:51
-        Log: From: Ilya Zakharevich 
-             Date: Sun, 19 Jul 1998 18:16:38 -0400 (EDT)
-             Message-Id: <199807192216.SAA10482@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Compile (?{}) into a correct package
-     Branch: perl
-           ! pp_ctl.c t/op/pat.t
-____________________________________________________________________________
-[  1600] By: gsar                                  on 1998/07/21  04:48:32
-        Log: allocate a whole fd_set for pp_sselect() on more platforms
-             From: Jarkko Hietaniemi 
-             Date: 20 Jul 1998 00:14:18 +0300
-             Message-ID: 
-             Subject: Re: Not OK: perl 5.00475 +DEVEL_BETA_ISSUE_1 on OPENSTEP-Mach 4_1 (UNINSTALLED)
-     Branch: perl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1599] By: gsar                                  on 1998/07/21  04:44:04
-        Log: add tests to check if context propagation works
-             From: Francois Desarmenien 
-             Date: Sun, 19 Jul 1998 12:28:33 +0200
-             Message-ID: <35B1CA51.A606AD27@club-internet.fr>
-             Subject: Re: m//g strange behaviour in 5.004
-     Branch: perl
-           + t/op/context.t
-           ! MANIFEST
-____________________________________________________________________________
-[  1598] By: gsar                                  on 1998/07/21  04:37:49
-        Log: applied RE doc patches, with tweaks to the prose
-             From: Ilya Zakharevich 
-             Date: Sat, 18 Jul 1998 23:11:13 -0400 (EDT)
-             Message-Id: <199807190311.XAA25080@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Document irregular zero-length matches
-             --
-             Date: Sun, 19 Jul 1998 00:38:44 -0400 (EDT)
-             Message-Id: <199807190438.AAA26226@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Another irregularity of expressions documented
-     Branch: perl
-           ! pod/perlre.pod
-____________________________________________________________________________
-[  1597] By: gsar                                  on 1998/07/21  04:16:51
-        Log: pod tweak suggested by Ilya
-     Branch: perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1596] By: gsar                                  on 1998/07/21  04:12:39
-        Log: enable color output with -Mre=debugcolor with -DDEBUGGING
-             From: Ilya Zakharevich 
-             Date: Sat, 18 Jul 1998 17:34:00 -0400 (EDT)
-             Message-Id: <199807182134.RAA20644@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Better -Mre=colordb
-     Branch: perl
-           ! ext/re/re.xs
-____________________________________________________________________________
-[  1595] By: gsar                                  on 1998/07/21  04:07:44
-        Log: From: "John L. Allen" 
-             Date: Thu, 16 Jul 1998 11:43:54 -0400 (EDT)
-             Message-ID: 
-             Subject: [PATCH _75 & _05] perlbug does not report usage on invalid flags
-     Branch: perl
-           ! utils/perlbug.PL
-____________________________________________________________________________
-[  1594] By: gsar                                  on 1998/07/21  04:06:06
-        Log: don't use SelectSaver on IO::Handle->input_*() methods
-             From: Robin Barker 
-             Date: Thu, 16 Jul 1998 15:00:39 +0100 (BST)
-             Message-Id: <199807161400.PAA25532@tempest.cise.npl.co.uk>
-             Subject: Re: Bug in IO::Handle->input_record_separator
-     Branch: perl
-           ! ext/IO/lib/IO/Handle.pm
-____________________________________________________________________________
-[  1593] By: gsar                                  on 1998/07/21  04:03:46
-        Log: applied a tweaked version of suggested patch
-             From: Ilya Zakharevich 
-             Date: Wed, 15 Jul 1998 17:02:48 -0400 (EDT)
-             Message-Id: <199807152102.RAA19952@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Enable/document colors in re.pm
-     Branch: perl
-           ! ext/re/re.pm
-____________________________________________________________________________
-[  1592] By: gsar                                  on 1998/07/21  03:49:55
-        Log: remove compat3.sym and rename perld4.pod
-     Branch: perl
-          +> pod/perl5004delta.pod
-           - compat3.sym pod/perld4.pod
-           ! MANIFEST
-____________________________________________________________________________
-[  1591] By: gsar                                  on 1998/07/21  03:38:16
-        Log: update patchlevel, Changes
-     Branch: perl
-	   ! Changes patchlevel.h win32/Makefile win32/config_H.bc
-           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[  1590] By: gsar                                  on 1998/07/21  03:06:04
-        Log: documentation tweaks from Abigail 
-             Date: Fri, 17 Jul 1998 20:52:36 -0400 (EDT)
-             Message-ID: <19980718005236.5154.qmail@betelgeuse.wayne.fnx.com>
-             Subject: Re: [PATCH 5.00475] pod/perlsyn.pod
-             --
-             Date: Thu, 16 Jul 1998 17:00:49 -0400 (EDT)
-             Message-ID: <19980716210049.16156.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.00475] pod/perlguts.pod
-             --
-             Date: Thu, 16 Jul 1998 16:52:05 -0400 (EDT)
-             Message-ID: <19980716205205.15949.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.00475] Tweaking pod/perlfunc.pod
-             --
-             Date: Fri, 17 Jul 1998 22:58:05 -0400 (EDT)
-             Message-ID: <19980718025805.7135.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH, 5.00475], pod/perlsub.pod
-             --
-             Date: Sat, 18 Jul 1998 04:02:00 -0400 (EDT)
-             Message-ID: <19980718080200.9927.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.00475] pod/perlfunc.pod
-     Branch: perl
-	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlsub.pod
-           ! pod/perlsyn.pod
-____________________________________________________________________________
-[  1589] By: gsar                                  on 1998/07/21  02:44:25
-        Log: VMS patches from Dan Sugalski 
-             Date: Wed, 15 Jul 1998 09:38:12 -0700
-             Message-Id: <3.0.5.32.19980715093812.00a42a50@ous.edu>
-             Subject: [PATCH 5.005-beta1]Quick VMS config update
-             --
-             Date: Wed, 15 Jul 1998 12:53:52 -0700
-             Message-Id: <3.0.5.32.19980715125352.00a25cb0@ous.edu>
-             Subject: Re: $ebcdic has broken VMS in _75 (Now with doc patch!)
-             --
-             Date: Thu, 16 Jul 1998 11:15:44 -0700
-             Message-Id: <3.0.5.32.19980716111544.00b78770@ous.edu>
-             Subject: [PATCH 5.004_75]Another VMS tweak for the Vax C compiler
-             --
-             Date: Thu, 16 Jul 1998 11:21:55 -0700
-             Message-Id: <3.0.5.32.19980716112155.00a66c50@ous.edu>
-             Subject: [PATCH 5.004_75]Get archname correct for thread build on VMS
-             --
-             Date: Thu, 16 Jul 1998 11:25:04 -0700
-             Message-Id: <3.0.5.32.19980716112504.00ae0d50@ous.edu>
-             Subject: [PATCH 5.004_75]Thread build tweaks for VMS 6.2 and older
-             --
-             Date: Fri, 17 Jul 1998 15:29:13 -0700
-             Message-Id: <3.0.5.32.19980717152913.00a469b0@ous.edu>
-             Subject: [PATCH 5.004_75]Missed a header file in VMS build procedure
-             --
-             Date: Mon, 20 Jul 1998 10:20:49 -0700
-             Message-Id: <3.0.5.32.19980720102049.00a05100@ous.edu>
-             Subject: [PATCH 5.004_75]Tweaks to Thread.XS for OLD_PTHREADS_API build
-             --
-             Date: Mon, 20 Jul 1998 10:13:03 -0700
-             Message-Id: <3.0.5.32.19980720101303.00a17100@ous.edu>
-             Subject: [PATCH 5.004_75]Explicitly specify extensions during VMS config process
-             --
-             From: Brad Hughes 
-             Date: Mon, 20 Jul 1998 15:51:22 -0700
-             Message-Id: <3.0.5.32.19980720155122.00a41950@ous.edu>
-             Subject: patch for readme.vms
-     Branch: perl
-	   ! README.vms ext/Thread/Thread.xs vms/descrip_mms.template
-           ! vms/gen_shrfls.pl vms/subconfigure.com
-____________________________________________________________________________
-[  1588] By: gsar                                  on 1998/07/21  01:26:20
-        Log: change#1481 didn't go through at all, redo it
-     Branch: perl
-           ! t/base/rs.t
-____________________________________________________________________________
-[  1587] By: gsar                                  on 1998/07/21  01:21:41
-        Log: workaround C<"foo" "bar"> catenation-intolerant compilers
-     Branch: perl
-           ! regexec.c toke.c
-____________________________________________________________________________
-[  1586] By: gsar                                  on 1998/07/21  01:05:49
-        Log: do not override PERL_DESTRUCT_LEVEL if use has it set
-     Branch: perl
-           ! t/TEST
-____________________________________________________________________________
-[  1585] By: gsar                                  on 1998/07/21  00:39:17
-        Log: fix small memory leak when mess_sv happens to be touched by magic
-     Branch: perl
-           ! perl.c t/lib/thread.t t/op/local.t t/op/pat.t t/op/regexp.t
-____________________________________________________________________________
-[  1584] By: gsar                                  on 1998/07/21  00:37:32
-        Log: fix memory leak in C
-     Branch: perl
-           ! scope.c
-____________________________________________________________________________
-[  1583] By: TimBunce                              on 1998/07/20  22:14:11
-        Log: Update Changes and patchlevel.h for release. At last.
-     Branch: maint-5.004/perl
-           ! Changes patchlevel.h
-____________________________________________________________________________
-[  1582] By: gsar                                  on 1998/07/20  21:28:43
-        Log: add rsfp_filters and perldb to pollutants list
-     Branch: perl
-           ! embed.pl
-____________________________________________________________________________
-[  1581] By: nick                                  on 1998/07/20  19:22:37
-        Log: Integrate mainline pre-beta2 - just in case 
-     Branch: ansiperl
-          !> (integrate 66 files)
-____________________________________________________________________________
-[  1580] By: TimBunce                              on 1998/07/20  17:16:38
-        Log: Assorted patches:
-             
-             Title:  "Clean up hash array allocation"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807201052.GAA13336@aatma.engin.umich.edu>
-             Files:  hv.c
-             
-             Title:  "Further fixes for cppstdin on HP-UX 11"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  hints/hpux.sh
-     Branch: maint-5.004/perl
-           ! hints/hpux.sh hv.c
-____________________________________________________________________________
-[  1579] By: TimBunce                              on 1998/07/20  09:46:14
-        Log: Assorted patches:
-             
-             Title:  "Fix C<$1 .. $2> coredump under debugger"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807200042.UAA23288@aatma.engin.umich.edu>
-             Files:  pp_ctl.c
-             
-             Title:  "Fix lvalue leaks stemming from failure to free LvTARG(sv)"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807191829.OAA12433@aatma.engin.umich.edu>
-             Files:  embed.h perl.h proto.h global.sym mg.c sv.c t/op/substr.t t/op/vec.t
-             
-             Title:  "fix major bug (from 5.003_96); void contexts were using the context
-             of the enclosing sub!"
-             From:  Francois Desarmenien , Gurusamy Sarathy
-             
-             Msg-ID:  <199807180927.FAA08032@aatma.engin.umich.edu>,
-             <35B1CA51.A606AD27@club-internet.fr>
-             Files:  op.h
-             
-             Title:  "Update lib/Getopt/Long.pm (from perl5.005 beta 1)"
-             From:  Johan Vromans 
-             Msg-ID:  <13745.47704.943964.34613@phoenix.squirrel.nl>
-             Files:  lib/Getopt/Long.pm
-             
-             Title:  "Add Porting/p4d2p utility for converting perforce diffs"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807200002.UAA21398@aatma.engin.umich.edu>
-             Files:  MANIFEST Porting/p4d2p
-     Branch: maint-5.004/perl
-           + Porting/p4d2p
-	   ! MANIFEST embed.h global.sym lib/Getopt/Long.pm mg.c op.h
-           ! perl.h pp_ctl.c proto.h sv.c t/op/substr.t t/op/vec.t
-____________________________________________________________________________
-[  1578] By: gsar                                  on 1998/07/20  09:38:39
-        Log: complete s/foo/PL_foo/ changes (all escaped cases identified with
-             brute force search script).  Result builds and passes all tests on
-             Solaris.  win32 and PERL_OBJECT are still untested.
-     Branch: perl
-	   ! XSLock.h XSUB.h bytecode.h bytecode.pl byterun.c cc_runtime.h
-	   ! djgpp/djgpp.c embed.pl ext/B/B.xs ext/B/B/Asmdata.pm
-	   ! ext/B/byteperl.c ext/DB_File/DB_File.xs ext/DB_File/typemap
-	   ! ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_next.xs
-	   ! ext/DynaLoader/dl_vms.xs ext/GDBM_File/typemap ext/IO/IO.xs
-	   ! ext/IPC/SysV/SysV.xs ext/NDBM_File/typemap
-	   ! ext/ODBM_File/ODBM_File.xs ext/ODBM_File/typemap
-	   ! ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs ext/SDBM_File/typemap
-	   ! ext/Thread/Thread.xs ext/attrs/attrs.xs fakethr.h gv.c hv.c
-	   ! lib/ExtUtils/typemap malloc.c mg.c op.c os2/OS2/PrfDB/PrfDB.xs
-	   ! os2/OS2/PrfDB/typemap os2/OS2/REXX/REXX.xs os2/os2.c
-	   ! os2/os2ish.h perl.c perl.h pp.c pp_ctl.c pp_hot.c pp_sys.c
-	   ! regcomp.c regcomp.h regexec.c scope.c scope.h sv.h taint.c
-	   ! toke.c util.c vms/ext/DCLsym/DCLsym.xs vms/ext/Stdio/Stdio.xs
-           ! vms/vms.c vms/vmsish.h win32/win32.c win32/win32thread.c
-____________________________________________________________________________
-[  1577] By: TimBunce                              on 1998/07/20  08:28:17
-        Log: Title:  "Make failed matches return empty list in list context"
-             From:  "Paul E. Maisano" , Gurusamy Sarathy
-             , Paul Maisano 
-             Msg-ID:  <199807200002.UAA21398@aatma.engin.umich.edu>,
-             <199807200027.KAA27815@ironbark-ridge.aaii.oz.au>,
-             <35B156FB.504E66E@aaii.oz.au>
-             Files:  pod/perlop.pod pp_hot.c t/op/pat.t
-     Branch: maint-5.004/perl
-           ! pod/perlop.pod pp_hot.c t/op/pat.t
-____________________________________________________________________________
-[  1576] By: TimBunce                              on 1998/07/20  08:11:37
-        Log: Title:  "win32 update from 5.005 beta 2 for 5.004_05"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807192332.TAA20905@aatma.engin.umich.edu>
-             Files:  win32/include/dirent.h win32/include/sys/socket.h proto.h
-             lib/ExtUtils/Liblist.pm lib/ExtUtils/Mksymlists.pm
-             win32/win32.h win32/win32iop.h README.win32 installperl
-             pp_ctl.c win32/Makefile win32/config.bc win32/config.vc
-             win32/config_H.bc win32/config_H.vc win32/config_h.PL
-             win32/config_sh.PL win32/dl_win32.xs win32/makedef.pl
-             win32/makefile.mk win32/pod.mak win32/win32.c
-             win32/win32sck.c win32/bin/pl2bat.pl
-     Branch: maint-5.004/perl
-	   ! README.win32 installperl lib/ExtUtils/Liblist.pm
-	   ! lib/ExtUtils/Mksymlists.pm pp_ctl.c proto.h win32/Makefile
-	   ! win32/bin/pl2bat.pl win32/config.bc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.vc win32/config_h.PL
-	   ! win32/config_sh.PL win32/dl_win32.xs win32/include/dirent.h
-	   ! win32/include/sys/socket.h win32/makedef.pl win32/makefile.mk
-	   ! win32/pod.mak win32/win32.c win32/win32.h win32/win32iop.h
-           ! win32/win32sck.c
-____________________________________________________________________________
-[  1575] By: gsar                                  on 1998/07/20  01:27:14
-        Log: integrate ansi branch to get s/foo/PL_foo/ changes
-     Branch: perl
-          +> fixvars
-          !> (integrate 537 files)
-____________________________________________________________________________
-[  1574] By: gsar                                  on 1998/07/20  00:33:43
-        Log: fix C<$1 .. $2> coredump under debugger
-     Branch: perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[  1573] By: gsar                                  on 1998/07/20  00:28:27
-        Log: misc win32 config tweaks
-     Branch: perl
-	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
-           ! win32/config_h.PL win32/makefile.mk
-____________________________________________________________________________
-[  1572] By: nick                                  on 1998/07/19  19:04:58
-        Log: Missed file that had changed
-     Branch: ansiperl
-           ! embedvar.h
-____________________________________________________________________________
-[  1571] By: nick                                  on 1998/07/19  18:57:35
-        Log: Another threaded, perl malloc issue, x2p's Makefile.SH  has a 
-             pattern match...
-     Branch: ansiperl
-           ! x2p/Makefile.SH
-____________________________________________________________________________
-[  1570] By: nick                                  on 1998/07/19  18:16:20
-        Log: Drat! - threaded perl-malloc has mutex that needs PL_
-     Branch: ansiperl
-           ! malloc.c perl.h
-____________________________________________________________________________
-[  1569] By: nick                                  on 1998/07/19  17:55:22
-        Log: PL_ for perl's malloc
-     Branch: ansiperl
-           ! hv.c malloc.c
-____________________________________________________________________________
-[  1568] By: nick                                  on 1998/07/19  16:23:30
-        Log: PL_ minir tidy up
-     Branch: ansiperl
-           ! embed.pl ext/Thread/Thread.xs util.c
-____________________________________________________________________________
-[  1567] By: nick                                  on 1998/07/19  13:21:07
-        Log: Add PL_ to merged file
-     Branch: ansiperl
-           ! pp_hot.c
-____________________________________________________________________________
-[  1566] By: nick                                  on 1998/07/19  12:38:30
-        Log: Merge Mainline
-     Branch: ansiperl
-           + fixvars
-          !> (integrate 29 files)
-____________________________________________________________________________
-[  1565] By: gsar                                  on 1998/07/19  07:06:54
-        Log: tweak pod in MakeMaker.pm
-             From: Paul Johnson 
-             Date: Sat, 18 Jul 1998 15:58:48 +0100
-             Message-ID: <19980718155847.D903@west-tip.transeda.com>
-             Subject: [PATCH]5.004_75 (DOC) MakeMaker.pm
-     Branch: perl
-           ! lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[  1564] By: gsar                                  on 1998/07/19  07:04:45
-        Log: From: Gisle Aas 
-             Date: 17 Jul 1998 22:49:32 +0200
-             Message-ID: 
-             Subject: [PATCH _75] sv_gets() did not NUL-terminate SV when reading records
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1563] By: gsar                                  on 1998/07/19  07:03:32
-        Log: update freebsd hints
-             From: Mik Firestone 
-             Date: Fri, 17 Jul 1998 15:24:26 -0400 (EDT)
-             Message-Id: <199807171924.AA05297@interlock2.lexmark.com>
-             Subject: [PATCH 5.005b1] hints/freebsd.sh
-     Branch: perl
-           ! hints/freebsd.sh
-____________________________________________________________________________
-[  1562] By: gsar                                  on 1998/07/19  07:01:33
-        Log: From: Mark Bixby 
-             Date: Fri, 17 Jul 1998 10:37:49 -0700 (PDT)
-             Message-Id: <199807171737.KAA06967@spock.dis.cccd.edu>
-             Subject: [PATCH 5.005b1] MPE/iX hints and readme tweaks
-     Branch: perl
-           ! README.mpeix hints/mpeix.sh
-____________________________________________________________________________
-[  1561] By: gsar                                  on 1998/07/19  07:00:19
-        Log: From: Norton Allen 
-             Date: Fri, 17 Jul 1998 12:37:27 -0400 (edt)
-             Message-Id: <199807171637.MAA24830@bottesini.harvard.edu>
-             Subject: [PATCH: 75] make install fails
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1560] By: gsar                                  on 1998/07/19  06:58:55
-        Log: fix flawed substitution-loop detection on zero-length matches
-             From: Ilya Zakharevich 
-             Date: Fri, 17 Jul 1998 13:55:38 -0400 (EDT)
-             Message-Id: <199807171755.NAA27720@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Substitution loop in devel branch
-     Branch: perl
-           ! pp_hot.c t/op/subst.t
-____________________________________________________________________________
-[  1559] By: gsar                                  on 1998/07/19  06:56:19
-        Log: add perltrap entry about "${#a}", as suggested by
-             andy barfoot 
-     Branch: perl
-           ! pod/perltrap.pod
-____________________________________________________________________________
-[  1558] By: gsar                                  on 1998/07/19  06:43:53
-        Log: From: Anton Berezin 
-             Date: Fri, 17 Jul 1998 11:49:30 +0200 (CEST)
-             Message-Id: <199807170949.LAA18099@lion.plab.ku.dk>
-             Subject: [PATCH 5.005b1] perlcall.pod SAVETMPS/FREETMPS bracket
-     Branch: perl
-           ! pod/perlcall.pod
-____________________________________________________________________________
-[  1557] By: gsar                                  on 1998/07/19  06:40:33
-        Log: From: "Art Green" 
-             Date: Thu, 16 Jul 1998 21:37:05 -0500
-             Message-ID: <86256644.000E61D4.00@FDLTest1.mercmarine.com>
-             Subject: [PATCH]:_75 - Update hints/aix.sh for c_r library
-     Branch: perl
-           ! hints/aix.sh
-____________________________________________________________________________
-[  1556] By: gsar                                  on 1998/07/19  06:38:17
-        Log: update README.threads
-             From: Andy Dougherty 
-             Date: Thu, 16 Jul 1998 11:10:33 -0400 (EDT)
-             Message-Id: 
-             Subject: Re: Sort of OK: 5.005-beta1 and threads on ppc-powerux-threads
-     Branch: perl
-           ! README.threads
-____________________________________________________________________________
-[  1555] By: gsar                                  on 1998/07/19  06:36:32
-        Log: From: Scott Henry 
-             Date: 15 Jul 1998 20:23:02 -0700
-             Message-ID: 
-             Subject: [PATCH 5.005-beta1] update hints/irix_6.sh
-     Branch: perl
-           ! hints/irix_6.sh
-____________________________________________________________________________
-[  1554] By: gsar                                  on 1998/07/19  06:35:10
-        Log: From: Spider Boardman 
-             Date: Wed, 15 Jul 1998 16:56:48 -0400
-             Message-Id: <199807152056.QAA369057@web.zk3.dec.com>
-             Subject: [PATCH _75] dec_osf hints still wrong
-     Branch: perl
-           ! hints/dec_osf.sh
-____________________________________________________________________________
-[  1553] By: gsar                                  on 1998/07/19  06:33:29
-        Log: tweak hpux hints in vain attempt to get cppstdin set properly
-             From: Andy Dougherty 
-             Date: Wed, 15 Jul 1998 16:11:43 -0400 (EDT)
-             Subject: Re: HP-UX 11, perl 5.004_04, Oracle 7.3.3.4, DBI 0.93
-             Message-Id: 
-             --
-             From: Andy Dougherty 
-             Date: Thu, 16 Jul 1998 11:37:58 -0400 (EDT)
-             Subject: Re: Configure misses preprocessor on HP-UX
-             Message-Id: 
-     Branch: perl
-           ! hints/hpux.sh
-____________________________________________________________________________
-[  1552] By: gsar                                  on 1998/07/19  06:26:24
-        Log: From: Tye McQueen 
-             Date: Wed, 15 Jul 1998 13:46:44 -0500 (CDT)
-             Message-Id: <199807151846.AA12653@metronet.com>
-             Subject: Minor debugger fix
-     Branch: perl
-           ! lib/perl5db.pl
-____________________________________________________________________________
-[  1551] By: gsar                                  on 1998/07/19  06:25:05
-        Log: From: Andy Dougherty 
-             Date: Wed, 15 Jul 1998 14:23:39 -0400 (EDT)
-             Message-Id: 
-             Subject: Re: Configure s?rand support [PATCH 5.004_75] -- better patch
-     Branch: perl
-           ! INSTALL pp.c
-____________________________________________________________________________
-[  1550] By: gsar                                  on 1998/07/19  06:23:10
-        Log: minor re.pm cleanup
-             From: "M.J.T. Guy" 
-             Date: Wed, 15 Jul 1998 12:41:14 +0100
-             Message-Id: 
-             Subject: Re: [PATCH 5.004_74]Don't use tainted REs in Basename.pm when building perl
-     Branch: perl
-           ! ext/re/re.pm pod/perldiag.pod
-____________________________________________________________________________
-[  1549] By: gsar                                  on 1998/07/19  06:20:49
-        Log: export additional symbols on OS/2
-             From: Ilya Zakharevich 
-             Date: Wed, 15 Jul 1998 06:13:07 -0400 (EDT)
-             Message-Id: <199807151013.GAA11279@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Export more symbols from Perl DLL
-     Branch: perl
-           ! os2/os2.sym
-____________________________________________________________________________
-[  1548] By: gsar                                  on 1998/07/19  06:18:58
-        Log: From: Ilya Zakharevich 
-             Date: Wed, 15 Jul 1998 06:10:36 -0400 (EDT)
-             Message-Id: <199807151010.GAA11270@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Minor improvements to perlcc
-     Branch: perl
-           ! utils/perlcc.PL
-____________________________________________________________________________
-[  1547] By: gsar                                  on 1998/07/19  06:17:22
-        Log: applied slightly tweaked version of patch
-             From: Ilya Zakharevich 
-             Date: Thu, 16 Jul 1998 15:49:15 -0400 (EDT)
-             Message-Id: <199807161949.PAA08214@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Updated patch to Test::Harness
-     Branch: perl
-           ! lib/Test/Harness.pm
-____________________________________________________________________________
-[  1546] By: gsar                                  on 1998/07/19  06:11:03
-        Log: improve 'frame' handling in debugger
-             From: Ilya Zakharevich 
-             Date: Wed, 15 Jul 1998 00:52:10 -0400 (EDT)
-             Message-Id: <199807150452.AAA06685@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Better debugger trace
-     Branch: perl
-           ! lib/perl5db.pl
-____________________________________________________________________________
-[  1545] By: gsar                                  on 1998/07/19  06:07:51
-        Log: fix and test handling of literal newlines in heredocs
-             From: Gisle Aas 
-             Date: 17 Jul 1998 14:58:25 +0200
-             Message-ID: 
-             Subject: Re: [PATCH _71] CRs et al
-             --
-             From: larry@wall.org (Larry Wall)
-             Date: Fri, 17 Jul 1998 09:32:35 -0700
-             Message-Id: <199807171632.JAA12959@wall.org>
-             Subject: Re: [PATCH _71] CRs et al
-     Branch: perl
-           ! t/comp/multiline.t toke.c
-____________________________________________________________________________
-[  1544] By: gsar                                  on 1998/07/19  06:00:12
-        Log: remove possibly unwritable lib/re.pm before overwrite
-             From: larry@wall.org (Larry Wall)
-             Date: Wed, 15 Jul 1998 14:26:03 -0700
-             Message-Id: <199807152126.OAA04623@wall.org>
-             Subject: Re: bug encountered building perl5.005beta1
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1543] By: gsar                                  on 1998/07/19  05:56:18
-        Log: unsubmitted Changes tweak
-     Branch: perl
-           ! Changes cygwin32/ld2
-____________________________________________________________________________
-[  1542] By: gsar                                  on 1998/07/19  01:21:22
-        Log: make failed matches return empty list in list context
-     Branch: perl
-           ! pod/perlop.pod pp_hot.c t/op/pat.t
-____________________________________________________________________________
-[  1541] By: gsar                                  on 1998/07/18  22:27:59
-        Log: remove obsolete perltrap about m//g's pos() reset behavior
-     Branch: perl
-           ! pod/perltrap.pod
-____________________________________________________________________________
-[  1540] By: nick                                  on 1998/07/18  22:16:26
-        Log: PL_ stuff passes non-threaded on Mingw32
-             (Why did it compile without this fix?)
-     Branch: ansiperl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1539] By: TimBunce                              on 1998/07/18  22:04:58
-        Log: Assorted patches:
-             
-             Title:  "Minor fixes to MakeMaker docs re ExtUtils::Embed"
-             From:  Paul Johnson 
-             Msg-ID:  <19980718155847.D903@west-tip.transeda.com>
-             Files:  lib/ExtUtils/MakeMaker.pm
-             
-             Title:  "Update t/op/array.t (from 5.005 beta 1)"
-             Files:  t/op/array.t
-     Branch: maint-5.004/perl
-           ! lib/ExtUtils/MakeMaker.pm t/op/array.t
-____________________________________________________________________________
-[  1538] By: TimBunce                              on 1998/07/18  21:57:50
-        Log: Title:  "Remove flawed '// with parens or $&' performance patch (Change 662)"
-             From:  "M.J.T. Guy" , Tim Bunce ,
-             larry@wall.org (Larry Wall)
-             Msg-ID:  <19980717015308.E6244@ig.co.uk>, <199807171819.LAA13771@wall.org>,
-             
-             Files:  cop.h embed.h perl.h proto.h regexp.h gv.c interp.sym perl.c pp.c
-             pp_ctl.c pp_hot.c regexec.c scope.c
-     Branch: maint-5.004/perl
-	   ! cop.h embed.h gv.c interp.sym perl.c perl.h pp.c pp_ctl.c
-           ! pp_hot.c proto.h regexec.c regexp.h scope.c
-____________________________________________________________________________
-[  1537] By: nick                                  on 1998/07/18  20:56:58
-        Log: PL_ scheme Builds under Minw32 - some SEGFAULT snags
-     Branch: ansiperl
-	   ! doio.c mg.c perl.c pp_hot.c pp_sys.c util.c win32/perllib.c
-           ! win32/win32.c win32/win32.h
-____________________________________________________________________________
-[  1536] By: nick                                  on 1998/07/18  20:50:26
-        Log: Merge latest mainline
-     Branch: ansiperl
-           ! patchlevel.h
-          !> ext/Thread/Thread.xs op.h util.c
-____________________________________________________________________________
-[  1535] By: nick                                  on 1998/07/18  16:45:29
-        Log: Edited "behind my back" ...
-     Branch: ansiperl
-           ! vms/perly_c.vms
-____________________________________________________________________________
-[  1534] By: nick                                  on 1998/07/18  16:38:27
-        Log: PL_ stuff for threads
-     Branch: ansiperl
-	   ! byterun.c cop.h deb.c doio.c doop.c embed.pl embedvar.h
-	   ! ext/B/B.xs ext/Thread/Thread.xs gv.c intrpvar.h mg.c
-	   ! miniperlmain.c op.c op.h perl.c perl.h perly.y pp.c pp.h
-	   ! pp_ctl.c pp_hot.c pp_sys.c regexec.c run.c scope.c sv.c sv.h
-           ! thread.h toke.c util.c win32/perllib.c
-____________________________________________________________________________
-[  1533] By: nick                                  on 1998/07/18  14:30:54
-        Log: Builds and passes tests with -DMULTIPLICITY and -DCRIPPLED_CC
-             (still with PERL_GLOBAL_STRUCT) - to cover more #if branches
-     Branch: ansiperl
-           ! embed.pl intrpvar.h perl.c toke.c
-____________________________________________________________________________
-[  1532] By: nick                                  on 1998/07/18  13:53:03
-        Log: PL_ prefix to all perlvars, part1
-             Builds and passes all tests at one limit i.e. -DPERL_GLOBAL_STRUCT
-     Branch: ansiperl
-	   ! XSUB.h av.c bytecode.h byterun.c byterun.h cop.h deb.c doio.c
-	   ! doop.c dump.c embed.h embed.pl embedvar.h ext/B/B.xs
-	   ! ext/Data/Dumper/Dumper.xs ext/DynaLoader/dl_next.xs
-	   ! ext/ODBM_File/ODBM_File.xs ext/Opcode/Opcode.xs
-	   ! ext/POSIX/POSIX.xs ext/Socket/Socket.xs ext/attrs/attrs.xs
-	   ! ext/re/re.xs gv.c hv.c hv.h lib/ExtUtils/typemap
-	   ! lib/ExtUtils/xsubpp mg.c miniperlmain.c op.c perl.c perl.h
-	   ! perly.c perly.y pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c regcomp.c
-	   ! regcomp.h regexec.c run.c scope.c scope.h sv.c sv.h taint.c
-           ! thrdvar.h toke.c universal.c util.c
-____________________________________________________________________________
-[  1531] By: gsar                                  on 1998/07/18  08:48:13
-        Log: fix yet another USE_THREADS leak due to failure to free stacks
-     Branch: perl
-           ! ext/Thread/Thread.xs util.c
-____________________________________________________________________________
-[  1530] By: gsar                                  on 1998/07/18  08:46:58
-        Log: fix major bug in GIMME (introduced in 5.003_96); void contexts were
-             using the context of the enclosing sub!
-     Branch: perl
-           ! op.h
-____________________________________________________________________________
-[  1529] By: nick                                  on 1998/07/18  08:18:03
-        Log: Integrate post-beta tweaks to ansiperl
-     Branch: ansiperl
-	  !> ObjXSub.h embed.h ext/Thread/Thread.xs global.sym gv.c mg.c
-	  !> objpp.h op.c perl.c perl.h pp_sys.c proto.h sv.c t/op/substr.t
-          !> t/op/vec.t toke.c util.c
-____________________________________________________________________________
-[  1528] By: gsar                                  on 1998/07/18  04:23:12
-        Log: fix lvalue leaks stemming from failure to free LvTARG(sv)
-     Branch: perl
-	   ! ObjXSub.h embed.h global.sym mg.c objpp.h perl.h proto.h sv.c
-           ! t/op/substr.t t/op/vec.t
-____________________________________________________________________________
-[  1527] By: gsar                                  on 1998/07/18  02:16:40
-        Log: check ferror() only if read() returned 0
-     Branch: perl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1526] By: gsar                                  on 1998/07/18  02:08:01
-        Log: fix another CvMUTEXP() leak
-     Branch: perl
-           ! gv.c
-____________________________________________________________________________
-[  1525] By: TimBunce                              on 1998/07/18  01:51:52
-        Log: Assorted patches:
-             
-             Title:  "Fix @a=@a=qw(...) properly"
-             From:  Stephen McCamant 
-             Msg-ID:  <13742.49404.367751.437966@alias-2.pr.mcs.net>
-             Files:  opcode.h
-             
-             Title:  "Larry's patch to support CR LF in scripts (updated)"
-             From:  Gisle Aas , larry@wall.org (Larry Wall)
-             Msg-ID:  <199807120054.RAA19550@wall.org>, 
-             Files:  t/comp/multiline.t toke.c
-             
-             Title:  "Change getc() docs to match behaviour. Make read() return undef on
-             error."
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807052257.SAA10004@aatma.engin.umich.edu>
-             Files:  pod/perlfunc.pod pp_sys.c
-             
-             Title:  "Update patchls utility"
-             Files:  Porting/patchls
-     Branch: maint-5.004/perl
-	   ! Porting/patchls opcode.h pod/perlfunc.pod pp_sys.c
-           ! t/comp/multiline.t toke.c
-____________________________________________________________________________
-[  1524] By: gsar                                  on 1998/07/18  01:22:35
-        Log: fix CvMUTEXP() leaks with -Dusethreads
-     Branch: perl
-           ! op.c toke.c
-____________________________________________________________________________
-[  1523] By: gsar                                  on 1998/07/18  01:17:28
-        Log: fix $/ init for multiple interpreters/threads
-     Branch: perl
-           ! ext/Thread/Thread.xs perl.c util.c
-____________________________________________________________________________
-[  1522] By: gsar                                  on 1998/07/18  01:11:07
-        Log: fix missing init that caused RE alternations to fail under
-             -Dusethreads
-     Branch: perl
-           ! util.c
-____________________________________________________________________________
-[  1521] By: TimBunce                              on 1998/07/16  22:23:25
-        Log: Assorted patches:
-             
-             Title:  "Allow $SIG{CHLD}='IGNORE' to work (reap zombies) on Solaris"
-             From:  Albert Dvornik , Chip Salzenberg 
-             Msg-ID:  <19980708181055.A8005@perlsupport.com>,
-             
-             Files:  util.c
-             
-             Title:  "Document perltrap on precedence of keys/values/each"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807151857.OAA04704@aatma.engin.umich.edu>
-             Files:  pod/perltrap.pod
-             
-             Title:  "perlbook.pod patch"
-             From:  Tom Christiansen 
-             Msg-ID:  <199807140037.SAA04556@chthon.perl.com>
-             Files:  pod/perlbook.pod
-             
-             Title:  "perlmod.pod patch"
-             From:  Tom Christiansen 
-             Msg-ID:  <199807140109.TAA04678@chthon.perl.com>
-             Files:  pod/perlmod.pod
-             
-             Title:  "Fix bug in IO::Handle->input_record_separator"
-             From:  Robin Barker , Swen Thuemmler
-             
-             Msg-ID:  <199807161400.PAA25532@tempest.cise.npl.co.uk>,
-             
-             Files:  ext/IO/lib/IO/Handle.pm
-             
-             Title:  "update h2ph, Math::Complex and Math::Trig (from 5.005 beta 1)"
-             Files:  lib/Math/Complex.pm lib/Math/Trig.pm t/lib/complex.t t/lib/h2ph.t
-             t/lib/trig.t utils/h2ph.PL
-             
-             Title:  "Update hints/irix_6.sh"
-             From:  Scott Henry 
-             Msg-ID:  
-             Files:  hints/irix_6.sh
-             
-             Title:  "Configure misses preprocessor on HP-UX (further fix)"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  hints/hpux.sh
-             
-             Title:  "update perlbug to v1.26 (from 5.005 beta 1)"
-             Files:  utils/perlbug.PL
-     Branch: maint-5.004/perl
-	   ! ext/IO/lib/IO/Handle.pm hints/hpux.sh hints/irix_6.sh
-	   ! lib/Math/Complex.pm lib/Math/Trig.pm pod/perlbook.pod
-	   ! pod/perlmod.pod pod/perltrap.pod t/lib/complex.t t/lib/h2ph.t
-           ! t/lib/trig.t util.c utils/h2ph.PL utils/perlbug.PL
-____________________________________________________________________________
-[  1520] By: TimBunce                              on 1998/07/15  21:24:12
-        Log: Assorted patches:
-             
-             Title:  "Add stub attrs.pm"
-             From:  Graham Barr , Gurusamy Sarathy 
-             Msg-ID:  <19980713163312.A18222@asic.sc.ti.com>,
-             <199807132140.RAA09583@aatma.engin.umich.edu>
-             Files:  MANIFEST lib/attrs.pm
-             
-             Title:  "Fix @a=@a=qw(...)"
-             From:  Gurusamy Sarathy , Stephen McCamant
-             
-             Msg-ID:  <13737.12300.950886.821143@alias-2.pr.mcs.net>,
-             <199807122351.TAA05649@aatma.engin.umich.edu>
-             Files:  op.c opcode.pl t/op/array.t
-             
-             Title:  "Fix 'PERL_DESTRUCT_LEVEL=2 ./perl -DD -e 1' loop"
-             From:  Gisle Aas , Stephen McCamant 
-             Msg-ID:  <13739.55551.205810.338648@alias-2.pr.mcs.net>,
-             
-             Files:  sv.c
-             
-             Title:  "Make Power MachTen use vfork() and system malloc()"
-             From:  Dominic Dunlop , Jarkko Hietaniemi 
-             Msg-ID:  
-             Files:  hints/machten.sh malloc.c
-             
-             Title:  "Use REG_INFTY in place of hardwired constant"
-             From:  Dominic Dunlop 
-             Msg-ID:  
-             Files:  regcomp.h regcomp.c regexec.c
-             
-             Title:  "Minor debugger fix (history adds an extra newline)"
-             From:  Tye McQueen 
-             Msg-ID:  <199807151846.AA12653@metronet.com>
-             Files:  lib/perl5db.pl
-             
-             Title:  "Protect Term::ReadLine against non-default $/ value"
-             From:  Ilya Zakharevich ,
-             kstar@chapin.edu@ig.co.uk ()
-             Msg-ID:  <19980713151749.G8596@O2.chapin.edu>,
-             <199807132139.RAA11270@monk.mps.ohio-state.edu>
-             Files:  lib/Term/ReadLine.pm
-             
-             Title:  "Fix HP-UX 11 build (cppstdin)"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  Configure hints/hpux.sh
-             
-             Title:  "VMS filetest operator fixup (SS$_ACCONFLICT)"
-             From:  Dan Sugalski 
-             Msg-ID:  <3.0.5.32.19980702135255.00a6ad90@ous.edu>
-             Files:  vms/vms.c
-     Branch: maint-5.004/perl
-           + lib/attrs.pm
-	   ! Configure MANIFEST hints/hpux.sh hints/machten.sh
-	   ! lib/Term/ReadLine.pm lib/perl5db.pl malloc.c op.c opcode.pl
-           ! regcomp.c regcomp.h regexec.c sv.c t/op/array.t vms/vms.c
-____________________________________________________________________________
-[  1519] By: nick                                  on 1998/07/15  18:56:17
-        Log: Integrate mainline at beta1 
-     Branch: ansiperl
-	  +> Porting/p4d2p README.mpeix Todo-5.005
-	  +> ext/DynaLoader/dl_mpeix.xs ext/re/hints/mpeix.pl
-	  +> mpeix/mpeixish.h mpeix/nm mpeix/relink perly_c.diff
-          +> pod/perld4.pod pod/perlport.pod t/lib/ipc_sysv.t
-	   - Todo.5.005 lib/Bundle/CPAN.pm perly.c.diff pod/perldelta4.pod
-           - t/op/ipcmsg.t t/op/ipcsem.t
-          !> (integrate 167 files)
-
-----------------
-Version 5.004_75        5.005 Public Beta, Issue 1
-----------------
-
-____________________________________________________________________________
-[  1518] By: gsar                                  on 1998/07/15  10:01:41
-        Log: add stub docs for ext/B, other minor tweaks
-     Branch: perl
-	   ! Changes Porting/config_H config_h.SH ext/B/B.pm
-	   ! ext/B/B/Asmdata.pm ext/B/B/Assembler.pm ext/B/B/Bblock.pm
-	   ! ext/B/B/Bytecode.pm ext/B/B/C.pm ext/B/B/CC.pm
-	   ! ext/B/B/Debug.pm ext/B/B/Disassembler.pm ext/B/B/Showlex.pm
-           ! ext/B/B/Stackobj.pm ext/B/B/Terse.pm ext/B/O.pm sv.c
-____________________________________________________________________________
-[  1517] By: gsar                                  on 1998/07/15  08:27:15
-        Log: up patchlevel to 75 (Beta, Issue 1), add podpatch
-             From: abigail@fnx.com
-             Date: Wed, 15 Jul 1998 04:03:44 -0400 (EDT)
-             Message-ID: <19980715080344.21975.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.004_74] pod/perlop.pod
-     Branch: perl
-	   ! Changes patchlevel.h pod/perlop.pod win32/Makefile
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1516] By: gsar                                  on 1998/07/15  08:04:24
-        Log: From:    abigail@fnx.com
-             Date:    Wed, 15 Jul 1998 03:47:56 EDT
-             Message-Id: <19980715074756.21868.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.004_74] pod/pod2man.PL Fix use of < inside C<>
-     Branch: perl
-           ! pod/pod2man.PL
-____________________________________________________________________________
-[  1515] By: gsar                                  on 1998/07/15  08:02:14
-        Log: From:    Ilya Zakharevich 
-             Date:    Wed, 15 Jul 1998 03:49:24 EDT
-             Message-Id: <199807150749.DAA09177@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] Additional targets for OS/2 build
-     Branch: perl
-           ! os2/Makefile.SHs
-____________________________________________________________________________
-[  1514] By: gsar                                  on 1998/07/15  07:58:29
-        Log: rename some long file names to be 8.3 truncation-safe
-     Branch: perl
-          +> Todo-5.005 perly_c.diff pod/perld4.pod
-           - Todo.5.005 perly.c.diff pod/perldelta4.pod
-           ! MANIFEST Porting/pumpkin.pod perly.fixer
-____________________________________________________________________________
-[  1513] By: gsar                                  on 1998/07/15  07:35:29
-        Log: minor tweaks to docs on qr//
-     Branch: perl
-           ! ext/re/re.pm pod/perldelta.pod pod/perlop.pod pod/perlre.pod
-____________________________________________________________________________
-[  1512] By: gsar                                  on 1998/07/15  07:06:02
-        Log: applied patch, with tab tweak suggest by Peter Prymmer
-             From: Dan Sugalski 
-             Date: Tue, 14 Jul 1998 16:41:14 -0700
-             Message-Id: <3.0.5.32.19980714164114.00a3e2a0@ous.edu>
-             Subject: [PATCH 5.004_74]VMS build cleanups
-     Branch: perl
-           ! vms/descrip_mms.template
-____________________________________________________________________________
-[  1511] By: gsar                                  on 1998/07/15  07:03:33
-        Log: allow perlbug -ok when STDIN it not a tty
-             From: Hugo van der Sanden 
-             Date: Wed, 15 Jul 1998 03:24:56 +0200
-             Message-Id: 
-             Subject: Re: [NOT OK] 5.004_74: "make ok" not ok in IRIX 6.2
-     Branch: perl
-           ! utils/perlbug.PL
-____________________________________________________________________________
-[  1510] By: gsar                                  on 1998/07/15  06:59:43
-        Log: From: "Art Green" 
-             Date: Tue, 14 Jul 1998 20:53:48 -0500
-             Message-ID: <86256642.0004D7AB.00@FDLTest1.mercmarine.com>
-             Subject: [PATCH]:_74 - Allow Configure to recognize _AIX41 & _POWER compiler defines
-     Branch: perl
-           ! Configure
-____________________________________________________________________________
-[  1509] By: gsar                                  on 1998/07/15  06:57:50
-        Log: typecast long vs. IV compares in pp_flip/pp_flop
-     Branch: perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[  1508] By: gsar                                  on 1998/07/15  06:50:49
-        Log: don't copy foreach itervar when no external refs exist
-             From: Gisle Aas 
-             Date: 15 Jul 1998 03:35:25 +0200
-             Message-ID: 
-             Subject: Re: Testcase for 1..n closure change
-     Branch: perl
-           ! pp_hot.c
-____________________________________________________________________________
-[  1507] By: gsar                                  on 1998/07/15  06:46:41
-        Log: applied patch, regen headers
-             From: Stephen McCamant 
-             Date: Tue, 14 Jul 1998 19:56:47 -0500 (CDT)
-             Message-ID: <13739.64763.792570.626015@alias-2.pr.mcs.net>
-             Subject: B::Deparse update for qr// and regcreset
-     Branch: perl
-           ! ext/B/B/Deparse.pm opcode.h opcode.pl
-____________________________________________________________________________
-[  1506] By: gsar                                  on 1998/07/15  06:43:04
-        Log: make pregcomp et al VIRTUAL again for PERL_OBJECT
-             From: "Douglas Lankshear" 
-             Date: Tue, 14 Jul 1998 16:40:30 -0700
-             Message-ID: <000301bdaf80$c93d14a0$a32fa8c0@tau.Active>
-             Subject: [PATCH 5.004_74]
-     Branch: perl
-           ! proto.h
-____________________________________________________________________________
-[  1505] By: gsar                                  on 1998/07/15  06:41:43
-        Log: dont use sv_dump() in -DD diagnostic
-             From: Gisle Aas 
-             Date: 14 Jul 1998 23:55:36 +0200
-             Message-ID: 
-             Subject: [PATCH] Fix 'PERL_DESTRUCT_LEVEL=2 ./perl -DD -e 1' loop
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1504] By: gsar                                  on 1998/07/15  06:39:37
-        Log: add a few more thread.t tests
-     Branch: perl
-           ! t/lib/thread.t
-____________________________________________________________________________
-[  1503] By: gsar                                  on 1998/07/15  06:31:33
-        Log: fix thread.t ('join $t' ne '$t->join' !)
-     Branch: perl
-           ! t/lib/thread.t
-____________________________________________________________________________
-[  1502] By: gsar                                  on 1998/07/15  06:26:00
-        Log: From: Jarkko Hietaniemi 
-             Date: Wed, 15 Jul 1998 01:45:57 +0300 (EET DST)
-             Message-Id: <199807142245.BAA09651@alpha.hut.fi>
-             Subject: [PATCH] 5.004_74: MPE/iX final touches
-     Branch: perl
-           ! installperl lib/File/Copy.pm
-____________________________________________________________________________
-[  1501] By: gsar                                  on 1998/07/15  05:59:49
-        Log: apply (reversed) patch
-             From: Peter Wolfe 
-             Date: Tue, 14 Jul 1998 13:01:58 -0700 (PDT)
-             Message-Id: <199807142001.NAA26550@titan.teloseng.com>
-             Subject: NOT_OK: perl 5.00474 on SCO 3.2v5.0.4
-     Branch: perl
-           ! ext/IPC/SysV/SysV.xs
-____________________________________________________________________________
-[  1500] By: gsar                                  on 1998/07/15  05:57:39
-        Log: From: Andy Dougherty 
-             Date: Tue, 14 Jul 1998 14:14:59 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.004_74] Config_74-01
-     Branch: perl
-	   ! Configure MANIFEST Porting/Glossary Porting/config.sh
-	   ! Porting/config_H Porting/pumpkin.pod config_h.SH
-	   ! vms/subconfigure.com win32/config.bc win32/config.gc
-           ! win32/config.vc
-____________________________________________________________________________
-[  1499] By: gsar                                  on 1998/07/15  05:48:38
-        Log: From: Jarkko Hietaniemi 
-             Date: Tue, 14 Jul 1998 21:35:02 +0300 (EET DST)
-             Message-Id: <199807141835.VAA09030@alpha.hut.fi>
-             Subject: [PATCH] 5.004_74: trig.t: math inaccuracy fudge for unicos
-     Branch: perl
-           ! t/lib/trig.t
-____________________________________________________________________________
-[  1498] By: gsar                                  on 1998/07/15  05:47:33
-        Log: -w, strict clean perldoc (via PM)
-             From: Robin Barker 
-             Date: Tue, 14 Jul 98 17:22:01 BST
-             Message-Id: <18695.9807141622@tempest.cise.npl.co.uk>
-             Subject: [PATCH 5.004_74] perldoc.PL
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[  1497] By: gsar                                  on 1998/07/15  05:35:54
-        Log: add comment about cpprun etc., to hints/hpux.sh
-     Branch: perl
-           ! hints/hpux.sh
-____________________________________________________________________________
-[  1496] By: gsar                                  on 1998/07/15  05:15:16
-        Log: fix warning from CGI::Carp
-     Branch: perl
-           ! lib/CGI/Carp.pm
-____________________________________________________________________________
-[  1495] By: gsar                                  on 1998/07/14  23:47:18
-        Log: fix off-by-one in win32 registry handling
-             From: "Douglas Lankshear" 
-             Date: Tue, 14 Jul 1998 07:39:06 -0700
-             Message-ID: <000401bdaf35$27489e80$a32fa8c0@tau.Active>
-             Subject: [PATCH 5.004_73]
-     Branch: perl
-           ! win32/win32.c
-____________________________________________________________________________
-[  1494] By: gsar                                  on 1998/07/14  23:45:58
-        Log: doc patches from Gisle Aas 
-             Date: 14 Jul 1998 16:18:31 +0200
-             Message-ID: 
-             Subject: [PATCH] substr/splice changes for perldelta.pod
-             --
-             Date: 14 Jul 1998 20:31:27 +0200
-             Message-ID: 
-             Subject: [PATCH] Duplicate description of use integer %
-     Branch: perl
-           ! pod/perldelta.pod pod/perlop.pod
-____________________________________________________________________________
-[  1493] By: gsar                                  on 1998/07/14  23:39:31
-        Log: File/Spec.pm needs trailing newline
-     Branch: perl
-           ! lib/File/Spec.pm
-____________________________________________________________________________
-[  1492] By: gsar                                  on 1998/07/14  21:43:03
-        Log: unsubmitted _74 tweaks
-     Branch: perl
-	   ! Changes mpeix/nm mpeix/relink pod/perldelta.pod
-           ! pod/perldiag.pod
-
-----------------
-Version 5.004_74
-----------------
-
-____________________________________________________________________________
-[  1491] By: gsar                                  on 1998/07/14  08:48:28
-        Log: up patchlevel to 74; introduce distinct archname for PERL_OBJECT
-     Branch: perl
-	   ! Changes patchlevel.h pod/perlhist.pod win32/Makefile
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1490] By: gsar                                  on 1998/07/14  08:31:13
-        Log: From:    Gisle Aas 
-             Date:    14 Jul 1998 10:20:34 +0200
-             Message-Id: 
-             Subject: [PATCH] Make -DP work (and readable)
-     Branch: perl
-           ! run.c
-____________________________________________________________________________
-[  1489] By: gsar                                  on 1998/07/14  08:23:46
-        Log: fix function parameter autovivification for pseudohashes
-     Branch: perl
-           ! mg.c t/op/avhv.t
-____________________________________________________________________________
-[  1488] By: gsar                                  on 1998/07/14  07:34:45
-        Log: merge changes#1423,1465 from maintbranch; checkin two missed files
-             from earlier changes#1461,1478
-     Branch: perl
-	   ! pod/perldiag.pod pod/perlfunc.pod pod/perlop.pod pp_sys.c
-	   ! t/TEST t/lib/thread.t t/op/local.t t/op/pat.t t/op/regexp.t
-           ! t/op/substr.t t/op/vec.t
-____________________________________________________________________________
-[  1487] By: gsar                                  on 1998/07/14  07:04:54
-        Log: tweak t/lib/thread.t
-     Branch: perl
-           ! t/lib/thread.t
-____________________________________________________________________________
-[  1486] By: gsar                                  on 1998/07/14  06:38:15
-        Log: applied patch, slightly tweaked
-             From: Dan Sugalski 
-             Date: Mon, 13 Jul 1998 11:52:27 -0700
-             Message-Id: <3.0.5.32.19980713115227.00a73970@ous.edu>
-             Subject: [PATCH 5.004_73]Get re module working on VMS
-     Branch: perl
-           ! ext/re/Makefile.PL perl.h proto.h
-____________________________________________________________________________
-[  1485] By: gsar                                  on 1998/07/14  06:32:58
-        Log: add Porting/p4d2p
-     Branch: perl
-           + Porting/p4d2p
-           ! MANIFEST
-____________________________________________________________________________
-[  1484] By: gsar                                  on 1998/07/14  06:08:20
-        Log: doc patches from Tom Christiansen  (via PM)
-             Date: Mon, 13 Jul 1998 19:09:09 -0600
-             Message-Id: <199807140109.TAA04678@chthon.perl.com>
-             Subject: perlmod.pod patch
-             --
-             Date: Mon, 13 Jul 1998 18:37:07 -0600
-             Message-Id: <199807140037.SAA04556@chthon.perl.com>
-             Subject: perlbook.pod patch
-     Branch: perl
-           ! pod/perlbook.pod pod/perlmod.pod
-____________________________________________________________________________
-[  1483] By: gsar                                  on 1998/07/14  06:04:25
-        Log: OS/2 update
-             From: Ilya Zakharevich 
-             Message-Id: <199807132336.TAA12967@monk.mps.ohio-state.edu>
-             Date: Mon, 13 Jul 1998 19:36:05 -0400 (EDT)
-             Subject: [PATCH 5.004_72] OS/2 system() and friends additions
-     Branch: perl
-           ! README.os2 hints/os2.sh os2/Changes os2/os2.c t/op/magic.t
-____________________________________________________________________________
-[  1482] By: gsar                                  on 1998/07/14  06:01:12
-        Log: more VMS patches from Dan Sugalski 
-             Date: Mon, 13 Jul 1998 16:37:49 -0700
-             Message-Id: <3.0.5.32.19980713163749.00af1c40@ous.edu>
-             Subject: [PATCH 5.004_73]t/io/iprefix.t patch for VMS
-             --
-             Date: Mon, 13 Jul 1998 15:51:09 -0700
-             Message-Id: <3.0.5.32.19980713155109.00a52c30@ous.edu>
-             Subject: [PATCH5.004_73]Tweak t/lib/cgi-html.t to work on VMS
-     Branch: perl
-           ! t/io/iprefix.t t/lib/cgi-html.t
-____________________________________________________________________________
-[  1481] By: gsar                                  on 1998/07/14  05:57:36
-        Log: From: Dan Sugalski 
-             Date: Mon, 13 Jul 1998 15:41:53 -0700
-             Message-Id: <3.0.5.32.19980713154153.00a87be0@ous.edu>
-             Subject: [PATCH 5.004_73]Fix t/base/rs.t test failures on VMS
-     Branch: perl
-           ! t/base/rs.t
-____________________________________________________________________________
-[  1480] By: gsar                                  on 1998/07/14  05:56:14
-        Log: From: Dan Sugalski 
-             Message-Id: <3.0.5.32.19980713150427.00b2a540@ous.edu>
-             Date: Mon, 13 Jul 1998 15:04:27 -0700
-             Subject: [PATCH 5.004_73]Thread tweak for VMS.C
-     Branch: perl
-           ! vms/vms.c
-____________________________________________________________________________
-[  1479] By: gsar                                  on 1998/07/14  05:55:13
-        Log: From: Laszlo Molnar 
-             Date: Mon, 13 Jul 1998 23:13:43 +0200
-             Message-ID: <19980713231343.A178@cdata.tvnet.hu>
-             Subject: [PATCH _72] Configure problem on dos-djgpp
-     Branch: perl
-           ! Configure
-____________________________________________________________________________
-[  1478] By: gsar                                  on 1998/07/14  05:53:08
-        Log: add files and tweaks needed for MPE/iX port (via PM)
-             From: Jarkko Hietaniemi 
-             Date: Tue, 14 Jul 1998 00:07:30 +0300 (EET DST)
-             Message-Id: <199807132107.AAA20603@alpha.hut.fi>
-             Subject: MPE/iX patches for _73
-     Branch: perl
-	   + README.mpeix ext/DynaLoader/dl_mpeix.xs ext/re/hints/mpeix.pl
-           + mpeix/mpeixish.h mpeix/nm mpeix/relink
-	   ! MANIFEST ext/Socket/Socket.xs hints/mpeix.sh installperl
-           ! lib/File/Copy.pm perl.c perl.h pod/perldelta.pod
-____________________________________________________________________________
-[  1477] By: gsar                                  on 1998/07/14  04:23:28
-        Log: added suggested patch (via PM), tweaked to implicitly specify -DDEBUGGING
-             From: Andy Dougherty 
-             Date: Mon, 13 Jul 1998 16:50:55 -0400 (EDT)
-             Message-Id: 
-             Subject: Re: _70 and Devel::RE
-     Branch: perl
-           ! ext/re/Makefile.PL ext/re/re.xs regcomp.c regexec.c
-____________________________________________________________________________
-[  1476] By: gsar                                  on 1998/07/14  04:06:25
-        Log: minor Configure nits
-             From: Jarkko Hietaniemi 
-             Date: Mon, 13 Jul 1998 23:25:27 +0300 (EET DST)
-             Message-Id: <199807132025.XAA10771@alpha.hut.fi>
-             Subject: Configure patches for MVS (and one x2p/Makefile.SH)
-     Branch: perl
-           ! Configure x2p/Makefile.SH
-____________________________________________________________________________
-[  1475] By: gsar                                  on 1998/07/14  03:59:56
-        Log: From: Dan Sugalski 
-             Date: Mon, 13 Jul 1998 12:54:19 -0700
-             Message-Id: <3.0.5.32.19980713125419.009e0100@ous.edu>
-             Subject: [PATCH 5.004_73] Fixes to the VMS configuration system
-     Branch: perl
-           ! vms/munchconfig.c vms/subconfigure.com
-____________________________________________________________________________
-[  1474] By: gsar                                  on 1998/07/14  03:58:13
-        Log: make Term::Readline::get_line() independent of caller's $/
-             From: kstar@chapin.edu
-             Date: Mon, 13 Jul 1998 15:17:49 -0400
-             Message-ID: <19980713151749.G8596@O2.chapin.edu>
-             Subject: [PATCH] Was: CPAN.pm still fails
-     Branch: perl
-           ! lib/Term/ReadLine.pm
-____________________________________________________________________________
-[  1473] By: gsar                                  on 1998/07/14  03:55:29
-        Log: fix $trnl interpolation in here-docs (via PM)
-             From: Andy Dougherty 
-             Date: Mon, 13 Jul 1998 15:49:00 -0400 (EDT)
-             Message-Id: 
-             Subject: Re: [PATCH] 5.004_73: Re: Configure/trnl craziness
-     Branch: perl
-           ! Configure
-____________________________________________________________________________
-[  1472] By: gsar                                  on 1998/07/14  03:50:18
-        Log: From: Dominic Dunlop 
-             Date: Mon, 13 Jul 1998 15:55:09 +0100 (WET DST)
-             Message-Id: <199807131455.PAA23621@ppp52.vo.lu>
-             Subject: Not OK: perl 5.00473 on powerpc-machten 4.1 [PATCH 5.004_73]
-     Branch: perl
-           ! hints/machten.sh
-____________________________________________________________________________
-[  1471] By: gsar                                  on 1998/07/14  03:49:07
-        Log: From: Dan Sugalski 
-             Message-Id: <3.0.5.32.19980713123005.00b6be50@ous.edu>
-             Date: Mon, 13 Jul 1998 12:30:05 -0700
-             Subject: [PATCH 5.004_73] Add Data::Dumper and re modules to VMS config stuff
-     Branch: perl
-           ! configure.com vms/descrip_mms.template
-____________________________________________________________________________
-[  1470] By: gsar                                  on 1998/07/14  03:40:14
-        Log: consistently refer to functions as C
-             From: abigail@fnx.com
-             Date: Mon, 13 Jul 1998 03:04:24 -0400 (EDT)
-             Message-ID: <19980713070424.19841.qmail@betelgeuse.wayne.fnx.com>
-             Subject: Re: [PATCH 5.004_71] pod/perlfunc.pod
-     Branch: perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1469] By: gsar                                  on 1998/07/14  03:35:06
-        Log: From: Tom Hughes 
-             Date: 13 Jul 1998 09:34:16 +0100
-             Message-ID: 
-             Subject: [PATCH 5.004_72] Fix d_Gconvert definition in hints/svr4.sh
-     Branch: perl
-           ! hints/svr4.sh
-____________________________________________________________________________
-[  1468] By: gsar                                  on 1998/07/14  03:34:03
-        Log: From: andreas.koenig@kulturbox.de (Andreas J. Koenig)
-             Date: 13 Jul 1998 11:16:27 +0200
-             Message-ID: 
-             Subject: Parallel Makefiles
-     Branch: perl
-           ! lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
-[  1467] By: gsar                                  on 1998/07/14  03:31:39
-        Log: From: Ilya Zakharevich 
-             Date: Mon, 13 Jul 1998 00:12:19 -0400 (EDT)
-             Message-Id: <199807130412.AAA27128@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_72] t/io/pipe.t - completely broken?
-     Branch: perl
-           ! t/io/pipe.t
-____________________________________________________________________________
-[  1466] By: gsar                                  on 1998/07/14  03:29:25
-        Log: minor tweaks to perldelta and README.win32
-     Branch: perl
-           ! Changes README.win32 pod/perldelta.pod
-____________________________________________________________________________
-[  1465] By: TimBunce                              on 1998/07/13  21:33:45
-        Log: Assorted patches:
-             
-             Title:  "Fix string substitution returncode problem"
-             From:  Dominic Dunlop , Gurusamy Sarathy 
-             Msg-ID:  <199805271236.IAA28213@aatma.engin.umich.edu>,
-             
-             Files:  pp_hot.c
-             
-             Title:  "umask EXPR is fatal only if (EXPR & 0700) > 0"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807111656.MAA03310@aatma.engin.umich.edu>
-             Files:  pod/perldiag.pod pp_sys.c
-             
-             Title:  "Remove reference to qsort from perlfunc.pod"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807111923.PAA05124@aatma.engin.umich.edu>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Deprecate AvFILL in favor of av_len()"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807111945.PAA05489@aatma.engin.umich.edu>
-             Files:  pod/perlguts.pod
-             
-             Title:  "Further clarify effects of using quotes with m operator"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199806201921.PAA03829@aatma.engin.umich.edu>
-             Files:  pod/perlop.pod
-             
-             Title:  "Add PERL_DESTRUCT_LEVEL=2 to test suite"
-             From:  Tim Bunce
-             Files:  t/TEST t/op/local.t t/op/pat.t t/op/regexp.t t/op/substr.t t/op/vec.t
-     Branch: maint-5.004/perl
-	   ! pod/perldiag.pod pod/perlfunc.pod pod/perlguts.pod
-	   ! pod/perlop.pod pp_hot.c pp_sys.c t/TEST t/op/local.t
-           ! t/op/pat.t t/op/regexp.t t/op/substr.t t/op/vec.t toke.c
-
-----------------
-Version 5.004_73
-----------------
-
-____________________________________________________________________________
-[  1464] By: gsar                                  on 1998/07/13  04:41:07
-        Log: up patchlevel to 73, update Changes &c.
-     Branch: perl
-	   ! Changes patchlevel.h pod/perlhist.pod t/op/array.t
-	   ! win32/Makefile win32/config_H.bc win32/config_H.gc
-           ! win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[  1463] By: gsar                                  on 1998/07/13  02:58:51
-        Log: avoid empty rm -f in MM_Unix.pm
-     Branch: perl
-           ! lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
-[  1462] By: gsar                                  on 1998/07/13  02:54:52
-        Log: update perldelta
-     Branch: perl
-           ! pod/perldelta.pod
-____________________________________________________________________________
-[  1461] By: gsar                                  on 1998/07/13  02:44:30
-        Log: added patch, tweaked PERL_OBJECT things
-             From:    Graham Barr 
-             Date:    Sun, 12 Jul 1998 19:57:47 CDT
-             Message-Id: <19980712195747.C493@pobox.com>
-             Subject: [ PATCH perl5.004_72] patch to add qr//
-     Branch: perl
-	   ! dump.c embed.h ext/Opcode/Opcode.pm global.sym globals.c
-	   ! keywords.h keywords.pl op.c op.h opcode.h opcode.pl
-	   ! pod/perlfunc.pod pp.c pp_hot.c pp_proto.h proto.h regcomp.c
-           ! regexp.h sv.c t/op/pat.t toke.c
-____________________________________________________________________________
-[  1460] By: gsar                                  on 1998/07/13  01:25:07
-        Log: add a few more PURIFY guards
-     Branch: perl
-           ! av.c sv.c
-____________________________________________________________________________
-[  1459] By: gsar                                  on 1998/07/12  23:38:31
-        Log: add tests for change#1458 and then some
-     Branch: perl
-           ! t/op/array.t
-____________________________________________________________________________
-[  1458] By: gsar                                  on 1998/07/12  22:42:47
-        Log: apply patch for smarter AASSIGN_COMMON detection; regen headers
-             From:    Stephen McCamant 
-             Date:    Sun, 12 Jul 1998 17:17:00 CDT
-             Message-Id: <13737.12300.950886.821143@alias-2.pr.mcs.net>
-             Subject: [PATCH] @a=@a=qw(1) not working, both 5.004_04 and 5.004_71
-     Branch: perl
-           ! op.c opcode.h opcode.pl
-____________________________________________________________________________
-[  1457] By: gsar                                  on 1998/07/12  22:06:05
-        Log: small tweaks from Jarkko Hietaniemi 
-     Branch: perl
-           ! Configure Makefile.SH ext/Socket/Socket.xs perl.c
-____________________________________________________________________________
-[  1456] By: gsar                                  on 1998/07/12  21:56:39
-        Log: From: Doug MacEachern 
-             Date: Sun, 12 Jul 1998 14:29:29 -0400
-             Message-Id: <199807121829.OAA00525@postman.opengroup.org>
-             Subject: [PATCH 5.004_72] Embed.pm support for PERL_OBJECT
-     Branch: perl
-           ! lib/ExtUtils/Embed.pm
-____________________________________________________________________________
-[  1455] By: gsar                                  on 1998/07/12  21:54:02
-        Log: applied installperl patch, corrected other little nits
-             From: andreas.koenig@kulturbox.de (Andreas J. Koenig)
-             Date: 12 Jul 1998 16:27:21 +0200
-             Message-ID: 
-             Subject: [5.004_72] installperl tweak
-     Branch: perl
-           ! Changes Configure README.win32 installperl win32/makefile.mk
-____________________________________________________________________________
-[  1454] By: gsar                                  on 1998/07/12  10:14:24
-        Log: update MANIFEST, Changes
-     Branch: perl
-           - lib/Bundle/CPAN.pm
-           ! Changes MANIFEST
-
-----------------
-Version 5.004_72
-----------------
-
-____________________________________________________________________________
-[  1453] By: gsar                                  on 1998/07/12  10:04:33
-        Log: merge changes 1424, 1428 from maintbranch
-     Branch: perl
-           ! Porting/makerel ext/re/re.pm lib/Sys/Syslog.pm
-____________________________________________________________________________
-[  1452] By: gsar                                  on 1998/07/12  09:46:40
-        Log: patchlevel up to 72, update Changes, minor tweaks to win32/config*
-             and README.win32
-     Branch: perl
-	   ! Changes README.win32 patchlevel.h win32/Makefile
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1451] By: gsar                                  on 1998/07/12  07:01:26
-        Log: generic Configure mods and HAS_GROUP additions to help MiNT/MPEix/MVS
-             From: Jarkko Hietaniemi 
-             Date: Sat, 11 Jul 1998 17:51:07 +0300 (EET DST)
-             Message-Id: <199807111451.RAA27010@alpha.hut.fi>
-             Subject: M3 "generic" parts
-     Branch: perl
-	   ! Configure Makefile.SH config_h.SH ext/POSIX/POSIX.xs
-	   ! ext/SDBM_File/sdbm/sdbm.h lib/ExtUtils/MM_Unix.pm
-	   ! makedepend.SH mv-if-diff perl.h plan9/plan9ish.h pp_sys.c
-	   ! unixish.h vms/subconfigure.com vms/vmsish.h win32/config_H.bc
-           ! win32/config_H.gc x2p/Makefile.SH
-____________________________________________________________________________
-[  1450] By: gsar                                  on 1998/07/12  06:38:27
-        Log: various tweaks for PERL_OBJECT build & test
-     Branch: perl
-	   ! globals.c iperlsys.h win32/GenCAPI.pl win32/Makefile
-           ! win32/makefile.mk win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[  1449] By: gsar                                  on 1998/07/12  06:29:23
-        Log: From:    andreas.koenig@kulturbox.de (Andreas J. Koenig)
-             Date:    12 Jul 1998 08:22:16 +0200
-             Message-Id: 
-             Subject: [5.004_71] Patch: let CPAN.pm work with threaded perl
-     Branch: perl
-           ! lib/CPAN.pm lib/SelfLoader.pm
-____________________________________________________________________________
-[  1448] By: gsar                                  on 1998/07/12  05:10:50
-        Log: make RE engine threadsafe; -Dusethreads builds, tests on Solaris,
-             and runs regexes in 1000s of threads without crashing; also fixed
-             statcache not being thread-local
-     Branch: perl
-	   ! embed.h embedvar.h ext/Thread/Thread.xs ext/re/re.xs
-	   ! intrpvar.h op.c perl.c pp_ctl.c regcomp.c regexec.c sv.c
-           ! t/lib/thread.t thrdvar.h util.c
-____________________________________________________________________________
-[  1447] By: gsar                                  on 1998/07/12  02:40:45
-        Log: From:    Hugo van der Sanden 
-             Date:    Sun, 12 Jul 1998 03:23:04 +0200
-             Message-Id: 
-             Subject: Re: perlbug doesn't check that save succeeded
-     Branch: perl
-           ! utils/perlbug.PL
-____________________________________________________________________________
-[  1446] By: gsar                                  on 1998/07/12  02:39:24
-        Log: be generous about CRs
-             From:    larry@wall.org (Larry Wall)
-             Date:    Sat, 11 Jul 1998 17:54:21 PDT
-             Message-Id: <199807120054.RAA19550@wall.org>
-             Subject: [PATCH _71] CRs et al 
-     Branch: perl
-           ! toke.c
-____________________________________________________________________________
-[  1445] By: gsar                                  on 1998/07/12  02:11:16
-        Log: fix pp_caller() to fully traverse stacklevels
-     Branch: perl
-           ! objpp.h pp_ctl.c proto.h t/op/runlevel.t
-____________________________________________________________________________
-[  1444] By: gsar                                  on 1998/07/11  23:43:37
-        Log: add patch, along with all the missing bits, and doc tweaks
-             From: Ilya Zakharevich 
-             Date: Thu, 9 Jul 1998 18:47:25 -0400 (EDT)
-             Message-Id: <199807092247.SAA06314@monk.mps.ohio-state.edu>
-             Subject: Re: [PATCH 5.004_71] Secure RE update
-     Branch: perl
-	   ! ObjXSub.h embed.h embedvar.h ext/Opcode/Opcode.pm ext/re/re.pm
-	   ! global.sym globals.c interp.sym intrpvar.h op.c opcode.h
-	   ! opcode.pl pp_ctl.c pp_proto.h regcomp.c sv.c t/op/misc.t
-           ! t/op/pat.t t/op/subst.t
-____________________________________________________________________________
-[  1443] By: gsar                                  on 1998/07/11  23:08:14
-        Log: tweak to get BSDI to build IPC/SysV
-             From: Jarkko Hietaniemi 
-             Date: 11 Jul 1998 16:26:44 +0300
-             Message-ID: 
-             Subject: Re: NOT OK: perl5.004_71 on BSDI 3.1
-     Branch: perl
-           ! ext/IPC/SysV/SysV.xs
-____________________________________________________________________________
-[  1442] By: gsar                                  on 1998/07/11  23:03:39
-        Log: fix closures in optimized C (only the tests are in this
-             change, the pp_hot.c fix accidentally went in change#1441)
-     Branch: perl
-           ! t/op/closure.t
-____________________________________________________________________________
-[  1441] By: gsar                                  on 1998/07/11  22:35:40
-        Log: From: Ilya Zakharevich 
-             Date: Sat, 11 Jul 1998 18:21:21 -0400 (EDT)
-             Message-Id: <199807112221.SAA03221@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_71] Update os2's OS2::Process
-     Branch: perl
-	   ! os2/OS2/Process/Makefile.PL os2/OS2/Process/Process.pm
-           ! os2/OS2/Process/Process.xs pp_hot.c
-____________________________________________________________________________
-[  1440] By: gsar                                  on 1998/07/11  19:41:59
-        Log: From: andreas.koenig@kulturbox.de (Andreas J. Koenig)
-             Date: 11 Jul 1998 17:00:21 +0200
-             Message-ID: 
-             Subject: [perl5.004_71] Patch: change MakeMaker default compress --> gzip
-     Branch: perl
-           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[  1439] By: gsar                                  on 1998/07/11  19:36:58
-        Log: export newRV_noinc on win32, deprecate AvFILL in favor of av_len()
-     Branch: perl
-           ! pod/perlguts.pod win32/makedef.pl
-____________________________________________________________________________
-[  1438] By: gsar                                  on 1998/07/11  19:14:21
-        Log: applied patch for perlfunc tweaks, removed reference to system qsort()
-             From: abigail@fnx.com
-             Date: Sat, 11 Jul 1998 04:20:54 -0400 (EDT)
-             Message-ID: <19980711082054.2184.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.004_71] pod/perlfunc.pod
-     Branch: perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1437] By: gsar                                  on 1998/07/11  19:05:00
-        Log: From: abigail@fnx.com
-             Date: Sat, 11 Jul 1998 04:09:57 -0400 (EDT)
-             Message-ID: <19980711080957.2106.qmail@betelgeuse.wayne.fnx.com>
-             Subject: [PATCH 5.004_71] pod/pod2man.PL
-     Branch: perl
-           ! pod/pod2man.PL
-____________________________________________________________________________
-[  1436] By: gsar                                  on 1998/07/11  18:58:03
-        Log: more complete version of change#1421
-             From: Stephen McCamant 
-             Date: Fri, 10 Jul 1998 23:46:46 -0500 (CDT)
-             Message-ID: <13734.58994.735473.859218@alias-2.pr.mcs.net>
-             Subject: [PATCH] Re: B::Deparse for(1..100000)
-     Branch: perl
-           ! ext/B/B/Deparse.pm
-____________________________________________________________________________
-[  1435] By: gsar                                  on 1998/07/11  18:54:42
-        Log: win32 fixes for VC 6.0 nits
-     Branch: perl
-	   ! ext/Data/Dumper/Dumper.xs win32/Makefile win32/makefile.mk
-           ! win32/win32.h
-____________________________________________________________________________
-[  1434] By: gsar                                  on 1998/07/11  18:45:32
-        Log: s/AVHV/pseudo-hash/ (via PM)
-             From: Gisle Aas 
-             Date: 11 Jul 1998 00:16:53 +0200
-             Message-ID: 
-             Subject: [PATCH] trivial fields.pm doc patch
-     Branch: perl
-           ! lib/fields.pm
-____________________________________________________________________________
-[  1433] By: gsar                                  on 1998/07/11  18:43:11
-        Log: From: Laszlo Molnar 
-             Date: Fri, 10 Jul 1998 23:12:11 +0200
-             Message-ID: <19980710231211.A161@cdata.tvnet.hu>
-             Subject: [PATCH _71] dos-djgpp update
-     Branch: perl
-           ! Configure djgpp/config.over djgpp/djgppsed.sh djgpp/fixpmain
-____________________________________________________________________________
-[  1432] By: gsar                                  on 1998/07/11  18:41:00
-        Log: applied patch, reformatted long lines in places
-             From: Dominic Dunlop 
-             Date: Fri, 10 Jul 1998 23:11:30 +0000
-             Message-Id: 
-             Subject: [PATCH 5.004_71] Re: Document "count exceeded" regular expression
-             warning
-     Branch: perl
-           ! pod/perldiag.pod regexec.c
-____________________________________________________________________________
-[  1431] By: gsar                                  on 1998/07/11  18:29:18
-        Log: From: "John L. Allen" 
-             Date: Fri, 10 Jul 1998 13:57:01 -0400 (EDT)
-             Message-ID: 
-             Subject: [PATCH]: _71 & _04 - Make AIX hints preserve ccflags as per docs
-     Branch: perl
-           ! hints/aix.sh
-____________________________________________________________________________
-[  1430] By: TimBunce                              on 1998/07/11  18:15:09
-        Log: Title:  "Fix string substitution returncode problem"
-             From:  Dominic Dunlop , Gurusamy Sarathy 
-             Msg-ID:  <199805271236.IAA28213@aatma.engin.umich.edu>,
-             
-             Files:  pp_hot.c
-     Branch: maint-5.004/perl
-           ! pp_hot.c
-____________________________________________________________________________
-[  1429] By: gsar                                  on 1998/07/11  18:07:52
-        Log: applied patch, tweaked doc and code that does labels/indentation
-             From: Ilya Zakharevich 
-             Date: Thu, 9 Jul 1998 21:39:40 -0400 (EDT)
-             Message-Id: <199807100139.VAA08617@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_71] perldebug.pod and RE
-     Branch: perl
-           ! pod/perldebug.pod regcomp.c regexec.c
-____________________________________________________________________________
-[  1428] By: TimBunce                              on 1998/07/11  17:45:56
-        Log: Assorted patches:
-             
-             Title:  "makerel now reads local patch list from patchlevel.h"
-             Files:  patchlevel.h Porting/makerel
-             
-             Title:  "pod/pod2man.PL"
-             From:  abigail@fnx.com
-             Msg-ID:  <19980711080957.2106.qmail@betelgeuse.wayne.fnx.com>
-             Files:  pod/pod2man.PL
-             
-             Title:  "Clarify taint example in re.pm"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  lib/re.pm
-             
-             Title:  "Anohter ptags improvement"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199807070059.UAA28815@monk.mps.ohio-state.edu>
-             Files:  emacs/ptags
-             
-             Title:  "_71 & _04 - Make AIX hints preserve ccflags as per docs"
-             From:  "John L. Allen" 
-             Msg-ID:  
-             Files:  hints/aix.sh
-     Branch: maint-5.004/perl
-	   ! Porting/makerel emacs/ptags hints/aix.sh lib/re.pm
-           ! patchlevel.h pod/pod2man.PL
-____________________________________________________________________________
-[  1427] By: gsar                                  on 1998/07/11  17:04:47
-        Log: make Liblist return consistently backslashed paths
-     Branch: perl
-           ! lib/ExtUtils/Liblist.pm
-____________________________________________________________________________
-[  1426] By: gsar                                  on 1998/07/11  16:53:56
-        Log: don't 'touch a2p.c', it might readonly (via PM)
-             From: Robin Barker 
-             Date: Fri, 10 Jul 98 17:19:54 BST
-             Message-Id: <20430.9807101619@tempest.cise.npl.co.uk>
-     Branch: perl
-           ! x2p/Makefile.SH
-____________________________________________________________________________
-[  1425] By: TimBunce                              on 1998/07/11  16:42:26
-        Log: Title:  "Add newCONSTSUB (from 5.005_70)"
-             Files:  embed.h proto.h global.sym op.c
-     Branch: maint-5.004/perl
-           ! embed.h global.sym op.c proto.h
-____________________________________________________________________________
-[  1424] By: TimBunce                              on 1998/07/11  16:20:21
-        Log: Title:  "Assorted fixes for Sys::Syslog.pm"
-             From:  "M.J.T. Guy" , Sean Robinson
-             , Tim.Bunce@ig.co.uk
-             Msg-ID:  <01IXGLISWJ7Q0001B6@sc.maricopa.edu>,
-             <199805270939.KAA08453@toad.ig.co.uk>,
-             
-             Files:  lib/Sys/Syslog.pm
-     Branch: maint-5.004/perl
-           ! lib/Sys/Syslog.pm
-____________________________________________________________________________
-[  1423] By: TimBunce                              on 1998/07/11  15:53:37
-        Log: Assorted patches:
-             
-             Title:  "umask: die if EXPR & 0700 else return undef"
-             From:  Chip Salzenberg , Jarkko Hietaniemi ,
-             Jarkko Hietaniemi , Malcolm Beattie
-             , Tim.Bunce@ig.co.uk (Tim Bunce),
-             kstar@chapin.ed, kstar@chapin.edu@ig.co.uk ()
-             Msg-ID:  <199805291520.QAA01615@sable.ox.ac.uk>,
-             <199805291549.SAA01439@alpha.hut.fi>,
-             <199805291608.RAA29283@toad.ig.co.uk>,
-             <19980530105129.A24006@O2.chapin.edu>,
-             <19980608133037.A8793@perlsupport.com>
-             Files:  pod/perldiag.pod pod/perlfunc.pod pp_sys.c
-             
-             Title:  "File name DynaLoader.pm.PL is 8.3 unfriendly"
-             From:  Laszlo Molnar 
-             Msg-ID:  <19980610005417.G162@cdata.tvnet.hu>
-             Files:  MANIFEST ext/DynaLoader/Makefile.PL
-     Branch: maint-5.004/perl
-          +> ext/DynaLoader/DynaLoader_pm.PL
-           - ext/DynaLoader/DynaLoader.pm.PL
-	   ! MANIFEST ext/DynaLoader/Makefile.PL pod/perldiag.pod
-           ! pod/perlfunc.pod pp_sys.c
-____________________________________________________________________________
-[  1421] By: gsar                                  on 1998/07/11  02:54:02
-        Log: From: Gisle Aas 
-             Subject: [PATCH] B::Deparse for(1..100000)
-             Date: 10 Jul 1998 14:04:44 +0200
-             Message-ID: 
-     Branch: perl
-           ! ext/B/B/Deparse.pm
-____________________________________________________________________________
-[  1420] By: gsar                                  on 1998/07/11  02:28:18
-        Log: add 'clean' target for ext/re
-     Branch: perl
-           ! ext/re/Makefile.PL
-____________________________________________________________________________
-[  1419] By: gsar                                  on 1998/07/11  02:20:32
-        Log: From: Tom Hughes 
-             Date: 10 Jul 1998 10:25:18 +0100
-             Message-ID: 
-             Subject: [5.004_71] Patch: svr4 hints updates for Unixware
-     Branch: perl
-           ! hints/svr4.sh
-____________________________________________________________________________
-[  1418] By: gsar                                  on 1998/07/11  02:19:12
-        Log: move op/ipc{msg,sem}.t into lib/ipc_sysv.t
-             From: Jarkko Hietaniemi 
-             Date: Fri, 10 Jul 1998 13:08:08 +0300 (EET DST)
-             Message-Id: <199807101008.NAA10817@alpha.hut.fi>
-             Subject: Re: make minitest does not work out of the box - test subset
-             needs pruning
-     Branch: perl
-           + t/lib/ipc_sysv.t
-           - t/op/ipcmsg.t t/op/ipcsem.t
-           ! MANIFEST
-____________________________________________________________________________
-[  1417] By: gsar                                  on 1998/07/11  02:14:16
-        Log: disable CR croaking (via #define, default off) in lieu of more
-             complete fix
-     Branch: perl
-           ! toke.c
-____________________________________________________________________________
-[  1416] By: gsar                                  on 1998/07/11  02:06:11
-        Log: added patch, made linking with setargv a build option
-             From: "Douglas Lankshear" 
-             Date: Thu, 9 Jul 1998 09:51:42 -0700
-             Message-ID: <000101bdab59$d9602dc0$a32fa8c0@tau.Active>
-             Subject: [PATCH 5.004_71]
-     Branch: perl
-           ! perl.c pp_sys.c win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1415] By: gsar                                  on 1998/07/11  01:47:19
-        Log: From: Tom Hughes 
-             Date: 10 Jul 1998 09:01:12 +0100
-             Message-ID: 
-             Subject: [5.004_71] Patch: Fix perl_exp.SH for Unixware
-     Branch: perl
-           ! perl_exp.SH
-____________________________________________________________________________
-[  1414] By: gsar                                  on 1998/07/11  01:45:45
-        Log: make lib/re.pm a prereq for minitest
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1413] By: gsar                                  on 1998/07/11  01:40:56
-        Log: add patch (via PM)
-             From: Stephen McCamant 
-             Date: Fri, 10 Jul 1998 01:14:11 -0500 (CDT)
-             Message-ID: <13733.45251.47363.431138@alias-2.pr.mcs.net>
-             Subject: Big B::Deparse update
-     Branch: perl
-           ! ext/B/B/Deparse.pm
-____________________________________________________________________________
-[  1412] By: gsar                                  on 1998/07/11  00:25:17
-        Log: add perlport.pod v1.23 from Chris Nandor 
-     Branch: perl
-           + pod/perlport.pod
-           ! pod/perl.pod
-____________________________________________________________________________
-[  1411] By: gsar                                  on 1998/07/10  21:53:06
-        Log: make binmode(STDIN) not whine
-             From: Dan Sugalski 
-             Date: Thu, 09 Jul 1998 16:51:27 -0700
-             Message-Id: <3.0.5.32.19980709165127.00a692e0@ous.edu>
-             Subject: [PATCH 5.004_70] Fix up binmode() for VMS
-     Branch: perl
-           ! vms/vms.c
-____________________________________________________________________________
-[  1410] By: gsar                                  on 1998/07/10  21:50:57
-        Log: CPAN-1.39 update
-             From: koenig@kulturbox.de (Andreas J. Koenig)
-             Date: 10 Jul 1998 00:45:36 +0200
-             Message-ID: 
-             Subject: Re: perl5.004_71 hit the stands this morn
-     Branch: perl
-           ! MANIFEST lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm
-____________________________________________________________________________
-[  1409] By: gsar                                  on 1998/07/10  21:45:10
-        Log: manually apply patch with conflicts
-             From: Dan Sugalski 
-             Date: Thu, 09 Jul 1998 12:08:33 -0700
-             Message-Id: <3.0.5.32.19980709120833.009eb100@ous.edu>
-             Subject: [PATCH 5.004_70] Updated duble-quotes in config.h/config.pm patch
-     Branch: perl
-           ! configpm
-____________________________________________________________________________
-[  1408] By: gsar                                  on 1998/07/10  21:36:54
-        Log: From: Andy Dougherty 
-             Date: Thu, 9 Jul 1998 11:58:30 -0400 (EDT)
-             Message-Id: 
-             Subject: Re: perldelta.pod [PATCH]
-     Branch: perl
-           ! pod/perldelta.pod
-____________________________________________________________________________
-[  1407] By: gsar                                  on 1998/07/10  21:35:13
-        Log: From: Andy Dougherty 
-             Date: Thu, 9 Jul 1998 11:26:03 -0400 (EDT)
-             Subject: [PATCH 5.004_71] Allow static build of IPC::SysV
-             Message-Id: 
-     Branch: perl
-           ! ext/IPC/SysV/Makefile.PL
-____________________________________________________________________________
-[  1406] By: gsar                                  on 1998/07/10  21:33:30
-        Log: manually apply patch with conflicts
-             From: kstar@chapin.edu
-             Message-ID: <19980709093621.B7857@O2.chapin.edu>
-             Date: Thu, 9 Jul 1998 09:36:21 -0400
-             Subject: Re: [PATCH] 5.004_70 installperl and docs
-     Branch: perl
-           ! installperl
-____________________________________________________________________________
-[  1405] By: gsar                                  on 1998/07/10  21:28:29
-        Log: misc tweaks to docs and qsortsv() warning
-     Branch: perl
-           ! Changes pod/perldelta.pod pod/perlsub.pod pp_ctl.c
-____________________________________________________________________________
-[  1404] By: gsar                                  on 1998/07/10  21:23:53
-        Log: add more correct version of change#1350 (as yet untested)
-             From: joshua.pritikin@db.com
-             Date: Thu, 9 Jul 1998 09:22:46 -0400
-             Message-Id: 
-             Subject: Re: [PATCH _70] cache missing methods
-     Branch: perl
-           ! embedvar.h gv.c interp.sym intrpvar.h perlvars.h
-____________________________________________________________________________
-[  1403] By: gsar                                  on 1998/07/10  20:46:12
-        Log: add win32_rename() that does what docs say
-     Branch: perl
-	   ! win32/GenCAPI.pl win32/makedef.pl win32/perlhost.h
-           ! win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[  1402] By: gsar                                  on 1998/07/10  20:19:18
-        Log: inet_aton() should do DNS lookup only if arg isn't a dotted-quad
-             (suggested by Philippe.Simonet@swisscom.com)
-     Branch: perl
-           ! ext/Socket/Socket.xs
-____________________________________________________________________________
-[  1401] By: gsar                                  on 1998/07/10  03:24:45
-        Log: undo change#1379 (order of tests *is* significant)
-     Branch: perl
-           ! t/lib/posix.t
-____________________________________________________________________________
-[  1400] By: nick                                  on 1998/07/09  17:43:14
-        Log: Integrate mainline (_071-ish)
-     Branch: ansiperl
-	  +> ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm
-	  +> ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Makefile.PL
-	  +> ext/Data/Dumper/Todo ext/IPC/SysV/ChangeLog
-	  +> ext/IPC/SysV/MANIFEST ext/IPC/SysV/Makefile.PL
-	  +> ext/IPC/SysV/Msg.pm ext/IPC/SysV/README
-	  +> ext/IPC/SysV/Semaphore.pm ext/IPC/SysV/SysV.pm
-	  +> ext/IPC/SysV/SysV.xs ext/IPC/SysV/t/msg.t ext/IPC/SysV/t/sem.t
-	  +> ext/re/Makefile.PL ext/re/re.pm ext/re/re.xs pp_proto.h
-          +> t/io/iprefix.t t/lib/dumper-ovl.t t/lib/dumper.t
-          !> (integrate 145 files)
-
-----------------
-Version 5.004_71
-----------------
-
-____________________________________________________________________________
-[  1399] By: gsar                                  on 1998/07/09  12:15:12
-        Log: update Changes, perlhist.pod, beginnings of perldelta.pod
-     Branch: perl
-           ! Changes pod/perldelta.pod pod/perlhist.pod
-____________________________________________________________________________
-[  1397] By: gsar                                  on 1998/07/09  08:35:39
-        Log: merge changes from maintbranch (1354, and relevant part of 1356); all
-             maintenance changes upto 1356 merged
-     Branch: perl
-           ! pod/perldiag.pod pp_hot.c t/op/misc.t
-____________________________________________________________________________
-[  1396] By: gsar                                  on 1998/07/09  08:02:52
-        Log: add Data-Dumper, up patchlevel to 71, various misc tweaks to
-             make all configs build on Solaris and win32
-     Branch: perl
-	   + ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm
-	   + ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Makefile.PL
-           + ext/Data/Dumper/Todo t/lib/dumper-ovl.t t/lib/dumper.t
-	   ! MANIFEST Todo patchlevel.h win32/Makefile win32/config_H.bc
-           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[  1395] By: gsar                                  on 1998/07/09  05:39:48
-        Log: From:    Stephen McCamant 
-             Date:    Wed, 08 Jul 1998 23:16:49 CDT
-             Message-Id: <13732.16626.904108.608743@alias-2.pr.mcs.net>
-             Subject: [PATCH] UNOP opclass test in B.xs
-     Branch: perl
-           ! ext/B/B.xs
-____________________________________________________________________________
-[  1394] By: gsar                                  on 1998/07/09  05:37:48
-        Log: get it building again on win32
-     Branch: perl
-	   ! bytecode.h embed.h ext/re/Makefile.PL global.sym intrpvar.h
-	   ! op.c opcode.pl perl.h pp.c pp_ctl.c pp_hot.c pp_proto.h
-	   ! pp_sys.c proto.h win32/Makefile win32/makedef.pl
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1393] By: gsar                                  on 1998/07/09  05:20:31
-        Log: applied patch from Ilya, tweaked some to get clean static build of
-             the ext/re stuff (untested on win32)
-     Branch: perl
-           ! regcomp.c regexec.c
-____________________________________________________________________________
-[  1392] By: gsar                                  on 1998/07/09  03:56:45
-        Log: fix installperl typo
-             From:    kstar@chapin.edu
-             Date:    Wed, 08 Jul 1998 23:51:57 EDT
-             Message-Id: <19980708235157.D1380@O2.chapin.edu>
-             Subject: Re: [PATCH] 5.004_70 installperl and docs
-     Branch: perl
-           ! installperl
-____________________________________________________________________________
-[  1391] By: gsar                                  on 1998/07/09  01:48:16
-        Log: From: Chip Salzenberg 
-             Date: Wed, 8 Jul 1998 18:10:55 -0400
-             Message-ID: <19980708181055.A8005@perlsupport.com>
-             Subject: [PATCH _70] Allow $SIG{CHLD}='IGNORE' to work on Solaris
-     Branch: perl
-           ! util.c
-____________________________________________________________________________
-[  1390] By: gsar                                  on 1998/07/09  01:45:16
-        Log: added patch, tweaked per Ilya's suggestion
-             From: "M.J.T. Guy" 
-             Date: Wed, 8 Jul 1998 13:34:42 +0100
-             Message-Id: 
-             Subject: [PATCH] perl5db.pl complains about non-integer condition
-     Branch: perl
-           ! lib/perl5db.pl
-____________________________________________________________________________
-[  1389] By: gsar                                  on 1998/07/09  01:42:13
-        Log: reenable misaligned memory checks, cast to UV & check alignment
-             From: Dominic Dunlop 
-             Date: Wed, 8 Jul 1998 11:21:48 +0000
-             Message-Id: 
-             Subject: Re: [PATCH 5.00469] corrupt malloc ptr on NeXT
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[  1388] By: gsar                                  on 1998/07/09  01:36:22
-        Log: From: Andy Dougherty 
-             Date: Wed, 8 Jul 1998 13:32:07 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.004_70] more on finding metaconfig units.
-     Branch: perl
-           ! Porting/pumpkin.pod
-____________________________________________________________________________
-[  1387] By: gsar                                  on 1998/07/09  01:35:23
-        Log: From: Andy Dougherty 
-             Date: Wed, 8 Jul 1998 13:29:34 -0400 (EDT)
-             Message-Id: 
-             Subject: Configure indentation patch
-     Branch: perl
-           ! Configure
-____________________________________________________________________________
-[  1386] By: gsar                                  on 1998/07/09  01:33:31
-        Log: don't try to hardlink perldiag.pod; that is no longer not needed
-             From: Andy Dougherty 
-             Date: Wed, 8 Jul 1998 12:18:32 -0400 (EDT)
-             Message-Id: 
-             Subject: Re: pelr installation attempts hard links between file systems
-     Branch: perl
-           ! installperl
-____________________________________________________________________________
-[  1385] By: gsar                                  on 1998/07/09  01:28:05
-        Log: win32/makefile.mk =~ s|gcc -pipe|gcc|
-     Branch: perl
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1384] By: gsar                                  on 1998/07/09  01:26:19
-        Log: make t/TEST run 'perl $switches ./foo/test.t' everywhere
-     Branch: perl
-           ! t/TEST
-____________________________________________________________________________
-[  1383] By: gsar                                  on 1998/07/09  01:06:47
-        Log: manually apply patch with a dependency on unapplied patch
-             From: Ilya Zakharevich 
-             Date: Wed, 8 Jul 1998 07:03:51 -0400 (EDT)
-             Message-Id: <199807081103.HAA25145@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_70] make quoted RE embeddable
-     Branch: perl
-           ! sv.c t/op/pat.t
-____________________________________________________________________________
-[  1382] By: gsar                                  on 1998/07/09  01:02:23
-        Log: change order of libs for extensions
-             From: Laszlo Molnar 
-             Date: Tue, 7 Jul 1998 23:48:05 +0200
-             Message-ID: <19980707234805.C180@cdata.tvnet.hu>
-             Subject: [PATCH _70] linking problem with modules
-     Branch: perl
-           ! lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
-[  1381] By: gsar                                  on 1998/07/09  00:56:12
-        Log: patch for more flexible initialization of xsub parameters
-             From: Tye McQueen 
-             Date: Mon, 6 Jul 1998 19:04:27 -0500 (CDT)
-             Message-Id: <199807070004.AA16454@metronet.com>
-             Subject: Enhanced arg inits for xsubpp
-     Branch: perl
-           ! lib/ExtUtils/xsubpp pod/perlxs.pod
-____________________________________________________________________________
-[  1380] By: gsar                                  on 1998/07/09  00:44:01
-        Log: From: Tye McQueen 
-             Date: Mon, 6 Jul 1998 17:34:54 -0500 (CDT)
-             Message-Id: <16619-17073@lyris.activestate.com>
-             Subject: New pl2bat.pl
-     Branch: perl
-           ! win32/bin/pl2bat.pl
-____________________________________________________________________________
-[  1379] By: gsar                                  on 1998/07/09  00:30:58
-        Log: remove ordering dependency in posix.t
-     Branch: perl
-           ! t/lib/posix.t
-____________________________________________________________________________
-[  1378] By: gsar                                  on 1998/07/08  20:17:43
-        Log: make -i'*suffix' work too
-     Branch: perl
-           ! doio.c
-____________________________________________________________________________
-[  1377] By: gsar                                  on 1998/07/08  08:56:28
-        Log: regen headers; result builds & tests on Solaris again (threaded)
-     Branch: perl
-           ! embedvar.h
-____________________________________________________________________________
-[  1376] By: gsar                                  on 1998/07/08  08:55:03
-        Log: change#1350 breaks things, back it out
-     Branch: perl
-           ! embedvar.h gv.c interp.sym intrpvar.h perlvars.h
-____________________________________________________________________________
-[  1375] By: gsar                                  on 1998/07/08  07:47:00
-        Log: From: Ilya Zakharevich 
-             Date: Wed, 8 Jul 1998 01:30:15 -0400 (EDT)
-             Message-Id: <199807080530.BAA14072@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_70] Switch modifiers in RE off
-     Branch: perl
-           ! pod/perlre.pod regcomp.c t/op/re_tests
-____________________________________________________________________________
-[  1374] By: gsar                                  on 1998/07/08  07:41:06
-        Log: From: Gisle Aas 
-             Date: 07 Jul 1998 23:08:59 +0200
-             Message-ID: 
-             Subject: [PATCH] Faster copying from SvIV/SvNVs in sv_setsv()
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1373] By: gsar                                  on 1998/07/08  07:36:01
-        Log: From: Laszlo Molnar 
-             Date: Tue, 7 Jul 1998 23:47:50 +0200
-             Message-ID: <19980707234750.A180@cdata.tvnet.hu>
-             Subject: [PATCH _70] dos-djgpp update
-     Branch: perl
-           ! djgpp/config.over djgpp/djgppsed.sh
-____________________________________________________________________________
-[  1372] By: gsar                                  on 1998/07/08  07:12:47
-        Log: add extension to support SysV IPC
-             From: Jarkko Hietaniemi 
-             Date: Tue, 7 Jul 1998 02:32:53 +0300 (EET DST)
-             Message-Id: <199807062332.CAA25792@alpha.hut.fi>
-             Subject: [PATCH] 5.004_70: IPC::SysV
-     Branch: perl
-	   + ext/IPC/SysV/ChangeLog ext/IPC/SysV/MANIFEST
-	   + ext/IPC/SysV/Makefile.PL ext/IPC/SysV/Msg.pm
-	   + ext/IPC/SysV/README ext/IPC/SysV/Semaphore.pm
-	   + ext/IPC/SysV/SysV.pm ext/IPC/SysV/SysV.xs ext/IPC/SysV/t/msg.t
-           + ext/IPC/SysV/t/sem.t
-	   ! Configure MANIFEST pod/perlfunc.pod pod/perlipc.pod
-           ! t/op/ipcmsg.t t/op/ipcsem.t
-____________________________________________________________________________
-[  1371] By: gsar                                  on 1998/07/08  05:12:07
-        Log: add patch for C
-             From: Ilya Zakharevich 
-             Date: Mon, 6 Jul 1998 22:24:33 -0400 (EDT)
-             Message-Id: <199807070224.WAA10318@monk.mps.ohio-state.edu>
-             Subject: Re: _70 and Devel::RE
-     Branch: perl
-           + ext/re/Makefile.PL ext/re/re.pm ext/re/re.xs
-           - lib/re.pm
-	   ! MANIFEST Makefile.SH global.sym interp.sym intrpvar.h op.c
-           ! perl.h pp.c pp_ctl.c pp_hot.c regcomp.c regexec.c
-____________________________________________________________________________
-[  1370] By: gsar                                  on 1998/07/08  04:27:27
-        Log: added patch to generate PPDEF(pp_foo)
-             From: Ilya Zakharevich 
-             Date: Mon, 6 Jul 1998 20:43:54 -0400 (EDT)
-             Message-Id: <199807070043.UAA28572@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_70] Autogenerate declarations for opcodes
-     Branch: perl
-           + pp_proto.h
-           ! MANIFEST Makefile.SH opcode.pl proto.h
-____________________________________________________________________________
-[  1369] By: gsar                                  on 1998/07/08  04:19:49
-        Log: suggest 'make test' after make
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1368] By: gsar                                  on 1998/07/08  03:58:19
-        Log: added patch for -i'foo*bar', made code somewhat simpler, tweaked doc
-             From: Colin Kuskie 
-             Date: Tue, 7 Jul 1998 09:44:33 -0700 (PDT)
-             Message-ID: 
-             Subject: Corrected -i prefix patch
-     Branch: perl
-           + t/io/iprefix.t
-           ! MANIFEST doio.c pod/perlrun.pod
-____________________________________________________________________________
-[  1366] By: gsar                                  on 1998/07/08  02:28:30
-        Log: From: Gisle Aas 
-             Date: 07 Jul 1998 17:48:36 +0200
-             Message-ID: 
-             Subject: [PATCH] Remove some rendundant SvOOK_on tests
-     Branch: perl
-           ! sv.c sv.h
-____________________________________________________________________________
-[  1365] By: gsar                                  on 1998/07/08  02:25:17
-        Log: applied patch to clarify m//g
-             From: "M.J.T. Guy" 
-             Date: Tue, 7 Jul 1998 15:59:03 +0100
-             Message-Id: 
-             Subject: [PATCH] Re: m//g in perlop.pod
-     Branch: perl
-           ! pod/perlop.pod
-____________________________________________________________________________
-[  1364] By: gsar                                  on 1998/07/08  02:13:07
-        Log: From: "M.J.T. Guy" 
-             Subject: [PATCH] 5.004_70 bug in perlfaq.pod
-             Message-Id: 
-             Date: Tue, 7 Jul 1998 11:59:41 +0100
-     Branch: perl
-           ! pod/perlfaq.pod
-____________________________________________________________________________
-[  1363] By: gsar                                  on 1998/07/08  02:11:11
-        Log: applied tweak (via private mail)
-             From: Jarkko Hietaniemi 
-             Date: Tue, 7 Jul 1998 13:27:47 +0300 (EET DST)
-             Message-Id: <199807071027.NAA20829@alpha.hut.fi>
-             Subject: tiny perllocale.pod patch for 5.004_70
-     Branch: perl
-           ! pod/perllocale.pod
-____________________________________________________________________________
-[  1362] By: gsar                                  on 1998/07/08  02:07:48
-        Log: applied patch, various tweaks to pander to pod2man tantrums
-             From: Ilya Zakharevich 
-             Date: Mon, 6 Jul 1998 22:47:30 -0400 (EDT)
-             Message-Id: <199807070247.WAA10677@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_70] CONFIGPM
-     Branch: perl
-           ! Porting/Glossary configpm
-____________________________________________________________________________
-[  1361] By: gsar                                  on 1998/07/07  22:13:11
-        Log: From: Stephen McCamant 
-             Date: Mon,  6 Jul 1998 21:22:17 -0500 (CDT)
-             Message-ID: <13729.33816.311236.995647@alias-2.pr.mcs.net>
-             Subject: Re: Inconsistent arithmetics on refs
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1360] By: gsar                                  on 1998/07/07  22:11:11
-        Log: From: Ilya Zakharevich 
-             Date: Mon, 6 Jul 1998 20:59:10 -0400 (EDT)
-             Message-Id: <199807070059.UAA28815@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_70] Anohter ptags improvement
-     Branch: perl
-           ! emacs/ptags
-____________________________________________________________________________
-[  1359] By: gsar                                  on 1998/07/07  22:08:48
-        Log: fix accidental RE-de-optimization
-             From: larry@wall.org (Larry Wall)
-             Date: Mon, 6 Jul 1998 17:49:31 -0700
-             Message-Id: <199807070049.RAA23475@wall.org>
-             Subject: Re: before you deluge us with patches
-             --
-             From: Ilya Zakharevich 
-             Date: Tue, 7 Jul 1998 03:10:56 -0400 (EDT)
-             Message-Id: <199807070710.DAA25399@monk.mps.ohio-state.edu>
-             Subject: Re: before you deluge us with patches
-     Branch: perl
-           ! pp_hot.c regexec.c
-____________________________________________________________________________
-[  1358] By: gsar                                  on 1998/07/07  21:36:29
-        Log: From: Gisle Aas 
-             Subject: [PATCH] Evaluation of AVHVs in scalar context
-             Date: 06 Jul 1998 21:41:14 +0200
-             Message-ID: 
-     Branch: perl
-           ! pp_hot.c t/op/avhv.t
-____________________________________________________________________________
-[  1357] By: gsar                                  on 1998/07/07  21:29:46
-        Log: doc tweaks suggested by Abigail, M.J.T. Guy, and Larry Wall
-     Branch: perl
-           ! lib/Math/Trig.pm lib/fields.pm thread.sym
-____________________________________________________________________________
-[  1356] By: TimBunce                              on 1998/07/07  17:19:42
-        Log: Assorted patches:
-             
-             ------  BUILD PROCESS  ------
-             
-             Title:  "Add Test.pm (from perl 5.004_70)"
-             Files:  MANIFEST lib/Test.pm
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "Add CR LF CRLF to Socket.pm"
-             From:  Chris Nandor 
-             Msg-ID:  
-             Files:  ext/Socket/Socket.pm
-             
-             ------  LIBRARY  ------
-             
-             Title:  "AutoSplit upgrade (AutoSplit 1.0302 from 5.004_70)"
-             Files:  lib/AutoSplit.pm
-             
-             Title:  "Upgrade base.pm (from perl 5.004_70)"
-             Files:  lib/base.pm
-             
-             Title:  "Add File::Spec modules (from 5.004_70)"
-             Files:  lib/File/Spec.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
-             
-             ------  TESTS  ------
-             
-             Title:  "fixup test for method call on undefined value"
-             Files:  t/op/misc.t
-             
-             ------  UTILITIES  ------
-             
-             Title:  "perlbug upgrade (from 5.004_70)"
-             Files:  utils/perlbug.PL
-             
-             Title:  "Upgrade perldoc (from 5.004_70)"
-             Files:  utils/perldoc.PL
-     Branch: maint-5.004/perl
-	   + lib/File/Spec.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 lib/Test.pm
-	   ! MANIFEST ext/Socket/Socket.pm lib/AutoSplit.pm lib/base.pm
-           ! t/op/misc.t utils/perlbug.PL utils/perldoc.PL
-____________________________________________________________________________
-[  1355] By: TimBunce                              on 1998/07/07  14:39:51
-        Log: Title:  "Fix memory leak in Safe module"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199806290544.BAA18463@aatma.engin.umich.edu>
-             Files:  ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
-     Branch: maint-5.004/perl
-           ! ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
-____________________________________________________________________________
-[  1354] By: TimBunce                              on 1998/07/07  14:35:25
-        Log: Title:  "Better error message for $undef->method call"
-             From:  Tim Bunce , Graham Barr ,
-             joshua.pritikin@db.com
-             Msg-ID:  <19980615171027.U4120@asic.sc.ti.com>, 
-             Files:  pod/perldiag.pod pp_hot.c
-     Branch: maint-5.004/perl
-           ! pod/perldiag.pod pp_hot.c
-____________________________________________________________________________
-[  1353] By: gsar                                  on 1998/07/06  23:33:38
-        Log: From: Andy Dougherty 
-             Date: Mon, 6 Jul 1998 16:59:06 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.004_70] Update metaconfig info
-     Branch: perl
-           ! Porting/pumpkin.pod
-____________________________________________________________________________
-[  1352] By: gsar                                  on 1998/07/06  23:30:54
-        Log: From: Andy Dougherty 
-             Date: Mon, 6 Jul 1998 13:14:37 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.004_70] Config_70-01: Remove default "/share"
-     Branch: perl
-	   ! Configure INSTALL Policy_sh.SH Porting/Glossary
-           ! Porting/config.sh Porting/config_H
-____________________________________________________________________________
-[  1351] By: gsar                                  on 1998/07/06  23:24:47
-        Log: try harder to run non-executable tests
-     Branch: perl
-           ! t/TEST
-____________________________________________________________________________
-[  1350] By: gsar                                  on 1998/07/06  23:12:17
-        Log: add patch to improve method caching, regen headers
-             From: joshua.pritikin@db.com
-             Date: Mon, 6 Jul 1998 09:19:29 -0400
-             Message-Id: 
-             Subject: [PATCH _70] cache missing methods
-     Branch: perl
-           ! embedvar.h gv.c interp.sym intrpvar.h perlvars.h
-____________________________________________________________________________
-[  1349] By: TimBunce                              on 1998/07/06  23:03:16
-        Log: Assorted patches:
-             
-             ------  BUILD PROCESS  ------
-             
-             Title:  "Configure: Workaround bash CDPATH oddity"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  Configure
-             
-             Title:  "Don't suppress display of Makefile recipes that invoke perl"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199806252213.SAA08545@aatma.engin.umich.edu>
-             Files:  Makefile.SH
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "one more^Wless quad unpack bug"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199806301132.OAA27353@alpha.hut.fi>
-             Files:  pp.c
-             
-             Title:  "minor fixups to bring maint closer to devel for patching"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805200046.UAA19284@aatma.engin.umich.edu>
-             Files:  pod/perldiag.pod deb.c dump.c t/op/ref.t t/op/split.t taint.c util.c
-             
-             Title:  "-Pw switches used together report bogus error"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199806252331.TAA10160@aatma.engin.umich.edu>
-             Files:  perl.c
-             
-             Title:  "Add doc and perl home page info to -v output"
-             From:  Tom Christiansen 
-             Msg-ID:  <199802172229.PAA29309@jhereg.perl.com>
-             Files:  perl.c
-             
-             Title:  "Fix C<@a = (%a = 1)> bizarreness"
-             From:  Gurusamy Sarathy , Tom Christiansen
-             
-             Msg-ID:  <199807012026.OAA31507@jhereg.perl.com>,
-             <199807012339.TAA26024@aatma.engin.umich.edu>
-             Files:  pp_hot.c
-             
-             Title:  "make find_script() return saved string, reenable missing
-             diagnostics"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199806262224.SAA00422@aatma.engin.umich.edu>
-             Files:  perl.c util.c
-             
-             Title:  "minor e_script optimization"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807060704.DAA25988@aatma.engin.umich.edu>
-             Files:  perl.c
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "Insecure $ENV{} message out of step with perldiag"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perldiag.pod pod/perlsec.pod
-             
-             Title:  "documenting close without arguments"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod
-             
-             Title:  "pod for scalar .. op"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perlop.pod
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "Fcntl: add few constants, enhance maintainability"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199806221558.SAA18626@alpha.hut.fi>
-             Files:  ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
-             
-             ------  LIBRARY  ------
-             
-             Title:  "Fix undef warnings in Text::Parsewords"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199806300842.LAA26409@alpha.hut.fi>
-             Files:  lib/Text/ParseWords.pm
-             
-             Title:  "Add Symbol::delete_package()"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807060702.DAA25976@aatma.engin.umich.edu>
-             Files:  pod/perlembed.pod lib/Symbol.pm
-     Branch: maint-5.004/perl
-	   ! Configure Makefile.SH deb.c dump.c ext/Fcntl/Fcntl.pm
-	   ! ext/Fcntl/Fcntl.xs lib/Symbol.pm lib/Text/ParseWords.pm perl.c
-	   ! pod/perldiag.pod pod/perlembed.pod pod/perlfunc.pod
-	   ! pod/perlop.pod pod/perlsec.pod pp.c pp_hot.c t/op/ref.t
-           ! t/op/split.t taint.c util.c
-____________________________________________________________________________
-[  1348] By: gsar                                  on 1998/07/06  22:55:56
-        Log: remove #! line from Errno_pm.PL
-     Branch: perl
-           ! ext/Errno/Errno_pm.PL
-____________________________________________________________________________
-[  1347] By: gsar                                  on 1998/07/06  22:51:34
-        Log: added patch to fix Cwd.pm warnings, fixed a couple more places
-             From: Gisle Aas 
-             Date: 06 Jul 1998 13:08:53 +0200
-             Message-ID: 
-             Subject: [PATCH] 5.004_70 Cwd.pm now give warnings
-     Branch: perl
-           ! lib/Cwd.pm
-____________________________________________________________________________
-[  1346] By: gsar                                  on 1998/07/06  22:20:29
-        Log: much simpler fix to typecheck read/sysread/recv, as suggested by
-             Stephen McCamant
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[  1345] By: gsar                                  on 1998/07/06  21:58:52
-        Log: undo ck_sysread() changes#1319,1337 in preparation for a much
-             simpler fix
-     Branch: perl
-	   ! ObjXSub.h embed.h global.sym globals.c objpp.h op.c opcode.h
-           ! opcode.pl proto.h
-____________________________________________________________________________
-[  1344] By: TimBunce                              on 1998/07/06  21:51:05
-        Log: Title:  "Fix for broken goto &xsub"
-             From:  Albert Dvornik ,
-             Msg-ID:  
-             Files:  MANIFEST pp_ctl.c t/op/goto_xs.t
-     Branch: maint-5.004/perl
-           + t/op/goto_xs.t
-           ! MANIFEST pp_ctl.c
-____________________________________________________________________________
-[  1343] By: TimBunce                              on 1998/07/06  21:40:14
-        Log: Title:  "Undo sub stub optimization and add comments on GV_FOO constants"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199807050841.EAA25114@aatma.engin.umich.edu>
-             Files:  gv.h gv.c op.c toke.c
-     Branch: maint-5.004/perl
-           ! gv.c gv.h op.c toke.c
-____________________________________________________________________________
-[  1342] By: gsar                                  on 1998/07/06  20:57:06
-        Log: From:    Gisle Aas 
-             Message-Id: 
-             Date:    06 Jul 1998 21:52:12 +0200
-             Subject: Keepers of the Patch Pumpkin
-     Branch: perl
-           ! Changes
-____________________________________________________________________________
-[  1341] By: gsar                                  on 1998/07/06  20:43:35
-        Log: remove dup entry in perldiag
-     Branch: perl
-           ! pod/perldiag.pod
-____________________________________________________________________________
-[  1340] By: gsar                                  on 1998/07/06  20:31:44
-        Log: more reasonable diagnostic on keyword vs. sub ambiguity
-     Branch: perl
-           ! pod/perldiag.pod toke.c
-____________________________________________________________________________
-[  1339] By: gsar                                  on 1998/07/06  19:23:06
-        Log: rename s/\bSI_/PERLSI_/ to avoid collisions with sysinfo headers
-     Branch: perl
-	   ! av.c cop.h gv.c mg.c op.c perl.c pp_ctl.c pp_sys.c scope.c
-           ! sv.c toke.c util.c
-____________________________________________________________________________
-[  1338] By: gsar                                  on 1998/07/06  18:45:35
-        Log: per Larry suggestion, toss change#1327 and fix the documentation
-             to match behavior instead
-     Branch: perl
-           ! pod/perlfunc.pod pp_sys.c
-____________________________________________________________________________
-[  1337] By: gsar                                  on 1998/07/06  17:15:26
-        Log: allow read(FH,threadsv,...)
-     Branch: perl
-           ! op.c
-
-----------------
-Version 5.004_70
-----------------
-
-____________________________________________________________________________
-[  1336] By: gsar                                  on 1998/07/06  09:06:33
-        Log: 5.004_70 tweaks
-     Branch: perl
-           ! Changes win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1335] By: gsar                                  on 1998/07/06  07:05:37
-        Log: update Changes
-     Branch: perl
-           ! Changes pod/perldiag.pod
-____________________________________________________________________________
-[  1334] By: gsar                                  on 1998/07/06  06:41:17
-        Log: allow eval-groups in patterns only if they C
-     Branch: perl
-	   ! lib/re.pm perl.h pod/perldiag.pod pod/perlre.pod regcomp.c
-           ! t/op/misc.t t/op/pat.t t/op/regexp.t t/op/subst.t
-____________________________________________________________________________
-[  1333] By: gsar                                  on 1998/07/06  03:22:52
-        Log: From: Hans Mulder 
-             Date: Mon,  6 Jul 98 02:11:32 +0200
-             Message-Id: <9807060021.AA29027@icgned.icgroup.nl>
-             Subject: [PATCH 5.00469] corrupt malloc ptr on NeXT
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[  1332] By: gsar                                  on 1998/07/06  03:18:34
-        Log: added Errno-1.09 from CPAN
-     Branch: perl
-           ! ext/Errno/ChangeLog ext/Errno/Errno_pm.PL
-____________________________________________________________________________
-[  1331] By: gsar                                  on 1998/07/06  02:59:09
-        Log: fix small memleak on -e, don't try to find_script() when e_script
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[  1330] By: gsar                                  on 1998/07/06  00:40:24
-        Log: add Symbol::delete_package()
-     Branch: perl
-           ! lib/Symbol.pm pod/perlembed.pod
-____________________________________________________________________________
-[  1329] By: gsar                                  on 1998/07/05  23:05:40
-        Log: patch to remove assumptions about offset of IV being == sizeof(XPV)
-             From: Stephen McCamant 
-             Date: Sun,  5 Jul 1998 17:36:14 -0500 (CDT)
-             Message-ID: <13727.63831.95324.696098@alias-2.pr.mcs.net>
-             Subject: [PATCH] alignment in X[IN]V allocation
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1328] By: gsar                                  on 1998/07/05  22:47:57
-        Log: make read() return undef on errors as documented, and clarify docs
-     Branch: perl
-           ! pod/perlfunc.pod pp_sys.c
-____________________________________________________________________________
-[  1327] By: gsar                                  on 1998/07/05  22:11:21
-        Log: fix getc() to return empty string instead of undef on eof, as it was
-             documented to behave; still returns undef on error
-     Branch: perl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1326] By: gsar                                  on 1998/07/05  21:53:30
-        Log: patch whitespace-mutiliated; applied manually
-             From: Hans Mulder 
-             Date: Sun,  5 Jul 98 23:23:20 +0200
-             Message-Id: <9807052133.AA28626@icgned.icgroup.nl>
-             Subject: [PATCH 5.004_69] building Errno.pm still fails on NeXT
-     Branch: perl
-           ! ext/Errno/Errno_pm.PL
-____________________________________________________________________________
-[  1325] By: gsar                                  on 1998/07/05  21:38:39
-        Log: applied patch (via private mail), modulo retrohunks in pod/perlfaq2.pod
-             From: Tom Christiansen 
-             Date: Sun, 05 Jul 1998 09:15:22 -0500
-             Subject: Re: docpatch 
-             Message-Id: <199807051515.JAA03644@jhereg.perl.com>
-     Branch: perl
-	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
-	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
-	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
-	   ! pod/perlfaq9.pod pod/perlfunc.pod pod/perlipc.pod
-           ! pod/perlrun.pod
-____________________________________________________________________________
-[  1324] By: gsar                                  on 1998/07/05  21:06:56
-        Log: applied patch, and undid change#1302 which it made unnecessary
-             From: Billy 
-             Date: Sun, 5 Jul 1998 23:05:52 +0930 (CST)
-             Subject: [PATCH] utils/h2ph.PL and t/lib/h2ph.t
-             Message-ID: 
-     Branch: perl
-           ! t/lib/h2ph.t utils/h2ph.PL
-____________________________________________________________________________
-[  1323] By: gsar                                  on 1998/07/05  20:56:39
-        Log: fix t/lib/fields.t's @INC so make test runs
-     Branch: perl
-           ! t/lib/fields.t
-____________________________________________________________________________
-[  1322] By: gsar                                  on 1998/07/05  20:26:43
-        Log: add comments on GV_FOO constants, s/8/GV_ADDINEVAL/
-     Branch: perl
-           ! gv.c gv.h toke.c
-____________________________________________________________________________
-[  1321] By: gsar                                  on 1998/07/05  07:41:50
-        Log: sundry win32 config tweaks
-     Branch: perl
-	   ! Todo.5.005 t/op/stat.t win32/Makefile win32/config.bc
-	   ! win32/config.gc win32/config.vc win32/config_H.bc
-	   ! win32/config_H.gc win32/config_H.vc win32/config_h.PL
-           ! win32/config_sh.PL win32/makefile.mk
-____________________________________________________________________________
-[  1320] By: gsar                                  on 1998/07/05  06:30:35
-        Log: update Changes
-     Branch: perl
-           ! Changes
-____________________________________________________________________________
-[  1319] By: gsar                                  on 1998/07/05  06:27:37
-        Log: add ck_sysread() for better sysread/read/recv sanity
-     Branch: perl
-	   ! ObjXSub.h embed.h global.sym globals.c objpp.h op.c opcode.h
-           ! opcode.pl proto.h
-____________________________________________________________________________
-[  1318] By: gsar                                  on 1998/07/05  04:34:05
-        Log: From: Stephen McCamant 
-             Date: Sat,  4 Jul 1998 23:24:47 -0500 (CDT)
-             Subject: [PATCH] Document B::Deparse, add pp_threadsv
-             Message-ID: <13726.65230.19324.216849@alias-2.pr.mcs.net>
-     Branch: perl
-           ! ext/B/B/Deparse.pm
-____________________________________________________________________________
-[  1317] By: gsar                                  on 1998/07/05  04:15:25
-        Log: added patch with tweak to doc
-             From: Chip Salzenberg 
-             Message-ID: <19980704205136.A16319@perlsupport.com>
-             Date: Sat, 4 Jul 1998 20:51:36 -0400
-             Subject: [PATCH _69] Take 2: Warn on C
-     Branch: perl
-           ! ext/IO/lib/IO/Handle.pm pod/perldiag.pod toke.c
-____________________________________________________________________________
-[  1316] By: gsar                                  on 1998/07/05  03:56:22
-        Log: Porting/Glossary goes podly into Config.pm
-     Branch: perl
-           ! Porting/Glossary configpm
-____________________________________________________________________________
-[  1315] By: gsar                                  on 1998/07/05  02:50:18
-        Log: add suggested tool as an example in ExtUtils::Packlist
-             From: Alan Burlison 
-             Message-Id: <199807031028.LAA10456@sale-wts>
-             Date: Fri, 3 Jul 1998 11:28:03 +0100 (BST)
-             Subject: Re: [make install] another horror story
-     Branch: perl
-           ! lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
-____________________________________________________________________________
-[  1314] By: gsar                                  on 1998/07/05  02:28:04
-        Log: avoid race condition (storing ptr to SV before incrementing its
-             REFCNT) and warning in newRV()
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1313] By: gsar                                  on 1998/07/05  02:06:40
-        Log: applied suggested fix for xhv_array sizing, with portability tweaks
-             From: Gisle Aas 
-             Subject: Re: [PATCH] Re: perl5.004_69 core dump
-             Date: 04 Jul 1998 10:20:35 +0200
-             Message-ID: 
-     Branch: perl
-           ! hv.c
-____________________________________________________________________________
-[  1312] By: gsar                                  on 1998/07/05  01:36:45
-        Log: From: Gisle Aas 
-             Subject: [PATCH] hv_max may be a few too many
-             Date: 04 Jul 1998 09:28:46 +0200
-             Message-ID: 
-     Branch: perl
-           ! doop.c
-____________________________________________________________________________
-[  1311] By: gsar                                  on 1998/07/05  00:35:27
-        Log: patchlevel up to 5.004_70, various tweaks
-             * fix taint problems due to maintbranch regression
-             * PERL_OBJECT now builds again
-             * deal with C++ strong-typing problems in hv.c
-             * fix mismatch in "reserved word" diagnostic
-     Branch: perl
-	   ! av.c hv.c objpp.h patchlevel.h pp_ctl.c pp_hot.c proto.h
-           ! regexec.c regexp.h toke.c win32/perlhost.h win32/win32.c
-____________________________________________________________________________
-[  1310] By: TimBunce                              on 1998/07/04  11:35:25
-        Log: Remove old RE //t flag from scan_subst().
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[  1309] By: gsar                                  on 1998/07/04  08:32:53
-        Log: various small tweaks (still fails a few taint tests in {taint,locale}.t)
-     Branch: perl
-           ! Todo.5.005 lib/re.pm sv.c t/lib/fields.t
-____________________________________________________________________________
-[  1307] By: gsar                                  on 1998/07/04  07:00:14
-        Log: fix C, add tests
-     Branch: perl
-           ! pp_hot.c t/op/local.t
-____________________________________________________________________________
-[  1306] By: gsar                                  on 1998/07/04  05:52:34
-        Log: fixes for mortalization bug in xsubpp, other efficiency tweaks
-             From: joshua.pritikin@db.com
-             Date: Wed, 1 Jul 1998 10:09:43 -0400
-             Message-Id: 
-             Subject: [PATCH _69] sv_2mortal fix
-     Branch: perl
-           ! lib/ExtUtils/xsubpp perl.c pp.c pp_hot.c proto.h sv.c sv.h
-____________________________________________________________________________
-[  1305] By: gsar                                  on 1998/07/04  05:46:42
-        Log: add patch preextend global string table, tweak for 512 entries
-             From: Gisle Aas 
-             Date: 04 Jul 1998 01:04:08 +0200
-             Subject: Re: [PATCH] Re: perl5.004_69 core dump
-             Message-ID: 
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[  1304] By: gsar                                  on 1998/07/04  05:40:35
-        Log: simplify xhv_array sizing
-             From: Gisle Aas 
-             Date: 04 Jul 1998 00:49:42 +0200
-             Subject: Re: [PATCH] Re: perl5.004_69 core dump
-             Message-ID: 
-     Branch: perl
-           ! hv.c
-____________________________________________________________________________
-[  1303] By: gsar                                  on 1998/07/04  05:37:29
-        Log: make 4-arg win32_select() sleep more reasonably on false values
-             From: Blair Zajac 
-             Message-Id: <199807020225.TAA18740@gobi.gps.caltech.edu>
-             Date: Wed, 1 Jul 1998 19:25:56 -0700 (PDT)
-             Subject: [PATCH 5.004_69] select dumps core on MSWin32-x86
-             --
-             Message-Id: <199807030107.SAA08595@gobi.gps.caltech.edu>
-             Date: Thu, 2 Jul 1998 18:07:19 -0700 (PDT)
-             Subject: [PATCH 5.004_69] select dumps core on MSWin32-x86
-     Branch: perl
-           ! win32/win32sck.c
-____________________________________________________________________________
-[  1302] By: gsar                                  on 1998/07/04  05:32:50
-        Log: adjust h2ph.t for dos-specific problem
-             From: Laszlo Molnar 
-             Message-ID: <19980703234525.C208@cdata.tvnet.hu>
-             Date: Fri, 3 Jul 1998 23:45:25 +0200
-             Subject: Re: [PATCH _68] t/lib/h2ph.t problem
-     Branch: perl
-           ! t/lib/h2ph.t
-____________________________________________________________________________
-[  1301] By: gsar                                  on 1998/07/04  05:31:04
-        Log: fix CPAN.pm problem, OS2 tweaks
-             From: Ilya Zakharevich 
-             Message-Id: <199807030459.AAA00097@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_68] PAtch to CPAN first-time
-             Date: Fri, 3 Jul 1998 00:59:35 -0400 (EDT)
-     Branch: perl
-	   ! lib/CPAN/FirstTime.pm lib/ExtUtils/MM_OS2.pm
-           ! lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[  1300] By: gsar                                  on 1998/07/04  05:27:20
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199807030102.VAA26813@monk.mps.ohio-state.edu>
-             Date: Thu, 2 Jul 1998 21:02:59 -0400 (EDT)
-             Subject: [PATCH 5.004_68] Add elc target to to makefile
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1299] By: gsar                                  on 1998/07/04  05:25:56
-        Log: newer emacs/cperl-mode.el (via private mail)
-             From: Ilya Zakharevich 
-             Message-Id: <199807030104.VAA26825@monk.mps.ohio-state.edu>
-             Date: Thu, 2 Jul 1998 21:04:29 -0400 (EDT)
-             Subject: [PATCH 5.004_68] cperl-mode
-     Branch: perl
-           ! emacs/cperl-mode.el
-____________________________________________________________________________
-[  1298] By: gsar                                  on 1998/07/04  05:22:41
-        Log: From: Dominic Dunlop 
-             Message-Id: 
-             Date: Thu, 2 Jul 1998 22:57:26 +0000
-             Subject: [PATCH 5.004_69] Make Power MachTen use vfork and perl's malloc
-     Branch: perl
-           ! hints/machten.sh malloc.c
-____________________________________________________________________________
-[  1297] By: gsar                                  on 1998/07/04  05:20:52
-        Log: allow a flags args to fbm_instr() for future needs
-             From: Ilya Zakharevich 
-             Message-Id: <199807020749.DAA12379@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_68] mORE FBM_ CHANGES FOR FUTURE
-             Date: Thu, 2 Jul 1998 03:49:32 -0400 (EDT)
-     Branch: perl
-           ! pod/perlguts.pod pp.c pp_hot.c proto.h regexec.c util.c
-____________________________________________________________________________
-[  1296] By: gsar                                  on 1998/07/04  05:16:15
-        Log: From: Andy Dougherty 
-             Date: Thu, 2 Jul 1998 11:50:41 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.004_69] INSTALL-1.39
-     Branch: perl
-           ! INSTALL
-____________________________________________________________________________
-[  1295] By: gsar                                  on 1998/07/04  05:15:05
-        Log: Configure update
-             From: doughera@newton.phys.lafayette.edu (Andy Dougherty)
-             Date: Wed, 1 Jul 98 23:07:50 EDT
-             Message-Id: <9807020307.AA17848@newton.phys.lafayette.edu>
-             Subject: [PATCH 5.004_69] Config_69-01
-     Branch: perl
-	   ! Configure INSTALL MANIFEST Policy_sh.SH Porting/Glossary
-	   ! Porting/config.sh Porting/config_H Porting/pumpkin.pod
-           ! config_h.SH win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1294] By: gsar                                  on 1998/07/04  05:10:25
-        Log: add perlbug -F switch to save message to file
-             From: Hugo van der Sanden 
-             Message-Id: 
-             Date: Wed, 1 Jul 1998 21:14:22 +0200
-             Subject: Re: [PATCH 5.004_69] perlbug -fok
-     Branch: perl
-           ! Makefile.SH utils/perlbug.PL
-____________________________________________________________________________
-[  1293] By: gsar                                  on 1998/07/04  05:06:52
-        Log: catch nonexistent backrefs in REs
-             From: Hugo van der Sanden 
-             Message-Id: 
-             Date: Wed, 1 Jul 1998 20:14:05 +0200
-             Subject: Re: [PATCH _66] for bad backrefs
-             --
-             Message-Id: 
-             Date: Wed, 1 Jul 1998 20:47:16 +0200
-             Subject: Re: [PATCH _66] for bad backrefs
-     Branch: perl
-           ! regcomp.c t/op/re_tests util.c
-____________________________________________________________________________
-[  1292] By: gsar                                  on 1998/07/04  05:02:01
-        Log: fix perlcc to not rm output file, and other -w(arts)
-     Branch: perl
-           ! utils/perlcc.PL
-____________________________________________________________________________
-[  1291] By: gsar                                  on 1998/07/04  04:30:03
-        Log: ignore stash entries that are not GVs in dump.c
-     Branch: perl
-           ! dump.c
-____________________________________________________________________________
-[  1290] By: gsar                                  on 1998/07/04  03:55:10
-        Log: cleaner page headers from pod2man
-     Branch: perl
-           ! pod/pod2man.PL
-____________________________________________________________________________
-[  1288] By: gsar                                  on 1998/07/04  03:16:39
-        Log: tweaks to Getopt::Std
-             From: Robin Barker 
-             Date: Tue, 30 Jun 98 14:45:49 BST
-             Message-Id: <14103.9806301345@tempest.cise.npl.co.uk>
-             Subject: [PATCH perl5.004_69] lib/Getopt/Std.pm
-             --
-             Message-Id: <17918.9807021053@tempest.cise.npl.co.uk>
-             To: perl5-porters@perl.org
-             Subject: [PATCH perl5.004_69] second: lib/Getopt/Std.pm
-     Branch: perl
-           ! lib/Getopt/Std.pm
-____________________________________________________________________________
-[  1287] By: gsar                                  on 1998/07/04  03:13:02
-        Log: added patch, with tweaks
-             From: Gisle Aas 
-             Date: 03 Jul 1998 00:50:15 +0200
-             Message-ID: 
-             Subject: [PATCH] Some AVHV documentation
-     Branch: perl
-           ! pod/perlref.pod
-____________________________________________________________________________
-[  1286] By: gsar                                  on 1998/07/04  02:53:26
-        Log: applied patch with tweaks to prose
-             From: Gisle Aas 
-             Subject: [PATCH] Simplified AVHV support
-             Date: 30 Jun 1998 13:34:07 +0200
-             Message-ID: 
-     Branch: perl
-	   ! ObjXSub.h av.c embed.h global.sym objpp.h pod/perldiag.pod
-           ! pp.c proto.h t/op/avhv.t
-____________________________________________________________________________
-[  1285] By: gsar                                  on 1998/07/04  02:30:48
-        Log: tweak doc for ".."
-             From: "M.J.T. Guy" 
-             Subject: [PATCH] pod for scalar ..
-             Message-Id: 
-             Date: Tue, 30 Jun 1998 12:14:50 +0100
-     Branch: perl
-           ! pod/perlop.pod
-____________________________________________________________________________
-[  1284] By: gsar                                  on 1998/07/04  02:28:43
-        Log: fix use of uninitialized var in pp_unpack()
-             From: Jarkko Hietaniemi 
-             Date: Tue, 30 Jun 1998 14:32:17 +0300 (EET DST)
-             Message-Id: <199806301132.OAA27353@alpha.hut.fi>
-             Subject: [PATCH] 5.004_69 (also for 5.004_04) one more^Wless quad bug
-     Branch: perl
-           ! pp.c
-____________________________________________________________________________
-[  1283] By: gsar                                  on 1998/07/04  02:26:37
-        Log: From: Jarkko Hietaniemi 
-             Date: Tue, 30 Jun 1998 11:40:22 +0300 (EET DST)
-             Message-Id: <199806300840.LAA04872@alpha.hut.fi>
-             Subject: [PATCH] 5.004_69: Parsewords.pm: avoid undefined warnings
-     Branch: perl
-           ! lib/Text/ParseWords.pm
-____________________________________________________________________________
-[  1282] By: gsar                                  on 1998/07/04  02:24:32
-        Log: VMS updates from Dan Sugalski 
-             Message-Id: <3.0.5.32.19980629165356.00a20730@ous.edu>
-             Date: Mon, 29 Jun 1998 16:53:56 -0700
-             Subject: [PATCH 5.004_69]README.vms doc patch
-             --
-             Message-Id: <3.0.5.32.19980629165125.00a4e100@ous.edu>
-             Date: Mon, 29 Jun 1998 16:51:25 -0700
-             --
-             Message-Id: <3.0.5.32.19980702135357.00a5eb40@ous.edu>
-             Date: Thu, 02 Jul 1998 13:53:57 -0700
-             Subject: [PATCH 5.004_69]VMS filetest operator fixup
-     Branch: perl
-           ! README.vms vms/descrip_mms.template vms/vms.c
-____________________________________________________________________________
-[  1281] By: gsar                                  on 1998/07/04  02:17:48
-        Log: From: Dan Sugalski 
-             Message-Id: <3.0.5.32.19980629164625.00a4d7c0@ous.edu>
-             Date: Mon, 29 Jun 1998 16:46:25 -0700
-             Subject: [PATCH 5.004_69]Tweaks to VMS configuration procedure
-     Branch: perl
-           ! vms/subconfigure.com
-____________________________________________________________________________
-[  1280] By: gsar                                  on 1998/07/04  02:16:03
-        Log: don't attempt to copy directories on VMS
-             From: Dan Sugalski 
-             Message-Id: <3.0.5.32.19980629163129.00a82140@ous.edu>
-             Date: Mon, 29 Jun 1998 16:31:29 -0700
-             Subject: [PATCH 5.004_69]Tweak to installperl
-     Branch: perl
-           ! installperl
-____________________________________________________________________________
-[  1279] By: gsar                                  on 1998/07/04  02:09:26
-        Log: add 'installhtml*dir' to win32 config templates
-             From: "Douglas Lankshear" 
-             Subject: [PATCH 5.004_68] For Win32 config
-             Date: Mon, 29 Jun 1998 09:00:13 -0700
-             Message-ID: <000a01bda376$ffe8b0b0$a32fa8c0@tau.Active>
-     Branch: perl
-           ! win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1278] By: gsar                                  on 1998/07/04  02:06:23
-        Log: implemented described fix for h2ph hanging on "enum"
-             From: Billy 
-             Subject: Re: h2ph problem on Solaris 2.6/SPARC/Sun compiler
-             Message-ID: 
-             Date: Sat, 27 Jun 1998 01:13:12 +0930 (CST)
-     Branch: perl
-           ! utils/h2ph.PL
-____________________________________________________________________________
-[  1277] By: gsar                                  on 1998/07/04  01:51:47
-        Log: merge changes#1210,1211,1270 from maintbranch
-     Branch: perl
-           + lib/re.pm
-	   ! MANIFEST dump.c installperl lib/File/Basename.pm mg.c op.c
-	   ! op.h perl.h pod/perlmodlib.pod pod/perlop.pod pp_ctl.c
-           ! pp_hot.c t/lib/basename.t t/op/taint.t toke.c
-____________________________________________________________________________
-[  1276] By: gsar                                  on 1998/07/04  00:33:37
-        Log: deprecate use of reserved word "our" (Larry's idea)
-             Date: Mon, 22 Jun 1998 08:55:09 -0700
-             From: larry@wall.org (Larry Wall)
-             Message-Id: <199806221555.IAA07212@wall.org>
-             Subject: Re: our
-     Branch: perl
-           ! pod/perldiag.pod toke.c
-____________________________________________________________________________
-[  1275] By: nick                                  on 1998/07/02  18:36:59
-        Log: Integrate mainline, just to keep up.
-     Branch: ansiperl
-          +> t/lib/fields.t
-           - lib/Math/Trig/Radial.pm
-	  !> MANIFEST lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
-	  !> lib/Math/Trig.pm lib/base.pm lib/fields.pm mg.c
-	  !> pod/perldiag.pod pod/perltrap.pod pp_hot.c scope.c scope.h
-	  !> t/lib/trig.t t/op/array.t toke.c utils/perldoc.PL
-	  !> win32/config.bc win32/config.gc win32/config.vc
-	  !> win32/include/dirent.h win32/makedef.pl win32/win32.c
-          !> win32/win32iop.h
-____________________________________________________________________________
-[  1274] By: gsar                                  on 1998/07/02  16:47:20
-        Log: tweak win32/config.* variables
-     Branch: perl
-           ! win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1273] By: gsar                                  on 1998/07/02  16:33:53
-        Log: export opendir() set of functions on win32
-     Branch: perl
-	   ! win32/include/dirent.h win32/makedef.pl win32/win32.c
-           ! win32/win32iop.h
-____________________________________________________________________________
-[  1272] By: gsar                                  on 1998/07/01  23:21:49
-        Log: fix C<@a = (%a = 1)> bizarreness
-     Branch: perl
-           ! pp_hot.c
-____________________________________________________________________________
-[  1271] By: gsar                                  on 1998/06/30  22:49:39
-        Log: document perltrap on precedence of keys/values/each
-     Branch: perl
-           ! pod/perltrap.pod
-____________________________________________________________________________
-[  1270] By: TimBunce                              on 1998/06/30  09:06:21
-        Log: Added lib/re.pm missing from change 1210
-     Branch: maint-5.004/perl
-           + lib/re.pm
-____________________________________________________________________________
-[  1269] By: gsar                                  on 1998/06/30  08:20:52
-        Log: From:    Murray Nesbitt 
-             Message-Id: <77180549BCE.AAA466A@mail.rdc1.bc.wave.home.com>
-             Date:    Mon, 29 Jun 1998 14:30:59 PDT
-             Subject: Re: [PATCH 5.004_67] MakeMaker mods for PPD support 
-     Branch: perl
-           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[  1268] By: gsar                                  on 1998/06/30  05:38:34
-        Log: From:    Robin Barker 
-             Message-Id: <13254.9806291404@tempest.cise.npl.co.uk>
-             Date:    Mon, 29 Jun 1998 15:04:57 -0000
-             Subject: [PATCH perl5.004_69] perldoc.PL
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[  1267] By: gsar                                  on 1998/06/30  05:34:06
-        Log: add patch to integrate Math::Trig::Radial into Math::Trig
-             From: Jarkko Hietaniemi 
-             Date: Mon, 29 Jun 1998 16:28:53 +0300 (EET DST)
-             Message-Id: <199806291328.QAA16916@alpha.hut.fi>
-             Subject: [PATCH] 5.004_68 (or 5.004_04): radial trig
-     Branch: perl
-           - lib/Math/Trig/Radial.pm
-           ! MANIFEST lib/Math/Trig.pm t/lib/trig.t
-____________________________________________________________________________
-[  1266] By: gsar                                  on 1998/06/30  05:17:33
-        Log: From:    Gisle Aas 
-             Message-Id: 
-             Date:    29 Jun 1998 12:36:09 +0200
-             Subject: Re: [PATCH] Simplified magic_setisa() and improved fields.pm
-     Branch: perl
-           + t/lib/fields.t
-	   ! MANIFEST lib/base.pm lib/fields.pm mg.c pod/perldiag.pod
-           ! t/op/array.t
-____________________________________________________________________________
-[  1265] By: gsar                                  on 1998/06/30  05:12:57
-        Log: tweaks to overloaded constants (change#1259)
-     Branch: perl
-           ! scope.c scope.h toke.c
-____________________________________________________________________________
-[  1264] By: nick                                  on 1998/06/29  17:38:03
-        Log: Integrate mainline c. _69 to ansiperl
-     Branch: ansiperl
-	  +> eg/cgi/caution.xbm eg/cgi/dna.small.gif.uu
-	  +> eg/cgi/nph-multipart.cgi ext/Errno/ChangeLog
-	  +> ext/Errno/Errno_pm.PL ext/Errno/Makefile.PL lib/CGI/Cookie.pm
-	  +> lib/Math/Trig/Radial.pm perlio.h t/lib/cgi-form.t
-	  +> t/lib/cgi-function.t t/lib/cgi-html.t t/lib/cgi-request.t
-          +> t/lib/errno.t t/op/goto_xs.t t/op/splice.t
-          !> (integrate 100 files)
-
-----------------
-Version 5.004_69
-----------------
-
-____________________________________________________________________________
-[  1263] By: gsar                                  on 1998/06/29  09:17:28
-        Log: update Changes and perlhist.pod
-     Branch: perl
-           ! Changes pod/perlhist.pod
-____________________________________________________________________________
-[  1262] By: gsar                                  on 1998/06/29  08:26:36
-        Log: bump patchlevel to 69, various little tweaks (tested on win32, Solaris
-             under several build configurations)
-     Branch: perl
-	   ! Todo.5.005 op.c patchlevel.h t/lib/cgi-function.t
-	   ! t/lib/cgi-request.t toke.c win32/Makefile win32/config_H.bc
-           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[  1261] By: gsar                                  on 1998/06/29  06:51:10
-        Log: add missing SSCHECK() to rectify faulty SSPUSH*() logic in change#1259
-     Branch: perl
-           ! scope.h
-____________________________________________________________________________
-[  1260] By: gsar                                  on 1998/06/29  06:46:12
-        Log: Message-Id: <199806290610.IAA19443@moulon.inra.fr>
-             Date:    Mon, 29 Jun 1998 08:10:46 +0200
-             From:    ts 
-             Subject: {perlembed.pod] Re: Memory leak in Perl 5.004 and the fix
-     Branch: perl
-           ! pod/perlembed.pod
-____________________________________________________________________________
-[  1259] By: gsar                                  on 1998/06/29  06:01:35
-        Log: added patch for overloading constants, made PERL_OBJECT-aware
-             From: Ilya Zakharevich 
-             Message-Id: <199806270328.XAA21088@monk.mps.ohio-state.edu>
-             Date: Fri, 26 Jun 1998 23:28:41 -0400 (EDT)
-     Branch: perl
-	   ! ObjXSub.h embed.h embedvar.h global.sym hv.c interp.sym
-	   ! intrpvar.h lib/Math/BigInt.pm lib/overload.pm objpp.h op.c
-	   ! perl.c perl.h pp_ctl.c proto.h scope.c scope.h
-           ! t/pragma/overload.t toke.c
-____________________________________________________________________________
-[  1258] By: gsar                                  on 1998/06/29  05:32:25
-        Log: fix Socket.pm typo from change#1240
-     Branch: perl
-           ! ext/Socket/Socket.pm
-____________________________________________________________________________
-[  1257] By: gsar                                  on 1998/06/29  05:09:24
-        Log: applied patch, tweak for threads awareness
-             From: Albert Dvornik 
-             Subject: [PATCH]5.004_04-m4 (CORE) fix for broken "goto &xsub"
-             Date: 24 Jun 1998 19:33:09 -0400
-             Message-Id: 
-     Branch: perl
-           + t/op/goto_xs.t
-           ! MANIFEST pp_ctl.c
-____________________________________________________________________________
-[  1256] By: gsar                                  on 1998/06/29  03:34:18
-        Log: applied patch, fixed one more leak, tweaked whitespace bugs
-             From: Guy Decoux 
-             (via)
-             Date: Fri, 26 Jun 1998 09:59:32 -0400
-             From: "Chunhui Teng" 
-             Message-Id: <199806261359.JAA02393@bmers357.nortel.ca>
-             Subject: Memory leak in Perl 5.004 and the fix
-     Branch: perl
-           ! ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
-____________________________________________________________________________
-[  1255] By: gsar                                  on 1998/06/29  02:50:37
-        Log: From: koenig@kulturbox.de (Andreas J. Koenig)
-             Subject: Permissions in MakeMaker (Was: patch to MM_Unix.pm)
-             Date: 28 Jun 1998 23:47:07 +0200
-             Message-ID: 
-     Branch: perl
-           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[  1254] By: gsar                                  on 1998/06/28  21:35:02
-        Log: From: joshua.pritikin@db.com
-             Date: Fri, 26 Jun 1998 09:34:34 -0400
-             Message-Id: 
-             Subject: [PATCH _68] PUSHSTACK renovation
-     Branch: perl
-           ! av.c cop.h gv.c mg.c perl.c pp_ctl.c pp_sys.c sv.c util.c
-____________________________________________________________________________
-[  1253] By: gsar                                  on 1998/06/28  21:21:22
-        Log: From: Stephen McCamant 
-             Message-Id: 
-             Date: Sat, 27 Jun 1998 16:38:19 -0500 (CDT)
-             Subject: IV changes for long long (was Re: 5.004_68 on its way to the CPAN)
-     Branch: perl
-           ! perlvars.h sv.c
-____________________________________________________________________________
-[  1252] By: gsar                                  on 1998/06/28  21:16:34
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806272359.TAA05436@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_68] Improve warning on zero-length chunks in RE
-             Date: Sat, 27 Jun 1998 19:59:13 -0400 (EDT)
-     Branch: perl
-           ! regcomp.c
-____________________________________________________________________________
-[  1251] By: gsar                                  on 1998/06/28  21:14:32
-        Log: add Math/Trig/Radial.pm, update MANIFEST
-             From: Jarkko Hietaniemi 
-             Date: Sat, 27 Jun 1998 17:28:14 +0300 (EET DST)
-             Message-Id: <199806271428.RAA05307@alpha.hut.fi>
-             Subject: Math::Trig::Radial ?
-     Branch: perl
-           + lib/Math/Trig/Radial.pm
-           ! MANIFEST
-____________________________________________________________________________
-[  1250] By: gsar                                  on 1998/06/28  21:09:48
-        Log: applied patch, tweaked doc, and regen regnodes.h
-             From: Ilya Zakharevich 
-             Message-Id: <199806270655.CAA29144@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_68] \z in RE
-             Date: Sat, 27 Jun 1998 02:55:26 -0400 (EDT)
-     Branch: perl
-	   ! pod/perlre.pod regcomp.c regcomp.sym regexec.c regnodes.h
-           ! t/op/re_tests t/op/regexp.t toke.c
-____________________________________________________________________________
-[  1249] By: gsar                                  on 1998/06/28  20:56:38
-        Log: From: mike@bill.iac.net
-             Message-ID: <19980627034913.A32220@bill.minivend.com>
-             Date: Sat, 27 Jun 1998 03:49:13 +0000
-             Subject: [ PATCH 5.004 68 ] Text::ParseWords, ^W fixed, version 3.1
-     Branch: perl
-           ! lib/Text/ParseWords.pm t/lib/parsewords.t
-____________________________________________________________________________
-[  1248] By: gsar                                  on 1998/06/28  20:54:43
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806270352.XAA21174@monk.mps.ohio-state.edu>
-             Subject: [PATCH] Fix ptags
-             Date: Fri, 26 Jun 1998 23:52:54 -0400 (EDT)
-     Branch: perl
-           ! emacs/ptags
-____________________________________________________________________________
-[  1247] By: gsar                                  on 1998/06/28  20:42:54
-        Log: apply patch sent via private mail
-             From: Stephen McCamant 
-             Message-Id: 
-             Date: Fri, 26 Jun 1998 21:32:23 -0500 (CDT)
-             Subject: Re: Enhanced B::Deparse 
-     Branch: perl
-           ! ext/B/B/Deparse.pm
-____________________________________________________________________________
-[  1246] By: gsar                                  on 1998/06/28  20:38:24
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806270109.VAA14907@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_68] pat.t tests
-             Date: Fri, 26 Jun 1998 21:09:02 -0400 (EDT)
-     Branch: perl
-           ! t/op/pat.t
-____________________________________________________________________________
-[  1245] By: gsar                                  on 1998/06/28  20:36:08
-        Log: From: joshua.pritikin@db.com
-             Date: Fri, 26 Jun 1998 10:02:32 -0400
-             Message-Id: 
-             Subject: [PATCH _68] improve recursive error messages!
-     Branch: perl
-           ! gv.c pod/perldiag.pod universal.c
-____________________________________________________________________________
-[  1244] By: gsar                                  on 1998/06/28  20:09:02
-        Log: From: Dominic Dunlop 
-             Message-Id: 
-             Date: Thu, 25 Jun 1998 17:46:55 +0000
-             Subject: [PATCH 5.004_68]: Move REG_INFTY-dependent tests from op/regexp.t
-             to op/pat.t; add tests for a few  more regexp parse failures etc.
-     Branch: perl
-           ! t/op/pat.t t/op/re_tests t/op/regexp.t
-____________________________________________________________________________
-[  1243] By: gsar                                  on 1998/06/28  20:06:30
-        Log: specify *.sym files needed in perl_exp.SH instead of picking up all
-             From: Andy Dougherty 
-             Date: Thu, 25 Jun 1998 10:36:21 -0400 (EDT)
-             Subject: Re: Not OK: perl 5.00468 on aix-thread 4.1.4.0
-             Message-Id: 
-     Branch: perl
-           ! perl_exp.SH
-____________________________________________________________________________
-[  1242] By: gsar                                  on 1998/06/28  20:01:28
-        Log: 
-             From: Gisle Aas 
-             Subject: Re: [PATCH] 4-arg substr update for perl5.004_68
-             Date: 25 Jun 1998 10:32:43 +0200
-             Message-ID: 
-     Branch: perl
-           ! op.c pod/perlfunc.pod pp.c t/op/substr.t
-____________________________________________________________________________
-[  1241] By: gsar                                  on 1998/06/28  19:55:11
-        Log: applied patch, tweaked opcode.pl for PERL_OBJECT, and regen opcode.h
-             From: Stephen McCamant 
-             Message-Id: 
-             Date: Wed, 24 Jun 1998 21:10:32 -0500 (CDT)
-             Subject: [PATCH REPOST] refgen in opcode.pl
-     Branch: perl
-           ! opcode.h opcode.pl
-____________________________________________________________________________
-[  1240] By: gsar                                  on 1998/06/28  19:46:29
-        Log: From: Chris Nandor 
-             Message-Id: 
-             Date: Wed, 24 Jun 1998 19:58:28 -0400
-             Subject: [PATCH 3d try] Add CR LF CRLF to Socket.pm
-     Branch: perl
-           ! ext/Socket/Socket.pm
-____________________________________________________________________________
-[  1239] By: gsar                                  on 1998/06/28  19:44:19
-        Log: From: Gisle Aas 
-             Subject: [PATCH] Optimize foreach (1..1000000)
-             Date: 24 Jun 1998 20:26:48 +0200
-             Message-ID: 
-     Branch: perl
-	   ! Todo cop.h op.c pod/perldiag.pod pod/perlop.pod pp_ctl.c
-           ! pp_hot.c t/op/range.t
-____________________________________________________________________________
-[  1238] By: gsar                                  on 1998/06/28  19:28:13
-        Log: avoid creation of %^R
-             From: Ilya Zakharevich 
-             Message-Id: <199806241825.OAA06346@monk.mps.ohio-state.edu>
-             Subject: Re: [5.004_68] What is %^R ? [PATCH?]
-             Date: Wed, 24 Jun 1998 14:25:06 -0400 (EDT)
-     Branch: perl
-           ! perl.c t/op/splice.t
-____________________________________________________________________________
-[  1237] By: gsar                                  on 1998/06/28  19:23:40
-        Log: From: Gisle Aas 
-             Subject: [PATCH] Negative LENGTH argument to splice
-             Date: 24 Jun 1998 15:11:35 +0200
-             Message-ID: 
-     Branch: perl
-           + t/op/splice.t
-           ! MANIFEST pod/perlfunc.pod pp.c
-____________________________________________________________________________
-[  1236] By: gsar                                  on 1998/06/28  19:18:29
-        Log: From: "M.J.T. Guy" 
-             Subject: [PATCH] Insecure $ENV{} message out of step with perldiag
-             Message-Id: 
-             Date: Wed, 24 Jun 1998 13:13:02 +0100
-     Branch: perl
-           ! pod/perldiag.pod pod/perlsec.pod
-____________________________________________________________________________
-[  1235] By: gsar                                  on 1998/06/28  19:16:13
-        Log: Complex.pm update
-             From: Jarkko Hietaniemi 
-             Date: Wed, 24 Jun 1998 15:19:05 +0300 (EET DST)
-             Message-Id: <199806241219.PAA04061@alpha.hut.fi>
-             Subject: [PATCH] 5.004_68: Complex.pm, complex.t
-     Branch: perl
-           ! lib/Math/Complex.pm t/lib/complex.t
-____________________________________________________________________________
-[  1234] By: gsar                                  on 1998/06/28  19:13:05
-        Log: disable perl malloc on UNICOS for now
-             From: Jarkko Hietaniemi 
-             Date: Wed, 24 Jun 1998 12:37:14 +0300 (EET DST)
-             Message-Id: <199806240937.MAA01669@alpha.hut.fi>
-             Subject: [PATCH] 5.004_68: UNICOS hints
-     Branch: perl
-           ! hints/unicos.sh
-____________________________________________________________________________
-[  1233] By: gsar                                  on 1998/06/28  19:10:53
-        Log: fixes unpack("q"...), and semctl() tests for UNICOS
-             From: Jarkko Hietaniemi 
-             Date: Wed, 24 Jun 1998 11:55:09 +0300 (EET DST)
-             Message-Id: <199806240855.LAA16152@alpha.hut.fi>
-             Subject: [PATCH] 5.004_68: semctl() in UNICOS (was: pack/unpack)
-     Branch: perl
-           ! pp.c t/op/ipcsem.t t/op/pack.t
-____________________________________________________________________________
-[  1232] By: gsar                                  on 1998/06/28  19:01:23
-        Log: tweak various places for iperlsys.h awareness
-     Branch: perl
-	   ! MANIFEST Makefile.SH lib/ExtUtils/MM_Unix.pm
-           ! lib/ExtUtils/MM_VMS.pm pod/perlapio.pod
-____________________________________________________________________________
-[  1231] By: gsar                                  on 1998/06/28  18:37:07
-        Log: add a perlio.h stub for compat (some extensions seem to #include it)
-     Branch: perl
-           + perlio.h
-____________________________________________________________________________
-[  1230] By: gsar                                  on 1998/06/28  18:35:23
-        Log: Message-ID: <19980624003701.C161@cdata.tvnet.hu>
-             Date: Wed, 24 Jun 1998 00:37:01 +0200
-             From: Laszlo Molnar 
-             Subject: Re: [PATCH for _66] Makefile.SH problem on dos/djgpp
-     Branch: perl
-           ! pod/pod2text.PL
-____________________________________________________________________________
-[  1229] By: gsar                                  on 1998/06/28  18:33:42
-        Log: hand apply mutiliated patch
-             Message-Id: <3.0.5.32.19980623114100.00ab76e0@ous.edu>
-             Date: Tue, 23 Jun 1998 11:41:00 -0700
-             From: Dan Sugalski 
-             Subject: [PATCH 5.004_68]Configure update for VMS
-     Branch: perl
-           ! configure.com vms/descrip_mms.template vms/subconfigure.com
-____________________________________________________________________________
-[  1228] By: gsar                                  on 1998/06/28  17:17:35
-        Log: hand apply whitespace mutiliated patch
-             Date: Tue, 23 Jun 98 16:38:06 BST
-             Message-Id: <5389.9806231538@tempest.cise.npl.co.uk>
-             From: Robin Barker 
-             Subject: PATCH [perl5.004_68] perlbug.PL; was Re: Error message for Errno_pm.PL
-     Branch: perl
-           ! utils/perlbug.PL
-____________________________________________________________________________
-[  1227] By: gsar                                  on 1998/06/28  17:14:34
-        Log: Date: Tue, 23 Jun 1998 08:51:00 -0700 (PDT)
-             From: Tom Phoenix 
-             Subject: [PATCH] documenting close without arguments
-             Message-ID: 
-     Branch: perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1226] By: gsar                                  on 1998/06/28  17:12:56
-        Log: Date: Tue, 23 Jun 1998 05:37:09 -0700 (PDT)
-             From: Tom Phoenix 
-             Subject: Better diags for vars.pm
-             Message-ID: 
-     Branch: perl
-           ! lib/vars.pm
-____________________________________________________________________________
-[  1225] By: gsar                                  on 1998/06/28  17:05:59
-        Log: hand apply whitespace mutiliated perldoc.PL patches
-             Date: Tue, 23 Jun 98 15:49:52 BST
-             Message-Id: <5302.9806231449@tempest.cise.npl.co.uk>
-             From: Robin Barker 
-             Subject: PATCH [5.004_68] perldoc.PL
-             --
-             Date: Fri, 26 Jun 98 17:50:05 BST
-             Message-Id: <6834.9806261650@tempest.cise.npl.co.uk>
-             From: Robin Barker 
-             Subject: [PATCH 5.004_68] perldoc.PL
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[  1224] By: gsar                                  on 1998/06/28  16:50:59
-        Log: integrate ansiperl to get makedef.pl tweak
-     Branch: perl
-           ! Porting/pumpkin.pod win32/makedef.pl
-____________________________________________________________________________
-[  1223] By: gsar                                  on 1998/06/28  16:33:32
-        Log: add CGI-2.42, its and testsuite
-     Branch: perl
-	   + eg/cgi/caution.xbm eg/cgi/dna.small.gif.uu
-	   + eg/cgi/nph-multipart.cgi lib/CGI/Cookie.pm t/lib/cgi-form.t
-           + t/lib/cgi-function.t t/lib/cgi-html.t t/lib/cgi-request.t
-	   ! MANIFEST eg/cgi/RunMeFirst eg/cgi/file_upload.cgi
-	   ! eg/cgi/index.html eg/cgi/monty.cgi eg/cgi/save_state.cgi
-	   ! eg/cgi/wilogo.gif.uu lib/CGI.pm lib/CGI/Apache.pm
-	   ! lib/CGI/Carp.pm lib/CGI/Fast.pm lib/CGI/Push.pm
-           ! lib/CGI/Switch.pm
-____________________________________________________________________________
-[  1222] By: gsar                                  on 1998/06/28  15:28:29
-        Log: enable Errno build on win32, add Errno-1.08 files to repository
-     Branch: perl
-	   + ext/Errno/ChangeLog ext/Errno/Errno_pm.PL
-           + ext/Errno/Makefile.PL t/lib/errno.t
-	   ! MANIFEST win32/Makefile win32/config.bc win32/config.gc
-           ! win32/config.vc win32/makefile.mk
-____________________________________________________________________________
-[  1221] By: gsar                                  on 1998/06/28  14:34:06
-        Log: tweak win32 config templates for cpp
-     Branch: perl
-           ! win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1220] By: nick                                  on 1998/06/26  16:46:13
-        Log: Integrate mainline
-     Branch: ansiperl
-	  !> Changes Makefile.SH ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod
-	  !> ext/POSIX/POSIX.xs perl.c pod/perlre.pod pod/perlvar.pod sv.c
-          !> util.c win32/win32.h
-____________________________________________________________________________
-[  1219] By: gsar                                  on 1998/06/26  04:33:57
-        Log: make find_script() return saved string, reenable missing diagnostics
-     Branch: perl
-           ! perl.c util.c
-____________________________________________________________________________
-[  1218] By: gsar                                  on 1998/06/25  23:24:53
-        Log: avoid warning with -P switch
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[  1217] By: gsar                                  on 1998/06/25  22:06:58
-        Log: don't suppress display of Makefile recipes that invoke perl
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1216] By: gsar                                  on 1998/06/25  21:32:06
-        Log: tweak order of destruction so OBJECTs in GLOBs are visited after those
-             in RVs
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1215] By: gsar                                  on 1998/06/25  18:56:59
-        Log: mknod() is not POSIX, so remove the POSIX pieces from change#1199
-     Branch: perl
-           ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs
-____________________________________________________________________________
-[  1214] By: gsar                                  on 1998/06/25  18:11:22
-        Log: add FILE_SHARE_DELETE ifndef in win32.h
-     Branch: perl
-           ! win32/win32.h
-____________________________________________________________________________
-[  1213] By: nick                                  on 1998/06/24  17:18:59
-        Log: Correct perl malloc tweak to .def generation
-     Branch: ansiperl
-           ! win32/makedef.pl
-____________________________________________________________________________
-[  1212] By: gsar                                  on 1998/06/24  12:40:13
-        Log: check in what change#1182 didn't, and Changes
-     Branch: perl
-           ! Changes pod/perlre.pod pod/perlvar.pod
-____________________________________________________________________________
-[  1211] By: TimBunce                              on 1998/06/23  23:09:37
-        Log: Update test count in t/lib/basename.t (see change 1210)
-     Branch: maint-5.004/perl
-           ! t/lib/basename.t
-____________________________________________________________________________
-[  1210] By: TimBunce                              on 1998/06/23  22:58:18
-        Log: Title:  "Add C pragma to propagate tainting in m// and s///"
-             From:  Chip Salzenberg , Gurusamy Sarathy
-             , Tim.Bunce@ig.co.uk (Tim Bunce)
-             Msg-ID:  <19980525155222.A18445@perlsupport.com>,
-             <199805261143.MAA04260@toad.ig.co.uk>,
-             <199805261235.IAA10371@aatma.engin.umich.edu>,
-             Files:  MANIFEST pod/perlmodlib.pod pod/perlop.pod op.h perl.h dump.c
-             installperl lib/re.pm lib/File/Basename.pm mg.c op.c
-             pp_ctl.c pp_hot.c t/lib/basename.t t/op/taint.t toke.c
-     Branch: maint-5.004/perl
-	   ! MANIFEST dump.c embed.h installperl lib/File/Basename.pm mg.c
-	   ! op.c op.h perl.h pod/perlmodlib.pod pod/perlop.pod pp_ctl.c
-           ! pp_hot.c t/lib/basename.t t/op/taint.t toke.c
-____________________________________________________________________________
-[  1209] By: nick                                  on 1998/06/23  21:33:34
-        Log: Perl_malloced_size() only available with perl's malloc
-     Branch: ansiperl
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1208] By: nick                                  on 1998/06/23  18:15:23
-        Log: Integrate mainline c. 5.004_68 into ansiperl, mainly
-             so see what has changed...
-     Branch: ansiperl
-	  +> Porting/genlog iperlsys.h lib/File/Spec.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 regcomp.pl regcomp.sym regnodes.h
-          +> t/lib/filespec.t win32/perlhost.h
-	   - atomic.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h ipsock.h
-	   - ipstdio.h perldir.h perlenv.h perlio.h perllio.h perlmem.h
-           - perlproc.h perlsock.h
-          !> (integrate 96 files)
-
-----------------
-Version 5.004_68
-----------------
-
-____________________________________________________________________________
-[  1207] By: gsar                                  on 1998/06/23  10:55:05
-        Log: final touches to 5.004_68
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[  1206] By: gsar                                  on 1998/06/23  10:50:10
-        Log: more MULTIPLICITY tweaks
-     Branch: perl
-	   ! objpp.h perl.c perl.h proto.h win32/GenCAPI.pl win32/config.bc
-	   ! win32/config.gc win32/config.vc win32/config_H.bc
-           ! win32/config_H.gc win32/config_H.vc
-____________________________________________________________________________
-[  1205] By: gsar                                  on 1998/06/23  09:03:46
-        Log: partial MULTIPLICITY cleanup
-     Branch: perl
-	   ! embedvar.h interp.sym intrpvar.h perl.c perlvars.h proto.h
-           ! thrdvar.h
-____________________________________________________________________________
-[  1204] By: gsar                                  on 1998/06/23  09:00:48
-        Log: tweak MANIFEST, add Dev_t to POSIX/typemap
-     Branch: perl
-           ! MANIFEST Porting/makerel README.win32 ext/POSIX/typemap
-____________________________________________________________________________
-[  1203] By: gsar                                  on 1998/06/23  07:08:02
-        Log: bump patchlevel to 68, Porting/makerel tweaks
-     Branch: perl
-	   ! Porting/makerel patchlevel.h win32/Makefile win32/config_H.bc
-           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[  1202] By: gsar                                  on 1998/06/23  06:16:19
-        Log: remove atomic.h pending resolution of licensing issues,
-             EMULATE_ATOMIC_REFCOUNTS everywhere
-     Branch: perl
-           - atomic.h
-           ! MANIFEST perl.h sv.h
-____________________________________________________________________________
-[  1201] By: gsar                                  on 1998/06/23  06:06:23
-        Log: applied patch, regen headers
-             From: Ilya Zakharevich 
-             Message-Id: <199806220819.EAA03295@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Malloc size feedback
-             Date: Mon, 22 Jun 1998 04:19:45 -0400 (EDT)
-     Branch: perl
-	   ! ObjXSub.h av.c embed.h global.sym hv.c malloc.c objpp.h perl.c
-           ! pp_sys.c proto.h sv.c toke.c
-____________________________________________________________________________
-[  1200] By: gsar                                  on 1998/06/23  05:59:09
-        Log: Message-Id: 
-             Date: Mon, 22 Jun 1998 21:19:43 -0500 (CDT)
-             From: Stephen McCamant 
-             Subject: [PATCH] Inheritance of B:: classes
-     Branch: perl
-           ! ext/B/B.pm
-____________________________________________________________________________
-[  1199] By: gsar                                  on 1998/06/23  05:57:58
-        Log: applied patch, moved #define mkfifo ... from perl.h to POSIX.xs
-             Date: Tue, 23 Jun 1998 00:01:02 +0300 (EET DST)
-             Message-Id: <199806222101.AAA16456@alpha.hut.fi>
-             Subject: [PATCH] _67: somebody said POSIX::mknod?
-             From: Jarkko Hietaniemi 
-     Branch: perl
-	   ! Configure config_h.SH ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod
-           ! ext/POSIX/POSIX.xs perl.h
-____________________________________________________________________________
-[  1198] By: gsar                                  on 1998/06/23  05:48:56
-        Log: Date: Mon, 22 Jun 1998 14:10:46 -0600 (MDT)
-             From: Daniel Grisinger 
-             Subject: PATCH [5.004_67] perldoc.PL
-             Message-ID: 
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[  1197] By: gsar                                  on 1998/06/23  05:47:24
-        Log: Message-Id: <3.0.5.32.19980622092918.00aa46e0@ous.edu>
-             Date: Mon, 22 Jun 1998 09:29:18 -0700
-             From: Dan Sugalski 
-             Subject: [PATCH 5.004_67] Autosplit's not qite case-insensitive enough on VMS
-     Branch: perl
-           ! lib/AutoSplit.pm
-____________________________________________________________________________
-[  1196] By: gsar                                  on 1998/06/23  05:45:19
-        Log: Date: Mon, 22 Jun 1998 18:58:55 +0300 (EET DST)
-             Message-Id: <199806221558.SAA18626@alpha.hut.fi>
-             Subject: [PATCH] 5.004_67: Fcntl: add few constants, enhance maintainability
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
-____________________________________________________________________________
-[  1195] By: gsar                                  on 1998/06/23  05:43:32
-        Log: Message-Id: 
-             Date: Mon, 22 Jun 1998 15:22:24 +0000
-             From: Dominic Dunlop 
-             Subject: [PATCH 5.004_67] Amend tests/regexp.t for variable REG_INFTY;
-             update machten.sh to vary REG_INFTY
-     Branch: perl
-           ! hints/machten.sh t/op/re_tests t/op/regexp.t
-____________________________________________________________________________
-[  1194] By: gsar                                  on 1998/06/23  05:38:36
-        Log: filter out array subscripts when generating symbols for AIX
-             Date: Mon, 22 Jun 1998 12:14:31 +0300 (EET DST)
-             Message-Id: <199806220914.MAA13631@alpha.hut.fi>
-             Subject: [PATCH] 5.004_67: perl.exp bug, AIX unhappy
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! perl_exp.SH
-____________________________________________________________________________
-[  1193] By: gsar                                  on 1998/06/23  05:32:52
-        Log: updated hints file to cope with buggy sigsetjmp() on Solaris-x86
-             Message-Id: <199806221102.NAA12106@alanya.m.isar.de>
-             Date: Mon, 22 Jun 1998 13:02:45 +0200 (MET DST)
-             From: Lupe Christoph 
-             Subject: Re: Perl 5.004_67: Death is on vacation - miniperl can't die 
-     Branch: perl
-           ! hints/solaris_2.sh
-____________________________________________________________________________
-[  1192] By: gsar                                  on 1998/06/23  05:27:13
-        Log: add detailed changelogs and 'genlog'--the script which generates them
-     Branch: perl
-           + Porting/genlog
-           ! Changes INSTALL
-____________________________________________________________________________
-[  1191] By: gsar                                  on 1998/06/22  15:56:27
-        Log: tweak win32 makefiles for PERL_OBJECT build
-     Branch: perl
-           ! win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1190] By: gsar                                  on 1998/06/22  04:06:02
-        Log: backout change#1178 as it was dependent on an unapplied patch,
-             fix filespec.t to know its @INC
-     Branch: perl
-           ! sv.c t/lib/filespec.t
-____________________________________________________________________________
-[  1189] By: gsar                                  on 1998/06/22  03:47:43
-        Log: eliminate use of tokenbuf in util.c
-     Branch: perl
-           ! util.c
-____________________________________________________________________________
-[  1188] By: gsar                                  on 1998/06/22  01:53:59
-        Log: add patch that generates regnodes.h via regcomp.pl
-             From: Ilya Zakharevich 
-             Message-Id: <199806212038.QAA29797@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] regcomp.h regnodes cleanup
-             Date: Sun, 21 Jun 1998 16:38:21 -0400 (EDT)
-     Branch: perl
-           + regcomp.pl regcomp.sym regnodes.h
-           ! MANIFEST Makefile.SH regcomp.h
-____________________________________________________________________________
-[  1187] By: gsar                                  on 1998/06/22  01:42:21
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806210145.VAA21629@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Avoid temporaries on recursion
-             Date: Sat, 20 Jun 1998 21:45:03 -0400 (EDT)
-     Branch: perl
-           ! pp_ctl.c pp_hot.c
-____________________________________________________________________________
-[  1186] By: gsar                                  on 1998/06/22  01:14:14
-        Log: merge relevant portions from maintbranch change#1155
-     Branch: perl
-	   ! lib/Math/BigFloat.pm op.c pod/perlfunc.pod pod/perlop.pod
-           ! pod/perlrun.pod pp_hot.c
-____________________________________________________________________________
-[  1185] By: gsar                                  on 1998/06/22  00:59:28
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806210827.EAA26322@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Zero-length matching bug
-             Date: Sun, 21 Jun 1998 04:27:16 -0400 (EDT)
-     Branch: perl
-           ! regexec.c t/op/pat.t
-____________________________________________________________________________
-[  1184] By: gsar                                  on 1998/06/22  00:57:27
-        Log: fix alignment issues in malloc.c on 64-bit platforms (via private mail)
-             From: Ilya Zakharevich 
-             Message-Id: <199806170844.EAA24584@monk.mps.ohio-state.edu>
-             Subject: Re: _67 not okay
-             Date: Wed, 17 Jun 1998 04:44:26 -0400 (EDT)
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[  1183] By: gsar                                  on 1998/06/22  00:53:37
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806210727.DAA24072@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Test study/re/
-             Date: Sun, 21 Jun 1998 03:27:13 -0400 (EDT)
-     Branch: perl
-           ! t/op/pat.t
-____________________________________________________________________________
-[  1182] By: gsar                                  on 1998/06/21  21:25:07
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806210430.AAA21818@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] $^R documented
-             Date: Sun, 21 Jun 1998 00:30:48 -0400 (EDT)
-     Branch: perl
-           ! pod/perlre.pod pod/perlvar.pod
-____________________________________________________________________________
-[  1181] By: gsar                                  on 1998/06/21  21:23:41
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806210111.VAA17752@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Re docs
-             Date: Sat, 20 Jun 1998 21:11:37 -0400 (EDT)
-     Branch: perl
-           ! pod/perlop.pod pod/perlre.pod
-____________________________________________________________________________
-[  1180] By: gsar                                  on 1998/06/21  21:22:16
-        Log: adapted contents of message into comments in malloc.c and INSTALL
-             From: Ilya Zakharevich 
-             Message-Id: <199806162240.SAA23597@monk.mps.ohio-state.edu>
-             Subject: [5.004_67] malloc.c -Defines
-             Date: Tue, 16 Jun 1998 18:40:41 -0400 (EDT)
-     Branch: perl
-           ! INSTALL malloc.c
-____________________________________________________________________________
-[  1179] By: gsar                                  on 1998/06/21  07:26:35
-        Log: applied patch, with edits to the prose
-             From: Ilya Zakharevich 
-             Message-Id: <199806201936.PAA17499@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Error variables compared
-             Date: Sat, 20 Jun 1998 15:36:14 -0400 (EDT)
-     Branch: perl
-           ! pod/perlvar.pod
-____________________________________________________________________________
-[  1178] By: gsar                                  on 1998/06/21  07:07:16
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806200104.VAA11343@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] print study /re/ broken
-             Date: Fri, 19 Jun 1998 21:04:54 -0400 (EDT)
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[  1177] By: gsar                                  on 1998/06/21  07:06:10
-        Log: applied patch, tweaked wording
-             From: Ilya Zakharevich 
-             Message-Id: <199806200838.EAA13992@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Documentation patch for malloc
-             Date: Sat, 20 Jun 1998 04:38:07 -0400 (EDT)
-     Branch: perl
-           ! malloc.c pod/perldiag.pod
-____________________________________________________________________________
-[  1176] By: gsar                                  on 1998/06/21  07:00:30
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806200829.EAA13974@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Cosmetic malloc patch
-             Date: Sat, 20 Jun 1998 04:29:00 -0400 (EDT)
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[  1175] By: gsar                                  on 1998/06/21  06:58:37
-        Log: Message-Id: <3.0.5.32.19980619160057.032e7480@ous.edu>
-             Date: Fri, 19 Jun 1998 16:00:57 -0700
-             From: Dan Sugalski 
-             Subject: [PATCH 5.004_67] fixup patches for VMS
-     Branch: perl
-	   ! ext/SDBM_File/sdbm/Makefile.PL t/lib/filecopy.t t/op/defins.t
-           ! t/op/taint.t vms/test.com vms/vms.c
-____________________________________________________________________________
-[  1174] By: gsar                                  on 1998/06/21  06:55:18
-        Log: applied VMS patch from Dan Sugalski
-             Date: Fri, 19 Jun 1998 15:36:34 -0700
-             From: SYSTEM@cedar.osshe.edu
-             Message-Id: <980619153634.2063ee12@cedar.osshe.edu>
-             Subject: [PATCH 5.004_67] Enhancements to the VMS configuration procedures
-     Branch: perl
-	   ! configure.com lib/ExtUtils/MM_VMS.pm perl.h
-	   ! vms/descrip_mms.template vms/gen_shrfls.pl
-           ! vms/subconfigure.com
-____________________________________________________________________________
-[  1173] By: gsar                                  on 1998/06/21  06:51:38
-        Log: applied patch, modified logic to avoid reentering lexer at compile-time
-             Message-ID: <19980619113104.S9711@asic.sc.ti.com>
-             Date: Fri, 19 Jun 1998 11:31:04 -0500
-             From: Graham Barr 
-             Subject: Re: [PATCH perl5.004_67] Add Errno in ext/
-     Branch: perl
-	   ! Configure MANIFEST Makefile.SH ext/util/make_ext gv.c
-           ! lib/English.pm
-____________________________________________________________________________
-[  1172] By: gsar                                  on 1998/06/21  06:27:57
-        Log: applied patch, along with many changes:
-             - ipfoo.h headers have been coalesced along with perlfoo.h into
-             iperlsys.h
-             - win32/cp*.h have been combined in perlhost.h
-             - CPerlObj::PerlParse() takes an extra xsinit arg
-             - tweaks to get dl_win32.xs compiling again w/ PERL_OBJECT
-             From: "Douglas Lankshear" 
-             Message-Id: <000001bd9b8c$0417fe90$a32fa8c0@tau.Active>
-             Subject: RE: [PATCH 5.004_67] Fixes for broken MS compiler 
-             Date: Fri, 19 Jun 1998 10:59:50 -0700
-     Branch: perl
-           + iperlsys.h win32/perlhost.h
-	   - ipdir.h ipenv.h iplio.h ipmem.h ipproc.h ipsock.h ipstdio.h
-	   - perldir.h perlenv.h perlio.h perllio.h perlmem.h perlproc.h
-           - perlsock.h
-	   ! MANIFEST mg.h op.h perl.h perlio.c proto.h util.c
-	   ! win32/Makefile win32/dl_win32.xs win32/makefile.mk
-           ! win32/runperl.c win32/win32.h
-____________________________________________________________________________
-[  1171] By: gsar                                  on 1998/06/21  00:44:42
-        Log: Date: Fri, 19 Jun 1998 07:55:19 -0600 (MDT)
-             From: Daniel Grisinger 
-             Subject: Re: PATCH _67 (Doc) perlop.pod 
-             Message-ID: 
-     Branch: perl
-           ! pod/perlop.pod
-____________________________________________________________________________
-[  1170] By: gsar                                  on 1998/06/21  00:43:06
-        Log: a tweaked version of:
-             From: "Douglas Lankshear" 
-             Subject: [PATCH 5.004_67] Win32 using PerlCRT.dll
-             Date: Wed, 17 Jun 1998 20:25:51 -0700
-             Message-ID: <001b01bd9a68$cb752410$a32fa8c0@tau.Active>
-     Branch: perl
-           ! lib/ExtUtils/MM_Win32.pm win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1169] By: gsar                                  on 1998/06/21  00:10:18
-        Log: added patch, regen headers
-             From: Ilya Zakharevich 
-             Message-Id: <199806190227.WAA07371@monk.mps.ohio-state.edu>
-             Subject: Re: Ilya's patches
-             Date: Thu, 18 Jun 1998 22:27:31 -0400 (EDT)
-     Branch: perl
-           ! ObjXSub.h embedvar.h interp.sym intrpvar.h toke.c
-____________________________________________________________________________
-[  1168] By: gsar                                  on 1998/06/21  00:05:01
-        Log: Date: Thu, 18 Jun 1998 23:37:32 -0700 (PDT)
-             From: Tom Phoenix 
-             Subject: [PATCH] docs creating files via open
-             Message-ID: 
-     Branch: perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[  1167] By: gsar                                  on 1998/06/21  00:03:34
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806172151.RAA28441@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_67] Better version of malloc improver
-             Date: Wed, 17 Jun 1998 17:51:54 -0400 (EDT)
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[  1166] By: gsar                                  on 1998/06/20  23:59:23
-        Log: enhance perlre.pod to say C<)> can't appear in a (?#...) comment
-     Branch: perl
-           ! pod/perlre.pod
-____________________________________________________________________________
-[  1165] By: gsar                                  on 1998/06/20  23:47:09
-        Log: added patch, tweaked missed files, excised comment that doesn't really
-             belong in the sources
-             From: joshua.pritikin@db.com
-             Date: Mon, 15 Jun 1998 10:03:37 -0400
-             Message-Id: 
-             Subject: [PATCH 5.004_57] tied hash slice & do_kv cleanup
-     Branch: perl
-	   ! ObjXSub.h av.c doop.c embed.h global.sym objpp.h pp.c proto.h
-           ! t/op/avhv.t
-____________________________________________________________________________
-[  1164] By: gsar                                  on 1998/06/20  23:29:09
-        Log: add File-Spec-0.6 from CPAN
-     Branch: perl
-	   + lib/File/Spec.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 t/lib/filespec.t
-           ! MANIFEST
-____________________________________________________________________________
-[  1163] By: gsar                                  on 1998/06/20  23:15:41
-        Log: tweaks to allow both mingw32{gcc-2.8.1,egcs-1.0.2} build and test
-     Branch: perl
-           ! ext/POSIX/POSIX.xs win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1162] By: gsar                                  on 1998/06/20  21:48:32
-        Log: manual integration of all outstanding ansi branch stuff into mainline
-     Branch: perl
-	   ! ext/POSIX/POSIX.xs lib/ExtUtils/MM_Win32.pm t/op/ipcsem.t
-	   ! win32/config.gc win32/dl_win32.xs win32/makefile.mk
-           ! win32/win32.h
-____________________________________________________________________________
-[  1161] By: gsar                                  on 1998/06/20  21:12:01
-        Log: undo goofed change 1157 (backed out the fix instead of keeping it)
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[  1160] By: nick                                  on 1998/06/20  21:05:51
-        Log: Patches to build with EGCS-1.0.2 Mingw32 port.
-     Branch: ansiperl
-	   ! ext/POSIX/POSIX.xs win32/config.gc win32/config_H.gc
-           ! win32/dl_win32.xs win32/makefile.mk win32/win32.h
-____________________________________________________________________________
-[  1159] By: gsar                                  on 1998/06/20  02:51:35
-        Log: cleanup installation of utilities on win32
-     Branch: perl
-	   ! installperl pod/Makefile win32/Makefile win32/makefile.mk
-           ! win32/pod.mak
-____________________________________________________________________________
-[  1158] By: gsar                                  on 1998/06/20  02:50:35
-        Log: intuit @INC pathnames from exe location only if dll location
-             is unknown (ensures that multiple executables will coexist)
-     Branch: perl
-           ! win32/win32.c
-____________________________________________________________________________
-[  1157] By: gsar                                  on 1998/06/20  02:48:34
-        Log: make perldoc ignore null files (it tried to open() them)
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[  1156] By: gsar                                  on 1998/06/19  21:18:47
-        Log: fix perldoc to ignore unfound null filenames
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[  1155] By: TimBunce                              on 1998/06/19  18:47:57
-        Log: Assorted patches:
-             
-             ------  BUILD PROCESS  ------
-             
-             Title:  "Clarify varargs issues in INSTALL docs"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  INSTALL
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "Further fixes for updated SysV IPC support"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199805211644.TAA15139@alpha.hut.fi>
-             Files:  Configure perl.h doio.c
-             
-             Title:  "Fixed SEGV caused by bug in pp_hot.c:pp_sassign()"
-             From:  Andrew Bettison 
-             Msg-ID:  
-             Files:  pp_hot.c
-             
-             Title:  "Invalidate method cache on C"
-             From:  Chip Salzenberg 
-             Msg-ID:  <19980604134731.D24343@perlsupport.com>
-             Files:  scope.c t/op/method.t
-             
-             Title:  "fix uninitialized cv variable in op.c"
-             From:  joshua.pritikin@db.com
-             Msg-ID:  
-             Files:  op.c
-             
-             Title:  "fix for undef as last arg to setsockopt"
-             From:  Graham Barr 
-             Msg-ID:  <19980603112219.B7638@asic.sc.ti.com>
-             Files:  pp_sys.c
-             
-             Title:  "Fix -i when @ARGV is empty"
-             From:  Chip Salzenberg , Gurusamy Sarathy
-             , Ilya Zakharevich
-             , Tim.Bunce@ig.co.uk (Tim Bunce)
-             Msg-ID:  <19980606184942.A4583@perlsupport.com>,
-             <199806070029.UAA18709@monk.mps.ohio-state.edu>,
-             <199806071817.OAA28141@aatma.engin.umich.edu>,
-             <199806191549.QAA16376@toad.ig.co.uk>
-             Files:  pp_hot.c
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "Discrepancy between perlop.pod and m// operator docs"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perlop.pod
-             
-             Title:  "Doc addition for perlfunc entry for system()"
-             From:  Ilya Zakharevich , Mike Fletcher
-             
-             Msg-ID:  <199806011908.PAA31069@dewdrop2.mindspring.com>,
-             <199806012057.QAA26830@monk.mps.ohio-state.edu>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Clarify effects of using quotes with m operator"
-             From:  Daniel Grisinger 
-             Msg-ID:  
-             Files:  pod/perlop.pod
-             
-             Title:  "Document -i with STDIN"
-             From:  joshua.pritikin@db.com
-             Msg-ID:  
-             Files:  pod/perlrun.pod
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "Fix Liblist.pm to tolerate backslashen in paths"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199806011954.PAA10900@aatma.engin.umich.edu>
-             Files:  lib/ExtUtils/Liblist.pm
-             
-             ------  LIBRARY  ------
-             
-             Title:  "Typo fix for Math::BogFloat"
-             From:  Mike Stok 
-             Msg-ID:  
-             Files:  lib/Math/BigFloat.pm
-             
-             ------  PORTABILITY - GENERAL  ------
-             
-             Title:  "Add docs about types of diff to Porting/patching.pod"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199806090105.VAA20005@aatma.engin.umich.edu>
-             Files:  Porting/patching.pod
-             
-             Title:  "Set dont_use_nlink for PowerMAX OS 4.2"
-             From:  Tom Horsley 
-             Msg-ID:  <199806161354.NAA21316@cleo.ssd.hcsc.com>
-             Files:  hints/powerux.sh
-             
-             Title:  "Assorted improvements to hints/solaris_2.sh"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  hints/solaris_2.sh
-     Branch: maint-5.004/perl
-	   ! Configure INSTALL Porting/patching.pod doio.c hints/powerux.sh
-	   ! hints/solaris_2.sh lib/ExtUtils/Liblist.pm
-	   ! lib/Math/BigFloat.pm op.c perl.h pod/perlfunc.pod
-	   ! pod/perlop.pod pod/perlrun.pod pp_hot.c pp_sys.c scope.c
-           ! t/op/method.t
-____________________________________________________________________________
-[  1154] By: gsar                                  on 1998/06/19  17:22:23
-        Log: update repository copy of Asmdata.pm after `perl bytecode.pl`
-     Branch: perl
-           ! ext/B/B/Asmdata.pm regcomp.c
-____________________________________________________________________________
-[  1153] By: nick                                  on 1998/06/19  17:21:21
-        Log: Use libxxx.a for -lxxx with GCC
-     Branch: ansiperl
-	   ! lib/ExtUtils/MM_Win32.pm win32/config.gc win32/config_H.gc
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1152] By: TimBunce                              on 1998/06/19  17:08:18
-        Log: Title:  Tom's jumbo doc patch
-             From:   Tom Christiansen 
-             Msg-Id: <199806140419.WAA20549@chthon.perl.com>
-             Files:  pod/perl.pod pod/perlbook.pod pod/perldata.pod pod/perldsc.pod
-             pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
-             pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
-             pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
-             pod/perlfaq9.pod pod/perlform.pod pod/perlfunc.pod
-             pod/perlipc.pod pod/perllocale.pod pod/perllol.pod
-             pod/perlmod.pod pod/perlmodlib.pod pod/perlobj.pod
-             pod/perlop.pod pod/perlre.pod pod/perlref.pod
-             pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod
-             pod/perlsyn.pod pod/perltie.pod pod/perltoot.pod
-             pod/perlvar.pod
-     Branch: maint-5.004/perl
-	   ! pod/perl.pod pod/perlbook.pod pod/perldata.pod pod/perldsc.pod
-	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
-	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
-	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
-	   ! pod/perlfaq9.pod pod/perlform.pod pod/perlfunc.pod
-	   ! pod/perlipc.pod pod/perllocale.pod pod/perllol.pod
-	   ! pod/perlmod.pod pod/perlmodlib.pod pod/perlobj.pod
-	   ! pod/perlop.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
-	   ! pod/perlsec.pod pod/perlsub.pod pod/perlsyn.pod
-           ! pod/perltie.pod pod/perltoot.pod pod/perlvar.pod
-____________________________________________________________________________
-[  1151] By: nick                                  on 1998/06/19  15:38:28
-        Log: Resolve latest
-     Branch: ansiperl
-	  !> av.c embed.h embedvar.h ext/Socket/Socket.xs global.sym
-	  !> hints/powerux.sh mg.c perl.h pod/perlsub.pod pp_ctl.c proto.h
-          !> sv.c t/TEST
-____________________________________________________________________________
-[  1150] By: gsar                                  on 1998/06/18  20:43:07
-        Log: Date: Tue, 16 Jun 1998 13:54:17 GMT
-             Message-Id: <199806161354.NAA21316@cleo.ssd.hcsc.com>
-             From: Tom Horsley 
-             Subject: [PATCH] perl5.004 hints file (maint and dev paths)
-     Branch: perl
-           ! hints/powerux.sh
-____________________________________________________________________________
-[  1149] By: gsar                                  on 1998/06/18  20:41:30
-        Log: hand apply whitespace-mutiliated patch
-             From: joshua.pritikin@db.com
-             Date: Mon, 15 Jun 1998 09:21:36 -0400
-             Message-Id: 
-             Subject: [PATCH 5.004_67] SvREADONLY for av_clear
-     Branch: perl
-           ! av.c
-____________________________________________________________________________
-[  1148] By: gsar                                  on 1998/06/18  20:33:59
-        Log: hand apply whitespace-mutiliated and reversed patch
-             Date: Tue, 16 Jun 1998 16:31:40 -0400
-             From: Les Peters 
-             Message-Id: <199806162031.QAA08202@ds9>
-             Subject: [PATCH 5.004_67] Socket.xs tweak for IRIX 6.3
-     Branch: perl
-           ! ext/Socket/Socket.xs
-____________________________________________________________________________
-[  1147] By: gsar                                  on 1998/06/18  20:26:59
-        Log: close child pipe in t/TEST, other cosmetic tweaks
-     Branch: perl
-           ! t/TEST
-____________________________________________________________________________
-[  1146] By: gsar                                  on 1998/06/18  19:37:41
-        Log: back out problematic change#1105, tweak perlsub.pod
-     Branch: perl
-	   ! embed.h embedvar.h global.sym mg.c perl.h pod/perlsub.pod
-           ! pp_ctl.c proto.h sv.c
-____________________________________________________________________________
-[  1145] By: nick                                  on 1998/06/18  19:31:07
-        Log: Integrate and resolve -at mainline to ansiperl prior to Ming32 hacking
-     Branch: ansiperl
-	  +> configure.com ext/DB_File/dbinfo
-	  +> ext/DynaLoader/DynaLoader_pm.PL t/base/rs.t
-	  +> t/op/regexp_noamp.t vms/descrip_mms.template vms/munchconfig.c
-          +> vms/subconfigure.com
-	   - ext/DynaLoader/DynaLoader.pm.PL vms/config.vms vms/descrip.mms
-           - vms/fndvers.com
-          !> (integrate 499 files)
-____________________________________________________________________________
-[  1144] By: gsar                                  on 1998/06/18  16:35:11
-        Log: fix spurious cxstack_max init that trampled memory
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[  1143] By: gsar                                  on 1998/06/18  16:33:01
-        Log: fix memory leaks and uninitialized memory accesses found by Purify
-     Branch: perl
-           ! doio.c perl.c regexec.c sv.c
-____________________________________________________________________________
-[  1142] By: gsar                                  on 1998/06/18  16:28:48
-        Log: fix off-by-one that trampled memory in re_croak2()
-     Branch: perl
-           ! regcomp.c
-____________________________________________________________________________
-[  1141] By: gsar                                  on 1998/06/18  16:26:59
-        Log: fix AutoLoader to do the right thing when there are relative paths
-             in @INC
-     Branch: perl
-           ! lib/AutoLoader.pm
-____________________________________________________________________________
-[  1140] By: gsar                                  on 1998/06/18  16:22:47
-        Log: fix Makefile.SH typo
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1139] By: gsar                                  on 1998/06/17  18:06:16
-        Log: 5.004_67 niggles
-     Branch: perl
-           ! Makefile.SH op.c
-
-----------------
-Version 5.004_67
-----------------
-
-____________________________________________________________________________
-[  1138] By: gsar                                  on 1998/06/15  10:09:27
-        Log: up patchlevel.h to 67, other small tweaks
-     Branch: perl
-	   ! patchlevel.h pod/perlhist.pod pod/perltoc.pod vms/perly_c.vms
-	   ! win32/Makefile win32/config_H.bc win32/config_H.gc
-           ! win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[  1137] By: gsar                                  on 1998/06/15  09:08:57
-        Log: tweaks to get PERL_OBJECT building again; passes tests
-     Branch: perl
-           ! ObjXSub.h objpp.h proto.h
-____________________________________________________________________________
-[  1136] By: gsar                                  on 1998/06/15  08:51:54
-        Log: back out previous change (it breaks PERL_OBJECT)
-     Branch: perl
-	   ! ObjXSub.h cc_runtime.h embed.h embedvar.h global.sym
-	   ! interp.sym intrpvar.h objpp.h perl.c perl.h pod/perldiag.pod
-           ! pod/perlguts.pod pp_ctl.c proto.h scope.c scope.h util.c
-____________________________________________________________________________
-[  1135] By: gsar                                  on 1998/06/15  05:32:01
-        Log: added patch, fixed typo, reworked documentation
-             Message-Id: 
-             Date:    Sun, 14 Jun 1998 14:03:15 EDT
-             From:    joshua.pritikin@db.com
-             Subject: [PATCH 5.004_66] JMPENV!
-     Branch: perl
-	   ! ObjXSub.h cc_runtime.h embed.h embedvar.h global.sym
-	   ! interp.sym intrpvar.h objpp.h perl.c perl.h pod/perldiag.pod
-           ! pod/perlguts.pod pp_ctl.c proto.h scope.c scope.h util.c
-____________________________________________________________________________
-[  1134] By: gsar                                  on 1998/06/15  04:07:18
-        Log: various win32 odds and ends
-             - added support for waitpid(), open2/open3, and a bugfix for kill()
-             from Ronald Schmidt 
-             - tweak testsuite mods of above
-             - regenerate win32/config_H.?c
-             - change kill() to win32_kill() and export it
-             - coalesce common code in win32.c
-             - add PerlProc_waitpid() and export win32_waitpid()
-             result builds and passes on the three win32 compilers
-     Branch: perl
-	   ! ipproc.h lib/IPC/Open3.pm perlproc.h t/lib/open2.t
-	   ! t/lib/open3.t util.c win32/config.bc win32/config.gc
-	   ! win32/config.vc win32/config_H.bc win32/config_H.gc
-	   ! win32/config_H.vc win32/makedef.pl win32/runperl.c
-           ! win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[  1133] By: gsar                                  on 1998/06/15  01:39:13
-        Log: newer Getopt/Long.pm from public distribution cited in:
-             Message-Id: 
-             Date:    14 Jun 1998 15:15:28 +0200
-             From:    Johan Vromans 
-             Subject: Getopt::Long version 2.17 released
-     Branch: perl
-           ! lib/Getopt/Long.pm
-____________________________________________________________________________
-[  1132] By: gsar                                  on 1998/06/15  01:37:12
-        Log: documentation update from tchrist
-             Message-Id: <199806140419.WAA20549@chthon.perl.com>
-             Date:    Sat, 13 Jun 1998 22:19:32 MDT
-             From:    Tom Christiansen 
-             Subject: doc patches
-     Branch: perl
-	   ! pod/perl.pod pod/perlbook.pod pod/perldata.pod pod/perldsc.pod
-	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
-	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
-	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
-	   ! pod/perlfaq9.pod pod/perlform.pod pod/perlfunc.pod
-	   ! pod/perlipc.pod pod/perllocale.pod pod/perllol.pod
-	   ! pod/perlmod.pod pod/perlmodlib.pod pod/perlobj.pod
-	   ! pod/perlop.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
-	   ! pod/perlsec.pod pod/perlsub.pod pod/perlsyn.pod
-           ! pod/perltie.pod pod/perltoot.pod pod/perlvar.pod
-____________________________________________________________________________
-[  1131] By: gsar                                  on 1998/06/14  19:33:36
-        Log: Message-ID: 
-             From: Roderick Schertler 
-             Subject: [PATCH] Re: Exceptions in IPC::Open2
-             Date: 12 Jun 1998 13:24:15 -0400
-     Branch: perl
-           ! lib/IPC/Open3.pm
-____________________________________________________________________________
-[  1130] By: gsar                                  on 1998/06/14  19:32:25
-        Log: fixup MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[  1129] By: gsar                                  on 1998/06/14  18:51:53
-        Log: various win32 fixes
-             - fixes that silence VC noises about dup exports, non-default libs, and
-             unsupported *.def file directives
-             - s/inplace/inplace_label/ malloc.c
-             - update Config{usemymalloc} based on d_mymalloc
-             - export Perl_*Vars
-             - fix makefiles to not build miniperl.exe twice, and to make it properly
-             when defaults are changed
-     Branch: perl
-	   ! lib/ExtUtils/MM_Win32.pm lib/ExtUtils/Mksymlists.pm malloc.c
-	   ! win32/Makefile win32/config_sh.PL win32/makedef.pl
-           ! win32/makefile.mk win32/perllib.c win32/win32.h
-____________________________________________________________________________
-[  1128] By: gsar                                  on 1998/06/14  01:38:39
-        Log: remove unused global `scrgv'
-     Branch: perl
-           ! ObjXSub.h cygwin32/cw32imp.h embedvar.h perlvars.h
-____________________________________________________________________________
-[  1127] By: nick                                  on 1998/06/13  08:39:07
-        Log: Move specialsv_list to embed.sym, regen embed*.h
-     Branch: win32/perl
-           ! embed.h embedvar.h global.sym interp.sym
-____________________________________________________________________________
-[  1126] By: gsar                                  on 1998/06/12  07:23:06
-        Log: From: jan.dubois@ibm.net (Jan Dubois)
-             Subject: Re: execv in toke.c [PATCH]: win32 wrapper for _66
-             Date: Thu, 11 Jun 1998 21:13:31 +0200
-             Message-ID: <35842ac5.7883075@smtp1.ibm.net>
-     Branch: perl
-           ! win32/makedef.pl win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[  1125] By: gsar                                  on 1998/06/12  07:21:29
-        Log: added patch, undo earlier workaround
-             From: jan.dubois@ibm.net (Jan Dubois)
-             Subject: Re: Why does saferealloc(NULL,size) croak? [PATCH] against _66
-             Date: Thu, 11 Jun 1998 20:28:36 +0200
-             Message-ID: <35831f69.4975644@smtp1.ibm.net>
-     Branch: perl
-           ! perl.c util.c
-____________________________________________________________________________
-[  1124] By: gsar                                  on 1998/06/12  07:16:12
-        Log: hand-applied patch with wrapped lines
-             From: "Douglas Lankshear" 
-             Subject: [PATCH 5.004_66] Win32::Reg... bloat in Win32
-             Date: Thu, 11 Jun 1998 11:06:33 -0700
-             Message-ID: <000101bd9563$aae0c4c0$a32fa8c0@tau.Active>
-     Branch: perl
-           ! win32/win32.c
-____________________________________________________________________________
-[  1123] By: gsar                                  on 1998/06/12  07:07:25
-        Log: Date: Thu, 11 Jun 1998 12:40:05 -0400 (EDT)
-             From: Andy Dougherty 
-             Subject: [PATCH 5.004_66] Config_66-01-02.diff
-             Message-Id: 
-     Branch: perl
-           ! Configure
-____________________________________________________________________________
-[  1122] By: gsar                                  on 1998/06/12  07:06:02
-        Log: Message-Id: 
-             Date: Thu, 11 Jun 1998 12:27:15 -0400 (EDT)
-             From: Andy Dougherty 
-             Subject: Re: [PATCH for _66] Makefile.SH problem on dos/djgpp 
-     Branch: perl
-	   ! pod/checkpods.PL pod/pod2html.PL pod/pod2latex.PL
-	   ! pod/pod2man.PL utils/c2ph.PL utils/h2ph.PL utils/h2xs.PL
-	   ! utils/perlbug.PL utils/perlcc.PL utils/perldoc.PL
-           ! utils/pl2pm.PL utils/splain.PL x2p/find2perl.PL x2p/s2p.PL
-____________________________________________________________________________
-[  1121] By: gsar                                  on 1998/06/12  07:01:20
-        Log: a tweaked version of:
-             Message-Id: 
-             Date: Fri, 12 Jun 1998 01:26:53 +0200
-             From: Hugo van der Sanden 
-             Subject: Re: Misparsing s///x
-     Branch: perl
-           ! pod/perlre.pod
-____________________________________________________________________________
-[  1120] By: gsar                                  on 1998/06/12  06:51:08
-        Log: applied patch, with indentation tweaks
-             From: Ilya Zakharevich 
-             Message-Id: <199806110803.EAA09149@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_66] Remove REG_ALIGN junk
-             Date: Thu, 11 Jun 1998 04:03:58 -0400 (EDT)
-     Branch: perl
-           ! regcomp.c regcomp.h regexec.c
-____________________________________________________________________________
-[  1119] By: gsar                                  on 1998/06/11  17:42:07
-        Log: make REG_INFTY default to something saner when sizeof(short) > 2
-             Message-Id: 
-             Date:    Thu, 11 Jun 1998 11:50:07 EDT
-             From:    Andy Dougherty 
-             Subject: Re: [PATCH for tests] Regexp fails on long string 
-     Branch: perl
-           ! regcomp.h
-____________________________________________________________________________
-[  1118] By: gsar                                  on 1998/06/11  07:09:06
-        Log: regen embedvar.h
-     Branch: perl
-           ! embedvar.h
-____________________________________________________________________________
-[  1117] By: gsar                                  on 1998/06/11  06:45:52
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806100751.DAA05441@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_66] Bugs with (?{}), $^R and many-to-many subst
-             Date: Wed, 10 Jun 1998 03:51:47 -0400 (EDT)
-     Branch: perl
-	   ! interp.sym intrpvar.h op.c op.h perl.c regcomp.c regcomp.h
-           ! regexec.c regexp.h t/op/pat.t t/op/subst.t
-____________________________________________________________________________
-[  1116] By: gsar                                  on 1998/06/11  06:35:54
-        Log: misc win32 fixes
-             From: "Douglas Lankshear" 
-             Subject: [PATCH 5.004_66]
-             Date: Wed, 10 Jun 1998 11:28:27 -0700
-             Message-ID: <001a01bd949d$8fd18050$a32fa8c0@tau.Active>
-     Branch: perl
-           ! ObjXSub.h perl.c win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1115] By: gsar                                  on 1998/06/11  06:33:21
-        Log: Message-ID: <19980610005325.D162@cdata.tvnet.hu>
-             Date: Wed, 10 Jun 1998 00:53:25 +0200
-             From: Laszlo Molnar 
-             Subject: [PATCH for _66] Makefile.SH problem on dos/djgpp
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[  1114] By: gsar                                  on 1998/06/11  06:31:34
-        Log: back out change#1111 and add alternative patch:
-             From: Ilya Zakharevich 
-             Message-Id: <199806101538.LAA07293@monk.mps.ohio-state.edu>
-             Subject: Re: PATCH for study/foo/
-             Date: Wed, 10 Jun 1998 11:38:58 -0400 (EDT)
-     Branch: perl
-           ! pp.c sv.c
-____________________________________________________________________________
-[  1113] By: gsar                                  on 1998/06/11  02:59:23
-        Log: fix outdated bytecode.pl
-     Branch: perl
-           ! bytecode.h bytecode.pl byterun.c byterun.h
-____________________________________________________________________________
-[  1112] By: gsar                                  on 1998/06/10  07:56:06
-        Log: Added patch, regenerated perly.c and perly.c.diff
-             Message-Id: 
-             Date: Sun, 31 May 1998 12:56:14 -0500 (CDT)
-             From: Stephen McCamant 
-             Subject: [PATCH] too many RV2GVs in *foo{THING}
-     Branch: perl
-           ! perly.c perly.c.diff perly.y t/op/gv.t
-____________________________________________________________________________
-[  1111] By: gsar                                  on 1998/06/10  07:40:30
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806100309.XAA04974@monk.mps.ohio-state.edu>
-             Subject: Re: PATCH for study/foo/
-             Date: Tue, 9 Jun 1998 23:09:55 -0400 (EDT)
-     Branch: perl
-           ! pp.c
-____________________________________________________________________________
-[  1110] By: gsar                                  on 1998/06/10  07:37:04
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806100219.WAA04865@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_66] -DL and PERL_DEBUG_MSTATS unravelled
-             Date: Tue, 9 Jun 1998 22:19:02 -0400 (EDT)
-     Branch: perl
-           ! pod/perldebug.pod
-____________________________________________________________________________
-[  1109] By: gsar                                  on 1998/06/10  07:35:29
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806100302.XAA04958@monk.mps.ohio-state.edu>
-             Subject: Re: [PATCH 5.004_66] REG_INFTY patch corrected
-             Date: Tue, 9 Jun 1998 23:02:52 -0400 (EDT)
-     Branch: perl
-           ! regcomp.h
-____________________________________________________________________________
-[  1108] By: gsar                                  on 1998/06/10  07:31:25
-        Log: Added patch, tweaked other places affected by name change
-             Message-ID: <19980610005417.G162@cdata.tvnet.hu>
-             Date: Wed, 10 Jun 1998 00:54:17 +0200
-             From: Laszlo Molnar 
-             Subject: [PATCH] file name DynaLoader.pm.PL is 8.3 unfriendly
-     Branch: perl
-          +> ext/DynaLoader/DynaLoader_pm.PL
-           - ext/DynaLoader/DynaLoader.pm.PL
-	   ! MANIFEST ext/DynaLoader/Makefile.PL win32/Makefile
-           ! win32/makefile.mk
-____________________________________________________________________________
-[  1107] By: gsar                                  on 1998/06/10  07:24:20
-        Log: Message-ID: <19980610005342.E162@cdata.tvnet.hu>
-             Date: Wed, 10 Jun 1998 00:53:42 +0200
-             From: Laszlo Molnar 
-             Subject: [PATCH for _66] new version of README.dos
-     Branch: perl
-           ! README.dos
-____________________________________________________________________________
-[  1106] By: gsar                                  on 1998/06/10  07:22:31
-        Log: Message-ID: <19980610005404.F162@cdata.tvnet.hu>
-             Date: Wed, 10 Jun 1998 00:54:04 +0200
-             From: Laszlo Molnar 
-             Subject: [PATCH for _66] op/taint.t problem on dos/djgpp
-     Branch: perl
-           ! t/op/taint.t
-____________________________________________________________________________
-[  1105] By: gsar                                  on 1998/06/10  07:21:21
-        Log: Applied patch, followed by tweaks to *.sym and `perl embed.pl`
-             From: Ilya Zakharevich 
-             Message-Id: <199806090216.WAA02041@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_66] Resend of RE cache patch (modified)
-             Date: Mon, 8 Jun 1998 22:16:56 -0400 (EDT)
-     Branch: perl
-	   ! embed.h embedvar.h global.sym intrpvar.h mg.c perl.h
-           ! perlvars.h pp_ctl.c proto.h sv.c
-____________________________________________________________________________
-[  1104] By: gsar                                  on 1998/06/10  07:06:01
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806090210.WAA02027@monk.mps.ohio-state.edu>
-             Subject: Lost chunk of RE jumbo patch
-             Date: Mon, 8 Jun 1998 22:10:52 -0400 (EDT)
-     Branch: perl
-           + t/op/regexp_noamp.t
-____________________________________________________________________________
-[  1103] By: gsar                                  on 1998/06/10  07:04:20
-        Log: From: Ilya Zakharevich 
-             Message-Id: <199806090207.WAA02015@monk.mps.ohio-state.edu>
-             Subject: [PATCH 5.004_66] Combined OS/2 support
-             Date: Mon, 8 Jun 1998 22:07:48 -0400 (EDT)
-     Branch: perl
-           ! os2/Changes os2/diff.configure os2/os2.c
-____________________________________________________________________________
-[  1102] By: gsar                                  on 1998/06/10  07:00:08
-        Log: Message-Id: <199803140103.UAA04839@monk.mps.ohio-state.edu>
-             Date:    Fri, 13 Mar 1998 20:03:52 EST
-             From:    Ilya Zakharevich 
-             Subject: [PATCH 5.004_62 5_004_04m1] pod2html again
-     Branch: perl
-           ! lib/Pod/Html.pm
-____________________________________________________________________________
-[  1101] By: gsar                                  on 1998/06/10  06:55:20
-        Log: From: Ilya Zakharevich 
-             Subject: Re: 5.004_65 uninitialized variable regexec.c (2)
-             Date: Thu, 28 May 1998 01:28:54 -0400 (EDT)
-     Branch: perl
-           ! regexec.c
-____________________________________________________________________________
-[  1100] By: gsar                                  on 1998/06/10  06:52:50
-        Log: updated MANIFEST for previous change
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[  1099] By: gsar                                  on 1998/06/10  06:51:08
-        Log: Mangled patch, needed hand-tweaks, along with binmode for rs.t:
-             Message-Id: <3.0.5.32.19980605110840.009e12b0@ous.edu>
-             Date: Fri, 05 Jun 1998 11:08:40 -0700
-             From: Dan Sugalski 
-             Subject: Re: [PATCH 5.004_66]Add record read capability to <>
-     Branch: perl
-           + t/base/rs.t
-           ! perl.h pod/perlvar.pod sv.c
-____________________________________________________________________________
-[  1098] By: gsar                                  on 1998/06/10  06:36:59
-        Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-             Message-Id: <9806042022.AA10418@claudius.bfsec.bt.co.uk>
-             Subject: [PATCH fror 5.004_66] DB_File-1.60
-             Date: Thu, 4 Jun 1998 21:22:35 +0100 (BST)
-     Branch: perl
-           + ext/DB_File/dbinfo
-	   ! MANIFEST ext/DB_File/Changes ext/DB_File/DB_File.pm
-	   ! ext/DB_File/DB_File.xs ext/DB_File/typemap t/lib/db-btree.t
-           ! t/lib/db-hash.t t/lib/db-recno.t
-____________________________________________________________________________
-[  1097] By: gsar                                  on 1998/06/10  06:33:16
-        Log: Message-ID: <19980604134731.D24343@perlsupport.com>
-             Date: Thu, 4 Jun 1998 13:47:31 -0400
-             From: Chip Salzenberg 
-             Subject: [PATCH] Invalidate method cache on C
-     Branch: perl
-           ! scope.c t/op/method.t
-____________________________________________________________________________
-[  1096] By: gsar                                  on 1998/06/10  06:30:51
-        Log: From: Norton Allen 
-             Message-Id: <199806031908.PAA04183@bottesini.harvard.edu>
-             Subject: [PATCH] _66 MM_Unix.pm for QNX
-             Date: Wed, 3 Jun 1998 15:08:33 -0400 (edt)
-     Branch: perl
-           ! lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
-[  1095] By: gsar                                  on 1998/06/10  06:29:21
-        Log: From: Norton Allen 
-             Message-Id: <199806031909.PAA04358@bottesini.harvard.edu>
-             Subject: [PATCH] _66 proto.h
-             Date: Wed, 3 Jun 1998 15:09:14 -0400 (edt)
-     Branch: perl
-           ! proto.h
-____________________________________________________________________________
-[  1094] By: gsar                                  on 1998/06/10  06:26:39
-        Log: Applied relevant parts of:
-             From: Paul Johnson 
-             Date: Wed, 3 Jun 1998 19:07:55 +0100 (BST)
-             Message-Id: <199806031807.TAA04100@west-tip.transeda.com>
-             Subject: [PATCH] Enhancing xsubpp's support for C++
-     Branch: perl
-           ! lib/ExtUtils/xsubpp
-____________________________________________________________________________
-[  1093] By: gsar                                  on 1998/06/10  06:22:54
-        Log: Message-ID: <19980603112219.B7638@asic.sc.ti.com>
-             Date: Wed, 3 Jun 1998 11:22:19 -0500
-             From: Graham Barr 
-             Subject: [PATCH perl5.004_04-m4] fix for undef as last arg to setsockopt
-     Branch: perl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1092] By: gsar                                  on 1998/06/10  06:20:44
-        Log: Message-Id: <199806030919.KAA03527@sale-wts>
-             Date: Wed, 3 Jun 1998 10:20:06 +0100 (BST)
-             From: Alan Burlison 
-             Subject: [PATCH 5.004_66] ExtUtils::Installed.pm and ExtUtils::Packlist.pm
-     Branch: perl
-           ! lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
-____________________________________________________________________________
-[  1091] By: gsar                                  on 1998/06/10  06:18:42
-        Log: Message-Id: <3.0.5.32.19980601122229.00a58420@ous.edu>
-             Date: Mon, 01 Jun 1998 12:22:29 -0700
-             From: SYSTEM@cedar.osshe.edu (by way of Dan Sugalski )
-             Subject: [PATCH 5.004_66] proto.h change to make byterun() visible to VMS
-     Branch: perl
-           ! proto.h
-____________________________________________________________________________
-[  1090] By: gsar                                  on 1998/06/10  06:14:24
-        Log: A tweaked version of:
-             Date: Mon, 1 Jun 1998 12:05:47 -0700
-             From: SYSTEM@cedar.osshe.edu
-             Message-Id: <980601120547.20617d54@cedar.osshe.edu>
-             Subject: [PATCH 5.004_66] Fix problem with SDBM makefile on VMS
-     Branch: perl
-           ! ext/SDBM_File/sdbm/Makefile.PL
-____________________________________________________________________________
-[  1089] By: gsar                                  on 1998/06/10  05:58:00
-        Log: Message-Id: 
-             Date: Fri, 29 May 1998 23:52:26 -0500 (CDT)
-             From: Stephen McCamant 
-             Subject: [PATCH] Re: Uninitialised error from -M()
-     Branch: perl
-           ! op.c t/op/stat.t
-____________________________________________________________________________
-[  1088] By: gsar                                  on 1998/06/10  05:55:24
-        Log: Date: Sat, 30 May 1998 08:07:01 -0400
-             From: lvirden@cas.org (Larry Virden)
-             Message-Id: <199805301207.IAA08856@cas.org>
-             Subject: PATCH for pod and warning notice
-     Branch: perl
-           ! pod/perlguts.pod
-____________________________________________________________________________
-[  1087] By: gsar                                  on 1998/06/10  05:52:05
-        Log: From: Andy Dougherty 
-             Date: Mon, 8 Jun 1998 14:45:36 -0400 (EDT)
-             Message-Id: 
-             Subject: [PATCH 5.004_66] Config_66-01
-     Branch: perl
-	   ! Configure MANIFEST Porting/Glossary Porting/config.sh
-           ! Porting/config_H config_h.SH
-____________________________________________________________________________
-[  1086] By: gsar                                  on 1998/06/10  05:46:38
-        Log: Message-Id: <3.0.5.32.19980608161314.00a0a880@ous.edu>
-             Date: Mon, 08 Jun 1998 16:13:14 -0700
-             From: Dan Sugalski 
-             Subject: [PATCH 5.004_66] Documentation patch for Semaphore.pm
-     Branch: perl
-           ! ext/Thread/Thread/Semaphore.pm
-____________________________________________________________________________
-[  1085] By: gsar                                  on 1998/06/10  05:44:44
-        Log: Message-Id: <3.0.5.32.19980608161002.00a64a70@ous.edu>
-             Date: Mon, 08 Jun 1998 16:10:02 -0700
-             From: Dan Sugalski 
-             Subject: [PATCH 5.004_66]Doc & feature patch for Thread::Queue
-     Branch: perl
-           - vms/descrip.mms
-           ! ext/Thread/Thread/Queue.pm
-____________________________________________________________________________
-[  1084] By: gsar                                  on 1998/06/10  05:38:11
-        Log: Message-Id: <3.0.5.32.19980608153828.00a81ea0@ous.edu>
-             Date: Mon, 08 Jun 1998 15:38:28 -0700
-             From: Dan Sugalski 
-             Subject: [PATCH POINTER 5.004_66]A configuration system for VMS perl
-     Branch: perl
-	   + configure.com vms/descrip_mms.template vms/munchconfig.c
-           + vms/subconfigure.com
-           - vms/config.vms vms/fndvers.com
-           ! MANIFEST README.vms lib/ExtUtils/MM_VMS.pm
-____________________________________________________________________________
-[  1083] By: gsar                                  on 1998/06/10  05:07:04
-        Log: xsubpp enhancements ($CPAN/authors/id/ILYAZ/patches/diff_xsubpp_65), a
-             variant of:
-             Message-Id: <199712131231.HAA04125@monk.mps.ohio-state.edu>
-             Date:    Sat, 13 Dec 1997 07:31:02 EST
-             From:    Ilya Zakharevich 
-             Subject: 5.004_55: xsubpp: new keywords INTERFACE C_ARGS
-     Branch: perl
-           ! XSUB.h lib/ExtUtils/xsubpp pod/perlxs.pod
-____________________________________________________________________________
-[  1082] By: gsar                                  on 1998/06/10  04:52:26
-        Log: add newer malloc.c from Ilya Zakharevich 
-             (from $CPAN/authors/id/ILYAZ/patches/diff_malloc_65)
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[  1081] By: gsar                                  on 1998/06/10  03:45:10
-        Log: reverse integrate contents of win32 branch into mainline
-     Branch: perl
-          !> (integrate 44 files)
-____________________________________________________________________________
-[  1080] By: gsar                                  on 1998/06/09  17:37:55
-        Log: `p4 integrate -b ASPerl && p4 resolve -at`
-     Branch: asperl
-          !> (integrate 43 files)
-____________________________________________________________________________
-[  1079] By: gsar                                  on 1998/06/09  00:59:06
-        Log: add examples of diff(1) usage
-     Branch: win32/perl
-           ! Porting/patching.pod
-____________________________________________________________________________
-[  1078] By: gsar                                  on 1998/06/09  00:52:23
-        Log: undo change#1077
-     Branch: win32/perl
-           ! sv.c
-____________________________________________________________________________
-[  1077] By: gsar                                  on 1998/06/06  16:47:32
-        Log: make sv_setsv() treat freed SVs like SVt_NULL
-     Branch: win32/perl
-           ! sv.c
-____________________________________________________________________________
-[  1076] By: gsar                                  on 1998/06/05  19:03:14
-        Log: delete undiscussed AS changes for PPD (broke .packlist
-             mechanism)
-     Branch: win32/perl
-           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[  1075] By: gsar                                  on 1998/06/05  18:18:44
-        Log: add AS patch#26 (rename THIS to PERL_OBJEC_THIS to avoid clash
-             with the xsubpp-generated symbol)
-     Branch: win32/perl
-	   ! ObjXSub.h perl.c perl.h pp_ctl.c pp_hot.c toke.c
-           ! win32/dl_win32.xs
-____________________________________________________________________________
-[  1074] By: gsar                                  on 1998/06/04  22:45:18
-        Log: add AS patch#25 (allow B build with -DPERL_OBJECT)
-     Branch: win32/perl
-	   ! ObjXSub.h byterun.h embed.h embedvar.h ext/B/B.xs intrpvar.h
-           ! objpp.h proto.h util.c win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1073] By: nick                                  on 1998/06/04  17:18:14
-        Log: resolve -at win32 branch into ansiperl
-     Branch: ansiperl
-	  +> ObjXSub.h XSLock.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
-	  +> ipsock.h ipstdio.h objpp.h t/lib/h2ph.h t/lib/h2ph.pht
-          +> t/lib/h2ph.t win32/GenCAPI.pl
-          !> (integrate 127 files)
-____________________________________________________________________________
-[  1072] By: gsar                                  on 1998/06/04  01:49:24
-        Log: document CORE::GLOBAL:: and global overriding, fix up
-             File::DosGlob, testsuited and all
-     Branch: win32/perl
-           ! lib/File/DosGlob.pm pod/perlsub.pod t/lib/dosglob.t
-____________________________________________________________________________
-[  1071] By: gsar                                  on 1998/06/03  22:12:55
-        Log: add AS patch#24, remove one other instance of error_no
-             that was missed (patch#23 was intentionally skipped)
-     Branch: win32/perl
-	   ! embedvar.h globals.c perlvars.h win32/makedef.pl
-           ! win32/runperl.c
-____________________________________________________________________________
-[  1070] By: gsar                                  on 1998/06/01  19:42:06
-        Log: fix Liblist.pm to tolerate backslashen in paths
-     Branch: win32/perl
-           ! lib/ExtUtils/Liblist.pm
-____________________________________________________________________________
-[  1069] By: gsar                                  on 1998/06/01  07:43:02
-        Log: @INC construction on win32 cleaned up
-             - perl.dll location based paths should be much more reliable now
-             - registry stuff unchanged
-             - Config.pm now has all the installfoolib entries for MakeMaker et al
-     Branch: win32/perl
-	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-	   ! win32/config_h.PL win32/config_sh.PL win32/makefile.mk
-           ! win32/runperl.c win32/win32.c win32/win32.h
-____________________________________________________________________________
-[  1068] By: gsar                                  on 1998/05/31  21:52:18
-        Log: semctl tweak
-             Message-Id: <199805312127.QAA06750@gbarr.connect.net>
-             Date:    Sun, 31 May 1998 16:27:33 CDT
-             From:    Graham Barr 
-             Subject: Not OK: perl 5.00466 on i586-linux-thread 2.0.31 
-     Branch: win32/perl
-           ! doio.c
-____________________________________________________________________________
-[  1067] By: gsar                                  on 1998/05/31  21:07:44
-        Log: minimal fix to enable compiling with -DMULTIPLICITY
-             (non-threadsafe regcomp.c globals need revisiting)
-     Branch: win32/perl
-	   ! ObjXSub.h embedvar.h interp.sym intrpvar.h regcomp.c
-           ! win32/GenCAPI.pl win32/makedef.pl
-____________________________________________________________________________
-[  1066] By: gsar                                  on 1998/05/30  21:35:37
-        Log: integrate mainline changes (ASPerl branch is identical to
-             win32 branch as of this change)
-     Branch: asperl
-	  !> MANIFEST Todo.5.005 embed.h ext/POSIX/POSIX.xs global.sym
-	  !> lib/ExtUtils/Mksymlists.pm pod/perldelta.pod pp_sys.c
-	  !> t/op/ipcmsg.t t/op/ipcsem.t 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
-____________________________________________________________________________
-[  1065] By: gsar                                  on 1998/05/30  21:13:06
-        Log: change#1060 was inexplicably missing some of the "ensure
-             AS stuff does no harm" fixes
-     Branch: win32/perl
-           ! embed.h global.sym win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1064] By: gsar                                  on 1998/05/30  21:10:27
-        Log: integrate mainline to pick up trivial changes
-     Branch: win32/perl
-          !> MANIFEST pp_sys.c
-
-----------------
-Version 5.004_66
-----------------
-
-____________________________________________________________________________
-[  1063] By: mbeattie                              on 1998/05/29  15:19:55
-        Log: Remove duplicate win32/TEST line from MANIFEST.
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[  1062] By: mbeattie                              on 1998/05/29  15:18:33
-        Log: Add missing ";" to pp_umask (spotted by Jarkko Hietaniemi).
-     Branch: perl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1061] By: mbeattie                              on 1998/05/29  12:02:17
-        Log: Integrate from win32 branch into mainline (this now pulls in the
-             asperl stuff).
-     Branch: perl
-	  +> ObjXSub.h XSLock.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
-	  +> ipsock.h ipstdio.h objpp.h t/lib/h2ph.h t/lib/h2ph.pht
-          +> t/lib/h2ph.t win32/GenCAPI.pl
-          !> (integrate 104 files)
-____________________________________________________________________________
-[  1060] By: gsar                                  on 1998/05/29  11:05:50
-        Log: reverse integrate asperl branch contents (phew!)
-             - various fixups to ensure AS stuff does no harm
-             - adjust win32/makefiles for the new directory layout (new layout
-             looks rather a muddle--needs rework)
-             - verified build & test on NT and Solaris/gcc
-     Branch: win32/perl
-	  +> ObjXSub.h XSLock.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
-          +> ipsock.h ipstdio.h objpp.h win32/GenCAPI.pl
-	   ! ext/POSIX/POSIX.xs lib/ExtUtils/Mksymlists.pm 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
-          !> (integrate 77 files)
-____________________________________________________________________________
-[  1059] By: gsar                                  on 1998/05/29  08:33:56
-        Log: asperl branch verified to build w/o PERL_OBJECT on Solaris and NT
-     Branch: asperl
-           ! util.c
-____________________________________________________________________________
-[  1058] By: gsar                                  on 1998/05/29  08:31:09
-        Log: type xtext for *.t that were missing it
-     Branch: asperl
-           ! t/lib/thread.t t/op/nothread.t
-____________________________________________________________________________
-[  1057] By: gsar                                  on 1998/05/29  08:28:46
-        Log: stray t/op/ipc*.t fixups
-     Branch: win32/perl
-           ! t/op/ipcmsg.t t/op/ipcsem.t
-____________________________________________________________________________
-[  1056] By: gsar                                  on 1998/05/29  07:41:49
-        Log: fixups to make it build and pass tests under both compilers
-     Branch: asperl
-           ! ObjXSub.h objpp.h proto.h
-____________________________________________________________________________
-[  1055] By: gsar                                  on 1998/05/29  07:22:51
-        Log: integrate mainline changes
-     Branch: asperl
-          +> t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t
-          !> (integrate 69 files)
-     Branch: win32/perl
-           ! Todo.5.005 pod/perldelta.pod
-____________________________________________________________________________
-[  1054] By: gsar                                  on 1998/05/29  05:04:03
-        Log: add a txt_compare() routine to t/h2ph.t for DOSISH sanity
-     Branch: win32/perl
-           ! t/lib/h2ph.t
-____________________________________________________________________________
-[  1053] By: gsar                                  on 1998/05/29  05:01:54
-        Log: misc changes
-             - remove code that works around lack of I_STDARG (we're a happy ANSI family)
-             - leave dump_foo() stubs when not -DDEBUGGING for consistent symbol exports
-     Branch: win32/perl
-	   ! deb.c dump.c ext/DynaLoader/dlutils.c ext/POSIX/POSIX.xs
-	   ! perl.h perlio.c proto.h regcomp.c run.c scope.c sv.c util.c
-           ! x2p/util.c x2p/util.h
-____________________________________________________________________________
-[  1052] By: gsar                                  on 1998/05/29  02:31:44
-        Log: merge changes#1014,1038 from maintbranch
-     Branch: win32/perl
-           + t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t
-	   ! MANIFEST Makefile.SH doio.c ext/POSIX/POSIX.xs gv.c
-	   ! lib/Benchmark.pm lib/ExtUtils/MM_Unix.pm pod/perldebug.pod
-	   ! pod/perldiag.pod pod/perlfunc.pod pod/perlop.pod
-	   ! pod/perlre.pod pod/perltie.pod pod/perltrap.pod sv.c
-           ! t/io/pipe.t utils/h2ph.PL
-____________________________________________________________________________
-[  1051] By: gsar                                  on 1998/05/29  01:38:51
-        Log: regenerate win32/config_H.?c
-     Branch: win32/perl
-           ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-____________________________________________________________________________
-[  1050] By: gsar                                  on 1998/05/29  01:32:41
-        Log: integrate mainline
-     Branch: win32/perl
-           ! win32/Makefile win32/makefile.mk
-	  !> Configure INSTALL MANIFEST Porting/Glossary Porting/config.sh
-	  !> Porting/config_H Porting/patching.pod config_h.SH doio.c
-	  !> ext/POSIX/hints/sunos_4.pl hints/bsdos.sh hints/openbsd.sh
-	  !> hints/solaris_2.sh hints/sunos_4_1.sh hints/svr4.sh
-	  !> lib/FileHandle.pm patchlevel.h perl.h plan9/config.plan9
-	  !> vms/config.vms win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1049] By: gsar                                  on 1998/05/29  00:57:05
-        Log: fix various shenanigans with C, BC and VC builds now pass
-             all tests
-     Branch: asperl
-	   ! globals.c win32/Makefile win32/makefile.mk win32/runperl.c
-           ! win32/win32.h win32/win32iop.h
-____________________________________________________________________________
-[  1048] By: mbeattie                              on 1998/05/28  18:07:24
-        Log: Integrated win32 branch into mainline. The changes to t/op/ipc*.t
-             in change 1043 clashed badly with changes made in the win32
-             branch. I did an accept on the win32 branch version for now.
-     Branch: perl
-          +> t/op/die.t
-          !> (integrate 52 files)
-____________________________________________________________________________
-[  1047] By: mbeattie                              on 1998/05/28  17:59:18
-        Log: From: Andy Dougherty 
-             Subject: [PATCH 5.004_65] Config_65-02-03.diff: SunOS and Solaris hints
-             Date: Thu, 28 May 1998 13:27:25 -0400 (EDT)
-             Subject: [PATCH 5.004_65] Config_65-03-04.diff:  semctl probing
-             Date: Thu, 28 May 1998 13:28:21 -0400 (EDT)
-     Branch: perl
-	   ! Configure MANIFEST Porting/Glossary Porting/config.sh
-	   ! Porting/config_H config_h.SH doio.c ext/POSIX/hints/sunos_4.pl
-	   ! hints/solaris_2.sh hints/sunos_4_1.sh perl.h vms/config.vms
-           ! win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1046] By: mbeattie                              on 1998/05/28  17:55:48
-        Log: Back out change 1043 since Andy's forthcoming Config patch
-             includes a modified version.
-     Branch: perl
-           ! Configure config_h.SH doio.c perl.h
-____________________________________________________________________________
-[  1045] By: mbeattie                              on 1998/05/28  17:52:40
-        Log: Bump patchlevel.h to 66.
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[  1044] By: mbeattie                              on 1998/05/28  17:51:49
-        Log: From: Daniel Grisinger 
-             Subject: [PATCH] _04m2  perlfunc.pod (fwd)
-             Date: Fri, 15 May 1998 16:18:26 -0600 (MDT)
-             (above minus the t/system.t test pending checking)
-             Subject: [PATCH] 5.004[04|65]  FileHandle.pm
-             Date: Wed, 20 May 1998 19:50:50 -0600 (MDT)
-             Subject: [PATCH] _65 and _04  patching.pod
-             Date: Thu, 21 May 1998 16:33:03 -0600 (MDT)
-     Branch: perl
-           ! Porting/patching.pod lib/FileHandle.pm pod/perlfunc.pod
-____________________________________________________________________________
-[  1043] By: mbeattie                              on 1998/05/28  17:42:21
-        Log: This change really is:
-             Subject: [PATCH] 5.004_65: the infamous semctl()
-             Date: Sun, 24 May 1998 16:13:21 +0300 (EET DST)
-             From: Jarkko Hietaniemi 
-             
-             Change 1041 claimed to be this patch but was really:
-             Subject: [PATCH] 5.004_65: t/op/ipc*.t
-             Date: Sat, 16 May 1998 00:52:39 +0300 (EET DST)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! Configure config_h.SH doio.c perl.h
-____________________________________________________________________________
-[  1042] By: mbeattie                              on 1998/05/28  17:36:57
-        Log: From: Andy Dougherty 
-             Subject: [PATCH 5.004_65] Config_65-01: lchown() detection.
-             Date: Thu, 28 May 1998 13:25:21 -0400 (EDT)
-             Subject: [PATCH 5.004_65] Config_65-01-02.diff: INSTALL and hints fixes
-             Date: Thu, 28 May 1998 13:26:18 -0400 (EDT)
-     Branch: perl
-	   ! Configure INSTALL Porting/Glossary Porting/config.sh
-	   ! Porting/config_H config_h.SH doio.c hints/bsdos.sh
-	   ! hints/openbsd.sh hints/svr4.sh plan9/config.plan9
-	   ! vms/config.vms win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[  1041] By: mbeattie                              on 1998/05/28  17:34:26
-        Log: Subject: [PATCH] 5.004_65: the infamous semctl()
-             Date: Sun, 24 May 1998 16:13:21 +0300 (EET DST)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! t/op/ipcmsg.t t/op/ipcsem.t
-____________________________________________________________________________
-[  1040] By: gsar                                  on 1998/05/28  02:06:47
-        Log: tweaks to enable Borland build
-     Branch: asperl
-           ! win32/makefile.mk win32/win32.c
-____________________________________________________________________________
-[  1039] By: gsar                                  on 1998/05/27  23:29:22
-        Log: remove C<#define index strchr> from win32.h (unused, and the
-             pollution causes spurious variable name changes in extensions)
-     Branch: win32/perl
-           ! win32/win32.h
-____________________________________________________________________________
-[  1038] By: TimBunce                              on 1998/05/27  17:29:15
-        Log: Assorted patches:
-             
-             ------  BUILD PROCESS  ------
-             
-             Title:  "add utilities to make test dependencies"
-             From:  Robin Barker 
-             Msg-ID:  <2607.9805211303@tempest.cise.npl.co.uk>
-             Files:  Makefile.SH
-             
-             Title:  "Add 'make nok' complement to 'make ok'"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  Makefile.SH
-             
-             Title:  "further h2ph patches (add enum support)"
-             From:  Billy 
-             Msg-ID:              
-             Files:  MANIFEST t/lib/h2ph.pht t/lib/h2ph.t utils/h2ph.PL
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "Fix %! error spelling and add perldiag.pod entry"
-             From:  Graham Barr , Tim Bunce
-             Msg-ID:  <19980524193101.A573@pobox.com>
-             Files:  pod/perldiag.pod gv.c
-             
-             Title:  "Remove obsolete Win32 uppercasing ENV code"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805201510.LAA28676@aatma.engin.umich.edu>
-             Files:  perl.c
-             
-             Title:  "Don't mung $! on implicit close"
-             From:  Chip Salzenberg 
-             Msg-ID:  <19980525113309.A15845@perlsupport.com>
-             Files:  doio.c
-             
-             Title:  "Maint trial 3 fails on SunOS 4.1.3 with Sun cc"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  doio.c
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "doc patch: you canna return an array ( list context: || vs or)"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  
-             Files:  pod/perldebug.pod pod/perlfunc.pod pod/perltie.pod pod/perltrap.pod
-             
-             Title:  "doc patch: @ needs escaping in m/\Q\E/ environment"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perlop.pod pod/perlre.pod
-             
-             Title:  "Discrepancy between perlop.pod and m// operator", "Doc fix: Only
-             with /g does list context get matches without parens"
-             From:  Greg Chapman , Tom Christiansen
-             , Tom Phoenix
-             
-             Msg-ID:  <000201bd865e$f3bf72e0$1f04400c@assigned.well.com>,
-             <199805231559.JAA21316@jhereg.perl.com>,
-             
-             Files:  pod/perlop.pod
-             
-             Title:  "Documenting last/next/redo even further"
-             From:  "M.J.T. Guy" , Tom Phoenix
-             
-             Msg-ID:  ,
-             
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Documenting last/next/redo within continue block"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Document stat return in scalar context"
-             From:  Mark-Jason Dominus 
-             Files:  pod/perlfunc.pod
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "Better LD_RUN_PATH handling on IRIX"
-             From:  "W. Phillip Moore" 
-             Msg-ID:  <199805212206.SAA07504@zappa.morgan.com>
-             Files:  lib/ExtUtils/MM_Unix.pm
-             
-             Title:  "Dealing with  in POSIX and SunOS"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  ext/POSIX/hints/sunos_4.pl hints/sunos_4_1.sh ext/POSIX/POSIX.xs
-             
-             ------  LIBRARY  ------
-             
-             Title:  "Fix FileHandle.pm example bug"
-             From:  Daniel Grisinger 
-             Msg-ID:  
-             Files:  lib/FileHandle.pm
-             
-             Title:  "Add zero/negative $count docs for Benchmark.pm"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  lib/Benchmark.pm
-             
-             ------  PORTABILITY - GENERAL  ------
-             
-             Title:  "Add test suite recommendations to Porting/patching.pod"
-             From:  Daniel Grisinger 
-             Msg-ID:  
-             Files:  Porting/patching.pod
-             
-             ------  TESTS  ------
-             
-             Title:  "Fix looping bug in t/io/pipe.t"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  t/io/pipe.t
-     Branch: maint-5.004/perl
-	   ! MANIFEST Makefile.SH Porting/patching.pod doio.c
-	   ! ext/POSIX/POSIX.xs ext/POSIX/hints/sunos_4.pl gv.c
-	   ! hints/sunos_4_1.sh lib/Benchmark.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/FileHandle.pm perl.c pod/perldebug.pod pod/perldiag.pod
-	   ! pod/perlfunc.pod pod/perlop.pod pod/perlre.pod pod/perltie.pod
-	   ! pod/perltrap.pod t/io/pipe.t t/lib/h2ph.pht t/lib/h2ph.t
-           ! utils/h2ph.PL
-____________________________________________________________________________
-[  1037] By: gsar                                  on 1998/05/27  16:18:30
-        Log: add AS patch#22 (fix to make die_exit.t pass)
-     Branch: asperl
-           ! win32/runperl.c
-____________________________________________________________________________
-[  1036] By: gsar                                  on 1998/05/27  12:50:34
-        Log: add AS patch#21 (misc. fixes)
-     Branch: asperl
-	   ! ObjXSub.h lib/ExtUtils/MM_Unix.pm objpp.h perl.h
-	   ! win32/GenCAPI.pl win32/Makefile win32/makefile.mk
-           ! win32/win32.c win32/win32sck.c
-____________________________________________________________________________
-[  1035] By: gsar                                  on 1998/05/26  17:26:17
-        Log: more changes to satisfy non-debug VC build (C-API doesn't
-             build, and the testsuite still won't run)
-     Branch: asperl
-	   ! ObjXSub.h deb.c dump.c ext/POSIX/POSIX.xs globals.c proto.h
-           ! regcomp.c run.c scope.c sv.c util.c win32/GenCAPI.pl
-____________________________________________________________________________
-[  1034] By: gsar                                  on 1998/05/26  17:20:22
-        Log: remove doubled hunk (perforce auto-integrate oddity)
-     Branch: win32/perl
-           ! pod/perldiag.pod
-____________________________________________________________________________
-[  1033] By: gsar                                  on 1998/05/26  13:39:14
-        Log: tweaks to make it build with the Borland compiler.  Won't run
-             testsuite because @INC intuition from location of perlcore.dll seems
-             to be broken.  Also, system() and qx// seem broken as well.
-     Branch: asperl
-	   ! ObjXSub.h doio.c embedvar.h ext/POSIX/POSIX.xs interp.sym
-	   ! intrpvar.h objpp.h perl.c perl.h perlvars.h proto.h regcomp.c
-           ! regexec.c toke.c
-____________________________________________________________________________
-[  1032] By: gsar                                  on 1998/05/24  23:13:05
-        Log: tweak Benchmark.pm to restore old timestr() behavior--show wall secs
-     Branch: win32/perl
-           ! lib/Benchmark.pm
-____________________________________________________________________________
-[  1031] By: gsar                                  on 1998/05/24  05:36:44
-        Log: tweak makefiles
-     Branch: asperl
-           ! win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[  1030] By: gsar                                  on 1998/05/23  18:58:23
-        Log: merge changes#1016,1018 from maintbranch (1017 is n/a)
-     Branch: win32/perl
-           ! pp_sys.c t/op/die.t
-____________________________________________________________________________
-[  1029] By: gsar                                  on 1998/05/23  18:55:13
-        Log: merge change#1015 from maintbranch (must revisit 1014 later, is
-             incomplete)
-     Branch: win32/perl
-           ! embed.h global.sym op.c pp.c proto.h sv.c
-____________________________________________________________________________
-[  1028] By: gsar                                  on 1998/05/23  18:25:14
-        Log: merge change#1013 from maintbranch (1012 is n/a)
-     Branch: win32/perl
-           ! toke.c
-____________________________________________________________________________
-[  1027] By: gsar                                  on 1998/05/23  18:02:21
-        Log: merge change#1011 from maintbranch
-     Branch: win32/perl
-	   ! perl.c pod/perldiag.pod pod/perlfunc.pod pp_ctl.c
-           ! utils/perlbug.PL
-____________________________________________________________________________
-[  1026] By: nick                                  on 1998/05/23  08:45:04
-        Log: Ids of msgs and sems can be zero, so change || die to a defined() test
-     Branch: win32/perl
-           ! t/op/ipcmsg.t t/op/ipcsem.t
-____________________________________________________________________________
-[  1025] By: nick                                  on 1998/05/23  08:36:36
-        Log: Resolve win32 into ansiperl
-     Branch: ansiperl
-          +> t/op/die.t
-          !> (integrate 42 files)
-____________________________________________________________________________
-[  1024] By: gsar                                  on 1998/05/21  21:11:12
-        Log: more mingw32 tweaks
-     Branch: win32/perl
-           ! ext/POSIX/POSIX.xs t/pragma/locale.t
-____________________________________________________________________________
-[  1023] By: gsar                                  on 1998/05/21  19:15:02
-        Log: fix problematic change#965 from maintbranch
-             Message-Id: <199805162145.RAA02552@monk.mps.ohio-state.edu>
-             Date:    Sat, 16 May 1998 17:45:22 EDT
-             From:    Ilya Zakharevich 
-             Subject: Re: Not OK (after all) : perl 5.00404 +MAINT_TRIAL_3 on sun4-solaris 2.5
-     Branch: win32/perl
-           ! gv.c op.c t/comp/proto.t
-____________________________________________________________________________
-[  1022] By: gsar                                  on 1998/05/21  01:37:04
-        Log: fix POSIX for mingw32
-     Branch: win32/perl
-           ! ext/POSIX/POSIX.xs win32/config.gc win32/config_H.gc
-____________________________________________________________________________
-[  1021] By: gsar                                  on 1998/05/20  15:02:21
-        Log: remove strupr() from perl.c
-     Branch: win32/perl
-           ! perl.c
-____________________________________________________________________________
-[  1020] By: TimBunce                              on 1998/05/19  22:41:40
-        Log: Title:  "fix up descrepancy in h2ph test"
-             From:  Tim Bunce
-             Files:  t/lib/h2ph.pht
-     Branch: maint-5.004/perl
-           ! t/lib/h2ph.pht
-____________________________________________________________________________
-[  1019] By: TimBunce                              on 1998/05/19  22:17:15
-        Log: Title:  "add a test to check return value from successful s/// (there was none!)"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805161759.NAA12995@aatma.engin.umich.edu>
-             Files:  t/op/subst.t
-             
-             Title:  "fix up descrepancy in h2ph test"
-             From:  Tim Bunce
-             Files:  t/lib/h2ph.t
-     Branch: maint-5.004/perl
-           ! t/lib/h2ph.t t/op/subst.t
-____________________________________________________________________________
-[  1018] By: TimBunce                              on 1998/05/19  21:56:32
-        Log: Title:  "fix mem leak and core dump from change 1016"
-             From:  Tim Bunce
-             Files:  pp_sys.c
-     Branch: maint-5.004/perl
-           ! pp_sys.c
-____________________________________________________________________________
-[  1017] By: TimBunce                              on 1998/05/19  21:26:03
-        Log: Title:  "qsort, Win32 "POSIX" plus other devel changes for patch-compatibility"
-             From:  Gurusamy Sarathy 
-             Files:  MANIFEST cflags.SH pod/perlembed.pod pod/perlfunc.pod
-             pod/perlguts.pod pod/perlref.pod pod/perlrun.pod
-             pod/perlxstut.pod av.h embed.h hv.h op.h perl.h pp.h
-             proto.h Todo av.c cygwin32/perlgcc cygwin32/perlld deb.c
-             doio.c doop.c ext/ODBM_File/ODBM_File.xs
-             ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
-             gv.c hv.c interp.sym lib/AutoSplit.pm lib/Cwd.pm
-             lib/FindBin.pm lib/strict.pm lib/ExtUtils/Command.pm
-             lib/ExtUtils/Liblist.pm lib/ExtUtils/MakeMaker.pm
-             lib/ExtUtils/Manifest.pm lib/File/Basename.pm
-             lib/File/Find.pm lib/File/Path.pm lib/Getopt/Long.pm
-             lib/Getopt/Std.pm lib/Net/Ping.pm lib/Pod/Html.pm
-             lib/Pod/Text.pm lib/Term/Cap.pm lib/Test/Harness.pm mg.c
-             op.c perl.c pod/pod2latex.PL pod/pod2man.PL pp.c pp_ctl.c
-             pp_hot.c pp_sys.c scope.c sv.c t/lib/posix.t
-             t/pragma/locale.t utils/perldoc.PL win32/win32.h toke.c
-             universal.c util.c win32/Makefile win32/config_H.bc
-             win32/config_H.vc win32/dl_win32.xs win32/makedef.pl
-             win32/makefile.mk win32/perlglob.c win32/runperl.c
-             win32/win32.c win32/win32sck.c x2p/s2p.PL
-     Branch: maint-5.004/perl
-	   ! MANIFEST Todo av.c av.h cflags.SH cygwin32/perlgcc
-	   ! cygwin32/perlld deb.c doio.c doop.c embed.h
-	   ! ext/ODBM_File/ODBM_File.xs ext/POSIX/Makefile.PL
-	   ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs gv.c hv.c hv.h
-	   ! interp.sym lib/AutoSplit.pm lib/Cwd.pm lib/ExtUtils/Command.pm
-	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MakeMaker.pm
-	   ! lib/ExtUtils/Manifest.pm lib/File/Basename.pm lib/File/Find.pm
-	   ! lib/File/Path.pm lib/FindBin.pm lib/Getopt/Long.pm
-	   ! lib/Getopt/Std.pm lib/Net/Ping.pm lib/Pod/Html.pm
-	   ! lib/Pod/Text.pm lib/Term/Cap.pm lib/Test/Harness.pm
-	   ! lib/strict.pm mg.c op.c op.h perl.c perl.h pod/perlembed.pod
-	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlref.pod
-	   ! pod/perlrun.pod pod/perlxstut.pod pod/pod2latex.PL
-	   ! pod/pod2man.PL pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h
-	   ! scope.c sv.c t/lib/posix.t t/pragma/locale.t toke.c
-	   ! universal.c util.c utils/perldoc.PL win32/Makefile
-	   ! win32/config_H.bc win32/config_H.vc win32/dl_win32.xs
-	   ! win32/makedef.pl win32/makefile.mk win32/perlglob.c
-	   ! win32/runperl.c win32/win32.c win32/win32.h win32/win32sck.c
-           ! x2p/s2p.PL
-____________________________________________________________________________
-[  1016] By: TimBunce                              on 1998/05/19  20:37:42
-        Log: Title:  "eval { die $obj }; die; calls $obj->PROPAGATE"
-             From:  Graham Barr 
-             Msg-ID:  <3561D147.7F3E0C88@ti.com>
-             Files:  pp_sys.c t/op/die.t
-     Branch: maint-5.004/perl
-           ! pp_sys.c t/op/die.t
-____________________________________________________________________________
-[  1015] By: TimBunce                              on 1998/05/19  20:07:01
-        Log: Title:  "loosen const sub re-defined warnings"
-             From:  Doug MacEachern 
-             Msg-ID:  <355F713B.6A4C0F04@pobox.com>
-             Files:  proto.h global.sym op.c pp.c sv.c
-     Branch: maint-5.004/perl
-           ! global.sym op.c pp.c proto.h sv.c
-____________________________________________________________________________
-[  1014] By: TimBunce                              on 1998/05/19  19:48:18
-        Log: Title:  "s/FORMLINE/FORMAT/ in sv.c"
-             From:  Hugo van der Sanden 
-             Msg-ID:  
-             Files:  sv.c
-             
-             Title:  "Further h2ph patches (including a test suite)"
-             From:  Billy 
-             Msg-ID:  
-             Files:  MANIFEST t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t utils/h2ph.PL
-     Branch: maint-5.004/perl
-           + t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t
-           ! MANIFEST sv.c utils/h2ph.PL
-____________________________________________________________________________
-[  1013] By: TimBunce                              on 1998/05/19  19:14:13
-        Log: Title:  "Remove change 673 (Allow empty BLOCK in code)"
-             From:  Gurusamy Sarathy , Ilya Zakharevich
-             
-             Msg-ID:  <199805151857.OAA29586@monk.mps.ohio-state.edu>,
-             <199805151931.PAA23086@aatma.engin.umich.edu>,
-             <19980129002112Z13378-6931+226@scapa.cs.ualberta.ca>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[  1012] By: TimBunce                              on 1998/05/19  19:03:32
-        Log: Title:  "Further SysV sem/msg fixes and removal of non-portable tests"
-             From:  Andy Dougherty , Jarkko Hietaniemi
-             
-             Msg-ID:  <199805182028.XAA15717@alpha.hut.fi>,
-             
-             Files:  MANIFEST Configure config_h.SH perl.h doio.c t/op/ipcmsg.t
-             t/op/ipcsem.t
-     Branch: maint-5.004/perl
-	   ! Configure MANIFEST config_h.SH doio.c perl.h t/op/ipcmsg.t
-           ! t/op/ipcsem.t
-____________________________________________________________________________
-[  1011] By: TimBunce                              on 1998/05/19  17:55:38
-        Log: Title:  "interp.sym is missing C after -e fix"
-             From:  jan.dubois@ibm.net (Jan Dubois)
-             Msg-ID:  <355d460d.7621669@smtp1.ibm.net>
-             Files:  embed.h interp.sym
-             
-             Title:  "Undo changed error message which breaks Tk"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805161557.LAA08106@aatma.engin.umich.edu>
-             Files:  pp_ctl.c
-             
-             Title:  "Minor fixups to new -e script code"
-             From:  Tim Bunce
-             Files:  perl.c
-             
-             Title:  "Remove old diags not relevant after -e fix"
-             From:  Andy Dougherty , Gurusamy Sarathy
-             , Tim.Bunce@ig.co.uk (Tim Bunce)
-             Msg-ID:  <199805172143.RAA07896@aatma.engin.umich.edu>,
-             <199805181335.OAA07008@toad.ig.co.uk>,
-             
-             Files:  pod/perldiag.pod
-             
-             Title:  "more examples for vec()"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod
-             
-             Title:  ""make ok" (perlbug -ok) should not be interactive"
-             From:  Hugo van der Sanden , Jarkko Hietaniemi
-             
-             Msg-ID:  <199805160942.MAA20171@alpha.hut.fi>,
-             
-             Files:  utils/perlbug.PL
-     Branch: maint-5.004/perl
-	   ! embed.h interp.sym perl.c pod/perldiag.pod pod/perlfunc.pod
-           ! pp_ctl.c utils/perlbug.PL
-____________________________________________________________________________
-[  1010] By: gsar                                  on 1998/05/18  09:40:58
-        Log: integrate mainline changes (untested)
-     Branch: asperl
-	  +> Porting/Contract Porting/patching.pod README.beos beos/nm.c
-	  +> ext/DynaLoader/DynaLoader.pm.PL ext/POSIX/hints/bsdos.pl
-	  +> ext/POSIX/hints/freebsd.pl ext/POSIX/hints/netbsd.pl
-	  +> ext/POSIX/hints/openbsd.pl hints/beos.sh hints/openbsd.sh
-	  +> pod/perldelta4.pod t/op/defins.t t/op/die.t t/op/die_exit.t
-          +> t/op/ipcmsg.t t/op/ipcsem.t t/op/pos.t utils/perlcc.PL
-           - ext/DynaLoader/DynaLoader.pm
-           ! win32/win32.c
-          !> (integrate 234 files)
-____________________________________________________________________________
-[  1009] By: gsar                                  on 1998/05/18  07:51:19
-        Log: more whitespace tweaks from maintbranch
-     Branch: win32/perl
-           ! av.c perl.c pp_ctl.c pp_sys.c toke.c
-____________________________________________________________________________
-[  1008] By: gsar                                  on 1998/05/17  22:37:20
-        Log: sundry whitespace cleanups from maintbranch
-     Branch: win32/perl
-           ! Porting/Contract XSUB.h av.c gv.c mg.c perl.c
-____________________________________________________________________________
-[  1007] By: gsar                                  on 1998/05/16  21:59:46
-        Log: integrate mainline
-     Branch: win32/perl
-	  !> INSTALL doio.c lib/strict.pm perl.c perl.h pod/perldebug.pod
-          !> t/op/ipcmsg.t t/op/ipcsem.t
-____________________________________________________________________________
-[  1006] By: gsar                                  on 1998/05/16  21:54:23
-        Log: merge changes#996,998,999 from maintbranch
-     Branch: win32/perl
-           ! Changes5.004 Porting/makerel t/base/lex.t toke.c
-____________________________________________________________________________
-[  1005] By: gsar                                  on 1998/05/16  21:49:47
-        Log: merge change#995 from maintbranch, tweak interp.sym and
-             run embed.pl
-     Branch: win32/perl
-           ! embedvar.h interp.sym intrpvar.h perl.c
-____________________________________________________________________________
-[  1004] By: gsar                                  on 1998/05/16  21:27:18
-        Log: merge changes#989,990,992 from maintbranch
-     Branch: win32/perl
-           + t/op/die.t
-           ! MANIFEST installperl pod/perldiag.pod pp_ctl.c t/op/ipcmsg.t
-____________________________________________________________________________
-[  1003] By: gsar                                  on 1998/05/16  21:16:47
-        Log: sync config*.gc with others, and verify that nothing from
-             change#986 needs to be merged
-     Branch: win32/perl
-           ! win32/config.gc win32/config_H.gc
-____________________________________________________________________________
-[  1002] By: gsar                                  on 1998/05/16  21:04:04
-        Log: merge change#985 from maintbranch
-     Branch: win32/perl
-	   ! lib/AutoSplit.pm lib/ExtUtils/Manifest.pm pp_ctl.c pp_sys.c
-           ! util.c
-____________________________________________________________________________
-[  1001] By: gsar                                  on 1998/05/16  17:53:16
-        Log: add a test to check return value from successful s/// (there was none!)
-     Branch: win32/perl
-           ! t/op/subst.t
-____________________________________________________________________________
-[  1000] By: gsar                                  on 1998/05/16  17:42:34
-        Log: fix misplaced SPAGAIN that caused successful s/// to fail to
-             return a value on the stack
-     Branch: win32/perl
-           ! pp_hot.c
-____________________________________________________________________________
-[   999] By: TimBunce                              on 1998/05/15  23:04:30
-        Log: Title:  "Update Porting/makerel script for perforce dir structure"
-             From:  Tim Bunce
-             Files:  Porting/makerel
-     Branch: maint-5.004/perl
-           ! Porting/makerel
-____________________________________________________________________________
-[   998] By: TimBunce                              on 1998/05/15  22:49:55
-        Log: Title:  "Updated Changes file for trial 3"
-             From:  Tim Bunce
-             Files:  Changes
-     Branch: maint-5.004/perl
-           ! Changes
-____________________________________________________________________________
-[   997] By: gsar                                  on 1998/05/15  22:21:41
-        Log: merge changes#982,984 from maintbranch
-     Branch: win32/perl
-	   ! gv.c lib/English.pm perl.c pod/perlfunc.pod t/io/pipe.t
-           ! t/op/exec.t t/op/ipcsem.t util.c utils/h2ph.PL utils/h2xs.PL
-____________________________________________________________________________
-[   996] By: TimBunce                              on 1998/05/15  22:19:32
-        Log: Title:  "Negative array subscript unrecognized in regex"
-             From:  Mark-Jason Dominus ,
-             h.sanden@elsevier.nl (Hugo van der Sanden)
-             Msg-ID:  <19980425040819.13828.qmail@plover.com>,
-             <199805151514.RAA04121@dorlas.elsevier.nl>
-             Files:  t/base/lex.t toke.c
-             
-             Title:  "Remove e_fp from toke.c after change 955"
-             From:  Tim Bunce
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! t/base/lex.t toke.c
-____________________________________________________________________________
-[   995] By: TimBunce                              on 1998/05/15  22:08:32
-        Log: Title:  "Fix -e security hole (no longer uses temp file)"
-             From:  Tim Bunce
-             Files:  embed.h perl.h perl.c
-     Branch: maint-5.004/perl
-           ! embed.h perl.c perl.h
-____________________________________________________________________________
-[   994] By: gsar                                  on 1998/05/15  22:08:17
-        Log: merge change#981 from maintbranch, add XXX comment about
-             supporting %! for usethreads case
-     Branch: win32/perl
-           ! gv.c op.c
-____________________________________________________________________________
-[   992] By: TimBunce                              on 1998/05/15  22:01:32
-        Log: Title:  "install non-backwards compatible .pm files into archlib"
-             From:  Tim Bunce
-             Files:  installperl
-             
-             Title:  "revert "Can't locate" message to original for maintenance"
-             From:  Tim Bunce
-             Msg-ID:  <199804240047.SAA24155@den-mdev1.co.csgsystems.com>
-             Files:  pod/perldiag.pod pp_ctl.c
-     Branch: maint-5.004/perl
-           ! installperl pod/perldiag.pod pp_ctl.c
-____________________________________________________________________________
-[   991] By: gsar                                  on 1998/05/15  21:35:00
-        Log: reverse integrate ansiperl (all except the
-             C stuff, and the duplicate hunks)
-             i.e. prototype fixes, perldoc.PL enhancements, and s/comment/comment_t/g
-     Branch: win32/perl
-	  !> bytecode.h byterun.c cv.h ext/attrs/attrs.pm
-	  !> ext/attrs/attrs.xs pod/perlop.pod pp_hot.c sv.c toke.c
-          !> utils/perldoc.PL
-____________________________________________________________________________
-[   990] By: TimBunce                              on 1998/05/15  16:54:18
-        Log: Title:  "Add tests for die $ref"
-             From:  Graham Barr 
-             Msg-ID:  <355C6297.121B576B@ti.com>
-             Files:  MANIFEST t/op/die.t
-     Branch: maint-5.004/perl
-           + t/op/die.t
-           ! MANIFEST
-____________________________________________________________________________
-[   989] By: TimBunce                              on 1998/05/15  16:38:19
-        Log: Title:  "Fix t/op/ipcmsg.t for Digital UNIX"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199805151337.QAA01174@alpha.hut.fi>
-             Files:  t/op/ipcmsg.t
-     Branch: maint-5.004/perl
-           ! t/op/ipcmsg.t
-____________________________________________________________________________
-[   988] By: mbeattie                              on 1998/05/15  16:28:08
-        Log: Patch from Sarathy to fix up win32 integration. Patch from Jarkko
-             (manually applied and tweaked) to fix up SysV IPC semaphores for
-             Solaris and Linux (pre-glibc and glibc). Fix up t/op/ipcmsg.t and
-             t/op/ipcsem.t for platforms which wanted to skip test. Completely
-             disable ipcsem.t since it doesn't seem to work properly even when
-             not skipped. This is _65.
-     Branch: perl
-	   ! INSTALL doio.c lib/strict.pm perl.c perl.h pod/perldebug.pod
-           ! t/op/ipcmsg.t t/op/ipcsem.t
-____________________________________________________________________________
-[   987] By: nick                                  on 1998/05/15  16:03:35
-        Log: Integrate win32
-     Branch: ansiperl
-	  +> Porting/Contract Porting/patching.pod README.beos beos/nm.c
-	  +> ext/DynaLoader/DynaLoader.pm.PL ext/POSIX/hints/bsdos.pl
-	  +> ext/POSIX/hints/freebsd.pl ext/POSIX/hints/netbsd.pl
-	  +> ext/POSIX/hints/openbsd.pl hints/beos.sh hints/openbsd.sh
-	  +> pod/perldelta4.pod t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
-          +> t/op/pos.t utils/perlcc.PL
-           - ext/DynaLoader/DynaLoader.pm
-          !> (integrate 208 files)
-____________________________________________________________________________
-[   986] By: TimBunce                              on 1998/05/15  15:28:45
-        Log: Title:  "Patches for BeOS port of Perl, courtesy of Tom Spindler"
-             From:  Jarkko Hietaniemi , Tom Spindler
-             Msg-ID:  <199805042312.CAA09025@alpha.hut.fi>
-             Files:  MANIFEST Configure config_h.SH hints/beos.sh pod/perlfunc.pod
-             Porting/Glossary README.beos beos/nm.c lib/Term/ReadLine.pm
-             plan9/config.plan9 pp_sys.c t/io/pipe.t vms/config.vms
-             win32/config.bc win32/config.vc win32/config_H.bc
-             win32/config_H.vc
-     Branch: maint-5.004/perl
-           + README.beos beos/nm.c hints/beos.sh
-	   ! Configure MANIFEST Porting/Glossary config_h.SH
-	   ! lib/Term/ReadLine.pm plan9/config.plan9 pod/perlfunc.pod
-	   ! pp_sys.c t/io/pipe.t vms/config.vms win32/config.bc
-           ! win32/config.vc win32/config_H.bc win32/config_H.vc
-____________________________________________________________________________
-[   985] By: TimBunce                              on 1998/05/15  15:02:43
-        Log: Title:  "allow die $ref"
-             From:  Graham Barr , Tim.Bunce@ig.co.uk (Tim Bunce)
-             Msg-ID:  <199805151351.OAA01985@toad.ig.co.uk>, <355C3E67.AF25B9F7@ti.com>
-             Files:  pp_ctl.c pp_sys.c util.c
-             
-             Title:  "ExtUtils::Manifest could truncate files during "make dist""
-             From:  "James E Jurach Jr." ,
-             koenig@kulturbox.de (Andreas J. Koenig)
-             Msg-ID:  <199805111048.MAA02573@arrakis.int.ein.cz>,
-             
-             Files:  lib/ExtUtils/Manifest.pm
-             
-             Title:  "Autosplit doesn't like upper case letters in sub names on VMS"
-             From:  Dan Sugalski 
-             Msg-ID:  <3.0.5.32.19980330152332.009cb130@osshe.edu>
-             Files:  lib/AutoSplit.pm
-             
-             Title:  "AutoSplit/AutoLoaded subs: give useful line numbers in warnings etc"
-             From:  "Jesse N. Glick" , koenig@anna.mind.de (Andreas
-             J. Koenig), larry@wall.org (Larry Wall)
-             Msg-ID:  <199709292015.NAA09627@wall.org>, <342FCDDF.23534195@sig.bsh.com>,
-             ,
-             
-             Files:  lib/AutoSplit.pm
-     Branch: maint-5.004/perl
-	   ! lib/AutoSplit.pm lib/ExtUtils/Manifest.pm pp_ctl.c pp_sys.c
-           ! util.c
-____________________________________________________________________________
-[   984] By: TimBunce                              on 1998/05/15  14:18:52
-        Log: ------  CORE LANGUAGE  ------
-             
-             Title:  "Fix close pipe returning status from wrong child"
-             From:  "M.J.T. Guy" , kstar@chapin.edu@ig.co.uk ()
-             Msg-ID:  <199805142313.TAA02684@chapin.edu>,
-             
-             Files:  t/io/pipe.t util.c
-             
-             Title:  "Avoid English.pm triggering load of Errno.pm"
-             From:  Tim Bunce
-             Files:  gv.c lib/English.pm
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "Document child exit cause a parent sleep to end early"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "BSD Platforms need STRUCT_TM_HASZONE for POSIX"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  MANIFEST ext/POSIX/hints/bsdos.pl ext/POSIX/hints/freebsd.pl
-             ext/POSIX/hints/netbsd.pl ext/POSIX/hints/openbsd.pl
-             
-             Title:  "MM_VMS.pm fixes for building external library"
-             From:  Dan Sugalski 
-             Msg-ID:  <3.0.5.32.19980511160542.009dd480@ous.edu>
-             Files:  lib/ExtUtils/MM_VMS.pm
-             
-             Title:  "Appease picky DEC compiler in POSIX.xs"
-             From:  Dan Sugalski 
-             Msg-ID:  <3.0.5.32.19980511161434.009f8bb0@ous.edu>
-             Files:  ext/POSIX/POSIX.xs
-             
-             ------  TESTS  ------
-             
-             Title:  "Fix constant detection in t/op/ipcsem.t for Digit UNIX"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199805121212.PAA15351@alpha.hut.fi>
-             Files:  t/op/ipcsem.t
-             
-             Title:  "Fix doc bug for system() return value"
-             From:  Daniel Grisinger 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod t/op/exec.t
-             
-             ------  UTILITIES  ------
-             
-             Title:  "Avoid possible constant autoload loop"
-             From:  "M.J.T. Guy" , Graham Barr , Ilya
-             Zakharevich 
-             Msg-ID:  <199805141910.PAA26994@monk.mps.ohio-state.edu>,
-             <355B475A.C5AD4B90@ti.com>,
-             
-             Files:  utils/h2xs.PL
-             
-             Title:  "Further improvements to h2ph.PL"
-             From:  kstar@chapin.edu
-             Msg-ID:  <199805130241.WAA25459@chapin.edu>
-             Files:  utils/h2ph.PL
-     Branch: maint-5.004/perl
-	   + ext/POSIX/hints/bsdos.pl ext/POSIX/hints/freebsd.pl
-           + ext/POSIX/hints/netbsd.pl ext/POSIX/hints/openbsd.pl
-	   ! MANIFEST ext/POSIX/POSIX.xs gv.c lib/English.pm
-	   ! lib/ExtUtils/MM_VMS.pm pod/perlfunc.pod t/io/pipe.t
-           ! t/op/exec.t t/op/ipcsem.t util.c utils/h2ph.PL utils/h2xs.PL
-
-----------------
-Version 5.004_64
-----------------
-
-____________________________________________________________________________
-[   983] By: mbeattie                              on 1998/05/15  14:04:17
-        Log: Integrate win32 branch into mainline.
-     Branch: perl
-          +> Porting/patching.pod t/op/defins.t
-          !> (integrate 107 files)
-____________________________________________________________________________
-[   982] By: TimBunce                              on 1998/05/15  12:33:26
-        Log: Title:  "comment init_postdump_symbols issues"
-             From:  Tim Bunce
-             Files:  perl.c
-             
-             Title:  "Improve sort docs re SUBNAME"
-             From:  circle@azstarnet.com
-             Msg-ID:  <199804281828.LAA22737@andromeda.azstarnet.com>
-             Files:  pod/perlfunc.pod
-     Branch: maint-5.004/perl
-           ! perl.c pod/perlfunc.pod
-____________________________________________________________________________
-[   981] By: TimBunce                              on 1998/05/15  11:47:28
-        Log: Title:  "Add hook to tie %! to external Errno.pm module (not included)"
-             From:  Graham Barr 
-             Msg-ID:  <355080CD.1111BC81@ti.com>
-             Files:  gv.c
-     Branch: maint-5.004/perl
-           ! gv.c
-____________________________________________________________________________
-[   980] By: gsar                                  on 1998/05/15  06:16:13
-        Log: add doc for C<+{}> vs. C<{;}> disambiguation
-     Branch: win32/perl
-           ! pod/perlref.pod
-____________________________________________________________________________
-[   979] By: gsar                                  on 1998/05/15  04:59:47
-        Log: tweaks to win32 makefiles.  This version builds and passes all
-             tests on Solaris/gcc, win32/[bv]c.  Looks all set to go.
-     Branch: win32/perl
-           ! win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[   978] By: gsar                                  on 1998/05/15  02:41:58
-        Log: merge changes#922,944,949,965,970 from maintbranch
-     Branch: win32/perl
-           + Porting/patching.pod t/op/defins.t
-	   ! MANIFEST Porting/makerel ext/POSIX/POSIX.pod gv.c gv.h hv.c
-	   ! lib/File/Find.pm op.c pod/Makefile pod/perlfunc.pod
-	   ! pod/perlguts.pod pod/perlop.pod pod/pod2man.PL
-	   ! t/lib/filefind.t t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
-           ! utils/perlbug.PL
-____________________________________________________________________________
-[   977] By: gsar                                  on 1998/05/15  02:15:25
-        Log: merge changes#906,907,909,910 from maintbranch
-     Branch: win32/perl
-	   ! MANIFEST doio.c doop.c embed.h embedvar.h global.sym
-	   ! keywords.h lib/Carp.pm lib/File/Basename.pm mg.c opcode.h
-	   ! perl.c perl.h pod/perldiag.pod pp.c pp_hot.c proto.h sv.c
-           ! util.c
-____________________________________________________________________________
-[   976] By: gsar                                  on 1998/05/15  01:34:53
-        Log: merge change#905 from maintbranch, minor fixes to get
-             clean build+test on Solaris
-     Branch: win32/perl
-	   ! doop.c dump.c embed.h embedvar.h lib/strict.pm mg.c op.h
-	   ! opcode.h pod/perlop.pod pod/perlre.pod pp_ctl.c pp_hot.c
-           ! regcomp.c sv.c t/op/taint.t toke.c
-____________________________________________________________________________
-[   975] By: gsar                                  on 1998/05/14  23:34:26
-        Log: merge change#904 from maintbranch
-     Branch: win32/perl
-	   ! doop.c ext/DynaLoader/dl_aix.xs ext/IO/lib/IO/Socket.pm
-	   ! ext/NDBM_File/NDBM_File.pm lib/strict.pm lib/subs.pm
-	   ! lib/vars.pm op.c perl.c pod/perldiag.pod pod/perlembed.pod
-	   ! pod/perlfunc.pod pod/perlsec.pod pp_ctl.c sv.c utils/h2ph.PL
-           ! vms/descrip.mms
-____________________________________________________________________________
-[   974] By: gsar                                  on 1998/05/14  23:11:05
-        Log: merge change#897 from maintbranch
-     Branch: win32/perl
-	   ! Porting/Contract Todo doio.c emacs/ptags embed.h ext/IO/IO.pm
-	   ! ext/Opcode/Opcode.pm lib/Carp.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/Pod/Html.pm lib/Term/ReadLine.pm lib/chat2.pl opcode.h
-	   ! opcode.pl perl.c pod/perlapio.pod pod/perlcall.pod
-	   ! pod/perldebug.pod pod/perldelta.pod pod/perldelta4.pod
-	   ! pod/perldiag.pod pod/perlembed.pod pod/perlfaq2.pod
-	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
-	   ! pod/perlfaq7.pod pod/perlfaq8.pod pod/perlform.pod
-	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlhist.pod
-	   ! pod/perlipc.pod pod/perllocale.pod pod/perlmodlib.pod
-	   ! pod/perlop.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
-	   ! pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
-	   ! pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod pod/pod2man.PL
-	   ! pod/roffitall pp.c pp_sys.c t/TEST t/op/gv.t t/op/hashwarn.t
-	   ! t/op/substr.t vms/vms.c win32/config.bc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.vc win32/win32.c
-           ! x2p/find2perl.PL
-____________________________________________________________________________
-[   973] By: gsar                                  on 1998/05/14  22:24:26
-        Log: integrate mainline
-     Branch: win32/perl
-           + Porting/Contract
-	  +> README.beos beos/nm.c ext/POSIX/hints/bsdos.pl
-	  +> ext/POSIX/hints/freebsd.pl ext/POSIX/hints/netbsd.pl
-	  +> ext/POSIX/hints/openbsd.pl hints/beos.sh pod/perldelta4.pod
-          +> utils/perlcc.PL
-	   ! MANIFEST Todo doio.c emacs/ptags embed.h ext/IO/IO.pm
-	   ! ext/Opcode/Opcode.pm ext/Socket/Socket.xs hints/irix_5.sh
-	   ! hints/netbsd.sh hv.c lib/Benchmark.pm lib/Carp.pm
-	   ! lib/ExtUtils/Install.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/Pod/Html.pm lib/Term/ReadLine.pm lib/chat2.pl opcode.h
-	   ! opcode.pl perl.c perl.h pod/perlapio.pod pod/perlcall.pod
-	   ! pod/perldebug.pod pod/perldelta.pod pod/perldiag.pod
-	   ! pod/perlembed.pod pod/perlfaq2.pod pod/perlfaq3.pod
-	   ! pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfaq7.pod
-	   ! pod/perlfaq8.pod pod/perlform.pod pod/perlfunc.pod
-	   ! pod/perlguts.pod pod/perlhist.pod pod/perlipc.pod
-	   ! pod/perllocale.pod pod/perlmodlib.pod pod/perlop.pod
-	   ! pod/perlre.pod pod/perlref.pod pod/perlrun.pod
-	   ! pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
-	   ! pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod pod/pod2man.PL
-	   ! pod/roffitall pp.c pp_hot.c pp_sys.c sv.c t/TEST t/op/gv.t
-	   ! t/op/hashwarn.t t/op/substr.t vms/vms.c win32/config.bc
-	   ! win32/config.vc win32/config_H.bc win32/config_H.vc
-           ! win32/win32.c x2p/find2perl.PL
-          !> (integrate 59 files)
-____________________________________________________________________________
-[   972] By: nick                                  on 1998/05/14  18:09:01
-        Log: Changes to allow compiler with gcc-2.8.1 in C++ mode,
-             Remove K&R style functions, avoid struct/typedef clash. 
-     Branch: ansiperl
-           ! bytecode.h byterun.c sv.c toke.c
-____________________________________________________________________________
-[   971] By: TimBunce                              on 1998/05/14  16:52:19
-        Log: 
-             Title:  "fix C (pp_refgen fumbles when G_SCALAR, no args)"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805070402.AAA02858@aatma.engin.umich.edu>
-             Files:  pp.c
-     Branch: maint-5.004/perl
-           ! pp.c
-____________________________________________________________________________
-[   970] By: TimBunce                              on 1998/05/14  16:18:06
-        Log: 
-             Title:  "perlbug reformatted"
-             From:  Dominic Dunlop , Hugo van der Sanden
-             
-             Msg-ID:  <199805110954.LAA20367@dorlas.elsevier.nl>,
-             ,
-             
-             Files:  utils/perlbug.PL
-     Branch: maint-5.004/perl
-           ! utils/perlbug.PL
-____________________________________________________________________________
-[   969] By: mbeattie                              on 1998/05/14  16:15:09
-        Log: Integrate win32 branch into mainline
-     Branch: perl
-	  +> ext/DynaLoader/DynaLoader.pm.PL hints/openbsd.sh
-          +> t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t t/op/pos.t
-           - ext/DynaLoader/DynaLoader.pm
-          !> (integrate 118 files)
-____________________________________________________________________________
-[   968] By: mbeattie                              on 1998/05/14  16:05:57
-        Log: Bump patchlevel to 65
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   967] By: mbeattie                              on 1998/05/14  16:05:19
-        Log: Another fixup of MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   966] By: mbeattie                              on 1998/05/14  16:02:20
-        Log: Add missing files to MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   965] By: TimBunce                              on 1998/05/14  16:00:11
-        Log: 
-             Title:  "Sub declaration cost reduced from ~500 to ~100 bytes"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199805050607.CAA02050@monk.mps.ohio-state.edu>
-             Files:  gv.h gv.c op.c
-     Branch: maint-5.004/perl
-           ! gv.c gv.h op.c
-____________________________________________________________________________
-[   964] By: mbeattie                              on 1998/05/14  15:58:01
-        Log: Subject: [PATCH] Using Getopts::* with strict vars
-             Date: Wed, 29 Apr 1998 22:48:16 -0700 (PDT)
-             From: Tom Phoenix 
-     Branch: perl
-           ! lib/Getopt/Long.pm lib/Getopt/Std.pm lib/strict.pm
-____________________________________________________________________________
-[   963] By: mbeattie                              on 1998/05/14  15:56:53
-        Log: Subject: [ PATCH 5.004_64 ] Integrated regression tests for compiler
-             Date: Wed, 29 Apr 1998 21:02:36 -0600 (MDT)
-             From: epeschko@den-mdev1 (Ed Peschko)
-     Branch: perl
-           + utils/perlcc.PL
-	   ! MANIFEST Makefile.SH installperl lib/Test/Harness.pm
-           ! pod/Makefile t/TEST t/harness utils/Makefile x2p/Makefile.SH
-____________________________________________________________________________
-[   962] By: mbeattie                              on 1998/05/14  15:45:28
-        Log: From: Dan Sugalski 
-             Subject: [PATCH 5.004_64] Final (I hope) doc patch for Thread.pm
-             Date: Wed, 08 Apr 1998 17:08:48 -0700
-             Subject: [PATCH 5.004_64] Revised second Thread.PM doc patch
-             Date: Fri, 08 May 1998 10:49:16 -0700
-     Branch: perl
-           ! ext/Thread/Thread.pm
-____________________________________________________________________________
-[   961] By: mbeattie                              on 1998/05/14  15:43:39
-        Log: Subject: Consolidated patch to 5.004_64
-             Date: Wed, 08 Apr 1998 19:44:34 -0400 (EDT)
-             From: Charles Bailey 
-     Branch: perl
-	   ! ext/B/byteperl.c lib/ExtUtils/MM_Unix.pm
-	   ! lib/ExtUtils/MM_VMS.pm lib/chat2.pl perl.c pod/perlsub.pod
-	   ! vms/config.vms vms/descrip.mms vms/genconfig.pl
-           ! vms/perlvms.pod
-____________________________________________________________________________
-[   960] By: mbeattie                              on 1998/05/14  15:41:41
-        Log: Subject: Re: ANNOUNCE: Perl 5.005b1t3 (a.k.a. perl5.004_64) is available
-             Date: 07 Apr 1998 18:31:21 +0200
-             From: JVromans@Squirrel.nl (Johan Vromans)
-     Branch: perl
-           ! lib/Getopt/Long.pm
-____________________________________________________________________________
-[   959] By: mbeattie                              on 1998/05/14  15:39:29
-        Log: From: Jarkko Hietaniemi 
-             Subject: Re: [PATCH] 5.004_04 or 5.004_64: Benchmark.pm: add run-for-some-time 
-             Date: Wed, 8 Apr 1998 09:47:45 +0300 (EET DST)
-             Subject: [PATCH] perl 5.004_64+Config_04
-             Date: Thu, 14 May 1998 12:14:07 +0300 (EET DST)
-     Branch: perl
-           ! lib/Benchmark.pm pod/perlfunc.pod
-____________________________________________________________________________
-[   958] By: mbeattie                              on 1998/05/14  15:36:30
-        Log: From: kstar@chapin.edu
-             Subject: [PATCH] hints for Irix 6
-             Date: Mon, 6 Apr 1998 15:14:14 -0400 (EDT)
-             Subject: [PATCH 5.004_64] Threads - an easy way for dual installation
-             Date: Wed, 29 Apr 1998 15:39:46 -0400 (EDT)
-     Branch: perl
-           ! INSTALL hints/irix_6.sh installperl
-____________________________________________________________________________
-[   957] By: mbeattie                              on 1998/05/14  15:33:48
-        Log: Subject: [PATCH] Install extensions with bootstrap (again) in $archlib
-             Date: Mon, 06 Apr 1998 21:09:24 +0200
-             From: Achim Bohnet 
-     Branch: perl
-           ! lib/ExtUtils/Install.pm
-____________________________________________________________________________
-[   956] By: mbeattie                              on 1998/05/14  15:32:39
-        Log: Subject: [PATCH] Config: Irix 5 hints
-             Date: Mon, 6 Apr 1998 13:12:47 -0400 (EDT)
-             From: kstar@O2.chapin.edu
-     Branch: perl
-           ! hints/irix_5.sh
-____________________________________________________________________________
-[   955] By: mbeattie                              on 1998/05/14  15:31:12
-        Log: Subject: PATCH: h2ph produces incorrect code
-             Date: Mon, 6 Apr 1998 23:52:13 +0930 (CST)
-             From: Billy 
-     Branch: perl
-           ! utils/h2ph.PL
-____________________________________________________________________________
-[   954] By: mbeattie                              on 1998/05/14  15:29:27
-        Log: Subject: [PATCH] perldebug.pod
-             Date: Mon, 6 Apr 1998 00:36:57 -0600
-             From: jason stewart 
-     Branch: perl
-           ! pod/perldebug.pod
-____________________________________________________________________________
-[   953] By: mbeattie                              on 1998/05/14  15:28:00
-        Log: From: Dominic Dunlop 
-             Subject: [PATCH 5.004_64]: hints/machten.sh: disable semctl()
-             Date: Wed, 6 May 1998 14:39:32 +0000
-             Subject: [PATCH] Not OK: perl 5.00464 on powerpc-machten 4.1 (hashwarn @INC problem)
-             Date: Sat, 4 Apr 1998 19:44:34 +0000
-     Branch: perl
-           ! hints/machten.sh t/op/hashwarn.t
-____________________________________________________________________________
-[   952] By: mbeattie                              on 1998/05/14  15:23:19
-        Log: New pod/perldelta.pod (previous one branched in last change):
-             Subject: [PATCH 5.004_64] Start new perldelta
-             Date: Thu, 23 Apr 1998 12:12:38 -0400 (EDT)
-             From: Andy Dougherty 
-     Branch: perl
-           + pod/perldelta.pod
-____________________________________________________________________________
-[   951] By: mbeattie                              on 1998/05/14  15:20:43
-        Log: From: Andy Dougherty 
-             Subject: [PATCH for 5.004_04 and 5.004_64] (Was: Obsoleted svr4.sh)
-             Date: Thu, 23 Apr 1998 11:10:15 -0400 (EDT)
-             Subject: [PATCH 5.004_64] Start new perldelta
-             Date: Thu, 23 Apr 1998 12:12:38 -0400 (EDT)
-             (above branched perldelta -> perldelta4, new perldelta will be
-             created/added next change)
-             Subject: [PATCH] BSD Platforms need STRUCT_TM_HASZONE
-             Date: Tue, 12 May 1998 09:58:49 -0400 (EDT)
-     Branch: perl
-	   + ext/POSIX/hints/bsdos.pl ext/POSIX/hints/freebsd.pl
-           + ext/POSIX/hints/netbsd.pl ext/POSIX/hints/openbsd.pl
-          +> pod/perldelta4.pod
-           - pod/perldelta.pod
-           ! MANIFEST hints/svr4.sh
-____________________________________________________________________________
-[   949] By: TimBunce                              on 1998/05/14  15:11:30
-        Log: 
-             Title:  "while($x=<>) no longer warns (implicit defined added)"
-             From:  Nick Ing-Simmons 
-             Msg-ID:  <199805051035.LAA27365@pluto.tiuk.ti.com>
-             Files:  MANIFEST op.c t/op/defins.t
-     Branch: maint-5.004/perl
-           + t/op/defins.t
-           ! MANIFEST op.c
-____________________________________________________________________________
-[   948] By: mbeattie                              on 1998/05/14  15:09:51
-        Log: From: Andy Dougherty 
-             Subject: [PATCH for 5.004_64] Configure patch Config_64-01
-             Date: Tue, 14 Apr 1998 13:04:58 -0400 (EDT)
-             Subject: [PATCH for 5.004_64] Configure patch Config_64-01-02.diff
-             Date: Fri, 17 Apr 1998 11:01:13 -0400 (EDT)
-             Subject: [PATCH for 5.004_64] Configure patch Config_64-02-03.diff
-             Date: Thu, 23 Apr 1998 15:03:20 -0400 (EDT)
-             Subject: [PATCH 5.004_64] Config_64-03-04.diff
-             Date: Wed, 13 May 1998 14:33:30 -0400 (EDT)
-     Branch: perl
-           + README.beos beos/nm.c hints/beos.sh
-	   ! Configure INSTALL MANIFEST Makefile.SH Policy_sh.SH
-	   ! Porting/Glossary Porting/config.sh Porting/config_H
-	   ! Porting/pumpkin.pod Todo cflags.SH config_h.SH
-	   ! djgpp/djgppsed.sh doop.c handy.h hints/dos_djgpp.sh
-	   ! hints/netbsd.sh hints/solaris_2.sh hints/unicos.sh
-	   ! hints/unicosmk.sh hv.h lib/Term/ReadLine.pm perl.h
-	   ! plan9/config.plan9 pod/perlfunc.pod pp.c pp_sys.c sv.h
-	   ! t/io/pipe.t thread.h vms/config.vms win32/config.bc
-           ! win32/config.vc win32/config_H.bc win32/config_H.vc
-____________________________________________________________________________
-[   946] By: TimBunce                              on 1998/05/14  15:07:06
-        Log: 
-             Title:  "Fix PERL_DESTRUCT_LEVEL core dumps"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805062301.TAA24599@aatma.engin.umich.edu>
-             Files:  perl.c sv.c t/op/misc.t
-     Branch: maint-5.004/perl
-           ! perl.c sv.c t/op/misc.t
-____________________________________________________________________________
-[   945] By: mbeattie                              on 1998/05/14  15:00:31
-        Log: Subject: Perl Social Contract
-             Date: 13 Apr 1998 06:16:59 -0700
-             From: Russ Allbery 
-     Branch: perl
-           + Porting/Contract
-____________________________________________________________________________
-[   944] By: TimBunce                              on 1998/05/14  14:59:37
-        Log: 
-             Title:  "5.004_04-m2 Cleanup of test failures"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805070416.AAA03082@aatma.engin.umich.edu>
-             Files:  t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t t/op/taint.t
-             win32/config.bc win32/config.vc
-     Branch: maint-5.004/perl
-	   ! t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t t/op/taint.t
-           ! win32/config.bc win32/config.vc
-____________________________________________________________________________
-[   943] By: mbeattie                              on 1998/05/14  14:58:13
-        Log: From: Joshua.Pritikin@NewYork2.dmg.deuba.com
-             Subject: [PATCH 5.004_64] Test.pm update
-             Date: Sat, 4 Apr 1998 08:33:50 -0500
-             Subject: [PATCH 5.004_64] modcount + comments
-             Date: Fri, 17 Apr 1998 16:07:35 -0400
-     Branch: perl
-           ! lib/Test.pm op.c thrdvar.h
-____________________________________________________________________________
-[   942] By: mbeattie                              on 1998/05/14  14:49:43
-        Log: From: Ilya Zakharevich 
-             Subject: [PATCH 5.004_64] newSV
-             Date: Wed, 8 Apr 1998 03:21:03 -0400 (EDT)
-             Subject: [PATCH 5.004_64] Cryptic error from B::CC
-             Date: Sat, 11 Apr 1998 19:52:25 -0400 (EDT)
-     Branch: perl
-           ! ext/B/B/CC.pm handy.h proto.h sv.c
-____________________________________________________________________________
-[   941] By: mbeattie                              on 1998/05/14  14:47:29
-        Log: From: Ilya Zakharevich 
-             Subject: [PATCH 5.004_64] anydbm.t
-             Date: Sat, 4 Apr 1998 01:39:03 -0500 (EST)
-             Subject: [PATCH 5.004_64] threads on OS/2
-             Date: Sat, 4 Apr 1998 01:44:29 -0500 (EST)
-             Subject: [PATCH 5.004_64] Better handling of Perl DLLs under OS/2
-             Date: Sat, 4 Apr 1998 01:47:58 -0500 (EST)
-             Subject: [PATCH 5.004_64] Immediate stop in debugger
-             Date: Sat, 11 Apr 1998 19:50:58 -0400 (EDT)
-             Subject: [PATCH 5.005_64] ptags broken
-             Date: Sat, 11 Apr 1998 22:08:21 -0400 (EDT)
-             Subject: [PATCH 5.004_64] Document switch syntax via RE
-             Date: Sun, 12 Apr 1998 01:12:33 -0400 (EDT)
-     Branch: perl
-	   ! emacs/ptags lib/ExtUtils/MM_OS2.pm lib/ExtUtils/Mksymlists.pm
-	   ! lib/perl5db.pl os2/Changes os2/Makefile.SHs os2/os2.c
-           ! os2/os2thread.h pod/perlsyn.pod t/lib/anydbm.t
-____________________________________________________________________________
-[   940] By: mbeattie                              on 1998/05/14  14:38:44
-        Log: Subject: [PATCH 5.004_64] Build Stdio and DCLSym modules as part of  normal VMS perl build
-             Date: Fri, 03 Apr 1998 16:01:57 -0800
-             From: Dan Sugalski 
-     Branch: perl
-	   ! vms/descrip.mms vms/ext/DCLsym/Makefile.PL
-           ! vms/ext/Stdio/Makefile.PL vms/ext/Stdio/Stdio.xs
-____________________________________________________________________________
-[   939] By: mbeattie                              on 1998/05/14  14:35:42
-        Log: Subject: [PATCH 5.004_64] perl dies in perl_construct when compiled  with MULTIPLICITY
-             Date: Fri, 03 Apr 1998 13:58:15 -0800
-             From: Dan Sugalski 
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[   938] By: gsar                                  on 1998/05/14  10:53:55
-        Log: merge change#896 from maintbranch
-     Branch: win32/perl
-	   ! doio.c ext/Socket/Socket.xs lib/Class/Struct.pm lib/Cwd.pm
-	   ! lib/File/Find.pm lib/Math/BigInt.pm lib/lib.pm lib/strict.pm
-	   ! op.c pod/perldiag.pod pod/perlfunc.pod pp.c pp_ctl.c sv.c
-           ! t/op/gv.t t/op/misc.t t/op/pack.t
-____________________________________________________________________________
-[   937] By: gsar                                  on 1998/05/14  09:31:34
-        Log: merge change#887 from maintbranch
-     Branch: win32/perl
-           + t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
-	   ! MANIFEST doio.c lib/File/CheckTree.pm lib/Getopt/Long.pm
-	   ! lib/Math/BigFloat.pm lib/Text/ParseWords.pm lib/Text/Wrap.pm
-	   ! lib/base.pm perl.c pod/perlre.pod t/lib/io_sock.t
-	   ! t/lib/io_udp.t t/lib/parsewords.t t/lib/timelocal.t
-           ! t/op/stat.t toke.c utils/h2xs.PL
-____________________________________________________________________________
-[   936] By: gsar                                  on 1998/05/14  09:06:18
-        Log: merge change#886 from maintbranch
-     Branch: win32/perl
-	   ! README.os2 README.vms cop.h ext/DynaLoader/dl_hpux.xs
-	   ! ext/POSIX/POSIX.xs ext/POSIX/hints/linux.pl global.sym
-	   ! hints/aix.sh hints/bsdos.sh hints/dec_osf.sh hints/hpux.sh
-	   ! hints/linux.sh hints/netbsd.sh hints/os2.sh hints/svr4.sh
-	   ! lib/ExtUtils/MM_OS2.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/File/Basename.pm lib/File/Path.pm op.c os2/Makefile.SHs
-	   ! os2/os2.c os2/perl2cmd.pl perl.c perl.h pod/perlguts.pod
-	   ! pod/pod2man.PL pp_ctl.c pp_hot.c pp_sys.c proto.h
-	   ! t/lib/filecopy.t util.c utils/perldoc.PL vms/config.vms
-	   ! vms/descrip.mms vms/ext/Filespec.pm vms/ext/filespec.t
-           ! vms/test.com
-____________________________________________________________________________
-[   935] By: gsar                                  on 1998/05/14  07:00:02
-        Log: merge changes#872,873 from maintbranch
-     Branch: win32/perl
-	   ! Changes5.004 INSTALL lib/ExtUtils/MakeMaker.pm
-	   ! lib/FileHandle.pm lib/Tie/Hash.pm lib/constant.pm
-	   ! lib/integer.pm pod/perl.pod pod/perlbook.pod pod/perldsc.pod
-	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlhist.pod
-	   ! pod/perlop.pod pod/perlre.pod pod/perlrun.pod pod/perlsec.pod
-	   ! pod/perltrap.pod pod/perlvar.pod pod/pod2latex.PL
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   934] By: gsar                                  on 1998/05/14  06:24:38
-        Log: merge changes#755..759,763,764 from maintbranch
-     Branch: win32/perl
-           + hints/openbsd.sh
-	   ! MANIFEST Porting/patchls perl.c perlsdio.h pod/perlfunc.pod
-           ! t/op/pos.t utils/perldoc.PL
-____________________________________________________________________________
-[   933] By: gsar                                  on 1998/05/14  06:07:31
-        Log: merge change#754 from maintbranch
-     Branch: win32/perl
-           ! perl.c
-____________________________________________________________________________
-[   932] By: gsar                                  on 1998/05/14  06:03:50
-        Log: merge changes#752,753 from maintbranch
-     Branch: win32/perl
-           + t/op/pos.t
-	   ! README ext/GDBM_File/GDBM_File.pm
-           ! ext/SDBM_File/sdbm/Makefile.PL pod/perlsyn.pod
-____________________________________________________________________________
-[   931] By: gsar                                  on 1998/05/14  05:51:19
-        Log: merge change#745 from maintbranch
-     Branch: win32/perl
-           + ext/DynaLoader/DynaLoader.pm.PL
-           - ext/DynaLoader/DynaLoader.pm
-           ! MANIFEST ext/DynaLoader/Makefile.PL
-____________________________________________________________________________
-[   930] By: nick                                  on 1998/05/13  20:39:59
-        Log: resolve -at //depot/win32 into ansiperl for C++ testing.
-     Branch: ansiperl
-           ! utils/perldoc.PL
-	  !> MANIFEST ext/Fcntl/Fcntl.pm hv.c lib/ExtUtils/Liblist.pm op.c
-	  !> perl.c pod/perlfunc.pod pod/perlguts.pod pp.c pp_ctl.c
-	  !> regcomp.c regcomp.h regexec.c t/op/hashwarn.t t/op/runlevel.t
-	  !> win32/Makefile win32/config.bc win32/config.gc win32/config.vc
-          !> win32/makedef.pl win32/makefile.mk
-____________________________________________________________________________
-[   929] By: gsar                                  on 1998/05/13  10:13:36
-        Log: merge change#687 from maintbranch
-     Branch: win32/perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[   928] By: gsar                                  on 1998/05/13  10:08:13
-        Log: merge change#683 from maintbranch
-     Branch: win32/perl
-           ! pod/perlguts.pod
-____________________________________________________________________________
-[   927] By: gsar                                  on 1998/05/13  09:51:43
-        Log: merge change#681 from maintbranch
-     Branch: win32/perl
-           ! ext/Fcntl/Fcntl.pm
-____________________________________________________________________________
-[   926] By: gsar                                  on 1998/05/13  09:47:11
-        Log: merge change#664 from maint branch
-     Branch: win32/perl
-           ! regcomp.c regcomp.h regexec.c
-____________________________________________________________________________
-[   925] By: gsar                                  on 1998/05/13  08:55:28
-        Log: merge missing part of change#663 from maint branch
-     Branch: win32/perl
-           ! op.c
-____________________________________________________________________________
-[   924] By: gsar                                  on 1998/05/12  18:50:04
-        Log: remove x586 code gen switch (-5) for Borland, it is non-generic,
-             and seems to generate problematic code for PII.
-     Branch: win32/perl
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   923] By: gsar                                  on 1998/05/12  16:24:02
-        Log: fix test failure
-             Message-Id: <199805120940.KAA01252@pluto.tiuk.ti.com>
-             Date:    Tue, 12 May 1998 10:40:57 BST
-             From:    Nick.Ing-Simmons@tiuk.ti.com
-             Subject: test buglet
-     Branch: win32/perl
-           ! t/op/hashwarn.t
-____________________________________________________________________________
-[   922] By: TimBunce                              on 1998/05/11  20:58:58
-        Log: Assorted patches:
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "incorrect return value for hv_iterinit"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805031848.OAA20618@aatma.engin.umich.edu>
-             Files:  pod/perlguts.pod hv.c
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "perlvar.pod buglet E"
-             From:  Achim Bohnet 
-             Msg-ID:  <9805041415.AA22185@o09.xray.mpe.mpg.de>
-             Files:  pod/perlvar.pod
-             
-             Title:  "Improve docs for warning about code after an exec()"
-             From:  "M.J.T. Guy" , Chaim Frenkel
-             
-             Msg-ID:  ,
-             
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Remove dead code from pod2man"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/pod2man.PL
-             
-             Title:  "tweak doc for C"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199805090017.UAA06888@aatma.engin.umich.edu>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Document integer pragma effect on % operator"
-             From:  Gisle Aas 
-             Msg-ID:  
-             Files:  pod/perlop.pod
-             
-             Title:  "Reduce rm command line length in pod/Makefile"
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199805041423.QAA13199@dorlas.elsevier.nl>
-             Files:  pod/Makefile
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "Clarify Termios usage in POSIX.pod"
-             From:  Rocco Caputo 
-             Msg-ID:  <199805101952.PAA12738@ns.netrus.net>
-             Files:  ext/POSIX/POSIX.pod
-             
-             ------  LIBRARY  ------
-             
-             Title:  "Fix File::Find::finddepth typo in trial 2 release"
-             From:  koenig@kulturbox.de (Andreas J. Koenig)
-             Msg-ID:  
-             Files:  lib/File/Find.pm t/lib/filefind.t
-             
-             ------  PORTABILITY - GENERAL  ------
-             
-             Title:  "Add Porting/patching.pod document"
-             From:  Daniel Grisinger 
-             Msg-ID:  <199805030305.XAA16147@relay.pair.com>
-             Files:  MANIFEST Porting/patching.pod
-             
-             Title:  "hints/machten.sh: disable semctl(), align with devel version"
-             From:  Dominic Dunlop 
-             Msg-ID:  
-             Files:  hints/machten.sh
-             
-             Title:  "Add VMS specifics to Porting/makerel"
-             From:  Charles Bailey 
-             Msg-ID:  <01IWDK1LONRQ0026P0@cor.newman.upenn.edu>,
-             <199804271732.SAA13762@toad.ig.co.uk>,
-             <9804250212.AA27695@forte.com>
-             Files:  Porting/makerel
-     Branch: maint-5.004/perl
-           + Porting/patching.pod
-	   ! MANIFEST Porting/makerel ext/POSIX/POSIX.pod hints/machten.sh
-	   ! hv.c lib/File/Find.pm pod/Makefile pod/perlfunc.pod
-	   ! pod/perlguts.pod pod/perlop.pod pod/perlvar.pod pod/pod2man.PL
-           ! t/lib/filefind.t
-____________________________________________________________________________
-[   921] By: gsar                                  on 1998/05/10  02:28:03
-        Log: various tweaks to makefiles
-     Branch: win32/perl
-           ! win32/Makefile win32/makedef.pl win32/makefile.mk
-____________________________________________________________________________
-[   920] By: gsar                                  on 1998/05/10  02:27:19
-        Log: fix ExtUtils::Liblist mishandling paths with spaces
-     Branch: win32/perl
-           ! lib/ExtUtils/Liblist.pm
-____________________________________________________________________________
-[   919] By: gsar                                  on 1998/05/09  17:10:15
-        Log: minor cleanup
-     Branch: win32/perl
-           ! MANIFEST perl.c
-____________________________________________________________________________
-[   918] By: gsar                                  on 1998/05/09  17:09:09
-        Log: protect sortcop from C
-             Message-Id: <199805082333.TAA06287@aatma.engin.umich.edu>
-             Date:    Fri, 08 May 1998 19:33:44 EDT
-             From:    Gurusamy Sarathy 
-             Subject: [PATCH] Re: double recursion in sort 
-     Branch: win32/perl
-           ! pp_ctl.c t/op/runlevel.t
-____________________________________________________________________________
-[   917] By: gsar                                  on 1998/05/09  17:05:55
-        Log: c
-     Branch: win32/perl
-           ! win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[   916] By: gsar                                  on 1998/05/07  03:40:15
-        Log: fix C (pp_refgen fumbles when G_SCALAR, no args)
-     Branch: win32/perl
-           ! pp.c
-____________________________________________________________________________
-[   915] By: mbeattie                              on 1998/05/06  13:08:29
-        Log: Speed up pp_entersub for usethreads with only 1 thread running.
-     Branch: perl
-           ! pp_hot.c
-____________________________________________________________________________
-[   914] By: gsar                                  on 1998/05/03  18:44:38
-        Log: make hv_iterinit() return HvKEYS()
-             Message-Id: <3.0.1.32.19980502162922.009e6320@www.syncad.com>
-             Date:    Sat, 02 May 1998 16:29:22 EDT
-             From:    "SynaptiCAD, Inc." 
-             Subject: incorrect return value for hv_iterinit
-     Branch: win32/perl
-           ! hv.c pod/perlguts.pod
-____________________________________________________________________________
-[   913] By: TimBunce                              on 1998/05/01  22:38:38
-        Log: Update MANIFEST for trial 2.
-             (Porting/Contract lib/Tie/Handle.pm t/op/tiehandle.t)
-     Branch: maint-5.004/perl
-           ! MANIFEST
-____________________________________________________________________________
-[   912] By: TimBunce                              on 1998/05/01  22:30:29
-        Log: Add t/op/tiehandle.t as xtext to repository (see change 911)
-     Branch: maint-5.004/perl
-           + t/op/tiehandle.t
-____________________________________________________________________________
-[   911] By: TimBunce                              on 1998/05/01  21:35:03
-        Log: 
-             Title:  "Add ERRSV, ERRHV, DEFSV and SAVE_DEFSV for XS 5.005 compatibility"
-             From:  timbo@ig.co.uk (Tim Bunce)
-             Msg-ID:  <199804200854.JAA01482@toad.ig.co.uk>
-             Files:  perl.h
-             
-             Title:  "Add WRITE & CLOSE to TIEHANDLE"
-             From:  Graham Barr 
-             Msg-ID:  <34F63DC8.CA95670F@pobox.com>
-             Files:  pod/perltie.pod lib/Tie/Handle.pm pp_sys.c t/op/tiehandle.t
-     Branch: maint-5.004/perl
-           + lib/Tie/Handle.pm
-           ! perl.h pod/perltie.pod pp_sys.c
-____________________________________________________________________________
-[   910] By: TimBunce                              on 1998/05/01  20:47:47
-        Log: 
-             Title:  "Add warning for Illegal hex digit"
-             From:  Stephen P Potter , Stephen Potter
-             , Tim.Bunce@ig.co.uk (Tim Bunce)
-             Msg-ID:  <199804232219.SAA02267@spp.users.ds.net>,
-             <199804271409.PAA12819@toad.ig.co.uk>,
-             <199804280307.WAA12332@psasolar.psa.pencom.com>
-             Files:  pod/perldiag.pod util.c
-             
-             Title:  "perl_call_method() bug fix (corrupt op pointer)"
-             From:  "Alterman, Eugene" 
-             Msg-ID:  <510415F72ECFD111A31700A0C9B3CCDE3098@efx98digmasa.bremer-inc.com>
-             Files:  perl.c
-             
-             Title:  "Fix printf segmentation fault"
-             From:  Hugo van der Sanden 
-             Msg-ID:  
-             Files:  pp_hot.c
-             
-             Title:  "Document changed local($a[$i],$b{$j}) behaviour re delete/splice"
-             From:  Charles Bailey 
-             Msg-ID:  <01IVMVIHNZ36001NKH@cor.newman.upenn.edu>
-             Files:  pod/perlsub.pod
-     Branch: maint-5.004/perl
-           ! perl.c pod/perldiag.pod pod/perlsub.pod pp_hot.c util.c
-____________________________________________________________________________
-[   909] By: TimBunce                              on 1998/05/01  19:44:47
-        Log: 
-             Title:  "Change Ilya's do_binmode to K&R prototype and move to doio.c"
-             Files:  doio.c util.c
-     Branch: maint-5.004/perl
-           ! doio.c util.c
-____________________________________________________________________________
-[   908] By: gsar                                  on 1998/05/01  19:21:02
-        Log: add AS patch#20 (exposes more global constants)
-     Branch: asperl
-	   ! ObjXSub.h byterun.h embed.h embedvar.h global.sym globals.c
-	   ! interp.sym ipsock.h ipstdio.h objpp.h perlio.h perlsock.h
-           ! proto.h util.c win32/GenCAPI.pl win32/runperl.c
-____________________________________________________________________________
-[   907] By: TimBunce                              on 1998/05/01  17:50:46
-        Log: 
-             Title:  "Runtime Carp verbosity without aliasing"
-             From:  Joshua.Pritikin@NewYork2.dmg.deuba.com, Tim Bunce
-             Msg-ID:  
-             Files:  lib/Carp.pm
-             
-             Title:  "Fix File::Basename to not untaint results (using new //t flag)"
-             From:  Eric Hammond , Tom Phoenix
-             
-             Msg-ID:  <199710070515.WAA00682@finity.citysearch.com>,
-             
-             Files:  lib/File/Basename.pm
-     Branch: maint-5.004/perl
-           ! lib/Carp.pm lib/File/Basename.pm
-____________________________________________________________________________
-[   906] By: TimBunce                              on 1998/04/28  11:04:49
-        Log: 
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "5.004_04m5t1: Fix dangling references in LVs", "Fix dangling
-             references in LVs"
-             From:  Spider Boardman 
-             Msg-ID:  <199804010541.AAA32615@Orb.Nashua.NH.US>,
-             <19980422164037.D29222@perl.org>
-             Files:  embed.h keywords.h opcode.h perl.h proto.h doop.c global.sym mg.c
-             pp.c sv.c
-             
-             Title:  "Fix SvGMAGIC typo in change 904"
-             Files:  doop.c
-     Branch: maint-5.004/perl
-	   ! doop.c embed.h global.sym keywords.h mg.c opcode.h perl.h pp.c
-           ! proto.h sv.c
-____________________________________________________________________________
-[   905] By: TimBunce                              on 1998/04/28  10:32:20
-        Log: Regexp patches
-             
-             Title:  "New regex flag //t to leave $1 etc. tainted"
-             From:  Chip Salzenberg , Tim Bunce 
-             Msg-ID:  <19980310192640.37826@cyprus>
-             Files:  pod/perlop.pod pod/perlre.pod op.h dump.c mg.c pp_hot.c sv.c
-             t/op/taint.t toke.c
-             
-             Title:  "Don't accidentally untaint target of s///"
-             From:  Chip Salzenberg 
-             Msg-ID:  <19980310151756.24767@cyprus>
-             Files:  pp_ctl.c pp_hot.c t/op/taint.t
-             
-             Title:  "Allow but ignore embedded /...(?o).../ in regexp"
-             From:  h.sanden@elsevier.nl (Hugo van der Sanden)
-             Msg-ID:  <199804201243.OAA08244@dorlas.elsevier.nl>
-             Files:  regcomp.c
-     Branch: maint-5.004/perl
-	   ! dump.c mg.c op.h pod/perlop.pod pod/perlre.pod pp_ctl.c
-           ! pp_hot.c regcomp.c sv.c t/op/taint.t toke.c
-____________________________________________________________________________
-[   904] By: TimBunce                              on 1998/04/27  20:20:21
-        Log: Assorted patches:
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "Protect join() against double reads on undef and SvGMAGICALs"
-             From:  Chip Salzenberg , Tim Bunce
-             
-             Msg-ID:  <19980424080630.D13985@perl.org>
-             Files:  doop.c
-             
-             Title:  "Better error message for require failure"
-             From:  epeschko@den-mdev1 (Ed Peschko)
-             Msg-ID:  <199804240047.SAA24155@den-mdev1.co.csgsystems.com>
-             Files:  pod/perldiag.pod pp_ctl.c
-             
-             Title:  "fixes for various noises under PERL_DESTRUCT_LEVEL"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199804231926.PAA23969@aatma.engin.umich.edu>
-             Files:  perl.c
-             
-             Title:  "Fix nice_chunk memory leak"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199804052347.TAA15699@aatma.engin.umich.edu>
-             Files:  sv.c
-             
-             Title:  "-2.0 vs. -2 (was Number representations)"
-             From:  Chip Salzenberg 
-             Msg-ID:  <19980309185652.11231@cyprus>
-             Files:  op.c
-             
-             Title:  "perl.c fixes for -DUNEXEC"
-             From:  Matt Wette , Matthew R Wette
-             
-             Msg-ID:  <199710152146.OAA07283@mr-ed.jpl.nasa.gov>
-             Files:  perl.c
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "perlcall is Perl from C, not C from Perl"
-             From:  Steve A Fink 
-             Files:  pod/perlembed.pod
-             
-             Title:  "Clarify require "Foo::Bar" non-bareword issue"
-             From:  Dominique Dumont 
-             Msg-ID:  <199804231527.AA153445256@ss7serv.grenoble.hp.com>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "(repost) new text for perlsec", "new text for perlsec"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perlsec.pod
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "IO::Socket->socketpair broken (typo)"
-             From:  Olaf Titz 
-             Msg-ID:  <19980425224535.2807.qmail@bigred.inka.de>
-             Files:  ext/IO/lib/IO/Socket.pm
-             
-             Title:  "NDBM_File man page needs Fcntl"
-             From:  "Danny R. Faught" 
-             Msg-ID:  <199707011500.IAA00601@palrel3.hp.com>
-             Files:  ext/NDBM_File/NDBM_File.pm
-             
-             ------  LIBRARY  ------
-             
-             Title:  "Documentation discrepancy: pragmatic modules"
-             From:  "M.J.T. Guy" , h.sanden@elsevier.nl (Hugo van der Sanden)
-             Msg-ID:  <199804221525.RAA12695@dorlas.elsevier.nl>,
-             
-             Files:  lib/strict.pm lib/subs.pm lib/vars.pm
-             
-             ------  PORTABILITY - GENERAL  ------
-             
-             Title:  "Updated hints file for svr4"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  hints/svr4.sh
-             
-             Title:  "Pumpkin update -- shared libperl.so location"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  Porting/pumpkin.pod
-             
-             Title:  "perl compile fix for AIX 4.3"
-             From:  Jens-Uwe Mager 
-             Msg-ID:  <199804261611.SAA34728@ans.helios.de>
-             Files:  ext/DynaLoader/dl_aix.xs
-             
-             Title:  "Dynaloader build on VMS",
-             From:  pvhp@forte.com (Peter Prymmer), timbo@ig.co.uk (Tim Bunce)
-             Msg-ID:  <199804271732.SAA13762@toad.ig.co.uk>, <9804250212.AA27695@forte.com>
-             Files:  vms/descrip.mms
-             
-             ------  UTILITIES  ------
-             
-             Title:  "Major update to h2ph.PL"
-             From:  Billy 
-             Msg-ID:  
-             Files:  utils/h2ph.PL
-     Branch: maint-5.004/perl
-	   ! Porting/pumpkin.pod doop.c ext/DynaLoader/dl_aix.xs
-	   ! ext/IO/lib/IO/Socket.pm ext/NDBM_File/NDBM_File.pm
-	   ! hints/svr4.sh lib/strict.pm lib/subs.pm lib/vars.pm op.c
-	   ! perl.c pod/perldiag.pod pod/perlembed.pod pod/perlfunc.pod
-           ! pod/perlsec.pod pp_ctl.c sv.c utils/h2ph.PL vms/descrip.mms
-____________________________________________________________________________
-[   903] By: gsar                                  on 1998/04/25  22:27:19
-        Log: add AS patch#19 (adds socket layer generation to GenCAPI.pl)
-     Branch: asperl
-           ! win32/GenCAPI.pl
-____________________________________________________________________________
-[   902] By: nick                                  on 1998/04/25  16:35:08
-        Log: Case sensitive tweak to perldoc.PL
-     Branch: ansiperl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   901] By: nick                                  on 1998/04/25  15:16:54
-        Log: Implement use attrs qw(locked package);
-             Passes all tests except posix (hangs/dies) in sigaction test after 
-             printing "ok 9".
-     Branch: ansiperl
-           ! cv.h ext/attrs/attrs.pm ext/attrs/attrs.xs pp_hot.c
-____________________________________________________________________________
-[   900] By: nick                                  on 1998/04/25  13:58:17
-        Log: Auto-insert defined() test in while when test expression is 
-             readline (i.e. <>), glob, readdir, or each.
-     Branch: ansiperl
-           + t/op/defins.t
-           ! op.c pod/perlop.pod
-____________________________________________________________________________
-[   899] By: nick                                  on 1998/04/25  13:14:52
-        Log: Resolve ansiperl against win32 branch
-     Branch: ansiperl
-          +> (branch 53 files)
-           - config_H
-          !> (integrate 227 files)
-____________________________________________________________________________
-[   898] By: gsar                                  on 1998/04/24  17:01:05
-        Log: add AS patch#18
-     Branch: asperl
-           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/xsubpp win32/GenCAPI.pl
-____________________________________________________________________________
-[   897] By: TimBunce                              on 1998/04/23  19:49:22
-        Log: Assorted patches:
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "fix for "Unbalanced string table refcount""
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199804042251.RAA25527@aatma.engin.umich.edu>
-             Files:  sv.c
-             
-             Title:  "Allow more lenient switch processing"
-             From:  "John L. Allen" 
-             Msg-ID:  <199803251638.LAA22664@gateway.grumman.com>
-             Files:  perl.c
-             
-             Title:  "Add fourth arg to substr: substr EXPR,OFFSET,LEN,REPLACEMENT"
-             From:  Gisle Aas 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod Todo opcode.pl pp.c t/op/substr.t
-             
-             Title:  "Odd number of elements in hash list."
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  MANIFEST pod/perldiag.pod pp.c pp_hot.c t/op/hashwarn.t
-             
-             Title:  "another destruct_level fix"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199804030105.UAA04400@aatma.engin.umich.edu>
-             Files:  hv.c
-             
-             Title:  "bidirectional pipe warning blues"
-             From:  pmarquess@bfsec.bt.co.uk (Paul Marquess)
-             Msg-ID:  <9804082151.AA20399@claudius.bfsec.bt.co.uk>
-             Files:  doio.c
-             
-             Title:  "stale pointers after realloc (MEXTEND in pp_print and pp_prtf)"
-             From:  Malcolm Beattie 
-             Msg-ID:  <199801191107.LAA17979@sable.ox.ac.uk>
-             Files:  pp_hot.c pp_sys.c
-             
-             Title:  "unimplemented umask() should return undef not die"
-             From:  kstar@chapin.edu (Kurt D. Starsinic)
-             Msg-ID:  <199803120515.VAA08660@chapin.edu>
-             Files:  pod/perlfunc.pod pp_sys.c
-             
-             Title:  "warning for: bless $foo, """
-             From:  Joshua.Pritikin@NewYork2.dmg.deuba.com
-             Msg-ID:  
-             Files:  pod/perldiag.pod pp.c
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "Mention SWIG in perlxs.pod"
-             From:  Steve A Fink 
-             Msg-ID:  
-             Files:  pod/perlxs.pod
-             
-             Title:  "fix-up of previous perlre.pod patch"
-             From:  Ted Ashton 
-             Msg-ID:  <199803031540.KAA09388@ns.southern.edu>
-             Files:  pod/perlre.pod
-             
-             Title:  "long list of man page nitpicks"
-             From:  Greg Bacon , Tom Christiansen
-             
-             Msg-ID:  <199804221844.NAA08338@pluto.cs.uah.edu>,
-             <199804222204.QAA20805@jhereg.perl.com>
-             Files:  pod/perlapio.pod pod/perlcall.pod pod/perldebug.pod pod/perldelta.pod
-             pod/perldiag.pod pod/perlembed.pod pod/perlfaq2.pod
-             pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
-             pod/perlfaq7.pod pod/perlfaq8.pod pod/perlform.pod
-             pod/perlfunc.pod pod/perlguts.pod pod/perlipc.pod
-             pod/perllocale.pod pod/perlmodlib.pod pod/perlop.pod
-             pod/perlre.pod pod/perlref.pod pod/perlrun.pod
-             pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
-             pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod
-             pod/pod2man.PL
-             
-             Title:  "document that system() does not set $! when it fails"
-             From:  "Mark R. Levinson" 
-             Msg-ID:  <199803011946.OAA31942@anaximander.dccs.upenn.edu>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Fix pod/roffitall execute permission"
-             From:  lvirden@cas.org
-             Msg-ID:  <1997Nov17.132031.2589892@cor.newman>
-             Files:  pod/roffitall
-             
-             Title:  "document when split ignores trailing empty fields"
-             From:  Hugo van der Sanden 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod
-             
-             ------  EXTENSIONS  ------
-             
-             Title:  "Buglet in Opcode.pm documentation"
-             From:  Horst von Brand 
-             Msg-ID:  <199804170349.XAA32445@sleipnir.valparaiso.cl>
-             Files:  ext/Opcode/Opcode.pm
-             
-             Title:  "Failure to append to perllocal.pod should not be fatal"
-             From:  koenig@kulturbox.de (Andreas J. Koenig)
-             Msg-ID:  
-             Files:  lib/ExtUtils/MM_Unix.pm
-             
-             Title:  "Document that IO.pm does not load IO::Select etc"
-             From:  Graham Barr 
-             Msg-ID:  <353B48F1.64E35A63@ti.com>
-             Files:  ext/IO/IO.pm
-             
-             Title:  "Install extensions with bootstrap (again) in $archlib"
-             From:  Achim Bohnet , koenig@kulturbox.de (Andreas J.
-             Koenig)
-             Msg-ID:  <9804061909.AA12675@o09.xray.mpe.mpg.de>,
-             
-             Files:  lib/ExtUtils/Install.pm
-             
-             Title:  "glibc2.0.6 missing MSG_*  defines."
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  ext/Socket/Socket.xs
-             
-             ------  LIBRARY  ------
-             
-             Title:  "Benchmark.pm: add run-for-some-time mode"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199804080647.JAA15136@alpha.hut.fi>
-             Files:  lib/Benchmark.pm
-             
-             Title:  "Comments added to Carp.pm"
-             From:  Andy Wardley , Chip Salzenberg
-             , Tom Christiansen
-             
-             Msg-ID:  <19980422164242.E29222@perl.org>,
-             <199804222033.OAA17959@jhereg.perl.com>,
-             <980409182357.ZM21638@bandanna>
-             Files:  lib/Carp.pm
-             
-             Title:  "chat2.pl fix"
-             From:  Charles Bailey 
-             Msg-ID:  <01IVMVF507PO001NKH@cor.newman.upenn.edu>
-             Files:  lib/chat2.pl
-             
-             Title:  "lib/Pod/Html.pm"
-             From:  d-lewart@uiuc.edu (Daniel S. Lewart)
-             Msg-ID:  <199710170718.DAA25472@staff1.cso.uiuc.edu>,
-             <199710180417.AAA19778@staff2.cso.uiuc.edu>
-             Files:  lib/Pod/Html.pm
-             
-             Title:  "ormaments method in Term/ReadLine.pm causes warning with string
-             arg."
-             From:  hiroo.hayashi@computer.org
-             Msg-ID:  <199804061519.AAA21907@mail.fb3.so-net.ne.jp>
-             Files:  lib/Term/ReadLine.pm
-             
-             ------  OTHER CHANGES  ------
-             
-             Title:  "ptags broken"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199804120208.WAA29264@monk.mps.ohio-state.edu>
-             Files:  emacs/ptags
-             
-             ------  PORTABILITY - WIN32  ------
-             
-             Title:  "win32 tweaks (signals and crypt support)"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199804170505.BAA06413@aatma.engin.umich.edu>
-             Files:  perl.h win32/config.bc win32/config.vc win32/config_H.bc
-             win32/config_H.vc win32/win32.c
-             
-             ------  PORTABILITY - GENERAL  ------
-             
-             Title:  "Add Social Contract (2nd Draft) as Porting/Contract"
-             From:  Russ Allbery 
-             Msg-ID:  
-             Files:  Porting/Contract
-             
-             Title:  "Config: Irix 5 hints"
-             From:  kstar@O2.chapin.edu
-             Msg-ID:  <199804061712.NAA22823@O2.chapin.edu>
-             Files:  hints/irix_5.sh
-             
-             Title:  "VMS patches to 5.004_03"
-             From:  Charles Bailey 
-             Msg-ID:  <01IVYJS0L8D200209B@cor.newman.upenn.edu>
-             Files:  vms/vms.c
-             
-             Title:  "hints/netbsd.sh - enable vfork"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  hints/netbsd.sh
-             
-             ------  UTILITIES  ------
-             
-             Title:  "support find2perl -follow"
-             From:  Billy 
-             Msg-ID:  
-             Files:  x2p/find2perl.PL
-     Branch: maint-5.004/perl
-           + Porting/Contract t/op/hashwarn.t
-	   ! MANIFEST Todo doio.c emacs/ptags embed.h ext/IO/IO.pm
-	   ! ext/Opcode/Opcode.pm ext/Socket/Socket.xs hints/irix_5.sh
-	   ! hints/netbsd.sh hv.c lib/Benchmark.pm lib/Carp.pm
-	   ! lib/ExtUtils/Install.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/Pod/Html.pm lib/Term/ReadLine.pm lib/chat2.pl opcode.h
-	   ! opcode.pl perl.c perl.h pod/perlapio.pod pod/perlcall.pod
-	   ! pod/perldebug.pod pod/perldelta.pod pod/perldiag.pod
-	   ! pod/perlembed.pod pod/perlfaq2.pod pod/perlfaq3.pod
-	   ! pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfaq7.pod
-	   ! pod/perlfaq8.pod pod/perlform.pod pod/perlfunc.pod
-	   ! pod/perlguts.pod pod/perlhist.pod pod/perlipc.pod
-	   ! pod/perllocale.pod pod/perlmodlib.pod pod/perlop.pod
-	   ! pod/perlre.pod pod/perlref.pod pod/perlrun.pod
-	   ! pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
-	   ! pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod pod/pod2man.PL
-	   ! pod/roffitall pp.c pp_hot.c pp_sys.c sv.c t/TEST t/op/gv.t
-	   ! t/op/substr.t vms/vms.c win32/config.bc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.vc win32/win32.c
-           ! x2p/find2perl.PL
-____________________________________________________________________________
-[   896] By: TimBunce                              on 1998/04/22  11:49:24
-        Log: Assorted patches:
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "Additional regex-cache patch"
-             From:  Chip Salzenberg 
-             Msg-ID:  <19980305104831.38100@cyprus>
-             Files:  pp_ctl.c
-             
-             Title:  "Conservative C<*x = undef> patch"
-             From:  Chip Salzenberg 
-             Msg-ID:  <19980310163310.48509@cyprus>
-             Files:  pod/perldiag.pod pod/perlfunc.pod pp.c sv.c t/op/gv.t
-             
-             Title:  "Consider @ARGV to be plain files if inplace (-i)"
-             From:  Chip Salzenberg 
-             Msg-ID:  <199802042106.QAA04082@nielsenmedia.com>
-             Files:  doio.c
-             
-             Title:  "Fix semctl for Linux, Sun and SVR4"
-             From:  Graham Barr , lvirden@cas.org (Larry W. Virden, x2487)
-             Msg-ID:  <3484247D.BB036D39@ti.com>, <9712021313.AA11495@cas.org>
-             Files:  doio.c
-             
-             Title:  "C entails using C, not C"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199803070149.UAA12217@aatma.engin.umich.edu>
-             Files:  pod/perlcall.pod pod/perlembed.pod pod/perlguts.pod pod/perlxs.pod
-             doio.c doop.c ext/DB_File/DB_File.xs
-             ext/DynaLoader/dl_dld.xs ext/Opcode/Opcode.xs
-             ext/POSIX/POSIX.xs ext/Socket/Socket.xs gv.c
-             lib/ExtUtils/typemap mg.c os2/OS2/REXX/REXX.xs
-             win32/win32.c
-             
-             Title:  "Make autouse -w-safe"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199803030236.VAA13244@monk.mps.ohio-state.edu>
-             Files:  lib/autouse.pm op.c sv.c
-             
-             Title:  "Misleading error on close of unopened handle"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  doio.c
-             
-             Title:  "Confusing error from perl -e "x'""
-             From:  Hans Mulder 
-             Msg-ID:  <1998Mar25.174320.2866352@cor.newman.upenn.edu>
-             Files:  toke.c
-             
-             Title:  "Add HAS_GNULIBC define"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  config_H config_h.SH
-             
-             Title:  "h_errno might not be an int"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  pp_sys.c
-             
-             Title:  "Revised taint hole closer", "Revised taint hole closer"
-             From:  Chip Salzenberg , Ilya Zakharevich
-             
-             Msg-ID:  <19980310222127.09350@cyprus>,
-             <199803110554.AAA29157@monk.mps.ohio-state.edu>
-             Files:  doio.c
-             
-             Title:  "SEGV compiling localised lexical in perl5.004_05t1"
-             From:  Gurusamy Sarathy , h.sanden@elsevier.nl (Hugo
-             van der Sanden)
-             Msg-ID:  <199803171530.QAA24053@dorlas.elsevier.nl>,
-             <199803171727.MAA05234@aatma.engin.umich.edu>
-             Files:  op.c t/op/misc.t
-             
-             Title:  "Stale SP in pp_substr"
-             From:  Stephen McCamant 
-             Msg-ID:  
-             Files:  pp.c
-             
-             Title:  "Statement unlikely to be reached warning"
-             From:  Hans Mulder 
-             Msg-ID:  <1997Dec24.171511.2683516@cor.newman>
-             Files:  op.c
-             
-             Title:  "Tainting propagates from nowhere"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199803140411.XAA09343@aatma.engin.umich.edu>
-             Files:  pp.c
-             
-             Title:  "two trivial tweaks to 5.004m5t1"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199803060553.AAA28461@aatma.engin.umich.edu>
-             Files:  proto.h win32/Makefile
-             
-             Title:  "unpacking negatives on Alpha"
-             From:  Achim Bohnet 
-             Msg-ID:  <9710201503.AA24797@o09.xray.mpe.mpg.de>
-             Files:  pp.c t/op/pack.t
-             
-             ------  LIBRARY AND EXTENSIONS  ------
-             
-             Title:  "Cwd.pm: abs_path() and fast_abs_path() plus code merge"
-             From:  Graham Barr 
-             Msg-ID:  <3482F365.4A0486BA@ti.com>
-             Files:  lib/Cwd.pm
-             
-             Title:  "Math/BigInt.pm, fixed use of undefined value."
-             From:  abigail@fnx.com
-             Msg-ID:  <19980313052452.27365.qmail@betelgeuse.wayne.fnx.com>
-             Files:  lib/Math/BigInt.pm
-             
-             Title:  "File::Find rewrite"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199803052344.SAA01008@monk.mps.ohio-state.edu>
-             Files:  lib/File/Find.pm
-             
-             Title:  "efficient version of strict.pm"
-             From:  koenig@anna.mind.de (Andreas J. Koenig)
-             Msg-ID:  
-             Files:  lib/strict.pm
-             
-             Title:  "Socket occasional SEGV in pack_sockaddr_un"
-             From:  Trevor Blackwell 
-             Msg-ID:  <199710281804.NAA09632@wagg.viaweb.com>
-             Files:  ext/Socket/Socket.xs
-             
-             Title:  "Warning on mis-use of 'use lib'"
-             From:  "M.J.T. Guy" , Tom Phoenix
-             , chip@atlantic.net
-             Msg-ID:  <199801270435.XAA14147@cyprus.atlantic.net>,
-             ,
-             
-             Files:  lib/lib.pm
-             
-             Title:  "bug in Class::Struct"
-             From:  Tom Christiansen 
-             Msg-ID:  <199803290814.KAA05699@toy.perl.com>
-             Files:  lib/Class/Struct.pm
-             
-             Title:  "Allow POSIX to export nice()"
-             From:  bkeelerx@iwa.dp.intel.com (Bruce J. Keeler)
-             Msg-ID:  
-             Files:  ext/POSIX/POSIX.pm
-             
-             Title:  "'use Env' on WinNT/95 fails"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199803280511.AAA15933@aatma.engin.umich.edu>
-             Files:  lib/Env.pm
-             
-             ------  OTHER CHANGES  ------
-             
-             Title:  "mv-if-diff"
-             From:  Robin Barker 
-             Msg-ID:  <14572.9803271806@tempest.cise.npl.co.uk>
-             Files:  mv-if-diff
-             
-             ------  PORTABILITY - WIN32  ------
-             
-             Title:  "fix various problems with backticks on win32"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199803070705.CAA15945@aatma.engin.umich.edu>
-             Files:  win32/config_h.PL win32/win32.c
-             
-             ------  TESTS  ------
-             
-             Title:  "Fix bug in locale.t"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199801042148.XAA08599@alpha.hut.fi>
-             Files:  t/pragma/locale.t
-     Branch: maint-5.004/perl
-	   ! config_H config_h.SH doio.c doop.c ext/DB_File/DB_File.xs
-	   ! ext/DynaLoader/dl_dld.xs ext/Opcode/Opcode.xs
-	   ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs ext/Socket/Socket.xs
-	   ! gv.c lib/Class/Struct.pm lib/Cwd.pm lib/Env.pm
-	   ! lib/ExtUtils/typemap lib/File/Find.pm lib/Math/BigInt.pm
-	   ! lib/autouse.pm lib/lib.pm lib/strict.pm mg.c mv-if-diff op.c
-	   ! os2/OS2/REXX/REXX.xs pod/perlcall.pod pod/perldiag.pod
-	   ! pod/perlembed.pod pod/perlfunc.pod pod/perlguts.pod
-	   ! pod/perlxs.pod pp.c pp_ctl.c pp_sys.c proto.h sv.c t/op/gv.t
-	   ! t/op/misc.t t/op/pack.t t/pragma/locale.t toke.c
-           ! win32/Makefile win32/config_h.PL win32/win32.c
-____________________________________________________________________________
-[   895] By: gsar                                  on 1998/04/22  03:13:19
-        Log: intern -> sys_intern
-     Branch: win32/perl
-           ! embedvar.h interp.sym intrpvar.h win32/win32.h
-____________________________________________________________________________
-[   894] By: gsar                                  on 1998/04/22  02:42:20
-        Log: hand-applied patch along with small tweaks
-             Message-Id: <35400e2a.13538517@smtp1.ibm.net>
-             Date:    Tue, 21 Apr 1998 23:31:06 +0200
-             From:    jan.dubois@ibm.net (Jan Dubois)
-             Subject: Re: Per-Interpreter variables for win32.c 
-     Branch: win32/perl
-	   ! embedvar.h interp.sym intrpvar.h perl.c perl.h proto.h
-           ! win32/makedef.pl win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   893] By: gsar                                  on 1998/04/21  03:42:21
-        Log: add AS patch#17
-     Branch: asperl
-           + win32/GenCAPI.pl
-	   ! MANIFEST XSUB.h cv.h ipstdio.h lib/ExtUtils/MM_Unix.pm
-	   ! lib/ExtUtils/MM_Win32.pm lib/ExtUtils/MakeMaker.pm
-	   ! lib/ExtUtils/Mksymlists.pm lib/ExtUtils/xsubpp op.c perl.h
-	   ! pp_ctl.c pp_hot.c proto.h sv.h thread.h win32/Makefile
-	   ! win32/dl_win32.xs win32/makefile.mk win32/runperl.c
-           ! win32/win32.c
-____________________________________________________________________________
-[   892] By: gsar                                  on 1998/04/20  20:51:50
-        Log: add AS patch#16
-     Branch: asperl
-	   ! globals.c ipdir.h perl.h perlvars.h regcomp.h win32/Makefile
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   891] By: gsar                                  on 1998/04/19  23:50:34
-        Log: tweak doc for C
-     Branch: win32/perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[   890] By: gsar                                  on 1998/04/19  01:08:11
-        Log: use a pidtable that grows dynamically for popen()
-             Message-Id: <3539f434.44835409@smtp1.ibm.net>
-             Date:    Sat, 18 Apr 1998 21:01:27 +0200
-             From:    jan.dubois@ibm.net (Jan Dubois)
-             Subject: Re: [PATCH] for bug in 5.004_64 when compiled with MSC++ 4.2 
-     Branch: win32/perl
-           ! win32/win32.c
-____________________________________________________________________________
-[   889] By: gsar                                  on 1998/04/17  02:13:58
-        Log: support POSIX, enable more locale tests
-     Branch: win32/perl
-	   ! ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
-	   ! t/lib/posix.t t/pragma/locale.t win32/Makefile
-           ! win32/makedef.pl win32/makefile.mk
-____________________________________________________________________________
-[   888] By: mbeattie                              on 1998/04/14  16:22:51
-        Log: CC did "<<" instead of ">>" for right-shift on ints.
-     Branch: perl
-           ! ext/B/B/CC.pm
-____________________________________________________________________________
-[   887] By: TimBunce                              on 1998/04/10  17:44:55
-        Log: Assorted patches:
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "Re: die exits with 0"
-             From:  Robin Barker 
-             Files:  perl.c t/op/die_exit.t
-             
-             Title:  "More toke.c commentary; fix oddity"
-             From:  h.sanden@elsevier.nl (Hugo van der Sanden)
-             Msg-ID:  <199803251022.LAA01308@dorlas.elsevier.nl>
-             Files:  toke.c
-             
-             Title:  "for semctl on solaris"
-             From:  Graham Barr 
-             Msg-ID:  <34624B80.C014E841@ti.com>
-             Files:  doio.c t/op/ipcmsg.t t/op/ipcsem.t
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "Add more 'see also's to perlre.pod.", "Perl regexp /g modifier bug"
-             From:  Ilya Zakharevich , epeschko@den-mdev1 (Ed
-             Peschko), pjr@watcher.telstra.com.au (Peter Richardson)
-             Msg-ID:  <199803050000.LAA11476@watcher.telecom.com.au>,
-             <199803050231.VAA19128@monk.mps.ohio-state.edu>,
-             <199803050605.XAA09785@den-mdev1.co.csgsystems.com>
-             Files:  pod/perlre.pod
-             
-             ------  LIBRARY AND EXTENSIONS  ------
-             
-             Title:  "BigFloat - small neagtive numbers cause panic"
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199711201325.NAA09732@crypt.compulink.co.uk>
-             Files:  lib/Math/BigFloat.pm
-             
-             Title:  "Update Getopt::Long to 2.16"
-             From:  JVromans@Squirrel.nl (Johan Vromans), Johan Vromans
-             
-             Msg-ID:  <13571.48089.726787.147769@plume.nl.compuware.com>,
-             <13572.6847.863219.973795@phoenix.squirrel.nl>
-             Files:  lib/Getopt/Long.pm
-             
-             Title:  "New Text::ParseWords"
-             From:  pomeranz@netcom.com (Hal Pomeranz)
-             Msg-ID:  <199710162118.OAA06275@netcom7.netcom.com>
-             Files:  lib/Text/ParseWords.pm t/lib/parsewords.t
-             
-             Title:  "Fixed Text/Wrap.pm bugs (2)"
-             From:  Jacqui Caren 
-             Msg-ID:  <199709291548.QAA08645@toad.ig.co.uk>
-             Files:  lib/Text/Wrap.pm
-             
-             Title:  "Very *evil* File::CheckTree behavior! (now uses warn/die not
-             print/exit)"
-             From:  Eryq , Randal Schwartz 
-             Msg-ID:  <34B542FD.190A@zeegee.com>, <8cen2i9k6f.fsf@gadget.cscaper.com>
-             Files:  lib/File/CheckTree.pm
-             
-             ------  OTHER CHANGES  ------
-             
-             Title:  "Add ./emacs/ptags"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199803150847.DAA08196@monk.mps.ohio-state.edu>
-             Files:  emacs/ptags
-             
-             ------  TESTS  ------
-             
-             Title:  "Avoid stat test failure from build in /tmp (tmpfs)", "Build in /tmp"
-             From:  Andy Dougherty , Greg Bacon
-             , pudge@pobox.com (Chris Nandor)
-             Msg-ID:  <199710171616.LAA13435@crp-201.adtran.com>,
-             ,
-             
-             Files:  t/op/stat.t
-             
-             Title:  "for failure with lib/timelocal"
-             From:  "M.J.T. Guy" , jan.dubois@ibm.net (Jan Dubois)
-             Msg-ID:  <34c78f61.2529827@smtp1.ibm.net>,
-             
-             Files:  t/lib/timelocal.t
-             
-             Title:  "Make "localhost" related failures more clear"
-             From:  Paul Hoffman 
-             Msg-ID:  <199801201859.KAA05686@mail.proper.com>
-             Files:  t/lib/io_sock.t t/lib/io_udp.t
-             
-             ------  UTILITIES  ------
-             
-             Title:  "Let h2xs read multiple header files"
-             From:  Andy Dougherty , Benjamin Sugars
-             
-             Msg-ID:  ,
-             
-             Files:  utils/h2xs.PL
-     Branch: maint-5.004/perl
-           + emacs/ptags t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
-	   ! MANIFEST doio.c lib/File/CheckTree.pm lib/Getopt/Long.pm
-	   ! lib/Math/BigFloat.pm lib/Text/ParseWords.pm lib/Text/Wrap.pm
-	   ! lib/base.pm perl.c pod/perlre.pod t/lib/io_sock.t
-	   ! t/lib/io_udp.t t/lib/parsewords.t t/lib/timelocal.t
-           ! t/op/stat.t toke.c utils/h2xs.PL vms/perly_h.vms
-____________________________________________________________________________
-[   886] By: TimBunce                              on 1998/04/10  14:35:34
-        Log: Changes relating primarily to portability.
-             
-             ------  CORE LANGUAGE  ------
-             
-             Title:  "5.004_55: Another round of OS/2 patches"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199803050945.EAA20153@monk.mps.ohio-state.edu>
-             Files:  hints/os2.sh pod/perlguts.pod cop.h perl.h proto.h README.os2
-             global.sym lib/ExtUtils/MM_OS2.pm lib/File/Path.pm op.c
-             os2/Changes os2/Makefile.SHs os2/os2.c os2/perl2cmd.pl
-             perl.c pod/pod2man.PL pp_ctl.c pp_hot.c pp_sys.c
-             t/lib/filecopy.t util.c utils/perldoc.PL
-             
-             Title:  "VMS: chdir() with empty arg list"
-             From:  lane@duphy4.drexel.edu (Charles Lane)
-             Msg-ID:  <980317125556.222041c7@DUPHY4.Physics.Drexel.Edu>
-             Files:  pp_sys.c
-             
-             ------  LIBRARY AND EXTENSIONS  ------
-             
-             Title:  "ExtUtils/MM_Unix.pm changed to use ld -rpath on IRIX"
-             From:  "W. Phillip Moore" 
-             Msg-ID:  <199712011738.MAA21139@zappa.morgan.com>
-             Files:  lib/ExtUtils/MM_Unix.pm
-             
-             Title:  "[Linux] POSIX::_[PS]C_.+ bug (add HINT_SC_EXIST)"
-             From:  Yutaka OIWA 
-             Msg-ID:  <199712251923.EAA08260@tjms1f.is.s.u-tokyo.ac.jp>
-             Files:  ext/POSIX/hints/linux.pl ext/POSIX/POSIX.xs
-             
-             Title:  "5.004_04-m1] Use HAS_GNULIBC in POSIX.xs"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  ext/POSIX/POSIX.xs
-             
-             Title:  ""ODBM_File.c", line 275: NULL undefined"
-             From:  pmarquess@bfsec.bt.co.uk (Paul Marquess)
-             Msg-ID:  <9803091310.AA23264@claudius.bfsec.bt.co.uk>
-             Files:  ext/ODBM_File/ODBM_File.xs
-             
-             ------  OTHER CHANGES  ------
-             Files:  
-             
-             ------  PORTABILITY - GENERAL  ------
-             
-             Title:  "5.004_04 QNX getcwd"
-             From:  Norton Allen 
-             Msg-ID:  <199802121838.NAA20452@dolores.harvard.edu>,
-             <199803061511.KAA22346@bottesini.harvard.edu>
-             Files:  hints/qnx.sh lib/Cwd.pm t/op/magic.t
-             
-             Title:  "hints/netbsd.sh d_setrgid d_setruid"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199802281435.QAA10866@alpha.hut.fi>
-             Files:  hints/netbsd.sh
-             
-             Title:  "osname=unixware, osvers=2.03, archname=i386-unixware
-             d_casti32=undef"
-             From:  Tom Hughes 
-             Msg-ID:  <465398da47%tom@compton.demon.co.uk>
-             Files:  hints/svr4.sh
-             
-             Title:  "hints/bsdos.sh patch for BSDI 3.1"
-             From:  Jan-Pieter Cornet 
-             Msg-ID:  <6fbip6$3cp$1@xs1.xs4all.nl>
-             Files:  hints/bsdos.sh
-             
-             Title:  "Remove BIND_NOSTART from DynaLoader for HP"
-             From:  Keong Lim 
-             Msg-ID:  <01BD1D03.53B65E90@sieplan2.sr.com.au>
-             Files:  ext/DynaLoader/dl_hpux.xs
-             
-             Title:  "Building Perl on AIX 4+ with shared libraries and dynamic loading"
-             From:  Juan Gallego 
-             Msg-ID:  
-             Files:  hints/aix.sh
-             
-             Title:  "alpha-dec_osf 5.0"
-             From:  Spider Boardman 
-             Msg-ID:  <199712232305.SAA08359@Orb.Nashua.NH.US>
-             Files:  hints/dec_osf.sh
-             
-             Title:  "Off-by-one error with OS2::PrfDB"
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199710170920.FAA00390@monk.mps.ohio-state.edu>
-             Files:  os2/OS2/PrfDB/PrfDB.xs
-             
-             Title:  "5.004_04-m1] Allow overrides in hints/openbsd.sh"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  hints/openbsd.sh
-             
-             Title:  "5.004_04-m1] Linux shouldn't use -lnet"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  hints/linux.sh
-             
-             Title:  "5.004_(04|63)] Close VMS security hole"
-             From:  Charles Bailey 
-             Msg-ID:  <01IV6LRJCSSC0009C4@cor.newman.upenn.edu>
-             Files:  vms/vms.c
-             
-             Title:  "Re: Perl online documentation on OpenVMS"
-             From:  pvhp@forte.com (Peter Prymmer)
-             Msg-ID:  <9803192143.AA28120@forte.com>
-             Files:  README.vms
-             
-             Title:  "Perl5.004_04m4t4 *almost* makes it for VMS", "Updated
-             vms/perly_c.vms and vms/perly_h.vms"
-             From:  Andy Dougherty , Dan Sugalski
-             , larry@wall.org (Larry Wall)
-             Msg-ID:  <199710151650.JAA29185@wall.org>,
-             <3.0.3.32.19971014150404.02fdef78@osshe.edu>,
-             
-             Files:  vms/perly_c.vms
-             
-             Title:  "Updated, non-wordwrapped, patch to README.VMS"
-             From:  Dan Sugalski 
-             Msg-ID:  <3.0.5.32.19980213133828.0092c870@osshe.edu>
-             Files:  README.vms
-             
-             Title:  "VMS patches to 5.004_03 (excluding installperl and timelocal.t)"
-             From:  Charles Bailey 
-             Msg-ID:  <01INZT9G2LZS0006YW@cor.newman.upenn.edu>
-             Files:  lib/File/Basename.pm lib/File/Path.pm vms/config.vms vms/descrip.mms
-             vms/genconfig.pl vms/test.com vms/vms.c vms/ext/Filespec.pm
-             vms/ext/filespec.t
-             
-             Title:  "Re: VMSperl crashes on -Mblib argument"
-             From:  bailey@newman.upenn.edu (Charles Bailey)
-             Msg-ID:  <1997Dec10.004439.2635060@cor.newman>
-             Files:  lib/blib.pm vms/vms.c
-             
-             Title:  "hints/linux.sh (MkLinux / PPC)"
-             From:  pudge@pobox.com (Chris Nandor)
-             Msg-ID:  
-             Files:  hints/linux.sh
-             
-             Title:  "hpux.sh hints file clarification suggestion"
-             From:  root@qad.com
-             Msg-ID:  <199802192351.QAA09096@jhereg.perl.com>
-             Files:  hints/hpux.sh
-             
-             Title:  "new hints/solaris_2.sh"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  hints/solaris_2.sh
-     Branch: maint-5.004/perl
-	   ! README.os2 README.vms cop.h ext/DynaLoader/dl_hpux.xs
-	   ! ext/ODBM_File/ODBM_File.xs ext/POSIX/POSIX.xs
-	   ! ext/POSIX/hints/linux.pl global.sym hints/aix.sh
-	   ! hints/bsdos.sh hints/dec_osf.sh hints/hpux.sh hints/linux.sh
-	   ! hints/netbsd.sh hints/openbsd.sh hints/os2.sh hints/qnx.sh
-	   ! hints/solaris_2.sh hints/svr4.sh lib/Cwd.pm
-	   ! lib/ExtUtils/MM_OS2.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/File/Basename.pm lib/File/Path.pm lib/blib.pm op.c
-	   ! os2/Changes os2/Makefile.SHs os2/OS2/PrfDB/PrfDB.xs os2/os2.c
-	   ! os2/perl2cmd.pl perl.c perl.h pod/perlguts.pod pod/pod2man.PL
-	   ! pp_ctl.c pp_hot.c pp_sys.c proto.h t/lib/filecopy.t
-	   ! t/op/magic.t util.c utils/perldoc.PL vms/config.vms
-	   ! vms/descrip.mms vms/ext/Filespec.pm vms/ext/filespec.t
-	   ! vms/genconfig.pl vms/perly_c.vms vms/perly_h.vms vms/test.com
-           ! vms/vms.c
-____________________________________________________________________________
-[   885] By: gsar                                  on 1998/04/08  01:14:29
-        Log: small tweaks to make it compile (doesn't run)
-     Branch: asperl
-	   ! objpp.h win32/Makefile win32/config.bc win32/config.gc
-           ! win32/config.vc win32/makefile.mk
-____________________________________________________________________________
-[   884] By: gsar                                  on 1998/04/08  00:14:13
-        Log: integrate mainline changes
-     Branch: asperl
-	  +> Changes5.004 ext/Thread/Thread/Signal.pm
-	  +> lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
-          +> lib/ExtUtils/inst t/op/hashwarn.t
-           ! ObjXSub.h embedvar.h interp.sym intrpvar.h objpp.h
-          !> (integrate 127 files)
-____________________________________________________________________________
-[   883] By: gsar                                  on 1998/04/06  20:21:20
-        Log: make old DomainName() implementation the default (so Win95
-             is happy)
-     Branch: win32/perl
-           ! win32/win32.c
-____________________________________________________________________________
-[   882] By: gsar                                  on 1998/04/05  23:32:33
-        Log: fix memory leaks in offer_nice_chunk()
-     Branch: win32/perl
-           ! perl.h sv.c
-____________________________________________________________________________
-[   881] By: gsar                                  on 1998/04/04  23:11:52
-        Log: set up PUSHSTACK for __DIE__ and __WARN__ hooks also
-     Branch: win32/perl
-           ! cop.h util.c
-____________________________________________________________________________
-[   880] By: gsar                                  on 1998/04/04  22:35:54
-        Log: fix refcounting of GvSTASH() when glob becomes nought
-             (this takes care of the "unbalanced strtab refcount" problem)
-     Branch: win32/perl
-           ! sv.c
-____________________________________________________________________________
-[   879] By: gsar                                  on 1998/04/04  21:16:17
-        Log: change 866 was incomplete
-     Branch: win32/perl
-           ! hv.c
-____________________________________________________________________________
-[   878] By: gsar                                  on 1998/04/04  20:31:56
-        Log: fixes for various noises under PERL_DESTRUCT_LEVEL
-     Branch: win32/perl
-           ! cop.h perl.c pp_ctl.c
-____________________________________________________________________________
-[   877] By: gsar                                  on 1998/04/04  17:55:30
-        Log: integrate mainline
-     Branch: win32/perl
-          +> Changes5.004
-          !> Changes MANIFEST sv.c t/op/misc.t
-____________________________________________________________________________
-[   876] By: gsar                                  on 1998/04/04  17:26:32
-        Log: remove __declspec kludge in sdbm.h in favor of setting a
-             flag for static symbols
-     Branch: win32/perl
-	   ! EXTERN.h ext/SDBM_File/sdbm/Makefile.PL
-           ! ext/SDBM_File/sdbm/sdbm.h
-____________________________________________________________________________
-[   875] By: gsar                                  on 1998/04/04  01:11:57
-        Log: fix order of init
-             Message-Id: <3.0.5.32.19980403135815.009d2440@osshe.edu>
-             Date:    Fri, 03 Apr 1998 13:58:15 PST
-             From:    Dan Sugalski 
-             Subject: [PATCH 5.004_64] perl dies in perl_construct when compiled
-             with MULTIPLICITY
-     Branch: win32/perl
-           ! perl.c
-____________________________________________________________________________
-[   874] By: gsar                                  on 1998/04/04  00:34:59
-        Log: the EXTCONST in sdbm.h breaks SDBM on Borland, since
-             the declared symbol is not in a DLL (so kludge it)
-     Branch: win32/perl
-           ! ext/SDBM_File/sdbm/sdbm.h
-____________________________________________________________________________
-[   873] By: TimBunce                              on 1998/04/03  22:17:40
-        Log: Title:  "FileHandle Documentation patch"
-             From:  "Darren/Torin/Who Ever..." 
-             Msg-ID:  <87emzqo49g.fsf@perv.daft.com>
-             Files:  lib/FileHandle.pm
-     Branch: maint-5.004/perl
-           ! lib/FileHandle.pm
-____________________________________________________________________________
-[   872] By: TimBunce                              on 1998/04/03  22:01:03
-        Log: Documentation and documentation related patches:
-             
-             ------  BUILD PROCESS  ------
-             
-             Title:  "Docs re /usr/bin/perl quasi-standard location"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  INSTALL pod/perlrun.pod
-             
-             ------  DOCUMENTATION  ------
-             
-             Title:  "/RFC|RFC-1305/ non-greedy"
-             From:  Jan-Pieter Cornet 
-             Msg-ID:  <6epo02$c4r$1@xs1.xs4all.nl>
-             Files:  pod/perlre.pod
-             
-             Title:  "5.004_04: perlhist.pod, buildtoc, perltoc.pod"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199802191543.RAA29231@alpha.hut.fi>
-             Files:  pod/perl.pod pod/perlhist.pod pod/perltoc.pod pod/buildtoc
-             
-             Title:  "5.004_04: pod/perlfunc.pod: i18n example for localtime()"
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199711141555.RAA18875@alpha.hut.fi>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "typo-fix and suggestion for perlguts.pod"
-             From:  h.sanden@elsevier.nl (Hugo van der Sanden)
-             Msg-ID:  <199803051543.QAA03097@dorlas.elsevier.nl>
-             Files:  pod/perlguts.pod
-             
-             Title:  "perlfunc/syscall curiosity"
-             From:  Roderick Schertler , Tkil
-             
-             Msg-ID:  <199711302259.PAA02134@reptile.scrye.com>,
-             
-             Files:  pod/perlfunc.pod
-             
-             Title:  "Document sprintf %#x behaviour for zero value"
-             From:  ilya@math.ohio-state.edu (Ilya Zakharevich)
-             Msg-ID:  <1997Nov5.185959.2539604@cor.newman>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "NUL termination (was Re: STOP THE PRESSES)"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perlguts.pod
-             
-             Title:  "Typo fix."
-             From:  abigail@fnx.com
-             Msg-ID:  <19971101120114.1030.qmail@betelgeuse.wayne.fnx.com>
-             Files:  pod/perlop.pod pod/perlvar.pod
-             
-             Title:  "5.004_63 perlrun.pod: _DEBUG_MSTATS"
-             From:  Achim Bohnet 
-             Msg-ID:  <9803181940.AA22587@o09.xray.mpe.mpg.de>
-             Files:  pod/perlrun.pod
-             
-             Title:  "Re: Conservative C<*x = undef> patch"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perltrap.pod
-             
-             Title:  "perlfunc.pod for flock()"
-             From:  "Jeremy D. Zawodny" 
-             Msg-ID:  <3.0.5.32.19971118203119.00a723e0@woody.wcnet.org>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "buglet: 'perltoc' not mentioned in perl.pod"
-             From:  Tkil 
-             Msg-ID:  <19971127035036.17668.qmail@scrye.com>
-             Files:  pod/perl.pod
-             
-             Title:  "for() and map() peculiarity"
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perlsyn.pod
-             
-             Title:  "Re: new text for perlsec"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perlsec.pod
-             
-             Title:  "perldsc's debugger x command"
-             From:  Roderick Schertler 
-             Msg-ID:  <10669.878352893@eeyore.ibcinc.com>
-             Files:  pod/perldsc.pod
-             
-             Title:  "perlre.pod"
-             From:  Ted Ashton 
-             Msg-ID:  <199802271501.KAA09279@ns.southern.edu>
-             Files:  pod/perlre.pod
-             
-             Title:  "Re: printf and $\", "printf and $\"
-             From:  Roderick Schertler , Tom Phoenix
-             , nag 
-             Msg-ID:  <199711141918.TAA08096@flirble.org>,
-             , 
-             Files:  pod/perlfunc.pod
-             
-             Title:  "recv() typo"
-             From:  Roderick Schertler 
-             Msg-ID:  <12064.877012073@eeyore.ibcinc.com>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "truncate return value"
-             From:  Roderick Schertler 
-             Msg-ID:  <5490.878337883@eeyore.ibcinc.com>
-             Files:  pod/perlfunc.pod
-             
-             Title:  "update to perlbook.pod"
-             From:  "Nathan V. Patwardhan" , Randal Schwartz
-             , Stephen Potter
-             , Tom Phoenix
-             
-             Msg-ID:  <199803241354.HAA23938@psasolar.psa.pencom.com>,
-             <199803241441.OAA01261@mediaone.net>,
-             <8clnu0i05k.fsf@gadget.cscaper.com>,
-             
-             Files:  pod/perlbook.pod
-             
-             Title:  "utime documentation"
-             From:  "Brandon S. Allbery KF8NH" , "M.J.T. Guy"
-             
-             Msg-ID:  <199802180256.VAA11369@speaker.kf8nh.apk.net>,
-             
-             Files:  pod/perlfunc.pod
-             
-             Title:  "(well, doc patch) use of // requires successful match"
-             From:  Roderick Schertler 
-             Msg-ID:  
-             Files:  pod/perlop.pod
-             
-             ------  LIBRARY AND EXTENSIONS  ------
-             
-             Title:  "MakeMaker PM doc patch and a DIR buglet"
-             From:  Achim Bohnet 
-             Msg-ID:  <9711101050.AA13868@o09.xray.mpe.mpg.de>
-             Files:  lib/ExtUtils/MakeMaker.pm
-             
-             Title:  "bareword clarification for constant.pm"
-             From:  Roderick Schertler 
-             Msg-ID:  <6460.878143077@eeyore.ibcinc.com>
-             Files:  lib/constant.pm
-             
-             Title:  "integer rand - bug or feature?"
-             From:  Roderick Schertler 
-             Msg-ID:  
-             Files:  lib/integer.pm
-             
-             ------  OTHER CHANGES  ------
-             
-             Title:  "FileHandle Documentation patch"
-             From:  "Darren/Torin/Who Ever..." 
-             Msg-ID:  <87emzqo49g.fsf@perv.daft.com>
-             
-             Title:  "perl5.004_61 myconfig updates"
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  myconfig
-             
-             Title:  "small fixups in pod2latex.PL"
-             From:  "Darren/Torin/Who Ever..." 
-             Msg-ID:  <873eg6o3v2.fsf@perv.daft.com>
-             
-             ------  PORTABILITY - GENERAL  ------
-             
-             Title:  "Misc doc fixes for README.VMS"
-             From:  Dan Sugalski 
-             Msg-ID:  <3.0.5.32.19980121113134.00924a20@osshe.edu>
-             Files:  README.vms
-             
-             Title:  "moved DynaLib"
-             From:  John Tobey 
-             Msg-ID:  <199710182332.XAA21630@remote212>
-             Files:  ext/DynaLoader/DynaLoader.pm.PL
-             
-             ------  UTILITIES  ------
-             
-             Title:  "Searching for FAQs (patch to perldoc)"
-             From:  Piers Cawley , Russ Allbery 
-             Msg-ID:  ,
-             
-             Files:  utils/perldoc.PL
-             
-             Title:  "perldoc"
-             From:  Ted Ashton 
-             Msg-ID:  <199802271510.KAA10506@ns.southern.edu>
-             Files:  utils/perldoc.PL
-             
-             Title:  "perldoc -f not using pod2man"
-             From:  Russ Allbery 
-             Msg-ID:  
-             Files:  utils/perldoc.PL
-             
-             Title:  "perldoc -m should not require pod"
-             From:  Robin Houston 
-             Msg-ID:  <199803241319.NAA24777@stringfellow.guardian.co.uk>
-             Files:  utils/perldoc.PL
-             
-             Title:  "small fix for perldoc in perl 5.004_04"
-             From:  Julian Yip 
-             Msg-ID:  
-             Files:  utils/perldoc.PL
-     Branch: maint-5.004/perl
-           - ext/DynaLoader/DynaLoader.pm
-	   ! Changes Configure INSTALL README.vms
-	   ! ext/DynaLoader/DynaLoader.pm.PL ext/Socket/Socket.pm
-	   ! lib/ExtUtils/MakeMaker.pm lib/Tie/Hash.pm lib/constant.pm
-	   ! lib/integer.pm myconfig pod/buildtoc pod/checkpods.PL
-	   ! pod/perl.pod pod/perlbook.pod pod/perldelta.pod
-	   ! pod/perldiag.pod pod/perldsc.pod pod/perlfunc.pod
-	   ! pod/perlguts.pod pod/perlhist.pod pod/perllocale.pod
-	   ! pod/perlmod.pod pod/perlop.pod pod/perlre.pod pod/perlrun.pod
-	   ! pod/perlsec.pod pod/perlstyle.pod pod/perlsyn.pod
-	   ! pod/perltoc.pod pod/perltrap.pod pod/perlvar.pod
-           ! pod/pod2latex.PL toke.c utils/perldoc.PL
-
-----------------
-Version 5.004_64
-----------------
-
-____________________________________________________________________________
-[   871] By: mbeattie                              on 1998/04/03  13:38:59
-        Log: Update Changes5.004 and Changes, fix MANIFEST
-     Branch: perl
-           + Changes
-           ! Changes5.004 MANIFEST
-____________________________________________________________________________
-[   870] By: mbeattie                              on 1998/04/03  13:36:29
-        Log: Rename Changes to Changes5.004 (via an integrate)
-     Branch: perl
-          +> Changes5.004
-           - Changes
-____________________________________________________________________________
-[   869] By: mbeattie                              on 1998/04/03  11:53:00
-        Log: Subject: [PATCH] Perl 5.005b1t2/perl5.004_63 (resend)
-             Date: Wed, 18 Mar 1998 01:24:20 +0100 (MET)
-             From: Jan-Pieter Cornet 
-     Branch: perl
-           ! sv.c t/op/misc.t
-____________________________________________________________________________
-[   868] By: mbeattie                              on 1998/04/03  11:16:26
-        Log: Integrate win32 branch into mainline
-     Branch: perl
-          !> (integrate 31 files)
-____________________________________________________________________________
-[   867] By: gsar                                  on 1998/04/03  08:47:55
-        Log: config.* fixes
-     Branch: win32/perl
-	   ! 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
-____________________________________________________________________________
-[   866] By: gsar                                  on 1998/04/03  07:22:50
-        Log: fixup hv_free_ent() to not fail on null HeVAL()
-     Branch: win32/perl
-           ! hv.c perl.c
-____________________________________________________________________________
-[   865] By: gsar                                  on 1998/04/03  07:06:12
-        Log: integrate mainline
-     Branch: win32/perl
-          +> ext/Thread/Thread/Signal.pm t/op/hashwarn.t
-          !> (integrate 71 files)
-____________________________________________________________________________
-[   864] By: gsar                                  on 1998/04/03  06:59:37
-        Log: implement stack-of-stacks so that magic invocations don't
-             invalidate local stack pointer
-     Branch: win32/perl
-	   ! av.c cop.h deb.c embed.h embedvar.h global.sym gv.c interp.sym
-	   ! intrpvar.h mg.c op.c perl.c pp.h pp_ctl.c pp_sys.c proto.h
-           ! scope.c sv.c t/op/runlevel.t thrdvar.h util.c
-____________________________________________________________________________
-[   863] By: gsar                                  on 1998/04/03  01:26:09
-        Log: add AS patch#15
-     Branch: asperl
-	   ! ipenv.h lib/ExtUtils/MM_Unix.pm perl.c perlenv.h
-	   ! win32/config.bc win32/config.gc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-	   ! win32/config_h.PL win32/config_sh.PL win32/runperl.c
-           ! win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   862] By: mbeattie                              on 1998/04/02  17:08:43
-        Log: Subject: [PATCH for 5.004_63] Config_63-04-05.diff
-             Date: Thu, 2 Apr 1998 11:56:51 -0500 (EST)
-             From: Andy Dougherty 
-     Branch: perl
-           ! Configure ext/Socket/Socket.xs myconfig
-____________________________________________________________________________
-[   861] By: mbeattie                              on 1998/04/02  16:32:53
-        Log: Change 854 added { NULL, 0 } to sdbm.h which needs to be {0, 0}
-             since appropriate headers aren't included.
-     Branch: perl
-           ! ext/SDBM_File/sdbm/sdbm.h
-____________________________________________________________________________
-[   860] By: mbeattie                              on 1998/04/02  16:17:11
-        Log: Bumped patchlevel.h to 64
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   859] By: mbeattie                              on 1998/04/02  16:16:26
-        Log: Subject: Re: [PATCH] 5.004_63: UNICOS 9
-             Date: Fri, 20 Mar 1998 19:39:28 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! hints/unicos.sh regcomp.h
-____________________________________________________________________________
-[   858] By: mbeattie                              on 1998/04/02  16:13:24
-        Log: Subject: [PATCH] Re: Odd number of elements in hash list.
-             Date: Sat, 28 Mar 1998 15:26:46 -0800 (PST)
-             From: Tom Phoenix 
-     Branch: perl
-           + t/op/hashwarn.t
-           ! MANIFEST pod/perldiag.pod pp.c pp_hot.c
-____________________________________________________________________________
-[   857] By: mbeattie                              on 1998/04/02  16:08:43
-        Log: Subject: [PATCH 5.004_(04|63)] Close VMS security hole
-             Date: Sat, 28 Mar 1998 02:05:03 -0500 (EST)
-             From: Charles Bailey 
-     Branch: perl
-           ! vms/vms.c
-____________________________________________________________________________
-[   856] By: mbeattie                              on 1998/04/02  16:07:44
-        Log: Subject: [PATCH] mv-if-diff
-             Date: Fri, 27 Mar 98 18:06:11 GMT
-             From: Robin Barker 
-     Branch: perl
-           ! mv-if-diff
-____________________________________________________________________________
-[   855] By: mbeattie                              on 1998/04/02  16:06:54
-        Log: From: Jan-Pieter Cornet 
-             Subject: Re: [PATCH] [BUG 5.004_63] define/set of PERL_DESTRUCT_LEVEL
-             Date: Fri, 27 Mar 1998 02:11:21 +0100 (MET)
-             Subject: [PATCH] another destruct_level fix
-             Date: Mon, 30 Mar 1998 23:48:12 +0200 (MET DST)
-     Branch: perl
-           ! perl.c sv.c
-____________________________________________________________________________
-[   854] By: mbeattie                              on 1998/04/02  16:03:37
-        Log: Subject: Next wave of _63 VMS patches
-             Date: Thu, 26 Mar 1998 15:11:50 -0500 (EST)
-             From: Charles Bailey 
-     Branch: perl
-	   ! EXTERN.h INTERN.h ext/SDBM_File/Makefile.PL
-	   ! ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/dba.c
-	   ! ext/SDBM_File/sdbm/dbd.c ext/SDBM_File/sdbm/dbu.c
-	   ! ext/SDBM_File/sdbm/hash.c ext/SDBM_File/sdbm/pair.c
-	   ! ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
-	   ! ext/Thread/io.t installperl lib/ExtUtils/MM_VMS.pm
-	   ! lib/Net/Ping.pm perldir.h perlsdio.h t/lib/english.t
-	   ! vms/config.vms vms/descrip.mms vms/ext/Filespec.pm
-	   ! vms/ext/Stdio/0README.txt vms/ext/Stdio/Stdio.pm
-	   ! vms/ext/Stdio/Stdio.xs vms/ext/Stdio/test.pl
-	   ! vms/ext/filespec.t vms/genconfig.pl vms/perly_c.vms vms/vms.c
-           ! vms/vmsish.h
-____________________________________________________________________________
-[   853] By: mbeattie                              on 1998/04/02  15:55:46
-        Log: Subject: [PATCH 5.00463] Confusing error from perl -e "x'"
-             Date: Wed, 25 Mar 1998 17:43:17 -0500 (EST)
-             From: Hans Mulder 
-     Branch: perl
-           ! toke.c
-____________________________________________________________________________
-[   852] By: mbeattie                              on 1998/04/02  15:54:24
-        Log: Subject: [PATCH] small fixups in pod2latex.PL
-             Date: 25 Mar 1998 13:30:25 -0800
-             From: "Darren/Torin/Who Ever..." 
-     Branch: perl
-           ! pod/pod2latex.PL
-____________________________________________________________________________
-[   851] By: mbeattie                              on 1998/04/02  15:50:58
-        Log: Subject: [PATCH] hints/irix_6.sh with GCC
-             Date: Tue, 24 Mar 1998 12:25:10 -0800 (EST)
-             From: kstar@chapin.edu (Kurt D. Starsinic)
-     Branch: perl
-           ! hints/irix_6.sh
-____________________________________________________________________________
-[   850] By: mbeattie                              on 1998/04/02  15:45:33
-        Log: Subject: [PATCH] perldoc -m
-             Date: Tue, 24 Mar 1998 13:19:38 GMT
-             From: Robin Houston 
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   849] By: mbeattie                              on 1998/04/02  15:42:52
-        Log: Subject: [PATCH for 5.004_63] dos-djgpp update
-             Date: Mon, 23 Mar 1998 14:13:46 +0100
-             From: Laszlo Molnar 
-     Branch: perl
-           ! djgpp/config.over hints/dos_djgpp.sh
-____________________________________________________________________________
-[   848] By: mbeattie                              on 1998/04/02  15:38:19
-        Log: Subject: [PATCH] Stale SP in pp_substr
-             Date: Thu, 19 Mar 1998 21:28:02 -0600 (CST)
-             From: Stephen McCamant 
-     Branch: perl
-           ! pp.c
-____________________________________________________________________________
-[   847] By: mbeattie                              on 1998/04/02  15:36:33
-        Log: Add missing export of "nice" to ext/POSIX/POSIX.pm (Phil Tait)
-     Branch: perl
-           ! ext/POSIX/POSIX.pm
-____________________________________________________________________________
-[   846] By: mbeattie                              on 1998/04/02  15:34:36
-        Log: Subject: [PATCH] 5.004_63: further -e patching
-             Date: Wed, 18 Mar 1998 23:21:08 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! perl.c pod/perldiag.pod
-____________________________________________________________________________
-[   845] By: mbeattie                              on 1998/04/02  15:25:18
-        Log: Andy Dougherty's configuration patches (Config_63-01 up to 04).
-     Branch: perl
-	   ! Configure INSTALL Policy_sh.SH Porting/Glossary
-	   ! Porting/config.sh Porting/config_H config_h.SH
-	   ! ext/POSIX/POSIX.xs handy.h hints/hpux.sh myconfig perlsock.h
-           ! pp.c pp_sys.c regexec.c
-____________________________________________________________________________
-[   844] By: mbeattie                              on 1998/04/02  14:28:17
-        Log: Subject: [PATCH 5.004_63] perlrun.pod: PERL_DEBUG_MSTATS 
-             Date: Wed, 18 Mar 1998 20:40:19 +0100
-             From: Achim Bohnet 
-     Branch: perl
-           ! pod/perlrun.pod
-____________________________________________________________________________
-[   843] By: mbeattie                              on 1998/04/02  14:26:52
-        Log: From: Dan Sugalski 
-             Subject: 5.004_63 picky compiler fixes [PATCH]
-             Date: Wed, 18 Mar 1998 09:36:32 -0800
-             Subject: [PATCH 5.004_63] Fix function prototype with long doubles
-             Date: Wed, 18 Mar 1998 14:48:19 -0800
-     Branch: perl
-           ! ext/POSIX/POSIX.xs ext/Thread/Thread.xs vms/vms.c
-____________________________________________________________________________
-[   842] By: mbeattie                              on 1998/04/02  14:22:41
-        Log: From: Stephen Potter 
-             Subject: Re: doc: perlrun typo 
-             Date: Wed, 18 Mar 1998 10:06:55 -0600
-             Subject: Re: [PATCH 5.004_63] PerlLIO abstraction cleanup 
-             Date: Tue, 24 Mar 1998 21:20:51 -0600
-     Branch: perl
-           ! mg.c perl.c pod/perlrun.pod pp_hot.c pp_sys.c util.c
-____________________________________________________________________________
-[   841] By: mbeattie                              on 1998/04/02  14:17:31
-        Log: Subject: [PATCH] Add "Full 64 bit support" to Todo; document Todo in pumpkin.pod
-             Date: Wed, 18 Mar 1998 12:44:58 +0100
-             From: Dominic Dunlop 
-     Branch: perl
-           ! Porting/pumpkin.pod Todo
-____________________________________________________________________________
-[   840] By: mbeattie                              on 1998/04/02  14:14:22
-        Log: Subject: [PATCH] Configure hints/ patches
-             Date: Wed, 18 Mar 1998 02:47:38 +0100 (MET)
-             From: Jan-Pieter Cornet 
-     Branch: perl
-           ! hints/linux.sh hints/qnx.sh
-____________________________________________________________________________
-[   839] By: mbeattie                              on 1998/04/02  14:13:13
-        Log: Remove duplicate code in cygwin32/perlgcc (Blair Zajac)
-     Branch: perl
-           ! cygwin32/perlgcc
-____________________________________________________________________________
-[   838] By: gsar                                  on 1998/03/28  05:01:57
-        Log: fix Env.pm to weed out illegal names
-     Branch: win32/perl
-           ! lib/Env.pm
-____________________________________________________________________________
-[   837] By: gsar                                  on 1998/03/28  04:39:43
-        Log: fix typo in makefile.mk
-     Branch: win32/perl
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   836] By: gsar                                  on 1998/03/23  17:40:15
-        Log: add file: to installhtml URLs
-     Branch: win32/perl
-           ! win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[   835] By: mbeattie                              on 1998/03/18  11:03:11
-        Log: Add Thread::Signal to run signal handlers reliably in a new thread
-     Branch: perl
-           + ext/Thread/Thread/Signal.pm
-           ! MANIFEST ext/Thread/Thread.xs
-
-----------------
-Version 5.004_63
-----------------
-
-____________________________________________________________________________
-[   834] By: mbeattie                              on 1998/03/17  16:19:10
-        Log: Policy_sh.SH had extra $ in pager=$pager comment (Hallvard B Furuseth)
-     Branch: perl
-           ! Policy_sh.SH
-____________________________________________________________________________
-[   833] By: mbeattie                              on 1998/03/17  16:11:02
-        Log: Integrate win32 branch into mainline.
-     Branch: perl
-	  !> regcomp.c win32/config.bc win32/config.gc win32/config.vc
-	  !> win32/config_H.bc win32/config_H.gc win32/config_H.vc
-          !> win32/win32.c
-____________________________________________________________________________
-[   832] By: gsar                                  on 1998/03/17  14:32:39
-        Log: propagate bugfix @ change831 from asperl
-     Branch: win32/perl
-           ! regcomp.c
-____________________________________________________________________________
-[   831] By: gsar                                  on 1998/03/17  14:02:51
-        Log: fix buggy order of free() in regcomp.c (from AS)
-     Branch: asperl
-           ! regcomp.c
-____________________________________________________________________________
-[   830] By: gsar                                  on 1998/03/17  01:10:54
-        Log: add a part of AS patch#14, backout incomplete variable
-             name changes for gcc. Builds and tests under VC/BC once again.
-     Branch: asperl
-           ! bytecode.h mg.c pp.c pp_ctl.c pp_hot.c toke.c
-____________________________________________________________________________
-[   829] By: gsar                                  on 1998/03/16  23:49:18
-        Log: stray tweak to win32.c
-     Branch: win32/perl
-           ! win32/win32.c
-____________________________________________________________________________
-[   828] By: gsar                                  on 1998/03/16  22:06:03
-        Log: update win32/config* files
-     Branch: win32/perl
-	   ! win32/config.bc win32/config.gc win32/config.vc
-           ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-____________________________________________________________________________
-[   827] By: gsar                                  on 1998/03/16  19:09:30
-        Log: trivial integrate of mainline
-     Branch: win32/perl
-	  +> lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
-          +> lib/ExtUtils/inst
-          !> (integrate 61 files)
-____________________________________________________________________________
-[   826] By: mbeattie                              on 1998/03/16  16:39:23
-        Log: newCONSTSUB had private MY_start_subparse.
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[   825] By: mbeattie                              on 1998/03/16  16:36:55
-        Log: Missing dTHR in hv_fetch_ent when statics moved to thread struct.
-     Branch: perl
-           ! hv.c
-____________________________________________________________________________
-[   824] By: mbeattie                              on 1998/03/16  16:27:43
-        Log: Added missing entry for lib/ExtUtils/Packlist.pm to MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   823] By: mbeattie                              on 1998/03/16  16:26:02
-        Log: Missed p4 add of lib/ExtUtils/Packlist.pm in change 814.
-     Branch: perl
-           + lib/ExtUtils/Packlist.pm
-____________________________________________________________________________
-[   822] By: mbeattie                              on 1998/03/16  16:22:58
-        Log: Bump patchlevel.h to 63.
-     Branch: perl
-           ! ext/IO/IO.xs patchlevel.h
-          !> (integrate 41 files)
-____________________________________________________________________________
-[   821] By: mbeattie                              on 1998/03/16  16:18:35
-        Log: newCONSTSUB added (XSUB equivalent for inlinable sub () { 123 }).
-             Subject: Bundling builtin.pm and newCONSTSUB with the core?
-             From: jan.dubois@ibm.net (Jan Dubois)
-             Date: Sun, 15 Mar 1998 19:09:05 +0100
-     Branch: perl
-           ! embed.h global.sym op.c pod/perlguts.pod proto.h
-____________________________________________________________________________
-[   820] By: mbeattie                              on 1998/03/16  16:02:50
-        Log: Subject: [PATCH] STRESS_REALLOC
-             Date: Fri, 13 Mar 1998 22:28:19 -0600 (CST)
-             From: Stephen McCamant 
-     Branch: perl
-           ! malloc.c perl.c scope.c
-____________________________________________________________________________
-[   819] By: mbeattie                              on 1998/03/16  16:01:06
-        Log: Subject: [BUG+PATCH] _62 with -DDEBUGGING and -Duseperlio
-             Date: Fri, 13 Mar 1998 23:21:25 +0100
-             From: Jan-Pieter Cornet 
-     Branch: perl
-           ! perly.c
-____________________________________________________________________________
-[   818] By: mbeattie                              on 1998/03/16  15:59:16
-        Log: Subject: [Configure PATCH] for OS/2
-             Date: Fri, 13 Mar 1998 16:18:12 -0500 (EST)
-             From: Ilya Zakharevich 
-             [Two hunks to Configure failed to apply due to clashes]
-     Branch: perl
-           ! Configure hints/os2.sh
-____________________________________________________________________________
-[   817] By: mbeattie                              on 1998/03/16  15:55:28
-        Log: Subject: [PATCH 5.004_62] VMS updates (direct)
-             Date: Thu, 12 Mar 1998 16:02:29 -0500 (EST)
-             From: Charles Bailey 
-             [Needed manual tweaks on vms/config.vms since it clashed with other
-             patches. I may have got it wrong.]
-     Branch: perl
-	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm
-	   ! lib/ExtUtils/Mksymlists.pm perl.h pp.c pp_hot.c regcomp.c
-	   ! regcomp.h utils/perldoc.PL vms/config.vms vms/descrip.mms
-	   ! vms/ext/Stdio/Stdio.pm vms/ext/filespec.t vms/fndvers.com
-	   ! vms/gen_shrfls.pl vms/genconfig.pl vms/sockadapt.h
-           ! vms/test.com vms/vms.c vms/vmsish.h
-____________________________________________________________________________
-[   816] By: mbeattie                              on 1998/03/16  15:26:04
-        Log: Subject: [PATCH] Let h2xs read multiple header files
-             Date: Tue, 10 Mar 1998 09:35:42 -0500 (EST)
-             From: Benjamin Sugars 
-     Branch: perl
-           ! utils/h2xs.PL
-____________________________________________________________________________
-[   815] By: mbeattie                              on 1998/03/16  15:24:12
-        Log: Subject: Re: Almost OK: Perl 5.004_62 on VMS 7.1
-             Date: Mon, 09 Mar 1998 09:18:56 -0800
-             From: Dan Sugalski 
-     Branch: perl
-           ! vms/config.vms
-____________________________________________________________________________
-[   814] By: mbeattie                              on 1998/03/16  13:17:14
-        Log: Subject: PATCH for 5.004_62 : Add .packlist handling classes to ExtUtils
-             Date: Sun, 08 Mar 1998 12:50:23 +0000
-             From: Alan Burlison 
-             plus manual update of MANIFEST
-     Branch: perl
-           + lib/ExtUtils/Installed.pm lib/ExtUtils/inst
-	   ! MANIFEST installman installperl lib/ExtUtils/Install.pm
-           ! lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
-[   813] By: mbeattie                              on 1998/03/16  13:08:55
-        Log: From: Blair Zajac 
-             Subject: PATCH: util.c and util.h function declarations do not match
-             Date: Fri, 6 Mar 1998 10:29:29 -0800 (PST)
-             Subject: PATCH: cgywin32 patch for perlgcc
-             Date: Fri, 6 Mar 1998 11:15:36 -0800 (PST)
-             Subject: PATCH: perl5.004_62 on cygwin32
-             Date: Fri, 6 Mar 1998 11:57:35 -0800 (PST)
-     Branch: perl
-	   ! Configure cygwin32/perlgcc cygwin32/perlld pp_sys.c x2p/util.c
-____________________________________________________________________________
-[   812] By: mbeattie                              on 1998/03/16  12:55:39
-        Log: From: Andy Dougherty 
-             Subject: [PATCH 5.004_62} Config_62-01 patch available.
-             Date: Mon, 9 Mar 1998 15:23:33 -0500 (EST)
-             Subject: [PATCH 5.004_62] Tiny hint file updates
-             Date: Mon, 9 Mar 1998 13:21:46 -0500 (EST)
-     Branch: perl
-	   ! Configure Porting/Glossary Porting/config.sh Porting/config_H
-	   ! config_h.SH ext/ODBM_File/ODBM_File.xs handy.h hints/aix.sh
-	   ! hints/dec_osf.sh hints/dos_djgpp.sh hints/freebsd.sh
-	   ! hints/irix_6.sh hints/irix_6_0.sh hints/irix_6_1.sh
-	   ! hints/os2.sh hints/solaris_2.sh patchlevel.h perl.c perl.h
-           ! perllio.h pod/perldiag.pod pp_sys.c vms/config.vms
-____________________________________________________________________________
-[   811] By: mbeattie                              on 1998/03/16  12:13:55
-        Log: DOS djgpp updates:
-             From: Laszlo Molnar 
-             Subject: [PATCH for 5.004_61] dos-djgpp update
-             Date: Fri, 6 Mar 1998 10:41:01 +0100
-             Subject: [PATCH 5.004_62] dos-djgpp update
-             Date: Thu, 12 Mar 1998 13:34:51 +0100
-     Branch: perl
-           ! djgpp/config.over hints/dos_djgpp.sh
-____________________________________________________________________________
-[   810] By: gsar                                  on 1998/03/16  08:48:17
-        Log: integrate mainline
-     Branch: win32/perl
-          !> pp_sys.c
-____________________________________________________________________________
-[   809] By: gsar                                  on 1998/03/16  08:44:37
-        Log: various changes to get asperl working under Borland
-             (passes all tests when built under PERL_OBJECT)
-     Branch: asperl
-	   ! ObjXSub.h ext/Opcode/Opcode.xs globals.c mg.c objpp.h op.c
-	   ! perl.h perly.c perly.c.diff pp.c pp_ctl.c pp_hot.c pp_sys.c
-	   ! proto.h scope.h sv.c toke.c win32/Makefile win32/config_H.bc
-	   ! win32/config_H.gc win32/config_H.vc win32/makedef.pl
-	   ! win32/makefile.mk win32/runperl.c win32/win32.c win32/win32.h
-           ! win32/win32sck.c
-____________________________________________________________________________
-[   808] By: gsar                                  on 1998/03/12  19:50:20
-        Log: set sockets to nonoverlapped mode for every thread
-             Message-Id: <35081FE4.965A484D@enteract.com>
-             Date:    Thu, 12 Mar 1998 11:48:20 CST
-             From:    Steve Nielsen 
-             Subject: [PATCH 5.004_62] win32: set sockopt on a per-thread basis
-     Branch: win32/perl
-           ! win32/win32.h win32/win32sck.c
-____________________________________________________________________________
-[   807] By: gsar                                  on 1998/03/12  19:26:54
-        Log: add AS patch#13
-     Branch: asperl
-           ! win32/Makefile
-____________________________________________________________________________
-[   806] By: gsar                                  on 1998/03/12  00:51:08
-        Log: added AS patch#12 with minor changes
-     Branch: asperl
-	   ! ObjXSub.h bytecode.h byterun.c doio.c iplio.h
-	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
-	   ! lib/ExtUtils/Mksymlists.pm lib/ExtUtils/xsubpp objpp.h perl.c
-	   ! perllio.h proto.h regcomp.c win32/Makefile win32/config_h.PL
-           ! win32/runperl.c
-____________________________________________________________________________
-[   805] By: gsar                                  on 1998/03/10  20:35:10
-        Log: reinstate some standard sig_names to avoid noise from
-             modules (and in hopes of making them _do_ something in future)
-     Branch: win32/perl
-	   ! win32/config.bc win32/config.gc win32/config.vc
-           ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-____________________________________________________________________________
-[   804] By: gsar                                  on 1998/03/10  20:33:05
-        Log: mingw32 tweaks
-     Branch: win32/perl
-           ! win32/makefile.mk win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   803] By: gsar                                  on 1998/03/09  20:56:07
-        Log: tweak Win32::DomainName() implementation
-     Branch: win32/perl
-           ! win32/Makefile win32/win32.c
-____________________________________________________________________________
-[   802] By: gsar                                  on 1998/03/09  03:51:01
-        Log: merge C patch, also moved statics in
-             [ah]v.c to thrdvar.h
-     Branch: win32/perl
-           ! av.c embedvar.h hv.c scope.c t/op/local.t thrdvar.h
-____________________________________________________________________________
-[   801] By: gsar                                  on 1998/03/09  02:38:35
-        Log: minor win32 support fixes
-             - add a better implementation of Win32::DomainName() (as
-             suggested by Jutta M. Klebe )
-             - fix opendir() emulation was unsafe what given long paths
-     Branch: win32/perl
-           ! win32/win32.c
-____________________________________________________________________________
-[   800] By: nick                                  on 1998/03/07  09:36:41
-        Log: There has been a 'thaw' in config.h (the ICE has gone ;-))
-             So pp_sys.c needs tweaking otherwise it does not believe getservby*()
-             exist. (Breaks libnet).
-     Branch: perl
-           ! pp_sys.c
-____________________________________________________________________________
-[   799] By: gsar                                  on 1998/03/07  07:51:28
-        Log: integrate mainline changes
-     Branch: asperl
-          !> (integrate 111 files)
-____________________________________________________________________________
-[   798] By: gsar                                  on 1998/03/07  07:01:55
-        Log: integrate mainline
-     Branch: win32/perl
-          !> myconfig patchlevel.h
-____________________________________________________________________________
-[   797] By: gsar                                  on 1998/03/07  06:49:49
-        Log: provide our own popen()/pclose() to fix problems with qx//:
-             - qx// used to always invoke the shell, now does so only when needed
-             - qx// didn't respect PERL5SHELL, now does
-     Branch: win32/perl
-           ! lib/ExtUtils/typemap win32/config_h.PL win32/win32.c
-____________________________________________________________________________
-[   796] By: gsar                                  on 1998/03/07  01:37:10
-        Log: a missed s/sp/SP/
-     Branch: win32/perl
-           ! lib/ExtUtils/typemap pod/perlcall.pod
-____________________________________________________________________________
-[   795] By: gsar                                  on 1998/03/07  01:05:21
-        Log: change all 'sp' to 'SP' in code and in the docs.  Explicitly
-             mention that local stack pointer should be called SP.  This makes the
-             API safer from source incompatibilities down the line.
-     Branch: win32/perl
-	   ! av.c doio.c doop.c ext/DB_File/DB_File.xs
-	   ! ext/DynaLoader/dl_dld.xs ext/Opcode/Opcode.xs
-	   ! ext/POSIX/POSIX.xs ext/Socket/Socket.xs ext/Thread/Thread.xs
-	   ! gv.c mg.c op.c os2/OS2/REXX/REXX.xs perl.c pod/perlcall.pod
-	   ! pod/perlembed.pod pod/perlguts.pod pod/perlxs.pod pp.c
-           ! pp_ctl.c pp_hot.c pp_sys.c util.c
-
-----------------
-Version 5.004_62
-----------------
-
-____________________________________________________________________________
-[   794] By: mbeattie                              on 1998/03/06  09:38:08
-        Log: Subject: [PATCH] perl5.004_61 myconfig updates
-             Date: Thu, 5 Mar 1998 15:10:54 -0500 (EST)
-             From: Andy Dougherty 
-     Branch: perl
-           ! myconfig
-____________________________________________________________________________
-[   793] By: mbeattie                              on 1998/03/06  09:36:37
-        Log: Bump patchlevel.h to 62.
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   792] By: mbeattie                              on 1998/03/06  09:35:57
-        Log: Integrate win32 branch into mainline.
-     Branch: perl
-	  !> bytecode.h op.c proto.h scope.c 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
-____________________________________________________________________________
-[   791] By: gsar                                  on 1998/03/06  06:00:08
-        Log: various
-             - s/PerlIO_fread/PerlIO_read/, the former doesn't exist
-             - add missing prototypes
-             - regenerate win32/config*.?c
-     Branch: win32/perl
-	   ! bytecode.h proto.h win32/config.bc win32/config.gc
-	   ! win32/config.vc win32/config_H.bc win32/config_H.gc
-           ! win32/config_H.vc win32/makefile.mk
-____________________________________________________________________________
-[   790] By: gsar                                  on 1998/03/06  03:19:23
-        Log: fix typo in Makefile
-     Branch: win32/perl
-           ! win32/Makefile
-____________________________________________________________________________
-[   789] By: gsar                                  on 1998/03/05  22:55:53
-        Log: integrate mainline
-     Branch: win32/perl
-          !> (integrate 47 files)
-____________________________________________________________________________
-[   788] By: gsar                                  on 1998/03/05  20:02:09
-        Log: added AS patch#11
-             Message-Id: <01BD4820.AFC70110.dougl@ActiveState.com>
-             Date:    Thu, 05 Mar 1998 10:23:04 PST
-             From:    Douglas Lankshear 
-             
-             This patch fixes a bug I introduced removing duplicate code.
-             -- Doug
-     Branch: asperl
-           ! ObjXSub.h objpp.h win32/runperl.c
-____________________________________________________________________________
-[   787] By: gsar                                  on 1998/03/05  19:56:17
-        Log: add Nick's dTHR fixes
-     Branch: win32/perl
-           ! op.c scope.c
-____________________________________________________________________________
-[   786] By: gsar                                  on 1998/03/05  19:54:49
-        Log: maintpatch
-             Message-Id: <199803050749.CAA15206@Orb.Nashua.NH.US>
-             Date:    Thu, 05 Mar 1998 02:49:46 EST
-             From:    Spider Boardman 
-             Subject: [PATCH] 5.004_04 +MAINT_TRIAL_1 broken when sizeof(int) != sizeof(void
-     Branch: win32/perl
-           ! scope.c
-____________________________________________________________________________
-[   785] By: mbeattie                              on 1998/03/05  19:12:14
-        Log: Subject: [5.004_61 PATCH] Make incompatible changes to RE engine NOW
-             Date: Wed, 4 Mar 1998 23:55:54 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! op.c proto.h regcomp.c regexp.h util.c
-____________________________________________________________________________
-[   784] By: mbeattie                              on 1998/03/05  19:11:09
-        Log: Subject: [PATCH] Re: perl 5.0061 unable to build on sparc 5 Sol2.5.1 threads.
-             Date: Wed, 4 Mar 1998 10:18:03 GMT
-             From: Nick Ing-Simmons 
-     Branch: perl
-           ! atomic.h
-____________________________________________________________________________
-[   783] By: mbeattie                              on 1998/03/05  19:09:16
-        Log: Subject: Configure patches -01 and -02 for 5.004_61.
-             Date: Tue, 3 Mar 1998 16:41:16 -0500 (EST)
-             From: Andy Dougherty 
-     Branch: perl
-	   ! Configure INSTALL Policy_sh.SH Porting/Glossary
-	   ! Porting/config.sh Porting/config_H Porting/pumpkin.pod
-	   ! config_h.SH handy.h hints/README.hints hints/aix.sh
-	   ! hints/linux.sh hints/solaris_2.sh hints/unicos.sh
-           ! makedepend.SH myconfig pp_sys.c
-____________________________________________________________________________
-[   782] By: mbeattie                              on 1998/03/05  19:05:23
-        Log: Subject: [PATCH] Compiling with OP_IN_REGISTER
-             Date: 03 Mar 1998 18:05:07 +0100
-             From: Gisle Aas 
-     Branch: perl
-           ! perl.h pp_ctl.c
-____________________________________________________________________________
-[   781] By: mbeattie                              on 1998/03/05  19:04:34
-        Log: Subject: [PATCH] Make autouse -w-safe
-             Date: Mon, 2 Mar 1998 21:36:02 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! lib/autouse.pm op.c sv.c
-____________________________________________________________________________
-[   780] By: mbeattie                              on 1998/03/05  19:02:50
-        Log: Subject: [PATCH] External symbol re_croak2
-             Date: 02 Mar 1998 13:00:45 +0100
-             From: Gisle Aas 
-     Branch: perl
-           ! regcomp.c regcomp.h
-____________________________________________________________________________
-[   779] By: mbeattie                              on 1998/03/05  19:01:25
-        Log: Subject: [PATCH 5.004_61] Miscellaneous minor fixes
-             Date: Mon, 02 Mar 1998 01:48:27 -0500 (EST)
-             From: bailey@newman.upenn.edu (Charles Bailey)
-     Branch: perl
-	   ! bytecode.h embedvar.h ext/B/Makefile.PL ext/B/byteperl.c
-	   ! ext/Thread/Makefile.PL lib/File/Path.pm patchlevel.h perldir.h
-           ! sv.h
-____________________________________________________________________________
-[   778] By: mbeattie                              on 1998/03/05  18:53:13
-        Log: Subject: [PATCH 5.004_61] USHRT range limit macros
-             Date: Mon, 02 Mar 1998 01:41:41 -0500 (EST)
-             From: bailey@newman.upenn.edu (Charles Bailey)
-     Branch: perl
-           ! perl.h
-____________________________________________________________________________
-[   777] By: mbeattie                              on 1998/03/05  18:50:25
-        Log: Subject: [PATCH 5.004_61]  File::Basename taint fix (revised)
-             Date: Mon, 02 Mar 1998 01:39:47 -0500 (EST)
-             From: bailey@newman.upenn.edu (Charles Bailey)
-     Branch: perl
-           ! lib/File/Basename.pm
-____________________________________________________________________________
-[   776] By: mbeattie                              on 1998/03/05  18:49:15
-        Log: Subject: [PATCH] Take out version number in perlguts (perl5.004_61)
-             Date: 01 Mar 1998 15:16:03 +0100
-             From: Gisle Aas 
-     Branch: perl
-           ! pod/perlguts.pod
-____________________________________________________________________________
-[   775] By: mbeattie                              on 1998/03/05  18:48:05
-        Log: Subject: Re: [PATCH] 5.004_61: Makefile.SH (Re: 5.004_61: annoyingly missing patch)
-             Date: Sun, 1 Mar 1998 12:14:44 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! Makefile.SH perl_exp.SH
-____________________________________________________________________________
-[   774] By: mbeattie                              on 1998/03/05  18:46:32
-        Log: Subject: Almost OK: 5.004_61 (threads, perlio)
-             Date: Sun, 1 Mar 1998 02:02:47 -0500
-             From: Spider Boardman 
-     Branch: perl
-           ! bytecode.h bytecode.pl byterun.c byterun.h perlsdio.h
-____________________________________________________________________________
-[   773] By: mbeattie                              on 1998/03/05  18:43:57
-        Log: Subject: [PATCH 5.004_61] print sort {-1} 1..10; hangs
-             Date: Sat, 28 Feb 1998 15:51:14 -0500 (EST)
-             From: Hans Mulder 
-     Branch: perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   772] By: mbeattie                              on 1998/03/05  18:39:25
-        Log: Subject: [PATCH] 5.004_61: Makefile.SH: 'ok' target needs perlbug...
-             Date: Sat, 28 Feb 1998 17:06:41 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! Makefile.SH
-____________________________________________________________________________
-[   771] By: mbeattie                              on 1998/03/05  18:38:32
-        Log: Subject: [PATCH] 5.004_61: hints/netbsd.sh
-             Date: Sat, 28 Feb 1998 16:35:32 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! hints/netbsd.sh
-____________________________________________________________________________
-[   770] By: mbeattie                              on 1998/03/05  18:36:50
-        Log: Add byterun.c to cflags.SH (Dominic Dunlop )
-     Branch: perl
-           ! cflags.SH
-____________________________________________________________________________
-[   769] By: mbeattie                              on 1998/03/05  18:34:35
-        Log: Change getc/fread to PerlIO_getc/fread in bytecode.h:
-             Subject: [PATCH 5.004_61] bunch of small patches
-             Date: Fri, 27 Feb 1998 20:03:29 -0500 (EST)
-             From: Andrew Cohen 
-     Branch: perl
-           ! bytecode.h
-____________________________________________________________________________
-[   768] By: mbeattie                              on 1998/03/05  18:13:06
-        Log: Integrate win32 branch into mainline.
-     Branch: perl
-          !> (integrate 53 files)
-____________________________________________________________________________
-[   767] By: TimBunce                              on 1998/03/05  11:48:09
-        Log: Update to change 744.
-     Branch: maint-5.004/perl
-           ! lib/ExtUtils/Install.pm
-____________________________________________________________________________
-[   765] By: TimBunce                              on 1998/03/05  11:24:24
-        Log: Update embed.h after make regen_headers.
-     Branch: maint-5.004/perl
-           ! embed.h
-____________________________________________________________________________
-[   764] By: TimBunce                              on 1998/03/05  11:05:13
-        Log: APPLLIB_EXP now has arch and version dirs added to @INC
-     Branch: maint-5.004/perl
-           ! perl.c
-____________________________________________________________________________
-[   763] By: TimBunce                              on 1998/03/05  11:01:38
-        Log: Added hints/openbsd.sh and t/op/pos.t to MANIFEST
-             Added MAINT_TRIAL_1 local patch label to patchlevel.h
-             Removed win32/win32io.c and win32/win32io.h from repository
-     Branch: maint-5.004/perl
-           - win32/win32io.c win32/win32io.h
-           ! MANIFEST patchlevel.h
-____________________________________________________________________________
-[   762] By: TimBunce                              on 1998/03/05  10:05:34
-        Log: Title:  "5.004_04 +MAINT_TRIAL_1 broken when sizeof(int) != sizeof(void)"
-             From:  Spider Boardman 
-             Files:  scope.c
-     Branch: maint-5.004/perl
-           ! scope.c
-____________________________________________________________________________
-[   761] By: TimBunce                              on 1998/03/05  10:03:10
-        Log: Title:  "properly refcount localization, fix C"
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199802191207.MAA10742@toad.ig.co.uk>
-             Files:  av.c hv.c scope.c t/op/local.t
-     Branch: maint-5.004/perl
-           ! av.c hv.c scope.c t/op/local.t
-____________________________________________________________________________
-[   760] By: gsar                                  on 1998/03/04  20:58:21
-        Log: added AS patch#10
-             Message-Id: <01BD4691.963D1670.dougl@ActiveState.com>
-             Date:    Tue, 03 Mar 1998 10:46:13 PST
-             From:    Douglas Lankshear 
-             Subject: [PATCH]
-             
-             Here's a patch to win32/dl_win32.xs that is a fix for the lookup of statically 
-             linked modules.
-             
-             -- Doug
-     Branch: asperl
-           ! win32/dl_win32.xs
-____________________________________________________________________________
-[   759] By: TimBunce                              on 1998/03/04  18:46:41
-        Log: Update patchls utility
-     Branch: maint-5.004/perl
-           ! Porting/patchls
-____________________________________________________________________________
-[   758] By: TimBunce                              on 1998/03/04  17:07:06
-        Log: perldoc -f now uses pager if text is too long for screen
-     Branch: maint-5.004/perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   757] By: TimBunce                              on 1998/03/04  16:57:04
-        Log: Added OpenBSD hint file from 
-             Document 'warn with no args' behaviour, from 
-     Branch: maint-5.004/perl
-           + hints/openbsd.sh
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[   756] By: TimBunce                              on 1998/03/04  16:48:40
-        Log: Fix for new gnulibc stdio.h when using sfio+perlio
-     Branch: maint-5.004/perl
-           ! perlsdio.h
-____________________________________________________________________________
-[   755] By: TimBunce                              on 1998/03/04  16:47:08
-        Log: Fixed typo in vms/ext/Stdio/Stdio.pm AUTOLOAD
-             Added details of split in scalar context to perlfunc.pod
-     Branch: maint-5.004/perl
-           ! pod/perlfunc.pod vms/ext/Stdio/Stdio.pm
-____________________________________________________________________________
-[   754] By: TimBunce                              on 1998/03/04  16:35:58
-        Log: Updated perl -v info to include reference to docs and home page.
-     Branch: maint-5.004/perl
-           ! perl.c
-____________________________________________________________________________
-[   753] By: TimBunce                              on 1998/03/04  16:31:29
-        Log: Updated hints/bsdos.sh for BSD/OS 3.1
-             Fixed typo in pod/perlsyn.pod
-             Added workaround for old gmake in ext/SDBM_File/sdbm/Makefile.PL
-             Fixed typo in ext/GDBM_File/GDBM_File.pm
-     Branch: maint-5.004/perl
-	   ! ext/GDBM_File/GDBM_File.pm ext/SDBM_File/sdbm/Makefile.PL
-           ! hints/bsdos.sh pod/perlsyn.pod
-____________________________________________________________________________
-[   752] By: TimBunce                              on 1998/03/04  15:49:19
-        Log: Changed bug address in README to perlbug@perl.com
-             Changed Copyright in perl.c to 1998
-             Added op/pos.t test from Robin Houston 
-     Branch: maint-5.004/perl
-           + t/op/pos.t
-           ! README perl.c
-____________________________________________________________________________
-[   751] By: TimBunce                              on 1998/03/04  14:47:15
-        Log: Make t/comp/require.t and t/lib/ph.t executable in repository
-     Branch: maint-5.004/perl
-           ! t/comp/require.t t/lib/ph.t
-____________________________________________________________________________
-[   750] By: TimBunce                              on 1998/03/04  13:29:58
-        Log: Added dTHR definition to ease backwards compatibility for XS
-             source code from 5.005.
-     Branch: maint-5.004/perl
-           ! perl.h
-____________________________________________________________________________
-[   749] By: TimBunce                              on 1998/03/04  12:19:19
-        Log: Title:  "rename local 'op' variables to 'o'", #F114
-             From:  Gurusamy Sarathy
-             Files:  op.h opcode.h proto.h dump.c op.c opcode.pl pp_ctl.c run.c scope.c
-             toke.c
-     Branch: maint-5.004/perl
-	   ! dump.c op.c op.h opcode.h opcode.pl pp_ctl.c proto.h run.c
-           ! scope.c toke.c
-____________________________________________________________________________
-[   748] By: TimBunce                              on 1998/03/04  12:12:27
-        Log: Title:  "consolidated win32 patch", #F112
-             From:  Gurusamy Sarathy
-             Files:  MANIFEST pod/perlfaq2.pod pod/perlrun.pod win32/include/sys/socket.h
-             EXTERN.h INTERN.h dosish.h lib/ExtUtils/Command.pm
-             lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
-             lib/ExtUtils/Mksymlists.pm lib/File/DosGlob.pm t/TEST
-             t/harness win32/win32.h win32/win32iop.h README.win32
-             doio.c installhtml installperl pp_sys.c win32/Makefile
-             win32/config.bc win32/config.vc win32/config_H.bc
-             win32/config_H.vc win32/config_h.PL win32/config_sh.PL
-             win32/dl_win32.xs win32/makedef.pl win32/makefile.mk
-             win32/perllib.c win32/runperl.c win32/win32.c
-             win32/win32sck.c win32/bin/perlglob.pl x2p/a2p.h x2p/a2p.c
-             x2p/a2py.c
-     Branch: maint-5.004/perl
-           + win32/bin/perlglob.pl
-	   ! EXTERN.h INTERN.h MANIFEST README.win32 doio.c dosish.h
-	   ! installhtml installperl lib/ExtUtils/Command.pm
-	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
-	   ! lib/ExtUtils/Mksymlists.pm lib/File/DosGlob.pm
-	   ! pod/perlfaq2.pod pod/perlrun.pod pp_sys.c t/TEST t/harness
-	   ! win32/Makefile win32/config.bc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.vc win32/config_h.PL
-	   ! win32/config_sh.PL win32/dl_win32.xs
-	   ! win32/include/sys/socket.h win32/makedef.pl win32/makefile.mk
-	   ! win32/perllib.c win32/runperl.c win32/win32.c win32/win32.h
-	   ! win32/win32iop.h win32/win32sck.c x2p/a2p.c x2p/a2p.h
-           ! x2p/a2py.c
-____________________________________________________________________________
-[   747] By: TimBunce                              on 1998/03/04  11:59:57
-        Log: Title:  "initialize @INC in ph.t, and fix up MANIFEST", #F111
-             From:  Gurusamy Sarathy
-             Files:  MANIFEST t/lib/ph.t
-     Branch: maint-5.004/perl
-           ! MANIFEST t/lib/ph.t
-____________________________________________________________________________
-[   746] By: TimBunce                              on 1998/03/04  11:47:43
-        Log: Title:  "properly save STDOUT during system() in debugger", #F110
-             From:  Jason Smith 
-             Files:  lib/perl5db.pl
-     Branch: maint-5.004/perl
-           ! lib/perl5db.pl
-____________________________________________________________________________
-[   745] By: TimBunce                              on 1998/03/04  11:40:19
-        Log: Title:  "generate DynaLoader.pm at build time", #F109
-             From:  Achim Bohnet 
-             Msg-ID:  <9802111938.AA26224@o09.xray.mpe.mpg.de>
-             Files:  MANIFEST ext/DynaLoader/DynaLoader.pm.PL ext/DynaLoader/Makefile.PL
-     Branch: maint-5.004/perl
-           + ext/DynaLoader/DynaLoader.pm.PL
-           ! MANIFEST ext/DynaLoader/Makefile.PL
-____________________________________________________________________________
-[   744] By: TimBunce                              on 1998/03/04  11:34:09
-        Log: Title:  "Install extensions with bootstrap in $archlib", #F108
-             From:  koenig@anna.mind.de (Andreas J. Koenig), koenig@kulturbox.de (Andreas
-             J. Koenig)
-             Msg-ID:  
-             Files:  lib/ExtUtils/Install.pm
-     Branch: maint-5.004/perl
-           ! lib/ExtUtils/Install.pm
-____________________________________________________________________________
-[   743] By: TimBunce                              on 1998/03/04  10:45:05
-        Log: Title:  "Pod::Html trips over "C<0>"", #F107
-             From:  Chip Salzenberg
-             Files:  lib/Pod/Html.pm
-     Branch: maint-5.004/perl
-           ! lib/Pod/Html.pm
-____________________________________________________________________________
-[   742] By: TimBunce                              on 1998/03/04  10:12:54
-        Log: Title:  "5.004_58 | _04: pod2*,perlpod: L", #F106
-             From:  Achim Bohnet 
-             Msg-ID:  <9802111629.AA00595@o09.xray.mpe.mpg.de>
-             Files:  pod/perlpod.pod lib/Pod/Html.pm lib/Pod/Text.pm pod/pod2man.PL
-     Branch: maint-5.004/perl
-	   ! lib/Pod/Html.pm lib/Pod/Text.pm pod/perlpod.pod pod/pod2man.PL
-____________________________________________________________________________
-[   741] By: TimBunce                              on 1998/03/04  10:08:31
-        Log: Title:  "New patch for $^E==GetLastError() under Win32", #F105
-             From:  Gurusamy Sarathy , Tye McQueen
-             , ilya@math.ohio-state.edu (Ilya
-             Zakharevich)
-             Msg-ID:  <199801040630.AA29298@metronet.com>,
-             <199801041826.NAA11568@aatma.engin.umich.edu>,
-             <1998Jan4.130412.2719461@cor.newman>
-             Files:  pod/perlfunc.pod pod/perlvar.pod doio.c lib/dumpvar.pl lib/perl5db.pl
-             win32/win32.h mg.c util.c win32/makedef.pl win32/win32.c
-     Branch: maint-5.004/perl
-	   ! doio.c lib/dumpvar.pl lib/perl5db.pl mg.c pod/perlfunc.pod
-	   ! pod/perlvar.pod util.c win32/makedef.pl win32/win32.c
-           ! win32/win32.h
-____________________________________________________________________________
-[   740] By: TimBunce                              on 1998/03/04  09:55:57
-        Log: Title:  "5.004_56: Patch to Tie::Hash and docs", #F104
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199801120134.UAA05437@monk.mps.ohio-state.edu>
-             Files:  pod/perlfunc.pod lib/Tie/Hash.pm
-     Branch: maint-5.004/perl
-           ! lib/Tie/Hash.pm pod/perlfunc.pod
-____________________________________________________________________________
-[   739] By: TimBunce                              on 1998/03/04  09:26:01
-        Log: Title:  "more doc for perldoc", #F103
-             From:  Gurusamy Sarathy
-             Files:  utils/perldoc.PL
-     Branch: maint-5.004/perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   738] By: TimBunce                              on 1998/03/04  09:23:16
-        Log: Title:  "Make perldoc look for an index file ", #F102
-             From:  Gisle Aas 
-             Msg-ID:  <199801221220.NAA22902@furu.g.aas.no>
-             Files:  utils/perldoc.PL
-     Branch: maint-5.004/perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   737] By: TimBunce                              on 1998/03/04  09:21:15
-        Log: Title:  "perldoc -F filename", #F101
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199712120037.TAA00176@math.mps.ohio-state.edu>
-             Files:  utils/perldoc.PL
-     Branch: maint-5.004/perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   736] By: TimBunce                              on 1998/03/04  09:16:20
-        Log: Title:  "sv_grow can fail for HAS_64K_LIMIT systems", #F100
-             From:  Gisle Aas 
-             Msg-ID:  
-             Files:  sv.c
-     Branch: maint-5.004/perl
-           ! sv.c
-____________________________________________________________________________
-[   735] By: TimBunce                              on 1998/03/04  09:08:51
-        Log: Title:  "Benchmark.pm: timethese corrupts $_", #F099
-             From:  abigail@fnx.com
-             Msg-ID:  <19980201114609.7779.qmail@betelgeuse.wayne.fnx.com>
-             Files:  lib/Benchmark.pm
-     Branch: maint-5.004/perl
-           ! lib/Benchmark.pm
-____________________________________________________________________________
-[   734] By: TimBunce                              on 1998/03/04  08:59:58
-        Log: Title:  "STRANGE_MALLOC should test failed alloc", #F098
-             From:  Gisle Aas 
-             Msg-ID:  <199802021406.PAA03285@furu.g.aas.no>
-             Files:  hv.c
-     Branch: maint-5.004/perl
-           ! hv.c
-____________________________________________________________________________
-[   733] By: TimBunce                              on 1998/03/04  08:35:19
-        Log: Title:  "support caseless %ENV", #F097
-             From:  Gurusamy Sarathy
-             Files:  hv.c t/op/magic.t win32/win32.h
-     Branch: maint-5.004/perl
-           ! hv.c t/op/magic.t win32/win32.h
-____________________________________________________________________________
-[   732] By: TimBunce                              on 1998/03/04  08:33:58
-        Log: Title:  "newer cperl-mode.el (from 5.004_60)", #F096
-             From:  Ilya Zakharevich
-             Files:  emacs/cperl-mode.el
-     Branch: maint-5.004/perl
-           ! emacs/cperl-mode.el
-____________________________________________________________________________
-[   731] By: TimBunce                              on 1998/03/04  08:26:23
-        Log: Title:  "Handle set magic on xsub OUTPUT args, add API functions that handle
-             magic", #F095
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199801190409.XAA26710@aatma.engin.umich.edu>
-             Files:  pod/perlguts.pod pod/perlxs.pod embed.h proto.h sv.h global.sym
-             lib/ExtUtils/xsubpp sv.c
-     Branch: maint-5.004/perl
-	   ! embed.h global.sym lib/ExtUtils/xsubpp pod/perlguts.pod
-           ! pod/perlxs.pod proto.h sv.c sv.h
-____________________________________________________________________________
-[   730] By: TimBunce                              on 1998/03/04  08:20:52
-        Log: Title:  "Fix flawed cleanup when signal handlers are not defined", #F094
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199710290106.UAA11485@aatma.engin.umich.edu>
-             Files:  mg.c
-     Branch: maint-5.004/perl
-           ! mg.c
-____________________________________________________________________________
-[   729] By: TimBunce                              on 1998/03/04  08:18:02
-        Log: Title:  "Tests for C", #F093
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199711021247.MAA01743@crypt.compulink.co.uk>
-             Files:  t/op/sort.t
-     Branch: maint-5.004/perl
-           ! t/op/sort.t
-____________________________________________________________________________
-[   728] By: TimBunce                              on 1998/03/04  08:17:07
-        Log: Title:  "Make search.pl work on win32", #F092
-             From:  Gurusamy Sarathy
-             Files:  win32/bin/search.pl
-     Branch: maint-5.004/perl
-           ! win32/bin/search.pl
-____________________________________________________________________________
-[   727] By: gsar                                  on 1998/03/04  04:13:23
-        Log: missing s/op/o/ from one of the mainpatches
-     Branch: win32/perl
-           ! op.c
-____________________________________________________________________________
-[   726] By: gsar                                  on 1998/03/04  02:12:13
-        Log: maintpatches #102 and #103 to perldoc.PL
-     Branch: win32/perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   725] By: gsar                                  on 1998/03/04  02:00:15
-        Log: renumber some tests to match maint branch
-     Branch: win32/perl
-           ! t/op/local.t
-____________________________________________________________________________
-[   724] By: gsar                                  on 1998/03/04  01:25:50
-        Log: maintpatch
-             #70:  "Fix random whitespace errors in docs"
-             From:  Roderick Schertler 
-             Msg-ID:  <12726.877706444@eeyore.ibcinc.com>
-             Date:  Fri, 24 Oct 1997 11:20:44 -0400
-             Files:  pod/checkpods.PL pod/perlfunc.pod
-     Branch: win32/perl
-           ! pod/checkpods.PL
-____________________________________________________________________________
-[   723] By: gsar                                  on 1998/03/04  01:04:37
-        Log: sync maintpatch
-             #76:  "Fix infinite loop on unlink() failure in File::Path::rmtree()
-             From:  Chip Salzenberg
-             Files:  lib/File/Path.pm
-     Branch: win32/perl
-           ! lib/File/Path.pm
-____________________________________________________________________________
-[   722] By: gsar                                  on 1998/03/04  00:46:46
-        Log: remove redundancy in File::Find
-     Branch: win32/perl
-           ! lib/File/Find.pm
-____________________________________________________________________________
-[   721] By: TimBunce                              on 1998/03/03  20:06:41
-        Log: Title:  "Fix spurious perldoc warnings on DOSISH platforms", #F091
-             From:  Molnar Laszlo 
-             Msg-ID:  <34475659.1AA69855@cdata.tvnet.hu>
-             Files:  utils/perldoc.PL
-     Branch: maint-5.004/perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   720] By: TimBunce                              on 1998/03/03  20:03:59
-        Log: Title:  "Make ExtUtils::MM_Unix::fixin() do something meaningful on win32",
-             #F090
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199801070016.TAA17766@aatma.engin.umich.edu>
-             Files:  lib/ExtUtils/MM_Unix.pm
-     Branch: maint-5.004/perl
-           ! lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
-[   719] By: TimBunce                              on 1998/03/03  20:02:06
-        Log: Title:  "Fix inconsistent case $ENV{Path} (vs $ENV{PATH})", #F089
-             From:  Gurusamy Sarathy
-             Files:  lib/FindBin.pm
-     Branch: maint-5.004/perl
-           ! lib/FindBin.pm
-____________________________________________________________________________
-[   718] By: TimBunce                              on 1998/03/03  20:00:26
-        Log: Title:  "Fix File::Find's longstanding confusion about win32 being like VMS",
-             #F088
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199802020459.XAA04964@aatma.engin.umich.edu>
-             Files:  lib/File/Find.pm
-     Branch: maint-5.004/perl
-           ! lib/File/Find.pm
-____________________________________________________________________________
-[   717] By: TimBunce                              on 1998/03/03  19:59:38
-        Log: Title:  "do_postponed breaks with multiple interpreters", #F087
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199710290316.WAA15888@aatma.engin.umich.edu>
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   716] By: TimBunce                              on 1998/03/03  19:57:17
-        Log: Title:  "Make warning on C optional, add to perl{diag,delta}.pod",
-             #F086
-             From:  Gurusamy Sarathy
-             Files:  pod/perldelta.pod pod/perldiag.pod toke.c
-     Branch: maint-5.004/perl
-           ! pod/perldelta.pod pod/perldiag.pod toke.c
-____________________________________________________________________________
-[   715] By: TimBunce                              on 1998/03/03  19:51:33
-        Log: Title:  "Pod::Html bug and fix: missing  in index", #F085
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199802192314.SAA23326@aatma.engin.umich.edu>
-             Files:  lib/Pod/Html.pm
-     Branch: maint-5.004/perl
-           ! lib/Pod/Html.pm
-____________________________________________________________________________
-[   714] By: TimBunce                              on 1998/03/03  19:50:28
-        Log: Title:  "New pod: perlhist", #F084
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199802191556.RAA09578@alpha.hut.fi>
-             Files:  MANIFEST pod/perl.pod pod/perlhist.pod pod/perltoc.pod pod/buildtoc
-     Branch: maint-5.004/perl
-           + pod/perlhist.pod
-           ! MANIFEST pod/buildtoc pod/perl.pod pod/perltoc.pod
-____________________________________________________________________________
-[   713] By: TimBunce                              on 1998/03/03  19:47:13
-        Log: Title:  "Fix restoration of locals on scope unwinding", #F083
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199802110515.AAA23700@aatma.engin.umich.edu>
-             Files:  pp_ctl.c t/op/local.t
-     Branch: maint-5.004/perl
-           ! pp_ctl.c t/op/local.t
-____________________________________________________________________________
-[   712] By: TimBunce                              on 1998/03/03  19:45:56
-        Log: Title:  "after an eval-ed bad require, requiring a string ref SEGVs", #F082
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199802102349.SAA16001@aatma.engin.umich.edu>
-             Files:  pp_ctl.c
-     Branch: maint-5.004/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   711] By: TimBunce                              on 1998/03/03  19:44:41
-        Log: Title:  "Fix seg fault on eval/require and syntax errors", #F081
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199802102321.SAA15346@aatma.engin.umich.edu>
-             Files:  MANIFEST scope.h op.c pp_ctl.c scope.c t/comp/require.t toke.c
-     Branch: maint-5.004/perl
-           + t/comp/require.t
-           ! MANIFEST op.c pp_ctl.c scope.c scope.h toke.c
-____________________________________________________________________________
-[   710] By: TimBunce                              on 1998/03/03  19:36:34
-        Log: Title:  "5.004_58: the locale.t problem in IRIX", #F080
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199802091747.TAA01735@alpha.hut.fi>
-             Files:  t/pragma/locale.t
-     Branch: maint-5.004/perl
-           ! t/pragma/locale.t
-____________________________________________________________________________
-[   709] By: TimBunce                              on 1998/03/03  19:32:30
-        Log: Title:  "sv_setnv will upgrade SVt_NV to SVt_PVNV", #F079
-             From:  Gisle Aas 
-             Msg-ID:  
-             Files:  sv.c
-     Branch: maint-5.004/perl
-           ! sv.c
-____________________________________________________________________________
-[   708] By: TimBunce                              on 1998/03/03  19:28:06
-        Log: Title:  "Eliminate double warnings under C", #F077
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  gv.c op.c toke.c
-     Branch: maint-5.004/perl
-           ! gv.c op.c toke.c
-____________________________________________________________________________
-[   707] By: TimBunce                              on 1998/03/03  19:13:17
-        Log: Title:  "Fix infinite loop on unlink() failure in File::Path::rmtree()",
-             #F076
-             From:  Murray Nesbitt , Tim Bunce 
-             Msg-ID:  <199802061100.LAA16423@toad.ig.co.uk>
-             Files:  lib/File/Path.pm
-     Branch: maint-5.004/perl
-           ! lib/File/Path.pm
-____________________________________________________________________________
-[   706] By: TimBunce                              on 1998/03/03  19:08:45
-        Log: Title:  "Update of h2ph", #F075
-             From:  kstar@www.chapin.edu (Kurt D. Starsinic)
-             Msg-ID:  <199802051354.FAA11452@www.chapin.edu>
-             Files:  t/lib/ph.t utils/h2ph.PL
-     Branch: maint-5.004/perl
-           + t/lib/ph.t
-           ! utils/h2ph.PL
-____________________________________________________________________________
-[   705] By: TimBunce                              on 1998/03/03  18:56:59
-        Log: Title:  "Fix AutoLoader for deep packages", #F074
-             From:  Zachary Miller 
-             Msg-ID:  <199710092348.SAA02108@zappy.er.usgs.gov>
-             Files:  lib/AutoLoader.pm
-     Branch: maint-5.004/perl
-           ! lib/AutoLoader.pm
-____________________________________________________________________________
-[   704] By: TimBunce                              on 1998/03/03  18:35:36
-        Log: Title:  "Fix order of warnings for misplaced subscripts", #F073
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199710131023.LAA16796@crypt.compulink.co.uk>
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   703] By: TimBunce                              on 1998/03/03  18:32:28
-        Log: Title:  "Make recursive lexical analysis more robust", #F072
-             From:  Ilya Zakharevich and Chip Salzenberg
-             Msg-ID:  <199710160102.VAA28817@monk.mps.ohio-state.edu>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   702] By: TimBunce                              on 1998/03/03  18:18:10
-        Log: Title:  "Fix random whitespace errors in docs", #F070
-             From:  Roderick Schertler 
-             Msg-ID:  <12726.877706444@eeyore.ibcinc.com>
-             Files:  pod/perlfunc.pod pod/checkpods.PL
-     Branch: maint-5.004/perl
-           ! pod/checkpods.PL pod/perlfunc.pod
-____________________________________________________________________________
-[   701] By: TimBunce                              on 1998/03/03  18:13:54
-        Log: Title:  "Fix line numbers after here documents in eval STRING", #F069
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199710241745.NAA08166@monk.mps.ohio-state.edu>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   700] By: TimBunce                              on 1998/03/03  18:11:20
-        Log: Title:  "Fix SEGV from combining caller and C", #F068
-             From:  James Duncan , Nicholas Clark
-             
-             Msg-ID:  <199710241248.NAA00163@flirble.org>,
-             
-             Files:  pp_ctl.c sv.c
-     Branch: maint-5.004/perl
-           ! pp_ctl.c sv.c
-____________________________________________________________________________
-[   699] By: TimBunce                              on 1998/03/03  18:06:59
-        Log: Title:  "Don't fold string comparison under C", #F067
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199711151506.RAA26287@alpha.hut.fi>
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   698] By: TimBunce                              on 1998/03/03  18:04:51
-        Log: Title:  "Fix SEGV on constant at end of sort block", #F066
-             From:  Administration 
-             Msg-ID:  <199711170838.JAA26073@thetis.fi.muni.cz>
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   697] By: TimBunce                              on 1998/03/03  18:02:54
-        Log: Title:  "Allow C to mean C", #F065
-             From:  Chip Salzenberg
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   696] By: TimBunce                              on 1998/03/03  17:58:12
-        Log: Title:  "Fix extension version mismatch message", #F064
-             From:  Chip Salzenberg
-             Files:  XSUB.h
-     Branch: maint-5.004/perl
-           ! XSUB.h
-____________________________________________________________________________
-[   695] By: TimBunce                              on 1998/03/03  17:53:04
-        Log: Title:  "Better handle and test struct tm of Linux and SunOS", #F063
-             From:  Andy Dougherty 
-             Msg-ID:  
-             Files:  MANIFEST ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
-             hints/linux.sh hints/sunos_4_1.sh t/lib/posix.t
-     Branch: maint-5.004/perl
-           + ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
-           ! MANIFEST hints/linux.sh hints/sunos_4_1.sh t/lib/posix.t
-____________________________________________________________________________
-[   694] By: TimBunce                              on 1998/03/03  17:40:47
-        Log: Title:  "Fix doc bug in getservbyname() examples", #F062
-             From:  Tom Christiansen
-             Files:  ext/Socket/Socket.pm
-     Branch: maint-5.004/perl
-           ! ext/Socket/Socket.pm
-____________________________________________________________________________
-[   693] By: TimBunce                              on 1998/03/03  17:32:57
-        Log: Title:  "Kill warning about parameter type", #F061
-             From:  Chip Salzenberg
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   692] By: TimBunce                              on 1998/03/03  17:11:07
-        Log: Title:  "Socket occasional SEGV", #F060
-             From:  Trevor Blackwell 
-             Msg-ID:  <199710281804.NAA09632@wagg.viaweb.com>
-             Files:  ext/Socket/Socket.xs
-     Branch: maint-5.004/perl
-           ! ext/Socket/Socket.xs
-____________________________________________________________________________
-[   691] By: TimBunce                              on 1998/03/03  17:09:51
-        Log: Title:  "Avoid SEGV from local($@)", #F059
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199710290251.VAA14362@aatma.engin.umich.edu>
-             Files:  pp_ctl.c
-     Branch: maint-5.004/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   690] By: TimBunce                              on 1998/03/03  17:08:21
-        Log: Title:  "Don't use broken pad_reset() (was Re: Perl bug in 5.004_03 )", #F058
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199710300036.TAA01004@aatma.engin.umich.edu>
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   689] By: TimBunce                              on 1998/03/03  17:05:57
-        Log: Title:  "Use STMT_{START,END} in XSRETURN", #F057
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199710300245.VAA04244@aatma.engin.umich.edu>
-             Files:  XSUB.h
-     Branch: maint-5.004/perl
-           ! XSUB.h
-____________________________________________________________________________
-[   688] By: TimBunce                              on 1998/03/03  17:04:15
-        Log: Title:  "Re: Sort grammar bug", #F056
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199711011946.OAA18882@aatma.engin.umich.edu>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   687] By: TimBunce                              on 1998/03/03  17:01:32
-        Log: Title:  "Document indirect object cases for exec(), system()", #F055
-             From:  Dominic Dunlop 
-             Msg-ID:  
-             Files:  pod/perlfunc.pod
-     Branch: maint-5.004/perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[   686] By: TimBunce                              on 1998/03/03  16:56:44
-        Log: Title:  "Update docs on tr///", #F054
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
-             pod/perllocale.pod pod/perlmod.pod pod/perlop.pod
-             pod/perlstyle.pod toke.c
-     Branch: maint-5.004/perl
-	   ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
-	   ! pod/perllocale.pod pod/perlmod.pod pod/perlop.pod
-           ! pod/perlstyle.pod toke.c
-____________________________________________________________________________
-[   685] By: TimBunce                              on 1998/03/03  16:38:50
-        Log: Title:  "Re: perlop bitwise & | ^ documentation", #F053
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Files:  pod/perlop.pod
-     Branch: maint-5.004/perl
-           ! pod/perlop.pod
-____________________________________________________________________________
-[   684] By: TimBunce                              on 1998/03/03  16:37:00
-        Log: Title:  "Fix SEGV on C<*glob{'SCALAR','ARRAY'}>", #F052
-             From:  "Joseph N. Hall" 
-             Msg-ID:  <199711110552.WAA12613@gadget.cscaper.com>
-             Files:  perly.c perly.c.diff perly.y vms/perly_c.vms
-     Branch: maint-5.004/perl
-           ! perly.c perly.c.diff perly.y vms/perly_c.vms
-____________________________________________________________________________
-[   683] By: TimBunce                              on 1998/03/03  16:31:15
-        Log: Title:  "for perlguts.pod: document sv_derived_from, sv_vcatpfn and
-             sv_vsetpfn", #F051
-             From:  jan.dubois@ibm.net (Jan Dubois) and Chip Salzenberg
-             Msg-ID:  <346ae970.7444534@smtp1.ibm.net>
-             Files:  pod/perlguts.pod
-     Branch: maint-5.004/perl
-           ! pod/perlguts.pod
-____________________________________________________________________________
-[   682] By: TimBunce                              on 1998/03/03  16:28:30
-        Log: Title:  "5.004_04: locale startup failure (at last) documented", #F050
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199711172054.WAA08261@alpha.hut.fi>
-             Files:  INSTALL pod/perldiag.pod pod/perllocale.pod
-     Branch: maint-5.004/perl
-           ! INSTALL pod/perldiag.pod pod/perllocale.pod
-____________________________________________________________________________
-[   681] By: TimBunce                              on 1998/03/03  16:24:12
-        Log: Title:  "Cope with lack of args in Fcntl::AUTOLOAD", #F049
-             From:  Jerome Abela 
-             Msg-ID:  <19971120183248.23588@coredump.hsc.fr>
-             Files:  ext/Fcntl/Fcntl.pm
-     Branch: maint-5.004/perl
-           ! ext/Fcntl/Fcntl.pm
-____________________________________________________________________________
-[   680] By: TimBunce                              on 1998/03/03  16:23:20
-        Log: Title:  "Commenting toke.c", #F048
-             From:  gnat@frii.com
-             Msg-ID:  <199801082138.OAA14186@prometheus.frii.com>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   679] By: TimBunce                              on 1998/03/03  16:18:32
-        Log: Title:  "Re: 5.004_04 vec() fails with 32-bit values", #F047
-             From:  "M.J.T. Guy" 
-             Msg-ID:  
-             Files:  pod/perlguts.pod pp.c t/op/vec.t
-     Branch: maint-5.004/perl
-           ! pod/perlguts.pod pp.c t/op/vec.t
-____________________________________________________________________________
-[   678] By: TimBunce                              on 1998/03/03  16:15:44
-        Log: Title:  "A few perl5.004_03 bugs", #F046
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199801221211.MAA05315@crypt.compulink.co.uk>
-             Files:  mg.c t/op/magic.t
-     Branch: maint-5.004/perl
-           ! mg.c t/op/magic.t
-____________________________________________________________________________
-[   677] By: TimBunce                              on 1998/03/03  16:13:11
-        Log: Title:  "Faster, cleaner av_unshift() ", #F045
-             From:  Gisle Aas 
-             Msg-ID:  <199801221850.TAA23111@furu.g.aas.no>
-             Files:  av.c
-     Branch: maint-5.004/perl
-           ! av.c
-____________________________________________________________________________
-[   676] By: TimBunce                              on 1998/03/03  16:04:30
-        Log: Title:  "New hints/solaris2.sh", #F044
-             From:  Stephen Zander 
-             Msg-ID:  <87oh12y458.fsf@wsuse5.mckesson.com>
-             Files:  hints/solaris_2.sh
-     Branch: maint-5.004/perl
-           ! hints/solaris_2.sh
-____________________________________________________________________________
-[   675] By: TimBunce                              on 1998/03/03  15:33:07
-        Log: Title:  "Refresh Complex.pm and test", #F043
-             From:  Jarkko Hietaniemi 
-             Msg-ID:  <199802051608.SAA20262@alpha.hut.fi>
-             Files:  lib/Math/Complex.pm t/lib/complex.t
-     Branch: maint-5.004/perl
-           ! lib/Math/Complex.pm t/lib/complex.t
-____________________________________________________________________________
-[   674] By: TimBunce                              on 1998/03/03  15:29:16
-        Log: Title:  "Fix (\@@) proto", #F042
-             From:  "Joseph N. Hall" 
-             Msg-ID:  <199801240132.SAA25111@gadget.cscaper.com>
-             Files:  op.c t/comp/proto.t
-     Branch: maint-5.004/perl
-           ! op.c t/comp/proto.t
-____________________________________________________________________________
-[   673] By: TimBunce                              on 1998/03/03  15:26:31
-        Log: Title:  "Allow empty BLOCK in code", #F041
-             From:  Vladimir Alexiev 
-             Msg-ID:  <19980129002112Z13378-6931+226@scapa.cs.ualberta.ca>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   672] By: TimBunce                              on 1998/03/03  15:23:55
-        Log: Title:  "Fix name of $Foo::{'Bar::'}: '*Foo::Bar::'", #F040
-             From:  Chip Salzenberg
-             Files:  gv.c t/op/gv.t
-     Branch: maint-5.004/perl
-           ! gv.c t/op/gv.t
-____________________________________________________________________________
-[   671] By: TimBunce                              on 1998/03/03  10:02:32
-        Log: Title:  "Keep accurate reference count on globs' stashes", #F038
-             From:  Gisle Aas 
-             Msg-ID:  
-             Files:  gv.c sv.c
-     Branch: maint-5.004/perl
-           ! gv.c sv.c
-____________________________________________________________________________
-[   670] By: TimBunce                              on 1998/03/03  09:59:48
-        Log: Title:  "Avoid memory allocation in gv_fetchpv(), for speed", #F037
-             From:  Chip Salzenberg
-             Files:  gv.c
-     Branch: maint-5.004/perl
-           ! gv.c
-____________________________________________________________________________
-[   669] By: TimBunce                              on 1998/03/03  09:58:58
-        Log: Title:  "Make Configure less negative about PerlIO", #F036
-             From:  chip@atlantic.net
-             Msg-ID:  <199801312323.SAA15237@cyprus.atlantic.net>
-             Files:  Configure
-     Branch: maint-5.004/perl
-           ! Configure
-____________________________________________________________________________
-[   668] By: TimBunce                              on 1998/03/03  09:55:51
-        Log: Title:  "Fix (mostly) pseudo-same-REs due to embedded NULs", #F035
-             From:  Martin Plechsmid 
-             Msg-ID:  <199802021217.NAA05230@albert.karlin.mff.cuni.cz>
-             Files:  pp_ctl.c
-     Branch: maint-5.004/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   667] By: TimBunce                              on 1998/03/03  09:52:59
-        Log: Title:  "Make Getopt::Long avoid $&, $`, $'", #F034
-             From:  Irving Reid 
-             Msg-ID:  <98Feb3.005102est.11655@janus.tor.securecomputing.com>
-             Files:  lib/Getopt/Long.pm
-     Branch: maint-5.004/perl
-           ! lib/Getopt/Long.pm
-____________________________________________________________________________
-[   666] By: TimBunce                              on 1998/03/03  09:51:27
-        Log: Title:  "adding the newSVpvn API function", #F033
-             From:  Matthias Ulrich Neeracher 
-             Msg-ID:  <199801310532.GAA23798@solar.ethz.ch>
-             Files:  pod/perlguts.pod pod/perltoc.pod proto.h global.sym sv.c
-     Branch: maint-5.004/perl
-           ! global.sym pod/perlguts.pod pod/perltoc.pod proto.h sv.c
-____________________________________________________________________________
-[   665] By: TimBunce                              on 1998/03/03  09:43:30
-        Log: Title:  "Support C as function-blind bearword", #F032
-             From:  Chip Salzenberg
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   664] By: TimBunce                              on 1998/03/03  09:41:40
-        Log: Title:  "Re-optimize character classes", #F031
-             From:  Chip Salzenberg
-             Files:  regcomp.h regcomp.c regexec.c
-     Branch: maint-5.004/perl
-           ! regcomp.c regcomp.h regexec.c
-____________________________________________________________________________
-[   663] By: TimBunce                              on 1998/03/03  09:39:55
-        Log: Title:  "Fix C which needed ENTER/LEAVE", #F030
-             From:  dfh@dwroll.lucent.com (D461-David_F_Haertig(Dave)83040)
-             Msg-ID:  
-             Files:  op.c t/op/local.t
-     Branch: maint-5.004/perl
-           ! op.c t/op/local.t
-____________________________________________________________________________
-[   662] By: TimBunce                              on 1998/03/03  09:37:51
-        Log: Title:  "Dramatically improve performance of // with parens or $&", #F029
-             From:  Chip Salzenberg
-             Files:  cop.h perl.h proto.h regexp.h gv.c interp.sym perl.c pp.c pp_ctl.c
-             pp_hot.c regexec.c scope.c
-     Branch: maint-5.004/perl
-	   ! cop.h gv.c interp.sym perl.c perl.h pp.c pp_ctl.c pp_hot.c
-           ! proto.h regexec.c regexp.h scope.c
-____________________________________________________________________________
-[   661] By: TimBunce                              on 1998/03/03  09:27:04
-        Log: Title:  "Don't warn on $x{shift}, ne => 1, or -f => 1", #F028
-             From:  Chip Salzenberg
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   660] By: TimBunce                              on 1998/03/03  09:24:41
-        Log: Title:  "Protect against weirdness with unreal @_ in C", #F027
-             From:  Chip Salzenberg
-             Files:  scope.c
-     Branch: maint-5.004/perl
-           ! scope.c
-____________________________________________________________________________
-[   659] By: TimBunce                              on 1998/03/03  09:24:00
-        Log: Title:  "Fix C", #F026
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199711021331.NAA01826@crypt.compulink.co.uk>
-             Files:  sv.c t/op/sprintf.t
-     Branch: maint-5.004/perl
-           ! sv.c t/op/sprintf.t
-____________________________________________________________________________
-[   658] By: TimBunce                              on 1998/03/03  09:22:13
-        Log: Title:  "Tiny core patch for source filters", #F025
-             From:  pmarquess@bfsec.bt.co.uk (Paul Marquess)
-             Msg-ID:  <9711202312.AA02937@claudius.bfsec.bt.co.uk>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   657] By: TimBunce                              on 1998/03/03  09:20:00
-        Log: Title:  "Here-doc in s///e (was: Bug)", #F024
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199711221445.OAA14153@crypt.compulink.co.uk>
-             Files:  t/base/lex.t toke.c
-     Branch: maint-5.004/perl
-           ! t/base/lex.t toke.c
-____________________________________________________________________________
-[   656] By: TimBunce                              on 1998/03/03  09:17:56
-        Log: Title:  "Fix duplicate warnings on C<-e undef>", #F023
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199711221252.MAA14000@crypt.compulink.co.uk>
-             Files:  doio.c t/pragma/warn-1global
-     Branch: maint-5.004/perl
-           ! doio.c t/pragma/warn-1global
-____________________________________________________________________________
-[   655] By: TimBunce                              on 1998/03/03  09:16:56
-        Log: Title:  "Fix '*' prototype", #F022
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199711212225.RAA00755@monk.mps.ohio-state.edu>
-             Files:  toke.c
-     Branch: maint-5.004/perl
-           ! toke.c
-____________________________________________________________________________
-[   654] By: TimBunce                              on 1998/03/03  09:15:04
-        Log: Title:  "File::Find bugs (and patches)", "File::Find bugs & patches", #F021
-             From:  "Conrad E. Kimball" 
-             Msg-ID:  <199711260703.XAA21257@mailgate2.boeing.com>
-             Files:  lib/File/Find.pm
-     Branch: maint-5.004/perl
-           ! lib/File/Find.pm
-____________________________________________________________________________
-[   653] By: TimBunce                              on 1998/03/03  09:11:55
-        Log: Title:  "Fix typo: FORM{,AT}LINE", #F020
-             From:  Chip Salzenberg
-             Files:  sv.c
-     Branch: maint-5.004/perl
-           ! sv.c
-____________________________________________________________________________
-[   652] By: TimBunce                              on 1998/03/03  09:07:50
-        Log: Title:  "Fix use of unref mem when blessed object goes out of scope", #F019
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199711282326.SAA15090@aatma.engin.umich.edu>
-             Files:  scope.c
-     Branch: maint-5.004/perl
-           ! scope.c
-____________________________________________________________________________
-[   651] By: TimBunce                              on 1998/03/03  09:07:10
-        Log: Title:  "Fix C", #F018
-             From:  Stephane Payrard 
-             Msg-ID:  <199712040054.BAA04612@www.zweig.com>
-             Files:  op.c t/op/my.t
-     Branch: maint-5.004/perl
-           ! op.c t/op/my.t
-____________________________________________________________________________
-[   650] By: TimBunce                              on 1998/03/03  09:04:04
-        Log: Title:  "enhanced "use strict" warning", #F017
-             From:  Tkil 
-             Msg-ID:  <199712040938.CAA07628@reptile.scrye.com>
-             Files:  gv.c t/pragma/strict-subs t/pragma/strict-vars
-     Branch: maint-5.004/perl
-           ! gv.c t/pragma/strict-subs t/pragma/strict-vars
-____________________________________________________________________________
-[   649] By: TimBunce                              on 1998/03/03  09:02:55
-        Log: Title:  "eval of sub gives spurious "uninitialised" warning", #F016
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199712061025.FAA14396@aatma.engin.umich.edu>
-             Files:  pod/perldelta.pod pod/perlfunc.pod op.c t/op/eval.t
-     Branch: maint-5.004/perl
-           ! op.c pod/perldelta.pod pod/perlfunc.pod t/op/eval.t
-____________________________________________________________________________
-[   648] By: TimBunce                              on 1998/03/03  08:58:00
-        Log: Title:  "[PERL] Assigning result of pop scrambles unrelated reference", #F015
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199712061100.GAA14864@aatma.engin.umich.edu>
-             Files:  sv.c
-     Branch: maint-5.004/perl
-           ! sv.c
-____________________________________________________________________________
-[   647] By: TimBunce                              on 1998/03/03  08:53:35
-        Log: Title:  "[PERL] Filedescriptor leak in 5.004_55 (and earlier)", #F014
-             From:  Ilya Zakharevich 
-             Msg-ID:  <199712151922.OAA06410@monk.mps.ohio-state.edu>
-             Files:  os2/os2.c util.c
-     Branch: maint-5.004/perl
-           ! os2/os2.c util.c
-____________________________________________________________________________
-[   646] By: TimBunce                              on 1998/03/03  08:51:04
-        Log: Title:  "Fix fdopen() on STD{IN,OUT,ERR}", #F013
-             From:  Roderick Schertler 
-             Msg-ID:  
-             Files:  doio.c t/op/misc.t
-     Branch: maint-5.004/perl
-           ! doio.c t/op/misc.t
-____________________________________________________________________________
-[   645] By: TimBunce                              on 1998/03/03  08:49:34
-        Log: Title:  "Fix local $a[0] and local $h{a}", #F012
-             From:  Stephen McCamant 
-             Msg-ID:  
-             Files:  embed.h scope.h global.sym pp.c pp_hot.c scope.c t/op/local.t
-     Branch: maint-5.004/perl
-           ! embed.h global.sym pp.c pp_hot.c scope.c scope.h t/op/local.t
-____________________________________________________________________________
-[   644] By: TimBunce                              on 1998/03/03  08:43:06
-        Log: Title:  "Eliminate redundant mg_get() in SvTRUE()", #F011
-             From:  Spider Boardman 
-             Msg-ID:  <199712251839.NAA14800@Orb.Nashua.NH.US>
-             Files:  sv.c
-     Branch: maint-5.004/perl
-           ! sv.c
-____________________________________________________________________________
-[   643] By: TimBunce                              on 1998/03/03  08:41:07
-        Log: Title:  "Don't force scalar context on C or C", #F010
-             From:  Chip Salzenberg
-             Files:  op.c t/op/my.t
-     Branch: maint-5.004/perl
-           ! op.c t/op/my.t
-____________________________________________________________________________
-[   642] By: TimBunce                              on 1998/03/03  08:39:11
-        Log: Title:  "Fix assignment to $_[0] in DESTROY", #F009
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199801010030.TAA14274@aatma.engin.umich.edu>
-             Files:  pod/perlobj.pod sv.c t/op/ref.t
-     Branch: maint-5.004/perl
-           ! pod/perlobj.pod sv.c t/op/ref.t
-____________________________________________________________________________
-[   641] By: gsar                                  on 1998/03/03  04:39:49
-        Log: merge problematic maintpatch to op.c
-             #77:  "Eliminate double warnings under C"
-             From:  Chip Salzenberg
-             Files:  gv.c op.c toke.c
-     Branch: win32/perl
-           ! gv.c op.c toke.c
-____________________________________________________________________________
-[   640] By: gsar                                  on 1998/03/03  04:30:22
-        Log: merge another conflicting maintpatch to op.c
-             #17:  "Enhanced "use strict" warning"
-             From:  Tkil 
-             Msg-ID:  <199712040938.CAA07628@reptile.scrye.com>
-             Date:  Thu, 4 Dec 1997 02:38:26 -0700
-             Files:  gv.c t/pragma/strict-subs t/pragma/strict-vars
-     Branch: win32/perl
-           ! gv.c t/pragma/strict-subs t/pragma/strict-vars
-____________________________________________________________________________
-[   639] By: gsar                                  on 1998/03/03  04:09:11
-        Log: maintpatch
-             #73:  "Fix order of warnings for misplaced subscripts"
-             From:  Hugo van der Sanden 
-             Msg-ID:  <199710131023.LAA16796@crypt.compulink.co.uk>
-             Date:  Mon, 13 Oct 1997 11:23:56 +0100
-             Files:  op.c
-     Branch: win32/perl
-           ! op.c
-____________________________________________________________________________
-[   638] By: gsar                                  on 1998/03/03  04:02:16
-        Log: manually apply another conflicting maintpatch
-             #64:  "Fix extension version mismatch message"
-             From:  Chip Salzenberg
-             Files:  XSUB.h
-     Branch: win32/perl
-           ! XSUB.h
-____________________________________________________________________________
-[   637] By: gsar                                  on 1998/03/03  03:57:08
-        Log: maintpatch
-             #62:  "Fix doc bug in getservbyname() examples"
-             From:  Tom Christiansen
-             Files:  ext/Socket/Socket.pm
-     Branch: win32/perl
-           ! ext/Socket/Socket.pm
-____________________________________________________________________________
-[   636] By: gsar                                  on 1998/03/03  03:55:13
-        Log: maintpatch
-             #60:  "Socket occasional SEGV"
-             From:  Trevor Blackwell 
-             Msg-ID:  <199710281804.NAA09632@wagg.viaweb.com>
-             Date:  Tue, 28 Oct 1997 13:04:43 -0500 (EST)
-             Files:  ext/Socket/Socket.xs
-     Branch: win32/perl
-           ! ext/Socket/Socket.xs
-____________________________________________________________________________
-[   635] By: gsar                                  on 1998/03/03  03:51:01
-        Log: maintpatches for docs
-             #53:  "Perlop bitwise & | ^ documentation"
-             From:  Tom Phoenix 
-             Msg-ID:  
-             Msg-ID:  
-             Message-Id: <199801221211.MAA05315@crypt.compulink.co.uk>
-             Date: Thu, 22 Jan 1998 12:11:49 +0000
-             Subject: Re: [PERL] A few perl5.004_03 bugs 
-     Branch: win32/perl
-           ! mg.c t/op/magic.t
-____________________________________________________________________________
-[   633] By: gsar                                  on 1998/03/03  03:36:40
-        Log: merge another toke.c patch and its dependent (very carefully)
-             #32:  "Support C as function-blind bearword"
-             From:  Chip Salzenberg
-             Files:  toke.c
-             --------
-             #86:  "Make warning on C optional, add to perl{diag,delta}.pod"
-             From:  Gurusamy Sarathy
-             Files:  toke.c pod/perldelta.pod pod/perldiag.pod
-     Branch: win32/perl
-           ! pod/perldelta.pod pod/perldiag.pod toke.c
-____________________________________________________________________________
-[   632] By: gsar                                  on 1998/03/03  03:12:16
-        Log: another toke.c maintpatch
-             #28:  "Don't warn on $x{shift}, ne => 1, or -f => 1"
-             From:  Chip Salzenberg
-             Files:  toke.c
-     Branch: win32/perl
-           ! toke.c
-____________________________________________________________________________
-[   631] By: gsar                                  on 1998/03/03  03:06:59
-        Log: still another maintpatch
-             From: Hugo van der Sanden 
-             Message-Id: <199711021331.NAA01826@crypt.compulink.co.uk>
-             Date: Sun, 02 Nov 1997 13:31:54 +0000
-             Subject: [PATCH] assorted sprintf bugs
-     Branch: win32/perl
-           ! sv.c t/op/sprintf.t
-____________________________________________________________________________
-[   630] By: gsar                                  on 1998/03/03  03:03:55
-        Log: yet another maintpatch
-             From: Hugo van der Sanden 
-             Message-Id: <199711221252.MAA14000@crypt.compulink.co.uk>
-             Date: Sat, 22 Nov 1997 12:52:16 +0000
-             Subject: Re: [PERL] Unexpected output 
-     Branch: win32/perl
-           ! doio.c t/pragma/warn-1global
-____________________________________________________________________________
-[   629] By: gsar                                  on 1998/03/03  02:57:33
-        Log: merge another maintpatch to toke.c
-             From: Hugo van der Sanden 
-             Date: Sat, 22 Nov 1997 14:45:23 GMT
-             Message-Id: <199711221445.OAA14153@crypt.compulink.co.uk>
-             Subject: Re: [PERL] Here-doc in s///e (was: Bug)
-     Branch: win32/perl
-           ! t/base/lex.t toke.c
-____________________________________________________________________________
-[   628] By: gsar                                  on 1998/03/03  02:50:20
-        Log: manually merge a maintpatch
-             Date: Thu, 8 Jan 1998 14:38:04 -0700 (MST)
-             Message-Id: <199801082138.OAA14186@prometheus.frii.com>
-             From: gnat@frii.com
-             Subject: [PERL] Commenting toke.c
-     Branch: win32/perl
-           ! toke.c
-____________________________________________________________________________
-[   627] By: TimBunce                              on 1998/03/02  22:34:47
-        Log: Title:  "Fix inefficient checks for TIEHANDLE", #F008
-             From:  Gurusamy Sarathy 
-             Msg-ID:  <199801080106.UAA05048@aatma.engin.umich.edu>
-             Files:  pp_hot.c pp_sys.c
-     Branch: maint-5.004/perl
-           ! pp_hot.c pp_sys.c
-____________________________________________________________________________
-[   626] By: TimBunce                              on 1998/03/02  22:31:13
-        Log: This is the change description for change 625
-             Title:  "Fix tr///s option", #F007
-             From:  Inaba Hiroto 
-             Msg-ID:  <19980110155333D.inaba@st.rim.or.jp>
-             Files:  doop.c
-     Branch: maint-5.004/perl
-           ! doop.c
-____________________________________________________________________________
-[   625] By: TimBunce                              on 1998/03/02  22:23:48
-        Log:      Branch: maint-5.004/perl
-           ! doop.c
-____________________________________________________________________________
-[   623] By: TimBunce                              on 1998/03/02  21:51:53
-        Log: Title:  "Fix lexical lookup in eval-sub-eval", #F006
-             From:  Chip Salzenberg
-             Files:  pp_ctl.c
-     Branch: maint-5.004/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   622] By: TimBunce                              on 1998/03/02  21:43:29
-        Log: Title:  "Don't upgrade target of assignment from LVALUE", #F005
-             From:  Chip Salzenberg
-             Files:  sv.c
-     Branch: maint-5.004/perl
-           ! sv.c
-____________________________________________________________________________
-[   621] By: TimBunce                              on 1998/03/02  21:29:59
-        Log: Title:  "Fix compile-time warning line in while ()", #F004
-             From:  Chip Salzenberg
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   620] By: TimBunce                              on 1998/03/02  21:25:27
-        Log: Title:  "STMT foreach LIST;", #F002
-             From:  Chip Salzenberg
-             Files:  pod/perlsyn.pod perly.c perly.c.diff perly.y t/cmd/mod.t toke.c
-             vms/perly_c.vms
-     Branch: maint-5.004/perl
-	   ! perly.c perly.c.diff perly.y pod/perlsyn.pod t/cmd/mod.t
-           ! toke.c vms/perly_c.vms
-____________________________________________________________________________
-[   619] By: TimBunce                              on 1998/03/02  21:12:58
-        Log: Title:  "Fix SIGSEGV on C<42 until forever>", #F001
-             From:  Chip Salzenberg
-             Files:  op.c
-     Branch: maint-5.004/perl
-           ! op.c
-____________________________________________________________________________
-[   618] By: gsar                                  on 1998/03/02  04:40:16
-        Log: make t/lib/nothread.t type xtext also
-     Branch: win32/perl
-           ! t/op/nothread.t
-____________________________________________________________________________
-[   617] By: gsar                                  on 1998/03/02  04:35:15
-        Log: make t/lib/thread.t type xtext
-     Branch: win32/perl
-           ! t/lib/thread.t
-____________________________________________________________________________
-[   616] By: gsar                                  on 1998/03/02  04:17:40
-        Log: fix misapplied hunks in change#614
-     Branch: win32/perl
-           ! scope.c scope.h
-____________________________________________________________________________
-[   615] By: gsar                                  on 1998/03/02  03:39:16
-        Log: another one down
-             From: "Conrad E. Kimball" 
-             Message-Id: <199711260703.XAA21257@mailgate2.boeing.com>
-             Date: Tue, 25 Nov 1997 23:03:48 -0800
-             Subject: [PERL] File::Find bugs & patches
-     Branch: win32/perl
-           ! lib/File/Find.pm
-____________________________________________________________________________
-[   614] By: gsar                                  on 1998/03/02  03:28:28
-        Log: this one with adjusted test numbers
-             Message-Id: 
-             Date: Sat, 20 Dec 1997 15:16:14 -0600 (CST)
-             From: Stephen McCamant 
-             Subject: [PERL] [PATCH] Fix local $a[0] and local $h{a}
-     Branch: win32/perl
-           ! embed.h global.sym pp.c pp_hot.c scope.c scope.h t/op/local.t
-____________________________________________________________________________
-[   613] By: gsar                                  on 1998/03/02  03:13:32
-        Log: still another
-             From: Inaba Hiroto 
-             Subject: [PERL] tr///s bug
-             Message-Id: <19980110155333D.inaba@st.rim.or.jp>
-             Date: Sat, 10 Jan 1998 15:53:33 +0900
-     Branch: win32/perl
-           ! doop.c t/op/subst.t
-____________________________________________________________________________
-[   612] By: gsar                                  on 1998/03/02  03:01:27
-        Log: yet another patch
-             From: Chip Salzenberg 
-             Message-Id: <199709161748.NAA08418@nielsenmedia.com>
-             Subject: Tiny but massively cool:  C
-             Date: Tue, 16 Sep 1997 13:47:28 -0400 (EDT)
-     Branch: win32/perl
-	   ! perly.c perly.c.diff perly.y pod/perlsyn.pod t/cmd/mod.t
-           ! toke.c vms/perly_c.vms
-____________________________________________________________________________
-[   611] By: gsar                                  on 1998/03/02  01:52:46
-        Log: yet another 'old' patch
-             From: Stephane Payrard 
-             Message-Id: <199712040054.BAA04612@www.zweig.com>
-             To: perl5-porters@perl.org
-             Subject: Re: [PERL] buglet : minor but gratuitous inconsistency
-             between `my' and `local' (Patch included)
-     Branch: win32/perl
-           ! op.c t/op/my.t
-____________________________________________________________________________
-[   610] By: gsar                                  on 1998/03/02  01:45:55
-        Log: another 'old' patch
-             From: Roderick Schertler 
-             Date: 19 Dec 1997 12:52:36 -0500
-             Message-Id: 
-             Subject: [PERL] [PATCH] Re: Problem with open >&=
-     Branch: win32/perl
-           ! doio.c t/op/misc.t
-____________________________________________________________________________
-[   609] By: gsar                                  on 1998/03/02  01:23:56
-        Log: apply missing pieces from:
-             From: Chip Salzenberg 
-             Message-Id: <199711272044.PAA12102@nielsenmedia.com>
-             Subject: [PATCH] Improved LVALUE patch
-             Date: Thu, 27 Nov 1997 15:44:02 -0500 (EST)
-     Branch: win32/perl
-           ! sv.c
-____________________________________________________________________________
-[   608] By: gsar                                  on 1998/03/02  01:13:01
-        Log: merge two important 'old' patches
-             From: Chip Salzenberg 
-             Message-Id: <199709241632.MAA09164@nielsenmedia.com>
-             Subject: [PATCH]  Fix C<42 until forever> SIGSEGV
-             Date: Wed, 24 Sep 1997 12:32:11 -0400 (EDT)
-             ------
-             From: Chip Salzenberg 
-             Message-Id: <199710221332.JAA04814@nielsenmedia.com>
-             Subject: [PATCH] Fix for compile-time while() warnings
-             Date: Wed, 22 Oct 1997 09:31:50 -0400 (EDT)
-     Branch: win32/perl
-           ! op.c
-____________________________________________________________________________
-[   607] By: gsar                                  on 1998/03/01  06:52:26
-        Log: integrate mainline changes
-     Branch: asperl
-	  +> Policy_sh.SH Porting/config.sh Porting/config_H atomic.h
-          +> lib/Tie/Handle.pm t/op/tiehandle.t
-           - config_H
-          !> (integrate 89 files)
-____________________________________________________________________________
-[   606] By: gsar                                  on 1998/02/28  23:11:00
-        Log: misc small tweaks
-             - AutoLoader fix for long::pack::names
-             - d_mymalloc can be set from makefiles now
-             - make search.pl actually work on win32
-             - revert podoc about $^E on OS/2 (per Ilya's wishes)
-     Branch: win32/perl
-	   ! lib/AutoLoader.pm pod/perlvar.pod win32/Makefile
-           ! win32/bin/search.pl win32/makefile.mk win32/win32.c
-____________________________________________________________________________
-[   605] By: gsar                                  on 1998/02/28  22:16:45
-        Log: fix typo in sv.h, and run 'make regen_headers' to make it build
-     Branch: win32/perl
-           ! embedvar.h sv.h
-____________________________________________________________________________
-[   604] By: gsar                                  on 1998/02/28  21:08:58
-        Log: integrate mainline
-     Branch: win32/perl
-          +> Policy_sh.SH atomic.h lib/Tie/Handle.pm t/op/tiehandle.t
-	  !> Configure MANIFEST Makefile.SH bytecode.h bytecode.pl
-	  !> byterun.c ext/SDBM_File/Makefile.PL
-	  !> ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/sdbm.h
-	  !> lib/ExtUtils/MM_VMS.pm os2/diff.configure os2/os2.c perl.c
-	  !> perlvars.h pod/perltie.pod pp_sys.c sv.c sv.h t/lib/anydbm.t
-	  !> t/lib/sdbm.t util.c vms/descrip.mms vms/perlvms.pod
-          !> vms/test.com win32/makedef.pl
-____________________________________________________________________________
-[   603] By: nick                                  on 1998/02/28  11:31:15
-        Log: Missed FREAD in bytecode.h
-             Cannot export svref_mutex in non-threaded perl
-     Branch: perl
-           ! bytecode.h win32/makedef.pl
-
-----------------
-Version 5.004_61
-----------------
-
-____________________________________________________________________________
-[   602] By: mbeattie                              on 1998/02/27  18:35:27
-        Log: Change FREAD/FGETC to BGET_FREAD/BGET_FGETC to avoid clash with
-             preprocessor symbol on Digital UNIX.
-     Branch: perl
-           ! bytecode.h bytecode.pl byterun.c
-____________________________________________________________________________
-[   601] By: mbeattie                              on 1998/02/27  18:27:00
-        Log: Fix stupid ATOMIC_DEC_AND_TEST typo in sv.h.
-     Branch: perl
-           ! sv.h
-____________________________________________________________________________
-[   600] By: mbeattie                              on 1998/02/27  18:15:07
-        Log: Add atomic.h to MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   599] By: mbeattie                              on 1998/02/27  18:13:52
-        Log: Integrate win32 branch into mainline.
-     Branch: perl
-           ! bytecode.pl
-	  !> bytecode.h byterun.c byterun.h dosish.h embed.h embedvar.h
-	  !> ext/B/B.xs ext/B/Makefile.PL global.sym perl.h sv.c
-	  !> win32/Makefile win32/bin/pl2bat.pl win32/config.bc
-	  !> win32/config.gc win32/config.vc win32/config_H.bc
-	  !> win32/config_H.gc win32/config_H.vc win32/config_h.PL
-	  !> win32/makedef.pl win32/makefile.mk win32/win32.c win32/win32.h
-          !> win32/win32thread.h
-____________________________________________________________________________
-[   598] By: mbeattie                              on 1998/02/27  18:06:41
-        Log: Make refcounts atomic for threading (dependent on appropriate
-             arch-dependent and compiler-dependent definitions in atomic.h
-             or else falls back to a global mutex to protect refcounts).
-     Branch: perl
-           + atomic.h
-           ! global.sym perl.c perlvars.h sv.c sv.h
-____________________________________________________________________________
-[   597] By: mbeattie                              on 1998/02/27  15:37:22
-        Log: Tiehandle stuff in change 595 didn't add to MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   596] By: mbeattie                              on 1998/02/27  15:34:55
-        Log: Missed adding new file Policy_sh.SH in change 592.
-     Branch: perl
-           + Policy_sh.SH
-____________________________________________________________________________
-[   595] By: mbeattie                              on 1998/02/27  15:34:06
-        Log: Subject: [PATCH] _60 & _04 - Add WRITE & CLOSE to TIEHANDLE
-             Date: Fri, 27 Feb 1998 04:15:04 +0000
-             From: Graham Barr 
-     Branch: perl
-           + lib/Tie/Handle.pm t/op/tiehandle.t
-           ! pod/perltie.pod pp_sys.c
-____________________________________________________________________________
-[   594] By: mbeattie                              on 1998/02/27  15:31:12
-        Log: From: Dan Sugalski 
-             Subject: [PATCH 5.004_60] Fix to MM_VMS.PM
-             Date: Thu, 26 Feb 1998 11:09:55 -0800
-             Subject: [PATCH 5.004_60] Get SDBM_File working on VMS
-             Date: Thu, 26 Feb 1998 11:15:24 -0800
-     Branch: perl
-	   ! ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL
-	   ! ext/SDBM_File/sdbm/sdbm.h lib/ExtUtils/MM_VMS.pm
-	   ! t/lib/anydbm.t t/lib/sdbm.t vms/descrip.mms vms/perlvms.pod
-           ! vms/test.com
-____________________________________________________________________________
-[   593] By: mbeattie                              on 1998/02/27  15:26:45
-        Log: Fix file-descriptor leak when pipes fail via taint checks:
-             Subject: [PATCH] Some patches went through cracks
-             Date: Thu, 26 Feb 1998 02:47:46 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! os2/os2.c util.c
-____________________________________________________________________________
-[   592] By: mbeattie                              on 1998/02/27  15:15:12
-        Log: Subject: Config_60-03-04.diff patch for 5.004_60
-             Date: Wed, 25 Feb 1998 17:14:39 -0500 (EST)
-             From: Andy Dougherty 
-     Branch: perl
-           ! Configure MANIFEST Makefile.SH os2/diff.configure
-____________________________________________________________________________
-[   591] By: gsar                                  on 1998/02/26  19:34:50
-        Log: added AS patch#9
-     Branch: asperl
-	   - win32/ipdir.c win32/ipenv.c win32/iplio.c win32/ipmem.c
-	   - win32/ipproc.c win32/ipsock.c win32/ipstdio.c
-           - win32/ipstdiowin.h win32/perlobj.def
-	   ! ObjXSub.h globals.c perl.c proto.h win32/Makefile
-	   ! win32/dl_win32.xs win32/runperl.c win32/win32.c win32/win32.h
-           ! win32/win32sck.c win32/win32thread.c
-____________________________________________________________________________
-[   590] By: gsar                                  on 1998/02/26  04:25:40
-        Log: various changes to make win32 build under the new Configure & co.
-             - added byterun.c to core C build
-             - makefile.mk now has a regen_config_h target to quickly update config_H.[bgv]c
-             after adding new variables to config.[bgv]c
-             - sig_name_init now has only the valid signals
-             - we now have $Config{usethreads}
-             - tested under the two commercial compilers w/ and w/o usethreads
-     Branch: win32/perl
-	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-           ! win32/config_h.PL win32/makedef.pl win32/makefile.mk
-____________________________________________________________________________
-[   589] By: gsar                                  on 1998/02/26  03:56:19
-        Log: various cleanups so that B can be built as "just another extension"
-             - export symbols needed for building B
-             - bset_obj_store() is needed by byterun(), so define it there instead
-             of at B.xs, and export it
-             - freadpv() is only used in B.xs, so move it there
-             - byte*.h are now included by perl.h
-             - regenerate embed*.h
-     Branch: win32/perl
-	   ! bytecode.h bytecode.pl byterun.c byterun.h embed.h embedvar.h
-           ! ext/B/B.xs ext/B/Makefile.PL global.sym perl.h
-____________________________________________________________________________
-[   588] By: gsar                                  on 1998/02/25  21:46:35
-        Log: integrate mainline
-     Branch: win32/perl
-          +> Porting/config.sh Porting/config_H
-           - config_H
-          !> (integrate 54 files)
-____________________________________________________________________________
-[   587] By: gsar                                  on 1998/02/25  19:20:26
-        Log: added AS patch#8
-     Branch: asperl
-           ! sv.c x2p/a2py.c x2p/util.c
-____________________________________________________________________________
-[   586] By: gsar                                  on 1998/02/25  19:08:06
-        Log: added AS patch#7
-             Message-Id: <01BD40F9.CE57B210.dougl@ActiveState.com>
-             Date:    Tue, 24 Feb 1998 07:57:07 PST
-             From:    Douglas Lankshear 
-             Subject: [PATCH] 
-             
-             Here's an attempt at
-             6. MANIFEST must be updated with new file names
-             5. Mktime(), Stat() etc., rather than MKtime()/STat() etc.
-             And some changes to move toward
-             1. Merge PERL_OBJECT build support into regular Makefile and makefile.mk
-             
-             -- Doug
-     Branch: asperl
-	   ! MANIFEST installperl ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
-	   ! ipsock.h ipstdio.h lib/ExtUtils/MM_Win32.pm perldir.h
-           ! perlenv.h perlio.h perllio.h win32/Makefile
-____________________________________________________________________________
-[   585] By: mbeattie                              on 1998/02/25  17:44:34
-        Log: More compiler tweaks.
-     Branch: perl
-	   ! Makefile.SH bytecode.pl byterun.c byterun.h ext/B/B/Asmdata.pm
-____________________________________________________________________________
-[   584] By: mbeattie                              on 1998/02/25  15:36:38
-        Log: Subject: [PATCH 5.004_60] dos-djgpp update
-             Date: Wed, 25 Feb 1998 11:17:07 +0100
-             From: Laszlo Molnar 
-     Branch: perl
-           ! djgpp/djgpp.c dosish.h hints/dos_djgpp.sh perl.c thread.h
-____________________________________________________________________________
-[   583] By: mbeattie                              on 1998/02/25  15:34:48
-        Log: Move find_threadsv to right bit of global.sym. Bump patchlevel to 61.
-     Branch: perl
-           ! global.sym patchlevel.h
-____________________________________________________________________________
-[   582] By: mbeattie                              on 1998/02/25  15:28:08
-        Log: Subject: Re: [PATCH 5.004_60] Fix goto-in-eval segfault (unwrapped!)
-             Date: Tue, 24 Feb 1998 11:15:57 +0000
-             From: Robin Houston 
-     Branch: perl
-           ! pod/perldiag.pod pp_ctl.c
-____________________________________________________________________________
-[   581] By: mbeattie                              on 1998/02/25  15:27:06
-        Log: Subject: [PATCH] #ifdef CAN_PROTOTYPE cleanup
-             Date: 23 Feb 1998 23:36:09 +0100
-             From: Gisle Aas 
-     Branch: perl
-	   ! doio.c miniperlmain.c op.c perl.c pp.h regcomp.c toke.c util.c
-____________________________________________________________________________
-[   580] By: mbeattie                              on 1998/02/25  15:25:29
-        Log: Subject: [PATCH 5.004_60] improved Test.pm
-             Date: Sat, 21 Feb 1998 14:17:09 -0500
-             From: Joshua Pritikin 
-     Branch: perl
-           ! lib/Test.pm
-____________________________________________________________________________
-[   579] By: mbeattie                              on 1998/02/25  15:23:24
-        Log: HP-UX hints and AIX global.sym changes (with Makefile.SH rule)
-             From: Jarkko Hietaniemi 
-             Subject: [PATCH] 5.004_60: AIX: global.sym and Makefile.SH
-             Date: Sat, 21 Feb 1998 15:26:19 +0200 (EET)
-             Subject: Re: your HP-UX perl patch
-             Date: Mon, 23 Feb 1998 23:14:37 +0200 (EET)
-     Branch: perl
-           ! Makefile.SH embed.h global.sym hints/hpux.sh
-____________________________________________________________________________
-[   578] By: mbeattie                              on 1998/02/25  15:18:06
-        Log: Back out DB_File patch (change _553) and tweak Configure.
-             Subject: ANNOUNCE: perl5.004_60 is available
-             Date: Mon, 23 Feb 1998 10:47:26 -0000
-             From: Paul Marquess 
-     Branch: perl
-           ! Configure ext/DB_File/DB_File.xs
-____________________________________________________________________________
-[   577] By: mbeattie                              on 1998/02/25  15:04:00
-        Log: Subject: [PATCH] Cwd.pm
-             Date: Fri, 20 Feb 1998 10:27:54 -0600
-             From: Graham Barr 
-     Branch: perl
-           ! lib/Cwd.pm
-____________________________________________________________________________
-[   576] By: mbeattie                              on 1998/02/25  15:02:57
-        Log: From: ilya@math.ohio-state.edu (Ilya Zakharevich)
-             Subject: [5.004_5* PATCH] Make ornaments default in Term::ReadLine
-             Date: Fri, 20 Feb 1998 00:09:52 -0500 (EST)
-             Subject: [PATCH 5.004_5*] Fix debugger messages and the default package
-             Date: Fri, 20 Feb 1998 00:12:28 -0500 (EST)
-             Subject: Re: Continued presence of segmentation violation in study_chunk()[PATCH]
-             Date: Sat, 21 Feb 1998 15:32:29 -0500 (EST)
-     Branch: perl
-           ! lib/Term/ReadLine.pm lib/perl5db.pl regcomp.c
-____________________________________________________________________________
-[   575] By: mbeattie                              on 1998/02/25  14:58:00
-        Log: Subject: Re: ANNOUNCE: perl5.004_60 Configure patch is available
-             Date: Tue, 24 Feb 1998 16:02:43 -0500 (EST)
-             From: Andy Dougherty 
-     Branch: perl
-           + Porting/config.sh Porting/config_H
-           - config_H
-	   ! Configure INSTALL MANIFEST Makefile.SH Porting/Glossary
-	   ! Porting/pumpkin.pod config_h.SH ext/POSIX/POSIX.xs
-	   ! hints/aix.sh hints/amigaos.sh hints/bsdos.sh hints/dec_osf.sh
-	   ! hints/freebsd.sh hints/irix_6.sh hints/linux.sh
-	   ! hints/netbsd.sh hints/next_3.sh hints/next_4.sh hints/os2.sh
-	   ! hints/solaris_2.sh makedepend.SH perl.c perl.h pp.c pp_sys.c
-           ! t/lib/thread.t t/op/nothread.t x2p/Makefile.SH
-____________________________________________________________________________
-[   574] By: gsar                                  on 1998/02/24  02:21:14
-        Log: fix typos in sv.c
-     Branch: win32/perl
-           ! sv.c
-____________________________________________________________________________
-[   573] By: mbeattie                              on 1998/02/23  10:03:39
-        Log: Remove old Linux+threads segfault degugging kludge.
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[   572] By: gsar                                  on 1998/02/23  09:45:26
-        Log: undo previous change (no added value!)
-     Branch: win32/perl
-           ! win32/bin/pl2bat.pl
-____________________________________________________________________________
-[   571] By: gsar                                  on 1998/02/23  09:18:32
-        Log: fix pl2bat.pl to tolerate trailing .bat (as suggested by
-             John Cavanaugh )
-     Branch: win32/perl
-           ! win32/bin/pl2bat.pl
-____________________________________________________________________________
-[   570] By: gsar                                  on 1998/02/22  04:02:15
-        Log: support chown() (just a noop for now)
-     Branch: win32/perl
-           ! dosish.h win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   569] By: gsar                                  on 1998/02/22  03:09:55
-        Log: integrate latest win32 branch
-     Branch: asperl
-          +> (branch 41 files)
-          !> (integrate 59 files)
-____________________________________________________________________________
-[   568] By: gsar                                  on 1998/02/22  02:40:56
-        Log: get compiler building under win32 (needed Makefile.PL
-             hacks that could be applicable to other platforms)
-     Branch: win32/perl
-           ! ext/B/Makefile.PL win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[   567] By: gsar                                  on 1998/02/22  01:30:19
-        Log: integrate mainline
-     Branch: win32/perl
-          +> (branch 41 files)
-          !> (integrate 46 files)
-____________________________________________________________________________
-[   566] By: gsar                                  on 1998/02/20  22:31:56
-        Log: fix handle leak in join()
-     Branch: win32/perl
-           ! win32/win32thread.h
-
-----------------
-Version 5.004_60
-----------------
-
-____________________________________________________________________________
-[   565] By: mbeattie                              on 1998/02/20  18:23:47
-        Log: Remove compiler files from their old lib/B locations. The compiler
-             now builds by default (without the byteperl executable so far) and
-             seems to work at least minimally.
-     Branch: perl
-	   - lib/B.pm lib/B/Asmdata.pm lib/B/Assembler.pm lib/B/Bblock.pm
-	   - lib/B/Bytecode.pm lib/B/C.pm lib/B/CC.pm lib/B/Debug.pm
-	   - lib/B/Deparse.pm lib/B/Disassembler.pm lib/B/Lint.pm
-	   - lib/B/Showlex.pm lib/B/Stackobj.pm lib/B/Terse.pm
-	   - lib/B/Xref.pm lib/B/assemble lib/B/cc_harness
-           - lib/B/disassemble lib/B/makeliblinks lib/O.pm
-           ! MANIFEST bytecode.pl
-____________________________________________________________________________
-[   564] By: mbeattie                              on 1998/02/20  18:05:33
-        Log: Move lib/B/... and lib/[BO].pm over to where they should be,
-             under ext/B.
-     Branch: perl
-	  +> ext/B/B.pm ext/B/B/Asmdata.pm ext/B/B/Assembler.pm
-	  +> ext/B/B/Bblock.pm ext/B/B/Bytecode.pm ext/B/B/C.pm
-	  +> ext/B/B/CC.pm ext/B/B/Debug.pm ext/B/B/Deparse.pm
-	  +> ext/B/B/Disassembler.pm ext/B/B/Lint.pm ext/B/B/Showlex.pm
-	  +> ext/B/B/Stackobj.pm ext/B/B/Terse.pm ext/B/B/Xref.pm
-	  +> ext/B/B/assemble ext/B/B/cc_harness ext/B/B/disassemble
-          +> ext/B/B/makeliblinks ext/B/O.pm
-____________________________________________________________________________
-[   563] By: mbeattie                              on 1998/02/20  17:54:58
-        Log: Start getting compiler to work when built with the core.
-             [Still won't work as of this change.]
-     Branch: perl
-	  +> byterun.c byterun.h lib/B/Asmdata.pm lib/B/Assembler.pm
-	  +> lib/B/Bblock.pm lib/B/Bytecode.pm lib/B/C.pm lib/B/CC.pm
-	  +> lib/B/Debug.pm lib/B/Deparse.pm lib/B/Disassembler.pm
-	  +> lib/B/Lint.pm lib/B/Showlex.pm lib/B/Stackobj.pm
-          +> lib/B/Terse.pm lib/B/Xref.pm
-           ! MANIFEST Makefile.SH bytecode.pl ext/B/Makefile.PL
-____________________________________________________________________________
-[   562] By: mbeattie                              on 1998/02/20  16:42:13
-        Log: Merge perlext/Compiler/... into mainline. Some files move to
-             ext/B/..., some to lib/B/..., O.pm and B.pm go in lib and some
-             move to the base perl directory (e.g. headers). Will need some
-             cleaning up before it builds properly, I would guess.
-     Branch: perl
-	  +> bytecode.h bytecode.pl cc_runtime.h ext/B/B.xs
-	  +> ext/B/Makefile.PL ext/B/NOTES ext/B/README ext/B/TESTS
-	  +> ext/B/Todo ext/B/byteperl.c ext/B/ramblings/cc.notes
-	  +> ext/B/ramblings/curcop.runtime ext/B/ramblings/flip-flop
-	  +> ext/B/ramblings/magic ext/B/ramblings/reg.alloc
-	  +> ext/B/ramblings/runtime.porting ext/B/typemap lib/B.pm
-	  +> lib/B/assemble lib/B/cc_harness lib/B/disassemble
-          +> lib/B/makeliblinks lib/O.pm
-____________________________________________________________________________
-[   561] By: mbeattie                              on 1998/02/20  16:39:38
-        Log: Win32 changes from Sarathy, tweaked slightly by me.
-     Branch: perlext
-	   ! Compiler/B.xs Compiler/B/Asmdata.pm Compiler/B/Bytecode.pm
-	   ! Compiler/B/C.pm Compiler/Makefile.PL Compiler/assemble
-	   ! Compiler/bytecode.h Compiler/bytecode.pl Compiler/byteperl.c
-           ! Compiler/byterun.c Compiler/byterun.h Compiler/cc_harness
-____________________________________________________________________________
-[   560] By: mbeattie                              on 1998/02/20  15:46:15
-        Log: Initialise $@ early (fixes t/lib/ph.t for threaded perl).
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[   559] By: mbeattie                              on 1998/02/20  12:56:10
-        Log: Add missing t/op/wantarray.t to MANIFEST. Bump patchlevel to 60.
-     Branch: perl
-           ! MANIFEST patchlevel.h
-____________________________________________________________________________
-[   558] By: mbeattie                              on 1998/02/20  12:53:26
-        Log: Integrate win32 branch into mainline.
-     Branch: perl
-	  !> XSUB.h config_h.SH doio.c lib/Pod/Html.pm pp_sys.c
-	  !> win32/Makefile win32/config.bc win32/config.gc win32/config.vc
-	  !> win32/config_H.bc win32/config_H.gc win32/config_H.vc
-	  !> win32/makedef.pl win32/makefile.mk win32/win32.c win32/win32.h
-          !> win32/win32iop.h x2p/a2p.h
-____________________________________________________________________________
-[   557] By: mbeattie                              on 1998/02/20  12:51:42
-        Log: Subject: retry [PATCH] 5.004_59: the perlhist.pod etc
-             Date: Thu, 19 Feb 1998 17:54:52 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-	   ! ext/Thread/Thread.pm ext/Thread/Thread/Queue.pm
-	   ! ext/Thread/Thread/Semaphore.pm ext/Thread/Thread/Specific.pm
-	   ! lib/fields.pm pod/buildtoc pod/perl.pod pod/perlhist.pod
-           ! pod/perltoc.pod pod/perlvar.pod
-____________________________________________________________________________
-[   556] By: mbeattie                              on 1998/02/20  12:49:54
-        Log: Subject: [PATCH] installperl
-             Date: Wed, 18 Feb 1998 11:51:44 -0500 (est)
-             From: Norton Allen 
-     Branch: perl
-           ! installperl
-____________________________________________________________________________
-[   555] By: mbeattie                              on 1998/02/20  12:49:09
-        Log: Subject: [PATCH:_59] t/op/wantarray.t
-             Date: Wed, 18 Feb 1998 11:19:54 -0500 (est)
-             From: Norton Allen 
-     Branch: perl
-           + t/op/wantarray.t
-____________________________________________________________________________
-[   554] By: mbeattie                              on 1998/02/20  12:47:44
-        Log: Subject: Misprint in regcomp.c [PATCH]
-             Date: Tue, 17 Feb 1998 23:54:07 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! regcomp.c
-____________________________________________________________________________
-[   553] By: mbeattie                              on 1998/02/20  12:45:08
-        Log: Subject: DB_File ->length does not work just after tie.
-             Date: Tue, 17 Feb 1998 13:19:18 GMT
-             From: Nick Ing-Simmons 
-     Branch: perl
-           ! ext/DB_File/DB_File.xs
-____________________________________________________________________________
-[   552] By: mbeattie                              on 1998/02/20  12:43:32
-        Log: Subject: [PATCH] - perl5.005_59, update Copyright
-             Date: Mon, 16 Feb 1998 20:31:06 -0500 (EST)
-             From: lusol@CS4.CC.Lehigh.EDU (Stephen O. Lidie)
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[   551] By: mbeattie                              on 1998/02/20  12:42:41
-        Log: Subject: Re: for() and map() peculiarity
-             Date: Mon, 16 Feb 1998 21:33:44 +0000
-             From: "M.J.T. Guy" 
-     Branch: perl
-           ! pod/perlsyn.pod
-____________________________________________________________________________
-[   550] By: mbeattie                              on 1998/02/20  12:41:53
-        Log: Subject: [PATCH 5.004_59] Updates to VMS/CONFIG.VMS
-             Date: Mon, 16 Feb 1998 11:46:29 -0800
-             From: Dan Sugalski 
-     Branch: perl
-           ! vms/config.vms
-____________________________________________________________________________
-[   549] By: mbeattie                              on 1998/02/20  12:40:55
-        Log: Subject: [PATCH] 5.004_59 global.sym for AIX 3.2.5
-             Date: Mon, 16 Feb 1998 14:27:53 -0500 (EST)
-             From: "Stephen O. Lidie" 
-     Branch: perl
-           ! global.sym
-____________________________________________________________________________
-[   548] By: mbeattie                              on 1998/02/20  12:39:56
-        Log: Subject: [PATCH] 5.004_59: hints/irix_6.sh
-             Date: Mon, 16 Feb 1998 15:44:57 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! hints/irix_6.sh
-____________________________________________________________________________
-[   547] By: mbeattie                              on 1998/02/20  12:38:58
-        Log: Subject: [PATCH] perlguts update
-             Date: 16 Feb 1998 11:23:53 +0100
-             From: Gisle Aas 
-     Branch: perl
-           ! pod/perlguts.pod
-____________________________________________________________________________
-[   546] By: mbeattie                              on 1998/02/20  12:38:01
-        Log: Subject: [PATCH 5.004_59] bsdos/hints.sh is wrong
-             Date: Sun, 15 Feb 1998 23:56:05 -0500
-             From: Irving Reid 
-     Branch: perl
-           ! hints/bsdos.sh
-____________________________________________________________________________
-[   545] By: mbeattie                              on 1998/02/20  12:37:11
-        Log: Subject: [PATCH] 5% speedup in an empty loop
-             Date: Sun, 15 Feb 1998 17:49:46 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[   544] By: mbeattie                              on 1998/02/20  12:36:26
-        Log: Subject: [PATCH for 5.004_59] netdb_host_type and netdb_hlen_type on NeXt
-             Date: Sun, 15 Feb 98 23:06:16 +0100
-             From: Hans Mulder 
-     Branch: perl
-           ! hints/next_3.sh hints/next_4.sh
-____________________________________________________________________________
-[   543] By: mbeattie                              on 1998/02/20  12:35:39
-        Log: Subject: [PATCH for 5.004_59] Perl_sbrk declared inconsistently
-             Date: Sun, 15 Feb 98 23:05:20 +0100
-             From: Hans Mulder 
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[   542] By: mbeattie                              on 1998/02/20  12:35:03
-        Log: Subject: [PATCH for 5.004_59] "d_gethbyname" misspelled in Configure
-             From: Hans Mulder 
-             Date: Sun, 15 Feb 98 23:04:29 +0100
-     Branch: perl
-           ! Configure
-____________________________________________________________________________
-[   541] By: mbeattie                              on 1998/02/20  12:33:56
-        Log: Subject: [PATCH for 5.004_59] NeXT doesn't need DONT_DECLARE_STD (was: 
-             NeXT   needs DONT_DECLARE_STD)
-             Date: Sun, 15 Feb 98 23:04:19 +0100
-             From: Hans Mulder 
-     Branch: perl
-           ! perl.h
-____________________________________________________________________________
-[   540] By: mbeattie                              on 1998/02/20  12:32:25
-        Log: Subject: [PATCH] sv_check_thinkfirst macroized
-             Date: 15 Feb 1998 22:00:38 +0100
-             From: Gisle Aas 
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[   539] By: mbeattie                              on 1998/02/20  12:31:07
-        Log: Subject: [PATCH 5.004_59] allow the Test::Harness to grok TODO-type tests docs
-             Date: Sat, 14 Feb 1998 17:58:01 -0500
-             From: Joshua Pritikin 
-     Branch: perl
-           + lib/Test.pm
-           ! MANIFEST lib/Test/Harness.pm
-____________________________________________________________________________
-[   538] By: mbeattie                              on 1998/02/20  12:24:31
-        Log: Subject: [PATCH] 5.004_59: locale startup problems documentation++
-             Date: Sat, 14 Feb 1998 15:40:44 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! INSTALL pod/perldiag.pod pod/perllocale.pod
-____________________________________________________________________________
-[   537] By: mbeattie                              on 1998/02/20  12:23:04
-        Log: Subject: [PATCH] Updated, non-wordwrapped, patch to README.VMS
-             Date: Fri, 13 Feb 1998 13:38:28 -0800
-             From: Dan Sugalski 
-     Branch: perl
-           ! README.vms
-____________________________________________________________________________
-[   536] By: mbeattie                              on 1998/02/20  12:20:29
-        Log: Subject: [PATCH] 5.004_58, move intuition tests
-             Date: Thu, 12 Feb 1998 17:11:05 -0600
-             From: Stephen Potter 
-     Branch: perl
-	   ! t/lib/anydbm.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t
-	   ! t/lib/sdbm.t t/op/array.t t/op/delete.t t/op/each.t
-           ! t/op/flip.t t/op/pat.t t/op/push.t
-____________________________________________________________________________
-[   535] By: gsar                                  on 1998/02/19  23:07:24
-        Log: applied a version of this with tabs intact
-             Message-Id: 
-             Date:    19 Feb 1998 15:06:38 EST
-             From:    dfan@harmonixmusic.com (Dan Schmidt)
-             Subject: Pod::Html bug and fix: missing  in index
-     Branch: win32/perl
-           ! lib/Pod/Html.pm
-____________________________________________________________________________
-[   534] By: gsar                                  on 1998/02/19  19:40:27
-        Log: Fix C<0> problem in Pod::Html
-     Branch: win32/perl
-           ! lib/Pod/Html.pm
-____________________________________________________________________________
-[   533] By: gsar                                  on 1998/02/18  18:11:08
-        Log: non-debug VC builds are -O1 now (they say it works, and is
-             faster)
-     Branch: win32/perl
-           ! win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[   532] By: gsar                                  on 1998/02/18  04:11:03
-        Log: integrate nick's patch to mainline
-     Branch: win32/perl
-          !> pp.c
-____________________________________________________________________________
-[   531] By: mbeattie                              on 1998/02/17  17:50:50
-        Log: Assorted changes to the compiler
-     Branch: perlext
-	   ! Compiler/B.pm Compiler/B.xs Compiler/B/Asmdata.pm
-	   ! Compiler/B/Bytecode.pm Compiler/B/C.pm Compiler/B/Debug.pm
-	   ! Compiler/NOTES Compiler/O.pm Compiler/bytecode.pl
-           ! Compiler/byterun.c Compiler/byterun.h Compiler/typemap
-____________________________________________________________________________
-[   530] By: gsar                                  on 1998/02/17  01:47:35
-        Log: DLLs are now ok on mingw32/gcc-2.8.0 after removing the
-             FORCE_ARG_STRING() hack (that bug is fixed in gcc now).  mingw32
-             build passes all tests except t/lib/io_xs.t (seems to be due to
-             broken tmpfile() in the CRT or import lib)
-     Branch: win32/perl
-           ! XSUB.h win32/makefile.mk win32/win32.h
-____________________________________________________________________________
-[   529] By: gsar                                  on 1998/02/16  23:03:31
-        Log: fix mingw32 gcc 2.8.0 build (DLLs generated seem to be broken
-             in this version of gcc!)
-     Branch: win32/perl
-	   ! doio.c pp_sys.c win32/config.gc win32/makefile.mk
-           ! win32/win32.c win32/win32.h win32/win32iop.h x2p/a2p.h
-____________________________________________________________________________
-[   528] By: nick                                  on 1998/02/16  22:13:04
-        Log: Missing PUSHMARK in unshift TIEARRAY hook
-     Branch: perl
-           ! pp.c
-____________________________________________________________________________
-[   527] By: gsar                                  on 1998/02/15  20:59:07
-        Log: integrate win32 branch
-     Branch: asperl
-	  !> config_h.SH win32/config.bc win32/config.gc win32/config.vc
-	  !> win32/config_H.bc win32/config_H.gc win32/config_H.vc
-          !> win32/makedef.pl
-____________________________________________________________________________
-[   526] By: gsar                                  on 1998/02/15  20:02:11
-        Log: Fix typo: s/GETNETBYADD\b/GETNETBYADDR/
-     Branch: win32/perl
-	   ! config_h.SH win32/config_H.bc win32/config_H.gc
-           ! win32/config_H.vc
-____________________________________________________________________________
-[   525] By: gsar                                  on 1998/02/15  03:26:45
-        Log: fix build problems due to renamed Config variables
-     Branch: win32/perl
-	   ! win32/config.bc win32/config.gc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-           ! win32/makedef.pl
-____________________________________________________________________________
-[   524] By: gsar                                  on 1998/02/14  01:00:15
-        Log: bring ASPerl uptodate with mainline changes
-     Branch: asperl
-          +> ext/DB_File/Changes t/comp/require.t
-          !> (integrate 41 files)
-____________________________________________________________________________
-[   523] By: gsar                                  on 1998/02/14  00:52:17
-        Log: integrate mainline
-     Branch: win32/perl
-	  !> hints/qnx.sh lib/Cwd.pm lib/ExtUtils/xsubpp patchlevel.h
-          !> pp_hot.c t/op/magic.t
-____________________________________________________________________________
-[   522] By: gsar                                  on 1998/02/14  00:42:37
-        Log: added AS patch#6
-             Message-Id: <01BD3846.B29FB880.dougl@ActiveState.com>
-             Date:    Fri, 13 Feb 1998 06:14:51 PST
-             From:    Douglas Lankshear 
-             Subject: [PATCH] command line build
-             
-             This patch is for the command line build of perl object.
-             I'll merge the ipfoo.c function with win32_xxx functions next.
-             
-             -- Doug
-     Branch: asperl
-	   ! ObjXSub.h ext/Opcode/Opcode.xs lib/ExtUtils/MM_Win32.pm
-	   ! objpp.h proto.h sv.c win32/dl_win32.xs win32/ipenv.c
-	   ! win32/ipstdio.c win32/makedef.pl win32/runperl.c win32/win32.h
-____________________________________________________________________________
-[   521] By: gsar                                  on 1998/02/14  00:14:04
-        Log: added AS patch#5 (patch #4 was intentionally skipped after
-             discussion)
-     Branch: asperl
-	   ! embed.h embedvar.h global.sym globals.c hv.c interp.sym
-	   ! intrpvar.h op.c perl.c perl.h pp_ctl.c proto.h regcomp.c
-           ! regexec.c sv.c toke.c
-____________________________________________________________________________
-[   520] By: nick                                  on 1998/02/13  18:15:46
-        Log: Resolve ansiperl against win32
-     Branch: ansiperl
-	  +> ext/DB_File/Changes ext/POSIX/hints/linux.pl
-	  +> ext/POSIX/hints/sunos_4.pl lib/Fatal.pm t/comp/require.t
-          +> t/lib/ph.t
-          !> (integrate 898 files)
-
-----------------
-Version 5.004_59
-----------------
-
-____________________________________________________________________________
-[   519] By: mbeattie                              on 1998/02/13  17:05:37
-        Log: Integrate win32 into mainline.
-     Branch: perl
-           ! lib/ExtUtils/xsubpp
-	  !> win32/Makefile win32/config.bc win32/config.gc win32/config.vc
-          !> win32/makefile.mk
-____________________________________________________________________________
-[   518] By: mbeattie                              on 1998/02/13  17:01:16
-        Log: Bump patchlevel.h to 59.
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   517] By: mbeattie                              on 1998/02/13  16:57:59
-        Log: Subject: [PATCH] _58: wantarray in void context broken
-             Date: Fri, 13 Feb 1998 11:24:49 -0500 (est)
-             From: Norton Allen 
-     Branch: perl
-           ! pp_hot.c
-____________________________________________________________________________
-[   516] By: mbeattie                              on 1998/02/13  16:55:33
-        Log: Subject: [PATCH] 5.004_58 QNX getcwd
-             Date: Thu, 12 Feb 1998 13:40:56 -0500 (est)
-             From: Norton Allen 
-     Branch: perl
-           ! hints/qnx.sh lib/Cwd.pm t/op/magic.t
-____________________________________________________________________________
-[   515] By: gsar                                  on 1998/02/12  18:29:52
-        Log: pickup lddlflags properly for Config.pm
-     Branch: win32/perl
-	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   514] By: gsar                                  on 1998/02/12  18:16:09
-        Log: fix xsubpp bug in SETMAGIC code
-     Branch: win32/perl
-           ! lib/ExtUtils/xsubpp
-____________________________________________________________________________
-[   513] By: gsar                                  on 1998/02/12  18:06:30
-        Log: integrate mainline
-     Branch: win32/perl
-          +> ext/DB_File/Changes
-	  !> Configure MANIFEST config_h.SH ext/DB_File/DB_File.pm
-	  !> ext/DB_File/DB_File.xs hints/machten.sh
-	  !> lib/ExtUtils/Install.pm lib/Pod/Html.pm lib/Pod/Text.pm
-	  !> lib/perl5db.pl malloc.c pod/perldiag.pod pod/perlpod.pod
-	  !> pod/pod2man.PL pp_sys.c regcomp.c regexec.c scope.h sv.c
-	  !> t/lib/db-recno.t t/lib/filecopy.t t/op/misc.t t/op/pat.t
-          !> t/op/re_tests t/pragma/locale.t
-____________________________________________________________________________
-[   512] By: mbeattie                              on 1998/02/12  17:34:02
-        Log: Missing WITH_THR from new deb() in ENTER/LEAVE caused builds
-             with -DUSE_THREADS -DDEBUGGING to fail.
-     Branch: perl
-           ! scope.h
-____________________________________________________________________________
-[   511] By: mbeattie                              on 1998/02/12  16:44:03
-        Log: Integrate win32 into mainline
-     Branch: perl
-          +> t/comp/require.t
-          !> MANIFEST pp_ctl.c scope.c scope.h t/op/local.t toke.c
-____________________________________________________________________________
-[   510] By: mbeattie                              on 1998/02/12  16:42:26
-        Log: Subject: Re: [PATCH] 5.004_58 | _04  DynaLoader.pm -> DynaLoader.pm.PL (resend)
-             Date: 12 Feb 1998 14:25:55 +0100
-             From: koenig@kulturbox.de (Andreas J. Koenig)
-     Branch: perl
-           ! lib/ExtUtils/Install.pm
-____________________________________________________________________________
-[   509] By: mbeattie                              on 1998/02/12  16:40:34
-        Log: Subject: Re: wrong prototype for sbrk [PATCH]
-             Date: Wed, 11 Feb 1998 15:37:31 -0500 (EST)
-             From: Andy Dougherty 
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[   508] By: mbeattie                              on 1998/02/12  16:36:53
-        Log: Subject: [PATCH] 5.004_58 | _04: pod2*,perlpod: L
-             Date: Wed, 11 Feb 1998 17:29:20 +0100
-             From: Achim Bohnet 
-     Branch: perl
-	   ! lib/Pod/Html.pm lib/Pod/Text.pm pod/perlpod.pod pod/pod2man.PL
-____________________________________________________________________________
-[   507] By: mbeattie                              on 1998/02/12  16:35:26
-        Log: Subject: [PATCH] slight tweaks to hints/machten.sh
-             Date: Wed, 11 Feb 1998 14:59:46 +0100
-             From: Dominic Dunlop 
-     Branch: perl
-           ! hints/machten.sh
-____________________________________________________________________________
-[   506] By: mbeattie                              on 1998/02/12  16:28:40
-        Log: Subject: DB_File 1.58 patch
-             Date: Tue, 10 Feb 1998 11:23:22 +0000 (GMT)
-             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-     Branch: perl
-           + ext/DB_File/Changes
-	   ! MANIFEST ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
-           ! t/lib/db-recno.t
-____________________________________________________________________________
-[   505] By: mbeattie                              on 1998/02/12  16:24:26
-        Log: Subject: 5.004_5*: [PATCH] restore old behaviour of \1 in RE
-             Date: Tue, 10 Feb 1998 02:57:46 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! regexec.c t/op/re_tests
-____________________________________________________________________________
-[   504] By: mbeattie                              on 1998/02/12  16:22:46
-        Log: From: Jarkko Hietaniemi 
-             Subject: [PATCH] 5.004_58: the locale.t problem in IRIX
-             Date: Mon, 9 Feb 1998 19:47:22 +0200 (EET)
-             Subject: [PATCH] 5.004_58: reserve the POSIX regexp extensions
-             Date: Tue, 10 Feb 1998 15:12:12 +0200 (EET)
-             Subject: [PATCH] 5.004_58:  API prototype probing
-             Date: Wed, 11 Feb 1998 12:50:35 +0200 (EET)
-     Branch: perl
-	   ! Configure config_h.SH pod/perldiag.pod pp_sys.c regcomp.c
-           ! t/op/misc.t t/op/pat.t t/op/re_tests t/pragma/locale.t
-____________________________________________________________________________
-[   503] By: mbeattie                              on 1998/02/12  16:15:43
-        Log: Subject: [PATCH] filecopy.t #3 fails on dos-djgpp
-             Date: Mon, 9 Feb 1998 13:19:45 +0100
-             From: Laszlo Molnar 
-     Branch: perl
-           ! t/lib/filecopy.t
-____________________________________________________________________________
-[   502] By: mbeattie                              on 1998/02/12  16:14:27
-        Log: Assorted patches to sv.c:
-             From: Gisle Aas 
-             Subject: [PATCH] sv_grow can fail for HAS_64K_LIMIT systems
-             Date: 07 Feb 1998 00:21:57 +0100
-             Subject: [PATCH] sv_setnv will upgrade SVt_NV to SVt_PVNV
-             Date: 07 Feb 1998 00:29:45 +0100
-             Subject: [PATCH] sv_upgrade() always returns TRUE
-             Date: 09 Feb 1998 15:44:01 +0100
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[   501] By: mbeattie                              on 1998/02/12  16:09:26
-        Log: Fix saving of STDOUT during system() in lib/perl5db.pl:
-             Subject: Perl debugger.
-             Date: Fri, 6 Feb 1998 17:47:08 -0500
-             From: "Jason A. Smith" 
-     Branch: perl
-           ! lib/perl5db.pl
-____________________________________________________________________________
-[   500] By: gsar                                  on 1998/02/12  03:20:55
-        Log: merge another maint patch
-             Message-Id: <199802102349.SAA16001@aatma.engin.umich.edu>
-             Date:    Tue, 10 Feb 1998 18:49:00 EST
-             From:    Gurusamy Sarathy 
-             Subject: Re: after an eval-ed bad require, requiring a string ref gives a SEGV 
-     Branch: win32/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   499] By: gsar                                  on 1998/02/12  03:14:39
-        Log: make t/comp/require.t type xtext
-     Branch: win32/perl
-           ! t/comp/require.t
-____________________________________________________________________________
-[   498] By: gsar                                  on 1998/02/12  03:09:58
-        Log: fix extra LEAVE when require fails
-             Message-Id: <199802102321.SAA15346@aatma.engin.umich.edu>
-             Date:    Tue, 10 Feb 1998 18:21:37 EST
-             From:    Gurusamy Sarathy 
-             Subject: Re: evals and requires make seg-fault with bad require file 
-     Branch: win32/perl
-           + t/comp/require.t
-           ! MANIFEST pp_ctl.c scope.c scope.h toke.c
-____________________________________________________________________________
-[   497] By: gsar                                  on 1998/02/12  02:47:29
-        Log: merge a maint patch
-             Message-Id: <199802110515.AAA23700@aatma.engin.umich.edu>
-             Date:    Wed, 11 Feb 1998 00:15:51 EST
-             From:    Gurusamy Sarathy 
-             Subject: Re: "local" can crash perl-4.00[34] on Solaris-x86 & FreeBSD 
-     Branch: win32/perl
-           ! pp_ctl.c t/op/local.t
-____________________________________________________________________________
-[   496] By: mbeattie                              on 1998/02/11  13:04:50
-        Log: Integrate win32 into mainline.
-     Branch: perl
-	  !> embed.h ext/GDBM_File/typemap ext/NDBM_File/typemap
-	  !> ext/ODBM_File/typemap ext/SDBM_File/typemap global.sym gv.c
-	  !> lib/ExtUtils/typemap lib/ExtUtils/xsubpp op.c
-	  !> os2/OS2/PrfDB/typemap pod/perlguts.pod pod/perlobj.pod
-	  !> pod/perlxs.pod pod/perlxstut.pod proto.h sv.c sv.h t/op/ref.t
-          !> win32/makedef.pl win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[   495] By: mbeattie                              on 1998/02/11  13:03:59
-        Log: Fix special constants in Xref.pm
-     Branch: perlext
-           ! Compiler/B/Xref.pm
-____________________________________________________________________________
-[   494] By: gsar                                  on 1998/02/10  18:26:28
-        Log: fix opendir() problem on share names
-             Message-Id: <199802101828.NAA10420@aatma.engin.umich.edu>
-             Date:    Tue, 10 Feb 1998 13:28:53 EST
-             From:    Gurusamy Sarathy 
-             Subject: Re: BUG: opendir and UNC names on NT 
-     Branch: win32/perl
-           ! win32/win32.c
-____________________________________________________________________________
-[   493] By: gsar                                  on 1998/02/09  23:09:40
-        Log: integrate win32 branch contents
-     Branch: asperl
-	  +> ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
-          +> lib/Fatal.pm t/lib/ph.t
-           ! hv.c
-          !> (integrate 895 files)
-____________________________________________________________________________
-[   492] By: gsar                                  on 1998/02/09  07:30:19
-        Log: enhancements to previous patch for XSUB OUTPUT args
-             Message-Id: <199802090731.CAA04438@aatma.engin.umich.edu>
-             Date:    Mon, 09 Feb 1998 02:31:55 EST
-             From:    Gurusamy Sarathy 
-             Subject: Re: [PATCH] XSUB OUTPUT arguments and 'set' magic 
-     Branch: win32/perl
-	   ! embed.h ext/GDBM_File/typemap ext/NDBM_File/typemap
-	   ! ext/ODBM_File/typemap ext/SDBM_File/typemap global.sym
-	   ! lib/ExtUtils/typemap lib/ExtUtils/xsubpp os2/OS2/PrfDB/typemap
-	   ! pod/perlguts.pod pod/perlxs.pod pod/perlxstut.pod proto.h sv.c
-           ! sv.h
-____________________________________________________________________________
-[   491] By: gsar                                  on 1998/02/09  03:00:52
-        Log: don't share TARG unless -DUSE_BROKEN_PAD_RESET
-             Message-Id: <199710300036.TAA01004@aatma.engin.umich.edu>
-             Date:    Wed, 29 Oct 1997 19:36:25 EST
-             From:    Gurusamy Sarathy 
-             Subject: [PATCH] Don't use broken pad_reset() (was Re: Perl bug in 5.004_03 )
-     Branch: win32/perl
-           ! op.c
-____________________________________________________________________________
-[   490] By: gsar                                  on 1998/02/09  02:30:43
-        Log: fix for bugs in handling DESTROY (adjusted test numbers)
-             Message-Id: <199801010030.TAA14274@aatma.engin.umich.edu>
-             Subject: Re: [PERL] RFD: iterative DESTROYing of objects 
-             Date: Wed, 31 Dec 1997 19:30:46 -0500
-             From: Gurusamy Sarathy 
-     Branch: win32/perl
-           ! pod/perlobj.pod sv.c t/op/ref.t
-____________________________________________________________________________
-[   489] By: gsar                                  on 1998/02/09  00:30:35
-        Log: ansify prototype for my_safemalloc(), avoid warnings
-     Branch: win32/perl
-           ! sv.c
-____________________________________________________________________________
-[   488] By: gsar                                  on 1998/02/09  00:29:08
-        Log: fix misapplied hunks in 5.004_58
-             Message-Id: <199802080718.CAA18115@aatma.engin.umich.edu>
-             Date:    Sun, 08 Feb 1998 02:18:12 EST
-             From:    Gurusamy Sarathy 
-             Subject: [PATCH] fixes for test failures in 5.004_58
-     Branch: win32/perl
-           ! gv.c op.c
-____________________________________________________________________________
-[   487] By: gsar                                  on 1998/02/09  00:27:16
-        Log: win32_utime() tweaks to avoid warnings
-     Branch: win32/perl
-           ! win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[   486] By: gsar                                  on 1998/02/07  23:45:22
-        Log: integrate mainline, plus a few small win32 enhancements
-             - remove Win32::GetCurrentDirectory()
-             - add Win32::Sleep() for compat
-             - add smarter utime() from Jan Dubois, and export it as win32_utime()
-     Branch: win32/perl
-	  +> ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
-          +> lib/Fatal.pm t/lib/ph.t
-           ! win32/makedef.pl win32/win32.c win32/win32iop.h
-          !> (integrate 61 files)
-
-----------------
-Version 5.004_58
-----------------
-
-____________________________________________________________________________
-[   485] By: mbeattie                              on 1998/02/06  18:11:47
-        Log: Bump patchlevel to 58.
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   484] By: mbeattie                              on 1998/02/06  18:08:28
-        Log: Fix up problem with gv.c from change 477.
-             Fix up Config.pm use in t/lib/ph.t from change 478.
-     Branch: perl
-           ! gv.c t/lib/ph.t
-____________________________________________________________________________
-[   483] By: mbeattie                              on 1998/02/06  17:34:34
-        Log: Integrate win32 branch into mainline
-     Branch: perl
-          !> win32/win32sck.c
-____________________________________________________________________________
-[   482] By: mbeattie                              on 1998/02/06  17:26:41
-        Log: lib/Fatal.pm missing from repository
-     Branch: perl
-           + lib/Fatal.pm
-____________________________________________________________________________
-[   481] By: mbeattie                              on 1998/02/06  17:24:57
-        Log: Subject: [PATCH] Re: posix::strftime (core dumped)
-             Date: Thu, 5 Feb 1998 13:55:23 -0500 (EST)
-             From: Andy Dougherty 
-     Branch: perl
-           + ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
-           ! MANIFEST hints/linux.sh hints/sunos_4_1.sh t/lib/posix.t
-____________________________________________________________________________
-[   480] By: mbeattie                              on 1998/02/06  17:19:52
-        Log: x2p/str.c was missing from list of changed files in change 466
-     Branch: perl
-           ! x2p/str.c
-____________________________________________________________________________
-[   479] By: mbeattie                              on 1998/02/06  17:16:54
-        Log: Added t/lib/ph.t to MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   478] By: mbeattie                              on 1998/02/06  17:15:38
-        Log: Subject: [PATCH] h2ph.PL
-             Date: Thu, 5 Feb 1998 05:53:54 -0800 (EST)
-             From: kstar@www.chapin.edu (Kurt D. Starsinic)
-     Branch: perl
-           + t/lib/ph.t
-           ! utils/h2ph.PL
-____________________________________________________________________________
-[   477] By: mbeattie                              on 1998/02/06  17:10:46
-        Log: Subject: [PATCH] Faster gv_fetchpv() for nested packages
-             Date: 04 Feb 1998 14:49:46 +0100
-             From: Gisle Aas 
-             as modified by
-             From: chip@atlantic.net
-             Date: Wed, 4 Feb 1998 11:46:49 -0500 (EST)
-     Branch: perl
-           ! gv.c
-____________________________________________________________________________
-[   476] By: mbeattie                              on 1998/02/06  16:47:03
-        Log: From: Jarkko Hietaniemi 
-             Subject: [PATCH] almost OK: perl 5.00457 on i386-freebsd-thread 3.0
-             Date: Wed, 4 Feb 1998 12:59:47 +0200 (EET)
-             Subject: Re: [PATCH] 5.004_04 and 5.004_57: Complex.pm and complex.t 
-             Date: Thu, 5 Feb 1998 18:08:20 +0200 (EET)
-     Branch: perl
-           ! hints/freebsd.sh lib/Math/Complex.pm t/lib/complex.t
-____________________________________________________________________________
-[   475] By: mbeattie                              on 1998/02/06  16:44:57
-        Log: Subject: [PATCH] nomemok
-             Date: Mon, 2 Feb 1998 15:06:50 +0100
-             From: Gisle Aas 
-     Branch: perl
-           ! hv.c
-____________________________________________________________________________
-[   474] By: mbeattie                              on 1998/02/06  16:43:46
-        Log: Subject: [PATCH] Benchmark.pm: timethese corrupts $_
-             Date: Sun, 1 Feb 1998 06:46:08 -0500 (EST)
-             From: abigail@fnx.com
-     Branch: perl
-           ! lib/Benchmark.pm
-____________________________________________________________________________
-[   473] By: mbeattie                              on 1998/02/06  16:42:53
-        Log: Subject: [PATCH] adding the newSVpvn API function
-             Date: Sat, 31 Jan 1998 06:32:42 +0100
-             From: Matthias Ulrich Neeracher 
-     Branch: perl
-	   ! embed.h embedvar.h global.sym pod/perlguts.pod pod/perltoc.pod
-           ! proto.h sv.c
-____________________________________________________________________________
-[   472] By: mbeattie                              on 1998/02/06  16:35:41
-        Log: Subject: Re: [PATCH] new hints/solaris2.sh (was Re: make check fails 17% of it's tests on Solaris...)
-             Date: 28 Jan 1998 17:40:37 -0800
-             From: Stephen Zander 
-     Branch: perl
-           ! hints/solaris_2.sh
-____________________________________________________________________________
-[   471] By: mbeattie                              on 1998/02/06  16:02:57
-        Log: Subject: [PATCH] Re: 5.004_04 vec() fails with 32-bit values
-             Date: Thu, 15 Jan 1998 11:53:06 +0000
-             From: "M.J.T. Guy" 
-     Branch: perl
-           ! pod/perlguts.pod pp.c t/op/vec.t
-____________________________________________________________________________
-[   470] By: mbeattie                              on 1998/02/06  16:01:36
-        Log: From: Ilya Zakharevich 
-             Subject: 5.004_56: Patch to Tie::Hash and docs
-             Date: Sun, 11 Jan 1998 20:34:05 -0500 (EST)
-             Subject: 5.004_56: Patch to (?{}) quoting + cosmetic
-             Date: Mon, 2 Feb 1998 01:28:46 -0500 (EST)
-     Branch: perl
-	   ! lib/Tie/Hash.pm pod/perlfunc.pod pod/perlre.pod regcomp.c
-           ! t/op/misc.t t/op/pat.t toke.c
-____________________________________________________________________________
-[   469] By: mbeattie                              on 1998/02/06  15:58:31
-        Log: Subject: Another Array.pm patch
-             Date: Wed, 4 Feb 1998 20:37:03 +0000 (GMT)
-             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-     Branch: perl
-           ! lib/Tie/Array.pm
-____________________________________________________________________________
-[   468] By: mbeattie                              on 1998/02/06  15:56:28
-        Log: Subject: documentation patch for 5.004_57
-             Date: Wed, 4 Feb 1998 14:54:13 +0000 (GMT)
-             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-     Branch: perl
-           ! lib/Tie/Array.pm
-____________________________________________________________________________
-[   467] By: mbeattie                              on 1998/02/06  15:55:34
-        Log: Subject: 5.004_56: patch for `use Fatal' again
-             Date: Thu, 29 Jan 1998 17:04:28 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-	   ! MANIFEST pod/perldiag.pod pod/perlfunc.pod pod/perlmodlib.pod
-           ! pp.c t/comp/proto.t toke.c
-____________________________________________________________________________
-[   466] By: mbeattie                              on 1998/02/06  15:53:53
-        Log: Subject: Newer -DLEAKTEST patch
-             Date: Fri, 9 Jan 1998 17:55:09 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-	   ! ext/DB_File/DB_File.xs ext/DynaLoader/dl_next.xs
-	   ! ext/DynaLoader/dl_vms.xs ext/Opcode/Opcode.xs handy.h hv.c
-	   ! perl.c perly.c perly.c.diff perly.fixer pod/perlembed.pod
-	   ! pod/perlguts.pod pod/perlrun.pod pod/perltoc.pod pp_hot.c sv.c
-           ! toke.c util.c vms/perly_c.vms x2p/hash.c
-____________________________________________________________________________
-[   465] By: mbeattie                              on 1998/02/06  15:46:35
-        Log: More Chip patches (tweaked for _5x). The final one mentioned here
-             (@ARGV with -i) actually went in at change 462 but I failed to
-             add it to the change description:
-             Subject: [PATCH] Fix typo: "FORM{,AT}LINE"
-             Date: Sun, 11 Jan 1998 19:37:17 -0500 (EST)
-             Subject: [PATCH] Fix for C<@x = my @y>
-             Date: Sun, 11 Jan 1998 18:12:16 -0500 (EST)
-             Subject: [PATCH] Fix SEGV on C<*glob{SCALAR,ARRAY}>
-             Date: Thu, 5 Feb 1998 21:30:13 -0500 (EST)
-             Subject: [PATCH] Allow last() to mean last
-             Date: Thu, 5 Feb 1998 21:42:57 -0500 (EST)
-             Subject: [PATCH] Consider @ARGV to be plain files if inplace (-i)
-             Date: Wed, 4 Feb 1998 16:04:47 -0500 (EST)
-     Branch: perl
-	   ! op.c perly.c perly.h perly.y sv.c t/op/my.t vms/perly_c.vms
-           ! vms/perly_h.vms
-____________________________________________________________________________
-[   464] By: mbeattie                              on 1998/02/06  15:06:18
-        Log: More Chip patches:
-             Subject: [PATCH] Fix SEGV from combining caller and C
-             Date: Thu, 5 Feb 1998 21:47:50 -0500 (EST)
-             Subject: [PATCH] Fix line numbers after here documents in eval STRING
-             Date: Thu, 5 Feb 1998 21:50:08 -0500 (EST)
-             Subject: [PATCH] Make recursive lexical analysis more robust
-             Date: Thu, 5 Feb 1998 21:57:02 -0500 (EST)
-     Branch: perl
-           ! pp_ctl.c sv.c toke.c
-____________________________________________________________________________
-[   463] By: mbeattie                              on 1998/02/06  15:04:17
-        Log: Some more Chip patches (tweaked to match _5x):
-             Subject: [PATCH] Fix empty BLOCK
-             Date: Wed, 4 Feb 1998 16:52:28 -0500 (EST)
-             Subject: [PATCH] fix (\@@) proto
-             Date: Thu, 5 Feb 1998 10:24:29 -0500 (EST)
-             Subject: [PATCH] Cope with lack of args in Fcntl::AUTOLOAD
-             Date: Thu, 5 Feb 1998 21:26:55 -0500 (EST)
-             Subject: [PATCH] Don't fold string comparison under  C
-             Date: Thu, 5 Feb 1998 21:46:25 -0500 (EST)
-     Branch: perl
-           ! ext/Fcntl/Fcntl.pm op.c t/comp/proto.t toke.c
-____________________________________________________________________________
-[   462] By: mbeattie                              on 1998/02/06  14:56:30
-        Log: Some Chip patches (some tweaked to match _5x source):
-             From: Chip Salzenberg 
-             Subject: [PATCH] local leakage
-             Date: Tue, 3 Feb 1998 09:16:50 -0500 (EST)
-             Subject: [PATCH] NULs in patterns
-             Date: Wed, 4 Feb 1998 01:33:51 -0500 (EST)
-             Subject: [PATCH] Configure on PerlIO
-             Date: Wed, 4 Feb 1998 01:38:43 -0500 (EST)
-             Subject: [PATCH] Avoid core dump on package alias
-             Date: Wed, 4 Feb 1998 15:38:42 -0500 (EST)
-             Subject: [PATCH] Fix name of $Foo::{'Bar::'}
-             Date: Wed, 4 Feb 1998 16:37:51 -0500 (EST)
-     Branch: perl
-	   ! Configure doio.c gv.c op.c pp_ctl.c sv.c t/op/gv.t
-           ! t/op/local.t
-____________________________________________________________________________
-[   461] By: gsar                                  on 1998/02/04  03:34:36
-        Log: support win32_select(0,0,0,msec) (winsock doesn't)
-     Branch: win32/perl
-           ! win32/win32sck.c
-____________________________________________________________________________
-[   460] By: gsar                                  on 1998/02/04  00:44:47
-        Log: bug: win32_select() must StartSockets()
-     Branch: win32/perl
-           ! win32/win32sck.c
-
-----------------
-Version 5.004_57
-----------------
-
-____________________________________________________________________________
-[   459] By: mbeattie                              on 1998/02/03  16:00:07
-        Log: Replaced two occurrences of THREADSV(find_thread_sv(...)) (order
-             of execution causes core dump if threadsvp is moved). Replaced
-             lvalue occurrence of AvARRAY(av) with SvPVX(av) (former does cast).
-     Branch: perl
-           ! av.c perl.c
-____________________________________________________________________________
-[   458] By: mbeattie                              on 1998/02/03  14:40:02
-        Log: Fix up MANIFEST.
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   457] By: mbeattie                              on 1998/02/03  13:50:23
-        Log: Integrate win32 into mainline. My last integration from ansiperl
-             to the mainline was a dismal failure: I did -ay but meant -at.
-             This should fix things now since win32 has already integrated
-             all the necessary changes from ansiperl.
-     Branch: perl
-          !> (integrate 111 files)
-____________________________________________________________________________
-[   456] By: gsar                                  on 1998/02/03  04:48:08
-        Log: Fix minor problems with non USE_THREADS build. win32 branch
-             now looks 5.004_57-ready.
-     Branch: win32/perl
-           ! thread.h win32/makedef.pl
-____________________________________________________________________________
-[   455] By: gsar                                  on 1998/02/03  03:45:09
-        Log: integrate mainline
-     Branch: win32/perl
-          !> (integrate 887 files)
-____________________________________________________________________________
-[   454] By: mbeattie                              on 1998/02/02  16:44:24
-        Log: The new dec_osf.sh didn't work so the new glibpth and useshrplib
-             defaults have been commented out for now. 
-     Branch: perl
-           ! hints/dec_osf.sh
-____________________________________________________________________________
-[   453] By: mbeattie                              on 1998/02/02  15:51:39
-        Log: Introduced thr->threadsvp and THREADSV() for faster per-thread
-             variables. Moved threadnum to a per-interpreter variable and
-             made dTHR and lock/unlock of sv_mutex bypass the get/lock unless
-             more than one thread may be running. Minor tweaks to Thread.xs.
-     Branch: perl
-	   ! dosish.h embedvar.h ext/Thread/Thread.xs interp.sym intrpvar.h
-	   ! op.c perl.c perl.h pp.c pp_ctl.c scope.c sv.c thrdvar.h
-           ! thread.h util.c
-____________________________________________________________________________
-[   452] By: gsar                                  on 1998/02/02  04:56:50
-        Log: remove totally egregious s/\\dir// in File::Find
-     Branch: win32/perl
-           ! lib/File/Find.pm
-____________________________________________________________________________
-[   451] By: gsar                                  on 1998/02/01  22:20:20
-        Log: added AS patch#3
-             Message-Id: <01BD2EF2.53433A40.dougl@ActiveState.com>
-             Date:    Sun, 01 Feb 1998 09:18:13 PST
-             From:    Douglas Lankshear 
-             To:      "'Gurusamy Sarathy'" 
-             
-             Here's an additional diff against //depot/asperl
-             
-             The field name mg_length was changed back to mg_len
-             The function name mg_len was change to mg_length
-             
-             The need for sort_mutex removed thanks to the code derived
-             from Tom Horsley's work.
-             
-             -- Doug
-     Branch: asperl
-           + XSLock.h
-	   ! ObjXSub.h XSUB.h av.c embedvar.h ext/DynaLoader/dlutils.c
-	   ! globals.c ipstdio.h mg.c mg.h objpp.h perl.c perl.h perlio.h
-	   ! perlvars.h perly.c pp.c pp_ctl.c pp_hot.c proto.h regexec.c
-	   ! scope.c scope.h sv.c toke.c universal.c util.c
-	   ! win32/dl_win32.xs win32/iplio.c win32/ipstdio.c
-           ! win32/perlobj.def win32/runperl.c
-____________________________________________________________________________
-[   450] By: gsar                                  on 1998/01/30  23:43:57
-        Log: various tweaks
-             - add new functions to proto.h
-             - fix up makefile.mk for $(OBJECT)
-     Branch: asperl
-           ! pp_ctl.c proto.h win32/makefile.mk
-____________________________________________________________________________
-[   449] By: gsar                                  on 1998/01/30  21:23:15
-        Log: fix up missing patches from AS patch#2
-     Branch: asperl
-	   ! perldir.h perlenv.h perllio.h perlmem.h perlproc.h perlsock.h
-           ! pp_ctl.c proto.h
-____________________________________________________________________________
-[   448] By: gsar                                  on 1998/01/30  18:23:17
-        Log: fix htonlx typo
-     Branch: win32/perl
-           ! perlsock.h
-____________________________________________________________________________
-[   447] By: mbeattie                              on 1998/01/30  16:03:49
-        Log: Fix up MANIFEST to add missing files
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   446] By: mbeattie                              on 1998/01/30  12:34:55
-        Log: Bump patchlevel to 57.
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   445] By: gsar                                  on 1998/01/30  10:44:38
-        Log: initial merge of latest win32 branch into ASPerl
-     Branch: asperl
-	  +> lib/Tie/Array.pm pod/perlhist.pod t/lib/tie-push.t
-	  +> t/lib/tie-stdarray.t t/lib/tie-stdpush.t t/op/tiearray.t
-          +> win32/bin/perlglob.pl
-          !> (integrate 141 files)
-____________________________________________________________________________
-[   444] By: gsar                                  on 1998/01/30  09:25:58
-        Log: goofed branching, redo asperl branch
-     Branch: asperl
-           ! perl.h
-____________________________________________________________________________
-[   443] By: gsar                                  on 1998/01/30  09:23:36
-        Log: added AS patch#2
-     Branch: asperl
-	   + ObjXSub.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h ipsock.h
-	   + ipstdio.h objpp.h win32/ipdir.c win32/ipenv.c win32/iplio.c
-	   + win32/ipmem.c win32/ipproc.c win32/ipsock.c win32/ipstdio.c
-           + win32/ipstdiowin.h win32/perlobj.def
-	   ! EXTERN.h XSUB.h cv.h doio.c dosish.h dump.c embedvar.h
-	   ! globals.c gv.c hv.c intrpvar.h malloc.c mg.c mg.h op.c op.h
-	   ! opcode.h perl.c perl.h perldir.h perlenv.h perlio.h perllio.h
-	   ! perlmem.h perlproc.h perlsock.h perlvars.h perly.c pp.c pp.h
-	   ! pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regcomp.h
-	   ! regexec.c run.c scope.c scope.h sv.c sv.h thread.h toke.c
-	   ! universal.c util.c vms/vms.c win32/Makefile win32/config_H.bc
-	   ! win32/config_H.vc win32/dl_win32.xs win32/include/sys/socket.h
-           ! win32/makedef.pl win32/runperl.c win32/win32iop.h
-____________________________________________________________________________
-[   441] By: gsar                                  on 1998/01/30  08:54:19
-        Log: Created new branch from win32@396, added AS patch#1
-     Branch: asperl
-	   + doio.c malloc.c perl.c perl.h perldir.h perlenv.h perllio.h
-	   + perlmem.h perlproc.h perlsock.h pp.c pp_hot.c pp_sys.c
-           + regcomp.c scope.h sv.c toke.c util.c
-          +> (branch 915 files)
-____________________________________________________________________________
-[   440] By: gsar                                  on 1998/01/30  04:43:23
-        Log: integrate winansi
-     Branch: win32/perl
-          +> pod/perlhist.pod
-	  !> MANIFEST av.c hv.c op.c perlsock.h pp_ctl.c pp_sys.c scope.c
-          !> util.c
-____________________________________________________________________________
-[   439] By: mbeattie                              on 1998/01/27  15:31:53
-        Log: Integrate ansi branch into mainline (resolve -ay).
-     Branch: perl
-	  +> lib/Tie/Array.pm perldir.h perlenv.h perllio.h perlmem.h
-	  +> perlproc.h perlsock.h pod/perlhist.pod t/lib/tie-push.t
-	  +> t/lib/tie-stdarray.t t/lib/tie-stdpush.t t/op/tiearray.t
-          +> win32/bin/perlglob.pl
-           ! op.c
-          !> (integrate 868 files)
-____________________________________________________________________________
-[   438] By: nick                                  on 1998/01/24  12:02:34
-        Log: Gisle's av_unshift tweak, two small patches from chip
-             and check for NULL in hv_delete in case '~' and tie magic
-             are present
-     Branch: ansiperl
-           ! av.c hv.c op.c pp_ctl.c scope.c
-____________________________________________________________________________
-[   437] By: nick                                  on 1998/01/24  10:37:56
-        Log: Get PerlXxx_yyyy() macro stuff to _compile_ on Solaris.                   
-             Ugh! ...
-             Macros were unsuitable for declaring the functions, extra () round
-             parameters removed - non-function forms of PerlXxx_yyyy() need to 
-             add () themselves.
-             Need to include perlmem.h in util.c (at least) if not using Perl's malloc.
-     Branch: ansiperl
-           ! perlsock.h pp_sys.c util.c
-____________________________________________________________________________
-[   436] By: nick                                  on 1998/01/24  10:03:03
-        Log: Integrate win32 into ansiperl
-     Branch: ansiperl
-	  +> perldir.h perlenv.h perllio.h perlmem.h perlproc.h perlsock.h
-          +> win32/bin/perlglob.pl
-          !> (integrate 38 files)
-____________________________________________________________________________
-[   435] By: nick                                  on 1998/01/24  09:47:49
-        Log: Add perlhist.pod
-     Branch: ansiperl
-           + pod/perlhist.pod
-           ! MANIFEST
-____________________________________________________________________________
-[   434] By: gsar                                  on 1998/01/19  05:01:47
-        Log: s/PerlENV/PerlEnv/ just to be consistent
-     Branch: win32/perl
-           ! malloc.c perl.c perlenv.h regcomp.c toke.c util.c
-____________________________________________________________________________
-[   433] By: gsar                                  on 1998/01/19  04:52:18
-        Log: foo() -> PerlGroup_foo() patch from ActiveState
-     Branch: win32/perl
-           + perldir.h perlenv.h perllio.h perlmem.h perlproc.h perlsock.h
-	   ! doio.c malloc.c perl.c perl.h pp.c pp_hot.c pp_sys.c regcomp.c
-           ! scope.h sv.c toke.c util.c
-____________________________________________________________________________
-[   432] By: gsar                                  on 1998/01/19  04:42:26
-        Log: integrate mainline
-     Branch: win32/perl
-          !> pod/perlfunc.pod
-____________________________________________________________________________
-[   431] By: gsar                                  on 1998/01/19  04:40:04
-        Log: integrate changes in winansi
-     Branch: win32/perl
-	  +> lib/Tie/Array.pm t/lib/tie-push.t t/lib/tie-stdarray.t
-          +> t/lib/tie-stdpush.t t/op/tiearray.t
-          !> (integrate 98 files)
-____________________________________________________________________________
-[   430] By: gsar                                  on 1998/01/19  04:10:43
-        Log: Fix autovivification problems with XSUB OUTPUT args
-             Message-Id: <199801190409.XAA26710@aatma.engin.umich.edu>
-             Date:    Sun, 18 Jan 1998 23:09:07 EST
-             From:    Gurusamy Sarathy 
-             Subject: [PATCH] XSUB OUTPUT arguments and 'set' magic
-     Branch: win32/perl
-	   ! ext/GDBM_File/typemap ext/NDBM_File/typemap
-	   ! ext/ODBM_File/typemap ext/SDBM_File/typemap
-	   ! lib/ExtUtils/typemap os2/OS2/PrfDB/typemap pod/perlguts.pod
-           ! pod/perlxs.pod pod/perlxstut.pod sv.c sv.h win32/win32.h
-____________________________________________________________________________
-[   429] By: nick                                  on 1998/01/17  21:01:50
-        Log: Subject: [PATCH] 5.004_56 threaded and "CONFIG key 'exe_ext' does not exist in Config.pm"
-             Date: Thu, 25 Dec 1997 13:39:15 -0500
-             From: Spider Boardman 
-             To: perl5-porters@perl.org
-             
-             It turns out that the potential for the "CONFIG key 'exe_ext'
-             does not exist in Config.pm" problem has been around for a while,
-             in the definition of SvTRUE().  It's just that non-gcc compilers
-             are more or less being built as CRIPPLED_CC when USE_THREADS is
-             defined (even if they can inline things).  The inline macro for
-             SvTRUE works with tied hashes and the EXISTS method, and the
-             functional version (sv_true in 5.004_56, or SvTRUE in 5.004_04)
-             does not, because it adds an excess mg_get() which replaces the
-             EXISTS result with a FETCH result.
-     Branch: ansiperl
-           ! sv.c
-____________________________________________________________________________
-[   428] By: nick                                  on 1998/01/17  20:59:11
-        Log: From: Robin Barker 
-             Date: Fri, 19 Dec 97 17:19:09 GMT
-             Message-Id: <26260.9712191719@lightning.cise.npl.co.uk>
-     Branch: ansiperl
-           ! doio.c sv.c toke.c util.c
-____________________________________________________________________________
-[   427] By: nick                                  on 1998/01/17  12:01:53
-        Log: Permit tie ?foo,$object 
-             tidy up dead #ifdef ORIGINAL_TIE)
-             Remove 'P' magic from hash, before adding new one in dbm_open like tie does.
-     Branch: ansiperl
-           ! pp_sys.c
-____________________________________________________________________________
-[   426] By: nick                                  on 1998/01/15  18:06:36
-        Log: First working TIEARRAY and other misc tie fixes
-     Branch: ansiperl
-           ! MANIFEST pp.c pp_hot.c t/op/tiearray.t
-____________________________________________________________________________
-[   425] By: nick                                  on 1998/01/14  21:56:40
-        Log: Not working yet - split problems ...
-     Branch: ansiperl
-           ! pp.c t/lib/thread.t t/op/tiearray.t
-____________________________________________________________________________
-[   424] By: nick                                  on 1998/01/14  18:49:25
-        Log: TIEARRAY updates - almost works ...
-     Branch: ansiperl
-           + t/lib/tie-push.t t/lib/tie-stdarray.t t/lib/tie-stdpush.t
-	   ! MANIFEST av.c av.h ext/DB_File/DB_File.pm lib/Tie/Array.pm
-	   ! mg.c pod/perltie.pod pp.c pp_hot.c pp_sys.c scope.c
-           ! t/op/avhv.t t/op/push.t t/op/tiearray.t
-____________________________________________________________________________
-[   423] By: gsar                                  on 1998/01/14  00:13:16
-        Log: fix MakeMaker installbin problem
-             Message-Id: <199801070016.TAA17766@aatma.engin.umich.edu>
-             Subject: Re: can't modify message with HTML-Stream, v.1.42 
-             Date: Tue, 06 Jan 1998 19:16:35 -0500
-             From: Gurusamy Sarathy 
-     Branch: win32/perl
-           ! lib/ExtUtils/MM_Unix.pm
-____________________________________________________________________________
-[   422] By: gsar                                  on 1998/01/13  23:53:02
-        Log: add archname to *sitearch in config.{b,g,v}c
-     Branch: win32/perl
-           ! win32/config.bc win32/config.gc win32/config.vc
-____________________________________________________________________________
-[   421] By: gsar                                  on 1998/01/13  23:15:14
-        Log: set $ENV{PERL5LIB} in t/harness (so child perlglob.bat sees it)
-     Branch: win32/perl
-           ! t/harness
-____________________________________________________________________________
-[   420] By: nick                                  on 1998/01/13  22:55:02
-        Log: tiearray tweaks
-     Branch: ansiperl
-           ! av.c pp_sys.c t/op/nothread.t t/op/tiearray.t
-____________________________________________________________________________
-[   419] By: nick                                  on 1998/01/13  21:27:33
-        Log: Skeleton Tie::Array
-     Branch: ansiperl
-           + lib/Tie/Array.pm
-____________________________________________________________________________
-[   418] By: nick                                  on 1998/01/13  20:52:38
-        Log: tie array changes to core and tests
-     Branch: ansiperl
-           + t/op/tiearray.t
-	   ! MANIFEST av.c av.h deb.c embed.h ext/DB_File/DB_File.pm
-	   ! global.sym gv.c mg.c op.c perl.c perl.h pp.c pp.h pp_ctl.c
-           ! pp_hot.c proto.h sv.c toke.c universal.c util.c
-____________________________________________________________________________
-[   417] By: gsar                                  on 1998/01/13  20:49:52
-        Log: fix perlglob.bat warnings by splitting it from File::DosGlob
-     Branch: win32/perl
-           + win32/bin/perlglob.pl
-	   ! MANIFEST README.win32 lib/File/DosGlob.pm win32/Makefile
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   416] By: gsar                                  on 1998/01/13  02:46:53
-        Log: various tweaks to build support (NOTE: meant for 5.004_57)
-             - build and install x2p
-             - fix installperl warnings on win32
-             - `make install` now does puts the archlibs in right places
-             - makefiles don't default to USE_THREADS anymore
-             - sync config.{b,g,v}c
-             - sync makefile.mk -> Makefile
-     Branch: win32/perl
-	   ! installperl win32/Makefile win32/config.bc win32/config.gc
-	   ! win32/config.vc win32/config_sh.PL win32/makefile.mk x2p/a2p.h
-           ! x2p/a2py.c
-____________________________________________________________________________
-[   415] By: nick                                  on 1998/01/11  16:54:26
-        Log: Integrate win32 into ansiperl
-     Branch: ansiperl
-	  !> Configure hints/dec_osf.sh hv.c lib/Getopt/Long.pm lib/blib.pm
-	  !> lib/newgetopt.pl perl.h perl_exp.SH pp_ctl.c pp_hot.c pp_sys.c
-	  !> proto.h regcomp.h regexec.c t/op/re_tests t/pragma/locale.t
-	  !> utils/perldoc.PL vms/config.vms vms/descrip.mms
-	  !> vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms vms/vms.c
-          !> vms/vmsish.h x2p/s2p.PL
-____________________________________________________________________________
-[   414] By: nick                                  on 1998/01/11  15:13:49
-        Log: Integratye mainline -> ansiperl
-     Branch: ansiperl
-          !> (integrate 64 files)
-____________________________________________________________________________
-[   413] By: mbeattie                              on 1998/01/09  12:57:58
-        Log: Add missing blank line in pod/perlfunc.pod.
-     Branch: perl
-           ! pod/perlfunc.pod
-____________________________________________________________________________
-[   412] By: gsar                                  on 1998/01/08  20:54:31
-        Log: change#398 breaks ENV_IS_CASELESS, fix it
-     Branch: win32/perl
-           ! hv.c
-____________________________________________________________________________
-[   411] By: gsar                                  on 1998/01/08  18:33:58
-        Log: Integrate mainline
-     Branch: win32/perl
-	  !> Configure hints/dec_osf.sh hv.c lib/Getopt/Long.pm lib/blib.pm
-	  !> lib/newgetopt.pl perl.h perl_exp.SH pp_ctl.c pp_hot.c pp_sys.c
-	  !> proto.h regcomp.h regexec.c t/op/re_tests t/pragma/locale.t
-	  !> utils/perldoc.PL vms/config.vms vms/descrip.mms
-	  !> vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms vms/vms.c
-          !> vms/vmsish.h x2p/s2p.PL
-____________________________________________________________________________
-[   410] By: mbeattie                              on 1998/01/08  16:06:22
-        Log: Fix thinko in t/pragma/locale.t:
-             Subject: [PATCH] _04 or _56: locale.t
-             Date: Sun, 4 Jan 1998 23:48:44 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! t/pragma/locale.t
-____________________________________________________________________________
-[   409] By: mbeattie                              on 1998/01/08  16:05:09
-        Log: Use Tom Horley's qsort for sorting:
-             Subject: Re: [PATCH for 5.004_56] Re: op/sort.t hangs under Solaris 2.5
-             Date: Fri, 02 Jan 1998 19:33:24 -0500 (EST)
-             From: Hans Mulder 
-     Branch: perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   408] By: mbeattie                              on 1998/01/08  16:01:57
-        Log: Make s2p not use cpp:
-             Subject: [PATCH for 5.004_56] s2p shouldn't use cpp
-             Date: Mon, 29 Dec 1997 19:38:18 -0500 (EST)
-             From: Hans Mulder 
-     Branch: perl
-           ! x2p/s2p.PL
-____________________________________________________________________________
-[   407] By: mbeattie                              on 1998/01/08  15:57:31
-        Log: DG/UX tweaks to perl.h:
-             Subject: [PATCH] _56 on dgux without threads
-             Date: Sat, 20 Dec 1997 23:01:40 -0500
-             From: Roderick Schertler 
-     Branch: perl
-           ! perl.h
-____________________________________________________________________________
-[   406] By: mbeattie                              on 1998/01/08  15:56:02
-        Log: Configure and hints/dec_osf.sh changes for Digital UNIX:
-             Subject: [PATCH] perl5.004_56 NOT OK on alpha-dec_osf-thread (Digital UNIX X5.0-13)
-             Date: Sat, 20 Dec 1997 02:30:01 -0500
-             From: Spider Boardman 
-     Branch: perl
-           ! Configure hints/dec_osf.sh
-____________________________________________________________________________
-[   405] By: mbeattie                              on 1998/01/08  15:53:40
-        Log: Missing "" in Configure echo for gethbadd_addr_type.
-     Branch: perl
-           ! Configure
-____________________________________________________________________________
-[   404] By: mbeattie                              on 1998/01/08  13:04:48
-        Log: print/printf/... over-eager mg_find for glob magic:
-             Subject: [PATCH] fix inefficient checks for TIEHANDLE
-             Date: Wed, 07 Jan 1998 20:06:05 -0500
-             From: Gurusamy Sarathy 
-     Branch: perl
-           ! pp_hot.c pp_sys.c
-____________________________________________________________________________
-[   403] By: mbeattie                              on 1998/01/08  12:56:31
-        Log: Assorted VMS patches (mostly VMS makefile update for new headers):
-             Subject: [PATCH] VMS update for 5.004_56
-             Date: Sat, 03 Jan 1998 03:54:29 -0500 (EST)
-             From: Charles Bailey 
-     Branch: perl
-	   ! lib/blib.pm proto.h regcomp.h vms/config.vms vms/descrip.mms
-	   ! vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms vms/vms.c
-           ! vms/vmsish.h
-____________________________________________________________________________
-[   402] By: mbeattie                              on 1998/01/08  12:46:15
-        Log: Fix utils/perldoc.PL for dos-djgpp:
-             Subject: 5.004_56: perldoc.PL dos-djgpp patches
-             Date: Tue, 6 Jan 1998 18:14:59 +0100
-             From: Molnar Laszlo 
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   401] By: mbeattie                              on 1998/01/08  12:40:14
-        Log: Version 2.13 of GetoptLong:
-             Subject: Re: ANNOUNCE: perl 5.004_56 is available
-             Date: 06 Jan 1998 16:21:45 +0100
-             From: JVromans@Squirrel.nl (Johan Vromans)
-     Branch: perl
-           ! lib/Getopt/Long.pm lib/newgetopt.pl
-____________________________________________________________________________
-[   400] By: mbeattie                              on 1998/01/08  12:28:08
-        Log: Fix variable export and threading configuration for AIX:
-             Subject: [PATCH] 5.004_56: AIX 4.1.5.0: sans et avec threads
-             Date: Tue, 23 Dec 1997 15:39:12 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! Configure perl_exp.SH
-____________________________________________________________________________
-[   399] By: mbeattie                              on 1998/01/08  12:25:38
-        Log: Regexp fix: (?>a+)b  doesn't match  aaab:
-             Subject: Re: Regexp [PATCH] 5.004_56 (?>...)
-             Date: Fri, 19 Dec 1997 16:02:50 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! regexec.c t/op/re_tests
-____________________________________________________________________________
-[   398] By: mbeattie                              on 1998/01/08  12:23:41
-        Log: Fix hv_delete for 'm'-magic. Based on following patch, modified
-             to cope with ENV_IS_CASELESS:
-             Subject: [perl5.004_56] [PATCH] hv_delete and 'm' magic
-             Date: Fri, 19 Dec 1997 11:31:36 -0500
-             From: Owen Taylor 
-     Branch: perl
-           ! hv.c
-____________________________________________________________________________
-[   397] By: mbeattie                              on 1998/01/08  12:10:29
-        Log: Integrate win32 branch into mainline.
-     Branch: perl
-          !> (integrate 41 files)
-____________________________________________________________________________
-[   396] By: gsar                                  on 1998/01/07  19:12:27
-        Log: tweak case-insensitive ENV implementation
-     Branch: win32/perl
-           ! hv.c
-____________________________________________________________________________
-[   395] By: nick                                  on 1998/01/07  18:40:55
-        Log: Integrate win32 branch
-     Branch: ansiperl
-          !> (integrate 31 files)
-____________________________________________________________________________
-[   394] By: gsar                                  on 1998/01/05  19:17:40
-        Log: Allow $ENV{PERL5SHELL} to contain switches etc., and document
-             the fact
-     Branch: win32/perl
-           ! pod/perlrun.pod win32/win32.c
-____________________________________________________________________________
-[   393] By: gsar                                  on 1998/01/05  05:43:33
-        Log: Support case-tolerant %ENV
-             - underlying system calls see the case-as-supplied by user
-             - added tests to verify addition/deletion/enumeration case-tolerance
-             - hv.c touched, but changes are fully conditional on -DENV_IS_CASELESS,
-             which is default on win32 now
-     Branch: win32/perl
-           ! hv.c t/op/magic.t win32/win32.h
-____________________________________________________________________________
-[   392] By: gsar                                  on 1998/01/04  17:55:19
-        Log: Add a tweaked version of:
-             Message-Id: <199801040630.AA29298@metronet.com>
-             Date:    Sun, 04 Jan 1998 00:30:57 CST
-             From:    Tye McQueen 
-             Subject: New patch for $^E==GetLastError() under Win32
-     Branch: win32/perl
-	   ! doio.c lib/dumpvar.pl lib/perl5db.pl mg.c perl.h
-	   ! pod/perlfunc.pod pod/perlvar.pod util.c win32/makedef.pl
-           ! win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   391] By: gsar                                  on 1998/01/04  07:59:44
-        Log: Various win32 fixes
-             - support spawn via system(&P_NOWAIT,...) like OS2
-             - support wait() and waitpid()
-             - s/GetCurrentDirectory/GetCwd/, long-named XS to be removed
-             - support -lfoo properly in ExtUtils::Liblist
-             - fix outdated info about Win32 support in perlfaq2
-             - fix win32 bug in perldoc that causes spurious warnings
-             - regularize global function/variable names yet more
-             - fix bug in do_aspawn() (it was always invoking shell, instead of
-             almost never)
-             - implement and export win32_wait()
-             - stub version of USE_RTL_THREAD_API
-     Branch: win32/perl
-	   ! README.win32 dosish.h lib/Cwd.pm lib/ExtUtils/Liblist.pm
-	   ! pod/perlfaq2.pod pp_sys.c util.c utils/perldoc.PL
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-	   ! win32/config_h.PL win32/perllib.c win32/win32.c win32/win32.h
-	   ! win32/win32iop.h win32/win32sck.c win32/win32thread.c
-           ! win32/win32thread.h
-____________________________________________________________________________
-[   390] By: gsar                                  on 1997/12/30  21:00:28
-        Log: Fix $ENV{Path} in FindBin.pm
-     Branch: win32/perl
-           ! lib/FindBin.pm
-____________________________________________________________________________
-[   389] By: nick                                  on 1997/12/29  10:33:23
-        Log: Resolve ansiperl against win32
-     Branch: ansiperl
-          !> (integrate 105 files)
-____________________________________________________________________________
-[   388] By: gsar                                  on 1997/12/24  04:59:28
-        Log: make $? Unix (and ActiveWare) compatible
-     Branch: win32/perl
-           ! README.win32 win32/win32.c
-____________________________________________________________________________
-[   387] By: gsar                                  on 1997/12/24  04:21:30
-        Log: support ioctl() on sockets (does what ioctlsocket() does) to make
-             non-blocking IO on sockets possible
-     Branch: win32/perl
-	   ! README.win32 dosish.h win32/makedef.pl win32/win32.c
-           ! win32/win32iop.h win32/win32sck.c
-____________________________________________________________________________
-[   386] By: gsar                                  on 1997/12/24  03:10:55
-        Log: support getlogin()
-     Branch: win32/perl
-	   ! README.win32 win32/config.bc win32/config.gc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
-           ! win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   385] By: gsar                                  on 1997/12/24  02:24:59
-        Log: add support for crypt() via user-supplied des_fcrypt() source or library.
-             Update README.win32.
-     Branch: win32/perl
-	   ! README.win32 perl.h win32/Makefile win32/makedef.pl
-	   ! win32/makefile.mk win32/win32.c win32/win32.h win32/win32iop.h
-____________________________________________________________________________
-[   384] By: gsar                                  on 1997/12/24  02:22:42
-        Log: tweak op.c to avoid warning
-     Branch: win32/perl
-           ! op.c
-____________________________________________________________________________
-[   383] By: gsar                                  on 1997/12/23  21:12:42
-        Log: Trivial bugfix#3 from local repository
-             Message-Id: <199712061100.GAA14864@aatma.engin.umich.edu>
-             Subject: Re: Assigning result of pop scrambles unrelated reference 
-             Date: Sat, 06 Dec 1997 06:00:45 -0500
-             From: Gurusamy Sarathy 
-     Branch: win32/perl
-           ! sv.c
-____________________________________________________________________________
-[   382] By: gsar                                  on 1997/12/23  21:09:32
-        Log: Trivial bugfix#2 from local repository
-             Message-Id: <199712061025.FAA14396@aatma.engin.umich.edu>
-             Subject: Re: eval of sub gives spurious "uninitialised" warning 
-             Date: Sat, 06 Dec 1997 05:25:07 -0500
-             From: Gurusamy Sarathy 
-     Branch: win32/perl
-           ! op.c pod/perldelta.pod pod/perlfunc.pod t/op/eval.t
-____________________________________________________________________________
-[   381] By: gsar                                  on 1997/12/23  21:01:04
-        Log: Trivial bugfix#1 from local repository
-             Message-Id: <199711282326.SAA15090@aatma.engin.umich.edu>
-             Subject: [PATCH] Re: [5.004_04 BUG] bless broke scoping? 
-             Date: Fri, 28 Nov 1997 18:26:52 -0500
-             From: Gurusamy Sarathy 
-     Branch: win32/perl
-           ! scope.c
-____________________________________________________________________________
-[   380] By: gsar                                  on 1997/12/18  15:10:23
-        Log: Integrate mainline
-     Branch: win32/perl
-	  +> README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c
-	  +> djgpp/djgppsed.sh djgpp/fixpmain hints/dos_djgpp.sh
-          +> os2/os2.sym os2/os2thread.h
-          !> (integrate 77 files)
-
-----------------
-Version 5.004_56
-----------------
-
-____________________________________________________________________________
-[   379] By: mbeattie                              on 1997/12/18  13:28:35
-        Log: Integrate ansi @364,@366 into mainline.
-     Branch: perl
-          !> lib/ExtUtils/MakeMaker.pm miniperlmain.c perl.h
-____________________________________________________________________________
-[   378] By: mbeattie                              on 1997/12/18  13:20:15
-        Log: Add a few missing files to MANIFEST
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   377] By: mbeattie                              on 1997/12/18  13:00:16
-        Log: Bump patchlevel to 56.
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   376] By: nick                                  on 1997/12/18  01:32:12
-        Log: Resolve against mainline
-     Branch: ansiperl
-	  +> README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c
-	  +> djgpp/djgppsed.sh djgpp/fixpmain hints/dos_djgpp.sh
-          +> os2/os2.sym os2/os2thread.h
-          !> (integrate 74 files)
-____________________________________________________________________________
-[   375] By: nick                                  on 1997/12/18  01:06:15
-        Log: Resolve against Win32
-     Branch: ansiperl
-	  !> Configure README.threads config_h.SH doop.c embed.h
-	  !> ext/DynaLoader/dl_aix.xs global.sym hints/aix.sh
-	  !> hints/irix_6.sh op.c op.h perl.h perlvars.h pp_hot.c pp_sys.c
-          !> sv.c sv.h thread.h util.c
-____________________________________________________________________________
-[   374] By: mbeattie                              on 1997/12/17  14:44:26
-        Log: Lots of VMS changes. vms/gen_shrfls.pl (which parses header files)
-             needs rewriting now that we use perlvars.h and foovar.h:
-             Subject: [PATCH] 5.004_54 under VMS (fwd)
-             Date: Wed, 26 Nov 1997 12:32:09 -0400 (EDT)
-             From: Charles Bailey 
-     Branch: perl
-	   ! dosish.h handy.h intrpvar.h os2/os2ish.h perl.c perl.h
-	   ! plan9/plan9ish.h pp.c proto.h sv.c t/lib/thread.t
-	   ! t/lib/timelocal.t t/op/nothread.t taint.c thrdvar.h toke.c
-	   ! unixish.h vms/config.vms vms/descrip.mms vms/fndvers.com
-	   ! vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms
-           ! vms/test.com vms/vms.c vms/vms_yfix.pl vms/vmsish.h
-____________________________________________________________________________
-[   373] By: mbeattie                              on 1997/12/17  14:10:50
-        Log: Major changes to the DOS/djgpp port (including threading):
-             Subject: Re: dos-djgpp port not in perl 5.004_54
-             Date: Fri, 21 Nov 1997 10:58:26 +0100
-             From: Molnar Laszlo 
-     Branch: perl
-	   + README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c
-           + djgpp/djgppsed.sh djgpp/fixpmain hints/dos_djgpp.sh
-	   ! Configure MANIFEST Makefile.SH doio.c dosish.h
-	   ! ext/POSIX/POSIX.xs installhtml installperl lib/AutoSplit.pm
-	   ! lib/Cwd.pm lib/ExtUtils/Install.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/ExtUtils/Manifest.pm lib/File/Basename.pm lib/File/Find.pm
-	   ! lib/File/Path.pm lib/FindBin.pm lib/Pod/Html.pm
-	   ! lib/Pod/Text.pm lib/Term/Cap.pm lib/perl5db.pl makedepend.SH
-	   ! mg.c perl.c pod/pod2man.PL pp_hot.c t/io/fs.t t/lib/anydbm.t
-	   ! t/lib/filehand.t t/lib/gdbm.t t/lib/io_sel.t t/lib/io_tell.t
-	   ! t/lib/sdbm.t t/lib/thread.t t/op/magic.t t/op/stat.t
-           ! t/op/sysio.t t/op/taint.t utils/perldoc.PL
-____________________________________________________________________________
-[   372] By: mbeattie                              on 1997/12/17  13:18:34
-        Log: Upgrade DB_File to 1.56:
-             Subject: DB_File-1.56 for _55
-             Date: Tue, 16 Dec 1997 22:25:29 +0000 (GMT)
-             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-     Branch: perl
-	   ! Configure ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
-           ! ext/DB_File/Makefile.PL ext/DB_File/typemap t/lib/db-btree.t
-____________________________________________________________________________
-[   371] By: mbeattie                              on 1997/12/17  12:02:03
-        Log: Threading patches for OS/2 (missing files taken from previous patch):
-             Subject: Re: 5.004_55: OS/2 patches again
-             Date: Sat, 13 Dec 1997 18:09:15 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           + os2/os2.sym os2/os2thread.h
-	   ! MANIFEST hints/os2.sh os2/Changes os2/Makefile.SHs
-	   ! os2/OS2/PrfDB/PrfDB.xs os2/OS2/REXX/REXX.xs os2/os2.c
-           ! os2/os2ish.h perl.h
-____________________________________________________________________________
-[   370] By: mbeattie                              on 1997/12/17  11:01:34
-        Log: Add OS2 to list for DONT_DECLARE_STD in perl.h:
-             Subject: Re: 5.004_55: OS/2 patches again
-             Date: Sat, 13 Dec 1997 18:05:55 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! perl.h
-____________________________________________________________________________
-[   369] By: mbeattie                              on 1997/12/17  10:59:40
-        Log: Fix typo in compiler B/C.pm.
-     Branch: perlext
-           ! Compiler/B/C.pm
-____________________________________________________________________________
-[   368] By: mbeattie                              on 1997/12/17  10:58:35
-        Log: Allow "perldoc -F filename":
-             Subject: 5.004_55: Patch to perldoc
-             Date: Thu, 11 Dec 1997 19:37:00 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! utils/perldoc.PL
-____________________________________________________________________________
-[   367] By: mbeattie                              on 1997/12/17  10:54:47
-        Log: Fix not-reached warning for pp_threadsv.
-     Branch: perl
-           ! pp.c
-____________________________________________________________________________
-[   366] By: nick                                  on 1997/12/14  16:06:24
-        Log: Fix typo in Ilya's patch :-(
-     Branch: ansiperl
-           ! lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[   365] By: nick                                  on 1997/12/14  15:30:25
-        Log: #undef new PERLVARIC macro in appropriate places
-     Branch: ansiperl
-           ! miniperlmain.c perl.h
-____________________________________________________________________________
-[   364] By: nick                                  on 1997/12/14  15:04:36
-        Log: Ilya's MakeMaker (empty makefile) patch
-     Branch: ansiperl
-           ! lib/ExtUtils/MakeMaker.pm
-____________________________________________________________________________
-[   363] By: gsar                                  on 1997/12/13  05:57:13
-        Log: Integrate mainline.  Builds and passes (Borland).
-     Branch: win32/perl
-	  !> Configure README.threads config_h.SH doop.c embed.h
-	  !> ext/DynaLoader/dl_aix.xs global.sym hints/aix.sh
-	  !> hints/irix_6.sh op.c op.h perl.h perlvars.h pp_hot.c pp_sys.c
-          !> sv.c sv.h thread.h util.c
-____________________________________________________________________________
-[   362] By: nick                                  on 1997/12/13  02:53:03
-        Log: Resolve ansiperl against mainline
-     Branch: ansiperl
-          !> (integrate 92 files)
-____________________________________________________________________________
-[   361] By: mbeattie                              on 1997/12/12  16:20:38
-        Log: pp_print and pp_prtf handling of tied file handles used EXTEND
-             instead of MEXTEND leading to core dumps. This fix needs
-             propagating back to the maintenance branch.
-     Branch: perl
-           ! pp_hot.c pp_sys.c
-____________________________________________________________________________
-[   360] By: mbeattie                              on 1997/12/11  15:45:56
-        Log: Add missing patch to op.c that didn't come across with win32 merge.
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[   359] By: mbeattie                              on 1997/12/11  11:54:41
-        Log: Stop tr/// from writing to target when only counting.
-     Branch: perl
-           ! doop.c op.c op.h
-____________________________________________________________________________
-[   358] By: mbeattie                              on 1997/12/10  18:36:26
-        Log: Fix char*/unsigned char* clashes in util.c:fbm_instr and remove
-             a few extraneous trailing semicolons in perlvars.h.
-     Branch: perl
-           ! perlvars.h util.c
-____________________________________________________________________________
-[   357] By: mbeattie                              on 1997/12/10  18:33:53
-        Log: Start overhauling compiler. It was working at least minimally
-             right up until the final tweak of B.xs to add threadsv_names
-             at which point building it provokes a seg fault in perl while
-             doing the xsubpp :-(.
-     Branch: perl
-           ! op.h util.c
-     Branch: perlext
-	   ! Compiler/B.pm Compiler/B.xs Compiler/B/Asmdata.pm
-	   ! Compiler/B/C.pm Compiler/B/CC.pm Compiler/Makefile.PL
-	   ! Compiler/bytecode.pl Compiler/byteperl.c Compiler/byterun.c
-	   ! Compiler/byterun.h Compiler/cc_harness Compiler/cc_runtime.h
-	   ! Compiler/ccop.c Compiler/ccop.h Compiler/test_harness
-           ! Compiler/test_harness_cc
-____________________________________________________________________________
-[   356] By: mbeattie                              on 1997/12/10  13:43:32
-        Log: Fix perl_os_thread typedef for pthreads. Tweak SvTAINT so that
-             sv_setfoo functions go back to not needing dTHR. Fix Configure
-             to check for already-existing -thread on archname and to check
-             better for d_pthread_created_joinable.
-     Branch: perl
-           ! Configure perl.h sv.c sv.h thread.h
-____________________________________________________________________________
-[   355] By: mbeattie                              on 1997/12/10  10:53:58
-        Log: Minor fix/speedup to util.c:fbm_instr:
-             Subject: 5.004_55: Minor regexp patch
-             Date: Fri, 5 Dec 1997 05:09:54 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! util.c
-____________________________________________________________________________
-[   354] By: mbeattie                              on 1997/12/10  10:41:25
-        Log: Patches for IRIX, AIX and some generic stuff:
-             Subject: [PATCH] _55: Mostly AIX stuff but also IRIX and generic
-             Date: Sat, 29 Nov 1997 08:35:30 -0800 (PST)
-             From: Jarkko Hietaniemi 
-             (checked/ignored a few rejects; tweaked wording).
-     Branch: perl
-	   ! Configure README.threads config_h.SH embed.h
-	   ! ext/DynaLoader/dl_aix.xs global.sym hints/aix.sh
-           ! hints/irix_6.sh
-____________________________________________________________________________
-[   353] By: mbeattie                              on 1997/12/10  10:10:19
-        Log: Integrate win32 back into mainline (trivial).
-     Branch: perl
-	  +> embedvar.h intrpvar.h perlvars.h thrdvar.h win32/config.gc
-          +> win32/config_H.gc
-          !> (integrate 36 files)
-____________________________________________________________________________
-[   352] By: nick                                  on 1997/12/09  17:36:45
-        Log: Resolve win32 - Sarathy's tweak.
-     Branch: ansiperl
-          !> win32/makedef.pl
-____________________________________________________________________________
-[   351] By: gsar                                  on 1997/12/08  06:13:04
-        Log: re-add PERLVARI?C? change that somehow went missing in makedef.pl
-     Branch: win32/perl
-           ! win32/makedef.pl
-____________________________________________________________________________
-[   350] By: nick                                  on 1997/12/05  00:56:03
-        Log: Resolve ansiperl against win32
-     Branch: ansiperl
-           - win32/makegcc.mk
-	  !> embed.h embed.pl embedvar.h global.sym miniperlmain.c perl.h
-	  !> perlvars.h win32/Makefile win32/config.gc win32/makedef.pl
-          !> win32/makefile.mk win32/perllib.c win32/win32.h
-____________________________________________________________________________
-[   349] By: gsar                                  on 1997/12/02  07:28:23
-        Log: Revert to keeping (some) constant strings as globals
-     Branch: win32/perl
-	   ! embed.h embed.pl embedvar.h global.sym miniperlmain.c perl.h
-           ! perlvars.h win32/makedef.pl win32/perllib.c
-____________________________________________________________________________
-[   348] By: gsar                                  on 1997/12/02  05:38:06
-        Log: makegcc.mk merged into makefile.mk, so makegcc.mk is gone.
-             Other minor fixes.  Now is a good time to get the changes in win32 branch.
-     Branch: win32/perl
-           - win32/makegcc.mk
-	   ! win32/Makefile win32/config.gc win32/makefile.mk win32/win32.h
-____________________________________________________________________________
-[   347] By: gsar                                  on 1997/12/02  03:32:55
-        Log: Integrate winansi again.  Result builds and passes all tests on all
-             three compilers.
-     Branch: win32/perl
-	  !> lib/ExtUtils/MM_Win32.pm win32/config.gc win32/makefile.mk
-          !> win32/makegcc.mk win32/win32.h
-____________________________________________________________________________
-[   346] By: gsar                                  on 1997/12/02  03:28:23
-        Log: various hacks to get mingw32 to build.  Sync Makefile with makefile.mk.
-             makegcc.mk to be merged into makefile.mk soon.
-     Branch: win32/perl
-	   ! lib/ExtUtils/MM_Win32.pm win32/Makefile win32/config.gc
-	   ! win32/makedef.pl win32/makefile.mk win32/makegcc.mk
-           ! win32/win32.h
-____________________________________________________________________________
-[   345] By: nick                                  on 1997/12/02  01:57:17
-        Log: Add a 4th step (yes FOUR) to dll build process for gcc.
-             Now runs again...
-     Branch: ansiperl
-           ! lib/ExtUtils/MM_Win32.pm
-____________________________________________________________________________
-[   344] By: nick                                  on 1997/12/02  01:11:16
-        Log: Sarathy's patch 
-     Branch: ansiperl
-	   ! lib/ExtUtils/MM_Win32.pm win32/config.gc win32/makefile.mk
-           ! win32/makegcc.mk win32/win32.h
-____________________________________________________________________________
-[   343] By: gsar                                  on 1997/12/01  04:37:06
-        Log: Reverse integrate to get all of Nick's changes over at winansi (win32/perl/*
-             is identical to ansiperl/* now)
-     Branch: win32/perl
-          +> embedvar.h intrpvar.h perlvars.h thrdvar.h
-          !> (integrate 34 files)
-____________________________________________________________________________
-[   342] By: nick                                  on 1997/12/01  04:01:57
-        Log: Builds and passes all tests with gcc on Win32 - phew!
-     Branch: ansiperl
-	   ! embed.h embedvar.h ext/Opcode/Opcode.xs global.sym perl.h
-           ! proto.h util.c win32/makedef.pl
-____________________________________________________________________________
-[   341] By: nick                                  on 1997/12/01  02:54:29
-        Log: Create a struct for all perls globals (as an option)
-             Mainly for Mingw32 which cannot import data.
-             Now only Opcode tests fail (op_desc/op_name not 
-             handled yet stuff)
-     Branch: ansiperl
-	   ! EXTERN.h embed.h embed.pl embedvar.h ext/Thread/Thread.xs
-	   ! global.sym miniperlmain.c perl.c perl.h perlvars.h pp_hot.c
-	   ! proto.h run.c util.c win32/Makefile win32/makedef.pl
-	   ! win32/makegcc.mk win32/perllib.c win32/win32.c win32/win32.h
-           ! win32/win32iop.h win32/win32thread.c
-____________________________________________________________________________
-[   340] By: nick                                  on 1997/11/30  20:21:10
-        Log: Fixup exports in non -DDEBUGGING case
-     Branch: ansiperl
-           ! win32/makedef.pl
-____________________________________________________________________________
-[   339] By: nick                                  on 1997/11/30  20:10:04
-        Log: Disable hard-coded -DDEBUGGING
-     Branch: ansiperl
-           ! win32/config_h.PL
-____________________________________________________________________________
-[   338] By: nick                                  on 1997/11/30  20:00:19
-        Log: embed.pl now reads *var*.h to do its stuff.
-             Split generated embed.h into two - new embedvar.h
-             is #included when 'op' etc. will not mess up proto.h etc.
-             Removed #define foo (thr->Tfoo) from thread.h
-             Added some 'missing' symbols to global.sym, removed
-             those in the *var*.h files
-             Has build all MULTIPLICITY/USE_THREADS options on win32
-             with VC++ (and passed tests), but not with exactly this set
-             of files.
-     Branch: ansiperl
-           + embedvar.h
-	   ! embed.h embed.pl global.sym interp.sym intrpvar.h perl.h
-	   ! perlvars.h regcomp.c thrdvar.h thread.h win32/Makefile
-           ! win32/makedef.pl
-____________________________________________________________________________
-[   337] By: nick                                  on 1997/11/29  23:55:31
-        Log: Globals and structs via macros - part 1 of N
-             - introduce perlvars.h intrpvar.h and thrdvar.h
-             - change perl.h and thread.h to include them with
-             appropriate macros defined
-             - result is status-quo but with macros
-             - next step is to tweak embed.* to capitalize on 
-             new easy-to-find info.
-     Branch: ansiperl
-           + intrpvar.h perlvars.h thrdvar.h
-           ! perl.h thread.h win32/Makefile
-____________________________________________________________________________
-[   336] By: nick                                  on 1997/11/29  19:13:55
-        Log: VC++ default to threaded
-     Branch: ansiperl
-           ! win32/Makefile
-____________________________________________________________________________
-[   335] By: nick                                  on 1997/11/29  18:38:26
-        Log: Avoid __declspec(thread) by default, for both scratch
-             return areas and THR stuff. Use struct thread intern instead.
-     Branch: ansiperl
-	   ! win32/win32.c win32/win32.h win32/win32sck.c
-           ! win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   334] By: nick                                  on 1997/11/29  17:49:04
-        Log: Non-threaded build fix
-     Branch: ansiperl
-           ! win32/win32thread.c
-____________________________________________________________________________
-[   333] By: nick                                  on 1997/11/29  17:29:07
-        Log: Sort out malloc_mutex for perl's malloc
-             Remove BINCOMPAT3 from embed.pl 
-             Add dependancy to CORE_H for PERL95_OBJ
-     Branch: ansiperl
-	   ! dosish.h embed.h embed.pl global.sym perl.h win32/Makefile
-           ! win32/win32.c
-____________________________________________________________________________
-[   332] By: nick                                  on 1997/11/29  16:21:01
-        Log: Integrate win32 into ansiperl
-     Branch: ansiperl
-	  !> README.threads hints/irix_6.sh lib/Test/Harness.pm
-	  !> lib/perl5db.pl malloc.c miniperlmain.c perl.h sv.c t/TEST
-	  !> t/lib/anydbm.t t/lib/db-btree.t t/lib/db-hash.t
-	  !> t/lib/db-recno.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t
-	  !> t/lib/safe2.t t/lib/sdbm.t t/op/pat.t t/op/taint.t
-          !> win32/perllib.c
-____________________________________________________________________________
-[   331] By: nick                                  on 1997/11/29  01:35:45
-        Log: GCC + Threads on Win32 - best gcc results yet
-     Branch: ansiperl
-	   ! XSUB.h perl.h thread.h win32/makedef.pl win32/makegcc.mk
-	   ! win32/win32.h win32/win32iop.h win32/win32thread.c
-           ! win32/win32thread.h
-____________________________________________________________________________
-[   330] By: nick                                  on 1997/11/28  23:05:08
-        Log: Un-botch gcc workround
-     Branch: ansiperl
-           ! XSUB.h
-____________________________________________________________________________
-[   329] By: nick                                  on 1997/11/28  22:39:39
-        Log: Builds completely with Mingw32, dynamic loaded extensions
-             don't work yet - suspect __declspec() non-implemented issues.
-     Branch: ansiperl
-	   ! XSUB.h lib/ExtUtils/Command.pm lib/ExtUtils/MM_Win32.pm
-	   ! lib/ExtUtils/Mksymlists.pm win32/config.gc win32/makegcc.mk
-           ! win32/runperl.c win32/win32.c win32/win32iop.h
-____________________________________________________________________________
-[   328] By: gsar                                  on 1997/11/28  05:48:15
-        Log: integrate winansi.
-     Branch: win32/perl
-          +> win32/config.gc win32/config_H.gc win32/makegcc.mk
-           ! perl.h
-	  !> dosish.h hv.c win32/dl_win32.xs win32/include/sys/socket.h
-	  !> win32/makedef.pl win32/makefile.mk win32/runperl.c
-          !> win32/win32.c win32/win32.h win32/win32iop.h win32/win32sck.c
-____________________________________________________________________________
-[   327] By: gsar                                  on 1997/11/28  05:38:48
-        Log: Integrate mainline.
-     Branch: win32/perl
-	  !> README.threads hints/irix_6.sh lib/Test/Harness.pm
-	  !> lib/perl5db.pl malloc.c miniperlmain.c sv.c t/TEST
-	  !> t/lib/anydbm.t t/lib/db-btree.t t/lib/db-hash.t
-	  !> t/lib/db-recno.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t
-	  !> t/lib/safe2.t t/lib/sdbm.t t/op/pat.t t/op/taint.t
-          !> win32/perllib.c
-____________________________________________________________________________
-[   326] By: nick                                  on 1997/11/27  19:13:36
-        Log: GCC builds perl.dll and perl.exe on Win32
-     Branch: ansiperl
-           ! win32/makedef.pl win32/makegcc.mk
-____________________________________________________________________________
-[   325] By: nick                                  on 1997/11/27  17:46:30
-        Log: Add files and tweak others to get 'native' Mingw32 gcc port as
-             far as building miniperl and perl.dll (but not import lib yet)
-             Seems to lack popen()/pclose() and fcloseall() and fflushall().
-             Also only CRTDLL not MCRTDLL so threading is probably not
-             possible yet.
-             Had to mess with win32iop.h's placement as we need __attribute__
-             to get STDCALL, and #define of printf messes up proto.h 
-     Branch: ansiperl
-           + win32/config.gc win32/config_H.gc win32/makegcc.mk
-	   ! dosish.h perl.h win32/dl_win32.xs win32/include/sys/socket.h
-	   ! win32/makefile.mk win32/runperl.c win32/win32.c win32/win32.h
-           ! win32/win32iop.h win32/win32sck.c
-____________________________________________________________________________
-[   324] By: mbeattie                              on 1997/11/27  17:08:06
-        Log: Give dire warnings about the IRIX 6.2 kernel panic.
-     Branch: perl
-           ! README.threads hints/irix_6.sh
-____________________________________________________________________________
-[   323] By: mbeattie                              on 1997/11/27  16:57:33
-        Log: Fix prototypes of sv_vsetpvfn and sv_vcatpvfn:
-             Subject: Re: ANNOUNCE: perl 5.004_55 is available
-             Date: 27 Nov 1997 17:18:53 +0100
-             From: koenig@kulturbox.de (Andreas J. Koenig)
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[   322] By: mbeattie                              on 1997/11/27  16:12:15
-        Log: Integrate win32 branch back into mainline.
-     Branch: perl
-          !> (integrate 42 files)
-____________________________________________________________________________
-[   321] By: mbeattie                              on 1997/11/27  15:06:36
-        Log: Fix t/lib/safe2.t for SunOS 4.1.3:
-             Subject: Re: ANNOUNCE: perl 5.004_55 is available
-             Date: Thu, 27 Nov 1997 10:46:42 +0000 (GMT)
-             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-     Branch: perl
-           ! t/lib/safe2.t
-____________________________________________________________________________
-[   320] By: mbeattie                              on 1997/11/27  15:02:59
-        Log: Fix MYMALLOC (wrong #define in malloc.c):
-             Subject: 5.004_55: MYMALLOC completely busted
-             Date: Thu, 27 Nov 1997 01:08:16 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! malloc.c
-____________________________________________________________________________
-[   319] By: mbeattie                              on 1997/11/27  15:01:37
-        Log: Fix newSVrv so sv_setref_foo work better:
-             Subject: [PATCH] [5.004_55] newSVrv (again)
-             Date: Thu, 27 Nov 1997 00:25:50 -0500
-             From: Owen Taylor 
-     Branch: perl
-           ! sv.c
-____________________________________________________________________________
-[   318] By: mbeattie                              on 1997/11/27  14:59:03
-        Log: Output skipped test information in test suite:
-             Subject: 5.004_55: Making test harness platform_aware
-             Date: Wed, 26 Nov 1997 17:16:55 -0500 (EST)
-             Date: Wed, 26 Nov 1997 17:16:55 -0500 (EST)
-     Branch: perl
-	   ! lib/Test/Harness.pm t/TEST t/lib/anydbm.t t/lib/db-btree.t
-	   ! t/lib/db-hash.t t/lib/db-recno.t t/lib/gdbm.t t/lib/ndbm.t
-           ! t/lib/odbm.t t/lib/sdbm.t t/op/taint.t
-____________________________________________________________________________
-[   317] By: mbeattie                              on 1997/11/27  14:55:15
-        Log: Add 'W'atch command to debugger and improve help:
-             Subject: 5.004_55: Debugger patch again
-             Date: Wed, 26 Nov 1997 17:05:57 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! lib/perl5db.pl
-____________________________________________________________________________
-[   316] By: mbeattie                              on 1997/11/27  14:52:44
-        Log: Stop double initialisation of malloc_mutex:
-             Subject: 5.004_55: Double initialiazation of malloc_mutex
-             Date: Wed, 26 Nov 1997 16:51:43 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           ! miniperlmain.c win32/perllib.c
-____________________________________________________________________________
-[   315] By: mbeattie                              on 1997/11/27  14:48:58
-        Log: Fix PVLV case in sv_setsv (plus tests in op/pat.t).
-     Branch: perl
-           ! sv.c t/op/pat.t
-____________________________________________________________________________
-[   314] By: nick                                  on 1997/11/27  01:03:19
-        Log: Merge win32 and ansiperl branches post _55 tweaks from Sarathy.
-     Branch: ansiperl
-          !> (integrate 897 files)
-____________________________________________________________________________
-[   313] By: gsar                                  on 1997/11/26  03:20:55
-        Log: merge win32-aware installperl in ansiperl branch.
-     Branch: win32/perl
-          !> installperl
-____________________________________________________________________________
-[   312] By: gsar                                  on 1997/11/26  01:50:37
-        Log: Fix for C bug:
-             From: Gurusamy Sarathy 
-             Message-Id: <199711011946.OAA18882@aatma.engin.umich.edu>
-             Subject: [PATCH] Re: Sort grammar bug 
-             Date: Sat, 01 Nov 1997 14:46:35 -0500
-             ------
-             From: Hugo van der Sanden 
-             Message-Id: <199711021247.MAA01743@crypt.compulink.co.uk>
-             Subject: Re: Sort grammar bug 
-             Date: Sun, 02 Nov 1997 12:47:51 +0000
-     Branch: win32/perl
-           ! t/op/sort.t toke.c
-____________________________________________________________________________
-[   311] By: nick                                  on 1997/11/26  01:42:50
-        Log: Win32-ize installperl
-     Branch: ansiperl
-           ! installperl
-____________________________________________________________________________
-[   310] By: gsar                                  on 1997/11/26  01:36:39
-        Log: Another trivial patch:
-             From: Gurusamy Sarathy 
-             Message-Id: <199710300245.VAA04244@aatma.engin.umich.edu>
-             Subject: [PATCH] Re: Why doesn't XSRETURN have STMT_START/STMT_END brackets? 
-             Date: Wed, 29 Oct 1997 21:45:26 -0500
-     Branch: win32/perl
-           ! XSUB.h
-____________________________________________________________________________
-[   309] By: nick                                  on 1997/11/26  01:33:32
-        Log: Fixup _55 for Win32:
-             Missed thread :-> perl_thread changes
-             Two #define THR (not the same)
-             K&R style func in hv.c
-     Branch: ansiperl
-           ! hv.c win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   308] By: gsar                                  on 1997/11/26  01:30:21
-        Log: Sync yet another patch (this one manually edited):
-             From: Gurusamy Sarathy 
-             Message-Id: <199710290251.VAA14362@aatma.engin.umich.edu>
-             Subject: [PATCH] Re: local($@) gives core dump 
-             Date: Tue, 28 Oct 1997 21:51:25 -0500
-     Branch: win32/perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[   307] By: gsar                                  on 1997/11/26  01:22:10
-        Log: Sync another change from local repository.
-             From: Gurusamy Sarathy 
-             Message-Id: <199710290316.WAA15888@aatma.engin.umich.edu>
-             Subject: Re: do_postponed breaks with multiple interpreters 
-             Date: Tue, 28 Oct 1997 22:16:13 -0500
-     Branch: win32/perl
-           ! op.c
-____________________________________________________________________________
-[   306] By: gsar                                  on 1997/11/26  01:17:46
-        Log: Sync a change from local repository.
-             From: Gurusamy Sarathy 
-             Message-Id: <199710290106.UAA11485@aatma.engin.umich.edu>
-             Subject: [PATCH] Re: Core dump from using sockets w/ system or open(pipe) or "`"
-             Date: Tue, 28 Oct 1997 20:06:06 -0500
-     Branch: win32/perl
-           ! mg.c
-____________________________________________________________________________
-[   305] By: nick                                  on 1997/11/26  00:50:10
-        Log: Integrate mainline as of _55
-     Branch: ansiperl
-          +> emacs/ptags
-          !> (integrate 36 files)
-____________________________________________________________________________
-[   304] By: gsar                                  on 1997/11/26  00:27:57
-        Log: Various changes to make it build cleanly and pass all tests:
-             - needed to run `perl embed.pl`
-             - use PERL_CORE instead of PERLDLL in places that do mean PERL_CORE
-             - fix prototypes for a few declarations (Borland is finally quiet)
-             - move declaration of Mymalloc etc to perl.h (since win32 and other
-             ports may #define malloc themselves, to let extensions bind to
-             the version that perl used)
-             - move struct reg_data into a public header file, since it is
-             referenced in a public datatype
-             - win32 makefile fixes
-             - fix remaining s/thread/perl_thread/
-     Branch: win32/perl
-	   ! EXTERN.h embed.h ext/DynaLoader/dlutils.c
-	   ! ext/SDBM_File/sdbm/sdbm.h hv.c perl.h proto.h regcomp.h
-	   ! regexp.h win32/Makefile win32/dl_win32.xs win32/makefile.mk
-           ! win32/win32.h win32/win32iop.h win32/win32thread.c
-____________________________________________________________________________
-[   303] By: gsar                                  on 1997/11/25  20:57:31
-        Log: Fixup the places where the automatic merge got it wrong.
-             Previous change (#302) was just a normal integration--ignore the
-             "reverse" in there.
-     Branch: win32/perl
-           ! op.c perl.h
-____________________________________________________________________________
-[   302] By: gsar                                  on 1997/11/25  20:32:12
-        Log: reverse integrate mainline
-     Branch: win32/perl
-          +> emacs/ptags
-          !> (integrate 896 files)
-
-----------------
-Version 5.004_55
-----------------
-
-____________________________________________________________________________
-[   301] By: mbeattie                              on 1997/11/25  17:59:53
-        Log: Fix minor thinkos in hv.c and pp_ctl.c. This is 5.004_55.
-     Branch: perl
-           ! hv.c pp_ctl.c
-____________________________________________________________________________
-[   300] By: mbeattie                              on 1997/11/25  16:29:36
-        Log: Add t/avhv.t to MANIFEST and bump patchlevel.h to 55.
-     Branch: perl
-           ! MANIFEST patchlevel.h
-____________________________________________________________________________
-[   299] By: mbeattie                              on 1997/11/25  15:59:16
-        Log: Move malloc_mutex initialisation/destruction:
-             Subject:  patch to 5.004_54 for pthreads with Perl's malloc
-             From: ilya@math.ohio-state.edu (Ilya Zakharevich)
-     Branch: perl
-	   ! malloc.c os2/os2.c os2/os2ish.h perl.c perl.h plan9/plan9ish.h
-           ! unixish.h vms/vmsish.h
-____________________________________________________________________________
-[   298] By: mbeattie                              on 1997/11/25  15:49:22
-        Log: Make hv_ functions cope better with 'm'-magic:
-             Subject: [5.004_54] Another neglected patch
-             Date: Fri, 21 Nov 1997 22:28:17 -0500
-             From: Owen Taylor 
-     Branch: perl
-           ! hv.c
-____________________________________________________________________________
-[   297] By: mbeattie                              on 1997/11/25  15:47:36
-        Log: Fix typo in Thread.xs.
-     Branch: perl
-           ! ext/Thread/Thread.xs
-____________________________________________________________________________
-[   296] By: mbeattie                              on 1997/11/25  15:42:07
-        Log: Integrate from ansi branch to mainline.
-     Branch: perl
-          !> (integrate 890 files)
-____________________________________________________________________________
-[   295] By: mbeattie                              on 1997/11/25  14:29:31
-        Log: AIX patch for DynaLoader/dl_aix.xs and hints/aix.sh:
-             Subject: Re: _54 on AIX
-             Date: Tue, 25 Nov 1997 00:49:52 -0800 (PST)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! ext/DynaLoader/dl_aix.xs
-____________________________________________________________________________
-[   294] By: mbeattie                              on 1997/11/25  14:29:10
-        Log: AIX patch for hints/aix.sh:
-             Subject: Re: _54 on AIX
-             Date: Tue, 25 Nov 1997 00:49:52 -0800 (PST)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! hints/aix.sh
-____________________________________________________________________________
-[   291] By: mbeattie                              on 1997/11/25  14:17:05
-        Log: Fix scalar dereference of threadsv variables (e.g. $$_).
-     Branch: perl
-           ! op.c op.h
-____________________________________________________________________________
-[   290] By: mbeattie                              on 1997/11/25  14:16:29
-        Log: AIX patch (including Configure support for {sched,pthread}_yield,
-             pthread initial detach state, renaming perl_thread to perl_os_thread
-             and struct thread to struct perl_thread):
-             Subject: Re: _54 on AIX
-             Date: Thu, 20 Nov 1997 06:10:51 -0800 (PST)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-	   ! Configure config_h.SH cv.h ext/DB_File/DB_File.xs
-	   ! ext/Thread/Makefile.PL ext/Thread/Thread.pm
-	   ! ext/Thread/Thread.xs fakethr.h hints/aix.sh perl.c perl.h pp.h
-	   ! proto.h sv.h thread.h util.c win32/win32thread.c
-           ! win32/win32thread.h
-____________________________________________________________________________
-[   289] By: mbeattie                              on 1997/11/25  12:33:02
-        Log: Rename perl_thread to perl_os_thread.
-     Branch: perl
-           ! fakethr.h thread.h util.c win32/win32thread.h
-____________________________________________________________________________
-[   288] By: mbeattie                              on 1997/11/25  12:27:35
-        Log: Remove bincompat3 support:
-             Subject: Re: ANNOUNCE: perl5.004_54 is available
-             Date: Wed, 19 Nov 1997 08:07:10 -0800 (PST)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! Configure INSTALL embed.h global.sym malloc.c
-____________________________________________________________________________
-[   287] By: mbeattie                              on 1997/11/25  12:23:50
-        Log: Emacs/tags update:
-             Subject: Emacs/tags update for 5.004_54
-             Date: Fri, 21 Nov 1997 15:02:09 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-           + emacs/ptags
-           ! MANIFEST Makefile.SH emacs/cperl-mode.el
-____________________________________________________________________________
-[   286] By: nick                                  on 1997/11/23  23:03:56
-        Log: Add $$_ test 
-     Branch: ansiperl
-           ! t/op/ref.t
-____________________________________________________________________________
-[   285] By: gsar                                  on 1997/11/23  08:26:00
-        Log: Initial reverse integration of winansi branch.
-     Branch: win32/perl
-          !> (integrate 50 files)
-____________________________________________________________________________
-[   284] By: gsar                                  on 1997/11/23  07:32:24
-        Log: Add to docs about the BEGIN { shift } feature.  Make the change
-             yet simpler using CvUNIQUE(compcv) instead of subline (Chip's idea).
-     Branch: win32/perl
-           ! op.c perly.c perly.y pod/perlfunc.pod vms/perly_c.vms
-____________________________________________________________________________
-[   283] By: nick                                  on 1997/11/22  21:29:30
-        Log: Duplicate perl_threadsv
-     Branch: ansiperl
-           ! global.sym
-____________________________________________________________________________
-[   282] By: nick                                  on 1997/11/22  21:18:11
-        Log: Munge pseudo-Configure stuff to add -thread to archname as
-             Malcolm seems to think that is way to test for threads.
-             Update @INC stuffing hackery to have traditional @INC
-             search order archlib, privlib, sitearch, site.
-     Branch: ansiperl
-	   ! t/lib/english.t win32/config.bc win32/config_H.bc
-	   ! win32/config_H.vc win32/config_h.PL win32/config_sh.PL
-           ! win32/makefile.mk win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   281] By: nick                                  on 1997/11/22  19:28:21
-        Log: Builds and passes all but english.t on win32 VC++
-     Branch: ansiperl
-	   ! global.sym pp_ctl.c win32/Makefile win32/config.vc
-           ! win32/config_H.vc win32/win32thread.h
-____________________________________________________________________________
-[   280] By: nick                                  on 1997/11/22  18:10:50
-        Log: ansiperl builds with Borland C++ again
-     Branch: ansiperl
-	   ! pp_ctl.c regcomp.c regcomp.h regexec.c toke.c util.c
-	   ! win32/config.bc win32/config_H.bc win32/perlglob.c
-           ! win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   279] By: nick                                  on 1997/11/22  16:42:51
-        Log: Resolve ansiperl against mainline
-     Branch: ansiperl
-	  !> embed.h ext/Thread/Thread.xs global.sym op.c op.h perl.c
-	  !> perl.h pp.c pp_ctl.c pp_hot.c proto.h scope.c scope.h
-          !> t/lib/english.t thread.h toke.c util.c
-____________________________________________________________________________
-[   278] By: nick                                  on 1997/11/22  16:30:27
-        Log: Resolve ansiperl against win32
-     Branch: ansiperl
-          !> (integrate 55 files)
-____________________________________________________________________________
-[   277] By: gsar                                  on 1997/11/22  09:48:02
-        Log: - shift() inside BEGIN|END|INIT now shifts @ARGV instead of @_
-             - added a test for the above
-             - fixed up perly.c.diff and vms/perl_c.vms for above and added the
-             ansification hunks
-     Branch: win32/perl
-           ! op.c perly.c perly.c.diff perly.y t/op/misc.t vms/perly_c.vms
-____________________________________________________________________________
-[   276] By: gsar                                  on 1997/11/22  07:24:01
-        Log: Generic change in win32 branch: don't just turn on CRIPPLED_CC
-             when USE_THREADS.  GCC for instance, can do without macros that use
-             globals.  Instead, selectively re#define only those macros
-             that use globals to their functional equivalents.  Tests 100% on
-             Solaris/gcc (after `chmod +x t/op/nothread.t t/lib/thread.t` (hint,hint)).
-     Branch: win32/perl
-           ! perl.h sv.h
-____________________________________________________________________________
-[   275] By: gsar                                  on 1997/11/22  05:27:04
-        Log: Integrate mainline.
-     Branch: win32/perl
-          +> ext/Thread/die.t ext/Thread/die2.t t/op/avhv.t
-           - lib/Class/Fields.pm lib/ISA.pm
-          !> (integrate 41 files)
-____________________________________________________________________________
-[   274] By: mbeattie                              on 1997/11/21  18:28:22
-        Log: $_ is now per-thread (rather a lot of changes). Only tested under
-             *-linux-thread at the moment.
-     Branch: perl
-	   ! embed.h ext/Thread/Thread.xs global.sym op.c op.h perl.c
-	   ! perl.h pp.c pp_ctl.c pp_hot.c proto.h scope.c scope.h
-           ! t/lib/english.t thread.h toke.c util.c
-____________________________________________________________________________
-[   273] By: mbeattie                              on 1997/11/21  10:31:29
-        Log: Filter patch to toke.c:
-             Subject: Tiny core patch for source filters
-             Date: Thu, 20 Nov 1997 23:12:09 +0000 (GMT)
-             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
-     Branch: perl
-           ! toke.c
-____________________________________________________________________________
-[   272] By: nick                                  on 1997/11/21  00:54:43
-        Log: Basic integrate of lastest perl into ansiperl
-     Branch: ansiperl
-          +> ext/Thread/die.t ext/Thread/die2.t t/op/avhv.t
-           - lib/Class/Fields.pm lib/ISA.pm
-           ! win32/win32.c win32/win32.h
-          !> (integrate 57 files)
-____________________________________________________________________________
-[   271] By: mbeattie                              on 1997/11/20  12:12:00
-        Log: Initial stab at IRIX configuration support for threading. Manually
-             applied parts of following patches:
-             Subject: Perl 5.004_54 on IRIX
-             Date: Wed, 19 Nov 1997 18:37:14 +0200 (EET)
-             From: Jarkko Hietaniemi 
-             Subject: Re: Perl 5.004_54 on IRIX
-             Date: 19 Nov 1997 17:10:17 -0800
-             From: Scott Henry 
-     Branch: perl
-	   ! README.threads hints/irix_6.sh hints/irix_6_0.sh
-           ! hints/irix_6_1.sh perl.h
-____________________________________________________________________________
-[   270] By: mbeattie                              on 1997/11/19  17:45:37
-        Log: The new jumbo regexp stuff did SSPUSHINT on a char* instead of
-             SSPUSHPTR causing Alpha to core dump in pat.t. While fixing it,
-             also fixed two instances of referring to SVs after destruction.
-     Branch: perl
-           ! regcomp.c regexec.c
-____________________________________________________________________________
-[   269] By: mbeattie                              on 1997/11/19  15:33:23
-        Log: avhv_keys under Digital UNIX made avhv.t fail because *keysp was
-             changed by mg_get(*keysp) (!). Introducing a new local variable
-             fixed it but I don't know if it's a compiler problem or some
-             other corruption happening elsewhere.
-     Branch: perl
-           ! av.c
-____________________________________________________________________________
-[   268] By: mbeattie                              on 1997/11/19  11:39:49
-        Log: Let Configure sort out get{host,net}byaddr* prototypes:
-             Subject: [PATCH] 5.004_54: little something for
-             get{hos,ne}tbyaddr protos (Configure, config_h.SH, pp_sys.c)
-             Date: Tue, 18 Nov 1997 19:08:19 +0200 (EET)
-             From: Jarkko Hietaniemi 
-     Branch: perl
-           ! Configure config_h.SH pp_sys.c
-____________________________________________________________________________
-[   267] By: mbeattie                              on 1997/11/19  11:04:15
-        Log: Jumbo regexp patch applied (with minor fix-up tweaks):
-             Subject: Version 7 of Jumbo RE patch available
-             Date: Sun, 16 Nov 1997 00:29:39 -0500 (EST)
-             From: Ilya Zakharevich 
-     Branch: perl
-	   ! MANIFEST dump.c embed.h global.sym mg.c op.c op.h perl.c
-	   ! perl.h pod/perlre.pod pp.c pp_ctl.c pp_hot.c proto.h regcomp.c
-	   ! regcomp.h regexec.c regexp.h sv.c t/op/misc.t t/op/pat.t
-	   ! t/op/re_tests t/op/regexp.t t/op/split.t t/op/subst.t toke.c
-           ! util.c
-____________________________________________________________________________
-[   266] By: mbeattie                              on 1997/11/18  17:26:09
-        Log: Separate avhv_foo() key handling into avhv_keys(). Slightly tweaked
-             version of patch:
-             Subject: tie fake hash patch for 5.004_54
-             Date: Sat, 15 Nov 1997 19:18:30 -0500
-             From: Joshua Pritikin 
-     Branch: perl
-           + t/op/avhv.t
-           ! av.c embed.h global.sym proto.h
-____________________________________________________________________________
-[   265] By: mbeattie                              on 1997/11/18  16:51:04
-        Log: Bring MANIFEST up to date. Add new thread tests.
-     Branch: perl
-           + ext/Thread/die.t ext/Thread/die2.t
-           ! MANIFEST
-____________________________________________________________________________
-[   264] By: mbeattie                              on 1997/11/18  16:41:27
-        Log: magic_setisa enhanced to update %FIELDS automatically when @ISA
-             is assigned to. Added tests to t/op/array.t. magic_setisa now
-             warns about including non-existent packages in @ISA when -w is on.
-     Branch: perl
-           - lib/Class/Fields.pm lib/ISA.pm
-           ! mg.c t/op/array.t
-____________________________________________________________________________
-[   263] By: mbeattie                              on 1997/11/18  16:38:57
-        Log: Fix typo in win32 -> mainline integration.
-     Branch: perl
-           ! perl.h
-____________________________________________________________________________
-[   262] By: mbeattie                              on 1997/11/18  11:56:09
-        Log: Integrate win32 branch back into mainline.
-     Branch: perl
-           - win32/win32io.c win32/win32io.h
-           ! op.c
-          !> (integrate 30 files)
-____________________________________________________________________________
-[   261] By: gsar                                  on 1997/11/18  00:14:02
-        Log: Export our own FD_SET() et al to complete sockets-as-handles pretense.
-     Branch: win32/perl
-	   ! win32/config.bc win32/config.vc win32/config_H.bc
-           ! win32/config_H.vc win32/include/sys/socket.h win32/win32sck.c
-____________________________________________________________________________
-[   260] By: nick                                  on 1997/11/16  23:16:16
-        Log: Generic file changes for MYMALLOC
-     Branch: ansiperl
-           ! miniperlmain.c perl.c
-____________________________________________________________________________
-[   259] By: nick                                  on 1997/11/16  23:14:36
-        Log: MYMALLOC for Win32:
-             1. Initialize malloc_mutex before it is used (all platforms!)
-             2. Adjust #ifdef muddle to allow MYMALLOC and win32_ to coexist
-             3. Tweak win32/config*.* to define MYMALLOC
-             4. Provide sbrk() in terms of VirtualAlloc().
-             
-             Also fixup -MT (perl95) build to handle Perl_current_thread
-             via call to DLL (as though an extension).
-     Branch: ansiperl
-	   ! win32/Makefile win32/config.bc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.vc win32/makedef.pl
-	   ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h
-           ! win32/win32iop.h win32/win32thread.h
-____________________________________________________________________________
-[   258] By: nick                                  on 1997/11/15  20:42:28
-        Log: Implement dTHR via __declspec(thread) - part 2
-     Branch: ansiperl
-           ! win32/makedef.pl win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   257] By: nick                                  on 1997/11/15  19:52:53
-        Log: Use __declspec(thread) var rather tha TslAlloc & co.
-     Branch: ansiperl
-           ! win32/makedef.pl win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   256] By: gsar                                  on 1997/11/15  02:58:09
-        Log: Add #include guard in Thread.xs so it will build even under
-             no USE_THREADS (for win32).  This was missed because of edit
-             w/o checkout perforce kludge.
-     Branch: win32/perl
-           ! ext/Thread/Thread.xs
-____________________________________________________________________________
-[   255] By: nick                                  on 1997/11/15  00:33:46
-        Log: Integrate mainline (5.004_54?) into ansiperl
-     Branch: ansiperl
-	  !> MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
-	  !> ext/Thread/Thread/Specific.pm ext/Thread/join.t
-	  !> ext/Thread/specific.t global.sym lib/fields.pm mg.c op.c
-	  !> perl.c perl.h pp_ctl.c pp_hot.c pp_sys.c proto.h scope.c
-          !> t/io/pipe.t t/lib/io_pipe.t t/op/magic.t thread.h
-____________________________________________________________________________
-[   254] By: nick                                  on 1997/11/15  00:25:26
-        Log: Interate win32 into ansiperl
-     Branch: ansiperl
-	  +> ext/Thread/Thread/Specific.pm ext/Thread/specific.t
-          +> lib/fields.pm
-	  !> MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
-	  !> ext/Thread/join.t global.sym mg.c op.c perl.c perl.h pp_ctl.c
-	  !> pp_hot.c pp_sys.c proto.h scope.c t/io/pipe.t t/lib/io_pipe.t
-	  !> t/op/magic.t thread.h win32/Makefile win32/config.bc
-          !> win32/config.vc win32/config_sh.PL win32/makefile.mk
-____________________________________________________________________________
-[   253] By: gsar                                  on 1997/11/14  22:04:58
-        Log: Integrate mainline changes into win32 branch.  Now would be a good time
-             to reverse integrate the win32 branch into mainline.
-     Branch: win32/perl
-	  +> ext/Thread/Thread/Specific.pm ext/Thread/specific.t
-          +> lib/fields.pm
-	  !> MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
-	  !> ext/Thread/join.t global.sym mg.c op.c perl.c perl.h pp_ctl.c
-	  !> pp_hot.c pp_sys.c proto.h scope.c t/io/pipe.t t/lib/io_pipe.t
-          !> t/op/magic.t thread.h
-
-----------------
-Version 5.004_54
-----------------
-
-____________________________________________________________________________
-[   252] By: mbeattie                              on 1997/11/14  15:07:19
-        Log: Two more delays added to test suite to help *-solaris-thread.
-     Branch: perl
-           ! t/io/pipe.t t/lib/io_pipe.t
-____________________________________________________________________________
-[   251] By: mbeattie                              on 1997/11/14  15:05:57
-        Log: Remove stale code from Thread.xs.
-     Branch: perl
-           ! ext/Thread/Thread.xs
-____________________________________________________________________________
-[   250] By: mbeattie                              on 1997/11/14  10:12:40
-        Log: Add delay to signal handling in t/op/magic.t. (Solaris with pthreads
-             doesn't run handlers for self-sent signals until kill has returned.)
-     Branch: perl
-           ! t/op/magic.t
-____________________________________________________________________________
-[   249] By: gsar                                  on 1997/11/14  05:14:44
-        Log: Fix various details in win32 makefiles and Config.pm setup.
-             - ldflags is set for both compilers now
-             - extensions list is now correct
-             - delete perl95.exe on distclean
-             - cf_time now gets updated (once)
-             - ccdlflags is set for Borland
-             - fix startperl so dprofpp works
-     Branch: win32/perl
-	   ! win32/Makefile win32/config.bc win32/config.vc
-           ! win32/config_sh.PL win32/makefile.mk
-____________________________________________________________________________
-[   248] By: mbeattie                              on 1997/11/13  18:01:27
-        Log: Rewrite thread return code to distinguish between ordinary return
-             and die() and make join propagate the die. Add tiny method eval
-             which just does "return eval { shift->join; }". Add Thread::Specific
-             class for access to thread specific user data along with specific.t.
-             Rename Class to classname throughout Thread.xs for consistency.
-             Fix pp_specific to pp_threadsv in global.sym. Add support to
-             pp_entersub in pp_hot.c to lock stash for static locked methods.
-     Branch: perl
-	   + ext/Thread/Thread/Specific.pm ext/Thread/specific.t
-           + lib/fields.pm
-	   ! MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
-           ! ext/Thread/join.t global.sym mg.c pp_hot.c thread.h
-____________________________________________________________________________
-[   247] By: mbeattie                              on 1997/11/13  14:13:30
-        Log: Change CONTEXT to PERL_CONTEXT throughout source (since the #define
-             to avoid the Digital UNIX clash no longer works). Changed the #ifdef
-             in pp_sys.c for whether getnet* function get protoyped (since the
-             default had a broken prototype for getnetbyaddr).
-     Branch: perl
-	   ! mg.c op.c perl.c perl.h pp_ctl.c pp_hot.c pp_sys.c proto.h
-           ! scope.c thread.h
-____________________________________________________________________________
-[   246] By: nick                                  on 1997/11/13  02:44:40
-        Log: Integrate Win32 branch
-     Branch: ansiperl
-	   - configure ext/util/extliblist win32/bin/pl2bat.bat
-	   - win32/bin/search.bat win32/bin/test.bat win32/bin/webget.bat
-	   - win32/config.H win32/config.w32 win32/win32io.c
-           - win32/win32io.h
-          !> (integrate 905 files)
-____________________________________________________________________________
-[   245] By: nick                                  on 1997/11/13  00:47:54
-        Log: Integrate (-ay) win32 branch at its creation to 
-             establish and ancestor as per perkforce technote #9
-     Branch: ansiperl
-	  +> configure ext/util/extliblist win32/bin/pl2bat.bat
-	  +> win32/bin/search.bat win32/bin/test.bat win32/bin/webget.bat
-          +> win32/config.H win32/config.w32
-          !> (integrate 859 files)
-____________________________________________________________________________
-[   244] By: gsar                                  on 1997/11/12  22:26:39
-        Log: More cleanups of win32/win32*.[ch] files.  win32/win32iop.h now
-             contains the all the declarations and macros for the win32io layer.
-             New std-ish functions are exported now.  All win32-specific exported
-             functions begin with "win32_" consistently.  win32 version of
-             init_os_extras() is now exported, so embedders can get the in-core
-             xsubs.
-     Branch: win32/perl
-	   ! dosish.h win32/makedef.pl win32/win32.c win32/win32.h
-           ! win32/win32iop.h win32/win32sck.c
-____________________________________________________________________________
-[   243] By: gsar                                  on 1997/11/12  07:41:52
-        Log: Really delete deleted files.
-     Branch: win32/perl
-           - win32/win32io.c win32/win32io.h
-____________________________________________________________________________
-[   242] By: gsar                                  on 1997/11/12  07:40:54
-        Log: Egregious IOsubsystem code excised.  Phew, what a relief!  Two
-             files (win32/win32io.[ch]) completely removed, as are all traces
-             of them in makefiles and MANIFEST.  RunPerl() retains the void* arg
-             for later. Various myfoo() things regularized to my_foo().  CPP not
-             required anymore to create a perl binary :)
-     Branch: win32/perl
-	   ! MANIFEST win32/Makefile win32/makedef.pl win32/makefile.mk
-	   ! win32/perllib.c win32/runperl.c win32/win32.c win32/win32.h
-	   ! win32/win32io.c win32/win32io.h win32/win32iop.h
-           ! win32/win32sck.c
-____________________________________________________________________________
-[   241] By: gsar                                  on 1997/11/12  05:31:28
-        Log: Fix various win32 code blemishes:
-             - s/stolen/win32/g
-             - s/(CROAK|WARN)/lc($1)/eg
-             - remove deadcode from most places
-     Branch: win32/perl
-	   ! win32/makedef.pl win32/win32.c win32/win32io.c
-           ! win32/win32iop.h
-____________________________________________________________________________
-[   240] By: gsar                                  on 1997/11/12  04:36:29
-        Log: Carry over changes in ansiperl branch.  Win32 branch is now
-             the leading edge.
-     Branch: win32/perl
-	   ! embed.h global.sym perl.c win32/win32thread.c
-           ! win32/win32thread.h
-____________________________________________________________________________
-[   239] By: gsar                                  on 1997/11/12  03:39:57
-        Log: Add missing win32_closesocket() and export it (extension writers' complaint).
-     Branch: win32/perl
-           ! win32/include/sys/socket.h win32/makedef.pl win32/win32sck.c
-____________________________________________________________________________
-[   238] By: gsar                                  on 1997/11/12  03:25:17
-        Log: Clean up win32/win32sck.c (runtime load of Winsock now gone, it can be
-             done cleaner, if really needed (perhaps only for efficiency reasons?)).
-             Redundant EXTERN_C definitions and related warnings fixed.
-     Branch: win32/perl
-	   ! miniperlmain.c perl.h win32/perllib.c win32/win32io.c
-           ! win32/win32iop.h win32/win32sck.c
-____________________________________________________________________________
-[   237] By: nick                                  on 1997/11/12  02:45:15
-        Log: Fixup Win32
-             - #undef start_env before re-#defining it
-             - change pp_specific pp_threadsv in global.sym
-             - re-build embed.h
-             - avoid HAVE_THREAD_INTERN - we don't and empty struct
-             is a pain. If we did have it it would contain cached
-             values of things we can only get at _IN_ the thread
-             so new_struct_thread is wrong place to call it.
-             - add new macro SET_THREAD_SELF - we must (in main thread)
-             define in win32thread.h, support in win32thread.c,
-             test and call in perl.c
-     Branch: ansiperl
-	   ! embed.h global.sym perl.c thread.h win32/win32thread.c
-           ! win32/win32thread.h
-____________________________________________________________________________
-[   236] By: nick                                  on 1997/11/12  01:54:23
-        Log: Integrate mainline after it integrated us.
-             Accepted 'theirs' everywhere - so two branches should
-             now point to same files again.
-             Almost all of these were what was suggested, others were
-             whitespace diffs. A few dubious spots which we will now 
-             go fix.
-     Branch: ansiperl
-	  !> embed.h ext/DB_File/DB_File.xs ext/GDBM_File/GDBM_File.xs
-	  !> ext/Opcode/Opcode.pm ext/Thread/Thread.xs interp.sym mg.c op.c
-	  !> opcode.h opcode.pl perl.c perl.h pp.c pp_ctl.c pp_sys.c t/TEST
-	  !> t/lib/safe2.t t/lib/thread.t t/op/nothread.t thread.h toke.c
-          !> util.c
-____________________________________________________________________________
-[   235] By: gsar                                  on 1997/11/12  01:22:26
-        Log: Minor tweaks to add a thread_intern struct that should ultimately
-             contain all the win32-specific statics.
-             Win32 branch now passes all tests with or w/o USE_THREADS.
-     Branch: win32/perl
-           ! embed.h perl.c win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   234] By: gsar                                  on 1997/11/11  23:08:54
-        Log: Initial (untested) integration of mainline changes.
-     Branch: win32/perl
-           - configure
-          !> (integrate 89 files)
-____________________________________________________________________________
-[   233] By: mbeattie                              on 1997/11/11  18:07:30
-        Log: Typo in thread.h: ADD_THREAD_INTERN should be HAVE_THREAD_INTERN
-     Branch: perl
-           ! thread.h
-____________________________________________________________________________
-[   232] By: mbeattie                              on 1997/11/11  17:49:12
-        Log: t/TEST (reverted to @229 version) should have been included in the
-             previous change (231) but my way of recovering it didn't work
-             properly. The change 231 comments about successful tests applies
-             to this t/TEST (i.e. as of this change).
-     Branch: perl
-           ! t/TEST
-____________________________________________________________________________
-[   231] By: mbeattie                              on 1997/11/11  17:46:59
-        Log: Fix up ansiperl integration. Back to passing all expected tests
-             with usethreads. Untested with non-threaded perl.
-     Branch: perl
-	   ! embed.h ext/DB_File/DB_File.xs ext/GDBM_File/GDBM_File.xs
-           ! perl.c perl.h pp.c t/lib/thread.t t/op/nothread.t util.c
-____________________________________________________________________________
-[   230] By: mbeattie                              on 1997/11/11  16:36:22
-        Log: Initial integration of ansi branch into mainline (untested).
-     Branch: perl
-          +> t/lib/thread.t t/op/nothread.t thread.sym
-           - configure
-          !> (integrate 84 files)
-____________________________________________________________________________
-[   229] By: mbeattie                              on 1997/11/11  15:20:43
-        Log: Change name of OP_SPECIFIC to OP_THREADSV. Fixed perl_get_sv when
-             getting per-thread magicals. Fixed thr->errsv initialisation.
-     Branch: perl
-	   ! ext/Opcode/Opcode.pm op.c opcode.h opcode.pl perl.c pp.c
-           ! t/lib/safe2.t toke.c
-____________________________________________________________________________
-[   228] By: mbeattie                              on 1997/11/11  12:48:26
-        Log: Fix up $@ (ERRSV now refers to GvSV(errgv) for non-threaded perl and
-             thr->errsv for threaded perl). Fix pp_tie and pp_dbmopen to use
-             GvCV(gv) instead of gv so AUTOLOAD stuff works. All tests now pass
-             again for non-threaded perl. Enhanced perl_get_sv to return
-             per-thread magicals where necessary for threaded perl.
-     Branch: perl
-	   ! embed.h ext/Thread/Thread.xs interp.sym mg.c op.c perl.c
-           ! perl.h pp_ctl.c pp_sys.c thread.h toke.c util.c
-____________________________________________________________________________
-[   227] By: mbeattie                              on 1997/11/11  11:00:02
-        Log: hashlock bug.
-             
-             Jobs fixed ...
-             
-             hashlock fixed on 1997/11/11 by mbeattie@localhost
-             
-             Subject: [perl5.004_53; patch] Another hash-locking fix
-             Date: 23 Oct 1997 14:13:55 -0400
-             From: Owen Taylor 
-     Branch: bugs
-           + hashlock
-____________________________________________________________________________
-[   226] By: gsar                                  on 1997/11/11  02:11:23
-        Log: Slightly more refined lock() keyword recognition (using %INC).
-     Branch: win32/perl
-           ! toke.c
-____________________________________________________________________________
-[   225] By: gsar                                  on 1997/11/11  00:26:09
-        Log: "weak" lock keyword (hardcoded initial implementation) now works.
-             if not defined(&Thread::join) and defined(&__PACKAGE__::lock), 'lock'
-             is recognized as a sub, a regular keyword otherwise.  Could be
-             generalized by storing a flag for every op in OP struct, and turning
-             the flag off when Thread.xs loads.
-     Branch: win32/perl
-           ! toke.c
-____________________________________________________________________________
-[   224] By: gsar                                  on 1997/11/10  22:59:55
-        Log: Merge a patch in preparation for "weak keywords":
-             From: Gurusamy Sarathy 
-             Message-Id: <199710080618.CAA23899@aatma.engin.umich.edu>
-             Subject: [PATCH] global overrides for keywords
-             Date: Wed, 08 Oct 1997 02:18:23 -0400
-     Branch: win32/perl
-           ! embed.h interp.sym perl.c perl.h toke.c
-____________________________________________________________________________
-[   223] By: gsar                                  on 1997/11/10  22:41:31
-        Log: Remove runlevel.  It was used to count how many runops() calls
-             we were in the process of executing, and longjmp() to the topmost
-             one (if not already there).  We use a null top_env->je_prev
-             to distinguish that now.
-     Branch: win32/perl
-           ! embed.h interp.sym perl.h pp_ctl.c run.c thread.h util.c
-____________________________________________________________________________
-[   222] By: gsar                                  on 1997/11/10  04:47:48
-        Log: Win32 branch now contains all non-ansification changes in ansiperl branch.
-             USE_THREADS case builds and passes all tests using both compilers.
-             Additional tweaks:
-             - fixup win32/makedef.pl to skip more symbols for non-thread build.
-             - sync win32/Makefile with win32/makefile.mk
-             >>>Non-thread build fails a lot of tests.<<<
-     Branch: win32/perl
-           + thread.sym
-	   ! MANIFEST ext/Thread/Thread.xs perl.c perl.h pp_sys.c sv.c
-	   ! util.c win32/Makefile win32/config.bc win32/config_H.bc
-           ! win32/makedef.pl win32/makefile.mk
-____________________________________________________________________________
-[   221] By: gsar                                  on 1997/11/10  00:57:53
-        Log: Initial (untested) merge of all non-ansi changes on ansiperl branch
-             into win32 branch.
-     Branch: win32/perl
-           + t/lib/thread.t t/op/nothread.t
-	   ! MANIFEST embed.h ext/Opcode/Opcode.pm global.sym interp.sym
-	   ! perl.c proto.h sv.h t/lib/english.t t/op/misc.t thread.h
-	   ! util.c win32/Makefile win32/config.bc win32/config.vc
-	   ! win32/config_H.bc win32/config_H.vc win32/makedef.pl
-	   ! win32/makefile.mk win32/win32.c win32/win32.h win32/win32io.c
-	   ! win32/win32io.h win32/win32iop.h win32/win32sck.c
-           ! win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   220] By: gsar                                  on 1997/11/09  22:44:41
-        Log: Integrate latest mainline into win32 branch.
-     Branch: win32/perl
-          +> win32/win32thread.c win32/win32thread.h
-          !> (integrate 39 files)
-____________________________________________________________________________
-[   219] By: nick                                  on 1997/11/09  21:46:06
-        Log: Conditionalize english.t,
-             Enhance times() for NT,
-             (Failed) attempt to implement alarm(),
-             Fixed config.h dependancy in makefile.mk
-     Branch: ansiperl
-	   ! t/lib/english.t win32/config.bc win32/config_H.bc
-           ! win32/makefile.mk win32/win32.c
-____________________________________________________________________________
-[   218] By: nick                                  on 1997/11/09  15:38:00
-        Log: Dick Hardt's patch for build on Alpha
-     Branch: ansiperl
-           ! win32/Makefile
-____________________________________________________________________________
-[   217] By: nick                                  on 1997/11/09  03:31:20
-        Log: MakeMaker not in vofig noise fix for dmake
-     Branch: ansiperl
-           ! win32/config.bc win32/makefile.mk
-____________________________________________________________________________
-[   216] By: nick                                  on 1997/11/09  03:15:06
-        Log: Fix 'anydbm.t' - if the gv is passed 1st call to inherited
-             TIEHASH works, but 2nd call (after db is closed, attempt
-             to reopen) tries to AUTOLOAD TIEHASH rather than using
-             cached value.
-     Branch: ansiperl
-           ! pp_sys.c
-____________________________________________________________________________
-[   215] By: nick                                  on 1997/11/08  16:41:24
-        Log: Cleanup MakeMaker 'not in config' noise
-     Branch: ansiperl
-           ! win32/Makefile win32/config.vc
-____________________________________________________________________________
-[   214] By: nick                                  on 1997/11/08  15:07:24
-        Log: Remove 'configure' leaving configure.gnu and Configure
-             Win32 ignores case and keeps trying to update
-             repository copy of 'configure' or 'Configure' with
-             the other.
-     Branch: ansiperl
-           - configure
-           ! MANIFEST
-____________________________________________________________________________
-[   213] By: nick                                  on 1997/11/08  15:03:39
-        Log: Get threads working again on Win32
-             Root cause of fail was init_thread_intern() in
-             new_struct_thread() (which is called in parent thread)
-             clobbering dTHR of parent thread. 
-             It is doubtfull if setting 'self' in new_struct_thread()
-             is 'right' but left in for now.
-     Branch: ansiperl
-	   ! ext/Thread/Thread.xs perl.c thread.h util.c win32/Makefile
-           ! win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   212] By: nick                                  on 1997/11/08  00:34:03
-        Log: Add :base_thread to :default in Opcode.pm
-             This allows lib/safe.t to pass when threaded.
-             It is unclear if 'lock' should be safe as it allows
-             denial of service attack, but could not figure out
-             how to add just 'specific' (sic) to :default
-             without triggering 'already tagged' warning noise.
-     Branch: ansiperl
-           ! ext/Opcode/Opcode.pm win32/makefile.mk
-____________________________________________________________________________
-[   211] By: nick                                  on 1997/11/07  23:59:31
-        Log: Merge changes as of 18:00 CST 
-     Branch: ansiperl
-          !> op.c pp.c pp_sys.c thread.h util.c
-____________________________________________________________________________
-[   210] By: nick                                  on 1997/11/07  23:52:35
-        Log: Reverse integrate Malcolm's chanes into local
-             repository, then import result back into my view
-             of Malcolm's repository.
-             Builds and passes (most) tests with GNU C++/Solaris
-             and Borland C++, Win32.
-     Branch: ansiperl
-	   ! doop.c embed.h ext/Thread/Thread.xs global.sym gv.c hv.c
-	   ! interp.sym mg.c op.c opcode.h opcode.pl patchlevel.h perl.c
-	   ! perl.h pp.c pp_ctl.c pp_sys.c proto.h sv.c sv.h taint.c
-           ! thread.h toke.c util.c win32/makefile.mk
-____________________________________________________________________________
-[   209] By: mbeattie                              on 1997/11/07  18:12:36
-        Log: Change pp_tie and pp_dbmopen to use perl_call_sv instead of a
-             DIY pp_entersub (in preparation for AUTOLOAD change). dbmopen
-             not tested. ofslen now maps to thr->Tofslen in thread.h. Added
-             missing #ifdef USE_THREADS around some DEBU_L statements in die().
-             Building without USE_THREADS fails quite a lot of tests. It looks
-             as though the move to per-thread magicals must be missing some
-             #ifdef USE_THREADS.
-     Branch: perl
-           ! op.c pp.c pp_sys.c thread.h util.c
-____________________________________________________________________________
-[   208] By: nick                                  on 1997/11/07  01:37:28
-        Log: Raw integrate of latest perl
-     Branch: ansiperl
-           ! t/TEST
-	  !> README.threads Todo.5.005 embed.h ext/Opcode/Opcode.pm
-	  !> ext/Thread/Thread.xs global.sym gv.c interp.sym op.c op.h
-	  !> perl.c perl.h pp.c pp_ctl.c pp_hot.c proto.h scope.h sv.h
-          !> thread.h toke.c util.c
-____________________________________________________________________________
-[   207] By: mbeattie                              on 1997/11/06  14:58:00
-        Log: Update README.threads and Todo.5.005.
-     Branch: perl
-           ! README.threads Todo.5.005
-____________________________________________________________________________
-[   206] By: mbeattie                              on 1997/11/06  14:37:37
-        Log: Remove #ifdef DEPRECATED stuff: newXSUB, pp_entersubr, FREE_TMPS().
-     Branch: perl
-           ! op.c pp_ctl.c proto.h scope.h
-____________________________________________________________________________
-[   205] By: mbeattie                              on 1997/11/06  14:31:38
-        Log: Per-thread magicals now stored in their own thr->magicals and keyed
-             more directly. cvcache and oursv become ordinary struct thread
-             fields instead of #defined thr->Tfoo ones. SvREFCNT_inc now checks
-             for 0 again. Main thread initialisation done by new function
-             init_main_thread instead of (now fixed) new_struct_thread.
-             
-             Jobs fixed ...
-             
-             jmpenv fixed on 1997/11/06 by mbeattie@localhost
-             
-             Subject: [perl5.004_53; patch] eval's and threads
-             Date: 23 Oct 1997 23:59:19 -0400
-             From: Owen Taylor 
-     Branch: bugs
-           + jmpenv
-     Branch: perl
-	   ! embed.h ext/Thread/Thread.xs global.sym gv.c op.c perl.c
-           ! pp_ctl.c pp_hot.c proto.h sv.h thread.h toke.c util.c
-____________________________________________________________________________
-[   204] By: mbeattie                              on 1997/11/05  17:18:18
-        Log: Per-thread magicals mostly working (and localisable). Now getting
-             intermittent occasional "Use of uninitialized value" warnings
-             which may be due to some op flag black magic I've broken.
-     Branch: perl
-	   ! embed.h ext/Opcode/Opcode.pm ext/Thread/Thread.xs gv.c
-	   ! interp.sym op.c op.h perl.c perl.h pp.c thread.h toke.c util.c
-____________________________________________________________________________
-[   203] By: nick                                  on 1997/11/05  01:04:10
-        Log: Builds C++ Borland, MSVC++ (Win32) and GCC++ (Solaris)
-     Branch: ansiperl
-	   ! XSUB.h doio.c doop.c embed.h ext/SDBM_File/sdbm/sdbm.h
-	   ! ext/Thread/Thread.xs global.sym gv.c hv.c interp.sym mg.c
-	   ! miniperlmain.c op.c op.h opcode.h opcode.pl patchlevel.h
-	   ! perl.c perl.h pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h
-	   ! sv.c sv.h taint.c thread.h toke.c util.c win32/Makefile
-	   ! win32/config.vc win32/config_H.vc win32/makedef.pl
-	   ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h
-	   ! win32/win32io.c win32/win32io.h win32/win32iop.h
-           ! win32/win32sck.c win32/win32thread.h
-____________________________________________________________________________
-[   202] By: nick                                  on 1997/11/05  00:50:27
-        Log: Compile(d) at least once with threads on win32 
-             but did not work
-     Branch: ansiperl
-           ! embed.h perl.c thread.h
-____________________________________________________________________________
-[   201] By: nick                                  on 1997/11/05  00:32:13
-        Log: Trivial integrate
-     Branch: ansiperl
-          !> patchlevel.h
-____________________________________________________________________________
-[   200] By: mbeattie                              on 1997/11/04  12:06:09
-        Log: Up patchlevel to 5.004_54 (I missed _53 for the last release).
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[   199] By: nick                                  on 1997/11/01  00:18:52
-        Log: Integrate mainline @ 18:15 CST 31 Oct 1997
-     Branch: ansiperl
-	  !> doop.c embed.h ext/Thread/Thread.xs global.sym gv.c hv.c
-	  !> interp.sym mg.c op.c opcode.h opcode.pl perl.c perl.h pp.c
-	  !> pp_ctl.c pp_sys.c proto.h sv.c sv.h taint.c thread.h toke.c
-          !> util.c
-____________________________________________________________________________
-[   198] By: nick                                  on 1997/11/01  00:08:33
-        Log: win32thread.* not in MANIFEST which has muddled moving
-             back and forth between depots.
-     Branch: ansiperl
-           ! MANIFEST win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   197] By: nick                                  on 1997/11/01  00:02:49
-        Log: Test changes
-     Branch: ansiperl
-           + t/lib/thread.t t/op/nothread.t thread.sym
-           ! MANIFEST
-____________________________________________________________________________
-[   196] By: nick                                  on 1997/10/31  23:54:01
-        Log: Further ANSI changes now builds and passes (most) tests
-             with gcc -x c++. 
-     Branch: ansiperl
-	   ! INTERN.h embed.h ext/DynaLoader/dl_dlopen.xs
-	   ! ext/Fcntl/Fcntl.xs ext/GDBM_File/GDBM_File.xs ext/IO/IO.xs
-	   ! ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs
-	   ! ext/SDBM_File/sdbm/hash.c ext/SDBM_File/sdbm/pair.c
-	   ! ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
-	   ! ext/SDBM_File/sdbm/util.c ext/Socket/Socket.xs
-	   ! ext/Thread/Thread.xs ext/attrs/attrs.xs global.sym perl.h
-	   ! perly.c sv.c t/lib/english.t t/op/misc.t thread.h util.c
-	   ! win32/Makefile win32/makedef.pl win32/makefile.mk x2p/a2p.c
-	   ! x2p/a2p.h x2p/a2py.c x2p/hash.c x2p/str.c x2p/util.c
-           ! x2p/walk.c
-____________________________________________________________________________
-[   195] By: mbeattie                              on 1997/10/31  18:05:31
-        Log: Half way through moving per-thread magicals into per-thread fields
-             and the associated new OP_SPECIFIC and find_thread_magical stuff.
-             perl will compile but plenty of the magicals are still broken.
-     Branch: perl
-	   ! doop.c embed.h ext/Thread/Thread.xs global.sym gv.c hv.c
-	   ! interp.sym mg.c op.c opcode.h opcode.pl perl.c perl.h pp.c
-	   ! pp_ctl.c pp_sys.c proto.h sv.c sv.h taint.c thread.h toke.c
-           ! util.c
-____________________________________________________________________________
-[   194] By: nick                                  on 1997/10/31  01:43:49
-        Log: Convert miniperl sources to ANSI C. Several passes of
-             GNU C's 'protoize' plus a few hand edits.
-             Will compile miniperl with gcc -x c++ (i.e. treat .c a C++ files)
-             Does not link seems gcc's C++ does not define a symbol for
-             const char foo[] = "....";
-             i.e. with empty [].
-     Branch: ansiperl
-	   ! av.c deb.c doio.c doop.c dump.c gv.c hv.c malloc.c mg.c
-	   ! miniperlmain.c op.c perl.c perl.h perlio.c perly.y pp.c
-	   ! pp_ctl.c pp_hot.c pp_sys.c regcomp.c regexec.c run.c scope.c
-           ! sv.c taint.c toke.c universal.c util.c
-____________________________________________________________________________
-[   193] By: nick                                  on 1997/10/30  03:00:01
-        Log: Make the ansi branch
-     Branch: ansiperl
-          +> (branch 907 files)
-____________________________________________________________________________
-[   192] By: nick                                  on 1997/10/30  02:48:17
-        Log: Oneperl builds with THREADS/THISPTR Borland
-             Manualy inserted Sarathy's new COND_XXXXX from his mail.
-             Manual change if Tself -> self as was easier than resolve :-(
-             Two aTHIS's in op.c
-     Branch: oneperl
-	   ! embed.h op.c thread.h thread.sym win32/makefile.mk
-           ! win32/win32thread.h
-____________________________________________________________________________
-[   191] By: nick                                  on 1997/10/30  01:54:50
-        Log: Raw resolve of latest sources with oneperl
-     Branch: oneperl
-	  !> Todo.5.005 ext/Thread/Thread.xs fakethr.h op.c op.h opcode.h
-	  !> opcode.pl perl.c thread.h win32/win32thread.c
-          !> win32/win32thread.h
-____________________________________________________________________________
-[   190] By: mbeattie                              on 1997/10/29  14:39:54
-        Log: Remove global macro "self". Change thr->Tself to thr->self.
-     Branch: perl
-	   ! ext/Thread/Thread.xs fakethr.h perl.c thread.h
-           ! win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   189] By: mbeattie                              on 1997/10/29  12:49:01
-        Log: Add to Todo: compiler with fake SvCUR in comppad_name entries.
-     Branch: perl
-           ! Todo.5.005
-____________________________________________________________________________
-[   188] By: mbeattie                              on 1997/10/29  12:45:32
-        Log: Add pp_lock knowledge to compiler
-     Branch: perlext
-           ! Compiler/ccop.c Compiler/ccop.h
-____________________________________________________________________________
-[   187] By: mbeattie                              on 1997/10/29  12:45:02
-        Log: Change peep() to optimise away unneeded rv2av in lval->[] and lval->{}
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[   186] By: mbeattie                              on 1997/10/29  12:43:36
-        Log: Move compiler OP class information into opcode.pl.
-     Branch: perl
-           ! op.h opcode.h opcode.pl
-____________________________________________________________________________
-[   185] By: nick                                  on 1997/10/26  22:52:05
-        Log: Split failing test in op/misc.t into op/nothread.t
-             so all tests can be passed where they apply.
-             Cleanup other two cases of THREADS/THISPTR.
-             Conditional compile option for CriticalSection's on Win32
-     Branch: oneperl
-           + t/op/nothread.t
-	   ! sv.h t/op/misc.t win32/Makefile win32/makedef.pl
-           ! win32/win32thread.h
-____________________________________________________________________________
-[   184] By: nick                                  on 1997/10/26  19:42:00
-        Log: USE_THISPTR fixes for CRIPPLED_CC (implied by threads)
-     Branch: oneperl
-           ! embed.h global.sym proto.h sv.c sv.h toke.c
-____________________________________________________________________________
-[   183] By: nick                                  on 1997/10/26  18:31:58
-        Log: Make USE_THREADS imply CRIPPLED_CC.
-             This avoids most of the uses of 'Sv' and hence many needs of 
-             dTHR in extension code. 
-             With this change Data::Dumper builds as-is
-             and Tk only needs four tweaks:
-             1. Obscure dump-stack case which really needs dTHR
-             2. A curcop in error-message code
-             3. Two cases of SAVETMPS
-             4. A curcop == &compiling which is probably not required.
-             IMHO the SAVETMPS case is only one which merits further automation.
-     Branch: oneperl
-	   ! embed.h global.sym perl.h sv.c win32/Makefile win32/makedef.pl
-____________________________________________________________________________
-[   182] By: nick                                  on 1997/10/26  16:31:58
-        Log: Change dSP to imply dTHR for extension source compatibility
-             introduce djSP (Declare Just SP) for use in perl sources
-             and thread-aware extensions. Use latter.
-     Branch: oneperl
-	   ! XSUB.h doio.c doop.c ext/Thread/Thread.xs gv.c mg.c perl.c
-           ! pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c sv.c
-____________________________________________________________________________
-[   181] By: nick                                  on 1997/10/26  00:39:57
-        Log: More tests
-     Branch: oneperl
-           ! t/lib/thread.t
-____________________________________________________________________________
-[   180] By: nick                                  on 1997/10/25  22:18:27
-        Log: Use return of THREAD_CREATE() - add basic thread test
-     Branch: oneperl
-           + t/lib/thread.t
-           ! ext/Thread/Thread.xs
-____________________________________________________________________________
-[   179] By: nick                                  on 1997/10/25  21:25:23
-        Log: Builds with no thread/this
-     Branch: oneperl
-	   ! ext/Thread/Thread.xs t/lib/english.t win32/makedef.pl
-           ! win32/win32thread.c
-____________________________________________________________________________
-[   178] By: nick                                  on 1997/10/25  18:28:03
-        Log: Cleanup dead #ifdef branch introduced by scruffy merging.
-     Branch: oneperl
-           ! perl.c
-____________________________________________________________________________
-[   177] By: nick                                  on 1997/10/25  18:11:33
-        Log: Basic integrate of oneperl with threads, passes 
-             tests THISPTR+THREADs - win32/win32thread.* needed
-             changes (where did they come from)?
-     Branch: oneperl
-	   ! embed.h ext/Thread/Thread.xs perl.h thread.h win32/Makefile
-           ! win32/makedef.pl win32/win32thread.c win32/win32thread.h
-____________________________________________________________________________
-[   176] By: nick                                  on 1997/10/25  17:05:52
-        Log: Onepel builds THISPTR no threads
-     Branch: oneperl
-           ! ext/Thread/Thread.xs thread.h win32/makedef.pl
-____________________________________________________________________________
-[   175] By: nick                                  on 1997/10/25  16:40:10
-        Log: Integrate oneperl with new style JOIN etc. macros
-     Branch: oneperl
-          +> win32/win32thread.c win32/win32thread.h
-	  !> Todo.5.005 ext/POSIX/POSIX.xs ext/Thread/Thread.xs fakethr.h
-	  !> global.sym gv.c hv.c mg.c op.c opcode.h opcode.pl perl.c
-	  !> perl.h pp.c pp_hot.c sv.h thread.h vms/descrip.mms
-	  !> vms/gen_shrfls.pl vms/vms.c vms/vmsish.h win32/Makefile
-          !> win32/makefile.mk
-____________________________________________________________________________
-[   174] By: mbeattie                              on 1997/10/24  17:14:00
-        Log: Remove xcv_condp CV field which is no longer used.
-     Branch: perl
-           ! sv.h
-____________________________________________________________________________
-[   173] By: mbeattie                              on 1997/10/24  14:36:09
-        Log: Patches for VMS [Dan Sugalski]
-     Branch: bugs
-           + vms2
-     Branch: perl
-	   ! ext/POSIX/POSIX.xs vms/descrip.mms vms/gen_shrfls.pl vms/vms.c
-           ! vms/vmsish.h
-____________________________________________________________________________
-[   172] By: mbeattie                              on 1997/10/24  13:50:59
-        Log: Improve internal threading API. Introduce win32/win32thread.[ch]
-             to use new API and patch win32 makefile stuff a little.
-     Branch: perl
-           + win32/win32thread.c win32/win32thread.h
-	   ! Todo.5.005 ext/Thread/Thread.xs fakethr.h global.sym gv.c hv.c
-           ! perl.c perl.h thread.h win32/Makefile win32/makefile.mk
-____________________________________________________________________________
-[   171] By: mbeattie                              on 1997/10/23  14:00:27
-        Log: Fix pp_hot.c:get_db_sub core dump when perl debugger used.
-             
-             Jobs fixed ...
-             
-             get_db_sub fixed on 1997/10/23 by mbeattie@squash
-             
-             Subject: [perl5.004_53] Debugger crash (patch)
-             Date: Thu, 16 Oct 1997 22:03:09 -0400
-             From: Owen Taylor 
-     Branch: bugs
-           + get_db_sub
-     Branch: perl
-           ! pp_hot.c
-____________________________________________________________________________
-[   170] By: mbeattie                              on 1997/10/23  09:22:40
-        Log: Fix refcounts for lock/magic_mutexfree. Make OP_LOCK auto-ref
-             its argument using ck_rfun as OP_DEFINED. Make pp_lock return
-             a ref to its argument for AV, HV, CV. 
-     Branch: perl
-           ! mg.c op.c opcode.h opcode.pl pp.c pp_hot.c
-____________________________________________________________________________
-[   169] By: gsar                                  on 1997/10/21  03:49:25
-        Log: With these fixes, oneperl builds THISPTR && THREADS under both win32 compilers:
-             - Fixup static functions that were missing aTHIS.
-             - s/extern/EXT/ in dTHR macro, or Borland CC croaks.
-             - Removed static functions from global.sym.
-             - Typo in perl.h.
-             - Additions to makefile.mk.
-     Branch: oneperl
-	   ! embed.h embed.pl global.sym op.c perl.h pp_ctl.c toke.c
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   168] By: nick                                  on 1997/10/20  02:47:18
-        Log: Passes expected tests with -DUSE_THREADS with/without -DUSE_THISPTR
-     Branch: oneperl
-	   ! embed.h ext/Thread/Thread.xs mg.c pp.c pp_hot.c proto.h
-           ! scope.h thread.h
-____________________________________________________________________________
-[   167] By: nick                                  on 1997/10/20  01:03:00
-        Log: Add missing aTHIS in cast
-     Branch: oneperl
-           ! win32/dl_win32.xs
-____________________________________________________________________________
-[   166] By: nick                                  on 1997/10/20  00:44:42
-        Log: Builds and passes test with -DUSE_THISPTR
-     Branch: oneperl
-	   ! ext/Thread/Thread.xs win32/Makefile win32/makedef.pl
-           ! win32/perllib.c
-____________________________________________________________________________
-[   165] By: nick                                  on 1997/10/19  21:45:36
-        Log: Oneperl runs miniperl with THISPTR (Win32 threading patch included)
-     Branch: oneperl
-	   ! embed.h ext/Thread/Thread.xs global.sym interp.sym perl.c
-	   ! perl.h t/TEST thread.h win32/Makefile win32/makedef.pl
-           ! win32/makefile.mk win32/perllib.c
-____________________________________________________________________________
-[   164] By: nick                                  on 1997/10/19  20:09:13
-        Log: oneperl compiles (but fails) with -DUSE_THISPTR
-     Branch: oneperl
-	   ! av.c embed.h mg.c perl.c perl.h pp.c pp_ctl.c pp_hot.c
-	   ! pp_sys.c proto.h regexec.c sv.c thread.h thread.sym util.c
-           ! win32/win32.c win32/win32.h
-____________________________________________________________________________
-[   163] By: nick                                  on 1997/10/19  16:46:09
-        Log: Builds on NT4 without THISPTR or THREADS, passes all tests
-     Branch: oneperl
-           ! embed.h perl.h thread.h vars.h
-____________________________________________________________________________
-[   162] By: nick                                  on 1997/10/19  14:42:16
-        Log: Dubious merge of oneperl's variable and struct thread
-     Branch: oneperl
-          !> perl.h thread.h
-____________________________________________________________________________
-[   161] By: nick                                  on 1997/10/18  18:05:13
-        Log: integrate all but perl.h/thread.h
-     Branch: oneperl
-          +> Todo.5.005 perlio.sym
-          !> (integrate 98 files)
-____________________________________________________________________________
-[   160] By: nick                                  on 1997/10/18  03:49:27
-        Log: Integrate rest of sub-dirs into oneperl
-     Branch: oneperl
-	  +> ext/Thread/Makefile.PL ext/Thread/Notes ext/Thread/README
-	  +> ext/Thread/Thread.pm ext/Thread/Thread.xs
-	  +> ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm
-	  +> ext/Thread/create.t ext/Thread/io.t ext/Thread/join.t
-	  +> ext/Thread/join2.t ext/Thread/list.t ext/Thread/lock.t
-	  +> ext/Thread/queue.t ext/Thread/sync.t ext/Thread/sync2.t
-	  +> ext/Thread/typemap ext/Thread/unsync.t ext/Thread/unsync2.t
-	  +> ext/Thread/unsync3.t ext/Thread/unsync4.t hints/newsos4.sh
-          +> hints/os390.sh
-           - ext/util/extliblist
-          !> (integrate 425 files)
-____________________________________________________________________________
-[   159] By: nick                                  on 1997/10/18  03:20:11
-        Log: Integrate (accept) t and win32 into oneperl
-     Branch: oneperl
-	  +> t/lib/dosglob.t win32/bin/pl2bat.pl win32/bin/runperl.pl
-	  +> win32/bin/search.pl win32/bin/webget.pl win32/config.bc
-	  +> win32/config.vc win32/config_H.bc win32/config_H.vc
-          +> win32/makefile.mk
-          !> (integrate 188 files)
-____________________________________________________________________________
-[   158] By: nick                                  on 1997/10/18  03:12:59
-        Log: Integrate lib/... into oneperl
-     Branch: oneperl
-          +> lib/File/DosGlob.pm lib/base.pm lib/chat2.pl
-          !> (integrate 138 files)
-____________________________________________________________________________
-[   157] By: nick                                  on 1997/10/18  02:55:53
-        Log: Make lib/Bundle/CPAN.pm text in oneperl too.
-     Branch: oneperl
-           ! lib/Bundle/CPAN.pm
-____________________________________________________________________________
-[   156] By: nick                                  on 1997/10/18  02:52:44
-        Log: Make lib/Bundle/CPAN.pm a text file
-     Branch: perl
-           ! lib/Bundle/CPAN.pm
-____________________________________________________________________________
-[   155] By: nick                                  on 1997/10/18  02:33:02
-        Log: Some weirdness in the intgrate process
-     Branch: oneperl
-	   - win32/bin/pl2bat.bat win32/bin/search.bat win32/bin/test.bat
-           - win32/bin/webget.bat win32/config.H win32/config.w32
-____________________________________________________________________________
-[   153] By: nick                                  on 1997/10/18  02:29:16
-        Log: Let us try all the pure integrate stuff
-     Branch: oneperl
-          !> (integrate 647 files)
-____________________________________________________________________________
-[   152] By: nick                                  on 1997/10/18  02:13:35
-        Log: Get more sub directories out of the way.
-     Branch: oneperl
-          !> (integrate 92 files)
-____________________________________________________________________________
-[   151] By: nick                                  on 1997/10/18  02:05:41
-        Log: Integrate hints 
-     Branch: oneperl
-          !> (integrate 68 files)
-____________________________________________________________________________
-[   150] By: nick                                  on 1997/10/18  01:57:20
-        Log: Try reopening some non-contravertial files
-     Branch: oneperl
-	  !> x2p/EXTERN.h x2p/INTERN.h x2p/Makefile.SH x2p/a2p.c x2p/a2p.h
-	  !> x2p/a2p.pod x2p/a2p.y x2p/a2py.c x2p/cflags.SH
-	  !> x2p/find2perl.PL x2p/hash.c x2p/hash.h x2p/proto.h x2p/s2p.PL
-          !> x2p/str.c x2p/str.h x2p/util.c x2p/util.h x2p/walk.c
-____________________________________________________________________________
-[   144] By: gsar                                  on 1997/10/16  22:26:07
-        Log: Merge changes to Thread and add makefile fixups to accomodate Thread
-             build.  Once again, builds and runs all	Thread tests using either
-             compiler.
-     Branch: win32/perl
-	   ! embed.h ext/Thread/Thread.xs interp.sym perl.c win32/Makefile
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   143] By: gsar                                  on 1997/10/16  20:45:58
-        Log: A quick merge of latest mainline.
-     Branch: win32/perl
-	  +> ext/Thread/Makefile.PL ext/Thread/Notes ext/Thread/README
-	  +> ext/Thread/Thread.pm ext/Thread/Thread.xs
-	  +> ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm
-	  +> ext/Thread/create.t ext/Thread/io.t ext/Thread/join.t
-	  +> ext/Thread/join2.t ext/Thread/list.t ext/Thread/lock.t
-	  +> ext/Thread/queue.t ext/Thread/sync.t ext/Thread/sync2.t
-	  +> ext/Thread/typemap ext/Thread/unsync.t ext/Thread/unsync2.t
-	  +> ext/Thread/unsync3.t ext/Thread/unsync4.t hints/os390.sh
-          +> lib/base.pm t/lib/dosglob.t
-           - ext/util/extliblist
-          !> (integrate 134 files)
-
-----------------
-Version 5.004_53
-----------------
-
-____________________________________________________________________________
-[   142] By: mbeattie                              on 1997/10/16  16:52:55
-        Log: Add newly moved perl/ext/Thread/... files to MANIFEST.
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   141] By: mbeattie                              on 1997/10/16  16:42:13
-        Log: Move perlext/Thread into perl/ext/Thread.
-     Branch: perl
-	  +> ext/Thread/Makefile.PL ext/Thread/Notes ext/Thread/README
-	  +> ext/Thread/Thread.pm ext/Thread/Thread.xs
-	  +> ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm
-	  +> ext/Thread/create.t ext/Thread/io.t ext/Thread/join.t
-	  +> ext/Thread/join2.t ext/Thread/list.t ext/Thread/lock.t
-	  +> ext/Thread/queue.t ext/Thread/sync.t ext/Thread/sync2.t
-	  +> ext/Thread/typemap ext/Thread/unsync.t ext/Thread/unsync2.t
-          +> ext/Thread/unsync3.t ext/Thread/unsync4.t
-           ! Configure
-     Branch: perlext
-	   - Thread/Makefile.PL Thread/Notes Thread/README Thread/Thread.pm
-	   - Thread/Thread.xs Thread/Thread/Queue.pm
-	   - Thread/Thread/Semaphore.pm Thread/create.t Thread/io.t
-	   - Thread/join.t Thread/join2.t Thread/list.t Thread/lock.t
-	   - Thread/queue.t Thread/sync.t Thread/sync2.t Thread/typemap
-	   - Thread/unsync.t Thread/unsync2.t Thread/unsync3.t
-           - Thread/unsync4.t
-____________________________________________________________________________
-[   140] By: mbeattie                              on 1997/10/16  16:26:53
-        Log: Correct threads_mutex locking in main thread destruction.
-             Add per-interp thrsv to hold SV struct thread for main thread.
-             Move Thread.xs MUTEX_DESTROY from end of threadstart to remove_thread.
-             Add Thread/list.t test of Thread->list method.
-             Let Thread::Semaphore methods up and down take an extra argument.
-     Branch: perl
-           ! embed.h interp.sym perl.c perl.h thread.h
-     Branch: perlext
-           + Thread/list.t
-           ! Thread/Thread.xs Thread/Thread/Semaphore.pm
-____________________________________________________________________________
-[   139] By: mbeattie                              on 1997/10/16  14:01:11
-        Log: Fix up merge with 5.004_04.
-     Branch: perl
-           ! op.c perl.c t/lib/dosglob.t
-____________________________________________________________________________
-[   138] By: TimBunce                              on 1997/10/16  12:58:22
-        Log: Fix-up PerForce type for t/lib/dosglob.t from text to xtext
-     Branch: maint-5.004/perl
-           ! t/lib/dosglob.t
-____________________________________________________________________________
-[   137] By: mbeattie                              on 1997/10/16  11:09:25
-        Log: Merge maint-5.004 branch (5.004_04) with mainline.
-     Branch: perl
-          +> hints/os390.sh lib/base.pm t/lib/dosglob.t
-           - ext/util/extliblist
-          !> (integrate 132 files)
-____________________________________________________________________________
-[   135] By: gsar                                  on 1997/10/15  21:46:05
-        Log: Win32 changes over 5.004_52:
-             - rearranged MUTEX_LOCK()s in perl_destroy so that we don't call it
-             on an already locked mutex.
-             - other minor tweaks.
-             Now builds and runs win32-version of Thread_52, passing all tests.
-     Branch: win32/perl
-           ! perl.c proto.h thread.h
-____________________________________________________________________________
-[   134] By: gsar                                  on 1997/10/15  18:19:31
-        Log: fixup makefile.mk conflict.
-     Branch: win32/perl
-           ! win32/makefile.mk
-____________________________________________________________________________
-[   133] By: gsar                                  on 1997/10/15  18:02:46
-        Log: Integrated latest changes from mainline into win32.
-     Branch: win32/perl
-          +> fakethr.h
-	  !> MANIFEST Porting/makerel Porting/patchls README.threads
-	  !> Todo.5.005 perl.c pp_hot.c thread.h util.c win32/config.bc
-	  !> win32/config.vc win32/config_H.bc win32/config_H.vc
-          !> win32/makefile.mk
-
-----------------
-Version 5.004_52
-----------------
-
-____________________________________________________________________________
-[   132] By: mbeattie                              on 1997/10/15  17:02:38
-        Log: Remove out-of-date test Thread/cond.t.
-     Branch: perlext
-           - Thread/cond.t
-____________________________________________________________________________
-[   131] By: mbeattie                              on 1997/10/15  16:57:45
-        Log: Finish thread state machine: fixes global destruction of threads,
-             detaching, joining etc. Alter FAKE_THREADS-specific fields to use
-             new HAVE_THREAD_INTERN stuff. Updates docs. Various fixes to
-             Thread.xs.
-     Branch: perl
-           ! MANIFEST README.threads Todo.5.005 perl.c util.c
-     Branch: perlext
-           ! Thread/Thread.xs Thread/queue.t
-____________________________________________________________________________
-[   130] By: mbeattie                              on 1997/10/15  16:55:10
-        Log: Add HAVE_THREAD_INTERN for platform-dependent struct thread additions.
-             Fix ThrSETSTATE not to lock t->mutex itself.
-     Branch: perl
-           ! fakethr.h thread.h
-____________________________________________________________________________
-[   129] By: mbeattie                              on 1997/10/15  16:53:35
-        Log: Remove stale code from pp_entersub which breaks sub ownership locks.
-     Branch: perl
-           ! pp_hot.c
-____________________________________________________________________________
-[   128] By: TimBunce                              on 1997/10/15  15:55:26
-        Log: Maintenance 5.004_04 changes
-     Branch: maint-5.004/perl
-           + hints/os390.sh lib/base.pm t/lib/dosglob.t
-           - ext/util/extliblist
-	   ! Changes Configure INSTALL MANIFEST Makefile.SH Porting/makerel
-	   ! Porting/patchls Porting/pumpkin.pod README.vms av.c configpm
-	   ! doop.c eg/sysvipc/ipcsem emacs/cperl-mode.el embed.h
-	   ! ext/DynaLoader/DynaLoader.pm ext/IO/lib/IO/Socket.pm
-	   ! ext/util/make_ext global.sym gv.c hints/bsdos.sh
-	   ! hints/dec_osf.sh hints/dynixptx.sh hints/irix_6.sh
-	   ! hints/linux.sh hints/machten.sh hints/os2.sh hints/qnx.sh hv.c
-	   ! installperl lib/AutoLoader.pm lib/CPAN.pm
-	   ! lib/CPAN/FirstTime.pm lib/Carp.pm lib/Cwd.pm lib/English.pm
-	   ! lib/ExtUtils/Install.pm lib/ExtUtils/Liblist.pm
-	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/xsubpp
-	   ! lib/File/DosGlob.pm lib/File/Find.pm lib/FileHandle.pm
-	   ! lib/Getopt/Long.pm lib/Getopt/Std.pm lib/Math/Complex.pm
-	   ! lib/Sys/Hostname.pm lib/Sys/Syslog.pm lib/Test/Harness.pm
-	   ! lib/Time/Local.pm lib/autouse.pm lib/blib.pm
-	   ! lib/diagnostics.pm lib/getopt.pl lib/perl5db.pl lib/vars.pm
-	   ! makedepend.SH malloc.c mg.c miniperlmain.c myconfig op.c
-	   ! opcode.h os2/Changes os2/OS2/REXX/Makefile.PL
-	   ! os2/OS2/REXX/REXX.pm os2/os2.c patchlevel.h perl.c perl.h
-	   ! perly.c perly.fixer perly.y pod/perl.pod pod/perlapio.pod
-	   ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
-	   ! pod/perlguts.pod pod/perlipc.pod pod/perlop.pod
-	   ! pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod
-	   ! pod/perltrap.pod pod/perlvar.pod pod/perlxs.pod pp.c pp_ctl.c
-	   ! pp_hot.c pp_sys.c proto.h regcomp.c regexec.c scope.c sv.c
-	   ! t/TEST t/comp/proto.t t/lib/complex.t t/lib/io_sock.t
-	   ! t/lib/io_udp.t t/op/glob.t t/op/method.t t/op/misc.t
-	   ! t/op/ref.t t/op/runlevel.t t/op/split.t t/op/sprintf.t
-	   ! t/op/subst.t t/op/taint.t t/pragma/locale.t taint.c toke.c
-	   ! unixish.h util.c utils/h2ph.PL utils/h2xs.PL utils/perlbug.PL
-	   ! utils/perldoc.PL vms/perly_c.vms vms/vms.c vms/vmsish.h
-	   ! win32/Makefile win32/config_H.bc win32/config_H.vc
-	   ! win32/makefile.mk win32/pod.mak win32/win32.c win32/win32io.c
-           ! win32/win32sck.c x2p/Makefile.SH x2p/util.c
-____________________________________________________________________________
-[   127] By: mbeattie                              on 1997/10/15  10:00:18
-        Log: Added fakethr.h.
-     Branch: perl
-           + fakethr.h
-____________________________________________________________________________
-[   126] By: mbeattie                              on 1997/10/15  09:50:57
-        Log: pthread_condattr_init in thread.h for OLD_PTHREADS_API.
-     Branch: perl
-           ! thread.h
-____________________________________________________________________________
-[   125] By: mbeattie                              on 1997/10/15  09:09:24
-        Log: Started rewriting thread state machine.
-     Branch: perl
-           ! perl.c thread.h
-     Branch: perlext
-           ! Thread/Thread.xs
-____________________________________________________________________________
-[   124] By: gsar                                  on 1997/10/14  00:23:15
-        Log: Remove spurious extra MUTEX_LOCK in pp_entersub().  Now builds and passes
-             tests in win32 version of latest perlext/Thread.
-     Branch: win32/perl
-           ! pp_hot.c
-____________________________________________________________________________
-[   123] By: gsar                                  on 1997/10/13  23:18:38
-        Log: Initial merge of win32 threads patch.
-     Branch: win32/perl
-	   ! embed.h global.sym interp.sym perl.c perl.h pp_hot.c thread.h
-	   ! win32/Makefile win32/makedef.pl win32/makefile.mk
-           ! win32/perllib.c win32/pod.mak win32/win32.h
-____________________________________________________________________________
-[   122] By: gsar                                  on 1997/10/10  20:58:40
-        Log: Integrated changes on mainline into the win32 branch.  Had to set
-             P4USER=mbeattie for the resolve step (due to the presence of newly
-             branched files that had not been submitted?)
-     Branch: win32/perl
-	  +> Porting/makerel Porting/patchls README.threads Todo.5.005
-	  +> ext/attrs/Makefile.PL ext/attrs/attrs.pm ext/attrs/attrs.xs
-	  +> hints/newsos4.sh lib/File/DosGlob.pm lib/chat2.pl perlio.sym
-	  +> win32/bin/pl2bat.pl win32/bin/runperl.pl win32/bin/search.pl
-	  +> win32/bin/webget.pl win32/config.bc win32/config.vc
-          +> win32/config_H.bc win32/config_H.vc win32/makefile.mk
-	   - win32/bin/pl2bat.bat win32/bin/search.bat win32/bin/test.bat
-           - win32/bin/webget.bat win32/config.H win32/config.w32
-           ! thread.h
-          !> (integrate 858 files)
-____________________________________________________________________________
-[   121] By: mbeattie                              on 1997/10/10  17:23:41
-        Log: Tweak a few Thread tests.
-     Branch: perlext
-           + Thread/join2.t
-           ! Thread/io.t Thread/sync2.t
-____________________________________________________________________________
-[   120] By: mbeattie                              on 1997/10/10  17:22:46
-        Log: Rewrite thread destruction system using linked list of threads.
-             Still not completely done. Add methods self, equal, flags, list
-             to Thread.xs. Add Thread_MAGIC_SIGNATURE check to typemap.
-     Branch: perl
-           ! perl.c perl.h thread.h
-     Branch: perlext
-           ! Thread/Thread.xs Thread/typemap
-____________________________________________________________________________
-[   119] By: mbeattie                              on 1997/10/10  17:19:55
-        Log: Fix up locking/synchronisation for pp_entersub.
-     Branch: perl
-           ! pp_hot.c
-____________________________________________________________________________
-[   118] By: mbeattie                              on 1997/10/10  09:55:32
-        Log: Put back entries in MANIFEST for the four now-returned win32/* files
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[   117] By: mbeattie                              on 1997/10/10  08:12:23
-        Log: Took out mystack_foo for good, fixed up interp.sym and win32/makedef.pl
-     Branch: perl
-           ! Todo.5.005 embed.h interp.sym perl.h win32/makedef.pl
-____________________________________________________________________________
-[   116] By: mbeattie                              on 1997/10/08  15:41:08
-        Log: Add missing sig_pipe definition to Thread.xs.
-     Branch: perlext
-           ! Thread/Thread.xs
-____________________________________________________________________________
-[   115] By: mbeattie                              on 1997/10/08  15:40:46
-        Log: Fix up 5.004_03 merge: remove missing win32 files from MANIFEST,
-             add missing dTHR; to new function unwind_handler_stack() in mg.c
-             and bump patchlevel.h to 5.004_52.
-     Branch: perl
-           ! MANIFEST mg.c patchlevel.h
-____________________________________________________________________________
-[   114] By: mbeattie                              on 1997/10/08  10:19:27
-        Log: Merge maint-5.004 branch (5.004_03) with mainline.
-             MANIFEST is out of sync.
-     Branch: perl
-	  +> win32/bin/pl2bat.pl win32/bin/runperl.pl win32/bin/search.pl
-          +> win32/bin/webget.pl
-	   - win32/bin/pl2bat.bat win32/bin/search.bat win32/bin/test.bat
-           - win32/bin/webget.bat
-          !> (integrate 168 files)
-____________________________________________________________________________
-[   113] By: mbeattie                              on 1997/10/05  17:52:49
-        Log: Move init of global mutexes/cond vars earlier.
-     Branch: perl
-           ! perl.c
-____________________________________________________________________________
-[   112] By: nick                                  on 1997/10/04  15:25:28
-        Log: Add perl.sym to MANIFEST
-     Branch: oneperl
-           ! MANIFEST
-____________________________________________________________________________
-[   111] By: nick                                  on 1997/10/04  15:23:37
-        Log: Missing file
-     Branch: oneperl
-           + perl.sym
-____________________________________________________________________________
-[   110] By: nick                                  on 1997/10/04  13:04:26
-        Log: Now builds the extensions as well
-             Passes all tests
-     Branch: oneperl
-	   ! XSUB.h embed.pl ext/DynaLoader/dlutils.c ext/Opcode/Opcode.xs
-	   ! mg.c op.c perl.c pp_ctl.c pp_hot.c pp_sys.c proto.h sv.c
-           ! toke.c util.c writemain.SH
-____________________________________________________________________________
-[   109] By: nick                                  on 1997/10/04  12:02:14
-        Log: Odd checkin issue
-     Branch: oneperl
-	   ! dump.c global.sym gv.c hv.c malloc.c mg.c op.c opcode.h perl.c
-	   ! perly.c perly.c.diff perly.h perly.y pp.c pp_hot.c pp_sys.c
-	   ! proto.h scope.c sv.c toke.c universal.c util.c vms/perly_c.vms
-           ! vms/perly_h.vms writemain.SH
-____________________________________________________________________________
-[   108] By: nick                                  on 1997/10/04  11:12:52
-        Log: Added lots of (missing) prototypes (ckprotos is util to check)
-             Fixed missing aTHIS flagged by above.
-             -DUSE_THISPTR passes minitest!
-     Branch: oneperl
-           + ckprotos
-	   ! dump.c global.sym gv.c hv.c malloc.c mg.c op.c opcode.h perl.c
-	   ! perly.c perly.c.diff perly.h perly.y pp.c pp_hot.c pp_sys.c
-	   ! proto.h scope.c sv.c toke.c universal.c util.c vms/perly_c.vms
-           ! vms/perly_h.vms
-____________________________________________________________________________
-[   107] By: nick                                  on 1997/10/03  22:36:52
-        Log: .y muddle fixup - will get this sorted oneday ...
-     Branch: oneperl
-	   ! miniperlmain.c perly.c perly.c.diff perly.h vms/perly_c.vms
-           ! vms/perly_h.vms
-____________________________________________________________________________
-[   106] By: mbeattie                              on 1997/10/03  17:12:33
-        Log: Remove last traces of "tokenbuf as temp buffer" and removed it
-             from struct thread. Added missing thr->Tfoo defines for statbuf
-             and timesbuf and removed unused Tbuf field.
-     Branch: perl
-           ! doio.c mg.c perl.c pp_sys.c sv.c thread.h
-____________________________________________________________________________
-[   105] By: nick                                  on 1997/10/03  15:56:50
-        Log: dTHIS -> hasTHIS, dTHR -> dTHR; builds without THISPTR with/without USE_THREADS
-     Branch: oneperl
-	   ! XSUB.h av.c deb.c doio.c doop.c dump.c embed.pl global.sym
-	   ! gv.c hv.c mg.c op.c perl.c perl.h perlio.c perly.c pp.c pp.h
-	   ! pp_ctl.c pp_hot.c pp_sys.c regcomp.c regexec.c run.c scope.c
-           ! sv.c taint.c thread.h toke.c universal.c util.c
-____________________________________________________________________________
-[   104] By: mbeattie                              on 1997/10/03  15:23:25
-        Log: Back out sv_bless3 change which made pp_bless zap '~'-magic.
-     Branch: perl
-           ! global.sym pp.c proto.h sv.c
-____________________________________________________________________________
-[   103] By: mbeattie                              on 1997/10/03  15:17:39
-        Log: Fixed sv_mutex locking for new_SV, del_SV and nice_chunks.
-     Branch: perl
-           ! av.c hv.c perl.h sv.c
-____________________________________________________________________________
-[   102] By: mbeattie                              on 1997/10/03  11:53:51
-        Log: Reliable thread signal handling.
-     Branch: perl
-           ! global.sym mg.c perl.c perl.h
-     Branch: perlext
-           ! Thread/Thread.xs
-____________________________________________________________________________
-[   101] By: nick                                  on 1997/10/02  20:43:17
-        Log: Cleanup perly.y stuff
-     Branch: oneperl
-           ! embed.h perly.c perly.c.diff vms/perly_c.vms vms/perly_h.vms
-____________________________________________________________________________
-[   100] By: nick                                  on 1997/10/02  18:54:08
-        Log: Compiles with less invasive aTHIS adding
-     Branch: oneperl
-           + nothis.sym
-	   ! MANIFEST XSUB.h av.c cop.h deb.c doio.c doop.c dump.c embed.h
-	   ! embed.pl global.sym gv.c gv.h handy.h hv.c hv.h mg.c op.c op.h
-	   ! opcode.h perl.c perl.h perlio.c perlsdio.h perly.c
-	   ! perly.c.diff perly.y pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c
-	   ! proto.h regcomp.c regcomp.h regexec.c run.c scope.c scope.h
-	   ! sv.c sv.h t/op/sort.t taint.c thread.h toke.c universal.c
-           ! util.c vars.h
-
-----------------
-Version 5.004_51
-----------------
-
-____________________________________________________________________________
-[    99] By: mbeattie                              on 1997/10/02  17:23:48
-        Log: Added Thread/queue.t.
-     Branch: perlext
-           + Thread/queue.t
-____________________________________________________________________________
-[    98] By: mbeattie                              on 1997/10/02  17:19:44
-        Log: Bumped patchlevel to 51. Updated Todo.5.005.
-     Branch: perl
-           ! Todo.5.005 patchlevel.h
-____________________________________________________________________________
-[    97] By: mbeattie                              on 1997/10/02  17:07:47
-        Log: Update README.threads amd Thread/README
-     Branch: perl
-           ! README.threads
-     Branch: perlext
-           ! Thread/README
-____________________________________________________________________________
-[    96] By: mbeattie                              on 1997/10/02  16:58:47
-        Log: Configure -Dusethreads hints for dec_osf and solaris_2 and
-             fix sv_bless3 prototype.
-     Branch: perl
-           ! hints/dec_osf.sh hints/solaris_2.sh sv.c
-____________________________________________________________________________
-[    95] By: mbeattie                              on 1997/10/02  16:50:21
-        Log: Fixed broken typemap for Thread.
-     Branch: perlext
-           ! Thread/typemap
-____________________________________________________________________________
-[    94] By: mbeattie                              on 1997/10/02  16:34:03
-        Log: Fix pod text in Lint.pm for private-names option.
-     Branch: perlext
-           ! Compiler/B/Lint.pm
-____________________________________________________________________________
-[    93] By: mbeattie                              on 1997/10/02  13:44:46
-        Log: Add Todo.5.005 to MANIFEST and submit remade embed.h.
-     Branch: perl
-           ! MANIFEST embed.h
-____________________________________________________________________________
-[    92] By: mbeattie                              on 1997/10/02  13:27:10
-        Log: Add Todo.5.005
-     Branch: perl
-           + Todo.5.005
-____________________________________________________________________________
-[    91] By: nick                                  on 1997/10/01  20:23:38
-        Log: Raw _T# trial
-     Branch: oneperl
-           ! embed.h embed.pl proto.h sv.c
-____________________________________________________________________________
-[    90] By: nick                                  on 1997/10/01  18:22:03
-        Log: THIS + new sort stuff
-     Branch: oneperl
-           ! miniperlmain.c perl.c pp_ctl.c proto.h util.c
-____________________________________________________________________________
-[    89] By: nick                                  on 1997/10/01  18:03:05
-        Log: qsort cleanup - now tailored to perl's use and 'this' aware.
-     Branch: oneperl
-           ! pp_ctl.c proto.h util.c
-____________________________________________________________________________
-[    88] By: mbeattie                              on 1997/10/01  17:04:12
-        Log: Start of Configure support for -Dusethreads plus associated
-             Linux hints.
-     Branch: perl
-           ! Configure hints/linux.sh
-____________________________________________________________________________
-[    87] By: mbeattie                              on 1997/10/01  17:03:34
-        Log: Move runops_foo prototypes from proto.h to early in perl.h.
-     Branch: perl
-           ! perl.h proto.h
-____________________________________________________________________________
-[    86] By: nick                                  on 1997/09/30  19:15:21
-        Log: Debug hackery to thread.h - temporary
-             Quick-fix qsort() replacement - more to come.
-     Branch: oneperl
-           ! thread.h util.c
-____________________________________________________________________________
-[    85] By: mbeattie                              on 1997/09/30  15:50:27
-        Log: Added Lint option regexp-variables.
-     Branch: perlext
-           ! Compiler/B/Lint.pm
-____________________________________________________________________________
-[    84] By: mbeattie                              on 1997/09/30  15:11:07
-        Log: Merge maint-5.004 branch (5.004_01) with mainline.
-     Branch: perl
-	  +> Porting/makerel Porting/patchls hints/newsos4.sh
-	  +> lib/File/DosGlob.pm lib/chat2.pl perlio.sym win32/config.bc
-	  +> win32/config.vc win32/config_H.bc win32/config_H.vc
-          +> win32/makefile.mk
-           - win32/config.H win32/config.w32
-          !> (integrate 109 files)
-____________________________________________________________________________
-[    83] By: TimBunce                              on 1997/09/30  14:27:09
-        Log: Maintenance 5.004_03 changes (addendum)
-     Branch: maint-5.004/perl
-           - win32/bin/search.bat
-____________________________________________________________________________
-[    82] By: TimBunce                              on 1997/09/30  14:11:29
-        Log: Maintenance 5.004_03 changes
-     Branch: maint-5.004/perl
-	   + win32/bin/pl2bat.pl win32/bin/runperl.pl win32/bin/search.pl
-           + win32/bin/webget.pl
-	   - win32/bin/pl2bat.bat win32/bin/runperl.bat win32/bin/test.bat
-           - win32/bin/webget.bat
-	   ! Changes Configure MANIFEST Makefile.SH Porting/makerel
-	   ! ext/DynaLoader/DynaLoader.pm hints/hpux.sh hints/linux.sh
-	   ! hints/sco.sh hints/sunos_4_1.sh installhtml lib/CPAN.pm
-	   ! lib/ExtUtils/MM_Unix.pm lib/FileCache.pm lib/Math/Complex.pm
-	   ! lib/Math/Trig.pm lib/blib.pm os2/diff.configure patchlevel.h
-	   ! perl.c pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
-	   ! pod/perlop.pod pod/perlre.pod pod/perlrun.pod pod/pod2man.PL
-	   ! pp_ctl.c pp_sys.c t/lib/complex.t t/pragma/locale.t toke.c
-	   ! utils/perlbug.PL win32/Makefile win32/makefile.mk
-           ! win32/win32.c
-____________________________________________________________________________
-[    81] By: TimBunce                              on 1997/09/30  13:17:27
-        Log: Maintenance 5.004_02 changes
-     Branch: maint-5.004/perl
-           + win32/bin/runperl.bat
-	   ! Changes Configure INSTALL MANIFEST Makefile.SH Porting/patchls
-	   ! README.os2 README.win32 Todo XSUB.h av.c configpm doio.c
-	   ! dosish.h embed.h ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
-	   ! ext/DB_File/typemap ext/GDBM_File/typemap ext/IO/IO.xs
-	   ! ext/IO/lib/IO/File.pm ext/IO/lib/IO/Handle.pm
-	   ! ext/IO/lib/IO/Socket.pm ext/NDBM_File/typemap
-	   ! ext/ODBM_File/ODBM_File.xs ext/POSIX/POSIX.xs
-	   ! ext/SDBM_File/typemap global.sym gv.c hints/cxux.sh
-	   ! hints/os2.sh hints/sunos_4_1.sh hints/svr4.sh installhtml
-	   ! lib/Bundle/CPAN.pm lib/CPAN.pm lib/CPAN/FirstTime.pm
-	   ! lib/CPAN/Nox.pm lib/Carp.pm lib/Class/Struct.pm
-	   ! lib/Exporter.pm lib/ExtUtils/Command.pm lib/ExtUtils/Embed.pm
-	   ! lib/ExtUtils/Install.pm lib/ExtUtils/Liblist.pm
-	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
-	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm
-	   ! lib/ExtUtils/xsubpp lib/File/Compare.pm lib/File/Copy.pm
-	   ! lib/File/Find.pm lib/File/Path.pm lib/FileHandle.pm
-	   ! lib/I18N/Collate.pm lib/IPC/Open3.pm lib/Net/hostent.pm
-	   ! lib/Pod/Html.pm lib/Shell.pm lib/Sys/Hostname.pm
-	   ! lib/Sys/Syslog.pm lib/Term/ReadLine.pm lib/Time/Local.pm
-	   ! lib/UNIVERSAL.pm lib/dumpvar.pl lib/ftp.pl lib/perl5db.pl
-	   ! malloc.c mg.c op.c opcode.pl os2/Changes os2/Makefile.SHs
-	   ! os2/diff.configure os2/os2.c os2/os2ish.h patchlevel.h perl.c
-	   ! perl.h pod/perlapio.pod pod/perlbook.pod pod/perldebug.pod
-	   ! pod/perldelta.pod pod/perldiag.pod pod/perlembed.pod
-	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlop.pod
-	   ! pod/perlre.pod pod/perlrun.pod pod/perltoc.pod
-	   ! pod/perltrap.pod pod/perlvar.pod pod/perlxstut.pod
-	   ! pod/pod2man.PL pod/splitpod pp.c pp_ctl.c pp_hot.c pp_sys.c
-	   ! proto.h regcomp.c regexec.c scope.c sv.c t/TEST t/base/lex.t
-	   ! t/comp/cmdopt.t t/comp/term.t t/lib/db-btree.t t/lib/db-hash.t
-	   ! t/lib/db-recno.t t/lib/filehand.t t/lib/gdbm.t t/lib/ndbm.t
-	   ! t/lib/odbm.t t/lib/sdbm.t t/op/local.t t/op/magic.t
-	   ! t/op/pack.t t/op/re_tests t/op/ref.t t/op/regexp.t t/op/stat.t
-	   ! t/op/substr.t t/op/universal.t toke.c universal.c util.c
-	   ! utils/Makefile utils/h2ph.PL utils/perlbug.PL utils/perldoc.PL
-	   ! vms/config.vms vms/descrip.mms vms/ext/filespec.t
-	   ! vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c
-	   ! vms/vmsish.h win32/Makefile win32/bin/pl2bat.bat
-	   ! win32/config.bc win32/config.vc win32/config_H.bc
-	   ! win32/config_H.vc win32/config_h.PL win32/makedef.pl
-	   ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h
-	   ! win32/win32io.c win32/win32io.h win32/win32iop.h
-           ! win32/win32sck.c
-____________________________________________________________________________
-[    80] By: nick                                  on 1997/09/29  20:31:43
-        Log: Add some prototypes in attempt to flush out errors
-             Tidy up vars.h usage.
-     Branch: oneperl
-	   ! av.c embed.h hv.c opcode.h perl.c perl.h perlio.c pp_sys.c
-           ! proto.h util.c vars.h
-____________________________________________________________________________
-[    79] By: nick                                  on 1997/09/29  17:12:07
-        Log: Builds and passes tests without THISPTR
-     Branch: oneperl
-           ! MANIFEST global.sym perl.c perl.h vars.h
-____________________________________________________________________________
-[    78] By: mbeattie                              on 1997/09/29  16:57:23
-        Log: Re-introduce the changes from change 68 (runops becomes a
-             function pointer and sv_bless3 for '~'-magic) which got lost
-             during the preparation for the maint-merge.
-     Branch: perl
-           ! global.sym perl.h pp.c proto.h run.c sv.c
-____________________________________________________________________________
-[    77] By: mbeattie                              on 1997/09/29  16:44:16
-        Log: Start merge with maint-5.004 branch by creating an ancestral
-             branch point via a fake resolution with the maint-merge branch.
-             See Perforce Tech Note 9 for details.
-     Branch: perl
-          !> (integrate 864 files)
-____________________________________________________________________________
-[    76] By: nick                                  on 1997/09/28  19:04:42
-        Log: Code with this pointer compiles (but core dumps)
-     Branch: oneperl
-	   ! EXTERN.h INTERN.h XSUB.h av.c av.h cop.h cv.h deb.c doio.c
-	   ! doop.c dosish.h dump.c form.h gv.c gv.h handy.h hv.c hv.h
-	   ! keywords.h mg.c mg.h miniperlmain.c nostdio.h op.c op.h
-	   ! opcode.h patchlevel.h perl.c perl.h perlio.c perlio.h
-	   ! perlsdio.h perlsfio.h perly.c perly.c.diff perly.h perly.y
-	   ! pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c
-	   ! regcomp.h regexec.c regexp.h run.c scope.c scope.h sv.c sv.h
-	   ! taint.c thread.h toke.c universal.c unixish.h util.c util.h
-           ! vars.h
-____________________________________________________________________________
-[    75] By: nick                                  on 1997/09/28  15:45:35
-        Log: Quasi sensible starting point for aTHIS addition.
-     Branch: oneperl
-           ! perl.c perl.h pp_ctl.c sv.c thread.h toke.c util.c
-____________________________________________________________________________
-[    74] By: nick                                  on 1997/09/28  11:23:32
-        Log: Ooops - unwind perly.* stuff for now
-     Branch: oneperl
-           ! perly.c perly.h perly.y vms/perly_c.vms vms/perly_h.vms
-____________________________________________________________________________
-[    73] By: nick                                  on 1997/09/28  11:17:23
-        Log: Builds and passes all tests again
-     Branch: oneperl
-	   ! embed.pl ext/DB_File/DB_File.xs gv.c perl.c perl.h perly.y
-           ! pp.h proto.h thread.sym vms/perly_c.vms vms/perly_h.vms
-____________________________________________________________________________
-[    72] By: nick                                  on 1997/09/28  10:47:01
-        Log: Save "important things" before re-try
-     Branch: oneperl
-           + vars.h
-           ! embed.pl thread.h thread.sym
-____________________________________________________________________________
-[    71] By: nick                                  on 1997/09/26  17:47:31
-        Log: Basic hacks to build with USE_THISPTR, not yet useful
-             but builds miniperl and passes minitest with all thread 
-             variables via a _GLOBAL_ thr variable rather than globals.
-             Now for the local thr variable ...
-     Branch: oneperl
-           + thread.sym
-	   ! MANIFEST README.threads XSUB.h av.c cv.h deb.c doio.c doop.c
-	   ! dump.c embed.pl ext/DB_File/DB_File.xs gv.c hints/solaris_2.sh
-	   ! hv.c mg.c op.c perl.c perl.h pp.c pp_ctl.c pp_hot.c pp_sys.c
-	   ! proto.h regcomp.c regexec.c run.c scope.c sv.c thread.h toke.c
-           ! util.c vms/vms.c
-____________________________________________________________________________
-[    70] By: mbeattie                              on 1997/09/23  14:29:23
-        Log: Branch oneperl from mainline.
-     Branch: oneperl
-          +> (branch 871 files)
-____________________________________________________________________________
-[    69] By: mbeattie                              on 1997/09/22  16:02:37
-        Log: struct thread now stored in an SV and uses '~'-magic for access.
-     Branch: perl
-           ! thread.h
-     Branch: perlext
-           ! Thread/Thread.xs Thread/typemap
-____________________________________________________________________________
-[    68] By: mbeattie                              on 1997/09/22  16:01:48
-        Log: runops becomes a funtion pointer and sv_bless3 created
-             to avoid pointer forgery with '~'-magic.
-     Branch: perl
-           ! global.sym perl.c perl.h pp.c proto.h run.c sv.c
-____________________________________________________________________________
-[    67] By: mbeattie                              on 1997/09/22  15:45:56
-        Log: More fprintf -> PerlIO_printf changes.
-     Branch: perl
-           ! perl.c pp_hot.c util.c
-____________________________________________________________________________
-[    66] By: mbeattie                              on 1997/09/22  15:10:40
-        Log: Minor multi-threading patches for VMS.
-     Branch: perl
-           ! mg.c thread.h vms/vms.c
-____________________________________________________________________________
-[    65] By: mbeattie                              on 1997/09/15  14:09:11
-        Log: Add undefined-subs option to Lint.pm.
-     Branch: perlext
-           ! Compiler/B/Lint.pm
-____________________________________________________________________________
-[    64] By: mbeattie                              on 1997/09/10  16:39:41
-        Log: Debugging output for lock handling.
-     Branch: perl
-           ! mg.c pp.c pp_hot.c util.c
-____________________________________________________________________________
-[    63] By: mbeattie                              on 1997/09/10  14:49:00
-        Log: Move Thread/Semaphore.pm to Thread/Thread/Semaphore.pm
-     Branch: perlext
-          +> Thread/Thread/Semaphore.pm
-           - Thread/Semaphore.pm
-____________________________________________________________________________
-[    62] By: mbeattie                              on 1997/09/10  14:47:31
-        Log: Move Thread/Queue.pm to Thread/Thread/Queue.pm
-     Branch: perlext
-          +> Thread/Thread/Queue.pm
-           - Thread/Queue.pm
-____________________________________________________________________________
-[    61] By: mbeattie                              on 1997/09/10  13:56:50
-        Log: Solaris fixes: delete pad and padname from thread.h and remove
-             MUTEX_* stuff when malloc.c gets copied to x2p/malloc.c.
-     Branch: perl
-           ! thread.h x2p/Makefile.SH
-
-----------------
-Version 5.004_50        First developer release towards 5.005
-----------------
-
-Maintenance of the 5.004 version of perl continues with the 5.004_xx
-series, where 'xx' is <= 49.  Development of the next version, 5.005,
-starts with 5.004_50.
-
-____________________________________________________________________________
-[    60] By: mbeattie                              on 1997/09/09  16:57:41
-        Log: Update README.threads to mention -DL.
-     Branch: perl
-           ! README.threads
-____________________________________________________________________________
-[    59] By: mbeattie                              on 1997/09/09  16:49:08
-        Log: Add Thread modules Queue.pm and Semaphore.pm
-     Branch: perlext
-           + Thread/Queue.pm Thread/Semaphore.pm
-____________________________________________________________________________
-[    58] By: mbeattie                              on 1997/09/09  16:33:45
-        Log: Update README.threads
-     Branch: perl
-           ! README.threads
-____________________________________________________________________________
-[    57] By: mbeattie                              on 1997/09/09  16:26:47
-        Log: Add debug info to Thread typemap.
-     Branch: perlext
-           ! Thread/typemap
-____________________________________________________________________________
-[    56] By: mbeattie                              on 1997/09/09  15:04:26
-        Log: Rewrite synchronisation of subs/methods and add attrs
-             extension for specifying 'locked' and 'method' attributes.
-     Branch: perl
-           + ext/attrs/Makefile.PL ext/attrs/attrs.pm ext/attrs/attrs.xs
-	   ! MANIFEST cv.h embed.h global.sym op.c perl.c pp.c pp_ctl.c
-           ! pp_hot.c proto.h sv.c sv.h toke.c
-     Branch: perlext
-	   ! Thread/Thread.pm Thread/Thread.xs Thread/sync.t Thread/sync2.t
-____________________________________________________________________________
-[    55] By: mbeattie                              on 1997/09/03  16:34:47
-        Log: Add new keyword "lock" to Opcode.pm
-     Branch: perl
-           ! ext/Opcode/Opcode.pm
-____________________________________________________________________________
-[    54] By: mbeattie                              on 1997/09/03  14:44:44
-        Log: Run embed.pl and keywords.pl to complete RESTART -> INIT change
-     Branch: perl
-           ! embed.h keywords.h
-____________________________________________________________________________
-[    53] By: mbeattie                              on 1997/09/03  13:52:24
-        Log: Add to MANIFEST: README.threads, lib/ISA.pm, lib/Class/Fields.pm
-     Branch: perl
-           ! MANIFEST
-____________________________________________________________________________
-[    52] By: mbeattie                              on 1997/09/03  13:41:20
-        Log: Let Lint private_names catch out-of-package _foo methods.
-     Branch: perlext
-           ! Compiler/B/Lint.pm
-____________________________________________________________________________
-[    51] By: mbeattie                              on 1997/09/03  13:20:12
-        Log: Bump patchlevel.h to 5.004_50
-     Branch: perl
-           ! patchlevel.h
-____________________________________________________________________________
-[    50] By: mbeattie                              on 1997/09/03  12:31:48
-        Log: Make compiler build/work with devel 5.005
-     Branch: perlext
-	   ! Compiler/B.xs Compiler/B/Asmdata.pm Compiler/bytecode.h
-           ! Compiler/bytecode.pl Compiler/byterun.c Compiler/byterun.h
-____________________________________________________________________________
-[    49] By: mbeattie                              on 1997/09/03  12:28:05
-        Log: Rename RESTART to INIT and associated changes
-     Branch: perl
-	   ! interp.sym keywords.pl op.c perl.c perl.h perly.c perly.y
-           ! toke.c vms/perly_c.vms
-____________________________________________________________________________
-[    48] By: mbeattie                              on 1997/09/02  15:54:27
-        Log: Added private-names option.
-     Branch: perlext
-           ! Compiler/B/Lint.pm
-____________________________________________________________________________
-[    47] By: mbeattie                              on 1997/09/02  11:54:55
-        Log: For compiler's CC, make PP_EVAL, PP_ENTERTRY work with JMPENV.
-     Branch: perlext
-           ! Compiler/cc_runtime.h
-____________________________________________________________________________
-[    46] By: mbeattie                              on 1997/08/28  19:40:08
-        Log: Missing sprintf in try_autoload.
-     Branch: perlext
-           ! Compiler/B/C.pm
-____________________________________________________________________________
-[    45] By: mbeattie                              on 1997/08/13  16:15:25
-        Log: Threading fixups for Digital UNIX.
-     Branch: perl
-           ! README.threads malloc.c perl.h toke.c
-____________________________________________________________________________
-[    44] By: mbeattie                              on 1997/08/11  15:46:29
-        Log: Assorted changes for multi-threading (now works rather more).
-     Branch: perl
-           + README.threads
-	   ! gv.c mg.c op.c perl.c perl.h pp_ctl.c pp_hot.c sv.c thread.h
-           ! toke.c util.c
-     Branch: perlext
-	   ! Thread/Makefile.PL Thread/Thread.xs Thread/lock.t
-           ! Thread/unsync.t
-____________________________________________________________________________
-[    43] By: mbeattie                              on 1997/08/08  14:11:00
-        Log: Made Lint check subs (and -u packages).
-             Added support for dollar_underscore and implicit $_ in foreach.
-     Branch: perlext
-           ! Compiler/B/Lint.pm
-____________________________________________________________________________
-[    42] By: TimBunce                              on 1997/07/25  17:15:57
-        Log: Maintenance 5.004_01 changes
-     Branch: maint-5.004/perl
-	   + Porting/makerel Porting/patchls hints/newsos4.sh
-	   + lib/File/DosGlob.pm lib/chat2.pl perlio.sym win32/config.bc
-	   + win32/config.vc win32/config_H.bc win32/config_H.vc
-           + win32/makefile.mk
-           - win32/config.H win32/config.w32
-	   ! Changes Configure EXTERN.h INSTALL MANIFEST Makefile.SH
-	   ! Porting/pumpkin.pod README README.win32 doio.c embed.h
-	   ! ext/DynaLoader/dl_aix.xs ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
-	   ! ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL
-	   ! global.sym hints/next_3.sh hints/next_4.sh hints/svr4.sh
-	   ! installhtml installman lib/AutoLoader.pm lib/AutoSplit.pm
-	   ! lib/CGI/Push.pm lib/CPAN.pm lib/ExtUtils/Install.pm
-	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Unix.pm
-	   ! lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MM_Win32.pm
-	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm
-	   ! lib/ExtUtils/xsubpp lib/Pod/Html.pm lib/Pod/Text.pm
-	   ! lib/Sys/Syslog.pm lib/Term/ReadLine.pm lib/Test/Harness.pm
-	   ! lib/ftp.pl mg.c op.c patchlevel.h perl.c perl.h perl_exp.SH
-	   ! perlio.c pod/checkpods.PL pod/perlbook.pod pod/perldata.pod
-	   ! pod/perldebug.pod pod/perldelta.pod pod/perldiag.pod
-	   ! pod/perlembed.pod pod/perlfaq4.pod pod/perlfaq8.pod
-	   ! pod/perlfaq9.pod pod/perlfunc.pod pod/perlguts.pod
-	   ! pod/perllol.pod pod/perlop.pod pod/perlrun.pod pod/perlsub.pod
-	   ! pod/perltoc.pod pod/perltoot.pod pod/pod2man.PL pod/roffitall
-	   ! pod/splitpod pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c
-	   ! regcomp.h regexec.c sv.c t/lib/safe2.t t/op/flip.t
-	   ! t/op/groups.t t/op/magic.t t/op/mkdir.t t/op/re_tests
-	   ! t/op/regexp.t t/op/split.t t/op/stat.t t/op/subst.t
-	   ! t/op/taint.t util.c utils/Makefile utils/h2xs.PL
-	   ! utils/perlbug.PL vms/ext/DCLsym/DCLsym.pm
-	   ! vms/ext/Stdio/Stdio.pm vms/gen_shrfls.pl vms/perlvms.pod
-	   ! win32/Makefile win32/config_sh.PL win32/include/sys/socket.h
-	   ! win32/makedef.pl win32/makeperldef.pl win32/perlglob.c
-	   ! win32/perllib.c win32/win32.c win32/win32.h win32/win32io.c
-           ! win32/win32io.h win32/win32iop.h win32/win32sck.c
-____________________________________________________________________________
-[    41] By: mbeattie                              on 1997/07/24  14:57:53
-        Log: Start support for fake threads.
-             pp_lock now returns its argument.
-     Branch: perl
-	   ! MANIFEST Makefile.SH cv.h op.c opcode.h opcode.pl perl.c
-	   ! perl.h pp.c pp_ctl.c pp_hot.c proto.h sv.h thread.h toke.c
-           ! util.c
-     Branch: perlext
-           ! Thread/Thread.xs
-____________________________________________________________________________
-[    40] By: mbeattie                              on 1997/07/24  14:55:07
-        Log: Add missing reset of eval_owner if doeval() fails to parse.
-     Branch: perl
-           ! pp_ctl.c
-____________________________________________________________________________
-[    39] By: mbeattie                              on 1997/07/17  13:35:51
-        Log: Fix multiple problems with lexical @_.
-     Branch: perl
-	   ! cop.h op.c perl.c pp.c pp_ctl.c pp_hot.c t/op/do.t thread.h
-           ! toke.c
-____________________________________________________________________________
-[    38] By: mbeattie                              on 1997/07/16  17:02:09
-        Log: Change %lx to %x in B::CV::save to prevent some CV
-             fields becoming 0 in the init section. Add missing
-             write_back in B::Stackobj::Padsv::load_double to fix
-             test 22 of op/my.t.
-     Branch: perlext
-           ! Compiler/B/C.pm Compiler/B/Stackobj.pm
-____________________________________________________________________________
-[    37] By: mbeattie                              on 1997/07/10  11:28:16
-        Log: Branch win32 developments from main perl branch.
-     Branch: win32/perl
-          +> (branch 867 files)
-____________________________________________________________________________
-[    36] By: mbeattie                              on 1997/07/05  11:58:05
-        Log: B::CC::pp_padsv must cope with vivify_ref (5.004)
-             as well as provide_ref (5.003).
-     Branch: perlext
-           ! Compiler/B/C.pm Compiler/B/CC.pm Compiler/NOTES
-____________________________________________________________________________
-[    35] By: mbeattie                              on 1997/07/05  11:55:18
-        Log: Introduce pp_lock.
-     Branch: perl
-	   ! embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl
-           ! pp.c pp_ctl.c toke.c
-____________________________________________________________________________
-[    34] By: mbeattie                              on 1997/07/01  12:24:28
-        Log: Support for op in global register (still buggy)
-     Branch: perl
-	   ! embed.h global.sym gv.c op.c perl.c perl.h pp_ctl.c pp_sys.c
-           ! proto.h scope.c scope.h thread.h
-____________________________________________________________________________
-[    33] By: mbeattie                              on 1997/06/24  16:34:24
-        Log: Branch lexical warnings from perl branch.
-     Branch: lexwarn/perl
-          +> (branch 867 files)
-____________________________________________________________________________
-[    32] By: mbeattie                              on 1997/06/24  14:33:57
-        Log: Branch integration of maint-5.004 from relperl.
-     Branch: mainline/perl
-          +> (branch 600 files)
-     Branch: maint-5.004/perl
-          +> (branch 864 files)
-____________________________________________________________________________
-[    31] By: mbeattie                              on 1997/06/20  11:46:50
-        Log: corrected bad_type() prototype. 
-     Branch: perl
-           ! op.c
-____________________________________________________________________________
-[    30] By: mbeattie                              on 1997/06/12  12:38:05
-        Log: Tweak README.
-     Branch: perlext
-           ! Thread/README
-____________________________________________________________________________
-[    29] By: mbeattie                              on 1997/06/12  12:34:59
-        Log: Document -m option of CC backend.
-     Branch: perlext
-           ! Compiler/NOTES
-____________________________________________________________________________
-[    28] By: mbeattie                              on 1997/06/12  12:25:05
-        Log: Support sysseek introduced in 5.004.
-     Branch: perlext
-           ! Compiler/ccop.c Compiler/ccop.h
-____________________________________________________________________________
-[    27] By: mbeattie                              on 1997/06/05  14:20:51
-        Log: More fixups for thrperl integration.
-     Branch: perl
-	   ! ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
-	   ! ext/Opcode/Makefile.PL ext/Opcode/Opcode.pm
-	   ! ext/Opcode/Opcode.xs gv.c hv.c mg.c op.c perl.c perly.c
-	   ! perly.y pp.c pp_ctl.c run.c scope.c sv.c sv.h thread.h toke.c
-           ! util.c
-____________________________________________________________________________
-[    25] By: mbeattie                              on 1997/05/28  15:11:24
-        Log: Fixups for thrperl integration.
-     Branch: perl
-           ! embed.h keywords.h op.c opcode.h perl.c util.c
-____________________________________________________________________________
-[    24] By: mbeattie                              on 1997/05/26  20:10:42
-        Log: Integrate thrperl 5.003->5.004.
-     Branch: perl
-          +> thread.h
-          !> (integrate 33 files)
-____________________________________________________________________________
-[    23] By: mbeattie                              on 1997/05/26  11:45:39
-        Log: Fix ppname when saving subs.
-     Branch: perlext
-           ! Compiler/B/C.pm
-____________________________________________________________________________
-[    22] By: mbeattie                              on 1997/05/26  11:45:03
-        Log: -mFoo option now forces -uFoo.
-     Branch: perlext
-           ! Compiler/B/CC.pm
-____________________________________________________________________________
-[    21] By: mbeattie                              on 1997/05/26  11:43:37
-        Log: Put back objsym/savesym (used by walkoptree_exec).
-     Branch: perlext
-           ! Compiler/B.pm
-____________________________________________________________________________
-[    20] By: mbeattie                              on 1997/05/26  11:38:45
-        Log: Add avhv_store_ent. Add missing avhv_* to global.sym.
-     Branch: perl
-           ! av.c global.sym
-____________________________________________________________________________
-[    19] By: mbeattie                              on 1997/05/25  21:19:38
-        Log: Fix up integration 5.003->5.004.
-     Branch: perl
-           + lib/Class/Fields.pm lib/ISA.pm
-	   ! av.c ext/DB_File/DB_File.xs perl.c pp.c pp_hot.c proto.h
-           ! toke.c
-____________________________________________________________________________
-[    18] By: mbeattie                              on 1997/05/25  10:31:21
-        Log: First stab at 5.003 -> 5.004 integration.
-     Branch: perl
-          +> (branch 291 files)
-	   - Changes.Conf ext/DynaLoader/dl_os2.xs
-	   - ext/FileHandle/FileHandle.pm ext/FileHandle/FileHandle.xs
-	   - ext/FileHandle/Makefile.PL ext/SDBM_File/sdbm/readme.ps
-	   - ext/Safe/Makefile.PL ext/Safe/Safe.pm ext/Safe/Safe.xs
-	   - hints/aux.sh hints/dnix.sh hints/irix_6_2.sh lib/chat2.inter
-	   - lib/chat2.pl lib/splain os2/README os2/README.old
-	   - os2/diff.db_file os2/notes pod/perlovl.pod t/lib/safe.t
-	   - t/op/overload.t t/re_tests vms/Makefile x2p/a2p.man
-           - x2p/handy.h x2p/s2p.man
-          !> (integrate 392 files)
-____________________________________________________________________________
-[    17] By: mbeattie                              on 1997/05/24  18:46:49
-        Log: Wholesale update to 5.004.
-     Branch: relperl
-	   + Changes5.000 Changes5.001 Changes5.002 Changes5.003
-	   + Porting/Glossary Porting/pumpkin.pod README.amiga
-	   + README.cygwin32 README.os2 README.plan9 README.qnx
-	   + README.win32 compat3.sym configure.gnu cygwin32/cw32imp.h
-	   + cygwin32/gcc2 cygwin32/ld2 cygwin32/perlgcc cygwin32/perlld
-	   + eg/cgi/RunMeFirst eg/cgi/clickable_image.cgi eg/cgi/cookie.cgi
-	   + eg/cgi/crash.cgi eg/cgi/customize.cgi eg/cgi/diff_upload.cgi
-	   + eg/cgi/file_upload.cgi eg/cgi/frameset.cgi eg/cgi/index.html
-	   + eg/cgi/internal_links.cgi eg/cgi/javascript.cgi
-	   + eg/cgi/monty.cgi eg/cgi/multiple_forms.cgi
-	   + eg/cgi/nph-clock.cgi eg/cgi/popup.cgi eg/cgi/save_state.cgi
-	   + eg/cgi/tryit.cgi eg/cgi/wilogo.gif.uu
-	   + ext/DynaLoader/dl_cygwin32.xs ext/IO/IO.pm ext/IO/IO.xs
-	   + ext/IO/Makefile.PL ext/IO/README ext/IO/lib/IO/File.pm
-	   + ext/IO/lib/IO/Handle.pm ext/IO/lib/IO/Pipe.pm
-	   + ext/IO/lib/IO/Seekable.pm ext/IO/lib/IO/Select.pm
-	   + ext/IO/lib/IO/Socket.pm ext/NDBM_File/hints/dec_osf.pl
-	   + ext/NDBM_File/hints/dynixptx.pl ext/ODBM_File/hints/hpux.pl
-	   + ext/ODBM_File/hints/ultrix.pl ext/Opcode/Makefile.PL
-	   + ext/Opcode/Opcode.pm ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
-	   + ext/Opcode/ops.pm ext/POSIX/hints/next_3.pl hints/amigaos.sh
-	   + hints/aux_3.sh hints/broken-db.msg hints/cygwin32.sh
-	   + hints/dcosx.sh hints/irix_6_0.sh hints/irix_6_1.sh
-	   + hints/lynxos.sh hints/next_4.sh hints/qnx.sh hints/umips.sh
-	   + hints/unicosmk.sh installhtml lib/Bundle/CPAN.pm lib/CGI.pm
-	   + lib/CGI/Apache.pm lib/CGI/Carp.pm lib/CGI/Fast.pm
-	   + lib/CGI/Push.pm lib/CGI/Switch.pm lib/CPAN.pm
-	   + lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm lib/Class/Struct.pm
-	   + lib/ExtUtils/Command.pm lib/ExtUtils/Embed.pm
-	   + lib/ExtUtils/MM_Win32.pm lib/File/Compare.pm lib/File/stat.pm
-	   + lib/FileHandle.pm lib/FindBin.pm lib/Math/Trig.pm
-	   + lib/Net/hostent.pm lib/Net/netent.pm lib/Net/protoent.pm
-	   + lib/Net/servent.pm lib/Pod/Html.pm lib/Tie/RefHash.pm
-	   + lib/Time/gmtime.pm lib/Time/localtime.pm lib/Time/tm.pm
-	   + lib/UNIVERSAL.pm lib/User/grent.pm lib/User/pwent.pm
-	   + lib/autouse.pm lib/blib.pm lib/constant.pm lib/locale.pm
-	   + nostdio.h os2/Changes os2/OS2/ExtAttr/Changes
-	   + os2/OS2/ExtAttr/ExtAttr.pm os2/OS2/ExtAttr/ExtAttr.xs
-	   + os2/OS2/ExtAttr/MANIFEST os2/OS2/ExtAttr/Makefile.PL
-	   + os2/OS2/ExtAttr/myea.h os2/OS2/ExtAttr/t/os2_ea.t
-	   + os2/OS2/ExtAttr/typemap os2/OS2/PrfDB/Changes
-	   + os2/OS2/PrfDB/MANIFEST os2/OS2/PrfDB/Makefile.PL
-	   + os2/OS2/PrfDB/PrfDB.pm os2/OS2/PrfDB/PrfDB.xs
-	   + os2/OS2/PrfDB/t/os2_prfdb.t os2/OS2/PrfDB/typemap
-	   + os2/OS2/Process/MANIFEST os2/OS2/Process/Makefile.PL
-	   + os2/OS2/Process/Process.pm os2/OS2/Process/Process.xs
-	   + os2/OS2/REXX/Changes os2/OS2/REXX/MANIFEST
-	   + os2/OS2/REXX/Makefile.PL os2/OS2/REXX/REXX.pm
-	   + os2/OS2/REXX/REXX.xs os2/OS2/REXX/t/rx_cmprt.t
-	   + os2/OS2/REXX/t/rx_dllld.t os2/OS2/REXX/t/rx_objcall.t
-	   + os2/OS2/REXX/t/rx_sql.test os2/OS2/REXX/t/rx_tiesql.test
-	   + os2/OS2/REXX/t/rx_tievar.t os2/OS2/REXX/t/rx_tieydb.t
-	   + os2/OS2/REXX/t/rx_varset.t os2/OS2/REXX/t/rx_vrexx.t
-	   + os2/dl_os2.c os2/dlfcn.h perlio.c perlio.h perlsdio.h
-	   + perlsfio.h plan9/aperl plan9/arpa/inet.h plan9/buildinfo
-	   + plan9/config.plan9 plan9/exclude plan9/fndvers
-	   + plan9/genconfig.pl plan9/mkfile plan9/myconfig.plan9
-	   + plan9/perlplan9.doc plan9/perlplan9.pod plan9/plan9.c
-	   + plan9/plan9ish.h plan9/setup.rc plan9/versnum pod/checkpods.PL
-	   + pod/perlapio.pod pod/perldelta.pod pod/perlfaq.pod
-	   + pod/perlfaq1.pod pod/perlfaq2.pod pod/perlfaq3.pod
-	   + pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfaq6.pod
-	   + pod/perlfaq7.pod pod/perlfaq8.pod pod/perlfaq9.pod
-	   + pod/perllocale.pod pod/perlmodlib.pod pod/perltoot.pod
-	   + pod/rofftoc qnx/ar qnx/cpp t/comp/colon.t t/comp/proto.t
-	   + t/comp/redef.t t/comp/use.t t/io/read.t t/lib/abbrev.t
-	   + t/lib/autoloader.t t/lib/basename.t t/lib/checktree.t
-	   + t/lib/complex.t t/lib/env.t t/lib/filecache.t t/lib/filecopy.t
-	   + t/lib/filefind.t t/lib/filepath.t t/lib/findbin.t
-	   + t/lib/getopt.t t/lib/hostname.t t/lib/io_dup.t t/lib/io_pipe.t
-	   + t/lib/io_sel.t t/lib/io_sock.t t/lib/io_taint.t
-	   + t/lib/io_tell.t t/lib/io_udp.t t/lib/io_xs.t t/lib/opcode.t
-	   + t/lib/open2.t t/lib/open3.t t/lib/ops.t t/lib/parsewords.t
-	   + t/lib/safe1.t t/lib/safe2.t t/lib/searchdict.t
-	   + t/lib/selectsaver.t t/lib/symbol.t t/lib/texttabs.t
-	   + t/lib/textwrap.t t/lib/timelocal.t t/lib/trig.t t/op/arith.t
-	   + t/op/assignwarn.t t/op/bop.t t/op/closure.t t/op/cmp.t
-	   + t/op/gv.t t/op/inc.t t/op/method.t t/op/recurse.t
-	   + t/op/runlevel.t t/op/sysio.t t/op/taint.t t/op/tie.t
-	   + t/op/universal.t t/pragma/constant.t t/pragma/locale.t
-	   + t/pragma/overload.t t/pragma/strict-refs t/pragma/strict-subs
-	   + t/pragma/strict-vars t/pragma/strict.t t/pragma/subs.t
-	   + t/pragma/warn-1global t/pragma/warning.t universal.c
-	   + utils/splain.PL vms/ext/DCLsym/0README.txt
-	   + vms/ext/DCLsym/DCLsym.pm vms/ext/DCLsym/DCLsym.xs
-	   + vms/ext/DCLsym/Makefile.PL vms/ext/DCLsym/test.pl
-	   + vms/ext/XSSymSet.pm vms/ext/filespec.t vms/ext/vmsish.pm
-	   + vms/ext/vmsish.t win32/Makefile win32/TEST win32/autosplit.pl
-	   + win32/bin/network.pl win32/bin/pl2bat.bat win32/bin/search.bat
-	   + win32/bin/test.bat win32/bin/webget.bat win32/bin/www.pl
-	   + win32/config.H win32/config.w32 win32/config_h.PL
-	   + win32/config_sh.PL win32/dl_win32.xs win32/genxsdef.pl
-	   + win32/include/arpa/inet.h win32/include/dirent.h
-	   + win32/include/netdb.h win32/include/sys/socket.h
-	   + win32/makedef.pl win32/makemain.pl win32/makeperldef.pl
-	   + win32/perlglob.c win32/perllib.c win32/pod.mak win32/runperl.c
-	   + win32/splittree.pl win32/win32.c win32/win32.h win32/win32io.c
-	   + win32/win32io.h win32/win32iop.h win32/win32sck.c x2p/a2p.pod
-           + x2p/proto.h
-	   - Changes.Conf ext/DynaLoader/dl_os2.xs
-	   - ext/FileHandle/FileHandle.pm ext/FileHandle/FileHandle.xs
-	   - ext/FileHandle/Makefile.PL ext/SDBM_File/sdbm/readme.ps
-	   - ext/Safe/Makefile.PL ext/Safe/Safe.pm ext/Safe/Safe.xs
-	   - hints/aux.sh hints/dnix.sh hints/irix_6_2.sh lib/chat2.inter
-	   - lib/chat2.pl lib/splain os2/README os2/README.old
-	   - os2/diff.db_file os2/notes pod/perlovl.pod t/lib/safe.t
-	   - t/op/overload.t t/re_tests vms/Makefile x2p/a2p.man
-           - x2p/handy.h x2p/s2p.man
-	   ! Artistic Changes Configure EXTERN.h INSTALL INTERN.h MANIFEST
-	   ! Makefile.SH README README.vms Todo XSUB.h av.c av.h cflags.SH
-	   ! config_H config_h.SH configpm configure cop.h cv.h deb.c
-	   ! doio.c doop.c dosish.h dump.c eg/README eg/nih
-	   ! eg/sysvipc/ipcmsg eg/sysvipc/ipcsem eg/sysvipc/ipcshm
-	   ! emacs/cperl-mode.el embed.h embed.pl ext/DB_File/DB_File.pm
-	   ! ext/DB_File/DB_File.xs ext/DB_File/Makefile.PL
-	   ! ext/DB_File/typemap ext/DynaLoader/DynaLoader.pm
-	   ! ext/DynaLoader/Makefile.PL ext/DynaLoader/dl_aix.xs
-	   ! ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_dlopen.xs
-	   ! ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_next.xs
-	   ! ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c
-	   ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
-	   ! ext/GDBM_File/GDBM_File.pm ext/NDBM_File/NDBM_File.pm
-	   ! ext/ODBM_File/ODBM_File.pm ext/ODBM_File/ODBM_File.xs
-	   ! ext/ODBM_File/hints/dec_osf.pl ext/POSIX/POSIX.pm
-	   ! ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs
-	   ! ext/SDBM_File/Makefile.PL ext/SDBM_File/SDBM_File.pm
-	   ! ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/pair.c
-	   ! ext/SDBM_File/sdbm/pair.h ext/SDBM_File/sdbm/sdbm.3
-	   ! ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
-	   ! ext/Socket/Socket.pm ext/Socket/Socket.xs ext/util/make_ext
-	   ! form.h global.sym gv.c gv.h handy.h hints/3b1.sh
-	   ! hints/README.hints hints/aix.sh hints/apollo.sh hints/bsdos.sh
-	   ! hints/convexos.sh hints/cxux.sh hints/dec_osf.sh hints/dgux.sh
-	   ! hints/dynixptx.sh hints/epix.sh hints/esix4.sh
-	   ! hints/freebsd.sh hints/hpux.sh hints/irix_4.sh hints/irix_5.sh
-	   ! hints/irix_6.sh hints/isc.sh hints/linux.sh hints/machten.sh
-	   ! hints/machten_2.sh hints/mips.sh hints/mpeix.sh
-	   ! hints/netbsd.sh hints/next_3.sh hints/next_3_0.sh hints/os2.sh
-	   ! hints/powerux.sh hints/sco.sh hints/sco_2_3_3.sh
-	   ! hints/sco_2_3_4.sh hints/solaris_2.sh hints/sunos_4_0.sh
-	   ! hints/sunos_4_1.sh hints/svr4.sh hints/titanos.sh
-	   ! hints/ultrix_4.sh hints/unicos.sh hints/utekv.sh hv.c hv.h
-	   ! installman installperl interp.sym keywords.h keywords.pl
-	   ! lib/AnyDBM_File.pm lib/AutoLoader.pm lib/AutoSplit.pm
-	   ! lib/Benchmark.pm lib/Carp.pm lib/Cwd.pm
-	   ! lib/Devel/SelfStubber.pm lib/English.pm lib/Env.pm
-	   ! lib/Exporter.pm lib/ExtUtils/Install.pm
-	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_OS2.pm
-	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
-	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
-	   ! lib/ExtUtils/Mkbootstrap.pm lib/ExtUtils/Mksymlists.pm
-	   ! lib/ExtUtils/testlib.pm lib/ExtUtils/typemap
-	   ! lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Copy.pm
-	   ! lib/File/Find.pm lib/File/Path.pm lib/FileCache.pm
-	   ! lib/Getopt/Long.pm lib/Getopt/Std.pm lib/I18N/Collate.pm
-	   ! lib/IPC/Open2.pm lib/IPC/Open3.pm lib/Math/BigInt.pm
-	   ! lib/Math/Complex.pm lib/Net/Ping.pm lib/Pod/Functions.pm
-	   ! lib/Pod/Text.pm lib/Search/Dict.pm lib/SelectSaver.pm
-	   ! lib/SelfLoader.pm lib/Symbol.pm lib/Sys/Hostname.pm
-	   ! lib/Sys/Syslog.pm lib/Term/Cap.pm lib/Term/Complete.pm
-	   ! lib/Term/ReadLine.pm lib/Test/Harness.pm lib/Text/Abbrev.pm
-	   ! lib/Text/ParseWords.pm lib/Text/Soundex.pm lib/Text/Tabs.pm
-	   ! lib/Text/Wrap.pm lib/Tie/Hash.pm lib/Tie/Scalar.pm
-	   ! lib/Tie/SubstrHash.pm lib/Time/Local.pm lib/abbrev.pl
-	   ! lib/bigfloat.pl lib/bigint.pl lib/cacheout.pl lib/complete.pl
-	   ! lib/diagnostics.pm lib/dotsh.pl lib/dumpvar.pl lib/find.pl
-	   ! lib/finddepth.pl lib/ftp.pl lib/getcwd.pl lib/getopts.pl
-	   ! lib/importenv.pl lib/lib.pm lib/look.pl lib/newgetopt.pl
-	   ! lib/open2.pl lib/open3.pl lib/overload.pm lib/perl5db.pl
-	   ! lib/sigtrap.pm lib/strict.pm lib/subs.pm lib/syslog.pl
-	   ! lib/termcap.pl lib/timelocal.pl lib/validate.pl lib/vars.pm
-	   ! makeaperl.SH makedepend.SH malloc.c mg.c mg.h minimod.pl
-	   ! miniperlmain.c myconfig op.c op.h opcode.h opcode.pl
-	   ! os2/Makefile.SHs os2/diff.configure os2/os2.c os2/os2ish.h
-	   ! os2/perl2cmd.pl patchlevel.h perl.c perl.h perl_exp.SH perlsh
-	   ! perly.c perly.c.diff perly.h perly.y pod/Makefile pod/buildtoc
-	   ! pod/perl.pod pod/perlbook.pod pod/perlbot.pod pod/perlcall.pod
-	   ! pod/perldata.pod pod/perldebug.pod pod/perldiag.pod
-	   ! pod/perldsc.pod pod/perlembed.pod pod/perlform.pod
-	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlipc.pod
-	   ! pod/perllol.pod pod/perlmod.pod pod/perlobj.pod pod/perlop.pod
-	   ! pod/perlpod.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
-	   ! pod/perlsec.pod pod/perlstyle.pod pod/perlsub.pod
-	   ! pod/perlsyn.pod pod/perltie.pod pod/perltoc.pod
-	   ! pod/perltrap.pod pod/perlvar.pod pod/perlxs.pod
-	   ! pod/perlxstut.pod pod/pod2html.PL pod/pod2latex.PL
-	   ! pod/pod2man.PL pod/pod2text.PL pod/roffitall pp.c pp.h
-	   ! pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regcomp.h
-	   ! regexec.c regexp.h run.c scope.c scope.h sv.c sv.h t/README
-	   ! t/TEST t/base/lex.t t/base/term.t t/cmd/mod.t t/cmd/while.t
-	   ! t/comp/cpp.t t/comp/multiline.t t/comp/package.t
-	   ! t/comp/script.t t/harness t/io/argv.t t/io/dup.t t/io/fs.t
-	   ! t/io/inplace.t t/io/pipe.t t/io/tell.t t/lib/anydbm.t
-	   ! t/lib/bigintpm.t t/lib/db-btree.t t/lib/db-hash.t
-	   ! t/lib/db-recno.t t/lib/dirhand.t t/lib/filehand.t t/lib/gdbm.t
-	   ! t/lib/ndbm.t t/lib/odbm.t t/lib/posix.t t/lib/sdbm.t
-	   ! t/lib/socket.t t/op/chop.t t/op/delete.t t/op/each.t
-	   ! t/op/exec.t t/op/fork.t t/op/glob.t t/op/goto.t t/op/groups.t
-	   ! t/op/magic.t t/op/misc.t t/op/mkdir.t t/op/my.t t/op/oct.t
-	   ! t/op/pack.t t/op/pat.t t/op/quotemeta.t t/op/rand.t
-	   ! t/op/re_tests t/op/readdir.t t/op/ref.t t/op/regexp.t
-	   ! t/op/sleep.t t/op/sort.t t/op/split.t t/op/stat.t t/op/subst.t
-	   ! t/op/substr.t t/op/write.t taint.c toke.c unixish.h util.c
-	   ! util.h utils/Makefile utils/c2ph.PL utils/h2ph.PL
-	   ! utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL utils/pl2pm.PL
-	   ! vms/config.vms vms/descrip.mms vms/ext/Filespec.pm
-	   ! vms/ext/Stdio/Stdio.pm vms/ext/Stdio/Stdio.xs
-	   ! vms/ext/Stdio/test.pl vms/fndvers.com vms/gen_shrfls.pl
-	   ! vms/genconfig.pl vms/genopt.com vms/myconfig.com
-	   ! vms/perlvms.pod vms/perly_c.vms vms/perly_h.vms
-	   ! vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c
-	   ! vms/vms_yfix.pl vms/vmsish.h vms/writemain.pl writemain.SH
-	   ! x2p/EXTERN.h x2p/INTERN.h x2p/Makefile.SH x2p/a2p.c x2p/a2p.h
-	   ! x2p/a2p.y x2p/a2py.c x2p/cflags.SH x2p/find2perl.PL x2p/hash.c
-	   ! x2p/hash.h x2p/s2p.PL x2p/str.c x2p/str.h x2p/util.c
-           ! x2p/util.h x2p/walk.c
-____________________________________________________________________________
-[    16] By: mbeattie                              on 1997/05/23  22:42:08
-        Log: Initial integration of relperl from 5.003.
-     Branch: relperl
-          +> (branch 600 files)
-____________________________________________________________________________
-[    14] By: mbeattie                              on 1997/05/12  20:22:56
-        Log: Finish code generation rewrite. Clean up B::Section class and
-             handle symbol table translation internally. Simple .pm modules
-             now compile OK.
-     Branch: perlext
-	   ! Compiler/B.pm Compiler/B/Bblock.pm Compiler/B/C.pm
-           ! Compiler/B/CC.pm
-____________________________________________________________________________
-[    13] By: mbeattie                              on 1997/05/05  19:41:18
-        Log: Don't make pp_enter and pp_return trigger basic blocks.
-     Branch: perlext
-           ! Compiler/B/Bblock.pm
-____________________________________________________________________________
-[    12] By: mbeattie                              on 1997/05/05  19:40:16
-        Log: Rewrite code generation. Sections (de)multiplexed into a
-             temporary file instead of stored in arrays.
-     Branch: perlext
-           ! Compiler/B.pm Compiler/B/C.pm Compiler/B/CC.pm
-____________________________________________________________________________
-[    11] By: mbeattie                              on 1997/05/03  20:20:59
-        Log: Development to pre-alpha4
-     Branch: perlext
-	   + Compiler/B/Deparse.pm Compiler/B/Lint.pm Compiler/makeliblinks
-	   ! Compiler/B.pm Compiler/B.xs Compiler/B/Bblock.pm
-	   ! Compiler/B/Bytecode.pm Compiler/B/C.pm Compiler/B/CC.pm
-	   ! Compiler/B/Debug.pm Compiler/B/Terse.pm Compiler/B/Xref.pm
-	   ! Compiler/Makefile.PL Compiler/README Compiler/TESTS
-	   ! Compiler/assemble Compiler/bytecode.pl Compiler/byteperl.c
-	   ! Compiler/byterun.c Compiler/cc_runtime.h Compiler/disassemble
-           ! Compiler/test_harness Compiler/test_harness_cc
-____________________________________________________________________________
-[    10] By: mbeattie                              on 1997/05/03  14:47:06
-        Log: Initial check-in of perl compiler.
-     Branch: perlext
-	   + Compiler/Artistic Compiler/B.pm Compiler/B.xs
-	   + Compiler/B/Asmdata.pm Compiler/B/Assembler.pm
-	   + Compiler/B/Bblock.pm Compiler/B/Bytecode.pm Compiler/B/C.pm
-	   + Compiler/B/CC.pm Compiler/B/Debug.pm
-	   + Compiler/B/Disassembler.pm Compiler/B/Showlex.pm
-	   + Compiler/B/Stackobj.pm Compiler/B/Terse.pm Compiler/B/Xref.pm
-	   + Compiler/Copying Compiler/Makefile.PL Compiler/NOTES
-	   + Compiler/O.pm Compiler/README Compiler/TESTS
-	   + Compiler/TESTS.alpha2 Compiler/Todo Compiler/assemble
-	   + Compiler/bytecode.h Compiler/bytecode.pl Compiler/byteperl.c
-	   + Compiler/byterun.c Compiler/byterun.h Compiler/cc_harness
-	   + Compiler/cc_runtime.h Compiler/ccop.c Compiler/ccop.h
-	   + Compiler/disassemble Compiler/old/README.feb11
-	   + Compiler/old/TESTS.mar11 Compiler/old/TESTS.mar20
-	   + Compiler/old/TESTS.may11 Compiler/old/TESTS.pre-jul27
-	   + Compiler/op.patch Compiler/ramblings/cc.notes
-	   + Compiler/ramblings/curcop.runtime
-	   + Compiler/ramblings/dontparse.c Compiler/ramblings/flip-flop
-	   + Compiler/ramblings/foo.bench Compiler/ramblings/foo2.bench
-	   + Compiler/ramblings/foo3.bench Compiler/ramblings/magic
-	   + Compiler/ramblings/pp_i_add Compiler/ramblings/reg.alloc
-	   + Compiler/ramblings/runtime.porting
-	   + Compiler/ramblings/sort.notes Compiler/ramblings/sub.call
-	   + Compiler/ramblings/subst.notes Compiler/run_bytecode_test
-	   + Compiler/run_cc_test Compiler/run_test Compiler/test_harness
-	   + Compiler/test_harness_bytecode Compiler/test_harness_cc
-           + Compiler/typemap
-____________________________________________________________________________
-[     9] By: mbeattie                              on 1997/05/02  19:03:49
-        Log: Don't require CvDEPTH == 0 when bombing out of subs.
-     Branch: thrperl
-           ! pp_hot.c
-____________________________________________________________________________
-[     8] By: mbeattie                              on 1997/04/23  19:06:45
-        Log: Added programmer-level condition variables via "condpair" magic.
-             Added support for detached threads and tweaked a few things.
-     Branch: thrperl
-	   ! embed.h global.sym keywords.h mg.c opcode.h perl.c perl.h
-	   ! pp_ctl.c pp_hot.c proto.h run.c scope.c sv.c sv.h thread.h
-           ! util.c
-____________________________________________________________________________
-[     7] By: mbeattie                              on 1997/04/23  19:04:18
-        Log: Rewrote programmer-level condition variables from scratch. Added
-             support for detaching threads. Fixed handling for arguments
-             passed in to threads and return values for joined threads.
-     Branch: perlext
-           + Thread/lock.t
-	   ! Thread/README Thread/Thread.pm Thread/Thread.xs Thread/cond.t
-           ! Thread/typemap
-____________________________________________________________________________
-[     6] By: mbeattie                              on 1997/04/10  20:17:26
-        Log: Initial check-in of Thread module.
-     Branch: perlext
-	   + Thread/Makefile.PL Thread/Notes Thread/README Thread/Thread.pm
-	   + Thread/Thread.xs Thread/cond.t Thread/create.t Thread/io.t
-	   + Thread/join.t Thread/sync.t Thread/sync2.t Thread/typemap
-	   + Thread/unsync.t Thread/unsync2.t Thread/unsync3.t
-           + Thread/unsync4.t
-____________________________________________________________________________
-[     5] By: mbeattie                              on 1997/04/10  20:05:52
-        Log: Tweaks to allow compilation without -DUSE_THREADS and fix
-             missing parens (pad allocation) in the tokener.
-     Branch: thrperl
-           ! op.c pp_ctl.c toke.c
-____________________________________________________________________________
-[     4] By: mbeattie                              on 1997/03/28  18:40:44
-        Log: Initial 3-way merge from (5.001m, thr1m, 5.003) plus fixups.
-     Branch: thrperl
-           + thread.h
-	   ! XSUB.h av.c cv.h deb.c doio.c doop.c dump.c global.sym gv.c
-	   ! hv.c malloc.c mg.c op.c op.h opcode.h opcode.pl perl.c perl.h
-	   ! pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regexec.c
-           ! run.c scope.c sv.c sv.h toke.c util.c
-____________________________________________________________________________
-[     3] By: mbeattie                              on 1997/03/28  13:36:23
-        Log: Branch 5.003 -> thrperl
-     Branch: thrperl
-          +> (branch 600 files)
-____________________________________________________________________________
-[     2] By: mbeattie                              on 1997/03/28  13:32:21
-        Log: Initial devel changes.
-             Pseudo-hashes. Optional strong typing. RESTART {}.
-     Branch: perl
-	   ! av.c doop.c embed.h ext/DB_File/DB_File.xs global.sym
-	   ! interp.sym keywords.h keywords.pl lib/ExtUtils/xsubpp op.c
-           ! perl.c perl.h pp.c pp_hot.c proto.h t/op/groups.t toke.c
-____________________________________________________________________________
-[     1] By: mbeattie                              on 1997/03/28  13:17:33
-        Log: Perl 5.003 check-in
-     Branch: perl
-	   + Artistic Changes Changes.Conf Configure Copying EXTERN.h
-	   + INSTALL INTERN.h MANIFEST Makefile.SH README README.vms Todo
-	   + XSUB.h av.c av.h cflags.SH config_H config_h.SH configpm
-	   + configure cop.h cv.h deb.c doio.c doop.c dosish.h dump.c
-	   + eg/ADB eg/README eg/changes eg/client eg/down eg/dus eg/findcp
-	   + eg/findtar eg/g/gcp eg/g/gcp.man eg/g/ged eg/g/ghosts eg/g/gsh
-	   + eg/g/gsh.man eg/muck eg/muck.man eg/myrup eg/nih eg/relink
-	   + eg/rename eg/rmfrom eg/scan/scan_df eg/scan/scan_last
-	   + eg/scan/scan_messages eg/scan/scan_passwd eg/scan/scan_ps
-	   + eg/scan/scan_sudo eg/scan/scan_suid eg/scan/scanner eg/server
-	   + eg/shmkill eg/sysvipc/README eg/sysvipc/ipcmsg
-	   + eg/sysvipc/ipcsem eg/sysvipc/ipcshm eg/travesty eg/unuc
-	   + eg/uudecode eg/van/empty eg/van/unvanish eg/van/vanexp
-	   + eg/van/vanish eg/who eg/wrapsuid emacs/cperl-mode.el embed.h
-	   + embed.pl ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
-	   + ext/DB_File/DB_File_BS ext/DB_File/Makefile.PL
-	   + ext/DB_File/typemap ext/DynaLoader/DynaLoader.pm
-	   + ext/DynaLoader/Makefile.PL ext/DynaLoader/README
-	   + ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_dld.xs
-	   + ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs
-	   + ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_none.xs
-	   + ext/DynaLoader/dl_os2.xs ext/DynaLoader/dl_vms.xs
-	   + ext/DynaLoader/dlutils.c ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
-	   + ext/Fcntl/Makefile.PL ext/FileHandle/FileHandle.pm
-	   + ext/FileHandle/FileHandle.xs ext/FileHandle/Makefile.PL
-	   + ext/GDBM_File/GDBM_File.pm ext/GDBM_File/GDBM_File.xs
-	   + ext/GDBM_File/Makefile.PL ext/GDBM_File/typemap
-	   + ext/NDBM_File/Makefile.PL ext/NDBM_File/NDBM_File.pm
-	   + ext/NDBM_File/NDBM_File.xs ext/NDBM_File/hints/solaris.pl
-	   + ext/NDBM_File/hints/svr4.pl ext/NDBM_File/typemap
-	   + ext/ODBM_File/Makefile.PL ext/ODBM_File/ODBM_File.pm
-	   + ext/ODBM_File/ODBM_File.xs ext/ODBM_File/hints/dec_osf.pl
-	   + ext/ODBM_File/hints/sco.pl ext/ODBM_File/hints/solaris.pl
-	   + ext/ODBM_File/hints/svr4.pl ext/ODBM_File/typemap
-	   + ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod
-	   + ext/POSIX/POSIX.xs ext/POSIX/typemap ext/SDBM_File/Makefile.PL
-	   + ext/SDBM_File/SDBM_File.pm ext/SDBM_File/SDBM_File.xs
-	   + ext/SDBM_File/sdbm/CHANGES ext/SDBM_File/sdbm/COMPARE
-	   + ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/README
-	   + ext/SDBM_File/sdbm/README.too ext/SDBM_File/sdbm/biblio
-	   + ext/SDBM_File/sdbm/dba.c ext/SDBM_File/sdbm/dbd.c
-	   + ext/SDBM_File/sdbm/dbe.1 ext/SDBM_File/sdbm/dbe.c
-	   + ext/SDBM_File/sdbm/dbm.c ext/SDBM_File/sdbm/dbm.h
-	   + ext/SDBM_File/sdbm/dbu.c ext/SDBM_File/sdbm/grind
-	   + ext/SDBM_File/sdbm/hash.c ext/SDBM_File/sdbm/linux.patches
-	   + ext/SDBM_File/sdbm/makefile.sdbm ext/SDBM_File/sdbm/pair.c
-	   + ext/SDBM_File/sdbm/pair.h ext/SDBM_File/sdbm/readme.ms
-	   + ext/SDBM_File/sdbm/readme.ps ext/SDBM_File/sdbm/sdbm.3
-	   + ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
-	   + ext/SDBM_File/sdbm/tune.h ext/SDBM_File/sdbm/util.c
-	   + ext/SDBM_File/typemap ext/Safe/Makefile.PL ext/Safe/Safe.pm
-	   + ext/Safe/Safe.xs ext/Socket/Makefile.PL ext/Socket/Socket.pm
-	   + ext/Socket/Socket.xs ext/util/extliblist ext/util/make_ext
-	   + ext/util/mkbootstrap form.h global.sym globals.c gv.c gv.h
-	   + h2pl/README h2pl/cbreak.pl h2pl/cbreak2.pl h2pl/eg/sizeof.ph
-	   + h2pl/eg/sys/errno.pl h2pl/eg/sys/ioctl.pl h2pl/eg/sysexits.pl
-	   + h2pl/getioctlsizes h2pl/mksizes h2pl/mkvars h2pl/tcbreak
-	   + h2pl/tcbreak2 handy.h hints/3b1.sh hints/3b1cc
-	   + hints/README.hints hints/aix.sh hints/altos486.sh
-	   + hints/apollo.sh hints/aux.sh hints/bsdos.sh hints/convexos.sh
-	   + hints/cxux.sh hints/dec_osf.sh hints/dgux.sh hints/dnix.sh
-	   + hints/dynix.sh hints/dynixptx.sh hints/epix.sh hints/esix4.sh
-	   + hints/fps.sh hints/freebsd.sh hints/genix.sh
-	   + hints/greenhills.sh hints/hpux.sh hints/i386.sh
-	   + hints/irix_4.sh hints/irix_5.sh hints/irix_6.sh
-	   + hints/irix_6_2.sh hints/isc.sh hints/isc_2.sh hints/linux.sh
-	   + hints/machten.sh hints/machten_2.sh hints/mips.sh hints/mpc.sh
-	   + hints/mpeix.sh hints/ncr_tower.sh hints/netbsd.sh
-	   + hints/next_3.sh hints/next_3_0.sh hints/opus.sh hints/os2.sh
-	   + hints/powerux.sh hints/sco.sh hints/sco_2_3_0.sh
-	   + hints/sco_2_3_1.sh hints/sco_2_3_2.sh hints/sco_2_3_3.sh
-	   + hints/sco_2_3_4.sh hints/solaris_2.sh hints/stellar.sh
-	   + hints/sunos_4_0.sh hints/sunos_4_1.sh hints/svr4.sh
-	   + hints/ti1500.sh hints/titanos.sh hints/ultrix_4.sh
-	   + hints/unicos.sh hints/unisysdynix.sh hints/utekv.sh
-	   + hints/uts.sh hv.c hv.h installman installperl interp.sym
-	   + keywords.h keywords.pl lib/AnyDBM_File.pm lib/AutoLoader.pm
-	   + lib/AutoSplit.pm lib/Benchmark.pm lib/Carp.pm lib/Cwd.pm
-	   + lib/Devel/SelfStubber.pm lib/DirHandle.pm lib/English.pm
-	   + lib/Env.pm lib/Exporter.pm lib/ExtUtils/Install.pm
-	   + lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_OS2.pm
-	   + lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
-	   + lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
-	   + lib/ExtUtils/Mkbootstrap.pm lib/ExtUtils/Mksymlists.pm
-	   + lib/ExtUtils/testlib.pm lib/ExtUtils/typemap
-	   + lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/CheckTree.pm
-	   + lib/File/Copy.pm lib/File/Find.pm lib/File/Path.pm
-	   + lib/FileCache.pm lib/Getopt/Long.pm lib/Getopt/Std.pm
-	   + lib/I18N/Collate.pm lib/IPC/Open2.pm lib/IPC/Open3.pm
-	   + lib/Math/BigFloat.pm lib/Math/BigInt.pm lib/Math/Complex.pm
-	   + lib/Net/Ping.pm lib/Pod/Functions.pm lib/Pod/Text.pm
-	   + lib/Search/Dict.pm lib/SelectSaver.pm lib/SelfLoader.pm
-	   + lib/Shell.pm lib/Symbol.pm lib/Sys/Hostname.pm
-	   + lib/Sys/Syslog.pm lib/Term/Cap.pm lib/Term/Complete.pm
-	   + lib/Term/ReadLine.pm lib/Test/Harness.pm lib/Text/Abbrev.pm
-	   + lib/Text/ParseWords.pm lib/Text/Soundex.pm lib/Text/Tabs.pm
-	   + lib/Text/Wrap.pm lib/Tie/Hash.pm lib/Tie/Scalar.pm
-	   + lib/Tie/SubstrHash.pm lib/Time/Local.pm lib/abbrev.pl
-	   + lib/assert.pl lib/bigfloat.pl lib/bigint.pl lib/bigrat.pl
-	   + lib/cacheout.pl lib/chat2.inter lib/chat2.pl lib/complete.pl
-	   + lib/ctime.pl lib/diagnostics.pm lib/dotsh.pl lib/dumpvar.pl
-	   + lib/exceptions.pl lib/fastcwd.pl lib/find.pl lib/finddepth.pl
-	   + lib/flush.pl lib/ftp.pl lib/getcwd.pl lib/getopt.pl
-	   + lib/getopts.pl lib/hostname.pl lib/importenv.pl lib/integer.pm
-	   + lib/less.pm lib/lib.pm lib/look.pl lib/newgetopt.pl
-	   + lib/open2.pl lib/open3.pl lib/overload.pm lib/perl5db.pl
-	   + lib/pwd.pl lib/shellwords.pl lib/sigtrap.pm lib/splain
-	   + lib/stat.pl lib/strict.pm lib/subs.pm lib/syslog.pl
-	   + lib/tainted.pl lib/termcap.pl lib/timelocal.pl lib/validate.pl
-	   + lib/vars.pm makeaperl.SH makedepend.SH makedir.SH malloc.c
-	   + mg.c mg.h minimod.pl miniperlmain.c mv-if-diff myconfig op.c
-	   + op.h opcode.h opcode.pl os2/Makefile.SHs os2/POSIX.mkfifo
-	   + os2/README os2/README.old os2/diff.configure os2/diff.db_file
-	   + os2/notes os2/os2.c os2/os2ish.h os2/perl2cmd.pl patchlevel.h
-	   + perl.c perl.h perl_exp.SH perlsh perly.c perly.c.diff
-	   + perly.fixer perly.h perly.y pod/Makefile pod/buildtoc
-	   + pod/perl.pod pod/perlbook.pod pod/perlbot.pod pod/perlcall.pod
-	   + pod/perldata.pod pod/perldebug.pod pod/perldiag.pod
-	   + pod/perldsc.pod pod/perlembed.pod pod/perlform.pod
-	   + pod/perlfunc.pod pod/perlguts.pod pod/perlipc.pod
-	   + pod/perllol.pod pod/perlmod.pod pod/perlobj.pod pod/perlop.pod
-	   + pod/perlovl.pod pod/perlpod.pod pod/perlre.pod pod/perlref.pod
-	   + pod/perlrun.pod pod/perlsec.pod pod/perlstyle.pod
-	   + pod/perlsub.pod pod/perlsyn.pod pod/perltie.pod
-	   + pod/perltoc.pod pod/perltrap.pod pod/perlvar.pod
-	   + pod/perlxs.pod pod/perlxstut.pod pod/pod2html.PL
-	   + pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL pod/roffitall
-	   + pod/splitman pod/splitpod pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c
-	   + proto.h regcomp.c regcomp.h regexec.c regexp.h run.c scope.c
-	   + scope.h sv.c sv.h t/README t/TEST t/base/cond.t t/base/if.t
-	   + t/base/lex.t t/base/pat.t t/base/term.t t/cmd/elsif.t
-	   + t/cmd/for.t t/cmd/mod.t t/cmd/subval.t t/cmd/switch.t
-	   + t/cmd/while.t t/comp/cmdopt.t t/comp/cpp.aux t/comp/cpp.t
-	   + t/comp/decl.t t/comp/multiline.t t/comp/package.t
-	   + t/comp/script.t t/comp/term.t t/harness t/io/argv.t t/io/dup.t
-	   + t/io/fs.t t/io/inplace.t t/io/pipe.t t/io/print.t t/io/tell.t
-	   + t/lib/anydbm.t t/lib/bigint.t t/lib/bigintpm.t
-	   + t/lib/db-btree.t t/lib/db-hash.t t/lib/db-recno.t
-	   + t/lib/dirhand.t t/lib/english.t t/lib/filehand.t t/lib/gdbm.t
-	   + t/lib/ndbm.t t/lib/odbm.t t/lib/posix.t t/lib/safe.t
-	   + t/lib/sdbm.t t/lib/socket.t t/lib/soundex.t t/op/append.t
-	   + t/op/array.t t/op/auto.t t/op/chop.t t/op/cond.t t/op/delete.t
-	   + t/op/do.t t/op/each.t t/op/eval.t t/op/exec.t t/op/exp.t
-	   + t/op/flip.t t/op/fork.t t/op/glob.t t/op/goto.t t/op/groups.t
-	   + t/op/index.t t/op/int.t t/op/join.t t/op/list.t t/op/local.t
-	   + t/op/magic.t t/op/misc.t t/op/mkdir.t t/op/my.t t/op/oct.t
-	   + t/op/ord.t t/op/overload.t t/op/pack.t t/op/pat.t t/op/push.t
-	   + t/op/quotemeta.t t/op/rand.t t/op/range.t t/op/re_tests
-	   + t/op/read.t t/op/readdir.t t/op/ref.t t/op/regexp.t
-	   + t/op/repeat.t t/op/sleep.t t/op/sort.t t/op/split.t
-	   + t/op/sprintf.t t/op/stat.t t/op/study.t t/op/subst.t
-	   + t/op/substr.t t/op/time.t t/op/undef.t t/op/unshift.t
-	   + t/op/vec.t t/op/write.t t/re_tests taint.c toke.c unixish.h
-	   + util.c util.h utils/Makefile utils/c2ph.PL utils/h2ph.PL
-	   + utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL utils/pl2pm.PL
-	   + vms/Makefile vms/config.vms vms/descrip.mms
-	   + vms/ext/Filespec.pm vms/ext/Stdio/0README.txt
-	   + vms/ext/Stdio/Makefile.PL vms/ext/Stdio/Stdio.pm
-	   + vms/ext/Stdio/Stdio.xs vms/ext/Stdio/test.pl vms/fndvers.com
-	   + vms/gen_shrfls.pl vms/genconfig.pl vms/genopt.com
-	   + vms/make_command.com vms/mms2make.pl vms/myconfig.com
-	   + vms/perlvms.pod vms/perly_c.vms vms/perly_h.vms
-	   + vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c
-	   + vms/vms_yfix.pl vms/vmsish.h vms/writemain.pl writemain.SH
-	   + x2p/EXTERN.h x2p/INTERN.h x2p/Makefile.SH x2p/a2p.c x2p/a2p.h
-	   + x2p/a2p.man x2p/a2p.y x2p/a2py.c x2p/cflags.SH
-	   + x2p/find2perl.PL x2p/handy.h x2p/hash.c x2p/hash.h x2p/s2p.PL
-	   + x2p/s2p.man x2p/str.c x2p/str.h x2p/util.c x2p/util.h
-           + x2p/walk.c
diff --git a/contrib/perl5/Changes5.005 b/contrib/perl5/Changes5.005
new file mode 100644
index 000000000000..d0d19a26ced2
--- /dev/null
+++ b/contrib/perl5/Changes5.005
@@ -0,0 +1,19336 @@
+Please note: This file provides a summary of significant changes
+between versions and sub-versions of Perl, not necessarily a complete
+list of each modification.  If you'd like more detailed information,
+please consult the comments in the patches on which the relevant
+release of Perl is based.  (Patches can be found on any CPAN
+site, in the .../src/5.0 directory for full version releases,
+or in the .../src/5/0/unsupported directory for sub-version
+releases.)
+
+
+			   ---------------
+			    CAST AND CREW
+			   ---------------
+
+To give due honor to those who have made Perl what is is today,
+here are some of the more common names in the Changes file, and their
+current addresses (as of July 1998):
+
+    Gisle Aas           
+    Abigail             
+    Kenneth Albanowski  
+    Russ Allbery        
+    Spider Boardman     
+    Tom Christiansen    
+    Hallvard B Furuseth 
+    M. J. T. Guy        
+    Jarkko Hietaniemi   
+    Nick Ing-Simmons    
+    Andreas Koenig      
+    Doug MacEachern     
+    Paul Marquess       
+    Stephen McCamant    
+    Laszlo Molnar	
+    Hans Mulder         
+    Matthias Neeracher  
+    Jeff Okamoto        
+    Ulrich Pfeifer      
+    Tom Phoenix         
+    Joshua Pritikin     
+    Norbert Pueschel    
+    Dean Roehrich       
+    Hugo van der Sanden 
+    Roderick Schertler  
+    Kurt D. Starsinic   
+    Dan Sugalski        
+    Larry W. Virden     
+    Ilya Zakharevich    
+
+And the Keepers of the Patch Pumpkin:
+
+    Charles Bailey      
+    Graham Barr         
+    Malcolm Beattie     
+    Tim Bunce           
+    Andy Dougherty      
+    Gurusamy Sarathy    
+    Chip Salzenberg     
+
+And, of course, the Author of Perl:
+
+    Larry Wall     	
+
+
+NOTE: Each change entry shows the change number; who checked it into the
+repository; when; description of the change; which branch the change
+happened in; and the affected files.  The file lists have a short symbolic
+indicator:
+
+    	    !	    modified
+    	    +	    added
+    	    -	    deleted
+    	    +>	    branched (from elsewhere)
+    	    !>	    merged changes (from elsewhere)
+
+
+----------------
+Version 5.005_03        Third maintenance release of 5.005
+----------------
+
+____________________________________________________________________________
+[  3198] By: gbarr                                 on 1999/03/28  22:21:49
+        Log: redo #3193 which #3195 undid
+     Branch: maint-5.005/perl
+           ! pod/perlhist.pod
+____________________________________________________________________________
+[  3197] By: gbarr                                 on 1999/03/28  21:04:04
+        Log: Updated CPAN.pm to 1.48
+     Branch: maint-5.005/perl
+           ! lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm
+____________________________________________________________________________
+[  3196] By: gbarr                                 on 1999/03/28  17:21:27
+        Log: AIX hints update from Jarkko
+     Branch: maint-5.005/perl
+           ! hints/aix.sh
+____________________________________________________________________________
+[  3195] By: jhi                                   on 1999/03/28  16:42:54
+        Log: Update perlhist on 5_03.
+     Branch: maint-5.005/perl
+           ! pod/perlhist.pod
+____________________________________________________________________________
+[  3193] By: gsar                                  on 1999/03/28  09:46:29
+        Log: =end needs matching =begin (or installhtml will croak)
+     Branch: maint-5.005/perl
+           ! pod/perlhist.pod
+____________________________________________________________________________
+[  3192] By: gsar                                  on 1999/03/28  09:10:15
+        Log: update pod/Makefile
+     Branch: maint-5.005/perl
+           ! pod/Makefile
+____________________________________________________________________________
+[  3191] By: gsar                                  on 1999/03/28  08:43:47
+        Log: integrate change#3180 from mainline
+             
+             fix bogus OPf_REF context for the BLOCK in C
+             (sometimes caused bizarreness in the BLOCK)
+     Branch: maint-5.005/perl
+          +> t/op/grep.t
+          !> MANIFEST op.c
+____________________________________________________________________________
+[  3190] By: gsar                                  on 1999/03/28  08:29:51
+        Log: integrate change#3147 from mainline
+             
+             warn about newfangled vfork() caveats
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  3189] By: gsar                                  on 1999/03/28  08:22:00
+        Log: various pod niggles
+     Branch: maint-5.005/perl
+	   ! pod/perl.pod pod/perldebug.pod pod/perldiag.pod
+           ! pod/perlfunc.pod pod/perlhist.pod
+____________________________________________________________________________
+[  3188] By: gsar                                  on 1999/03/28  07:37:43
+        Log: integrate binary compatible variant of change#3098 from mainline
+     Branch: maint-5.005/perl
+           ! op.c perl.h t/base/lex.t toke.c
+____________________________________________________________________________
+[  3187] By: gsar                                  on 1999/03/28  07:31:16
+        Log: regularize CAPI declarations (CAPI extensions now build under
+             the Borland compiler)
+     Branch: maint-5.005/perl
+           ! win32/GenCAPI.pl
+____________________________________________________________________________
+[  3186] By: gsar                                  on 1999/03/28  07:26:33
+        Log: ensure XS_LOCKS stuff happens *before* XSUB is entered under
+             -DPERL_CAPI
+     Branch: maint-5.005/perl
+           ! XSlock.h win32/GenCAPI.pl win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  3185] By: gbarr                                 on 1999/03/28  06:37:41
+        Log: integrate change #2846 from mainline
+             
+             a modified version of suggested patch for pack template 'Z'; added docs
+             From: "Valeriy E. Ushakov" 
+             Date: Mon, 16 Jun 1997 03:00:31 +0400 (MSD)
+             Message-ID: <%lOHpzIuGV@snark.ptc.spbu.ru>
+             Subject: lack of pack/unpack letter with useful symmetry for C null delimited strings
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod pod/perlfunc.pod pp.c
+          !> t/op/pack.t
+____________________________________________________________________________
+[  3184] By: gbarr                                 on 1999/03/28  06:35:50
+        Log: integrate change # 3160 from mainline
+             
+             better description of OP_UNSTACK (s/unstack/iteration finalizer/)
+     Branch: maint-5.005/perl
+           ! opcode.h opcode.pl
+____________________________________________________________________________
+[  3182] By: gbarr                                 on 1999/03/28  03:40:28
+        Log: Integrate changes #3067 and #3106 from mainline
+             
+             exempt $foo::a,$foo::b from warnings only if sort() was seen in package foo
+             From: Graham Barr 
+             Date: Wed, 3 Mar 1999 17:23:56 -0600
+             Message-ID: <19990303172356.F7442@dal.asp.ti.com>
+             Subject: Re: 'use strict' doesn't work for one-letter variables
+             
+             change#3067 failed package.t due to needless creation of $a and $b;
+             fixed to do that only for C, not C
+     Branch: maint-5.005/perl
+           ! gv.c op.c t/pragma/warn-1global
+____________________________________________________________________________
+[  3179] By: gsar                                  on 1999/03/28  02:14:04
+        Log: fix thread segfault when passing large number of arguments to child
+             a la Cnew($foo, 1..1000)>
+     Branch: maint-5.005/perl
+           ! ext/Thread/Thread.xs t/lib/thread.t
+____________________________________________________________________________
+[  3178] By: gbarr                                 on 1999/03/28  01:39:23
+        Log: fix $Config{'usethreads'} typo in perlthrtut
+             
+             From: Ian Maloney 
+             Date: Thu, 25 Mar 1999 16:40:14 +0100 (MET)
+             Message-Id: <199903251540.QAA02439@wsblob.>
+             Subject: perlthrtut documentation error
+     Branch: maint-5.005/perl
+           ! pod/perlthrtut.pod
+____________________________________________________________________________
+[  3177] By: gbarr                                 on 1999/03/28  01:09:59
+        Log: Integrate #2910 from mainline
+             
+             slurping an empty file should return '' rather than undef, with
+             commensurate effects on ARGV processing
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod pp_hot.c sv.h
+          !> t/io/argv.t
+____________________________________________________________________________
+[  3176] By: gbarr                                 on 1999/03/28  00:00:30
+        Log: Integrate relevant doc changes from mainline
+     Branch: maint-5.005/perl
+          !> (integrate 34 files)
+____________________________________________________________________________
+[  3175] By: gbarr                                 on 1999/03/27  19:20:32
+        Log: Integrated #2352 and #2397 from mainline
+             
+             Implement $^C to allow perl access to -c flag - I think this 
+             was agreed once...
+             
+             Update docs and English.pm for $^C
+     Branch: maint-5.005/perl
+           ! gv.c mg.c
+          !> lib/English.pm
+____________________________________________________________________________
+[  3174] By: gbarr                                 on 1999/03/27  18:21:01
+        Log: Update Copyright year
+     Branch: maint-5.005/perl
+	   ! EXTERN.h INTERN.h README av.c av.h cop.h cv.h deb.c doio.c
+	   ! doop.c dump.c form.h gv.c gv.h handy.h hv.c hv.h mg.c mg.h
+	   ! op.c op.h perl.h perly.y pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c
+	   ! regcomp.c regexec.c run.c scope.c sv.c sv.h toke.c util.c
+           ! util.h
+____________________________________________________________________________
+[  3173] By: gbarr                                 on 1999/03/27  18:19:47
+        Log: Update Test.pm to VERSION 1.122 from CPAN
+     Branch: maint-5.005/perl
+           ! lib/Test.pm
+____________________________________________________________________________
+[  3154] By: jhi                                   on 1999/03/24  21:40:51
+        Log: Reword the shared library search path (LD_LIBRARY_PATH) info
+             based on suggestions from Andy Dougherty.
+     Branch: maint-5.005/perl
+           ! INSTALL
+____________________________________________________________________________
+[  3146] By: jhi                                   on 1999/03/24  09:20:14
+        Log: Bring in changes #2808 and #2812 (from mainline perl)
+             that enhance the perlbug checklist.
+     Branch: maint-5.005/perl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  3130] By: jhi                                   on 1999/03/23  22:02:23
+        Log: Don't use config.msg to remind about the
+             LD_LIBRARY_PATH because Makefile.SH takes
+             care of that.
+             
+             Use shrplib in DEC O^W^Digital U^W^WTru64 UNIX.
+             This used to be the default but in some MT or another it
+             was dropped because of some transient error or another.
+     Branch: maint-5.005/perl
+           ! Configure hints/dec_osf.sh
+____________________________________________________________________________
+[  3122] By: jhi                                   on 1999/03/19  21:12:14
+        Log: Describe the new Benchmark feature in more detail.
+     Branch: cfgperl
+           ! pod/perldelta.pod
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  3121] By: jhi                                   on 1999/03/19  08:16:12
+        Log: AVAILABILITY tuning.
+     Branch: cfgperl
+           ! pod/perl.pod
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  3119] By: jhi                                   on 1999/03/17  14:33:43
+        Log: More Apollo fixes.
+     Branch: maint-5.005/perl
+           ! README.apollo hints/apollo.sh t/lib/io_udp.t
+____________________________________________________________________________
+[  3118] By: jhi                                   on 1999/03/16  17:23:39
+        Log: Nada.
+     Branch: maint-5.005/perl
+           ! README.apollo
+____________________________________________________________________________
+[  3117] By: jhi                                   on 1999/03/16  17:18:49
+        Log: Apollo DomainOS AVAILABILITY.
+     Branch: cfgperl
+           ! pod/perl.pod
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  3116] By: jhi                                   on 1999/03/16  17:14:00
+        Log: Apollo DomainOS patch
+             From: Johann Klasek 
+             Subject: Re: DomainPerl
+             Date: Tue, 16 Mar 1999 17:46:32 +0100
+             Message-ID: <19990316174632.A19759@euklid.auto.tuwien.ac.at>
+     Branch: maint-5.005/perl
+           + README.apollo apollo/netinet/in.h
+           ! MANIFEST hints/apollo.sh
+____________________________________________________________________________
+[  3115] By: jhi                                   on 1999/03/16  14:23:54
+        Log: From: Paul Marquess 
+             To: Gurusamy Sarathy ,
+             Graham Barr 
+             Cc: Perl5 Porters ,
+             "Paul.Marquess" 
+             Subject: [PATCH 5.005_56 & 5.005_03_T6] Upgrade DB_File to version 1.65
+             Date: Sun, 14 Mar 1999 14:43:57 -0000
+             Message-Id: <199903141841.NAA17040@defender.perl.org>
+     Branch: maint-5.005/perl
+	   ! ext/DB_File/Changes ext/DB_File/DB_File.pm
+           ! ext/DB_File/DB_File.xs ext/DB_File/typemap
+____________________________________________________________________________
+[  3114] By: jhi                                   on 1999/03/16  12:42:20
+        Log: Mention Rhapsody in 5.005_5X perldelta,
+             and in Rhapsody and Netware in 5.005_0X and 5.005_5X
+             *planned* AVAILABILITY.
+     Branch: cfgperl
+           ! pod/perl.pod pod/perldelta.pod
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  3113] By: jhi                                   on 1999/03/16  10:38:53
+        Log: perldelta niggling.
+     Branch: cfgperl
+           ! pod/perldelta.pod
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  3111] By: jhi                                   on 1999/03/16  10:28:10
+        Log: AVAILABILITY update: still mention PowerUX,
+             Novell Netware now has sources available.
+     Branch: cfgperl
+           ! pod/perl.pod
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  3105] By: jhi                                   on 1999/03/12  15:54:57
+        Log: Recognize the NetBSD packages collection.
+     Branch: maint-5.005/perl
+           ! hints/netbsd.sh
+____________________________________________________________________________
+[  3104] By: jhi                                   on 1999/03/12  09:07:04
+        Log: From: pvhp@forte.com (Peter Prymmer)
+             To: jhi@iki.fi, perl-mvs@perl.org, perlbug@perl.com
+             Subject: [PATCH MT6,_56] was Re: Not OK: perl 5.00503 +MAINT_TRIAL_6 on os390 06.00 (UNINSTALLED)
+             Date: Thu, 11 Mar 99 14:24:54 PST
+             Message-Id: <9903112224.AA24346@forte.com>
+     Branch: maint-5.005/perl
+           ! README.os390 t/lib/posix.t
+____________________________________________________________________________
+[  3102] By: jhi                                   on 1999/03/10  11:01:20
+        Log: From: pvhp@forte.com (Peter Prymmer)
+             To: perl5-porters@perl.org
+             Subject: [5.005_03-MT6]Patch: time passes
+             Date: Tue, 9 Mar 99 18:42:17 PST
+             Message-Id: <9903100242.AA29057@forte.com>
+     Branch: maint-5.005/perl
+           ! perl.c
+____________________________________________________________________________
+[  3101] By: jhi                                   on 1999/03/10  10:30:15
+        Log: From: Mark-Jason Dominus 
+             To: perl5-porters@perl.com
+             Subject: Minor fix to perlfunc.pod
+             Date: Mon, 08 Mar 1999 20:05:53 -0500
+             Message-ID: <19990309010553.13757.qmail@plover.com>
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  3094] By: jhi                                   on 1999/03/06  16:16:15
+        Log: From: Mark Kettenis 
+             To: jhi@iki.fi
+             Subject: Oops
+             Date: Sat, 6 Mar 1999 17:15:35 +0100 (CET)
+             Message-Id: <199903061615.RAA00207@delius.kettenis.nl>
+     Branch: maint-5.005/perl
+           ! README.hurd
+____________________________________________________________________________
+[  3093] By: jhi                                   on 1999/03/06  15:59:46
+        Log: From: Mark Kettenis 
+             To: jhi@iki.fi
+             Subject: New Hurd README
+             Date: Sat, 6 Mar 1999 16:46:12 +0100 (CET)
+             Message-Id: <199903061601.RAA00185@delius.kettenis.nl>
+     Branch: maint-5.005/perl
+           ! README.hurd
+____________________________________________________________________________
+[  3092] By: jhi                                   on 1999/03/06  12:52:06
+        Log: From: Paul_Green@stratus.com
+             To: perl5-porters@perl.org
+             Cc: jhi@iki.fi, Paul_Green@stratus.com
+             Subject: [PATCH 5.005_03-MAINT_TRIAL_6]: platform: vos -- updates to VOS port of Perl5
+             Date: Fri, 5 Mar 1999 18:08:49 -0500 
+             Message-ID: <1D1A4EF7AD4DD211A80D00A0C9D7DB665A035A@exna1.stratus.com>
+     Branch: maint-5.005/perl
+           ! vos/config.h vos/config_h.SH_orig
+____________________________________________________________________________
+[  3091] By: jhi                                   on 1999/03/06  12:42:21
+        Log: From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [PATCH 5.005_03-MT6]VMS build patch
+             Date: Fri, 05 Mar 1999 12:36:19 -0800
+             Message-Id: <3.0.6.32.19990305123619.02d326a0@ous.edu>
+     Branch: maint-5.005/perl
+           ! vms/subconfigure.com
+____________________________________________________________________________
+[  3090] By: gsar                                  on 1999/03/06  04:40:03
+        Log: integrate change#3089 from mainline
+             
+             tolerate CRs after options
+     Branch: maint-5.005/perl
+          !> perl.c
+____________________________________________________________________________
+[  3086] By: gbarr                                 on 1999/03/05  01:48:05
+        Log: #3085 was a bit premature, this is MT6 as 2 files were
+             missing from MANIFEST
+     Branch: maint-5.005/perl
+           ! MANIFEST
+____________________________________________________________________________
+[  3085] By: gbarr                                 on 1999/03/05  01:41:06
+        Log: Trial release 6
+     Branch: maint-5.005/perl
+           ! Changes
+____________________________________________________________________________
+[  3084] By: gbarr                                 on 1999/03/05  01:34:07
+        Log: Don't process - as a file in Errno_pm.PL
+             
+             From: Jarkko Hietaniemi 
+             Date: Thu, 4 Mar 1999 13:29:23 +0200 (EET)
+             Message-ID: <14046.28307.561693.849859@alpha.hut.fi>
+             Subject: Re: maint-5.005
+     Branch: maint-5.005/perl
+           ! ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  3081] By: gsar                                  on 1999/03/05  00:14:33
+        Log: protect against doubled backslashes
+     Branch: maint-5.005/perl
+           ! ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  3080] By: gsar                                  on 1999/03/04  23:37:20
+        Log: pick up AIX hints from mainline
+     Branch: maint-5.005/perl
+          !> hints/aix.sh
+____________________________________________________________________________
+[  3079] By: gsar                                  on 1999/03/04  21:09:43
+        Log: tweak cast and crew
+     Branch: maint-5.005/perl
+           ! Changes
+____________________________________________________________________________
+[  3078] By: gsar                                  on 1999/03/04  21:03:04
+        Log: update patchlevel, Changes
+     Branch: maint-5.005/perl
+           ! Changes README.win32 patchlevel.h
+          !> pod/perlhist.pod
+____________________________________________________________________________
+[  3075] By: gsar                                  on 1999/03/04  07:36:53
+        Log: integrate changes#3037,3041 from mainline
+             
+             fix longstanding bug: searches for lexicals originating within eval''
+             weren't stopping at the subroutine boundary correctly
+             --
+             fix subtle bug in eval'' testsuite
+     Branch: maint-5.005/perl
+          !> op.c proto.h t/op/eval.t
+____________________________________________________________________________
+[  3074] By: gsar                                  on 1999/03/04  07:32:15
+        Log: integrate change#3048 from mainline
+             
+             updated HP-UX notes from Jeff Okamoto 
+     Branch: maint-5.005/perl
+          !> MANIFEST README.hpux
+____________________________________________________________________________
+[  3073] By: gsar                                  on 1999/03/04  07:29:43
+        Log: integrate changes#3014,3015,3021,3032,3034,3045 from mainline
+             
+             more "correct" utbuf for utime()
+             --
+             avoid modifying readonly values from qw()
+             --
+             ansify perlio.c, fix PerlIO-ish typos
+             --
+             add README.hpux
+             --
+             s/print STDERR/warn/ suggested by abigail@fnx.com; add $VERSION
+             --
+             destroy PL_svref_mutex in perl_destruct()
+     Branch: maint-5.005/perl
+          +> README.hpux
+	  !> MANIFEST doio.c ext/DynaLoader/dl_beos.xs
+	  !> ext/DynaLoader/dl_cygwin32.xs iperlsys.h
+          !> lib/ExtUtils/MM_Unix.pm lib/Getopt/Std.pm perl.c perlio.c
+____________________________________________________________________________
+[  3072] By: gsar                                  on 1999/03/04  07:12:15
+        Log: integrate changes#2978,2979 from mainline
+             
+             bring '*' prototype closer to how it behaves internally
+             --
+             doc for change#2978
+     Branch: maint-5.005/perl
+          +> t/lib/fatal.t
+          !> MANIFEST lib/Fatal.pm op.c pod/perlsub.pod t/comp/proto.t
+____________________________________________________________________________
+[  3071] By: gsar                                  on 1999/03/04  07:05:50
+        Log: integrate changes#2919,2920,2921,2928,2932,2933 from mainline
+             
+             applied suggested patch, with several language/readability tweaks
+             From: Ilya Zakharevich 
+             Date: Fri, 29 Jan 1999 00:25:02 -0500
+             Message-ID: <19990129002502.C2898@monk.mps.ohio-state.edu>
+             Subject: Re: [PATCH 5.005_*] Better parsing docs
+             --
+             tweak READ() docs to mention $buffer must be altered by reference
+             --
+             use New() et al., rather than safemalloc() et al.
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Fri, 29 Jan 1999 23:27:22 +0100
+             Message-ID: <36bd33f2.51029616@smtp1.ibm.net>
+             Subject: [PATCH _03-MT5] POSIX.xs memory API
+             --
+             allow the Carp routines to pass through exception objects
+             --
+             clarify what a "line" is
+             --
+             From: "J. van Krieken" 
+             Date: Thu, 4 Feb 1999 17:25:25 +0100 (MET)
+             Message-Id: <199902041625.RAA14489@atcmpg.ATComputing.nl>
+             Subject: s2p incorrectly handles hold space commands
+     Branch: maint-5.005/perl
+	  !> ext/POSIX/POSIX.xs lib/Carp.pm pod/perlfunc.pod pod/perlop.pod
+          !> pod/perltie.pod pod/perlvar.pod x2p/s2p.PL
+____________________________________________________________________________
+[  3070] By: gsar                                  on 1999/03/04  06:43:57
+        Log: integrate changes#2748,2753,2754,2819,2824,2855,2866,2867,2869,2885,2888,2889
+             from mainline
+             
+             From: "Jonathan I. Kamens" 
+             Date: Thu, 3 Dec 1998 15:10:17 -0500
+             Message-Id: <199812032010.PAA09692@jik.shore.net>
+             Subject: sample checksum code in "perlfunc" man page is wrong
+             --
+             Todo tweaks
+             --
+             Todo updates from Andy Dougherty 
+             --
+             avoid garbage in db->dirbuf
+             From: Masahiro KAJIURA 
+             Date: Sat, 05 Dec 1998 14:14:54 +0900
+             Message-Id: <199812050514.OAA23268@toshiba.co.jp>
+             Subject: SDBM bug
+             --
+             tweak doc on bitwise ops
+             --
+             applied suggested patch; added tests
+             From: Adam Krolnik 
+             Date: Sat, 12 Dec 98 15:30:18 -0600
+             Message-Id: <9812122130.AA03717@gypsy.eng.cyrix.com>
+             Subject: Range operation doesn't handle IV_MAX
+             --
+             display full pathname of unreadable files
+             --
+             av_extend() doc tweak from Jan Dubois
+             --
+             update win32/pod.mak
+             --
+             note how to find REG_INFTY limit
+             --
+             add note about test-notty target
+             --
+             tweak PERL_STRICT_CR notes
+     Branch: maint-5.005/perl
+	  !> Porting/pumpkin.pod README.win32 Todo Todo-5.005
+	  !> ext/SDBM_File/sdbm/sdbm.c pod/perldelta.pod pod/perlfunc.pod
+	  !> pod/perlguts.pod pod/perlop.pod pod/perlre.pod pp_ctl.c
+          !> t/op/range.t utils/perldoc.PL win32/pod.mak
+____________________________________________________________________________
+[  3069] By: gsar                                  on 1999/03/04  06:02:29
+        Log: integrate change#2747 from mainline
+             
+             typos in Pod/Text.pm
+     Branch: maint-5.005/perl
+          !> lib/Pod/Text.pm
+____________________________________________________________________________
+[  3059] By: jhi                                   on 1999/03/03  22:46:43
+        Log: Document HP-UX 11 Y2K patch effect, based on
+             
+             From: "Richard L. England" 
+             To: perlbug@perl.com
+             CC: "England, Richard" 
+             Subject: test io/fs.t number 18 fails on HPUX 11.0 when Y2K patch installed.
+             Date: Fri, 26 Feb 1999 15:35:49 -0800
+             Message-ID: <36D72FD4.4136C84F@mentorg.com>
+     Branch: maint-5.005/perl
+           ! INSTALL
+____________________________________________________________________________
+[  3057] By: jhi                                   on 1999/03/03  21:42:22
+        Log: The *symbols patch (for Kurt's h2ph fixes) haunted us in AIX.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  3056] By: jhi                                   on 1999/03/03  21:21:46
+        Log: Fixed the pthreads_created_joinable test messed up
+             by the Mach cthreads change.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  3055] By: jhi                                   on 1999/03/03  18:17:55
+        Log: Configure and make gotchas.
+     Branch: maint-5.005/perl
+           ! INSTALL
+____________________________________________________________________________
+[  3051] By: jhi                                   on 1999/03/02  08:24:52
+        Log: From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [PATCH 5.005_0x and 5.005_5x]Minor update to README.VMS
+             Date: Mon, 01 Mar 1999 16:10:57 -0800
+             Message-Id: <3.0.6.32.19990301161057.03b1fc00@ous.edu>
+     Branch: cfgperl
+           ! README.vms
+     Branch: maint-5.005/perl
+           ! README.vms
+____________________________________________________________________________
+[  3049] By: jhi                                   on 1999/03/02  07:34:21
+        Log: From: Spider Boardman 
+             To: perl5-porters@perl.org
+             Subject: [PATCH] Eliminate (valid) warning in byterun.c
+             Date: Mon, 01 Mar 1999 17:27:59 -0500
+             Message-Id: <199903012227.RAA00181@leggy.zk3.dec.com>
+     Branch: cfgperl
+           ! bytecode.h
+     Branch: maint-5.005/perl
+           ! bytecode.h
+____________________________________________________________________________
+[  3028] By: jhi                                   on 1999/02/26  14:40:00
+        Log: HP-UX 11 threads.
+             
+             From: Jeff Okamoto 
+             To: perl5-porters@perl.org
+             Cc: jhi@cc.hut.fi
+             Subject: Maint 5 and _54 with threading on HP-UX 11.00
+             Date: Wed, 3 Feb 1999 12:57:18 -0800 (PST)
+             Message-Id: <199902032057.MAA10218@xfiles.intercon.hp.com>
+             
+             NOTE from jhi: the hpux hints could still be more robust by
+             disabling gdbm when necessary.
+             
+             Currently if there's a libgdbm.sl (gdbm 1.7.3) which is pre-11,
+             linking -lgdbm -lpthread creates an executable that instantly
+             core dumps on a pthreads internal panic:
+             
+             ./gdpt
+             
+             Pthread internal error: message: __libc_reinit() failed, file: ../pthreads/pthread.c, line: 1096
+             Return Pointer is 0xc082bf33
+             17639 quit (core dumped)  ./gdpt
+             
+             You don't have to *use* either gdbm or pthreads in the executable,
+             just linking them together is enough.  Workaround is to recompile
+             the GDBM under HP-UX 11, that makes the problem to go away.
+     Branch: maint-5.005/perl
+           ! hints/hpux.sh thread.h
+____________________________________________________________________________
+[  3027] By: jhi                                   on 1999/02/26  09:04:29
+        Log: From: abigail@fnx.com
+             To: perl5-porters@perl.org (Perl Porters)
+             Subject: [PATCH 5.005_02 Getopt::Std] warn() instead of print STDERR.
+             Date: Thu, 25 Feb 1999 22:08:41 -0500 (EST)
+             Message-ID: <19990226030841.5985.qmail@alexandra.wayne.fnx.com>
+     Branch: maint-5.005/perl
+           ! lib/Getopt/Std.pm
+____________________________________________________________________________
+[  3026] By: jhi                                   on 1999/02/26  08:18:26
+        Log: full_ar wasn't propagated.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  3013] By: jhi                                   on 1999/02/22  19:27:44
+        Log: Fix MacPerl version, change PowerUX to PowerMAX.
+             
+             From: Chris Nandor 
+             To: jhi@iki.fi
+             Cc: perl5-porters@perl.org
+             Subject: Re: perl current availability as documented by perl.pod
+             Date: Sun, 21 Feb 1999 11:06:03 -0500
+             Message-Id: 
+             
+             From: Tom Horsley 
+             To: jhi@iki.fi
+             Cc: perl5-porters@perl.org
+             Subject: Re: perl current availability as documented by perl.pod
+             Date: Mon, 22 Feb 1999 13:08:30 GMT
+             Message-Id: <199902221308.NAA19971@cleo.ccur.com>
+     Branch: cfgperl
+           ! pod/perl.pod
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  3010] By: jhi                                   on 1999/02/22  10:21:55
+        Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             To: gbarr@pobox.com (Graham Barr)
+             Cc: perl5-porters@perl.org
+             Subject: [PATCH 5.005_03-MT5] DB_File 1.64 patch
+             Date: Mon, 22 Feb 1999 10:12:34 +0000 (GMT)
+             Message-Id: <9902221012.AA17784@claudius.bfsec.bt.co.uk>
+     Branch: maint-5.005/perl
+	   ! ext/DB_File/Changes ext/DB_File/DB_File.pm
+           ! ext/DB_File/DB_File.xs ext/DB_File/typemap t/lib/db-recno.t
+____________________________________________________________________________
+[  3005] By: jhi                                   on 1999/02/22  08:35:30
+        Log: Configure/Perl knew how to look for use Mach cthreads
+             but Configure didn't let them to be used ($osname 'next').
+     Branch: cfgperl
+           ! Configure config_h.SH
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  3004] By: jhi                                   on 1999/02/21  15:46:02
+        Log: Update Acorn AVAILABILITY.
+     Branch: cfgperl
+           ! pod/perl.pod
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  3003] By: jhi                                   on 1999/02/21  14:50:42
+        Log: From: rjk@linguist.dartmouth.edu (Ronald J. Kimball)
+             To: perl5-porters@perl.org (Perl 5 Porters)
+             Subject: PATCH: perlref.pod - symbolic ref example
+             Date: Sat, 20 Feb 1999 17:32:11 -0500 (EST)
+             Message-Id: <199902202232.RAA62306@linguist.dartmouth.edu>
+     Branch: cfgperl
+           ! pod/perlref.pod
+     Branch: maint-5.005/perl
+           ! pod/perlref.pod
+____________________________________________________________________________
+[  3000] By: jhi                                   on 1999/02/21  14:15:31
+        Log: pack s/l for negative numbers was broken on platforms
+             where sizeof(short) != 2 or sizeof(long) != 4 (Alpha, Cray).
+             pack v was broken for sizeof(short) == 8 big-endian platforms
+             (Cray), only zeros were produced.
+     Branch: maint-5.005/perl
+           ! perl.h pod/perlfunc.pod pp.c t/op/pack.t
+____________________________________________________________________________
+[  2997] By: jhi                                   on 1999/02/20  14:00:26
+        Log: Glossary update.
+     Branch: maint-5.005/perl
+           ! Porting/Glossary
+____________________________________________________________________________
+[  2995] By: jhi                                   on 1999/02/20  12:25:10
+        Log: Document #2893, Mach cthreads support.
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2986] By: jhi                                   on 1999/02/19  23:26:34
+        Log: Remove the unnecessary osf1 -D__LANGUAGE_C__.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2983] By: jhi                                   on 1999/02/19  20:35:51
+        Log: Mach cthreads:
+             From: brie@corp.home.net (Brian Harrison) 
+             Subject: perl5.005_02 patch for mthreads
+             To: perl5-porters@perl.org 
+             Date: Fri, 23 Oct 1998 14:20:57 -0700 (PDT) 
+             Message-ID:  
+     Branch: maint-5.005/perl
+	   ! Configure Porting/Glossary config_h.SH malloc.c perl.h
+           ! thread.h
+____________________________________________________________________________
+[  2981] By: jhi                                   on 1999/02/19  19:49:03
+        Log: From: "Kurt D. Starsinic" 
+             To: Chaim Frenkel ,
+             Russ Allbery ,
+             Jarkko Hietaniemi ,
+             Gurusamy Sarathy ,
+             Graham Barr 
+             Cc: bdensch@ameritech.net, perlbug@perl.com
+             Subject: [PATCH] Re: Solaris 7 for Intel
+             Message-ID: <19990219124404.A30182@O2.chapin.edu>
+             
+             and Glossary update.
+     Branch: maint-5.005/perl
+           ! Configure Makefile.SH Porting/Glossary
+____________________________________________________________________________
+[  2980] By: gbarr                                 on 1999/02/19  16:06:53
+        Log: Make result of h2xs work when user adds C
+     Branch: maint-5.005/perl
+           ! utils/h2xs.PL
+____________________________________________________________________________
+[  2976] By: gsar                                  on 1999/02/18  21:54:09
+        Log: integrate change#2975 from mainline
+             
+             distinguish eval'' from BEGIN|INIT|END CVs (fixes buggy propagation
+             of lexical searches in BEGIN|INIT|END)
+     Branch: maint-5.005/perl
+	  !> cop.h cv.h op.c perly.c perly.y pp_ctl.c t/op/misc.t
+          !> vms/perly_c.vms
+____________________________________________________________________________
+[  2971] By: jhi                                   on 1999/02/18  11:14:24
+        Log: AIX syscalls.exp scan missed explicitly 32/64-bit syscalls.
+             
+             From: Joe Buehler 
+             To: perl5-porters@perl.org
+             Subject: setsid not detected by perl 5.005_02 configure under AIX 4.3
+             Date: 12 Feb 1999 11:25:21 -0500
+             Message-ID: 
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2967] By: jhi                                   on 1999/02/17  23:12:59
+        Log: Make SCO/Unixware scan to work in Unixware, too.
+             
+             From: Tom Hughes 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00555 on i386-svr4 [actually Unixware 2.1] (UNINSTALLED)
+             Date: 17 Feb 1999 15:34:15 +0000     
+             Message-ID: 
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2956] By: jhi                                   on 1999/02/15  21:03:28
+        Log: OpenBSD sparc SHMLBA (like change #2945).
+     Branch: maint-5.005/perl
+           ! ext/IPC/SysV/SysV.xs
+____________________________________________________________________________
+[  2950] By: jhi                                   on 1999/02/15  13:37:28
+        Log: AVAILABILITY sync.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2906] By: jhi                                   on 1999/02/13  14:55:47
+        Log: AVAILABILITY sync.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2905] By: gsar                                  on 1999/02/13  00:12:53
+        Log: integrate change#2898 from mainline
+             
+             support win32_putenv()
+     Branch: maint-5.005/perl
+	  !> mg.c util.c win32/GenCAPI.pl win32/makedef.pl win32/perlhost.h
+          !> win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[  2904] By: jhi                                   on 1999/02/12  21:23:30
+        Log: Add README.hurd, from Mark Kettenis .
+     Branch: maint-5.005/perl
+           + README.hurd
+           ! MANIFEST
+____________________________________________________________________________
+[  2900] By: jhi                                   on 1999/02/12  12:07:28
+        Log: SCO ODT/OSR release scanning.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2897] By: jhi                                   on 1999/02/12  11:24:25
+        Log: Undo a big bad paste from change #2884.
+     Branch: maint-5.005/perl
+           ! hints/openbsd.sh
+____________________________________________________________________________
+[  2896] By: jhi                                   on 1999/02/12  11:19:52
+        Log: Update the error message of db-recno.t to DB version 1.86
+             and the URL to www.sleepycat.com instead of www.bostic.com.
+     Branch: maint-5.005/perl
+           ! t/lib/db-recno.t
+____________________________________________________________________________
+[  2895] By: gsar                                  on 1999/02/12  11:18:59
+        Log: integrate change#2854 from mainline
+             
+             compatibility fix: magic non-propagation in foreach implicit localization
+     Branch: maint-5.005/perl
+          !> pp_ctl.c t/op/local.t
+____________________________________________________________________________
+[  2884] By: jhi                                   on 1999/02/12  08:36:14
+        Log: OpenBSD pthreads awareness, thanks to
+             David Leonard 
+     Branch: maint-5.005/perl
+           ! Configure hints/openbsd.sh
+____________________________________________________________________________
+[  2883] By: jhi                                   on 1999/02/12  08:29:51
+        Log: AVAILABILITY sync.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2878] By: jhi                                   on 1999/02/11  22:00:50
+        Log: Replace changes #2783, #2784, #2785, with a single tested
+             patch from Francois Desarmenien . 
+     Branch: maint-5.005/perl
+	   ! MANIFEST ext/GDBM_File/hints/sco.pl ext/IPC/SysV/SysV.xs
+           ! hints/sco.sh
+____________________________________________________________________________
+[  2876] By: jhi                                   on 1999/02/11  20:43:17
+        Log: From: Chris Nandor 
+             To: perl5-porters@perl.org
+             Subject: [PATCH] perlport.pod 1.39
+             Date: Thu, 11 Feb 1999 12:28:35 -0500
+             Message-Id: 
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  2875] By: jhi                                   on 1999/02/11  20:35:08
+        Log: The fpsetmask() really is SCO5 only.
+     Branch: maint-5.005/perl
+           ! unixish.h
+____________________________________________________________________________
+[  2874] By: jhi                                   on 1999/02/11  20:32:06
+        Log: Change #2783 missed these.
+     Branch: maint-5.005/perl
+           ! ext/IPC/SysV/SysV.xs unixish.h
+____________________________________________________________________________
+[  2873] By: jhi                                   on 1999/02/11  20:27:45
+        Log: Import the change #2810 from cfgperl.
+     Branch: maint-5.005/perl
+           + ext/GDBM_File/hints/sco.pl
+           ! MANIFEST hints/sco.sh unixish.h
+____________________________________________________________________________
+[  2872] By: jhi                                   on 1999/02/11  19:57:37
+        Log: Sync the current AVAILABILITY.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod pod/perldelta.pod
+____________________________________________________________________________
+[  2871] By: jhi                                   on 1999/02/11  19:42:54
+        Log: Copied the GNU/Hurd hints file over from cfgperl
+             because it works well enough (there are still some
+             rough edges in Hurd), verified via private
+             email from Mark Kettenis 
+     Branch: maint-5.005/perl
+           + hints/gnu.sh
+____________________________________________________________________________
+[  2864] By: jhi                                   on 1999/02/11  08:45:00
+        Log: From: Spider Boardman 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_5 on RISC-ultrix 4.4 (UNINSTALLED)
+             Date: Wed, 10 Feb 1999 23:33:31 -0500
+             Message-Id: <9902110433.AA12816@abyss.zk3.dec.com>
+     Branch: maint-5.005/perl
+           ! doio.c ext/IPC/SysV/SysV.xs hints/ultrix_4.sh
+____________________________________________________________________________
+[  2863] By: jhi                                   on 1999/02/11  08:35:35
+        Log: AVAILABILITY.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2858] By: gsar                                  on 1999/02/11  07:10:59
+        Log: remove dup hunk
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2857] By: gsar                                  on 1999/02/11  07:09:20
+        Log: sync with parent version of perldelta.pod
+     Branch: maint-5.005/perl
+          !> pod/perldelta.pod
+____________________________________________________________________________
+[  2853] By: gsar                                  on 1999/02/11  00:33:06
+        Log: integrate change#2816 from mainline
+             
+             minor bug in dumping blessed subrefs
+     Branch: maint-5.005/perl
+          !> ext/Data/Dumper/Dumper.pm
+____________________________________________________________________________
+[  2852] By: gsar                                  on 1999/02/10  23:17:49
+        Log: fair warning about -Dusethreads
+     Branch: maint-5.005/perl
+           ! Configure INSTALL README.threads
+____________________________________________________________________________
+[  2851] By: jhi                                   on 1999/02/10  23:00:39
+        Log: Snapshot of the ongoing AVAILABILITY discussion.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2850] By: jhi                                   on 1999/02/10  16:07:32
+        Log: OS390 and Windows AVAILABILITY entries enhanced.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2849] By: jhi                                   on 1999/02/10  12:39:46
+        Log: AS/400 and Mac were not described right.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2848] By: jhi                                   on 1999/02/10  09:13:49
+        Log: Added AVAILABILITY section.
+     Branch: maint-5.005/perl
+           ! pod/perl.pod
+____________________________________________________________________________
+[  2837] By: jhi                                   on 1999/02/08  14:51:39
+        Log: Fix typo introduced in change #2836.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2836] By: jhi                                   on 1999/02/08  14:44:31
+        Log: Augment change #2809, the h2ph-*symbols patch.
+     Branch: maint-5.005/perl
+           ! Configure t/lib/h2ph.pht
+____________________________________________________________________________
+[  2815] By: gsar                                  on 1999/02/05  03:44:50
+        Log: integrate change#2242 from mainline
+             
+             fix skipspace() to properly account for newlines in eval''-ed
+             strings (caused bogus line numbers in diagnostics and debugger)
+     Branch: maint-5.005/perl
+          !> toke.c
+____________________________________________________________________________
+[  2814] By: jhi                                   on 1999/02/04  21:21:39
+        Log: Stratus perlport update.
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  2813] By: jhi                                   on 1999/02/04  21:16:54
+        Log: Stratus VOS update.
+             
+             From: Paul_Green@stratus.com
+             To: jhi@iki.fi
+             Subject: RE: VOS changes for Perl5.005_03 are ready!
+             Date: Thu, 4 Feb 1999 14:51:07 -0500
+             Message-ID: <1D1A4EF7AD4DD211A80D00A0C9D7DB665A0168@exna1.stratus.com>
+     Branch: maint-5.005/perl
+           + vos/vos_accept.c
+	   ! MANIFEST README.vos perl.c pod/perlport.pod vos/Changes
+	   ! vos/build.cm vos/compile_perl.cm vos/config.h
+	   ! vos/config_h.SH_orig vos/perl.bind vos/test_vos_dummies.c
+           ! vos/vos_dummies.c vos/vosish.h
+____________________________________________________________________________
+[  2809] By: jhi                                   on 1999/02/03  19:54:16
+        Log: h2ph fixes + Configure patch to support them.
+             
+             From: "Kurt D. Starsinic" 
+             To: Graham Barr , Jarkko Hietaniemi ,
+             Gurusamy Sarathy 
+             Cc: perl5-porters@perl.org
+             Subject: [PATCH 5.00503_MT5] h2ph.PL
+             Date: Tue, 2 Feb 1999 19:48:06 -0500
+             Message-ID: <19990202194806.E10647@O2.chapin.edu>
+     Branch: maint-5.005/perl
+           ! Configure utils/h2ph.PL
+____________________________________________________________________________
+[  2802] By: jhi                                   on 1999/02/02  17:41:23
+        Log: From: John Bley 
+             To: perlbug@perl.org
+             Subject: [PATCH]5.005_54 (DOC) fix minor typos
+             Date: Tue, 2 Feb 1999 07:52:52 -0500 (EST)
+             Message-ID: 
+     Branch: maint-5.005/perl
+           ! pod/perlre.pod
+____________________________________________________________________________
+[  2790] By: jhi                                   on 1999/02/02  16:51:45
+        Log: Re-introduce the typo corrections (update to CGI 2.46
+             overran them).
+     Branch: maint-5.005/perl
+           ! lib/CGI.pm
+____________________________________________________________________________
+[  2781] By: jhi                                   on 1999/02/02  14:27:01
+        Log: Update the MkLinux note.
+     Branch: maint-5.005/perl
+           ! hints/linux.sh
+____________________________________________________________________________
+[  2775] By: jhi                                   on 1999/02/02  13:13:24
+        Log: Mention lib/Dumpvalue.pm.
+     Branch: maint-5.005/perl
+           ! pod/roffitall
+____________________________________________________________________________
+[  2767] By: jhi                                   on 1999/02/02  12:29:57
+        Log: Demangle spaces to tab+space.
+     Branch: maint-5.005/perl
+           ! hints/freebsd.sh
+____________________________________________________________________________
+[  2758] By: jhi                                   on 1999/02/02  10:51:26
+        Log: Detypo.
+     Branch: maint-5.005/perl
+           ! lib/Math/Trig.pm
+____________________________________________________________________________
+[  2755] By: jhi                                   on 1999/02/02  09:07:51
+        Log: Make FreeBSD 2.2.7 work with -Duseshrplib -ders.
+     Branch: maint-5.005/perl
+           ! hints/freebsd.sh
+____________________________________________________________________________
+[  2752] By: jhi                                   on 1999/02/01  22:15:12
+        Log: Add perlthrtut.pod.
+             
+             From: Dan Sugalski 
+             To: perl5-porters@perl.org
+             Subject: perlthrtut.pod
+             Date: Mon, 01 Feb 1999 10:57:11 -0800
+             Message-Id: <3.0.6.32.19990201105711.02e62540@ous.edu>
+     Branch: maint-5.005/perl
+           + pod/perlthrtut.pod
+	   ! MANIFEST pod/Makefile pod/buildtoc pod/perldelta.pod
+           ! pod/roffitall
+____________________________________________________________________________
+[  2741] By: gbarr                                 on 1999/02/01  03:00:42
+        Log: Fix typecasts in #2728
+             
+             From: "G. Del Merritt" 
+             Date: Fri, 29 Jan 1999 11:47:25 -0700
+             Message-Id: <199901291847.LAA04828@jhereg.perl.com>
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_5 on MSWin32-x86-object 4.0 (PATCH included)
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2740] By: gsar                                  on 1999/02/01  02:43:07
+        Log: CAPI inheritance tweak and doc
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  2739] By: jhi                                   on 1999/01/31  18:31:54
+        Log: Undo changes #2730 and #2731 and replace them
+             with an extensively tested patch from
+             Anton Berezin  (via private email).
+     Branch: maint-5.005/perl
+           ! Makefile.SH hints/freebsd.sh
+____________________________________________________________________________
+[  2738] By: gsar                                  on 1999/01/31  05:04:32
+        Log: fix bogus CAPI inheritance from change#2541
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  2737] By: gsar                                  on 1999/01/31  04:55:06
+        Log: remove the big ugly thing jhi sneezed into INSTALL :-)
+     Branch: maint-5.005/perl
+           ! INSTALL
+____________________________________________________________________________
+[  2736] By: jhi                                   on 1999/01/30  12:57:06
+        Log: From: pvhp@forte.com (Peter Prymmer)
+             To: perl-mvs@perl.org, perlbug@perl.com
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_5 on os390 05.00 (UNINSTALLED)
+             Date: Fri, 29 Jan 99 19:22:31 PST
+             Message-Id: <9901300322.AA19136@forte.com>
+             
+             (slighty edited at the end)
+     Branch: maint-5.005/perl
+           ! README.os390
+____________________________________________________________________________
+[  2735] By: jhi                                   on 1999/01/30  11:49:54
+        Log: Undo 5.005-devel random, srandom mention.
+     Branch: maint-5.005/perl
+           ! INSTALL
+____________________________________________________________________________
+[  2734] By: jhi                                   on 1999/01/29  22:22:00
+        Log: Add perlreftut.
+     Branch: maint-5.005/perl
+           + pod/perlreftut.pod
+           ! MANIFEST pod/perl.pod pod/perldelta.pod pod/roffitall
+____________________________________________________________________________
+[  2732] By: gsar                                  on 1999/01/29  20:09:44
+        Log: integrate change#2720 from mainline
+             
+             missing space while munging CCFLAGS for PERL_CAPI
+     Branch: maint-5.005/perl
+          !> lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  2731] By: jhi                                   on 1999/01/29  14:33:12
+        Log: FreeBSD version numbers can be like "2.2.8-release".
+     Branch: maint-5.005/perl
+           ! hints/freebsd.sh
+____________________________________________________________________________
+[  2730] By: jhi                                   on 1999/01/29  12:40:38
+        Log: FreeBSD hints iteration (hopefully convergent).
+             usethreads: require at least FreeBSD 2.2.8.
+             signal type: mirror change #2429 in cfgperl.
+     Branch: maint-5.005/perl
+           ! hints/freebsd.sh
+____________________________________________________________________________
+[  2729] By: gbarr                                 on 1999/01/29  05:06:32
+        Log: Trial release 5
+     Branch: maint-5.005/perl
+           ! Changes patchlevel.h pod/perlhist.pod
+____________________________________________________________________________
+[  2728] By: gbarr                                 on 1999/01/29  04:10:37
+        Log: From: Ted Law 
+             Date: Wed, 27 Jan 1999 14:54:03 -0500 (EST)
+             Message-Id: <199901271954.OAA07391@dcm2.cibcwg.com>
+             Subject: POSIX::strftime buffer overflow problem
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2728] By: gbarr                                 on 1999/01/29  04:10:37
+        Log: From: Ted Law 
+             Date: Wed, 27 Jan 1999 14:54:03 -0500 (EST)
+             Message-Id: <199901271954.OAA07391@dcm2.cibcwg.com>
+             Subject: POSIX::strftime buffer overflow problem
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2727] By: gbarr                                 on 1999/01/29  04:09:57
+        Log: From: Tom Spindler 
+             Date: Thu, 28 Jan 1999 17:15:11 -0800
+             Message-ID: <19990128171510.A11778@isi.net>
+             Subject: [PATCH] BeOS dynamic loading support for perl5.005_03_MT4
+     Branch: maint-5.005/perl
+           + ext/DynaLoader/dl_beos.xs
+	   ! Configure MANIFEST Makefile.SH README.beos hints/beos.sh
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  2726] By: gbarr                                 on 1999/01/29  03:30:51
+        Log: Remove use of File::Slurp in t/lib/textfill.t
+     Branch: maint-5.005/perl
+           ! t/lib/textfill.t
+____________________________________________________________________________
+[  2725] By: gbarr                                 on 1999/01/29  03:11:41
+        Log: From: Gurusamy Sarathy 
+             Date: Wed, 27 Jan 1999 23:14:33 -0800
+             Message-Id: <199901280714.XAA10176@activestate.com>
+             Subject: Re: NOT OK: "@INC contains: ." after make install - MAINT_TRIAL_4 - 5.005_03 maintenance trial 4 MSWin32-x86-object
+     Branch: maint-5.005/perl
+           ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2724] By: jhi                                   on 1999/01/28  19:27:15
+        Log: Change jhi@iki.fi to perlbug@perl.com.
+             Cosmetic change in semctl probing messages.
+     Branch: maint-5.005/perl
+           ! Configure hints/freebsd.sh
+____________________________________________________________________________
+[  2723] By: jhi                                   on 1999/01/28  17:27:49
+        Log: Yet another typo in a test program.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2722] By: jhi                                   on 1999/01/28  17:13:52
+        Log: The pthreads_created_joinable test had a typo,
+             by blind luck the default value works almost anywhere.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2721] By: jhi                                   on 1999/01/28  13:04:23
+        Log: MinT support, adapted from change #2594.
+     Branch: maint-5.005/perl
+	   + README.mint ext/POSIX/hints/mint.pl hints/mint.sh
+	   + mint/Makefile mint/README mint/errno.h mint/pwd.c mint/stdio.h
+           + mint/sys/time.h mint/time.h
+	   ! MANIFEST doio.c malloc.c miniperlmain.c perl.c
+	   ! pod/perldelta.pod t/io/fs.t t/lib/safe2.t t/op/groups.t
+           ! t/op/mkdir.t t/op/taint.t
+____________________________________________________________________________
+[  2719] By: jhi                                   on 1999/01/27  19:49:49
+        Log: From: "M.J.T. Guy" 
+             To: perl5-porters@perl.org
+             Subject: Re: [PATCH] perl5.005_03-MAINT_TRIAL_3: clarify Sv[INU]V versus Sv[INU]VX in perlguts
+             Date: Tue, 26 Jan 1999 22:25:07 +0000
+             Message-Id: 
+     Branch: maint-5.005/perl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[  2718] By: jhi                                   on 1999/01/27  19:46:04
+        Log: io/fs.t fails test #18 (sense of tests appears to have been
+             changed incompletely; this patch just skips the test attached,
+             a la test #17 preceding it).
+             
+             From: "G. Del Merritt" 
+             To: perlbug@perl.com
+             Subject: NOT OK: perl 5.00503 +MAINT_TRIAL_4 on MSWin32-x86-object (PATCHES included)
+             Date: Tue, 26 Jan 1999 12:09:09 -0700
+             Message-Id: <199901261909.MAA25525@jhereg.perl.com>
+     Branch: maint-5.005/perl
+           ! t/io/fs.t
+____________________________________________________________________________
+[  2717] By: jhi                                   on 1999/01/27  19:44:46
+        Log: Miniperl fails to build (pp_sys.c was changed and iperlsys.h wasn't)
+             
+             From: "G. Del Merritt" 
+             To: perlbug@perl.com
+             Subject: NOT OK: perl 5.00503 +MAINT_TRIAL_4 on MSWin32-x86-object (PATCHES included)
+             Date: Tue, 26 Jan 1999 12:09:09 -0700
+             Message-Id: <199901261909.MAA25525@jhereg.perl.com>
+     Branch: maint-5.005/perl
+           ! iperlsys.h
+____________________________________________________________________________
+[  2716] By: jhi                                   on 1999/01/27  19:38:36
+        Log: From: Dan Sugalski 
+             To: perlbug@perl.com, vmsperl@perl.org
+             Subject: NOT OK: perl 5.00503 +MAINT_TRIAL_4 on VMSAXP (Patch included, of course)
+             Date: Tue, 26 Jan 1999 14:40:38 -0800
+             Message-Id: <3.0.6.32.19990126144038.02e5d650@ous.edu>
+             
+             From: Dan Sugalski 
+             To: perl5-porters@perl.org, vmsperl@perl.org
+             Subject: [PATCH 5.005_03-MAILT_TRIAL_4]VMS test patches
+             Date: Tue, 26 Jan 1999 14:55:29 -0800
+             Message-Id: <3.0.6.32.19990126145529.02f22280@ous.edu>
+     Branch: maint-5.005/perl
+	   ! t/lib/textfill.t t/lib/textwrap.t vms/ext/Stdio/test.pl
+           ! vms/subconfigure.com
+____________________________________________________________________________
+[  2715] By: jhi                                   on 1999/01/27  19:34:28
+        Log: From: Mark Bixby 
+             To: perl5-porters@perl.org
+             Subject: [PATCH perl5.005_03-MAINT_TRIAL_4] MPE port tweaks
+             Date: Tue, 26 Jan 1999 16:32:18 -0800 (PST)
+             Message-Id: <199901270032.QAA13395@spock.dis.cccd.edu>
+     Branch: maint-5.005/perl
+           ! hints/mpeix.sh mpeix/relink
+____________________________________________________________________________
+[  2714] By: jhi                                   on 1999/01/27  19:32:41
+        Log: NetBSD does not do setruid, setrgid.
+     Branch: maint-5.005/perl
+           ! hints/netbsd.sh
+____________________________________________________________________________
+[  2713] By: jhi                                   on 1999/01/27  19:28:53
+        Log: FreeBSD usethreads, based on private email with
+             Anton Berezin .
+     Branch: maint-5.005/perl
+           ! hints/freebsd.sh
+____________________________________________________________________________
+[  2712] By: jhi                                   on 1999/01/27  19:26:17
+        Log: From: Ilya Zakharevich 
+             To: Mailing list Perl5 
+             Subject: [PATCH 5.005_*] OS/2 threads
+             Date: Tue, 26 Jan 1999 13:39:46 -0500
+             Message-ID: <19990126133946.A11594@monk.mps.ohio-state.edu>
+     Branch: maint-5.005/perl
+           ! os2/os2ish.h
+____________________________________________________________________________
+[  2711] By: jhi                                   on 1999/01/27  19:24:28
+        Log: "make ok", "make okfile", and "make nok" were broken
+             with -Duseshrplib, because of a shared typo.
+             
+             From: Spider Boardman 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_4 on alpha-dec_osf-thread 5.0 (UNINSTALLED)
+             Date: Wed, 27 Jan 1999 12:27:15 -0500
+             Message-Id: <199901271727.MAA233455@web.zk3.dec.com>
+     Branch: maint-5.005/perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  2710] By: jhi                                   on 1999/01/27  19:22:23
+        Log: Errno fixes:
+             
+             From: Spider Boardman 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_4 on alpha-dec_osf-thread 5.0 (UNINSTALLED)
+             Date: Wed, 27 Jan 1999 12:27:15 -0500
+             Message-Id: <199901271727.MAA233455@web.zk3.dec.com>
+             
+             From: Spider Boardman 
+             To: perlbug@perl.com
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_4 on alpha-dec_osf-thread 5.0 (UNINSTALLED)
+             Date: Wed, 27 Jan 1999 13:31:16 -0500
+             Message-Id: <199901271831.NAA241001@web.zk3.dec.com>
+     Branch: maint-5.005/perl
+           ! Configure ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  2709] By: jhi                                   on 1999/01/27  19:17:35
+        Log: Fix Configure installusrbinperl:
+             
+             From: Spider Boardman 
+             To: jhi@iki.fi
+             cc: perl5-porters@perl.org
+             Subject: Re: Not OK: perl 5.00503 +MAINT_TRIAL_4 on alpha-dec_osf-thread 5.0 (UNINSTALLED)
+             Date: Wed, 27 Jan 1999 13:03:35 -0500
+             Message-Id: <199901271803.NAA238257@web.zk3.dec.com>
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2708] By: gbarr                                 on 1999/01/26  04:14:42
+        Log: Trial release 4
+     Branch: maint-5.005/perl
+           ! Changes patchlevel.h pod/perlhist.pod
+____________________________________________________________________________
+[  2707] By: gbarr                                 on 1999/01/26  02:06:17
+        Log: Add redef IO::Handle::* for setv?buf()
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.pm
+____________________________________________________________________________
+[  2706] By: jhi                                   on 1999/01/24  22:26:12
+        Log: Better AIX libc nm scan.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2703] By: jhi                                   on 1999/01/24  14:26:18
+        Log: Minor Configure adjustments.
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2702] By: jhi                                   on 1999/01/24  13:57:33
+        Log: Use usethreads.cbu consistently.
+     Branch: maint-5.005/perl
+	   ! Configure hints/aix.sh hints/dec_osf.sh hints/dos_djgpp.sh
+	   ! hints/freebsd.sh hints/hpux.sh hints/irix_4.sh hints/irix_5.sh
+	   ! hints/irix_6.sh hints/irix_6_0.sh hints/irix_6_1.sh
+           ! hints/linux.sh hints/os2.sh hints/solaris_2.sh
+____________________________________________________________________________
+[  2701] By: jhi                                   on 1999/01/24  13:55:43
+        Log: Mention year-1900 and month 0..11 also here.
+     Branch: maint-5.005/perl
+           ! lib/Time/Local.pm
+____________________________________________________________________________
+[  2700] By: jhi                                   on 1999/01/24  13:52:36
+        Log: Document Configure -Uinstallusrbinperl.
+     Branch: maint-5.005/perl
+           ! INSTALL pod/perldelta.pod
+____________________________________________________________________________
+[  2699] By: jhi                                   on 1999/01/24  13:01:57
+        Log: perlopentut was missing.
+     Branch: maint-5.005/perl
+           + pod/perlopentut.pod
+           ! MANIFEST pod/perldelta.pod
+____________________________________________________________________________
+[  2697] By: jhi                                   on 1999/01/24  12:31:33
+        Log: Remove t/op/grent.t (t/op/pwent.t was removed by #2685).
+     Branch: maint-5.005/perl
+           - t/op/grent.t
+           ! MANIFEST
+____________________________________________________________________________
+[  2696] By: gsar                                  on 1999/01/24  11:39:39
+        Log: integrate changes#2255,2694 from mainline 
+             
+             another win32 portability fix: make sysread() and syswrite()
+             work on sockets
+             
+             better notes on 'make' on win32
+     Branch: maint-5.005/perl
+           ! README.win32 pp_sys.c win32/win32.h
+____________________________________________________________________________
+[  2693] By: gbarr                                 on 1999/01/24  00:53:31
+        Log: Integrate changes #2646,2647 from cfgperl
+             
+             Show LANGUAGE env var when needed. (Augment change #2645).
+             
+             SHMLBA strikes back in NetBSD/sparc.
+             
+             From: Dave Nelson 
+             To: jhi@iki.fi
+             Subject: perl5.005_02 + IPC::SysV + NetBSD/Sparc
+             Date: Mon, 18 Jan 1999 22:07:56 -0600
+             Message-Id: <199901190407.WAA02543@longhorn.bellcow.com>
+     Branch: maint-5.005/perl
+           ! util.c utils/perlbug.PL
+          !> ext/IPC/SysV/SysV.xs
+____________________________________________________________________________
+[  2692] By: gbarr                                 on 1999/01/24  00:28:52
+        Log: Integrate #2630 from mainline and an errno save fix
+     Branch: maint-5.005/perl
+          !> doio.c
+____________________________________________________________________________
+[  2691] By: gbarr                                 on 1999/01/24  00:28:37
+        Log: Update CGI modules to 2.46 and Getopt::Long to 2.19
+     Branch: maint-5.005/perl
+	   ! lib/CGI.pm lib/CGI/Carp.pm lib/CGI/Cookie.pm lib/CGI/Fast.pm
+           ! lib/CGI/Push.pm lib/Getopt/Long.pm t/lib/cgi-html.t
+____________________________________________________________________________
+[  2690] By: gbarr                                 on 1999/01/23  23:35:39
+        Log: Integrate #2681 from cfgperl
+             
+             Better (I hope) LANGUAGE documentation.
+     Branch: maint-5.005/perl
+          !> pod/perllocale.pod
+____________________________________________________________________________
+[  2689] By: gbarr                                 on 1999/01/23  23:31:59
+        Log: More nosuid patches
+             
+             From: Jarkko Hietaniemi 
+             Date: Fri, 22 Jan 1999 12:12:45 +0200 (EET)
+             Message-ID: <13992.20253.269284.841300@alpha.hut.fi>
+             Subject: Re: [PATCH] 5.005*: the "nosuid" problem: v2
+     Branch: maint-5.005/perl
+	   ! Configure config_h.SH perl.c perl.h pod/perldelta.pod
+           ! pod/perldiag.pod
+____________________________________________________________________________
+[  2688] By: gbarr                                 on 1999/01/23  23:03:39
+        Log: From: Anton Berezin 
+             Date: 21 Jan 1999 17:07:28 +0100
+             Message-ID: <86emood2yn.fsf@lion.plab.ku.dk>
+             Subject: [PATCH 5.005_54] hints/freebsd.sh - reflect the birth of version 4.0
+     Branch: maint-5.005/perl
+           ! hints/freebsd.sh
+____________________________________________________________________________
+[  2687] By: gbarr                                 on 1999/01/23  22:52:58
+        Log: overload syntax is no longer experimental
+     Branch: maint-5.005/perl
+           ! lib/overload.pm
+____________________________________________________________________________
+[  2685] By: gbarr                                 on 1999/01/23  22:15:46
+        Log: Remove t/op/pwent.t added from cfgperl, but is not robust.
+     Branch: maint-5.005/perl
+           - t/op/pwent.t
+           ! MANIFEST
+____________________________________________________________________________
+[  2684] By: gbarr                                 on 1999/01/23  22:13:07
+        Log: More doc typos from Abigail, and undo some in lib/diagnostics.pm
+             from change #2672
+             
+             From: abigail@fnx.com
+             Date: Tue, 19 Jan 1999 19:32:42 -0500 (EST)
+             Message-Id: <19990120003242.19938.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/CGI.pm] Typos
+             
+             From: abigail@fnx.com
+             Date: Tue, 19 Jan 1999 19:40:41 -0500 (EST)
+             Message-Id: <19990120004041.20052.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/CPAN.pm] Typos
+     Branch: maint-5.005/perl
+           ! lib/CGI.pm lib/CPAN.pm lib/diagnostics.pm
+____________________________________________________________________________
+[  2677] By: gbarr                                 on 1999/01/22  03:38:07
+        Log: Integrate #2645, #2648 and update patching.pod
+             
+             Document the GNU LANGUAGE env var.
+             
+             Mention /usr/share/locale.
+             
+             From: Daniel Grisinger 
+             Date: 21 Jan 1999 00:17:35 -0700
+             Message-Id: 
+             Subject: [PATCH] patching.pod, misc fixes (was Re: Which ? What ? Why ? When ?)
+     Branch: maint-5.005/perl
+           ! Porting/patching.pod
+          !> pod/perllocale.pod
+____________________________________________________________________________
+[  2676] By: gbarr                                 on 1999/01/22  01:54:02
+        Log: Fixup FindBin to use File::Spec
+             
+             Message-Id: <19990120185157.D24479@west-tip.transeda.com>
+             Date: Wed, 20 Jan 1999 18:51:57 +0000
+             From: Paul Johnson 
+             Subject: Re: [PATCH] 5005_54 Make FindBin work with UNC paths
+     Branch: maint-5.005/perl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[  2675] By: gbarr                                 on 1999/01/22  01:38:31
+        Log: Add new config values added for nosuid fix into VMS configure
+             
+             From: Dan Sugalski 
+             Date: Wed, 20 Jan 1999 12:05:18 -0800
+             Message-Id: <3.0.6.32.19990120120518.00a98470@ous.edu>
+             Subject: [PATCH 5.005_03MT3]VMS configure tweak
+     Branch: maint-5.005/perl
+           ! vms/subconfigure.com
+____________________________________________________________________________
+[  2674] By: gbarr                                 on 1999/01/22  01:36:35
+        Log: Fix for buggy compiler optimization on dec for pack("I",...)
+             
+             From: Achim Bohnet 
+             Date: Wed, 20 Jan 1999 20:25:53 +0100
+             Message-Id: <199901201925.UAA16940@o06.xray.mpe.mpg.de>
+             Subject: [PATCH] Not OK: perl 5.00503 +MAINT_TRIAL_3 on alpha-dec_osf 4.0
+     Branch: maint-5.005/perl
+           ! pp.c
+____________________________________________________________________________
+[  2673] By: gbarr                                 on 1999/01/22  01:29:37
+        Log: OS/2 patches from Ilya
+             
+             Date: Thu, 21 Jan 1999 02:08:27 -0500
+             From: Ilya Zakharevich 
+             Subject: [PATCH 5.00*] makedepend
+             Message-Id: <19990121020827.A25509@monk.mps.ohio-state.edu>
+             
+             Date: Thu, 21 Jan 1999 02:46:34 -0500
+             From: Ilya Zakharevich 
+             Subject: [PATCH 5.005_*] Errno.pm suffers from \\ too
+             Message-Id: <19990121024634.A25600@monk.mps.ohio-state.edu>
+             
+             Date: Thu, 21 Jan 1999 02:50:16 -0500
+             From: Ilya Zakharevich 
+             Subject: [PATCH 5.005_03] Resend of OS/2 patch
+             Message-Id: <19990121025016.A25612@monk.mps.ohio-state.edu>
+             
+             Date: Thu, 21 Jan 1999 03:58:29 -0500
+             From: Ilya Zakharevich 
+             Subject: [PATCH 5.005_*] OS2::PrfDB was exploiting a bug in U32 XSUBs
+             Message-Id: <19990121035829.A25822@monk.mps.ohio-state.edu>
+     Branch: maint-5.005/perl
+	   ! ext/Errno/Errno_pm.PL makedepend.SH os2/Changes
+           ! os2/Makefile.SHs os2/OS2/PrfDB/PrfDB.xs os2/os2.c
+____________________________________________________________________________
+[  2672] By: gbarr                                 on 1999/01/22  01:05:45
+        Log: More doc typo patches from Abigail
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120001410.19645.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL 3 lib/AutoLoader.pm]  Typos
+             Date: Tue, 19 Jan 1999 19:14:10 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120004312.20152.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Carp.pm] Typo
+             Date: Tue, 19 Jan 1999 19:43:12 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120004429.20190.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Cwd.pm] Typo
+             Date: Tue, 19 Jan 1999 19:44:29 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120005241.20693.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Safe.pm] Typo
+             Date: Tue, 19 Jan 1999 19:52:41 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120005525.20788.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/SelfLoader.pm] Typos
+             Date: Tue, 19 Jan 1999 19:55:25 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120005821.20926.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Symbol.pm] Typo
+             Date: Tue, 19 Jan 1999 19:58:21 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120010002.20973.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/Test.pm] Typo
+             Date: Tue, 19 Jan 1999 20:00:02 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120013823.23015.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/diagnostics.pm] Typos  (ignore
+             Date: Tue, 19 Jan 1999 20:38:23 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120013909.23085.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/ops.pm] Typo
+             Date: Tue, 19 Jan 1999 20:39:09 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120015817.24306.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/overload.pm] Typos
+             Date: Tue, 19 Jan 1999 20:58:16 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-Id: <19990120020326.24373.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL3 lib/re.pm] Typos
+             Date: Tue, 19 Jan 1999 21:03:26 -0500 (EST)
+     Branch: maint-5.005/perl
+	   ! ext/Opcode/Safe.pm ext/Opcode/ops.pm ext/re/re.pm
+	   ! lib/AutoLoader.pm lib/Carp.pm lib/Cwd.pm lib/SelfLoader.pm
+           ! lib/Symbol.pm lib/Test.pm lib/diagnostics.pm lib/overload.pm
+____________________________________________________________________________
+[  2671] By: gbarr                                 on 1999/01/22  00:40:13
+        Log: Fix win32 for Borland compiler and spaces in paths
+             
+             From: Gurusamy Sarathy 
+             Date: Mon, 18 Jan 1999 20:33:17 -0800
+             Message-Id: <199901190433.UAA03656@activestate.com>
+             Subject: [PATCH] 5.005_03-trial3 win32 issues
+     Branch: maint-5.005/perl
+	   ! README.win32 win32/Makefile win32/config_sh.PL
+           ! win32/makefile.mk win32/runperl.c
+____________________________________________________________________________
+[  2637] By: gbarr                                 on 1999/01/18  02:52:18
+        Log: Update DB_File to 1.63
+             
+             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             Date: Tue, 29 Dec 1998 16:23:54 +0000 (GMT)
+             Message-Id: <9812291623.AA20884@claudius.bfsec.bt.co.uk>
+             Subject: PATCH DB_File 1.63 for 5.005_54 & 5.005_03
+     Branch: maint-5.005/perl
+	   ! ext/DB_File/Changes ext/DB_File/DB_File.pm
+           ! ext/DB_File/DB_File.xs ext/DB_File/dbinfo ext/DB_File/typemap
+____________________________________________________________________________
+[  2636] By: gbarr                                 on 1999/01/17  18:03:31
+        Log: Trial release 3
+     Branch: maint-5.005/perl
+           ! Changes patchlevel.h
+____________________________________________________________________________
+[  2635] By: gbarr                                 on 1999/01/17  17:32:01
+        Log: Update to CPAN-1.44
+             
+             From: Mark-Jason Dominus 
+             Date: Sat, 16 Jan 1999 17:22:06 -0500
+             Message-ID: <19990116222206.3674.qmail@plover.com>
+             Subject: Re: DOC PATCH (5.005_54 perlsub.pod)
+     Branch: maint-5.005/perl
+	   ! lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm
+           ! pod/perlsub.pod
+____________________________________________________________________________
+[  2634] By: gbarr                                 on 1999/01/17  17:27:12
+        Log: Fix for suidperl when script is on a nosuid filesystem
+             
+             From: Jarkko Hietaniemi 
+             Date: Sun, 17 Jan 1999 16:27:06 +0200 (EET)
+             Message-ID: <13985.62266.324824.292401@alpha.hut.fi>
+             Subject: [PATCH] 5.005*: the "nosuid" problem: v2
+     Branch: maint-5.005/perl
+           ! Configure config_h.SH perl.c perl.h pod/perldiag.pod
+____________________________________________________________________________
+[  2618] By: gbarr                                 on 1999/01/16  19:18:26
+        Log: Added Dumpvalue.pm
+             
+             From: Ilya Zakharevich 
+             Date: Mon, 7 Dec 1998 02:44:25 -0500 (EST)
+             Message-Id: <199812070744.CAA18949@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Dumpvar.pm
+     Branch: maint-5.005/perl
+           + lib/Dumpvalue.pm
+           ! MANIFEST pod/perldelta.pod
+____________________________________________________________________________
+[  2617] By: gbarr                                 on 1999/01/16  19:09:36
+        Log: Minor change to perlxstut and added perlopentut.pod
+             
+             From: Nathan Torkington 
+             Date: Sat, 26 Dec 1998 14:28:21 +1300 (NZDT)
+             Message-ID: <13956.15285.933914.320849@localhost.frii.com>
+             Subject: [PATCH] perlxstut.pod fix
+             
+             From: Tom Christiansen 
+             Date: Sat, 09 Jan 1999 08:13:18 -0700
+             Message-Id: <199901091513.IAA17512@jhereg.perl.com>
+             Subject: perlopentut.pod
+     Branch: maint-5.005/perl
+	   ! MANIFEST pod/perl.pod pod/perldelta.pod pod/perlxstut.pod
+           ! pod/roffitall
+____________________________________________________________________________
+[  2616] By: gbarr                                 on 1999/01/16  18:59:55
+        Log: Win32 changes from Jan
+             
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Fri, 15 Jan 1999 23:38:35 +0100
+             Message-ID: <36a7c10d.16311905@smtp1.ibm.net>
+             Subject: [PATCH 5.005_03m2] Win32 Makefile patches
+             
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sat, 16 Jan 1999 13:02:45 +0100
+             Message-ID: <36a07da6.10722337@smtp1.ibm.net>
+             Subject: [PATCH 5.005_03m2] minor tweaks to README.win32
+     Branch: maint-5.005/perl
+           ! README.win32 win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2615] By: gbarr                                 on 1999/01/16  18:48:48
+        Log: Jumbo patch from Sarathy for PERL_OBJECT & USE_THREADS
+             
+             From: Gurusamy Sarathy 
+             Date: Thu, 07 Jan 1999 00:12:00 -0500
+             Message-Id: <199901070512.AAA23568@aatma.engin.umich.edu>
+             Subject: Re: [PATCH 5.005_03-MAINT_TRIAL2] fixes for PERL_OBJECT and USE_THREADS builds
+             
+             From: Gurusamy Sarathy 
+             Date: Thu, 14 Jan 1999 19:21:46 -0500
+             Message-Id: <199901150021.TAA01886@aatma.engin.umich.edu>
+             Subject: Re: [PATCH 5.005_03-MAINT_TRIAL2] fixes for PERL_OBJECT and USE_THREADS builds
+     Branch: maint-5.005/perl
+	   ! embed.h global.sym lib/ExtUtils/MM_Unix.pm objXSUB.h objpp.h
+	   ! op.c perl.c perl.h perly.c perly.y perly_c.diff pp.c proto.h
+	   ! sv.c t/io/fs.t toke.c win32/GenCAPI.pl win32/config.bc
+           ! win32/makedef.pl win32/runperl.c win32/win32.c
+____________________________________________________________________________
+[  2614] By: gbarr                                 on 1999/01/16  16:48:38
+        Log: From: Jarkko Hietaniemi 
+             Date: Fri, 15 Jan 1999 17:28:34 +0200 (EET)
+             Message-Id: <199901151528.RAA08785@alpha.hut.fi>
+             Subject: [PATCH] 5.005_03-MAINT_TRIAL_2: NetBSD patches
+             
+             From: Jarkko Hietaniemi 
+             Date: Fri, 15 Jan 1999 18:44:19 +0200 (EET)
+             Message-Id: <199901151644.SAA08184@alpha.hut.fi>
+             Subject: [PATCH] 5.005_03-MAINT_TRIAL_2: allow skipping the "install also as /usr/bin/perl" question of installperl
+             
+             From: Jarkko Hietaniemi 
+             Date: Fri, 15 Jan 1999 18:52:29 +0200 (EET)
+             Message-Id: <199901151652.SAA11259@alpha.hut.fi>
+             Subject: the promised "installusrbinperl + NetBSD" fix
+     Branch: maint-5.005/perl
+	   ! Configure Makefile.SH hints/netbsd.sh installperl
+           ! makedepend.SH unixish.h
+____________________________________________________________________________
+[  2613] By: gbarr                                 on 1999/01/16  16:28:40
+        Log: From: Laszlo Molnar 
+             Date: Thu, 14 Jan 1999 22:37:26 +0100
+             Message-ID: <19990114223726.A177@beeblebrox>
+             Subject: [PATCH for 5.005_03-MAINT_TRIAL_2] dos-djgpp update
+     Branch: maint-5.005/perl
+           ! djgpp/config.over djgpp/djgpp.c
+____________________________________________________________________________
+[  2612] By: gbarr                                 on 1999/01/16  16:27:25
+        Log: Hints for sco.sh to automatically support dynamic linking
+             
+             From: Peter Wolfe 
+             Date: Mon, 11 Jan 1999 11:50:20 -0800 (PST)
+             Message-Id: <199901111950.LAA01703@titan.teloseng.com>
+             Subject: SCO 3.2v5 patch for perl5.005_03-MAINT_TRIAL_1
+     Branch: maint-5.005/perl
+           ! hints/sco.sh
+____________________________________________________________________________
+[  2610] By: gbarr                                 on 1999/01/14  03:07:33
+        Log: Fix login in installperl for pods
+             
+             From: Robin Barker 
+             Date: Mon, 4 Jan 1999 13:50:10 GMT
+             Message-Id: <199901041350.NAA19665@cyclone.cise.npl.co.uk>
+             Subject: PATCH to installperl
+     Branch: maint-5.005/perl
+           ! installperl
+____________________________________________________________________________
+[  2609] By: gbarr                                 on 1999/01/14  03:04:37
+        Log: Fix incorrect "used only once" warnings
+             
+             From: Ilya Zakharevich 
+             Date: Fri, 8 Jan 1999 04:37:10 -0500
+             Message-ID: <19990108043710.A14390@monk.mps.ohio-state.edu>
+             Subject: Re: change#965 flakiness
+     Branch: maint-5.005/perl
+           ! gv.c
+____________________________________________________________________________
+[  2608] By: gbarr                                 on 1999/01/14  02:56:46
+        Log: Fixed double GLOB de-reference
+             
+             From: Gurusamy Sarathy 
+             Date: Sat, 09 Jan 1999 23:40:24 -0500
+             Message-Id: <199901100440.XAA12360@aatma.engin.umich.edu>
+             Subject: Re: IO::Pipe with perl -d (on HPUX)
+     Branch: maint-5.005/perl
+           ! ext/IO/lib/IO/Pipe.pm
+____________________________________________________________________________
+[  2607] By: gbarr                                 on 1999/01/14  02:53:40
+        Log: Added Carp::cluck to perldelta.pod
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2606] By: gbarr                                 on 1999/01/14  02:44:04
+        Log: New perlfaq*.pod from Tom (private mail)
+     Branch: maint-5.005/perl
+	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
+	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
+           ! pod/perlfaq9.pod
+____________________________________________________________________________
+[  2584] By: gbarr                                 on 1999/01/08  04:50:56
+        Log: implemented Ilya's suggested fix, and added a testcase
+             
+             From: Ilya Zakharevich 
+             Date: Tue, 5 Jan 1999 00:56:01 -0500 (EST)
+             Message-Id: <199901050556.AAA02597@monk.mps.ohio-state.edu>
+             Subject: Re: Text::ParseWords: regex fix
+     Branch: maint-5.005/perl
+           ! lib/Text/ParseWords.pm t/lib/parsewords.t
+____________________________________________________________________________
+[  2583] By: gbarr                                 on 1999/01/08  04:50:03
+        Log: From: Jarkko Hietaniemi 
+             Date: Thu, 7 Jan 1999 12:47:38 +0200 (EET)
+             Message-Id: <199901071047.MAA24100@alpha.hut.fi>
+             Subject: [PATCH] 5.005_03-MAINT_TRIAL_2: ext/Errno_pm.PL: understand wrapper cppstdins
+     Branch: maint-5.005/perl
+           ! ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  2582] By: gbarr                                 on 1999/01/08  03:37:55
+        Log: More doc changes from Abigail, and included change #2575 from cfgperl
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107041434.22326.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Time/gmtime.pm] Typo fix
+             Date: Wed, 6 Jan 1999 23:14:34 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107041746.22376.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Time/localtime.pm] Typo fix
+             Date: Wed, 6 Jan 1999 23:17:46 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107042105.22527.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/User/grent.pm] Typo fix
+             Date: Wed, 6 Jan 1999 23:21:05 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107042254.22624.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/User/pwent.pw] Typo fix
+             Date: Wed, 6 Jan 1999 23:22:54 -0500 (EST)
+     Branch: maint-5.005/perl
+	   ! lib/Math/Trig.pm lib/Time/gmtime.pm lib/Time/localtime.pm
+           ! lib/User/grent.pm lib/User/pwent.pm
+____________________________________________________________________________
+[  2578] By: gbarr                                 on 1999/01/07  04:30:26
+        Log: From: Dan Sugalski 
+             Date: Wed, 06 Jan 1999 13:47:34 -0800
+             Message-Id: <3.0.6.32.19990106134734.0334d260@ous.edu>
+             Subject: [PATCH 5.005_02-MT2, 5.005_5x]VMS.C tweak for occasional system() error
+     Branch: maint-5.005/perl
+           ! vms/vms.c
+____________________________________________________________________________
+[  2577] By: gbarr                                 on 1999/01/07  04:26:28
+        Log: Another set of doc patches from Abigail
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107032132.20124.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRAIL2 lib/Net/hostent.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:21:32 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107032445.20178.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Net/netent.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:24:45 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107032834.20362.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRAIL2 lib/Term/Complete.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:28:34 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107033136.20440.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRAIL2 lib/Term/ReadLine.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:31:36 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107033351.20540.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/CGI/Apache.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:33:51 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107033933.20707.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/CGI/Push.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:39:33 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107034548.20936.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/File/Copy.pm] Typo fixes
+             Date: Wed, 6 Jan 1999 22:45:48 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107034856.21056.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/File/Spec.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:48:56 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107035113.21174.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/File/Spec/Mac.pm] Typo fixes
+             Date: Wed, 6 Jan 1999 22:51:13 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107035612.21522.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Math/BigFloat.pm] Typo fix
+             Date: Wed, 6 Jan 1999 22:56:12 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107035842.21585.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Math/BigInt.pm] Typo fixes
+             Date: Wed, 6 Jan 1999 22:58:41 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107040644.22009.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Text/Wrap.pm] Typo fixes
+             Date: Wed, 6 Jan 1999 23:06:44 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107040955.22087.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Tie/Array.pm] Typo fixes
+             Date: Wed, 6 Jan 1999 23:09:55 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990107041136.22174.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/Tie/Hash.pm] Typo fix
+             Date: Wed, 6 Jan 1999 23:11:36 -0500 (EST)
+     Branch: maint-5.005/perl
+	   ! lib/CGI/Apache.pm lib/CGI/Push.pm lib/File/Copy.pm
+	   ! lib/File/Spec.pm lib/File/Spec/Mac.pm lib/Math/BigFloat.pm
+	   ! lib/Math/BigInt.pm lib/Net/hostent.pm lib/Net/netent.pm
+	   ! lib/Term/Complete.pm lib/Term/ReadLine.pm lib/Text/Wrap.pm
+           ! lib/Tie/Array.pm lib/Tie/Hash.pm
+____________________________________________________________________________
+[  2568] By: gbarr                                 on 1999/01/06  03:13:15
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Wed, 06 Jan 1999 01:24:09 +0100
+             Message-ID: <3696aa85.18259325@smtp1.ibm.net>
+             Subject: [PATCH 5.005_03-MAINT_TRIAL2] fixes for PERL_OBJECT and USE_THREADS builds
+     Branch: maint-5.005/perl
+	   ! embed.h global.sym objXSUB.h objpp.h perl.c proto.h
+           ! win32/GenCAPI.pl win32/makedef.pl
+____________________________________________________________________________
+[  2567] By: gbarr                                 on 1999/01/06  02:31:28
+        Log: From: Dan Sugalski 
+             Date: Tue, 05 Jan 1999 16:47:31 -0800
+             Message-Id: <3.0.6.32.19990105164731.00b5b2d0@ous.edu>
+             Subject: [PATCH 5.005_03-MAINT_TRIAL_2]taint.c fix for VMS
+     Branch: maint-5.005/perl
+           ! taint.c
+____________________________________________________________________________
+[  2566] By: gbarr                                 on 1999/01/06  02:29:05
+        Log: From: "W. Phillip Moore" 
+             Date: Tue, 5 Jan 1999 12:40:27 -0500 (EST)
+             Message-ID: <13970.20107.190314.549471@zappa>
+             Subject: [PATCH] POSIX getpgrp is not -w clean
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.pm
+____________________________________________________________________________
+[  2565] By: gbarr                                 on 1999/01/06  02:19:00
+        Log: From: Slaven Rezic 
+             Date: Mon, 4 Jan 1999 23:01:46 +0100 (CET)
+             Message-Id: <199901042201.XAA01875@cabulja.herceg.de>
+             Subject: FindBin.pm on Win32 systems
+     Branch: maint-5.005/perl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[  2564] By: gbarr                                 on 1999/01/06  02:13:23
+        Log: From: Mark Bixby 
+             Date: Mon, 4 Jan 1999 13:34:58 -0800 (PST)
+             Message-Id: <199901042134.NAA18852@spock.dis.cccd.edu>
+             Subject: [PATCH 5.005_03-MAINT_TRIAL_2] t/op/sysio.t for MPE/iX
+     Branch: maint-5.005/perl
+           ! t/op/sysio.t
+____________________________________________________________________________
+[  2563] By: gbarr                                 on 1999/01/06  02:03:44
+        Log: From: Jarkko Hietaniemi 
+             Date: Mon, 4 Jan 1999 19:25:03 +0200 (EET)
+             Message-Id: <199901041725.TAA30462@alpha.hut.fi>
+             Subject: [PATCH] 5.005_03-MAINT_TRIAL_2: undo untrue HP-UX 64-bitness (mostly harmless but misleading)
+     Branch: maint-5.005/perl
+           ! hints/hpux.sh
+____________________________________________________________________________
+[  2562] By: gbarr                                 on 1999/01/06  02:02:18
+        Log: Jumbo doc patch from Abigail
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105170142.4889.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03-TRIAL2 lib/ExtUtils/Liblist.pm] pod fixes
+             Date: Tue, 5 Jan 1999 12:01:42 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105172855.5115.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 MAINT2 lib/ExtUtils/Commands.pm] Typo fix.
+             Date: Tue, 5 Jan 1999 12:28:55 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105173808.5260.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH perl5.005_03 MAINT3 lib/ExtUtils/Embed.pm] Typo fix
+             Date: Tue, 5 Jan 1999 12:38:08 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105174859.5533.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 MAINT2 lib/ExtUtils/Install.pm] Typo fix
+             Date: Tue, 5 Jan 1999 12:48:59 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105174947.5547.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 lib/ExtUtils/MM_Unix.pm] Typo fixes
+             Date: Tue, 5 Jan 1999 12:49:46 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105182301.5966.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 lib/ExtUtils/MakeMaker.pm] Typos fixes.
+             Date: Tue, 5 Jan 1999 13:23:00 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105183344.6065.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/ExtUtils/Manifest.pm] Typo fixes
+             Date: Tue, 5 Jan 1999 13:33:44 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990105184028.6220.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/ExtUtils/Mksymlists.pm] Typo fix
+             Date: Tue, 5 Jan 1999 13:40:28 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990106012015.9451.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/IO/Pipe.pm] Typo fixes.
+             Date: Tue, 5 Jan 1999 20:20:15 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990106012047.9459.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRAIL2 lib/IO/Seekable.pm] Typo fixes
+             Date: Tue, 5 Jan 1999 20:20:47 -0500 (EST)
+             
+             From: abigail@fnx.com
+             Message-ID: <19990106012338.9536.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_03 TRIAL2 lib/IO/Socket.pm] Typo fix
+             Date: Tue, 5 Jan 1999 20:23:38 -0500 (EST)
+     Branch: maint-5.005/perl
+	   ! ext/IO/lib/IO/Pipe.pm ext/IO/lib/IO/Seekable.pm
+	   ! ext/IO/lib/IO/Socket.pm lib/ExtUtils/Command.pm
+	   ! lib/ExtUtils/Embed.pm lib/ExtUtils/Install.pm
+	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
+           ! lib/ExtUtils/Mksymlists.pm
+____________________________________________________________________________
+[  2560] By: gbarr                                 on 1999/01/03  16:59:01
+        Log: Trial release 2
+     Branch: maint-5.005/perl
+           ! Changes patchlevel.h
+____________________________________________________________________________
+[  2559] By: gbarr                                 on 1999/01/02  15:37:35
+        Log: From: Blair Zajac 
+             Date: Wed, 23 Dec 1998 17:13:32 -0800
+             Message-ID: <3681953C.8B6A90AA@geostaff.com>
+             Subject: Tie::SubstrHash patch
+     Branch: maint-5.005/perl
+           ! lib/Tie/SubstrHash.pm
+____________________________________________________________________________
+[  2558] By: gbarr                                 on 1999/01/02  15:30:01
+        Log: integrate change #2544
+             
+             From: Tim Bunce  
+             Subject: bug in pod2man search for perl binary [5.005_5x]
+             Date: Sat, 12 Dec 1998 23:08:51 +0000 
+             Message-ID: <19981212230851.A20578@ig.co.uk> 
+     Branch: maint-5.005/perl
+          !> pod/pod2man.PL
+____________________________________________________________________________
+[  2557] By: gbarr                                 on 1999/01/02  15:20:42
+        Log: integrate change #2548
+             
+             From: Hugo van der Sanden 
+             To: perl5-porters@perl.org
+             cc: hv@crypt0.demon.co.uk
+             Subject: [bug 5.004_54] duplicate error message
+             Date: Thu, 31 Dec 1998 04:05:25 +0000
+             Message-Id: <199812310405.EAA00386@crypt.compulink.co.uk>
+             
+             Message-ID: <13963.60672.134591.383377@alias-2.pr.mcs.net>
+             From: Stephen McCamant 
+             To: hv@crypt0.demon.co.uk
+             Cc: perl5-porters@perl.org
+             Subject: [PATCH _54] Re: duplicate error message
+             Date: Thu, 31 Dec 1998 16:10:13 -0600 (CST)
+             
+             Message-Id: <199901010732.HAA02926@crypt.compulink.co.uk>
+             From: Hugo van der Sanden 
+             To: Stephen McCamant 
+             cc: hv@crypt0.demon.co.uk, perl5-porters@perl.org
+             Subject: [TEST PATCH _54] Re: duplicate error message 
+             Date: Fri, 01 Jan 1999 07:32:14 +0000
+     Branch: maint-5.005/perl
+           ! op.c t/pragma/warn-1global taint.c
+____________________________________________________________________________
+[  2556] By: gbarr                                 on 1999/01/02  15:18:58
+        Log: From: abigail@fnx.com
+             Date: Mon, 28 Dec 1998 14:16:12 -0500 (EST)
+             Message-ID: <19981228191612.8380.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_02; lib/fields.pm] Typos in pod.
+     Branch: maint-5.005/perl
+           ! lib/fields.pm
+____________________________________________________________________________
+[  2555] By: gbarr                                 on 1999/01/02  15:11:45
+        Log: intregrate change #2547
+             
+             From: Chris Nandor 
+             Subject: Re: [PATCH] perlport.pod 1.38
+             Date: Thu, 31 Dec 1998 09:06:48 -0500
+             Message-Id: 
+     Branch: maint-5.005/perl
+          !> pod/perlport.pod
+____________________________________________________________________________
+[  2543] By: gbarr                                 on 1998/12/31  06:17:13
+        Log: integrated relevant parts og changes #2385 & #2387 from mainline
+             
+             various fixes for race conditions under threads: mutex locks based
+             on PL_threadnum were seriously flawed, since it means more than one
+             thread could enter the critical region; PL_na was global instead of
+             thread-local; child thread could finish and free thr structures
+             before Thread->new() got around to creating the Thread object;
+             cv_clone() needed locking, as it mucks with PL_comppad and other
+             global data; new_struct_thread() needed to lock template-thread's
+             mutex while copying its data
+             
+             another threads reliability fix: serialize writes to thr->threadsv
+             avoid most uses of PL_na (which is much more inefficient than a
+             simple local); update docs to suit; PL_na now being thr->Tna may
+             be a minor compatibility issue for extensions--will require dTHR
+             outside of XSUBs (those get automatic dTHR)
+     Branch: maint-5.005/perl
+	   ! XSUB.h djgpp/djgpp.c doio.c doop.c dump.c embedvar.h
+	   ! ext/DynaLoader/dl_next.xs ext/IO/IO.xs ext/Opcode/Opcode.xs
+	   ! ext/POSIX/POSIX.xs ext/Thread/Thread.xs ext/attrs/attrs.xs
+	   ! gv.c malloc.c mg.c objXSUB.h op.c os2/OS2/REXX/REXX.xs
+	   ! os2/os2.c perl.c perlvars.h perly.c perly.y pod/perlcall.pod
+	   ! pod/perlembed.pod pod/perlguts.pod pod/perlxs.pod pp.c pp.h
+	   ! pp_ctl.c pp_hot.c pp_sys.c run.c sv.c taint.c thread.h toke.c
+	   ! universal.c util.c vms/ext/Stdio/Stdio.xs vms/perly_c.vms
+           ! vms/vms.c win32/win32.c win32/win32thread.c
+____________________________________________________________________________
+[  2542] By: gbarr                                 on 1998/12/30  14:46:40
+        Log: doc updates
+             
+             From: abigail@fnx.com
+             Date: Wed, 23 Dec 1998 22:32:07 -0500 (EST)
+             Message-ID: <19981224033207.16751.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_02] Typo in documentation of pod2html.
+             
+             From: abigail@fnx.com
+             Date: Wed, 23 Dec 1998 22:59:59 -0500 (EST)
+             Message-ID: <19981224035959.16994.qmail@alexandra.wayne.fnx.com>
+             Subject: [PATCH 5.005_02] Re: m// doc is buggy (was Re: m'$foo' is undocumented)
+             
+             pod/perldelta.pod from:
+             From: Jarkko Hietaniemi 
+             Date: Thu, 17 Dec 1998 16:13:34 +0200 (EET)
+             Message-ID: <13945.4494.140163.973953@alpha.hut.fi>
+             Subject: Re: important UNDOC issues for 5.005_54
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod pod/perlop.pod pod/pod2html.PL
+____________________________________________________________________________
+[  2541] By: gbarr                                 on 1998/12/30  14:37:14
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Wed, 23 Dec 1998 21:26:38 +0100
+             Message-ID: <36895086.8849224@smtp1.ibm.net>
+             Subject: [PATCH 5.005_03m1] subdirectory Makefiles should inherit CAPI setting from command line
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  2538] By: gbarr                                 on 1998/12/29  14:41:29
+        Log: From: Jarkko Hietaniemi 
+             Date: Tue, 22 Dec 1998 10:57:48 +0200 (EET)
+             Message-ID: <13951.24332.932827.831376@alpha.hut.fi>
+             Subject: Re: x operator broken in DEC Alpha for 8-bit characters (Re: Digest-MD5-2.00 test fails on DEC Alpha - a patch)
+     Branch: maint-5.005/perl
+           ! t/op/repeat.t util.c
+____________________________________________________________________________
+[  2535] By: gbarr                                 on 1998/12/29  14:27:56
+        Log: From: Jarkko Hietaniemi 
+             Date: Fri, 18 Dec 1998 16:39:27 +0200 (EET)
+             Message-ID: <13946.26911.140905.387070@alpha.hut.fi>
+             Subject: Math::Trig, Math::Complex, Fcntl, addressed (Re: Undocumentation Issues for 5.005)
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  2534] By: gbarr                                 on 1998/12/29  14:23:02
+        Log: From: Jarkko Hietaniemi 
+             Date: Tue, 15 Dec 1998 17:52:32 +0200 (EET)
+             Message-ID: <13942.34240.66558.169330@alpha.hut.fi>
+             Subject: some doc link fixes
+     Branch: maint-5.005/perl
+	   ! pod/perlcall.pod pod/perldata.pod pod/perldiag.pod
+	   ! pod/perlfaq5.pod pod/perlfaq7.pod pod/perlfunc.pod
+	   ! pod/perlguts.pod pod/perllocale.pod pod/perlobj.pod
+           ! pod/perlsub.pod pod/perlvar.pod
+____________________________________________________________________________
+[  2533] By: gbarr                                 on 1998/12/29  14:23:00
+        Log: From: Chris Nandor 
+             Date: Sat, 19 Dec 1998 12:54:34 -0500
+             Message-Id: 
+             Subject: [PATCH] perlport.pod v1.37
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  2531] By: gbarr                                 on 1998/12/29  14:12:25
+        Log: change in_pod pattern to /^=\w/ from /^=/
+             From: Frank Ridderbusch 
+             Date: Tue, 15 Dec 1998 16:23:12 +0100 (MET)
+             Message-ID: <13942.32480.700000.640927@utensil>
+             Subject: Minor Bug in AutoSplit.qm in 5.005 and 5.004
+     Branch: maint-5.005/perl
+           ! lib/AutoSplit.pm
+____________________________________________________________________________
+[  2530] By: gbarr                                 on 1998/12/29  14:09:51
+        Log: undo the "perlsyn intrusion" into perlfunc
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2529] By: gbarr                                 on 1998/12/29  14:04:35
+        Log: From: Jarkko Hietaniemi 
+             Date: Sun, 13 Dec 1998 14:54:56 +0200 (EET)
+             Message-Id: <199812131254.OAA24494@koah.research.nokia.com>
+             Subject: ignore_versioned_libs isn't used anywhere (it became ignore_versioned_solibs)
+     Branch: maint-5.005/perl
+           ! hints/linux.sh
+____________________________________________________________________________
+[  2528] By: gbarr                                 on 1998/12/29  13:59:49
+        Log: From: Ilya Zakharevich 
+             Date: Wed, 28 Oct 1998 01:20:33 -0500 (EST)
+             Message-Id: <199810280620.BAA06893@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.00552] Make sort respect overloading
+     Branch: maint-5.005/perl
+           ! pp_ctl.c t/pragma/overload.t
+____________________________________________________________________________
+[  2527] By: gbarr                                 on 1998/12/29  13:58:56
+        Log: doc update, quads only work on 64-but platforms
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2526] By: gbarr                                 on 1998/12/29  13:49:55
+        Log: From: Andy Dougherty 
+             Date: Tue, 1 Dec 1998 12:50:27 -0500 (EST)
+             Message-Id: 
+             Subject: [PATCH 5.005_xx] erroneous 'none' in lddlflags
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2512] By: gbarr                                 on 1998/12/28  14:56:36
+        Log: change t/op/pwent.t to ignore NIS includes
+             From: achampio@lehman.com (Alan Champion)
+             Date: Tue, 1 Dec 1998 15:18:03 GMT
+             Message-Id: <9812011518.AA00005@lonhpov1.lehman.com>
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_1 on sun4-solaris 2.3 (UNINSTALLED)
+             
+             From: pvhp@forte.com (Peter Prymmer)
+             Date: Fri, 4 Dec 98 17:11:41 PST
+             Message-Id: <9812050111.AA16778@forte.com>
+             Subject: [PATCH 5.005_03-MAINT_TRIAL_1 && 5.005_54]dumper and searchdict ebcdic style
+     Branch: maint-5.005/perl
+           ! t/lib/dumper.t t/lib/searchdict.t t/op/pwent.t
+____________________________________________________________________________
+[  2511] By: gbarr                                 on 1998/12/28  14:55:28
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Tue, 01 Dec 1998 00:07:33 +0100
+             Message-ID: <366921b5.14512598@smtp1.ibm.net>
+             Subject: Re: 5.005_03-MAINT-TRIAL1, [PATCH] to compile on Win32
+             
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Wed, 02 Dec 1998 00:24:54 +0100
+             Message-ID: <366a77bb.19498126@smtp1.ibm.net>
+             Subject: Re: 5.005_03-MAINT-TRIAL1, [PATCH] spaces in filenames support
+     Branch: maint-5.005/perl
+	   ! perl.h proto.h taint.c win32/GenCAPI.pl win32/Makefile
+	   ! win32/config.bc win32/config.gc win32/config.vc
+           ! win32/config_sh.PL win32/makedef.pl
+____________________________________________________________________________
+[  2510] By: gbarr                                 on 1998/12/28  14:37:35
+        Log: From: Ilya Zakharevich 
+             Date: Tue, 1 Dec 1998 00:34:08 -0500 (EST)
+             Message-Id: <199812010534.AAA21371@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Debugger 'v' command
+     Branch: maint-5.005/perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[  2478] By: gbarr                                 on 1998/12/13  16:02:24
+        Log: From: pvhp@forte.com (Peter Prymmer)
+             Date: Mon, 30 Nov 98 21:08:36 PST
+             Message-Id: <9812010508.AA07791@forte.com>
+             Subject: [PATCH 5.005_03t1 && 5.005_54]dll linkage side decks for OS/390
+     Branch: maint-5.005/perl
+           ! hints/os390.sh
+____________________________________________________________________________
+[  2477] By: gbarr                                 on 1998/12/13  16:00:23
+        Log: From: Dan Sugalski 
+             Date: Mon, 30 Nov 1998 17:08:12 -0800
+             Message-Id: <3.0.6.32.19981130170812.00b12b70@ous.edu>
+             Subject: [PATCH 5.005_03]Minor VMS patches needed to build
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MM_VMS.pm vms/subconfigure.com
+____________________________________________________________________________
+[  2476] By: gbarr                                 on 1998/12/13  15:30:58
+        Log: From: pvhp@forte.com (Peter Prymmer)
+             Date: Fri, 4 Dec 98 00:37:32 PST
+             Message-Id: <9812040837.AA10908@forte.com>
+             Subject: Re: [PATCH 5.005_03-MAINT-TRIAL1] some tweaks to the build process for OS/390
+     Branch: maint-5.005/perl
+           ! Makefile.SH regcomp.c
+____________________________________________________________________________
+[  2472] By: gbarr                                 on 1998/12/12  17:12:28
+        Log: undo changes to Exporter.pm from #2312
+     Branch: maint-5.005/perl
+           ! lib/Exporter.pm
+____________________________________________________________________________
+[  2471] By: gbarr                                 on 1998/12/12  17:09:39
+        Log: integrate change#2459 from cfgperl
+             
+             enclose case want_vtbl_collxfrm with #ifdef USE_LOCALE_COLLATE
+             
+             From: hansm@icgroup.nl 
+             Subject: Not OK: perl 5.00503 +MAINT_TRIAL_1 on OPENSTEP-Mach 4_1 (UNINSTALLED)
+             Date: Sun, 6 Dec 98 22:19:54 +0100 
+             Message-Id: <9812062116.AA26445@icgned.icgroup.nl> 
+     Branch: maint-5.005/perl
+           ! util.c
+____________________________________________________________________________
+[  2470] By: gbarr                                 on 1998/12/12  16:46:03
+        Log: re-sync'd Text::Wrap with new version from CPAN
+     Branch: maint-5.005/perl
+          +> t/lib/textfill.t
+           ! MANIFEST
+          !> lib/Text/Wrap.pm t/lib/textwrap.t
+____________________________________________________________________________
+[  2469] By: gbarr                                 on 1998/12/12  15:58:43
+        Log: integrate changes#2435,2436 from cfgperl
+             
+             Pod::Html and Pod::Text were not locale-savvy:
+             for example in =head1 all non-ASCII-\w-runs were
+             turned into underscores in NAME tags.  This could
+             result in several NAME tags becoming identical.
+             Reported by:
+             
+             From: Fyodor Krasnov  
+             Subject: pod2html vs Russian Characters
+             To: Tom.Christiansen@snn.aha.ru, tchrist@perl.com 
+             Date: Tue, 24 Nov 1998 19:00:36 +0300 (MSK) 
+             Message-Id: <199811241600.TAA05149@stat.aha.ru> 
+             
+             One paste too many in #2435.
+     Branch: maint-5.005/perl
+          !> lib/Pod/Html.pm lib/Pod/Text.pm
+____________________________________________________________________________
+[  2468] By: gbarr                                 on 1998/12/12  15:01:58
+        Log: redirect trail program to error msg file in Configure
+             
+             From: Andy Dougherty 
+             Date: Tue, 1 Dec 1998 13:40:12 -0500 (EST)
+             Message-Id: 
+             Subject: [PATCH 5.005_xx] Missing redirection of simple test program
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2467] By: gbarr                                 on 1998/12/12  14:52:24
+        Log: Change reall_srchlen back to an int from a #define
+             
+             From: Graham Barr 
+             Date: Mon, 30 Nov 1998 14:29:14 -0600
+             Message-ID: <19981130142914.X1504@asic.sc.ti.com>
+             Subject: [PATCH 5.005_03-MT!] Re: one compilation warning from 5_03-MT1
+     Branch: maint-5.005/perl
+           ! malloc.c
+____________________________________________________________________________
+[  2466] By: gbarr                                 on 1998/12/12  14:40:56
+        Log: s/SCM_CREDENTIALSS/SCM_CREDENTIALs/ in Socket.xs
+             
+             From: Andy Dougherty 
+             Date: Thu, 3 Dec 1998 11:26:25 -0500 (EST)
+             Message-Id: 
+             Subject: [PATCH 5.005_03-MAINT_TRIAL_1] Trivial grammar patch
+     Branch: maint-5.005/perl
+           ! Porting/Glossary
+          !> ext/Socket/Socket.xs
+____________________________________________________________________________
+[  2456] By: gsar                                  on 1998/12/06  13:49:02
+        Log: branch perldelta.pod
+     Branch: maint-5.005/perl
+          +> pod/perldelta.pod
+____________________________________________________________________________
+[  2455] By: gsar                                  on 1998/12/06  13:47:21
+        Log: clobber perldelta.pod to reestablish branch from perl5005delta.pod
+     Branch: maint-5.005/perl
+           - pod/perldelta.pod
+____________________________________________________________________________
+[  2415] By: gbarr                                 on 1998/11/30  02:31:15
+        Log: Chnages,patchlevel.h etc...
+     Branch: maint-5.005/perl
+	   ! Changes MANIFEST patchlevel.h t/op/tr.t win32/Makefile
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  2411] By: gbarr                                 on 1998/11/30  01:31:22
+        Log: integrated changes#2323,2353,2369
+             
+             From: maeda@src.ricoh.co.jp
+             Date: Tue, 24 Nov 1998 10:37:45 +0900
+             Message-Id: <199811240137.KAA05867@luna.src.ricoh.co.jp>
+             Subject: format "..." bug
+             
+             Locale collation, ctype, and numeric, were initialized wrong
+             (if LC_ALL or LANG were unset, so were the collation/ctype/numeric),
+             as reported by
+             
+             From: Ilya.Sandler@etak.com (Ilya Sandler)
+             Subject: a bug in locale handling: LC_COLLATE ignored sometimes
+             Date: 25 Nov 1998 04:53:52 +0200
+             Message-ID: 
+             
+             allow final period in a file (not followed by a newline) to
+             terminate format spec
+     Branch: maint-5.005/perl
+           ! pp_ctl.c toke.c util.c
+          !> t/op/write.t
+____________________________________________________________________________
+[  2408] By: gbarr                                 on 1998/11/30  01:29:19
+        Log: integrated ext/B/... changes from mainline
+     Branch: maint-5.005/perl
+	  !> ext/B/B.pm ext/B/B.xs ext/B/B/Assembler.pm ext/B/B/C.pm
+          !> ext/B/B/Disassembler.pm
+____________________________________________________________________________
+[  2404] By: gbarr                                 on 1998/11/30  00:26:36
+        Log: integrate some of change#2318 from mainline
+     Branch: maint-5.005/perl
+          +> t/op/grent.t t/op/pwent.t
+	  !> ext/DB_File/Changes ext/DB_File/DB_File.pm
+	  !> ext/DB_File/DB_File.xs ext/POSIX/hints/dynixptx.pl
+	  !> ext/Socket/Socket.pm ext/Socket/Socket.xs lib/Benchmark.pm
+          !> pod/perldata.pod t/op/sort.t
+____________________________________________________________________________
+[  2398] By: gbarr                                 on 1998/11/29  22:11:16
+        Log: integrate changes#2254,2259,2335,2345,2348,2361,2368,2380 from mainline
+             
+             win32_recvfrom() compatibility fix
+             
+             From: "Kurt D. Starsinic" 
+             Subject: Re: [PATCH] Re: pod2man bug in date generated line
+             To: Albert Dvornik , "Larry W. Virden" 
+             Cc: perlbug@perl.com
+             Date: 20 Nov 1998 21:30:17 +0200
+             Message-ID: 
+             
+             make $1 et al readonly under threads; make C fail like
+             C<$1 = undef> does
+             
+             fix typo in pp_defined() causing C to fail
+             
+             more conservative version of changes#2345,2346,2347; those break
+             C which seems to be extensively used in
+             the libs :-(
+             
+             fix uninitialized warnings
+             From: Brian Callaghan 
+             Date: Thu, 19 Nov 1998 17:49:10 -0800
+             Message-Id: <3654CA96.B64FCAEB@itginc.com>
+             Subject: Complete.pm patch (version 1.1)
+             
+             Liblist tweak suggested by Swen Thuemmler ;
+             add C<$Config{installarchlib}/CORE> to the default locations searched
+             on win32
+             
+             prefer IO::Handle for IO if FileHandle:: is empty (as suggested by
+             Tim Bunce)
+     Branch: maint-5.005/perl
+           ! gv.c op.c pp.c
+	  !> lib/ExtUtils/Liblist.pm lib/Term/Complete.pm pod/perlfaq4.pod
+          !> pod/pod2man.PL t/op/undef.t win32/win32sck.c
+____________________________________________________________________________
+[  2315] By: gbarr                                 on 1998/11/27  05:16:50
+        Log: integrate change#2246 from mainline, while still allowing
+             C
+             
+             allow C
+     Branch: maint-5.005/perl
+           ! op.c sv.c
+          !> t/op/sort.t
+____________________________________________________________________________
+[  2314] By: gbarr                                 on 1998/11/27  04:03:58
+        Log: integrate change#2159 from mainline
+             
+             Data::Dumper update
+     Branch: maint-5.005/perl
+	  !> ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm
+          !> ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Todo t/lib/dumper.t
+____________________________________________________________________________
+[  2313] By: gbarr                                 on 1998/11/27  03:04:21
+        Log: Fix typo in change#2312
+     Branch: maint-5.005/perl
+           ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[  2312] By: gbarr                                 on 1998/11/27  03:03:03
+        Log: integrate change#1837,1967,1986,2060,2068,2146,2214,2224,2300,2301 from mainline
+             
+             (via private mail)
+             From: Charles Bailey 
+             Date: Sat, 05 Sep 1998 01:23:58 -0400 (EDT)
+             Message-id: <01J1FH7R43NS002F14@cor.newman.upenn.edu>
+             Subject: [Patch 5.005_02] Miscellaneous VMS cleanup
+             
+             correct bugs exposed in MM_Unix.pm by commenting out Selfloader
+             (MAN3PODS cannot be set to ' '; stray stricture violation)
+             
+             qualify names of builtins
+             
+             handle '::' in section names properly
+             From: Graham Barr 
+             Date: Sat, 17 Oct 1998 12:57:54 -0500
+             Message-ID: <19981017125754.C510@pobox.com>
+             Subject: Re: pod2html
+             
+             From: Zachary Miller 
+             Date: Tue, 20 Oct 1998 20:52:20 -0500
+             Message-Id: <199810210152.UAA07792@simon.er.usgs.gov>
+             Subject: Exporter.pm's export_to_level() argument handling buggy
+             
+             hand-apply whitespace-mutiliated patch
+             From: "vishal bhatia" 
+             Date: Wed, 28 Oct 1998 23:45:32 PST
+             Message-ID: <19981029074534.2334.qmail@hotmail.com>
+             Subject: [PATCH 5.005_52]Compiling modules,more bugfixes for B
+             
+             typo in newHVhv()
+             
+             avoid endless loops in Text::Wrap (from a suggestion by Lupe
+             Christoph )
+             
+             properly free temporaries created by threads
+             
+             fix PL_defoutgv leak under threads
+     Branch: maint-5.005/perl
+          !> (integrate 31 files)
+____________________________________________________________________________
+[  2311] By: gbarr                                 on 1998/11/27  01:31:36
+        Log: integrate change#2210 from mainline
+             
+             fix AvREALISH bogusness
+     Branch: maint-5.005/perl
+           ! av.c
+          !> t/op/array.t
+____________________________________________________________________________
+[  2310] By: gbarr                                 on 1998/11/27  00:20:21
+        Log: integrate changes#2235,2299,2300 from mainline
+             
+             catch a neophyte trap: open(), close() etc.
+             
+             fix C misoptimization that fails
+             to set the package for the block properly
+             
+             properly free temporaries created by threads
+     Branch: maint-5.005/perl
+           ! ext/Thread/Thread.xs op.c perl.h util.c
+          !> t/comp/package.t
+____________________________________________________________________________
+[  2309] By: gbarr                                 on 1998/11/27  00:16:36
+        Log: integrate change#2298 from mainline
+     Branch: maint-5.005/perl
+          !> universal.c
+____________________________________________________________________________
+[  2308] By: gbarr                                 on 1998/11/27  00:11:44
+        Log: Updates for MPE/iX DynaLoader and installperl, via private mail
+             forwarded by Jarkko Hietaniemi from Mark Bixby
+     Branch: maint-5.005/perl
+           ! ext/DynaLoader/dl_mpeix.xs installperl
+____________________________________________________________________________
+[  2307] By: gbarr                                 on 1998/11/27  00:07:27
+        Log: Remove docs for feature not in _0*
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  2306] By: gbarr                                 on 1998/11/26  23:44:47
+        Log: Allow PL_FILES to have multiple targets from one source by allowing
+             an array ref as the value in the hash
+     Branch: maint-5.005/perl
+	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  2305] By: gbarr                                 on 1998/11/26  23:38:06
+        Log: fix unsigned variables to use SvUV and sv_setuv
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/typemap
+____________________________________________________________________________
+[  2304] By: gbarr                                 on 1998/11/26  23:36:17
+        Log: Fix embeded \n in ABSTRACT and <> in AUTHOR
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  2302] By: gbarr                                 on 1998/11/26  15:27:03
+        Log: integrate changes#2177,2189,2228,2229 from cfgperl
+             
+             0**0 = 1, from
+             
+             From: d-lewart@uiuc.edu (Daniel S. Lewart)
+             Subject: Math::Complex 0**0 patches
+             Date: Sun, 1 Nov 1998 19:21:48 -0600 (CST)
+             Message-Id: <199811020121.TAA28310@staff2.cso.uiuc.edu>
+             
+             sysio.t failure: fix undefined order of evaluation, from
+             
+             From: Spider Boardman 
+             Subject: Not OK: perl 5.00553 on alpha-thread 5.0 [PATCH]
+             Date: 4 Nov 1998 01:22:30 +0200
+             Message-ID: 
+             
+             From: "Martin J. Bligh" 
+             Message-ID: <187803647.910720870@w-186d219.rhe.sequent.com>
+             Subject: Re: Making Perl work on DYNIX/ptx
+             Date: Tue, 10 Nov 1998 18:01:10 -0800
+             
+             From: "Martin J. Bligh" 
+             Subject: Re: Making Perl work on DYNIX/ptx
+             Date: Tue, 10 Nov 1998 16:24:26 -0800
+             Message-ID: <181999655.910715066@w-186d219.rhe.sequent.com>
+     Branch: maint-5.005/perl
+          +> ext/DB_File/hints/dynixptx.pl ext/POSIX/hints/dynixptx.pl
+           ! pp_sys.c
+          !> hints/dynixptx.sh lib/Math/Complex.pm t/lib/complex.t
+____________________________________________________________________________
+[  2297] By: gbarr                                 on 1998/11/24  02:32:38
+        Log: integrate change#2266 from cfgperl
+             From: John Tobey 
+             Subject: [PATCH] perlfaq typos
+             To: perl5-porters@perl.com
+             Date: 22 Nov 1998 04:25:15 +0200
+             Message-ID: 
+     Branch: maint-5.005/perl
+	  !> pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+          !> pod/perlfaq7.pod pod/perlfaq8.pod
+____________________________________________________________________________
+[  2296] By: gbarr                                 on 1998/11/24  01:39:18
+        Log: integrated changes#2011,2092,2106,2108,2143 from cfgperl
+             
+             More robust yacc/bison failure output handling.
+             
+             More robustness.
+             
+             Bison says 'parse error', not 'parser error'.
+             
+             The "parse error" must be converted to "syntax error",
+             just matching it aint' enough.
+             
+             There can be multiple yacc/bison errors.
+     Branch: maint-5.005/perl
+	  !> t/comp/require.t t/op/misc.t t/pragma/subs.t
+          !> t/pragma/warning.t
+____________________________________________________________________________
+[  2295] By: gbarr                                 on 1998/11/24  00:49:28
+        Log: integrate change#1823 from mainline
+             From: Joe Buehler 
+             Date: 29 Aug 1998 17:13:28 -0400
+             Message-ID: 
+             Subject: patches for perl 5.005_51 under U/WIN
+     Branch: maint-5.005/perl
+          +> hints/uwin.sh
+           ! Configure
+          !> installman makedepend.SH t/lib/posix.t
+____________________________________________________________________________
+[  2258] By: gbarr                                 on 1998/11/21  20:48:02
+        Log: Another Configure patch from Jarkko
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  2257] By: gbarr                                 on 1998/11/21  17:23:13
+        Log: Big Configure patch from Jarkko Hietaniemi  via
+             private mail
+     Branch: maint-5.005/perl
+	   ! Configure Makefile.SH config_h.SH hints/dec_osf.sh
+	   ! hints/freebsd.sh hints/irix_6.sh hints/linux.sh
+           ! hints/next_3.sh hints/os390.sh pp_sys.c
+____________________________________________________________________________
+[  2239] By: gbarr                                 on 1998/11/14  03:59:58
+        Log: more doc changes from mainline
+     Branch: maint-5.005/perl
+           ! pod/perldiag.pod pod/perlfunc.pod pod/perlre.pod
+          !> INSTALL README.vms vms/ext/Stdio/Stdio.pm
+____________________________________________________________________________
+[  2238] By: gbarr                                 on 1998/11/14  02:51:51
+        Log: integrate doc changes from mainline, including
+             changes#1796,1811,1830,1831,1844,1846,1876,1905,2149,2152
+     Branch: maint-5.005/perl
+	  !> README.os390 pod/perl.pod pod/perldelta.pod pod/perlfaq1.pod
+	  !> pod/perlform.pod pod/perlfunc.pod pod/perlguts.pod
+	  !> pod/perlipc.pod pod/perllocale.pod pod/perlport.pod
+	  !> pod/perlref.pod pod/perlrun.pod pod/perlvar.pod pod/perlxs.pod
+          !> pod/pod2man.PL
+____________________________________________________________________________
+[  2237] By: gbarr                                 on 1998/11/14  02:51:49
+        Log: integrate change#1847 from mainline
+             From: Roderick Schertler 
+             Date: Wed, 09 Sep 1998 23:52:48 -0400
+             Message-ID: <20567.905399568@eeyore.ibcinc.com>
+             Subject: seed srand from /dev/urandom when possible
+     Branch: maint-5.005/perl
+           ! pp.c
+____________________________________________________________________________
+[  2232] By: gbarr                                 on 1998/11/13  03:12:37
+        Log: integrate change#2215 from mainline
+             set close-on-exec bit on pipe() FDs
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod pod/perlvar.pod pp_sys.c
+____________________________________________________________________________
+[  2231] By: gbarr                                 on 1998/11/13  02:16:03
+        Log: integrate change#2188 from mainline
+             fix return value of win32_pclose()
+     Branch: maint-5.005/perl
+          !> win32/win32.c
+____________________________________________________________________________
+[  2218] By: gbarr                                 on 1998/11/08  16:48:44
+        Log: From: Graham Barr 
+             Date: Mon, 2 Nov 1998 07:38:52 -0600
+             Message-ID: <19981102073852.A12751@asic.sc.ti.com>
+             Subject: [PATCH 5.005_*] Re: IPC::Msg 1.03
+     Branch: maint-5.005/perl
+           ! ext/IPC/SysV/Msg.pm
+____________________________________________________________________________
+[  2217] By: gbarr                                 on 1998/11/08  05:22:39
+        Log: fix changes in 2213 not to break binary compat
+     Branch: maint-5.005/perl
+           ! pp_ctl.c proto.h
+____________________________________________________________________________
+[  2216] By: gbarr                                 on 1998/11/08  04:21:01
+        Log: integrate change#2192 from mainline
+             indeterminate order-of-evaluation fixes
+     Branch: maint-5.005/perl
+           ! mg.c
+____________________________________________________________________________
+[  2213] By: gbarr                                 on 1998/11/08  00:39:44
+        Log: integrate change#2051 from mainline
+             properly restore PL_rsfp_filters after require
+     Branch: maint-5.005/perl
+	   ! embed.h global.sym objXSUB.h objpp.h pp_ctl.c proto.h scope.c
+           ! scope.h
+____________________________________________________________________________
+[  2212] By: gbarr                                 on 1998/11/07  23:13:29
+        Log: integrate changes#1914,1925,1926,1945,1956,1987 from mainline
+             
+             normalize tm struct passed to strftime() with mktime()
+             From: Spider Boardman 
+             Date: Wed, 30 Sep 1998 15:12:09 -0400
+             Message-Id: <199809301912.PAA26119@Orb.Nashua.NH.US>
+             Subject: [PATCH 5.005_52] Re: POSIX::strftime returns incorrect date 
+             
+             disable USE_THREADS when PERL_OBJECT is enabled
+             
+             From: Mark-Jason Dominus 
+             Date: Sun, 04 Oct 1998 14:48:11 -0400
+             Message-ID: <19981004184811.16048.qmail@plover.com>
+             Subject: PATCH: perldoc -f does not locate -e, -r, -x, etc.
+             
+             defer "deep recursion" warnings until CXt_SUB context is properly
+             set up
+             
+             Mutexen should be initialized only once.
+             
+             perldoc pod update
+             From: Daniel Grisinger 
+             Date: 06 Oct 1998 23:56:51 -0600
+             Message-ID: 
+             Subject: [PATCH _02 and _52] perldoc
+     Branch: maint-5.005/perl
+           ! gv.c op.c pp_hot.c
+	  !> ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs utils/perldoc.PL
+          !> win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2207] By: gbarr                                 on 1998/11/06  01:36:17
+        Log: integrate changes#1912,1948 from mainline
+             change warning about glob process failure
+     Branch: maint-5.005/perl
+           ! pod/perldiag.pod pp_hot.c
+____________________________________________________________________________
+[  2200] By: gbarr                                 on 1998/11/05  04:26:26
+        Log: integrate changes#1840,1855,1860,1882,1884,1891,1900,1907 from mainline
+             pl2bat tweak from Tye McQueen 
+             
+             reset errno after C search (as suggested by Larry)
+             
+             upgrade to CPAN-1.40
+             
+             missing file in last submit (1881)
+             
+             temporarily disable perl malloc for a2p until we clean up
+             conflicting malloc() declarations everywhere
+             
+             Fixed apostrophe problem from Mark Knutsen.
+             
+             use SETERRNO() to reset errno (suggested by Charles Bailey)
+             
+             applied patches, but retained old behavior for win32 (where compilers
+             can't read from stdin at all)
+             From: Graham Barr 
+             Date: Mon, 28 Sep 1998 09:41:49 -0500
+             Message-ID: <19980928094149.B26576@asic.sc.ti.com>
+             Subject: Re: 5.005_51 Errno invokes cpprun incorrectly
+             --
+             Date: Tue, 29 Sep 1998 12:35:43 -0500
+             Message-ID: <19980929123543.Z26576@asic.sc.ti.com>
+             Subject: Re: 5.005_51 Errno invokes cpprun incorrectly
+             
+             and ext/Errno/Errno_pm.PL from change#2050
+     Branch: maint-5.005/perl
+           ! perl.h pp_ctl.c proto.h sv.h
+	  !> ext/Errno/Errno_pm.PL lib/CPAN.pm lib/CPAN/FirstTime.pm
+          !> win32/bin/pl2bat.pl x2p/Makefile.SH
+____________________________________________________________________________
+[  2199] By: gbarr                                 on 1998/11/05  03:35:00
+        Log: integrate changes#1817,1856,1869,1909 from mainline
+             updated usethreads hints for hpux 10.X
+             From: Matthew T Harden 
+             Date: Fri, 28 Aug 1998 14:10:42 GMT
+             Message-Id: <199808281410.AA11058@mthard1.monsanto.com>
+             Subject: Re: OK: perl 5.00502 on PA-RISC1.1-thread 10.20 (UNINSTALLED)
+             
+             update hints for OPENSTEP 4.2 on i386
+             From: Gerben Wierda 
+             Date: Sun, 20 Sep 1998 01:03:18 +0200
+             Message-Id: <9809192303.AA29190@Spike>
+             Subject: Perl 5.005_02 compilation problems
+             
+             use STRICT_ALIGNMENT on IRIX to allow usemymalloc=y again
+             From:    Scott Henry 
+             Date:    13 Aug 1998 09:52:15 PDT
+             Message-Id: 
+             Subject: [PATCH] Irix USE_LONG_LONG/malloc.c incompatibility (was...)
+             
+             update SCO hints for dynamic loading
+             From: Andy Dougherty 
+             Date: Mon, 28 Sep 1998 16:50:38 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.004_04-MAINT_TRIAL_5 and 5.005_xx] Re: Perl on SCO_SV
+             --
+             Date: Tue, 29 Sep 1998 16:48:55 -0400 (EDT)
+             Message-Id: 
+             Subject: Re: [PATCH 5.004_04-MAINT_TRIAL_5 and 5.005_xx] Re: Perl on SCO_SV
+     Branch: maint-5.005/perl
+          !> hints/hpux.sh hints/irix_6.sh hints/next_4.sh hints/sco.sh
+____________________________________________________________________________
+[  2198] By: gbarr                                 on 1998/11/05  03:00:51
+        Log: integrate OS2 changes from mainline, change#1836,1930,1996,2063
+             and os2/os2,c from #2145
+             
+             From: Ilya Zakharevich 
+             Date: Sat, 5 Sep 1998 00:14:51 -0400 (EDT)
+             Message-Id: <199809050414.AAA19801@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] OS/2 spawning typos
+             
+             From: Ilya Zakharevich 
+             Message-Id: <199810050637.CAA07781@monk.mps.ohio-state.edu>
+             Date: Mon, 5 Oct 1998 02:37:43 -0400 (EDT)
+             Subject: [PATCH 5.005_52] Cumulative OS/2-related patch
+             
+             From: Ilya Zakharevich 
+             Date: Tue, 13 Oct 1998 04:46:00 -0400 (EDT)
+             Message-Id: <199810130846.EAA00769@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_52] Memory overrun in os2.c
+             
+             From: Ilya Zakharevich 
+             Date: Sun, 18 Oct 1998 23:20:57 -0400 (EDT)
+             Message-Id: <199810190320.XAA28249@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Improve sbrk() on OS/2               
+             
+             remaining PL_foo stragglers
+     Branch: maint-5.005/perl
+           ! mg.c perl_exp.SH util.c
+          !> hints/os2.sh os2/Changes os2/Makefile.SHs os2/os2.c
+____________________________________________________________________________
+[  2197] By: gbarr                                 on 1998/11/05  02:15:53
+        Log: integrate changes#1826,1862 from mainline
+             
+             From: Jarkko Hietaniemi 
+             Date: Wed, 12 Aug 1998 22:41:37 +0300 (EET DST)
+             Message-Id: <199808121941.WAA06263@alpha.hut.fi>
+             Subject: [PATCH] 5.004_50 or 5.005_02: get rid of interp.sym because not even AIX needs it
+             
+             remove bogus warn()
+     Branch: maint-5.005/perl
+           - interp.sym
+           ! MANIFEST Makefile.SH embed.pl perl_exp.SH
+____________________________________________________________________________
+[  2194] By: gbarr                                 on 1998/11/05  01:26:46
+        Log: integarte malloc.c changes from mainline change#1807,2112,2133
+     Branch: maint-5.005/perl
+          !> malloc.c
+____________________________________________________________________________
+[  2193] By: gbarr                                 on 1998/11/05  01:25:31
+        Log: integrate changes#1763,1778,1801,1804 from mainline
+             
+             From: Stephen McCamant 
+             Date: Sun,  2 Aug 1998 16:33:18 -0500 (CDT)
+             Message-ID: <13764.55116.921952.837027@alias-2.pr.mcs.net>
+             Subject: [PATCH] Eliminate superfluous RV2p[AH]Vs in oops[AH]V()
+             
+             Implicit require during compile reset line numbering
+             
+             silence redefined warning for XS(INIT) {}
+             
+             From: Laszlo Molnar 
+             Date: Sun, 9 Aug 1998 22:38:23 +0200
+             Message-ID: <19980809223823.A215@cdata.tvnet.hu>
+             Subject: [PATCH 5.5002] dos-djgpp update
+     Branch: maint-5.005/perl
+           ! op.c pp_ctl.c
+          !> t/io/fs.t
+____________________________________________________________________________
+[  2176] By: gbarr                                 on 1998/11/02  04:51:48
+        Log: integrate change#2030 from mainline
+             
+             fix handling of mayhaps-extended @_ in goto &sub
+     Branch: maint-5.005/perl
+           ! av.c pp_ctl.c
+          !> t/op/goto.t
+____________________________________________________________________________
+[  2175] By: gbarr                                 on 1998/11/02  04:32:02
+        Log: integrate chnage#1934,1935 from mainline
+             fix USE_THREADS coredump due to uninitialized PL_hv_fetch_ent_mh
+             add test for previous fix
+     Branch: maint-5.005/perl
+           ! util.c
+          !> ext/Thread/create.t
+____________________________________________________________________________
+[  2174] By: gbarr                                 on 1998/11/02  04:22:20
+        Log: integrate change#1863,1881 from mainline
+             
+             provide locked access to string table for USE_THREADS
+             
+             serial access to PL_x[inpr]v_root for USE_THREADS
+     Branch: maint-5.005/perl
+           ! embedvar.h objXSUB.h perl.c proto.h sv.c
+          !> hv.c intrpvar.h thread.h
+____________________________________________________________________________
+[  2173] By: gbarr                                 on 1998/11/02  04:10:46
+        Log: integrate change#1990 from mainline
+             
+             provide option to enable optimization with VC (suggested by Jan
+             Dubois)
+     Branch: maint-5.005/perl
+          !> win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  2172] By: gbarr                                 on 1998/11/02  02:52:29
+        Log: integrate changes#1944,1948,1966 from mainline
+             
+             change#1614 merely disabled earlier fix (doh!); undo it and properly
+             fixup the cop_seq value that must be seen by lexical lookups that
+             emanate within eval''
+             
+             tweak to make fix in change#1944 behave correctly for closures
+             created within eval''
+     Branch: maint-5.005/perl
+           ! op.c pp_ctl.c pp_hot.c scope.c
+          !> cop.h t/op/eval.t
+____________________________________________________________________________
+[  2171] By: gbarr                                 on 1998/11/01  03:59:39
+        Log: integrate changes 1835,2003,2067 and File::Find change in 1938
+             warn on C
+             
+             silence -w noises (suggested by Greg Bacon) Term::Complete
+             
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Wed, 21 Oct 1998 00:55:51 +0200
+             Message-ID: <36380269.55370608@smtp1.ibm.net>
+             Subject: Make _really_ sure Dynaloader.xs code is initialized only once
+     Branch: maint-5.005/perl
+           ! op.c pod/perldiag.pod
+	  !> ext/DynaLoader/DynaLoader_pm.PL lib/File/Find.pm
+          !> lib/Term/Complete.pm
+____________________________________________________________________________
+[  2170] By: gbarr                                 on 1998/11/01  03:48:38
+        Log: integrate change 1992 from mainline
+             
+             applied suggested patch with small doc tweak
+             From: Gisle Aas 
+             Date: 11 Oct 1998 12:53:13 +0200
+             Message-ID: 
+             Subject: Re: [PATCH 5.005_52] Optional syswrite LENGTH argument
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod pp_sys.c
+          !> opcode.h opcode.pl t/op/sysio.t t/op/tiehandle.t
+____________________________________________________________________________
+[  2168] By: gbarr                                 on 1998/11/01  01:58:58
+        Log: From: jan.dubois@ibm.net (Jan Dubois)   
+             Date: Fri, 09 Oct 1998 23:28:31 +0200
+             Message-ID: <36217b7f.3193091@smtp1.ibm.net>
+             Subject: [PATCH 5.005_02] Allow XS access to vtbl_*s when compiled with PERL_OBJECT
+     Branch: maint-5.005/perl
+           ! XSUB.h
+____________________________________________________________________________
+[  2167] By: gbarr                                 on 1998/11/01  01:22:41
+        Log: integrate change#2029 from mainline
+             restore sanity to "constant" references
+     Branch: maint-5.005/perl
+           ! op.c pod/perldiag.pod
+          !> lib/constant.pm t/pragma/constant.t
+____________________________________________________________________________
+[  2166] By: gbarr                                 on 1998/11/01  01:04:24
+        Log: integrate changes#1895,1896,2066,2147,2148 from mainline
+             fix win32_stat() to do the right thing for share names
+             
+             small tweak on last change
+             
+             recognize '%' as a shell metachar for win32
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Tue, 20 Oct 1998 21:57:35 +0200
+             Message-ID: <3636ea31.49170453@smtp1.ibm.net>
+             Subject: [PATCH 5.005_02, Win32]  Re: %ENV% not expanded in backquotes?
+             
+             tweaked version of suggested patch
+             From: Anton Berezin 
+             Date: 29 Oct 1998 14:48:54 +0100
+             Message-ID: <86yapzv5q1.fsf@lion.plab.ku.dk>
+             Subject: [PATCH 5.005_52] One more problem with win32_stat and MSVC
+             
+             From: Anton Berezin 
+             Date: 29 Oct 1998 17:06:25 +0100
+             Message-ID: <86pvbbuzcu.fsf@lion.plab.ku.dk>
+             Subject: [PATCH 5.005_52] win32_opendir() fails on empty drives
+     Branch: maint-5.005/perl
+          !> win32/win32.c
+____________________________________________________________________________
+[  2165] By: gbarr                                 on 1998/11/01  00:10:15
+        Log: integrated changes#1941,1942,1943,1975,2061,2111,2151 from mainline
+             
+             don't longjmp() in pp_goto() (regressive bug from old single-stack
+             implementation)
+             
+             force copy of substrings when matching against temporaries
+             
+             ensure recursive attempts to findlex()icals know enough about where
+             the last eval'' context was encountered
+             
+             propagate typeness of lexicals while cloning them
+             
+             From: Graham Barr 
+             Date: Sat, 17 Oct 1998 22:22:02 -0500
+             Message-ID: <19981017222202.J510@pobox.com>
+             Subject: Re: '*' prototype does not allow bareword with strict
+             
+             smarter C<$SIG{FOO} = BAREWORD;> warning
+             
+             From: Mark-Jason Dominus 
+             Date: Fri, 30 Oct 1998 14:24:23 EST
+             Message-Id: <19981030192423.27276.qmail@plover.com>
+             Subject: PATCH: (5.005_02)  a2p should use `chomp' instead of `chop'
+     Branch: maint-5.005/perl
+           ! op.c pp_ctl.c pp_hot.c t/op/pat.t toke.c
+          !> t/op/eval.t t/op/runlevel.t x2p/walk.c
+____________________________________________________________________________
+[  2158] By: gbarr                                 on 1998/10/31  05:03:02
+        Log: integrate changes#1821 & 1857 from mainline
+             
+             s/runops/CALLRUNOPS/
+             
+             From: Ilya Zakharevich 
+             Date: Tue, 22 Sep 1998 17:30:16 -0400 (EDT)
+             Message-Id: <199809222130.RAA17034@monk.mps.ohio-state.edu>
+             Subject: More verbose Test::Harness [PATCH]
+     Branch: maint-5.005/perl
+          !> cc_runtime.h lib/Test/Harness.pm
+____________________________________________________________________________
+[  2157] By: gbarr                                 on 1998/10/31  02:35:07
+        Log: integrate change#1839 from mainline
+             From: Drago Goricanec 
+             Date: Mon, 7 Sep 1998 17:36:09 +0900
+             Message-Id: <199809070836.RAA14631@raptor.otsd.ts.fujitsu.co.jp>
+             Subject: Thread::cond_wait bug in 5.005.51 causes deadlock
+     Branch: maint-5.005/perl
+           ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[  2156] By: gbarr                                 on 1998/10/31  02:22:11
+        Log: integrate change#1829 from mainline
+             fix problematic typecast in filter_del()
+             From: Mark P Lutz 
+             Date: Mon, 31 Aug 1998 21:13:11 GMT
+             Message-Id: <199808312113.VAA53356@triton.ca.boeing.com>
+             Subject: perl5.005_02 does not build on Cray T90
+     Branch: maint-5.005/perl
+           ! toke.c
+____________________________________________________________________________
+[  2155] By: gbarr                                 on 1998/10/31  01:59:08
+        Log: integrate chnages#1824,2118 from mainline
+             From: Ilya Zakharevich 
+             Date: Sat, 29 Aug 1998 17:38:30 -0400 (EDT)
+             Message-Id: <199808292138.RAA18359@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Protect debugger from nonlocal exits
+             
+             From: Ilya Zakharevich 
+             Date: Wed, 28 Oct 1998 01:23:27 -0500 (EST)
+             Message-Id: <199810280623.BAA06968@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.00552] Minor debugger tweaks
+     Branch: maint-5.005/perl
+          !> lib/perl5db.pl
+____________________________________________________________________________
+[  2154] By: gbarr                                 on 1998/10/31  01:06:35
+        Log: integrate all lib/ExtUtils/... changes from mainline
+     Branch: maint-5.005/perl
+	  !> lib/ExtUtils/MM_OS2.pm lib/ExtUtils/MM_Unix.pm
+	  !> lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MM_Win32.pm
+	  !> lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mkbootstrap.pm
+          !> lib/ExtUtils/Mksymlists.pm lib/ExtUtils/xsubpp
+____________________________________________________________________________
+[  2139] By: gbarr                                 on 1998/10/30  04:17:53
+        Log: apply chnage#2071 from mainline
+             From: Graham Barr 
+             Date: Sat, 17 Oct 1998 20:42:41 -0500
+             Message-ID: <19981017204241.G510@pobox.com>
+             Subject: Re: taint checking for: use lib "$ENV{'EVIL'}"
+     Branch: maint-5.005/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[  2138] By: gbarr                                 on 1998/10/30  04:14:35
+        Log: apply change#2077 from mainline
+             From: Graham Barr 
+             Date: Sat, 24 Oct 1998 21:45:50 -0500
+             Message-ID: <19981024214550.C508@pobox.com>
+             Subject: Re: die with a reference  should use overload "" operator
+     Branch: maint-5.005/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[  2137] By: gbarr                                 on 1998/10/30  04:01:06
+        Log: integrate change#1937 from mainline
+             fix $/ init for USE_THREADS
+     Branch: maint-5.005/perl
+           ! perl.c
+____________________________________________________________________________
+[  2136] By: gbarr                                 on 1998/10/30  03:40:55
+        Log: apply change#2076 from mainline
+             From: Graham Barr 
+             Date: Sat, 24 Oct 1998 12:45:21 -0500
+             Message-ID: <19981024124521.C512@pobox.com>
+             Subject: [PATCH 5.005_02] Re: Auto-incrementing tied scalar causes SEGV
+     Branch: maint-5.005/perl
+           ! sv.c
+____________________________________________________________________________
+[  2135] By: gbarr                                 on 1998/10/30  03:28:29
+        Log: integrate change#1873 from mainline
+             From: Ilya Zakharevich 
+             Date: Tue, 25 Aug 1998 04:29:49 -0400 (EDT)
+             Message-Id: <199808250829.EAA02470@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Extraneous warning for (?()A|B)
+     Branch: maint-5.005/perl
+           ! regcomp.c
+____________________________________________________________________________
+[  2134] By: gbarr                                 on 1998/10/30  03:15:12
+        Log: integrate change#1816 from mainline
+             don't create empty directories in installperl
+             From: Robin Barker 
+             Date: Fri, 21 Aug 1998 11:29:24 +0100 (BST)
+             Message-Id: <199808211029.LAA00551@cyclone.cise.npl.co.uk>
+             Subject: [PATCH 5.005_02] install: empty dirs
+     Branch: maint-5.005/perl
+          !> installperl
+____________________________________________________________________________
+[  2132] By: gbarr                                 on 1998/10/30  01:39:00
+        Log: integrate changes#1815 & 1828 from mainline
+             make behavior of /(a{3})+/ like /(aaa)+/ w.r.t where it matches
+             From: Ilya Zakharevich 
+             Date: Fri, 21 Aug 1998 05:41:02 -0400 (EDT)
+             Message-Id: <199808210941.FAA16467@monk.mps.ohio-state.edu>
+             Subject: Re: your mail
+             
+             From: Ilya Zakharevich 
+             Date: Mon, 31 Aug 1998 14:52:10 -0400 (EDT)
+             Message-Id: <199808311852.OAA24676@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_5*] (?>) broken in RE
+     Branch: maint-5.005/perl
+           ! regexec.c
+          !> t/op/re_tests
+____________________________________________________________________________
+[  2131] By: gbarr                                 on 1998/10/30  01:09:19
+        Log: integrate change#1947 from mainline
+             let docatch() pass the buck when restartop turns out to be null,
+             making exceptions in BEGIN{} propagate as expected
+     Branch: maint-5.005/perl
+           ! pp_ctl.c
+          !> t/op/misc.t
+____________________________________________________________________________
+[  2129] By: gbarr                                 on 1998/10/29  14:53:11
+        Log: integrate change#1810 from mainline
+             fix bogus integerization of pop()'s return value
+             From: Gurusamy Sarathy 
+             Date: Sat, 15 Aug 1998 23:27:54 -0400
+             Message-Id: <199808160327.XAA05186@aatma.engin.umich.edu>
+             Subject: Re: Complex expression does integer arithmetic 
+     Branch: maint-5.005/perl
+          !> opcode.h opcode.pl
+____________________________________________________________________________
+[  2128] By: gbarr                                 on 1998/10/29  14:28:13
+        Log: integrate change#1870 from mainline
+             From:    Dan Sugalski 
+             Date:    Fri, 14 Aug 1998 09:20:16 PDT
+             Message-Id: <3.0.5.32.19980814092016.00b37dc0@ous.edu>
+             Subject: [PATCH 5.005_02] (and _5x I expect) VMS config procedure patch
+     Branch: maint-5.005/perl
+          !> configure.com
+____________________________________________________________________________
+[  2127] By: gbarr                                 on 1998/10/29  13:36:29
+        Log: Integrate change#1789 from mainline
+             delay freeing itervar so C works
+     Branch: maint-5.005/perl
+          !> cop.h t/cmd/for.t
+____________________________________________________________________________
+[  2123] By: gbarr                                 on 1998/10/29  02:43:01
+        Log: Apply change#2075 from mainline
+             fix C etc.
+     Branch: maint-5.005/perl
+           ! toke.c
+____________________________________________________________________________
+[  2122] By: gbarr                                 on 1998/10/29  02:40:31
+        Log: Apply change#2070 from mainline
+             avoid bogus line number in XSUB redefined warnings
+     Branch: maint-5.005/perl
+           ! op.c
+____________________________________________________________________________
+[  2121] By: gbarr                                 on 1998/10/29  02:38:59
+        Log: Apply change#2052 from mainline
+             avoid the circular refcnt logic in magic_mutexfree()
+     Branch: maint-5.005/perl
+           ! mg.c pp.c pp_hot.c
+____________________________________________________________________________
+[  2120] By: gbarr                                 on 1998/10/29  02:36:23
+        Log: Remove "5.005" hard-coded and expose vtbl_* from the perl DLL
+             From: "Douglas Lankshear" 
+             Date: Mon, 28 Sep 1998 08:49:13 -0700
+             Message-ID: <000001bdeaf7$8a189350$a32fa8c0@tau.Active>
+             Subject: PATCH [5.005_02] update
+     Branch: maint-5.005/perl
+	   ! embed.h global.sym objXSUB.h objpp.h perl.h proto.h util.c
+           ! win32/win32.c
+____________________________________________________________________________
+[  2084] By: gbarr                                 on 1998/10/25  19:09:11
+        Log: Integrate change#2069 from mainline
+             From: Martijn Koster 
+             Date: Wed, 21 Oct 1998 13:12:03 +0100
+             Message-ID: <19981021131203.A15661@excitecorp.com>
+             Subject: File::Path::mkpath reports the wrong error
+     Branch: maint-5.005/perl
+          !> lib/File/Path.pm
+____________________________________________________________________________
+[  2083] By: gbarr                                 on 1998/10/25  18:48:39
+        Log: Integrate change#1965 from mainline
+             use better numbers for exitstatus test
+     Branch: maint-5.005/perl
+          !> t/op/die_exit.t
+____________________________________________________________________________
+[  2082] By: gbarr                                 on 1998/10/25  18:22:54
+        Log: Apply change 2054 from mainline
+             disallow 'x' in hex numbers (except leading '0x')
+             From: Gisle Aas 
+             Date: 16 Oct 1998 16:33:12 +0200
+             Message-ID: 
+             Subject: Re: [PATCH 5.005_52] 'x' is not a legal hex digit
+     Branch: maint-5.005/perl
+           ! perlvars.h util.c
+          !> t/op/oct.t
+____________________________________________________________________________
+[  2081] By: gbarr                                 on 1998/10/25  17:58:04
+        Log: Apply change #1998 from mainline
+             skip readonly vars and unref references when doing a reset()
+     Branch: maint-5.005/perl
+           ! sv.c
+____________________________________________________________________________
+[  2080] By: gbarr                                 on 1998/10/25  16:06:35
+        Log: Integrate changes #2072 & #1993 from mainline
+             fix bug in B::CC::pp_sassign()
+             From: "vishal bhatia" 
+             Date: Sun, 11 Oct 1998 18:41:38 PDT
+             Message-ID: <19981012014139.19614.qmail@hotmail.com>
+             Subject: B::CC problems with pp_sassign routine
+             implement C and other fixes (via private mail)
+             From:    "vishal bhatia" 
+             Date:    Wed, 21 Oct 1998 22:59:03 PDT
+             Message-Id: <19981022055904.20083.qmail@hotmail.com>
+             Subject: [PATCH 5.005_52] More fixes for B
+     Branch: maint-5.005/perl
+          !> ext/B/B.pm ext/B/B.xs ext/B/B/C.pm ext/B/B/CC.pm
+____________________________________________________________________________
+[  2079] By: gbarr                                 on 1998/10/25  14:08:00
+        Log: integrate from mainline more FSF address changes
+     Branch: maint-5.005/perl
+          !> Copying ext/B/README lib/Getopt/Long.pm
+____________________________________________________________________________
+[  2053] By: gbarr                                 on 1998/10/25  04:56:47
+        Log: From: Graham Barr 
+             Date: Sat, 17 Oct 1998 23:05:18 -0500
+             Message-ID: <19981017230518.K510@pobox.com>
+             Subject: Re: redo LOOP not restoring $` $' $&
+     Branch: maint-5.005/perl
+           ! cop.h t/cmd/while.t
+____________________________________________________________________________
+[  2048] By: gbarr                                 on 1998/10/24  04:20:10
+        Log: Change Free Software Foundation address in README
+     Branch: maint-5.005/perl
+          !> README
+____________________________________________________________________________
+[  2047] By: gbarr                                 on 1998/10/24  04:02:20
+        Log: Remove #ifdef DEBUGGING around SvTEMP_off
+             From: Gurusamy Sarathy 
+             Date: Mon, 28 Sep 1998 15:23:39 -0400
+             Message-Id: <199809281923.PAA10303@aatma.engin.umich.edu>
+             Subject: Re: [PATCH] Re: 5.005_52: the miniperl coredump: touch magic and you're toast 
+     Branch: maint-5.005/perl
+           ! scope.c
+____________________________________________________________________________
+[  2046] By: gbarr                                 on 1998/10/24  04:00:54
+        Log: use cpp symbols instead of hardwired constants
+             From: Hugo van der Sanden 
+             Date: Mon, 05 Oct 1998 09:23:33 +0100
+             Message-Id: <199810050823.JAA00891@crypt.compulink.co.uk>
+             Subject: [PATCH 5.005_52] By the numbers (resend)
+     Branch: maint-5.005/perl
+           ! op.c
+____________________________________________________________________________
+[  2045] By: gbarr                                 on 1998/10/24  03:50:25
+        Log: squelch undef warnings
+             From: Hugo van der Sanden 
+             Date: Fri, 02 Oct 1998 11:01:14 +0100
+             Message-Id: <199810021001.LAA19214@crypt.compulink.co.uk>
+             Subject: [PATCH] Re: Apparent bug in Math::BigInt 
+     Branch: maint-5.005/perl
+          !> lib/Math/BigInt.pm
+____________________________________________________________________________
+[  2044] By: gbarr                                 on 1998/10/24  03:47:24
+        Log: Add note to INSTALL about ANSI C
+     Branch: maint-5.005/perl
+           ! INSTALL
+____________________________________________________________________________
+[  2043] By: gbarr                                 on 1998/10/24  02:38:12
+        Log: make C AUTOLOAD-aware (autouse now works for modules
+             that are autoloaded)
+             From: Gurusamy Sarathy 
+             Date: Thu, 24 Sep 1998 03:01:01 -0400
+             Message-Id: <199809240701.DAA16223@aatma.engin.umich.edu>
+             Subject: Re: autouse and Getopt::Long don't work together anymore 
+     Branch: maint-5.005/perl
+           ! pp_ctl.c t/op/goto.t
+____________________________________________________________________________
+[  2042] By: gbarr                                 on 1998/10/24  02:16:26
+        Log: From: jarkko.hietaniemi@research.nokia.com (Jarkko Hietaniemi)
+             Date: Wed, 12 Aug 1998 15:42:35 +0300
+             Message-Id: <199808121242.PAA29761@comanche.spices>
+             Subject: [PATCH] 5.004_02 or 5.005_51: fix regexp and tr character ranges in non-ASCII lands
+     Branch: maint-5.005/perl
+           + t/op/tr.t
+	   ! MANIFEST perl.h pod/perllocale.pod pod/perlop.pod
+           ! pod/perlre.pod regcomp.c t/pragma/locale.t toke.c
+____________________________________________________________________________
+[  2021] By: gbarr                                 on 1998/10/20  01:25:23
+        Log: From: Chip Salzenberg 
+             Date: Tue, 6 Oct 1998 13:33:05 -0400
+             Message-ID: <19981006133305.A2348@perlsupport.com>
+             Subject: [PATCH] 5.005_02: Eliminate leak on self-ties
+     Branch: maint-5.005/perl
+	   ! av.c doop.c hv.c mg.c mg.h pp.c pp_hot.c pp_sys.c scope.c
+           ! t/op/tie.t
+____________________________________________________________________________
+[  2015] By: gbarr                                 on 1998/10/17  21:49:56
+        Log: make h2xs generate ANSI prototypes
+     Branch: maint-5.005/perl
+          !> utils/h2xs.PL
+____________________________________________________________________________
+[  2014] By: gbarr                                 on 1998/10/17  20:31:42
+        Log: Fix POSIX::sigprocmask not to check type of $old parameter
+             as it is output only
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  2013] By: gbarr                                 on 1998/10/17  17:51:16
+        Log: From: "Kurt D. Starsinic" 
+             Date: Thu, 20 Aug 1998 20:59:03 -0400
+             Message-ID: <19980820205903.A12908@O2.chapin.edu>
+             Subject: [PATCH] h2ph misquotes #error directives
+             
+             fix h2ph handling of C<#error "foo">
+             From: SAKAI Kiyotaka 
+             Date: Thu, 10 Sep 1998 09:59:33 +0900
+             Message-Id: <19980910095933N.ksakai@netwk.ntt-at.co.jp>
+             Subject: [5.005_02] h2ph problem
+     Branch: maint-5.005/perl
+          !> t/lib/h2ph.pht utils/h2ph.PL
+____________________________________________________________________________
+[  1985] By: gbarr                                 on 1998/10/17  00:41:40
+        Log: s/last/first/ typo in append_list()
+     Branch: maint-5.005/perl
+           ! op.c
+____________________________________________________________________________
+[  1984] By: gbarr                                 on 1998/10/17  00:36:51
+        Log: From: "Green, Paul" 
+             Date: Thu, 10 Sep 1998 00:02:07 -0400
+             Message-ID: <646CD0392810D211B04A00A024BF26FB1022EB@terminator.sw.stratus.com>
+             Subject: RE: [PATCH] 5.005_02 and 5.005_51: Stratus VOS port
+     Branch: maint-5.005/perl
+	   + README.vos vos/Changes vos/build.cm vos/compile_perl.cm
+	   + vos/config.h vos/config_h.SH_orig vos/perl.bind
+           + vos/test_vos_dummies.c vos/vos_dummies.c vos/vosish.h
+           ! MANIFEST perl.c perl.h pod/perlport.pod
+____________________________________________________________________________
+[  1983] By: gbarr                                 on 1998/10/17  00:23:31
+        Log: define PUT_svindex(), PUT_opindex()
+     Branch: maint-5.005/perl
+          !> ext/B/B/Assembler.pm
+____________________________________________________________________________
+[  1982] By: gbarr                                 on 1998/10/17  00:20:57
+        Log: From: Jochen Wiedmann 
+             Date: Thu, 17 Sep 1998 17:16:06 +0200
+             Message-ID: <360127B6.E44564A@ispsoft.de>
+             Subject: [PATCH] ExtUtils::MakeMaker::prompt cannot return 0
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1981] By: gbarr                                 on 1998/10/16  02:58:10
+        Log: better CR-handling on shebang line and in formats (fixed variant of
+             patch suggested by Igor Sysoev )
+     Branch: maint-5.005/perl
+           ! perl.c toke.c
+____________________________________________________________________________
+[  1980] By: gbarr                                 on 1998/10/16  02:21:57
+        Log: From: Roderick Schertler 
+             Date: 11 Sep 1998 16:19:21 -0400
+             Message-ID: 
+             Subject: Re: Open2 and memory leaks
+     Branch: maint-5.005/perl
+          !> lib/IPC/Open3.pm
+____________________________________________________________________________
+[  1979] By: gbarr                                 on 1998/10/16  02:15:54
+        Log: integrate change #1908 from mainline
+     Branch: maint-5.005/perl
+          !> lib/File/Find.pm
+____________________________________________________________________________
+[  1977] By: gbarr                                 on 1998/10/16  01:52:46
+        Log: tests missing from change #1794
+     Branch: maint-5.005/perl
+           ! t/op/re_tests
+____________________________________________________________________________
+[  1794] By: gbarr                                 on 1998/09/20  15:59:20
+        Log: From: Ilya Zakharevich 
+             Date: Tue, 11 Aug 1998 18:43:29 -0400 (EDT)
+             Message-Id: <199808112243.SAA14243@monk.mps.ohio-state.edu>
+             Subject: Re: Segmentation fault for /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
+     Branch: maint-5.005/perl
+           ! regcomp.c t/op/re_tests
+____________________________________________________________________________
+[  1793] By: gbarr                                 on 1998/09/20  15:39:41
+        Log: From: Peter Prymmer 
+             Date: Mon, 10 Aug 98 16:58:22 PDT
+             Message-Id: <9808102358.AA10616@forte.com>
+             Subject: fix for unpack('u') failures on OS/390
+     Branch: maint-5.005/perl
+           ! pp.c
+____________________________________________________________________________
+[  1792] By: gbarr                                 on 1998/09/20  15:11:33
+        Log: From: "M.J.T. Guy" 
+             Date: Sun, 9 Aug 1998 15:51:48 +0100
+             Message-Id: 
+             Subject: Fix typo, change "an array" to "a hash"
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1791] By: gbarr                                 on 1998/09/20  14:49:26
+        Log: From: Gurusamy Sarathy 
+             Date: Wed, 16 Sep 1998 22:13:17 -0400
+             Message-Id: <199809170213.WAA10546@aatma.engin.umich.edu>
+             Subject: fill gaps in sig_* entries in win32/config.?c
+             and resync win32/config.?c with Porting/config.sh to pick up apiversion
+     Branch: maint-5.005/perl
+           ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1790] By: gbarr                                 on 1998/09/20  14:40:56
+        Log: From: Gurusamy Sarathy 
+             Date: Sun, 06 Sep 1998 15:35:11 -0400
+             Message-Id: <199809061935.PAA21531@aatma.engin.umich.edu>
+             Subject: suppress bogus warning on C
+     Branch: maint-5.005/perl
+           ! toke.c
+____________________________________________________________________________
+[  1784] By: nick                                  on 1998/09/12  09:53:36
+        Log: Two tweaks to allow quiet compile qith egcs-1.1
+     Branch: maint-5.005/perl
+           ! win32/win32.h
+____________________________________________________________________________
+[  1783] By: gbarr                                 on 1998/09/07  20:33:11
+        Log: Subject: index() applied BM optimization to wrong argument
+             From: larry@wall.org (Larry Wall)
+             Date:  Thu, 3 Sep 1998 12:49:13 -0700
+             Message-Id: <199809031949.MAA29566@wall.org>, <199809060004.RAA23792@wall.org>
+     Branch: maint-5.005/perl
+           ! op.c util.c
+____________________________________________________________________________
+[  1782] By: gbarr                                 on 1998/09/07  18:54:49
+        Log: From: Gurusamy Sarathy 
+             Date: Fri, 28 Aug 1998 00:33:15 -0400
+             Mssage-Id: <199808280433.AAA06767@aatma.engin.umich.edu>
+             Subject: socket problems on NT 
+     Branch: maint-5.005/perl
+           ! objXSUB.h
+____________________________________________________________________________
+[  1759] By: gsar                                  on 1998/08/08  20:57:47
+        Log: pending submit of 5.005_02
+     Branch: maint-5.005/perl
+           ! Changes
+
+----------------
+Version 5.005_02        Second maintenance release of 5.005
+----------------
+
+____________________________________________________________________________
+[  1758] By: gsar                                  on 1998/08/08  03:45:04
+        Log: set patchlevel.h, other minor tweaks
+     Branch: maint-5.005/perl
+           ! Changes patchlevel.h pod/perlhist.pod pod/perlport.pod
+____________________________________________________________________________
+[  1757] By: gsar                                  on 1998/08/08  03:33:33
+        Log: prevent lexical leaks from Benchmark into target code (inspired by
+             an attempt by John Allen)
+     Branch: maint-5.005/perl
+           ! lib/Benchmark.pm
+____________________________________________________________________________
+[  1755] By: gsar                                  on 1998/08/07  23:58:33
+        Log: temporary opcode.pl workaround for ebcdic (suggested by
+             David J. Fiander  and M.J.T. Guy)
+     Branch: maint-5.005/perl
+           ! opcode.pl
+____________________________________________________________________________
+[  1754] By: gsar                                  on 1998/08/07  22:21:10
+        Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             Date: Fri, 7 Aug 1998 09:56:01 +0100 (BST)
+             Message-Id: <9808070856.AA28065@claudius.bfsec.bt.co.uk>
+             Subject: [PATCH 5.005_50 & 5.005_02] Fix for command line use of source filters
+     Branch: maint-5.005/perl
+           ! perl.c
+____________________________________________________________________________
+[  1753] By: gsar                                  on 1998/08/07  22:19:42
+        Log: perlport.pod notes from Jarkko Hietaniemi; utime() note for Win32
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  1752] By: gsar                                  on 1998/08/07  22:08:29
+        Log: perlport.pod v1.33 from Chris Nandor 
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  1751] By: gsar                                  on 1998/08/07  22:01:04
+        Log: From: Ilya Zakharevich 
+             Date: Thu, 6 Aug 1998 19:44:16 -0400 (EDT)
+             Message-Id: <199808062344.TAA09505@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Minor cleanup of RE tests and docs
+     Branch: maint-5.005/perl
+           ! pod/perlre.pod t/op/regexp.t
+____________________________________________________________________________
+[  1750] By: gsar                                  on 1998/08/07  21:51:52
+        Log: allow more compatible interpretation of spaces File::DosGlob::glob()
+             patterns
+     Branch: maint-5.005/perl
+           ! lib/File/DosGlob.pm
+____________________________________________________________________________
+[  1749] By: gsar                                  on 1998/08/07  21:36:04
+        Log: don't use © in Test.pm (suggested by M.J.T. Guy)
+     Branch: maint-5.005/perl
+           ! lib/Test.pm
+____________________________________________________________________________
+[  1748] By: gsar                                  on 1998/08/07  21:31:46
+        Log: From: Dominic Dunlop 
+             Date: Thu, 6 Aug 1998 12:38:07 +0000
+             Message-Id: 
+             Subject: [Patch perl5.005_02-TRIAL2] Update hints, Configure for MachTen 4.1.1
+     Branch: maint-5.005/perl
+           ! Configure hints/machten.sh
+____________________________________________________________________________
+[  1746] By: gsar                                  on 1998/08/05  22:55:59
+        Log: MM_Win32.pm and Liblist.pm tweaks
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
+____________________________________________________________________________
+[  1745] By: gsar                                  on 1998/08/05  21:57:00
+        Log: pod/perlfaq* update from Tom Christiansen 
+     Branch: maint-5.005/perl
+	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
+           ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq8.pod
+____________________________________________________________________________
+[  1744] By: gsar                                  on 1998/08/05  21:53:30
+        Log: From: Chris Nandor 
+             Date: Wed, 5 Aug 1998 15:38:48 -0400
+             Message-Id: 
+             Subject: [PATCH] perlport 1.32
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  1743] By: gsar                                  on 1998/08/05  21:52:05
+        Log: README.os2 update
+             From: Ilya Zakharevich 
+             Date: Wed, 5 Aug 1998 05:44:46 -0400 (EDT)
+             Message-Id: <199808050944.FAA09053@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Additional OS/2 tweaks: docs, tests
+     Branch: maint-5.005/perl
+           ! README.os2 t/lib/posix.t t/op/exec.t
+____________________________________________________________________________
+[  1742] By: gsar                                  on 1998/08/05  21:50:07
+        Log: additional INSTALL notes from Jarkko Hietaniemi 
+             on semget failure in t/lib/ipc_sysv.t
+     Branch: maint-5.005/perl
+           ! INSTALL
+____________________________________________________________________________
+[  1741] By: gsar                                  on 1998/08/05  21:46:13
+        Log: correct URL for perlcrt.dll
+     Branch: maint-5.005/perl
+           ! Changes win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1740] By: gsar                                  on 1998/08/05  10:05:46
+        Log: update Changes, patchlevel, tweak Liblist.pm
+     Branch: maint-5.005/perl
+           ! Changes lib/ExtUtils/Liblist.pm patchlevel.h
+____________________________________________________________________________
+[  1739] By: gsar                                  on 1998/08/05  09:10:45
+        Log: newer cperl-mode.el
+             From: Ilya Zakharevich 
+             Date: Wed, 5 Aug 1998 03:50:16 -0400 (EDT)
+             Message-Id: <199808050750.DAA07240@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] CPerl update
+     Branch: maint-5.005/perl
+           ! emacs/cperl-mode.el
+____________________________________________________________________________
+[  1738] By: gsar                                  on 1998/08/05  09:08:33
+        Log: support :nosearch in ExtUtils::Liblist for win32, and make -lfoo
+             processing (somewhat) compiler-specific
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
+____________________________________________________________________________
+[  1737] By: gsar                                  on 1998/08/05  03:20:03
+        Log: add index entries for -X
+             From:    Ilya Zakharevich 
+             Date:    Sun, 02 Aug 1998 16:33:18 EDT
+             Message-Id: <199808022033.QAA18778@monk.mps.ohio-state.edu>
+             Subject: [PATCH] A missing docu patch
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1736] By: gsar                                  on 1998/08/05  03:09:58
+        Log: make Test::Harness optionally check for stray files when running tests
+             From: Ilya Zakharevich 
+             Date: Sun, 2 Aug 1998 18:12:48 -0400 (EDT)
+             Message-Id: <199808022212.SAA20126@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] File leaked from test suite
+     Branch: maint-5.005/perl
+           ! lib/Test/Harness.pm
+____________________________________________________________________________
+[  1735] By: gsar                                  on 1998/08/05  02:29:46
+        Log: back out change#1703 that break bincompat with PERL_OBJECT and
+             MULTIPLICITY
+     Branch: maint-5.005/perl
+           ! ext/re/re.pm regcomp.c regexec.c thrdvar.h
+____________________________________________________________________________
+[  1734] By: gsar                                  on 1998/08/05  02:23:47
+        Log: fixes to enable ISC to build IPC/SysV
+             From: Jarkko Hietaniemi 
+             Date: 05 Aug 1998 00:59:13 +0300
+             Message-ID: 
+             Subject: [PATCH] 5.005_02-TRIAL1: (Re: Bug in pp_rename and ISC hint)
+     Branch: maint-5.005/perl
+           ! ext/IPC/SysV/SysV.xs hints/isc.sh hints/isc_2.sh
+____________________________________________________________________________
+[  1733] By: gsar                                  on 1998/08/05  01:20:29
+        Log: let some 'tr' be '$tr' for occult reasons
+             From: Jeff Okamoto 
+             Date: Mon, 3 Aug 1998 11:04:30 -0700 (PDT)
+             Message-Id: <199808031804.LAA25595@xfiles.intercon.hp.com>
+             Subject: PATCH: Configure uses tr, not $tr
+     Branch: maint-5.005/perl
+           ! Configure
+____________________________________________________________________________
+[  1732] By: gsar                                  on 1998/08/05  01:16:40
+        Log: perlre.pod tweak suggested by Mike Wescott 
+     Branch: maint-5.005/perl
+           ! pod/perlre.pod
+____________________________________________________________________________
+[  1731] By: gsar                                  on 1998/08/05  01:10:41
+        Log: explain caveat about use of numeric constants in podoc for sysopen()
+             From: "David J. Fiander" 
+             Date: Tue, 4 Aug 1998 13:09:58 -0400
+             Message-Id: <199808041709.NAA01750@mks.com>
+             Subject: Re: [PATCH] 5.005_01: OE MVS 
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1730] By: gsar                                  on 1998/08/05  00:46:53
+        Log: end pod processing when source file is closed (prevents it carrying
+             over into require()d files)
+     Branch: maint-5.005/perl
+           ! t/comp/require.t toke.c
+____________________________________________________________________________
+[  1729] By: gsar                                  on 1998/08/04  23:03:23
+        Log: correct prototype for des_fcrypt(), explain how to add it in more
+             detail, and supply a patch for libdes-3.06
+     Branch: maint-5.005/perl
+           + win32/des_fcrypt.patch
+	   ! MANIFEST README.win32 win32/Makefile win32/makefile.mk
+           ! win32/win32.c
+____________________________________________________________________________
+[  1728] By: gsar                                  on 1998/08/04  21:50:40
+        Log: tweak to avoid ambiguity warnings
+     Branch: maint-5.005/perl
+           ! pp.c
+____________________________________________________________________________
+[  1727] By: gsar                                  on 1998/08/04  20:31:04
+        Log: remove useless 'rcsid' (extension of a suggestion by
+             Stephen McCamant)
+     Branch: maint-5.005/perl
+	   ! embed.h ext/SDBM_File/sdbm/pair.c ext/SDBM_File/sdbm/sdbm.c
+           ! global.sym gv.c perl.c vms/gen_shrfls.pl
+____________________________________________________________________________
+[  1726] By: gsar                                  on 1998/08/04  19:52:43
+        Log: correct Pod::Html's notion of email addresses
+             From: abigail@fnx.com
+             Date: Mon, 3 Aug 1998 20:22:49 -0400 (EDT)
+             Message-ID: <19980804002249.2011.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.005_01] lib/Pod/Html.pm
+     Branch: maint-5.005/perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  1725] By: gsar                                  on 1998/08/04  19:50:06
+        Log: perlport.pod additions from Peter Prymmer 
+             Date: Mon, 3 Aug 98 15:31:35 PDT
+             Message-Id: <9808032231.AA22324@forte.com>
+             --
+             Date: Tue, 4 Aug 98 12:44:20 PDT
+             Message-Id: <9808041944.AA04815@forte.com>
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  1724] By: gsar                                  on 1998/08/04  18:08:07
+        Log: From: Chris Nandor 
+             Date: Mon, 3 Aug 1998 13:35:25 -0400
+             Message-Id: 
+             Subject: [PATCH] perlport 1.30
+     Branch: maint-5.005/perl
+           ! pod/perlport.pod
+____________________________________________________________________________
+[  1723] By: gsar                                  on 1998/08/04  18:06:13
+        Log: update postscript generator
+             From: Tom Christiansen 
+             Date: Mon, 3 Aug 1998 05:29:25 -0600
+             Message-Id: <199808031129.FAA24985@chthon.perl.com>
+             Subject: PATCH: pod/roffitall (5.005_02)
+     Branch: maint-5.005/perl
+           ! pod/roffitall
+____________________________________________________________________________
+[  1722] By: gsar                                  on 1998/08/03  17:01:12
+        Log: applied suggested patch, slightly tweaked
+             From: Jarkko Hietaniemi 
+             Date: Mon, 3 Aug 1998 11:52:30 +0300 (EET DST)
+             Message-Id: <199808030852.LAA14153@alpha.hut.fi>
+             Subject: [PATCH] perl5.005_02-TRIAL1: pod/perlhist.pod
+     Branch: maint-5.005/perl
+           ! pod/perlhist.pod
+____________________________________________________________________________
+[  1721] By: gsar                                  on 1998/08/03  16:30:20
+        Log: fix segfault when threadsv is used as foreach itervar
+             From:    Stephen McCamant 
+             Date:    Sun, 02 Aug 1998 21:44:34 CDT
+             Message-Id: <13765.8641.997452.14516@alias-2.pr.mcs.net>
+             Subject: [PATCH] threadsv index in enteriter targ in op_free()
+     Branch: maint-5.005/perl
+           ! op.c
+____________________________________________________________________________
+[  1720] By: gsar                                  on 1998/08/02  23:33:42
+        Log: close() open files before unlink()
+             From: Ilya Zakharevich 
+             Date: Sun, 2 Aug 1998 18:14:22 -0400 (EDT)
+             Message-Id: <199808022214.SAA20135@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] File leaked from test suite - tests
+     Branch: maint-5.005/perl
+           ! t/base/rs.t t/op/defins.t
+____________________________________________________________________________
+[  1719] By: gsar                                  on 1998/08/02  23:31:51
+        Log: more pack() tests
+             From: Jarkko Hietaniemi 
+             Date: Mon, 3 Aug 1998 00:59:41 +0300 (EET DST)
+             Message-Id: <199808022159.AAA17160@alpha.hut.fi>
+             Subject: Re: uudecode 'u' problem 
+     Branch: maint-5.005/perl
+           ! t/op/pack.t
+____________________________________________________________________________
+[  1718] By: gsar                                  on 1998/08/02  23:26:51
+        Log: t/TEST aesthetic tweak suggested by Jarkko
+     Branch: maint-5.005/perl
+           ! t/TEST
+____________________________________________________________________________
+[  1717] By: gsar                                  on 1998/08/02  23:23:43
+        Log: add Digital Unix 3.x notes to README.threads (as suggested by
+             Phoenix )
+     Branch: maint-5.005/perl
+           ! README.threads
+____________________________________________________________________________
+[  1716] By: gsar                                  on 1998/08/02  23:15:00
+        Log: allow *FOO{BAR}[0] etc. (without intervening arrow)
+             From: Stephen McCamant 
+             Date: Sun,  2 Aug 1998 16:16:50 -0500 (CDT)
+             Message-ID: <13764.54929.60137.104838@alias-2.pr.mcs.net>
+             Subject: [PATCH] Re: Minor nit in glob notation
+     Branch: maint-5.005/perl
+           ! Changes op.c
+____________________________________________________________________________
+[  1715] By: gsar                                  on 1998/08/02  22:49:53
+        Log: fix unpack('u',...) problem with spaces in input
+     Branch: maint-5.005/perl
+           ! pp.c t/op/pack.t
+____________________________________________________________________________
+[  1714] By: gsar                                  on 1998/08/02  21:27:19
+        Log: update location of perlcrt.dll for win32 builds
+     Branch: maint-5.005/perl
+           ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1713] By: gsar                                  on 1998/08/02  09:28:32
+        Log: From: Ilya Zakharevich 
+             Date: Sun, 2 Aug 1998 04:35:11 -0400 (EDT)
+             Message-Id: <199808020835.EAA09367@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Better debugging output from malloc.c
+     Branch: maint-5.005/perl
+           ! malloc.c
+____________________________________________________________________________
+[  1712] By: gsar                                  on 1998/08/02  09:16:55
+        Log: fix longstanding bug in pack('u',...) (reads garbage beyond the end
+             of the input string)
+     Branch: maint-5.005/perl
+           ! pp.c
+____________________________________________________________________________
+[  1711] By: gsar                                  on 1998/08/02  08:14:25
+        Log: update Changes, tweak Porting/makerel
+     Branch: maint-5.005/perl
+           ! Changes Porting/makerel
+____________________________________________________________________________
+[  1710] By: gsar                                  on 1998/08/02  07:31:37
+        Log: remove CRs from djgpp/configure.bat (Porting/makerel adds them)
+     Branch: maint-5.005/perl
+           ! djgpp/configure.bat
+____________________________________________________________________________
+[  1709] By: gsar                                  on 1998/08/02  07:27:34
+        Log: Porting/makerel tweaks
+     Branch: maint-5.005/perl
+           ! Porting/makerel
+____________________________________________________________________________
+[  1708] By: gsar                                  on 1998/08/02  07:09:35
+        Log: fixes for pod noises
+     Branch: maint-5.005/perl
+	   ! ext/B/B/Bytecode.pm ext/Thread/Thread/Specific.pm
+           ! pod/perlembed.pod pod/perlfaq.pod
+____________________________________________________________________________
+[  1707] By: gsar                                  on 1998/08/02  06:59:47
+        Log: malloc.c tweaks
+             From:    Ilya Zakharevich 
+             Date:    Sat, 01 Aug 1998 18:46:32 EDT
+             Message-Id: <199808012246.SAA00699@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.005_*] Better malloc.c
+     Branch: maint-5.005/perl
+           ! malloc.c
+____________________________________________________________________________
+[  1706] By: gsar                                  on 1998/08/02  06:56:37
+        Log: fix quoting of keys with embedded nulls 
+             From:    Slaven Rezic 
+             Date:    Sat, 01 Aug 1998 13:38:03 +0200
+             Message-Id: <199808011138.NAA05189@mail.cs.tu-berlin.de>
+             Subject: Data::Dumper 2.09, patch
+     Branch: maint-5.005/perl
+           ! ext/Data/Dumper/Dumper.xs
+____________________________________________________________________________
+[  1705] By: gsar                                  on 1998/08/02  06:50:07
+        Log: From:    pvhp@forte.com (Peter Prymmer)
+             Date:    Fri, 31 Jul 1998 14:50:41 PDT
+             Message-Id: <9807312150.AA08867@forte.com>
+             Subject: Re: \Q doesn't work in interpolated regular expressions
+     Branch: maint-5.005/perl
+           ! pod/perlre.pod
+____________________________________________________________________________
+[  1704] By: gsar                                  on 1998/08/02  06:37:06
+        Log: add test for magic autovivification
+             From: "M.J.T. Guy" 
+             Date: Thu, 30 Jul 1998 12:18:15 +0100
+             Message-Id: 
+             Subject: Re: Perl5.005_01 failing to autovivify subroutine args
+     Branch: maint-5.005/perl
+           ! pod/perldiag.pod t/cmd/subval.t
+____________________________________________________________________________
+[  1703] By: gsar                                  on 1998/08/02  06:26:57
+        Log: From: Ilya Zakharevich 
+             Date: Tue, 21 Jul 1998 23:58:53 -0400 (EDT)
+             Message-Id: <199807220358.XAA19811@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_76] better RE colors
+     Branch: maint-5.005/perl
+           ! ext/re/re.pm regcomp.c regexec.c thrdvar.h
+____________________________________________________________________________
+[  1702] By: gsar                                  on 1998/08/02  06:22:15
+        Log: mark link type of exported functions for OS/2
+             From: Ilya Zakharevich 
+             Date: Sun, 26 Jul 1998 21:03:03 -0400 (EDT)
+             Message-Id: <199807270103.VAA04977@monk.mps.ohio-state.edu>
+             Subject: Re: Compiler linkage's types [PATCH 5.005]
+     Branch: maint-5.005/perl
+           ! os2/os2ish.h proto.h
+____________________________________________________________________________
+[  1701] By: gsar                                  on 1998/08/02  06:16:03
+        Log: tweaked version of suggested patch
+             From: Ilya Zakharevich 
+             Date: Mon, 20 Jul 1998 21:40:00 -0400 (EDT)
+             Message-Id: <199807210140.VAA17186@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_75] Enable -DS
+     Branch: maint-5.005/perl
+	   ! README.threads ext/Thread/Thread.xs ext/Thread/typemap mg.c
+	   ! op.c perl.c perl.h pod/perlrun.pod pp.c pp_hot.c scope.c
+           ! thread.h util.c win32/win32thread.c
+____________________________________________________________________________
+[  1700] By: gsar                                  on 1998/08/02  05:54:00
+        Log: up patchlevel to 5.005_02
+     Branch: maint-5.005/perl
+	   ! Changes patchlevel.h win32/Makefile win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1699] By: gsar                                  on 1998/08/02  05:50:01
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199807180809.EAA09379@monk.mps.ohio-state.edu>
+             Date: Sat, 18 Jul 1998 04:09:26 -0400 (EDT)
+             Subject: [PATCH 5.004_72] Make tests succeed on OS/2
+     Branch: maint-5.005/perl
+           ! t/io/fs.t t/lib/io_pipe.t t/lib/io_sock.t t/op/stat.t
+____________________________________________________________________________
+[  1698] By: gsar                                  on 1998/08/02  05:41:41
+        Log: use I32_MAX as the limit when U16_MAX > I32_MAX (for CRAY)
+     Branch: maint-5.005/perl
+           ! regcomp.c
+____________________________________________________________________________
+[  1697] By: gsar                                  on 1998/08/02  05:20:12
+        Log: support OE/MVS
+             From: Jarkko Hietaniemi 
+             Message-Id: <199808010903.MAA09371@alpha.hut.fi>
+             Date: Sat, 1 Aug 1998 12:03:02 +0300 (EET DST)
+             Subject: [PATCH] 5.005_01: OE MVS
+     Branch: maint-5.005/perl
+           + README.os390 ebcdic.c
+	   ! Configure MANIFEST doio.c ext/Errno/Errno_pm.PL gv.c handy.h
+	   ! hints/os390.sh lib/bigint.pl mg.c patchlevel.h perl.c perl.h
+	   ! perly.c perly.h perly.y perly_c.diff pod/perldelta.pod
+	   ! pod/perlport.pod pp.c pp_ctl.c pp_hot.c pp_sys.c sv.c
+	   ! t/base/term.t t/comp/package.t t/comp/require.t
+	   ! t/lib/bigintpm.t t/lib/cgi-html.t t/lib/filehand.t t/lib/ph.t
+	   ! t/op/auto.t t/op/bop.t t/op/each.t t/op/magic.t t/op/misc.t
+	   ! t/op/ord.t t/op/pack.t t/op/quotemeta.t t/op/re_tests
+	   ! t/op/regexp.t t/op/sort.t t/op/sprintf.t t/op/subst.t
+	   ! t/op/taint.t t/op/universal.t t/pragma/constant.t
+	   ! t/pragma/overload.t t/pragma/subs.t toke.c x2p/a2p.h
+           ! x2p/a2py.c
+____________________________________________________________________________
+[  1696] By: gsar                                  on 1998/08/02  05:03:09
+        Log: VMS patches
+             From: pvhp@forte.com (Peter Prymmer)
+             Message-Id: <9807290017.AA01833@forte.com>
+             Date: Tue, 28 Jul 98 17:17:33 PDT
+             Subject: Re: Not OK: perl 5.00501 on VMS_AXP-thread I7.2
+             --
+             From: Dan Sugalski 
+             Message-Id: <3.0.5.32.19980729125623.00b562b0@ous.edu>
+             Date: Wed, 29 Jul 1998 12:56:23 -0700
+             Subject: [PATCH 5.005_01]Typo in CONFIGURE.COM (vms)
+             --
+             From: Dan Sugalski 
+             Date: Thu, 30 Jul 1998 09:02:24 -0700
+             Message-Id: <3.0.5.32.19980730090224.00b70eb0@ous.edu>
+             Subject: [PATCH 5.005_01]VMS config SOCKETSHR typo patch and fcntl check
+     Branch: maint-5.005/perl
+           ! configure.com vms/subconfigure.com
+____________________________________________________________________________
+[  1695] By: gsar                                  on 1998/08/02  04:49:32
+        Log: rename duplicate warning in regexec.c
+     Branch: maint-5.005/perl
+           ! regexec.c
+____________________________________________________________________________
+[  1694] By: gsar                                  on 1998/08/02  04:44:20
+        Log: beware egcs' ld on Solaris
+             From: Tom Spindler 
+             Message-ID: <19980801212158.A2934@home.merit.edu>
+             Date: Sat, 1 Aug 1998 21:21:58 -0400
+             Subject: Re: [PATCH perl5.005_01] hints/solaris_2.sh, egcs, and ld
+     Branch: maint-5.005/perl
+           ! hints/solaris_2.sh
+____________________________________________________________________________
+[  1693] By: gsar                                  on 1998/08/02  04:41:43
+        Log: de-utf-ized variation of Ilya's patch
+             From: Jan-Pieter Cornet 
+             Date: 31 Jul 1998 12:44:57 +0200
+             Message-ID: <6ps779$hmj$1@xs1.xs4all.nl>
+             Subject: Re: s/\s*$//g in majordomo causes segfault under 5.005_01
+     Branch: maint-5.005/perl
+           ! regexec.c
+____________________________________________________________________________
+[  1692] By: gsar                                  on 1998/08/02  04:39:14
+        Log: better validation of SysV IPC availability
+             From: Jarkko Hietaniemi 
+             Date: Fri, 31 Jul 1998 13:13:57 +0300 (EEST)
+             Message-Id: <199807311013.NAA28887@koah.research.nokia.com>
+             Subject: Re: lib/ipc_sysv.t fails under FreeBSD 2.2.1 
+     Branch: maint-5.005/perl
+	   ! Configure INSTALL ext/IPC/SysV/SysV.xs pod/perldiag.pod
+           ! t/lib/ipc_sysv.t
+____________________________________________________________________________
+[  1691] By: gsar                                  on 1998/08/02  04:32:30
+        Log: fix bug in display of watched expressions
+             From: Ilya Zakharevich 
+             Date: Thu, 30 Jul 1998 20:02:04 -0400 (EDT)
+             Message-Id: <199807310002.UAA21681@monk.mps.ohio-state.edu>
+             Subject: Re: Bug? in perl5db.pl [PATCH]
+     Branch: maint-5.005/perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[  1690] By: gsar                                  on 1998/08/02  04:29:08
+        Log: applied all but one hunk
+             From: Horst von Brand 
+             Date: Thu, 30 Jul 1998 17:19:42 -0400
+             Message-Id: <199807302119.RAA06852@sleipnir.valparaiso.cl>
+             Subject: Some typos in perldelta.pod
+     Branch: maint-5.005/perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  1689] By: gsar                                  on 1998/08/02  04:27:02
+        Log: From: Andy Dougherty 
+             Date: Thu, 30 Jul 1998 10:22:36 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.005_05] Remove redundant dTHR
+     Branch: maint-5.005/perl
+           ! mg.c sv.c
+____________________________________________________________________________
+[  1688] By: gsar                                  on 1998/08/02  04:25:49
+        Log: From: Tom Hughes 
+             Date: 30 Jul 1998 09:47:31 +0100
+             Message-ID: 
+             Subject: Class::Struct has an incomplete tied array package
+     Branch: maint-5.005/perl
+           ! lib/Class/Struct.pm
+____________________________________________________________________________
+[  1687] By: gsar                                  on 1998/08/02  04:21:48
+        Log: ensure implicit close on local(*FH) doesn't affect $! and thence $?
+     Branch: maint-5.005/perl
+           ! sv.c t/op/die_exit.t
+____________________________________________________________________________
+[  1686] By: gsar                                  on 1998/08/02  03:57:28
+        Log: From: Jarkko Hietaniemi 
+             Date: Thu, 30 Jul 1998 00:39:30 +0300 (EET DST)
+             Message-Id: <199807292139.AAA01795@alpha.hut.fi>
+             Subject: Re: [PATCH] 5.004_05-MAINT_TRIAL_5: three locale fixes
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.xs pod/perllocale.pod
+____________________________________________________________________________
+[  1685] By: gsar                                  on 1998/08/02  03:54:15
+        Log: PERL_OBJECT bincompat fixes from Douglas Lankshear 
+             Date: Wed, 29 Jul 1998 10:45:31 -0700
+             Message-ID: <000101bdbb18$ae767550$a32fa8c0@tau.Active>
+             Subject: [PATCH 5.005_01] Fixes binary compatibility for PERL_OBJECT
+             --
+             Date: Sat, 1 Aug 1998 09:33:19 -0700
+             Message-ID: <000701bdbd6a$17ada180$a32fa8c0@tau.Active>
+             Subject: [PATCH 5.005_01]
+     Branch: maint-5.005/perl
+           ! perl.h proto.h
+____________________________________________________________________________
+[  1684] By: gsar                                  on 1998/08/02  03:49:33
+        Log: hand-apply whitespace-mutiliated patch
+             From: Nicholas Clark 
+             Date: Tue, 28 Jul 1998 16:40:42 +0100 (BST)
+             Message-Id: <199807281540.QAA04640@flirble.org>
+             Subject: [PATCH] POSIX::ELOOP
+     Branch: maint-5.005/perl
+           ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  1683] By: gsar                                  on 1998/08/02  03:45:26
+        Log: document return values of do() better
+             From: "M.J.T. Guy" 
+             Date: Tue, 28 Jul 1998 12:44:36 +0100
+             Message-Id: 
+             Subject: [PATCH] Re: Obscurity of lexicals with do ""
+     Branch: maint-5.005/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1682] By: gsar                                  on 1998/08/02  03:42:26
+        Log: avoid reusing foreach itervar if magic got tacked onto it
+             From: Stephen McCamant 
+             Date: Tue, 28 Jul 1998 22:18:25 -0500 (CDT)
+             Message-ID: <13758.36756.215424.719750@alias-2.pr.mcs.net>
+             Subject: [PATCH] Re: pos() resetting changed with 5.005?
+     Branch: maint-5.005/perl
+           ! pp_hot.c
+____________________________________________________________________________
+[  1681] By: gsar                                  on 1998/08/02  03:39:27
+        Log: From: Nick Ing-Simmons 
+             Date: Wed, 29 Jul 1998 13:28:14 +0100
+             Message-Id: <199807291228.NAA20055@tiuk.ti.com>
+             Subject: [Patch] Math::Complex - Ambiguous call resolved as CORE::foo()
+     Branch: maint-5.005/perl
+           + Porting/fixCORE
+           ! MANIFEST lib/Math/Complex.pm
+____________________________________________________________________________
+[  1680] By: gsar                                  on 1998/08/02  03:33:07
+        Log: From: h.sanden@elsevier.nl (Hugo van der Sanden)
+             Date: Mon, 27 Jul 1998 13:34:45 +0200
+             Message-Id: <199807271134.NAA24475@dorlas.elsevier.nl>
+             Subject: perlcall.pod
+     Branch: maint-5.005/perl
+           ! pod/perlcall.pod
+____________________________________________________________________________
+[  1679] By: gsar                                  on 1998/08/02  03:29:41
+        Log: MM_Win32::maybe_command() case-insesitivity tweak
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MM_Win32.pm
+____________________________________________________________________________
+[  1678] By: gsar                                  on 1998/08/02  03:24:29
+        Log: fix MM_Win32::maybe_command()
+     Branch: maint-5.005/perl
+           ! lib/ExtUtils/MM_Win32.pm
+____________________________________________________________________________
+[  1677] By: gsar                                  on 1998/08/01  19:52:19
+        Log: fixes for overloading bugs and docs, tweaked some
+             From: Ilya Zakharevich 
+             Date: Sat, 25 Jul 1998 21:28:16 -0400 (EDT)
+             Message-Id: <199807260128.VAA10543@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_76] better overloading
+     Branch: maint-5.005/perl
+	   ! Changes gv.c lib/dumpvar.pl lib/overload.pm lib/perl5db.pl
+           ! t/pragma/overload.t
+____________________________________________________________________________
+[  1676] By: gsar                                  on 1998/08/01  19:37:13
+        Log: stray s/foo/PL_foo/
+             From: win@in.rhein-main.de (Winfried Koenig)
+             Date: Mon, 27 Jul 98 21:13 MET
+             Message-Id: 
+             Subject: Bug in pp_rename and ISC hint
+     Branch: maint-5.005/perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1675] By: gsar                                  on 1998/08/01  19:22:13
+        Log: newer Porting/patchls from maint-5.004
+     Branch: maint-5.005/perl
+           ! Porting/patchls
+____________________________________________________________________________
+[  1674] By: gsar                                  on 1998/08/01  17:50:44
+        Log: fix buggy detection of failed glob()
+     Branch: maint-5.005/perl
+           ! pp_hot.c
+____________________________________________________________________________
+[  1673] By: gsar                                  on 1998/07/29  18:14:32
+        Log: fix typo in change#1489 that prevented magic-autovivification
+     Branch: maint-5.005/perl
+           ! mg.c
+
+----------------
+Version 5.005_01        First maintenance release of 5.005
+----------------
+
+____________________________________________________________________________
+[  1669] By: gsar                                  on 1998/07/26  23:19:02
+        Log: update Changes; add sv_*_mg() entries in win32/GenCAPI.pl
+     Branch: maint-5.005/perl
+           ! Changes proto.h win32/GenCAPI.pl
+____________________________________________________________________________
+[  1668] By: gsar                                  on 1998/07/26  21:12:11
+        Log: s/TMP_CRLF_PATCH/PERL_STRICT_CR/ with sense reversed, so they
+             can disable it from config.sh if they want; up patchlevel to 5_01;
+             little tweaks to pods
+     Branch: maint-5.005/perl
+	   ! README.win32 patchlevel.h pod/perldelta.pod toke.c
+	   ! win32/Makefile win32/config_H.bc win32/config_H.gc
+           ! win32/config_H.vc win32/makefile.mk win32/win32.c
+____________________________________________________________________________
+[  1662] By: gsar                                  on 1998/07/26  05:01:52
+        Log: add missing sv_*_mg() prototypes in proto.h, update perlhist.pod
+     Branch: maint-5.005/perl
+           ! pod/perlhist.pod proto.h
+____________________________________________________________________________
+[  1658] By: gsar                                  on 1998/07/26  02:23:46
+        Log: VMS patches from Dan Sugalski 
+             Date: Fri, 24 Jul 1998 11:38:25 -0700
+             Message-Id: <3.0.5.32.19980724113825.00a067b0@ous.edu>
+             Subject: [PATCH 5.005] version number problem with VMS (Corrected)
+             --
+             Date: Fri, 24 Jul 1998 12:30:36 -0700
+             Message-Id: <3.0.5.32.19980724123036.009f0390@ous.edu>
+             Subject: [PATCH 5.005]Tweaks to README.vms
+             --
+             Date: Sat, 25 Jul 1998 17:56:55 -0700 (PDT)
+             Message-ID: 
+             Subject: [PATCH 5.005] Final build cleanup patch
+     Branch: maint-5.005/perl
+           ! README.vms vms/descrip_mms.template vms/subconfigure.com
+____________________________________________________________________________
+[  1657] By: gsar                                  on 1998/07/26  02:19:50
+        Log: another platform where pp_sselect() needs a whole fd_set buffer
+             From: Lupe Christoph 
+             Date: Sat, 25 Jul 1998 19:49:33 +0200 (MET DST)
+             Message-Id: <199807251749.TAA22347@alanya.m.isar.de>
+             Subject: Patch for Not OK: perl 5.005 on i86pc-solaris-thread 2.6
+     Branch: maint-5.005/perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1656] By: gsar                                  on 1998/07/26  02:12:46
+        Log: fix problem building modules on dos-djgpp
+             From: Laszlo Molnar 
+             Date: Sat, 25 Jul 1998 00:53:39 +0200
+             Message-ID: <19980725005339.C222@cdata.tvnet.hu>
+             Subject: [PATCH 5.005] dos-djgpp and modules problem
+     Branch: maint-5.005/perl
+           ! djgpp/fixpmain
+____________________________________________________________________________
+[  1655] By: gsar                                  on 1998/07/26  02:11:09
+        Log: From: Tom Spindler 
+             Date: Wed, 22 Jul 1998 16:11:07 -0400
+             Message-ID: <19980722161107.A16813@home.merit.edu>
+             Subject: [PATCH 5.005] BeOS tweak
+     Branch: maint-5.005/perl
+           ! hints/beos.sh
+____________________________________________________________________________
+[  1654] By: gsar                                  on 1998/07/26  02:09:29
+        Log: various pod tweaks
+     Branch: maint-5.005/perl
+	   ! Changes pod/perldelta.pod pod/perlmodinstall.pod
+           ! pod/perltoc.pod
+____________________________________________________________________________
+[  1653] By: gsar                                  on 1998/07/26  02:05:46
+        Log: fix emacs/ptags for PL_* changes
+             From: Ilya Zakharevich 
+             Date: Fri, 24 Jul 1998 03:12:35 -0400 (EDT)
+             Message-Id: <199807240712.DAA04204@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_76] Yet better ptags
+     Branch: maint-5.005/perl
+           ! emacs/ptags
+____________________________________________________________________________
+[  1652] By: gsar                                  on 1998/07/26  02:03:01
+        Log: fix behavior of <=> on bigints
+             From: "M.J.T. Guy" 
+             Message-Id: 
+             Date: Fri, 24 Jul 1998 18:29:53 +0100
+             Subject: [PATCH] Re: Math::BigInt <=> op is not correct.
+     Branch: maint-5.005/perl
+           ! lib/Math/BigInt.pm t/lib/bigintpm.t
+____________________________________________________________________________
+[  1649] By: gsar                                  on 1998/07/24  03:56:56
+        Log: create maint-5.005 branch
+     Branch: maint-5.005/perl
+          +> (branch 1079 files)
+____________________________________________________________________________
+[  1648] By: gsar                                  on 1998/07/24  03:36:35
+        Log: un-checked-in 5.005 Changes  (this is 5.005 *exactly*)
+     Branch: perl
+           ! Changes
+
+-------------
+Version 5.005           Production release
+-------------
+
+____________________________________________________________________________
+[  1647] By: gsar                                  on 1998/07/22  21:11:29
+        Log: sneak in hints/irix_6.sh update
+     Branch: perl
+           ! Changes hints/irix_6.sh
+____________________________________________________________________________
+[  1646] By: gsar                                  on 1998/07/22  21:00:44
+        Log: Update perldelta and Changes; refresh perltoc; newer perlembed.pod
+             from Jon Orwant ; update guts documentation
+             to reflect PL_* changes; is this *it* for 5.005?
+     Branch: perl
+	   ! Changes README.win32 patchlevel.h pod/perlcall.pod
+	   ! pod/perldelta.pod pod/perlembed.pod pod/perlguts.pod
+           ! pod/perltoc.pod pod/perlxs.pod
+____________________________________________________________________________
+[  1645] By: gsar                                  on 1998/07/22  19:37:41
+        Log: don't use qualify() in class methods
+             From:    Albert Dvornik 
+             Date:    22 Jul 1998 15:14:46 EDT
+             Message-Id: 
+             Subject: [PATCH 5.005-MAYBE] Bug in IO::Handle->input_record_separator
+     Branch: perl
+           ! ext/IO/lib/IO/Handle.pm
+____________________________________________________________________________
+[  1644] By: gsar                                  on 1998/07/22  18:13:31
+        Log: newer perlembed.pod
+     Branch: perl
+           ! pod/perlembed.pod
+____________________________________________________________________________
+[  1643] By: gsar                                  on 1998/07/22  18:03:42
+        Log: From:    Andy Dougherty 
+             Date:    Wed, 22 Jul 1998 13:42:20 EDT
+             Message-Id: 
+             Subject: Re: 5.005 - a sneak preview
+     Branch: perl
+           ! Porting/pumpkin.pod
+____________________________________________________________________________
+[  1642] By: gsar                                  on 1998/07/22  17:58:42
+        Log: add perlmodinstall, regen perltoc
+     Branch: perl
+           + pod/perlmodinstall.pod
+	   ! MANIFEST pod/Makefile pod/buildtoc pod/perl.pod
+           ! pod/perltoc.pod win32/pod.mak
+____________________________________________________________________________
+[  1641] By: gsar                                  on 1998/07/22  17:11:55
+        Log: support optional crypt() with PERL_OBJECT
+             From:    "Douglas Lankshear" 
+             Date:    Wed, 22 Jul 1998 08:21:10 PDT
+             Message-Id: <000701bdb584$5b57c070$a32fa8c0@tau.Active>
+             Subject: [PATCH 5.005 maybe] for crypt with PERL_OBJECT
+     Branch: perl
+	   ! iperlsys.h pp.c win32/Makefile win32/makefile.mk
+           ! win32/perlhost.h win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[  1640] By: gsar                                  on 1998/07/22  17:09:11
+        Log: win32 tweaks
+             Date:    Wed, 22 Jul 1998 07:09:09 PDT
+             Message-Id: <000001bdb57a$4bc9dd00$a32fa8c0@tau.Active>
+             From:    "Douglas Lankshear" 
+     Branch: perl
+           ! win32/Makefile win32/makefile.mk win32/win32.h
+____________________________________________________________________________
+[  1639] By: gsar                                  on 1998/07/22  17:00:30
+        Log: From:    d-lewart@uiuc.edu (Daniel S. Lewart)
+             Date:    Wed, 22 Jul 1998 06:20:08 CDT
+             Message-Id: <199807221120.GAA07962@staff2.cso.uiuc.edu>
+             Subject: [PATCH] lib/Sys/Syslog.pm doc
+     Branch: perl
+           ! Changes lib/Sys/Syslog.pm
+____________________________________________________________________________
+[  1638] By: gsar                                  on 1998/07/22  09:12:26
+        Log: up patchlevel etc (only doc patching from now on, testing in progress)
+     Branch: perl
+	   ! Changes patchlevel.h win32/Makefile win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1637] By: gsar                                  on 1998/07/22  08:27:09
+        Log: VMS patches from Dan Sugalski 
+             Date:    Tue, 21 Jul 1998 16:04:40 PDT
+             Message-Id: <3.0.5.32.19980721160440.00a916f0@ous.edu>
+             Subject: [PATCH 5.004_76]Document Vax C's death for VMS
+             --
+             Date:    Tue, 21 Jul 1998 16:08:57 PDT
+             Message-Id: <3.0.5.32.19980721160857.00a6d250@ous.edu>
+             Subject: [PATCH 5.004_76]fix clean/realclean targets of VMS' makefile
+             --
+             Date:    Tue, 21 Jul 1998 16:05:56 PDT
+             Message-Id: <3.0.5.32.19980721160556.00a1a100@ous.edu>
+             Subject: [PATCH 5.004_76]Note the record-read capabilities of $/ in perldelta.pod
+     Branch: perl
+           ! README.vms pod/perldelta.pod vms/descrip_mms.template
+____________________________________________________________________________
+[  1636] By: gsar                                  on 1998/07/22  08:04:37
+        Log: fix quoting in t/io/inplace.t
+     Branch: perl
+           ! t/io/inplace.t
+____________________________________________________________________________
+[  1635] By: gsar                                  on 1998/07/22  07:59:30
+        Log: From:    Dan Sugalski 
+             Date:    Tue, 21 Jul 1998 13:06:44 PDT
+             Message-Id: <3.0.5.32.19980721130644.00ac5100@ous.edu>
+             Subject: [PATCH 5.004_76]t/io/inplace.t enabled for VMS
+     Branch: perl
+           ! t/io/inplace.t vms/test.com
+____________________________________________________________________________
+[  1634] By: gsar                                  on 1998/07/22  07:55:35
+        Log: From:    Dan Sugalski 
+             Date:    Tue, 21 Jul 1998 12:42:20 PDT
+             Message-Id: <3.0.5.32.19980721124220.00a82a20@ous.edu>
+             Subject: [PATCH 5.004_76]Fix inplace editing for VMS
+     Branch: perl
+           ! doio.c
+____________________________________________________________________________
+[  1633] By: gsar                                  on 1998/07/22  07:53:53
+        Log: fix AIX hints for PL_* changes
+             From:    Jarkko Hietaniemi 
+             Date:    Tue, 21 Jul 1998 22:53:54 +0300
+             Message-Id: <199807211953.WAA55724@vipunen.hut.fi>
+             Subject: Re: _76 fails to link B extension on AIX 414
+     Branch: perl
+           ! perl_exp.SH
+____________________________________________________________________________
+[  1632] By: gsar                                  on 1998/07/22  07:51:56
+        Log: From:    Anton Berezin 
+             Date:    Tue, 21 Jul 1998 21:46:45 +0200
+             Message-Id: <199807211946.VAA01301@lion.plab.ku.dk>
+             Subject: [PATCH _76] t/op/eval.t test for eval & scoping of lexicals
+     Branch: perl
+           ! t/op/eval.t
+____________________________________________________________________________
+[  1631] By: gsar                                  on 1998/07/22  07:48:20
+        Log: applied patch, with tweak suggested by Michael Parker
+             From:    Andy Dougherty 
+             Date:    Tue, 21 Jul 1998 14:30:05 EDT
+             Message-Id: 
+             Subject: Re: Not OK: _76 on IP22-irix6.2 fails tests
+     Branch: perl
+           ! hints/irix_6.sh
+____________________________________________________________________________
+[  1630] By: gsar                                  on 1998/07/22  07:40:25
+        Log: better diagnostic on errno.t failure
+             From:    Graham Barr 
+             Date:    Tue, 21 Jul 1998 13:07:29 CDT
+             Message-Id: <19980721130729.K4337@asic.sc.ti.com>
+     Branch: perl
+           ! t/lib/errno.t
+____________________________________________________________________________
+[  1629] By: gsar                                  on 1998/07/22  07:36:38
+        Log: win32 tweaks: disable XSLOCKS in perl.c, correct typo, search
+             the registry for anything that begins with "PERL", not "PERL5"
+             From:    "Douglas Lankshear" 
+             Date:    Tue, 21 Jul 1998 11:08:00 PDT
+             Message-Id: <000601bdb4d2$7ee74720$a32fa8c0@tau.Active>
+     Branch: perl
+           ! perl.c win32/perlhost.h win32/win32.c
+____________________________________________________________________________
+[  1628] By: gsar                                  on 1998/07/22  07:28:35
+        Log: suppress redefined warnings on C
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[  1627] By: gsar                                  on 1998/07/22  07:15:19
+        Log: remove spurious $VERSION line that confuses CPAN
+             From:    Johan Vromans 
+             Date:    Tue, 21 Jul 1998 20:01:36 +0200
+             Message-Id: <13748.55168.397720.564438@phoenix.squirrel.nl>
+             Subject: Re: 5.004_76 missing version numbers
+     Branch: perl
+           ! lib/Getopt/Long.pm
+____________________________________________________________________________
+[  1626] By: gsar                                  on 1998/07/22  06:57:56
+        Log: From:    Andy Dougherty 
+             Date:    Tue, 21 Jul 1998 10:20:13 EDT
+             Message-Id: 
+             Subject: [PATCH] Porting/config* updates for 5.005
+     Branch: perl
+           ! Changes Porting/config.sh Porting/config_H
+____________________________________________________________________________
+[  1625] By: gsar                                  on 1998/07/22  06:46:38
+        Log: add a few more globals with old names #defined
+     Branch: perl
+           ! embed.pl embedvar.h
+____________________________________________________________________________
+[  1624] By: gsar                                  on 1998/07/22  06:39:22
+        Log: allow extensions to be specified as paths 
+             From:    Paul Johnson 
+             Date:    Tue, 21 Jul 1998 12:04:27 BST
+             Message-Id: <19980721120427.F903@west-tip.transeda.com>
+             Subject: [PATCH] 5.004_75 Embed and static extensions
+     Branch: perl
+           ! lib/ExtUtils/Embed.pm
+____________________________________________________________________________
+[  1623] By: gsar                                  on 1998/07/22  06:12:50
+        Log: make $ prototype to accept THREADSVs
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[  1622] By: gsar                                  on 1998/07/22  06:04:25
+        Log: fix Liblist.pm to find entries that are plain pathnames on win32
+     Branch: perl
+           ! lib/ExtUtils/Liblist.pm
+____________________________________________________________________________
+[  1621] By: gsar                                  on 1998/07/22  05:10:53
+        Log: perlfaq update from From Tom Christiansen and Nathan Torkington
+             (removes all mention of training courses from perlfaq*.pod)
+     Branch: perl
+	   ! pod/perlfaq.pod pod/perlfaq2.pod pod/perlfaq3.pod
+	   ! pod/perlfaq4.pod pod/perlfaq6.pod pod/perlfaq7.pod
+           ! pod/perlfaq8.pod pod/perlfaq9.pod
+____________________________________________________________________________
+[  1620] By: gsar                                  on 1998/07/22  02:51:13
+        Log: applied patch, modulo parts already added to perldelta
+             From:    Stephen McCamant 
+             Date:    Tue, 21 Jul 1998 17:06:23 CDT
+             Message-Id: <13749.3106.995764.413053@alias-2.pr.mcs.net>
+             Subject: [PATCH] Re: Beta2 is available
+     Branch: perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  1619] By: gsar                                  on 1998/07/22  02:45:55
+        Log: applied patch, add new message to perldeta
+             From:    Stephen McCamant 
+             Date:    Tue, 21 Jul 1998 16:12:25 CDT
+             Message-Id: <13749.910.83378.949909@alias-2.pr.mcs.net>
+             Subject: [PATCH] Band-aid patch for local($avhv->{a})
+     Branch: perl
+           ! pod/perldelta.pod pod/perldiag.pod pp.c pp_hot.c
+____________________________________________________________________________
+[  1618] By: gsar                                  on 1998/07/22  02:08:00
+        Log: fix up B modules for PL_* changes
+     Branch: perl
+           ! ext/B/B/C.pm ext/B/B/CC.pm ext/B/B/Stackobj.pm
+____________________________________________________________________________
+[  1617] By: gsar                                  on 1998/07/22  01:42:14
+        Log: From:    Malcolm Beattie 
+             Date:    Tue, 21 Jul 1998 18:13:16 BST
+             Message-Id: <199807211713.SAA20735@sable.ox.ac.uk>
+             Subject: Compiler docs for 5.005
+     Branch: perl
+	   ! ext/B/B.pm ext/B/B/Bytecode.pm ext/B/B/C.pm ext/B/B/CC.pm
+           ! ext/B/O.pm
+____________________________________________________________________________
+[  1616] By: gsar                                  on 1998/07/22  01:29:09
+        Log: s/PL_sv/PL_bytecode_sv/ etc., so we have unique, case-insensitive
+             names
+     Branch: perl
+	   ! bytecode.h bytecode.pl byterun.c embedvar.h interp.sym
+           ! intrpvar.h
+____________________________________________________________________________
+[  1615] By: nick                                  on 1998/07/21  22:26:34
+        Log: Mingw32 PERL_OBJECT tweaks
+     Branch: perl
+           ! ext/Fcntl/Fcntl.xs ext/IO/IO.xs ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  1614] By: gsar                                  on 1998/07/21  19:43:32
+        Log: fix off-by-one in change#623 that broke lexical lookups in eval''
+     Branch: perl
+           ! pp_ctl.c
+
+----------------
+Version 5.004_76        5.005 Public Beta, Issue 2
+----------------
+
+____________________________________________________________________________
+[  1613] By: gsar                                  on 1998/07/21  10:26:01
+        Log: final tweaks before beta2
+     Branch: perl
+           + Porting/findvars
+          +> Porting/fixvars
+           - fixvars
+	   ! Changes MANIFEST intrpvar.h iperlsys.h
+           ! lib/ExtUtils/MM_Win32.pm win32/perlhost.h
+____________________________________________________________________________
+[  1612] By: gsar                                  on 1998/07/21  07:15:54
+        Log: fixes to enable PERL_OBJECT build with mingw32/egcs-1.0.2
+     Branch: perl
+	   ! ext/Opcode/Opcode.xs proto.h win32/makedef.pl
+	   ! win32/makefile.mk win32/perlhost.h win32/win32.c win32/win32.h
+           ! win32/win32sck.c
+____________________________________________________________________________
+[  1611] By: gsar                                  on 1998/07/21  07:12:00
+        Log: fix bytecode.pl with moved var names
+     Branch: perl
+           ! bytecode.pl byterun.c byterun.h ext/B/B/Asmdata.pm
+____________________________________________________________________________
+[  1610] By: gsar                                  on 1998/07/21  05:51:10
+        Log: tweak toke.c
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[  1609] By: gsar                                  on 1998/07/21  05:46:59
+        Log: change case of PERL_OBJECT filenames, consistent with the rest
+     Branch: perl
+           + XSlock.h objXSUB.h
+           - ObjXSub.h XSLock.h
+	   ! MANIFEST XSUB.h lib/ExtUtils/MM_Win32.pm perl.h
+           ! win32/GenCAPI.pl win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1608] By: gsar                                  on 1998/07/21  05:31:13
+        Log: part 2 of PERL_OBJECT fixes (globals in bytecode.h moved to intrpvar.h)
+     Branch: perl
+           ! bytecode.h byterun.c embedvar.h interp.sym intrpvar.h
+____________________________________________________________________________
+[  1607] By: gsar                                  on 1998/07/21  05:29:10
+        Log: part 1 of PERL_OBJECT fixes for new var names
+     Branch: perl
+	   ! ObjXSub.h bytecode.h globals.c iperlsys.h perl.h pp_ctl.c
+           ! run.c win32/GenCAPI.pl
+____________________________________________________________________________
+[  1606] By: gsar                                  on 1998/07/21  05:17:26
+        Log: From:    Stephen McCamant 
+             Date:    Mon, 20 Jul 1998 23:53:32 CDT
+             Message-Id: <13748.6947.311341.657005@alias-2.pr.mcs.net>
+             Subject: [PATCH] redundant RV2GVs in ck_fun()
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[  1605] By: gsar                                  on 1998/07/21  05:13:28
+        Log: From:    Stephen McCamant 
+             Date:    Mon, 20 Jul 1998 23:32:42 CDT
+             Message-Id: <13748.6392.921893.643238@alias-2.pr.mcs.net>
+             Subject: B::Deparse 0.56 (first testsuite fixes; big)
+     Branch: perl
+           ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[  1604] By: gsar                                  on 1998/07/21  05:07:29
+        Log: applied a slightly tweaked version of suggested patch
+             From: Colin Kuskie 
+             Date: Mon, 20 Jul 1998 15:58:31 -0700 (PDT)
+             Message-ID: 
+             Subject: [PATCH _75] More documentation for -i prefix
+     Branch: perl
+           ! pod/perlrun.pod
+____________________________________________________________________________
+[  1603] By: gsar                                  on 1998/07/21  04:59:19
+        Log: disable malloced_size() feedback with -DLEAKTEST
+             From: Ilya Zakharevich 
+             Date: Mon, 20 Jul 1998 21:20:21 -0400 (EDT)
+             Message-Id: <199807210120.VAA15031@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_75] -DLEAKTEST broken
+     Branch: perl
+           ! av.c sv.c
+____________________________________________________________________________
+[  1602] By: gsar                                  on 1998/07/21  04:57:43
+        Log: fix hints/hpux.sh for cpp recognition
+             From: Andy Dougherty 
+             Date: Mon, 20 Jul 1998 12:46:33 -0400 (EDT)
+             Message-Id: 
+             Subject: RE: Configure misses preprocessor on HP-UX
+     Branch: perl
+           ! hints/hpux.sh
+____________________________________________________________________________
+[  1601] By: gsar                                  on 1998/07/21  04:55:51
+        Log: From: Ilya Zakharevich 
+             Date: Sun, 19 Jul 1998 18:16:38 -0400 (EDT)
+             Message-Id: <199807192216.SAA10482@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Compile (?{}) into a correct package
+     Branch: perl
+           ! pp_ctl.c t/op/pat.t
+____________________________________________________________________________
+[  1600] By: gsar                                  on 1998/07/21  04:48:32
+        Log: allocate a whole fd_set for pp_sselect() on more platforms
+             From: Jarkko Hietaniemi 
+             Date: 20 Jul 1998 00:14:18 +0300
+             Message-ID: 
+             Subject: Re: Not OK: perl 5.00475 +DEVEL_BETA_ISSUE_1 on OPENSTEP-Mach 4_1 (UNINSTALLED)
+     Branch: perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1599] By: gsar                                  on 1998/07/21  04:44:04
+        Log: add tests to check if context propagation works
+             From: Francois Desarmenien 
+             Date: Sun, 19 Jul 1998 12:28:33 +0200
+             Message-ID: <35B1CA51.A606AD27@club-internet.fr>
+             Subject: Re: m//g strange behaviour in 5.004
+     Branch: perl
+           + t/op/context.t
+           ! MANIFEST
+____________________________________________________________________________
+[  1598] By: gsar                                  on 1998/07/21  04:37:49
+        Log: applied RE doc patches, with tweaks to the prose
+             From: Ilya Zakharevich 
+             Date: Sat, 18 Jul 1998 23:11:13 -0400 (EDT)
+             Message-Id: <199807190311.XAA25080@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Document irregular zero-length matches
+             --
+             Date: Sun, 19 Jul 1998 00:38:44 -0400 (EDT)
+             Message-Id: <199807190438.AAA26226@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Another irregularity of expressions documented
+     Branch: perl
+           ! pod/perlre.pod
+____________________________________________________________________________
+[  1597] By: gsar                                  on 1998/07/21  04:16:51
+        Log: pod tweak suggested by Ilya
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1596] By: gsar                                  on 1998/07/21  04:12:39
+        Log: enable color output with -Mre=debugcolor with -DDEBUGGING
+             From: Ilya Zakharevich 
+             Date: Sat, 18 Jul 1998 17:34:00 -0400 (EDT)
+             Message-Id: <199807182134.RAA20644@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Better -Mre=colordb
+     Branch: perl
+           ! ext/re/re.xs
+____________________________________________________________________________
+[  1595] By: gsar                                  on 1998/07/21  04:07:44
+        Log: From: "John L. Allen" 
+             Date: Thu, 16 Jul 1998 11:43:54 -0400 (EDT)
+             Message-ID: 
+             Subject: [PATCH _75 & _05] perlbug does not report usage on invalid flags
+     Branch: perl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  1594] By: gsar                                  on 1998/07/21  04:06:06
+        Log: don't use SelectSaver on IO::Handle->input_*() methods
+             From: Robin Barker 
+             Date: Thu, 16 Jul 1998 15:00:39 +0100 (BST)
+             Message-Id: <199807161400.PAA25532@tempest.cise.npl.co.uk>
+             Subject: Re: Bug in IO::Handle->input_record_separator
+     Branch: perl
+           ! ext/IO/lib/IO/Handle.pm
+____________________________________________________________________________
+[  1593] By: gsar                                  on 1998/07/21  04:03:46
+        Log: applied a tweaked version of suggested patch
+             From: Ilya Zakharevich 
+             Date: Wed, 15 Jul 1998 17:02:48 -0400 (EDT)
+             Message-Id: <199807152102.RAA19952@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Enable/document colors in re.pm
+     Branch: perl
+           ! ext/re/re.pm
+____________________________________________________________________________
+[  1592] By: gsar                                  on 1998/07/21  03:49:55
+        Log: remove compat3.sym and rename perld4.pod
+     Branch: perl
+          +> pod/perl5004delta.pod
+           - compat3.sym pod/perld4.pod
+           ! MANIFEST
+____________________________________________________________________________
+[  1591] By: gsar                                  on 1998/07/21  03:38:16
+        Log: update patchlevel, Changes
+     Branch: perl
+	   ! Changes patchlevel.h win32/Makefile win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1590] By: gsar                                  on 1998/07/21  03:06:04
+        Log: documentation tweaks from Abigail 
+             Date: Fri, 17 Jul 1998 20:52:36 -0400 (EDT)
+             Message-ID: <19980718005236.5154.qmail@betelgeuse.wayne.fnx.com>
+             Subject: Re: [PATCH 5.00475] pod/perlsyn.pod
+             --
+             Date: Thu, 16 Jul 1998 17:00:49 -0400 (EDT)
+             Message-ID: <19980716210049.16156.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.00475] pod/perlguts.pod
+             --
+             Date: Thu, 16 Jul 1998 16:52:05 -0400 (EDT)
+             Message-ID: <19980716205205.15949.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.00475] Tweaking pod/perlfunc.pod
+             --
+             Date: Fri, 17 Jul 1998 22:58:05 -0400 (EDT)
+             Message-ID: <19980718025805.7135.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH, 5.00475], pod/perlsub.pod
+             --
+             Date: Sat, 18 Jul 1998 04:02:00 -0400 (EDT)
+             Message-ID: <19980718080200.9927.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.00475] pod/perlfunc.pod
+     Branch: perl
+	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlsub.pod
+           ! pod/perlsyn.pod
+____________________________________________________________________________
+[  1589] By: gsar                                  on 1998/07/21  02:44:25
+        Log: VMS patches from Dan Sugalski 
+             Date: Wed, 15 Jul 1998 09:38:12 -0700
+             Message-Id: <3.0.5.32.19980715093812.00a42a50@ous.edu>
+             Subject: [PATCH 5.005-beta1]Quick VMS config update
+             --
+             Date: Wed, 15 Jul 1998 12:53:52 -0700
+             Message-Id: <3.0.5.32.19980715125352.00a25cb0@ous.edu>
+             Subject: Re: $ebcdic has broken VMS in _75 (Now with doc patch!)
+             --
+             Date: Thu, 16 Jul 1998 11:15:44 -0700
+             Message-Id: <3.0.5.32.19980716111544.00b78770@ous.edu>
+             Subject: [PATCH 5.004_75]Another VMS tweak for the Vax C compiler
+             --
+             Date: Thu, 16 Jul 1998 11:21:55 -0700
+             Message-Id: <3.0.5.32.19980716112155.00a66c50@ous.edu>
+             Subject: [PATCH 5.004_75]Get archname correct for thread build on VMS
+             --
+             Date: Thu, 16 Jul 1998 11:25:04 -0700
+             Message-Id: <3.0.5.32.19980716112504.00ae0d50@ous.edu>
+             Subject: [PATCH 5.004_75]Thread build tweaks for VMS 6.2 and older
+             --
+             Date: Fri, 17 Jul 1998 15:29:13 -0700
+             Message-Id: <3.0.5.32.19980717152913.00a469b0@ous.edu>
+             Subject: [PATCH 5.004_75]Missed a header file in VMS build procedure
+             --
+             Date: Mon, 20 Jul 1998 10:20:49 -0700
+             Message-Id: <3.0.5.32.19980720102049.00a05100@ous.edu>
+             Subject: [PATCH 5.004_75]Tweaks to Thread.XS for OLD_PTHREADS_API build
+             --
+             Date: Mon, 20 Jul 1998 10:13:03 -0700
+             Message-Id: <3.0.5.32.19980720101303.00a17100@ous.edu>
+             Subject: [PATCH 5.004_75]Explicitly specify extensions during VMS config process
+             --
+             From: Brad Hughes 
+             Date: Mon, 20 Jul 1998 15:51:22 -0700
+             Message-Id: <3.0.5.32.19980720155122.00a41950@ous.edu>
+             Subject: patch for readme.vms
+     Branch: perl
+	   ! README.vms ext/Thread/Thread.xs vms/descrip_mms.template
+           ! vms/gen_shrfls.pl vms/subconfigure.com
+____________________________________________________________________________
+[  1588] By: gsar                                  on 1998/07/21  01:26:20
+        Log: change#1481 didn't go through at all, redo it
+     Branch: perl
+           ! t/base/rs.t
+____________________________________________________________________________
+[  1587] By: gsar                                  on 1998/07/21  01:21:41
+        Log: workaround C<"foo" "bar"> catenation-intolerant compilers
+     Branch: perl
+           ! regexec.c toke.c
+____________________________________________________________________________
+[  1586] By: gsar                                  on 1998/07/21  01:05:49
+        Log: do not override PERL_DESTRUCT_LEVEL if use has it set
+     Branch: perl
+           ! t/TEST
+____________________________________________________________________________
+[  1585] By: gsar                                  on 1998/07/21  00:39:17
+        Log: fix small memory leak when mess_sv happens to be touched by magic
+     Branch: perl
+           ! perl.c t/lib/thread.t t/op/local.t t/op/pat.t t/op/regexp.t
+____________________________________________________________________________
+[  1584] By: gsar                                  on 1998/07/21  00:37:32
+        Log: fix memory leak in C
+     Branch: perl
+           ! scope.c
+____________________________________________________________________________
+[  1583] By: TimBunce                              on 1998/07/20  22:14:11
+        Log: Update Changes and patchlevel.h for release. At last.
+     Branch: maint-5.004/perl
+           ! Changes patchlevel.h
+____________________________________________________________________________
+[  1582] By: gsar                                  on 1998/07/20  21:28:43
+        Log: add rsfp_filters and perldb to pollutants list
+     Branch: perl
+           ! embed.pl
+____________________________________________________________________________
+[  1581] By: nick                                  on 1998/07/20  19:22:37
+        Log: Integrate mainline pre-beta2 - just in case 
+     Branch: ansiperl
+          !> (integrate 66 files)
+____________________________________________________________________________
+[  1580] By: TimBunce                              on 1998/07/20  17:16:38
+        Log: Assorted patches:
+             
+             Title:  "Clean up hash array allocation"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807201052.GAA13336@aatma.engin.umich.edu>
+             Files:  hv.c
+             
+             Title:  "Further fixes for cppstdin on HP-UX 11"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  hints/hpux.sh
+     Branch: maint-5.004/perl
+           ! hints/hpux.sh hv.c
+____________________________________________________________________________
+[  1579] By: TimBunce                              on 1998/07/20  09:46:14
+        Log: Assorted patches:
+             
+             Title:  "Fix C<$1 .. $2> coredump under debugger"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807200042.UAA23288@aatma.engin.umich.edu>
+             Files:  pp_ctl.c
+             
+             Title:  "Fix lvalue leaks stemming from failure to free LvTARG(sv)"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807191829.OAA12433@aatma.engin.umich.edu>
+             Files:  embed.h perl.h proto.h global.sym mg.c sv.c t/op/substr.t t/op/vec.t
+             
+             Title:  "fix major bug (from 5.003_96); void contexts were using the context
+             of the enclosing sub!"
+             From:  Francois Desarmenien , Gurusamy Sarathy
+             
+             Msg-ID:  <199807180927.FAA08032@aatma.engin.umich.edu>,
+             <35B1CA51.A606AD27@club-internet.fr>
+             Files:  op.h
+             
+             Title:  "Update lib/Getopt/Long.pm (from perl5.005 beta 1)"
+             From:  Johan Vromans 
+             Msg-ID:  <13745.47704.943964.34613@phoenix.squirrel.nl>
+             Files:  lib/Getopt/Long.pm
+             
+             Title:  "Add Porting/p4d2p utility for converting perforce diffs"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807200002.UAA21398@aatma.engin.umich.edu>
+             Files:  MANIFEST Porting/p4d2p
+     Branch: maint-5.004/perl
+           + Porting/p4d2p
+	   ! MANIFEST embed.h global.sym lib/Getopt/Long.pm mg.c op.h
+           ! perl.h pp_ctl.c proto.h sv.c t/op/substr.t t/op/vec.t
+____________________________________________________________________________
+[  1578] By: gsar                                  on 1998/07/20  09:38:39
+        Log: complete s/foo/PL_foo/ changes (all escaped cases identified with
+             brute force search script).  Result builds and passes all tests on
+             Solaris.  win32 and PERL_OBJECT are still untested.
+     Branch: perl
+	   ! XSLock.h XSUB.h bytecode.h bytecode.pl byterun.c cc_runtime.h
+	   ! djgpp/djgpp.c embed.pl ext/B/B.xs ext/B/B/Asmdata.pm
+	   ! ext/B/byteperl.c ext/DB_File/DB_File.xs ext/DB_File/typemap
+	   ! ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_next.xs
+	   ! ext/DynaLoader/dl_vms.xs ext/GDBM_File/typemap ext/IO/IO.xs
+	   ! ext/IPC/SysV/SysV.xs ext/NDBM_File/typemap
+	   ! ext/ODBM_File/ODBM_File.xs ext/ODBM_File/typemap
+	   ! ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs ext/SDBM_File/typemap
+	   ! ext/Thread/Thread.xs ext/attrs/attrs.xs fakethr.h gv.c hv.c
+	   ! lib/ExtUtils/typemap malloc.c mg.c op.c os2/OS2/PrfDB/PrfDB.xs
+	   ! os2/OS2/PrfDB/typemap os2/OS2/REXX/REXX.xs os2/os2.c
+	   ! os2/os2ish.h perl.c perl.h pp.c pp_ctl.c pp_hot.c pp_sys.c
+	   ! regcomp.c regcomp.h regexec.c scope.c scope.h sv.h taint.c
+	   ! toke.c util.c vms/ext/DCLsym/DCLsym.xs vms/ext/Stdio/Stdio.xs
+           ! vms/vms.c vms/vmsish.h win32/win32.c win32/win32thread.c
+____________________________________________________________________________
+[  1577] By: TimBunce                              on 1998/07/20  08:28:17
+        Log: Title:  "Make failed matches return empty list in list context"
+             From:  "Paul E. Maisano" , Gurusamy Sarathy
+             , Paul Maisano 
+             Msg-ID:  <199807200002.UAA21398@aatma.engin.umich.edu>,
+             <199807200027.KAA27815@ironbark-ridge.aaii.oz.au>,
+             <35B156FB.504E66E@aaii.oz.au>
+             Files:  pod/perlop.pod pp_hot.c t/op/pat.t
+     Branch: maint-5.004/perl
+           ! pod/perlop.pod pp_hot.c t/op/pat.t
+____________________________________________________________________________
+[  1576] By: TimBunce                              on 1998/07/20  08:11:37
+        Log: Title:  "win32 update from 5.005 beta 2 for 5.004_05"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807192332.TAA20905@aatma.engin.umich.edu>
+             Files:  win32/include/dirent.h win32/include/sys/socket.h proto.h
+             lib/ExtUtils/Liblist.pm lib/ExtUtils/Mksymlists.pm
+             win32/win32.h win32/win32iop.h README.win32 installperl
+             pp_ctl.c win32/Makefile win32/config.bc win32/config.vc
+             win32/config_H.bc win32/config_H.vc win32/config_h.PL
+             win32/config_sh.PL win32/dl_win32.xs win32/makedef.pl
+             win32/makefile.mk win32/pod.mak win32/win32.c
+             win32/win32sck.c win32/bin/pl2bat.pl
+     Branch: maint-5.004/perl
+	   ! README.win32 installperl lib/ExtUtils/Liblist.pm
+	   ! lib/ExtUtils/Mksymlists.pm pp_ctl.c proto.h win32/Makefile
+	   ! win32/bin/pl2bat.pl win32/config.bc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.vc win32/config_h.PL
+	   ! win32/config_sh.PL win32/dl_win32.xs win32/include/dirent.h
+	   ! win32/include/sys/socket.h win32/makedef.pl win32/makefile.mk
+	   ! win32/pod.mak win32/win32.c win32/win32.h win32/win32iop.h
+           ! win32/win32sck.c
+____________________________________________________________________________
+[  1575] By: gsar                                  on 1998/07/20  01:27:14
+        Log: integrate ansi branch to get s/foo/PL_foo/ changes
+     Branch: perl
+          +> fixvars
+          !> (integrate 537 files)
+____________________________________________________________________________
+[  1574] By: gsar                                  on 1998/07/20  00:33:43
+        Log: fix C<$1 .. $2> coredump under debugger
+     Branch: perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[  1573] By: gsar                                  on 1998/07/20  00:28:27
+        Log: misc win32 config tweaks
+     Branch: perl
+	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+           ! win32/config_h.PL win32/makefile.mk
+____________________________________________________________________________
+[  1572] By: nick                                  on 1998/07/19  19:04:58
+        Log: Missed file that had changed
+     Branch: ansiperl
+           ! embedvar.h
+____________________________________________________________________________
+[  1571] By: nick                                  on 1998/07/19  18:57:35
+        Log: Another threaded, perl malloc issue, x2p's Makefile.SH  has a 
+             pattern match...
+     Branch: ansiperl
+           ! x2p/Makefile.SH
+____________________________________________________________________________
+[  1570] By: nick                                  on 1998/07/19  18:16:20
+        Log: Drat! - threaded perl-malloc has mutex that needs PL_
+     Branch: ansiperl
+           ! malloc.c perl.h
+____________________________________________________________________________
+[  1569] By: nick                                  on 1998/07/19  17:55:22
+        Log: PL_ for perl's malloc
+     Branch: ansiperl
+           ! hv.c malloc.c
+____________________________________________________________________________
+[  1568] By: nick                                  on 1998/07/19  16:23:30
+        Log: PL_ minir tidy up
+     Branch: ansiperl
+           ! embed.pl ext/Thread/Thread.xs util.c
+____________________________________________________________________________
+[  1567] By: nick                                  on 1998/07/19  13:21:07
+        Log: Add PL_ to merged file
+     Branch: ansiperl
+           ! pp_hot.c
+____________________________________________________________________________
+[  1566] By: nick                                  on 1998/07/19  12:38:30
+        Log: Merge Mainline
+     Branch: ansiperl
+           + fixvars
+          !> (integrate 29 files)
+____________________________________________________________________________
+[  1565] By: gsar                                  on 1998/07/19  07:06:54
+        Log: tweak pod in MakeMaker.pm
+             From: Paul Johnson 
+             Date: Sat, 18 Jul 1998 15:58:48 +0100
+             Message-ID: <19980718155847.D903@west-tip.transeda.com>
+             Subject: [PATCH]5.004_75 (DOC) MakeMaker.pm
+     Branch: perl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1564] By: gsar                                  on 1998/07/19  07:04:45
+        Log: From: Gisle Aas 
+             Date: 17 Jul 1998 22:49:32 +0200
+             Message-ID: 
+             Subject: [PATCH _75] sv_gets() did not NUL-terminate SV when reading records
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1563] By: gsar                                  on 1998/07/19  07:03:32
+        Log: update freebsd hints
+             From: Mik Firestone 
+             Date: Fri, 17 Jul 1998 15:24:26 -0400 (EDT)
+             Message-Id: <199807171924.AA05297@interlock2.lexmark.com>
+             Subject: [PATCH 5.005b1] hints/freebsd.sh
+     Branch: perl
+           ! hints/freebsd.sh
+____________________________________________________________________________
+[  1562] By: gsar                                  on 1998/07/19  07:01:33
+        Log: From: Mark Bixby 
+             Date: Fri, 17 Jul 1998 10:37:49 -0700 (PDT)
+             Message-Id: <199807171737.KAA06967@spock.dis.cccd.edu>
+             Subject: [PATCH 5.005b1] MPE/iX hints and readme tweaks
+     Branch: perl
+           ! README.mpeix hints/mpeix.sh
+____________________________________________________________________________
+[  1561] By: gsar                                  on 1998/07/19  07:00:19
+        Log: From: Norton Allen 
+             Date: Fri, 17 Jul 1998 12:37:27 -0400 (edt)
+             Message-Id: <199807171637.MAA24830@bottesini.harvard.edu>
+             Subject: [PATCH: 75] make install fails
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1560] By: gsar                                  on 1998/07/19  06:58:55
+        Log: fix flawed substitution-loop detection on zero-length matches
+             From: Ilya Zakharevich 
+             Date: Fri, 17 Jul 1998 13:55:38 -0400 (EDT)
+             Message-Id: <199807171755.NAA27720@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Substitution loop in devel branch
+     Branch: perl
+           ! pp_hot.c t/op/subst.t
+____________________________________________________________________________
+[  1559] By: gsar                                  on 1998/07/19  06:56:19
+        Log: add perltrap entry about "${#a}", as suggested by
+             andy barfoot 
+     Branch: perl
+           ! pod/perltrap.pod
+____________________________________________________________________________
+[  1558] By: gsar                                  on 1998/07/19  06:43:53
+        Log: From: Anton Berezin 
+             Date: Fri, 17 Jul 1998 11:49:30 +0200 (CEST)
+             Message-Id: <199807170949.LAA18099@lion.plab.ku.dk>
+             Subject: [PATCH 5.005b1] perlcall.pod SAVETMPS/FREETMPS bracket
+     Branch: perl
+           ! pod/perlcall.pod
+____________________________________________________________________________
+[  1557] By: gsar                                  on 1998/07/19  06:40:33
+        Log: From: "Art Green" 
+             Date: Thu, 16 Jul 1998 21:37:05 -0500
+             Message-ID: <86256644.000E61D4.00@FDLTest1.mercmarine.com>
+             Subject: [PATCH]:_75 - Update hints/aix.sh for c_r library
+     Branch: perl
+           ! hints/aix.sh
+____________________________________________________________________________
+[  1556] By: gsar                                  on 1998/07/19  06:38:17
+        Log: update README.threads
+             From: Andy Dougherty 
+             Date: Thu, 16 Jul 1998 11:10:33 -0400 (EDT)
+             Message-Id: 
+             Subject: Re: Sort of OK: 5.005-beta1 and threads on ppc-powerux-threads
+     Branch: perl
+           ! README.threads
+____________________________________________________________________________
+[  1555] By: gsar                                  on 1998/07/19  06:36:32
+        Log: From: Scott Henry 
+             Date: 15 Jul 1998 20:23:02 -0700
+             Message-ID: 
+             Subject: [PATCH 5.005-beta1] update hints/irix_6.sh
+     Branch: perl
+           ! hints/irix_6.sh
+____________________________________________________________________________
+[  1554] By: gsar                                  on 1998/07/19  06:35:10
+        Log: From: Spider Boardman 
+             Date: Wed, 15 Jul 1998 16:56:48 -0400
+             Message-Id: <199807152056.QAA369057@web.zk3.dec.com>
+             Subject: [PATCH _75] dec_osf hints still wrong
+     Branch: perl
+           ! hints/dec_osf.sh
+____________________________________________________________________________
+[  1553] By: gsar                                  on 1998/07/19  06:33:29
+        Log: tweak hpux hints in vain attempt to get cppstdin set properly
+             From: Andy Dougherty 
+             Date: Wed, 15 Jul 1998 16:11:43 -0400 (EDT)
+             Subject: Re: HP-UX 11, perl 5.004_04, Oracle 7.3.3.4, DBI 0.93
+             Message-Id: 
+             --
+             From: Andy Dougherty 
+             Date: Thu, 16 Jul 1998 11:37:58 -0400 (EDT)
+             Subject: Re: Configure misses preprocessor on HP-UX
+             Message-Id: 
+     Branch: perl
+           ! hints/hpux.sh
+____________________________________________________________________________
+[  1552] By: gsar                                  on 1998/07/19  06:26:24
+        Log: From: Tye McQueen 
+             Date: Wed, 15 Jul 1998 13:46:44 -0500 (CDT)
+             Message-Id: <199807151846.AA12653@metronet.com>
+             Subject: Minor debugger fix
+     Branch: perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[  1551] By: gsar                                  on 1998/07/19  06:25:05
+        Log: From: Andy Dougherty 
+             Date: Wed, 15 Jul 1998 14:23:39 -0400 (EDT)
+             Message-Id: 
+             Subject: Re: Configure s?rand support [PATCH 5.004_75] -- better patch
+     Branch: perl
+           ! INSTALL pp.c
+____________________________________________________________________________
+[  1550] By: gsar                                  on 1998/07/19  06:23:10
+        Log: minor re.pm cleanup
+             From: "M.J.T. Guy" 
+             Date: Wed, 15 Jul 1998 12:41:14 +0100
+             Message-Id: 
+             Subject: Re: [PATCH 5.004_74]Don't use tainted REs in Basename.pm when building perl
+     Branch: perl
+           ! ext/re/re.pm pod/perldiag.pod
+____________________________________________________________________________
+[  1549] By: gsar                                  on 1998/07/19  06:20:49
+        Log: export additional symbols on OS/2
+             From: Ilya Zakharevich 
+             Date: Wed, 15 Jul 1998 06:13:07 -0400 (EDT)
+             Message-Id: <199807151013.GAA11279@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Export more symbols from Perl DLL
+     Branch: perl
+           ! os2/os2.sym
+____________________________________________________________________________
+[  1548] By: gsar                                  on 1998/07/19  06:18:58
+        Log: From: Ilya Zakharevich 
+             Date: Wed, 15 Jul 1998 06:10:36 -0400 (EDT)
+             Message-Id: <199807151010.GAA11270@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Minor improvements to perlcc
+     Branch: perl
+           ! utils/perlcc.PL
+____________________________________________________________________________
+[  1547] By: gsar                                  on 1998/07/19  06:17:22
+        Log: applied slightly tweaked version of patch
+             From: Ilya Zakharevich 
+             Date: Thu, 16 Jul 1998 15:49:15 -0400 (EDT)
+             Message-Id: <199807161949.PAA08214@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Updated patch to Test::Harness
+     Branch: perl
+           ! lib/Test/Harness.pm
+____________________________________________________________________________
+[  1546] By: gsar                                  on 1998/07/19  06:11:03
+        Log: improve 'frame' handling in debugger
+             From: Ilya Zakharevich 
+             Date: Wed, 15 Jul 1998 00:52:10 -0400 (EDT)
+             Message-Id: <199807150452.AAA06685@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Better debugger trace
+     Branch: perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[  1545] By: gsar                                  on 1998/07/19  06:07:51
+        Log: fix and test handling of literal newlines in heredocs
+             From: Gisle Aas 
+             Date: 17 Jul 1998 14:58:25 +0200
+             Message-ID: 
+             Subject: Re: [PATCH _71] CRs et al
+             --
+             From: larry@wall.org (Larry Wall)
+             Date: Fri, 17 Jul 1998 09:32:35 -0700
+             Message-Id: <199807171632.JAA12959@wall.org>
+             Subject: Re: [PATCH _71] CRs et al
+     Branch: perl
+           ! t/comp/multiline.t toke.c
+____________________________________________________________________________
+[  1544] By: gsar                                  on 1998/07/19  06:00:12
+        Log: remove possibly unwritable lib/re.pm before overwrite
+             From: larry@wall.org (Larry Wall)
+             Date: Wed, 15 Jul 1998 14:26:03 -0700
+             Message-Id: <199807152126.OAA04623@wall.org>
+             Subject: Re: bug encountered building perl5.005beta1
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1543] By: gsar                                  on 1998/07/19  05:56:18
+        Log: unsubmitted Changes tweak
+     Branch: perl
+           ! Changes cygwin32/ld2
+____________________________________________________________________________
+[  1542] By: gsar                                  on 1998/07/19  01:21:22
+        Log: make failed matches return empty list in list context
+     Branch: perl
+           ! pod/perlop.pod pp_hot.c t/op/pat.t
+____________________________________________________________________________
+[  1541] By: gsar                                  on 1998/07/18  22:27:59
+        Log: remove obsolete perltrap about m//g's pos() reset behavior
+     Branch: perl
+           ! pod/perltrap.pod
+____________________________________________________________________________
+[  1540] By: nick                                  on 1998/07/18  22:16:26
+        Log: PL_ stuff passes non-threaded on Mingw32
+             (Why did it compile without this fix?)
+     Branch: ansiperl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1539] By: TimBunce                              on 1998/07/18  22:04:58
+        Log: Assorted patches:
+             
+             Title:  "Minor fixes to MakeMaker docs re ExtUtils::Embed"
+             From:  Paul Johnson 
+             Msg-ID:  <19980718155847.D903@west-tip.transeda.com>
+             Files:  lib/ExtUtils/MakeMaker.pm
+             
+             Title:  "Update t/op/array.t (from 5.005 beta 1)"
+             Files:  t/op/array.t
+     Branch: maint-5.004/perl
+           ! lib/ExtUtils/MakeMaker.pm t/op/array.t
+____________________________________________________________________________
+[  1538] By: TimBunce                              on 1998/07/18  21:57:50
+        Log: Title:  "Remove flawed '// with parens or $&' performance patch (Change 662)"
+             From:  "M.J.T. Guy" , Tim Bunce ,
+             larry@wall.org (Larry Wall)
+             Msg-ID:  <19980717015308.E6244@ig.co.uk>, <199807171819.LAA13771@wall.org>,
+             
+             Files:  cop.h embed.h perl.h proto.h regexp.h gv.c interp.sym perl.c pp.c
+             pp_ctl.c pp_hot.c regexec.c scope.c
+     Branch: maint-5.004/perl
+	   ! cop.h embed.h gv.c interp.sym perl.c perl.h pp.c pp_ctl.c
+           ! pp_hot.c proto.h regexec.c regexp.h scope.c
+____________________________________________________________________________
+[  1537] By: nick                                  on 1998/07/18  20:56:58
+        Log: PL_ scheme Builds under Minw32 - some SEGFAULT snags
+     Branch: ansiperl
+	   ! doio.c mg.c perl.c pp_hot.c pp_sys.c util.c win32/perllib.c
+           ! win32/win32.c win32/win32.h
+____________________________________________________________________________
+[  1536] By: nick                                  on 1998/07/18  20:50:26
+        Log: Merge latest mainline
+     Branch: ansiperl
+           ! patchlevel.h
+          !> ext/Thread/Thread.xs op.h util.c
+____________________________________________________________________________
+[  1535] By: nick                                  on 1998/07/18  16:45:29
+        Log: Edited "behind my back" ...
+     Branch: ansiperl
+           ! vms/perly_c.vms
+____________________________________________________________________________
+[  1534] By: nick                                  on 1998/07/18  16:38:27
+        Log: PL_ stuff for threads
+     Branch: ansiperl
+	   ! byterun.c cop.h deb.c doio.c doop.c embed.pl embedvar.h
+	   ! ext/B/B.xs ext/Thread/Thread.xs gv.c intrpvar.h mg.c
+	   ! miniperlmain.c op.c op.h perl.c perl.h perly.y pp.c pp.h
+	   ! pp_ctl.c pp_hot.c pp_sys.c regexec.c run.c scope.c sv.c sv.h
+           ! thread.h toke.c util.c win32/perllib.c
+____________________________________________________________________________
+[  1533] By: nick                                  on 1998/07/18  14:30:54
+        Log: Builds and passes tests with -DMULTIPLICITY and -DCRIPPLED_CC
+             (still with PERL_GLOBAL_STRUCT) - to cover more #if branches
+     Branch: ansiperl
+           ! embed.pl intrpvar.h perl.c toke.c
+____________________________________________________________________________
+[  1532] By: nick                                  on 1998/07/18  13:53:03
+        Log: PL_ prefix to all perlvars, part1
+             Builds and passes all tests at one limit i.e. -DPERL_GLOBAL_STRUCT
+     Branch: ansiperl
+	   ! XSUB.h av.c bytecode.h byterun.c byterun.h cop.h deb.c doio.c
+	   ! doop.c dump.c embed.h embed.pl embedvar.h ext/B/B.xs
+	   ! ext/Data/Dumper/Dumper.xs ext/DynaLoader/dl_next.xs
+	   ! ext/ODBM_File/ODBM_File.xs ext/Opcode/Opcode.xs
+	   ! ext/POSIX/POSIX.xs ext/Socket/Socket.xs ext/attrs/attrs.xs
+	   ! ext/re/re.xs gv.c hv.c hv.h lib/ExtUtils/typemap
+	   ! lib/ExtUtils/xsubpp mg.c miniperlmain.c op.c perl.c perl.h
+	   ! perly.c perly.y pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c regcomp.c
+	   ! regcomp.h regexec.c run.c scope.c scope.h sv.c sv.h taint.c
+           ! thrdvar.h toke.c universal.c util.c
+____________________________________________________________________________
+[  1531] By: gsar                                  on 1998/07/18  08:48:13
+        Log: fix yet another USE_THREADS leak due to failure to free stacks
+     Branch: perl
+           ! ext/Thread/Thread.xs util.c
+____________________________________________________________________________
+[  1530] By: gsar                                  on 1998/07/18  08:46:58
+        Log: fix major bug in GIMME (introduced in 5.003_96); void contexts were
+             using the context of the enclosing sub!
+     Branch: perl
+           ! op.h
+____________________________________________________________________________
+[  1529] By: nick                                  on 1998/07/18  08:18:03
+        Log: Integrate post-beta tweaks to ansiperl
+     Branch: ansiperl
+	  !> ObjXSub.h embed.h ext/Thread/Thread.xs global.sym gv.c mg.c
+	  !> objpp.h op.c perl.c perl.h pp_sys.c proto.h sv.c t/op/substr.t
+          !> t/op/vec.t toke.c util.c
+____________________________________________________________________________
+[  1528] By: gsar                                  on 1998/07/18  04:23:12
+        Log: fix lvalue leaks stemming from failure to free LvTARG(sv)
+     Branch: perl
+	   ! ObjXSub.h embed.h global.sym mg.c objpp.h perl.h proto.h sv.c
+           ! t/op/substr.t t/op/vec.t
+____________________________________________________________________________
+[  1527] By: gsar                                  on 1998/07/18  02:16:40
+        Log: check ferror() only if read() returned 0
+     Branch: perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1526] By: gsar                                  on 1998/07/18  02:08:01
+        Log: fix another CvMUTEXP() leak
+     Branch: perl
+           ! gv.c
+____________________________________________________________________________
+[  1525] By: TimBunce                              on 1998/07/18  01:51:52
+        Log: Assorted patches:
+             
+             Title:  "Fix @a=@a=qw(...) properly"
+             From:  Stephen McCamant 
+             Msg-ID:  <13742.49404.367751.437966@alias-2.pr.mcs.net>
+             Files:  opcode.h
+             
+             Title:  "Larry's patch to support CR LF in scripts (updated)"
+             From:  Gisle Aas , larry@wall.org (Larry Wall)
+             Msg-ID:  <199807120054.RAA19550@wall.org>, 
+             Files:  t/comp/multiline.t toke.c
+             
+             Title:  "Change getc() docs to match behaviour. Make read() return undef on
+             error."
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807052257.SAA10004@aatma.engin.umich.edu>
+             Files:  pod/perlfunc.pod pp_sys.c
+             
+             Title:  "Update patchls utility"
+             Files:  Porting/patchls
+     Branch: maint-5.004/perl
+	   ! Porting/patchls opcode.h pod/perlfunc.pod pp_sys.c
+           ! t/comp/multiline.t toke.c
+____________________________________________________________________________
+[  1524] By: gsar                                  on 1998/07/18  01:22:35
+        Log: fix CvMUTEXP() leaks with -Dusethreads
+     Branch: perl
+           ! op.c toke.c
+____________________________________________________________________________
+[  1523] By: gsar                                  on 1998/07/18  01:17:28
+        Log: fix $/ init for multiple interpreters/threads
+     Branch: perl
+           ! ext/Thread/Thread.xs perl.c util.c
+____________________________________________________________________________
+[  1522] By: gsar                                  on 1998/07/18  01:11:07
+        Log: fix missing init that caused RE alternations to fail under
+             -Dusethreads
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[  1521] By: TimBunce                              on 1998/07/16  22:23:25
+        Log: Assorted patches:
+             
+             Title:  "Allow $SIG{CHLD}='IGNORE' to work (reap zombies) on Solaris"
+             From:  Albert Dvornik , Chip Salzenberg 
+             Msg-ID:  <19980708181055.A8005@perlsupport.com>,
+             
+             Files:  util.c
+             
+             Title:  "Document perltrap on precedence of keys/values/each"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807151857.OAA04704@aatma.engin.umich.edu>
+             Files:  pod/perltrap.pod
+             
+             Title:  "perlbook.pod patch"
+             From:  Tom Christiansen 
+             Msg-ID:  <199807140037.SAA04556@chthon.perl.com>
+             Files:  pod/perlbook.pod
+             
+             Title:  "perlmod.pod patch"
+             From:  Tom Christiansen 
+             Msg-ID:  <199807140109.TAA04678@chthon.perl.com>
+             Files:  pod/perlmod.pod
+             
+             Title:  "Fix bug in IO::Handle->input_record_separator"
+             From:  Robin Barker , Swen Thuemmler
+             
+             Msg-ID:  <199807161400.PAA25532@tempest.cise.npl.co.uk>,
+             
+             Files:  ext/IO/lib/IO/Handle.pm
+             
+             Title:  "update h2ph, Math::Complex and Math::Trig (from 5.005 beta 1)"
+             Files:  lib/Math/Complex.pm lib/Math/Trig.pm t/lib/complex.t t/lib/h2ph.t
+             t/lib/trig.t utils/h2ph.PL
+             
+             Title:  "Update hints/irix_6.sh"
+             From:  Scott Henry 
+             Msg-ID:  
+             Files:  hints/irix_6.sh
+             
+             Title:  "Configure misses preprocessor on HP-UX (further fix)"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  hints/hpux.sh
+             
+             Title:  "update perlbug to v1.26 (from 5.005 beta 1)"
+             Files:  utils/perlbug.PL
+     Branch: maint-5.004/perl
+	   ! ext/IO/lib/IO/Handle.pm hints/hpux.sh hints/irix_6.sh
+	   ! lib/Math/Complex.pm lib/Math/Trig.pm pod/perlbook.pod
+	   ! pod/perlmod.pod pod/perltrap.pod t/lib/complex.t t/lib/h2ph.t
+           ! t/lib/trig.t util.c utils/h2ph.PL utils/perlbug.PL
+____________________________________________________________________________
+[  1520] By: TimBunce                              on 1998/07/15  21:24:12
+        Log: Assorted patches:
+             
+             Title:  "Add stub attrs.pm"
+             From:  Graham Barr , Gurusamy Sarathy 
+             Msg-ID:  <19980713163312.A18222@asic.sc.ti.com>,
+             <199807132140.RAA09583@aatma.engin.umich.edu>
+             Files:  MANIFEST lib/attrs.pm
+             
+             Title:  "Fix @a=@a=qw(...)"
+             From:  Gurusamy Sarathy , Stephen McCamant
+             
+             Msg-ID:  <13737.12300.950886.821143@alias-2.pr.mcs.net>,
+             <199807122351.TAA05649@aatma.engin.umich.edu>
+             Files:  op.c opcode.pl t/op/array.t
+             
+             Title:  "Fix 'PERL_DESTRUCT_LEVEL=2 ./perl -DD -e 1' loop"
+             From:  Gisle Aas , Stephen McCamant 
+             Msg-ID:  <13739.55551.205810.338648@alias-2.pr.mcs.net>,
+             
+             Files:  sv.c
+             
+             Title:  "Make Power MachTen use vfork() and system malloc()"
+             From:  Dominic Dunlop , Jarkko Hietaniemi 
+             Msg-ID:  
+             Files:  hints/machten.sh malloc.c
+             
+             Title:  "Use REG_INFTY in place of hardwired constant"
+             From:  Dominic Dunlop 
+             Msg-ID:  
+             Files:  regcomp.h regcomp.c regexec.c
+             
+             Title:  "Minor debugger fix (history adds an extra newline)"
+             From:  Tye McQueen 
+             Msg-ID:  <199807151846.AA12653@metronet.com>
+             Files:  lib/perl5db.pl
+             
+             Title:  "Protect Term::ReadLine against non-default $/ value"
+             From:  Ilya Zakharevich ,
+             kstar@chapin.edu@ig.co.uk ()
+             Msg-ID:  <19980713151749.G8596@O2.chapin.edu>,
+             <199807132139.RAA11270@monk.mps.ohio-state.edu>
+             Files:  lib/Term/ReadLine.pm
+             
+             Title:  "Fix HP-UX 11 build (cppstdin)"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  Configure hints/hpux.sh
+             
+             Title:  "VMS filetest operator fixup (SS$_ACCONFLICT)"
+             From:  Dan Sugalski 
+             Msg-ID:  <3.0.5.32.19980702135255.00a6ad90@ous.edu>
+             Files:  vms/vms.c
+     Branch: maint-5.004/perl
+           + lib/attrs.pm
+	   ! Configure MANIFEST hints/hpux.sh hints/machten.sh
+	   ! lib/Term/ReadLine.pm lib/perl5db.pl malloc.c op.c opcode.pl
+           ! regcomp.c regcomp.h regexec.c sv.c t/op/array.t vms/vms.c
+____________________________________________________________________________
+[  1519] By: nick                                  on 1998/07/15  18:56:17
+        Log: Integrate mainline at beta1 
+     Branch: ansiperl
+	  +> Porting/p4d2p README.mpeix Todo-5.005
+	  +> ext/DynaLoader/dl_mpeix.xs ext/re/hints/mpeix.pl
+	  +> mpeix/mpeixish.h mpeix/nm mpeix/relink perly_c.diff
+          +> pod/perld4.pod pod/perlport.pod t/lib/ipc_sysv.t
+	   - Todo.5.005 lib/Bundle/CPAN.pm perly.c.diff pod/perldelta4.pod
+           - t/op/ipcmsg.t t/op/ipcsem.t
+          !> (integrate 167 files)
+
+----------------
+Version 5.004_75        5.005 Public Beta, Issue 1
+----------------
+
+____________________________________________________________________________
+[  1518] By: gsar                                  on 1998/07/15  10:01:41
+        Log: add stub docs for ext/B, other minor tweaks
+     Branch: perl
+	   ! Changes Porting/config_H config_h.SH ext/B/B.pm
+	   ! ext/B/B/Asmdata.pm ext/B/B/Assembler.pm ext/B/B/Bblock.pm
+	   ! ext/B/B/Bytecode.pm ext/B/B/C.pm ext/B/B/CC.pm
+	   ! ext/B/B/Debug.pm ext/B/B/Disassembler.pm ext/B/B/Showlex.pm
+           ! ext/B/B/Stackobj.pm ext/B/B/Terse.pm ext/B/O.pm sv.c
+____________________________________________________________________________
+[  1517] By: gsar                                  on 1998/07/15  08:27:15
+        Log: up patchlevel to 75 (Beta, Issue 1), add podpatch
+             From: abigail@fnx.com
+             Date: Wed, 15 Jul 1998 04:03:44 -0400 (EDT)
+             Message-ID: <19980715080344.21975.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.004_74] pod/perlop.pod
+     Branch: perl
+	   ! Changes patchlevel.h pod/perlop.pod win32/Makefile
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1516] By: gsar                                  on 1998/07/15  08:04:24
+        Log: From:    abigail@fnx.com
+             Date:    Wed, 15 Jul 1998 03:47:56 EDT
+             Message-Id: <19980715074756.21868.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.004_74] pod/pod2man.PL Fix use of < inside C<>
+     Branch: perl
+           ! pod/pod2man.PL
+____________________________________________________________________________
+[  1515] By: gsar                                  on 1998/07/15  08:02:14
+        Log: From:    Ilya Zakharevich 
+             Date:    Wed, 15 Jul 1998 03:49:24 EDT
+             Message-Id: <199807150749.DAA09177@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] Additional targets for OS/2 build
+     Branch: perl
+           ! os2/Makefile.SHs
+____________________________________________________________________________
+[  1514] By: gsar                                  on 1998/07/15  07:58:29
+        Log: rename some long file names to be 8.3 truncation-safe
+     Branch: perl
+          +> Todo-5.005 perly_c.diff pod/perld4.pod
+           - Todo.5.005 perly.c.diff pod/perldelta4.pod
+           ! MANIFEST Porting/pumpkin.pod perly.fixer
+____________________________________________________________________________
+[  1513] By: gsar                                  on 1998/07/15  07:35:29
+        Log: minor tweaks to docs on qr//
+     Branch: perl
+           ! ext/re/re.pm pod/perldelta.pod pod/perlop.pod pod/perlre.pod
+____________________________________________________________________________
+[  1512] By: gsar                                  on 1998/07/15  07:06:02
+        Log: applied patch, with tab tweak suggest by Peter Prymmer
+             From: Dan Sugalski 
+             Date: Tue, 14 Jul 1998 16:41:14 -0700
+             Message-Id: <3.0.5.32.19980714164114.00a3e2a0@ous.edu>
+             Subject: [PATCH 5.004_74]VMS build cleanups
+     Branch: perl
+           ! vms/descrip_mms.template
+____________________________________________________________________________
+[  1511] By: gsar                                  on 1998/07/15  07:03:33
+        Log: allow perlbug -ok when STDIN it not a tty
+             From: Hugo van der Sanden 
+             Date: Wed, 15 Jul 1998 03:24:56 +0200
+             Message-Id: 
+             Subject: Re: [NOT OK] 5.004_74: "make ok" not ok in IRIX 6.2
+     Branch: perl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  1510] By: gsar                                  on 1998/07/15  06:59:43
+        Log: From: "Art Green" 
+             Date: Tue, 14 Jul 1998 20:53:48 -0500
+             Message-ID: <86256642.0004D7AB.00@FDLTest1.mercmarine.com>
+             Subject: [PATCH]:_74 - Allow Configure to recognize _AIX41 & _POWER compiler defines
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
+[  1509] By: gsar                                  on 1998/07/15  06:57:50
+        Log: typecast long vs. IV compares in pp_flip/pp_flop
+     Branch: perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[  1508] By: gsar                                  on 1998/07/15  06:50:49
+        Log: don't copy foreach itervar when no external refs exist
+             From: Gisle Aas 
+             Date: 15 Jul 1998 03:35:25 +0200
+             Message-ID: 
+             Subject: Re: Testcase for 1..n closure change
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[  1507] By: gsar                                  on 1998/07/15  06:46:41
+        Log: applied patch, regen headers
+             From: Stephen McCamant 
+             Date: Tue, 14 Jul 1998 19:56:47 -0500 (CDT)
+             Message-ID: <13739.64763.792570.626015@alias-2.pr.mcs.net>
+             Subject: B::Deparse update for qr// and regcreset
+     Branch: perl
+           ! ext/B/B/Deparse.pm opcode.h opcode.pl
+____________________________________________________________________________
+[  1506] By: gsar                                  on 1998/07/15  06:43:04
+        Log: make pregcomp et al VIRTUAL again for PERL_OBJECT
+             From: "Douglas Lankshear" 
+             Date: Tue, 14 Jul 1998 16:40:30 -0700
+             Message-ID: <000301bdaf80$c93d14a0$a32fa8c0@tau.Active>
+             Subject: [PATCH 5.004_74]
+     Branch: perl
+           ! proto.h
+____________________________________________________________________________
+[  1505] By: gsar                                  on 1998/07/15  06:41:43
+        Log: dont use sv_dump() in -DD diagnostic
+             From: Gisle Aas 
+             Date: 14 Jul 1998 23:55:36 +0200
+             Message-ID: 
+             Subject: [PATCH] Fix 'PERL_DESTRUCT_LEVEL=2 ./perl -DD -e 1' loop
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1504] By: gsar                                  on 1998/07/15  06:39:37
+        Log: add a few more thread.t tests
+     Branch: perl
+           ! t/lib/thread.t
+____________________________________________________________________________
+[  1503] By: gsar                                  on 1998/07/15  06:31:33
+        Log: fix thread.t ('join $t' ne '$t->join' !)
+     Branch: perl
+           ! t/lib/thread.t
+____________________________________________________________________________
+[  1502] By: gsar                                  on 1998/07/15  06:26:00
+        Log: From: Jarkko Hietaniemi 
+             Date: Wed, 15 Jul 1998 01:45:57 +0300 (EET DST)
+             Message-Id: <199807142245.BAA09651@alpha.hut.fi>
+             Subject: [PATCH] 5.004_74: MPE/iX final touches
+     Branch: perl
+           ! installperl lib/File/Copy.pm
+____________________________________________________________________________
+[  1501] By: gsar                                  on 1998/07/15  05:59:49
+        Log: apply (reversed) patch
+             From: Peter Wolfe 
+             Date: Tue, 14 Jul 1998 13:01:58 -0700 (PDT)
+             Message-Id: <199807142001.NAA26550@titan.teloseng.com>
+             Subject: NOT_OK: perl 5.00474 on SCO 3.2v5.0.4
+     Branch: perl
+           ! ext/IPC/SysV/SysV.xs
+____________________________________________________________________________
+[  1500] By: gsar                                  on 1998/07/15  05:57:39
+        Log: From: Andy Dougherty 
+             Date: Tue, 14 Jul 1998 14:14:59 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.004_74] Config_74-01
+     Branch: perl
+	   ! Configure MANIFEST Porting/Glossary Porting/config.sh
+	   ! Porting/config_H Porting/pumpkin.pod config_h.SH
+	   ! vms/subconfigure.com win32/config.bc win32/config.gc
+           ! win32/config.vc
+____________________________________________________________________________
+[  1499] By: gsar                                  on 1998/07/15  05:48:38
+        Log: From: Jarkko Hietaniemi 
+             Date: Tue, 14 Jul 1998 21:35:02 +0300 (EET DST)
+             Message-Id: <199807141835.VAA09030@alpha.hut.fi>
+             Subject: [PATCH] 5.004_74: trig.t: math inaccuracy fudge for unicos
+     Branch: perl
+           ! t/lib/trig.t
+____________________________________________________________________________
+[  1498] By: gsar                                  on 1998/07/15  05:47:33
+        Log: -w, strict clean perldoc (via PM)
+             From: Robin Barker 
+             Date: Tue, 14 Jul 98 17:22:01 BST
+             Message-Id: <18695.9807141622@tempest.cise.npl.co.uk>
+             Subject: [PATCH 5.004_74] perldoc.PL
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  1497] By: gsar                                  on 1998/07/15  05:35:54
+        Log: add comment about cpprun etc., to hints/hpux.sh
+     Branch: perl
+           ! hints/hpux.sh
+____________________________________________________________________________
+[  1496] By: gsar                                  on 1998/07/15  05:15:16
+        Log: fix warning from CGI::Carp
+     Branch: perl
+           ! lib/CGI/Carp.pm
+____________________________________________________________________________
+[  1495] By: gsar                                  on 1998/07/14  23:47:18
+        Log: fix off-by-one in win32 registry handling
+             From: "Douglas Lankshear" 
+             Date: Tue, 14 Jul 1998 07:39:06 -0700
+             Message-ID: <000401bdaf35$27489e80$a32fa8c0@tau.Active>
+             Subject: [PATCH 5.004_73]
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  1494] By: gsar                                  on 1998/07/14  23:45:58
+        Log: doc patches from Gisle Aas 
+             Date: 14 Jul 1998 16:18:31 +0200
+             Message-ID: 
+             Subject: [PATCH] substr/splice changes for perldelta.pod
+             --
+             Date: 14 Jul 1998 20:31:27 +0200
+             Message-ID: 
+             Subject: [PATCH] Duplicate description of use integer %
+     Branch: perl
+           ! pod/perldelta.pod pod/perlop.pod
+____________________________________________________________________________
+[  1493] By: gsar                                  on 1998/07/14  23:39:31
+        Log: File/Spec.pm needs trailing newline
+     Branch: perl
+           ! lib/File/Spec.pm
+____________________________________________________________________________
+[  1492] By: gsar                                  on 1998/07/14  21:43:03
+        Log: unsubmitted _74 tweaks
+     Branch: perl
+	   ! Changes mpeix/nm mpeix/relink pod/perldelta.pod
+           ! pod/perldiag.pod
+
+----------------
+Version 5.004_74
+----------------
+
+____________________________________________________________________________
+[  1491] By: gsar                                  on 1998/07/14  08:48:28
+        Log: up patchlevel to 74; introduce distinct archname for PERL_OBJECT
+     Branch: perl
+	   ! Changes patchlevel.h pod/perlhist.pod win32/Makefile
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1490] By: gsar                                  on 1998/07/14  08:31:13
+        Log: From:    Gisle Aas 
+             Date:    14 Jul 1998 10:20:34 +0200
+             Message-Id: 
+             Subject: [PATCH] Make -DP work (and readable)
+     Branch: perl
+           ! run.c
+____________________________________________________________________________
+[  1489] By: gsar                                  on 1998/07/14  08:23:46
+        Log: fix function parameter autovivification for pseudohashes
+     Branch: perl
+           ! mg.c t/op/avhv.t
+____________________________________________________________________________
+[  1488] By: gsar                                  on 1998/07/14  07:34:45
+        Log: merge changes#1423,1465 from maintbranch; checkin two missed files
+             from earlier changes#1461,1478
+     Branch: perl
+	   ! pod/perldiag.pod pod/perlfunc.pod pod/perlop.pod pp_sys.c
+	   ! t/TEST t/lib/thread.t t/op/local.t t/op/pat.t t/op/regexp.t
+           ! t/op/substr.t t/op/vec.t
+____________________________________________________________________________
+[  1487] By: gsar                                  on 1998/07/14  07:04:54
+        Log: tweak t/lib/thread.t
+     Branch: perl
+           ! t/lib/thread.t
+____________________________________________________________________________
+[  1486] By: gsar                                  on 1998/07/14  06:38:15
+        Log: applied patch, slightly tweaked
+             From: Dan Sugalski 
+             Date: Mon, 13 Jul 1998 11:52:27 -0700
+             Message-Id: <3.0.5.32.19980713115227.00a73970@ous.edu>
+             Subject: [PATCH 5.004_73]Get re module working on VMS
+     Branch: perl
+           ! ext/re/Makefile.PL perl.h proto.h
+____________________________________________________________________________
+[  1485] By: gsar                                  on 1998/07/14  06:32:58
+        Log: add Porting/p4d2p
+     Branch: perl
+           + Porting/p4d2p
+           ! MANIFEST
+____________________________________________________________________________
+[  1484] By: gsar                                  on 1998/07/14  06:08:20
+        Log: doc patches from Tom Christiansen  (via PM)
+             Date: Mon, 13 Jul 1998 19:09:09 -0600
+             Message-Id: <199807140109.TAA04678@chthon.perl.com>
+             Subject: perlmod.pod patch
+             --
+             Date: Mon, 13 Jul 1998 18:37:07 -0600
+             Message-Id: <199807140037.SAA04556@chthon.perl.com>
+             Subject: perlbook.pod patch
+     Branch: perl
+           ! pod/perlbook.pod pod/perlmod.pod
+____________________________________________________________________________
+[  1483] By: gsar                                  on 1998/07/14  06:04:25
+        Log: OS/2 update
+             From: Ilya Zakharevich 
+             Message-Id: <199807132336.TAA12967@monk.mps.ohio-state.edu>
+             Date: Mon, 13 Jul 1998 19:36:05 -0400 (EDT)
+             Subject: [PATCH 5.004_72] OS/2 system() and friends additions
+     Branch: perl
+           ! README.os2 hints/os2.sh os2/Changes os2/os2.c t/op/magic.t
+____________________________________________________________________________
+[  1482] By: gsar                                  on 1998/07/14  06:01:12
+        Log: more VMS patches from Dan Sugalski 
+             Date: Mon, 13 Jul 1998 16:37:49 -0700
+             Message-Id: <3.0.5.32.19980713163749.00af1c40@ous.edu>
+             Subject: [PATCH 5.004_73]t/io/iprefix.t patch for VMS
+             --
+             Date: Mon, 13 Jul 1998 15:51:09 -0700
+             Message-Id: <3.0.5.32.19980713155109.00a52c30@ous.edu>
+             Subject: [PATCH5.004_73]Tweak t/lib/cgi-html.t to work on VMS
+     Branch: perl
+           ! t/io/iprefix.t t/lib/cgi-html.t
+____________________________________________________________________________
+[  1481] By: gsar                                  on 1998/07/14  05:57:36
+        Log: From: Dan Sugalski 
+             Date: Mon, 13 Jul 1998 15:41:53 -0700
+             Message-Id: <3.0.5.32.19980713154153.00a87be0@ous.edu>
+             Subject: [PATCH 5.004_73]Fix t/base/rs.t test failures on VMS
+     Branch: perl
+           ! t/base/rs.t
+____________________________________________________________________________
+[  1480] By: gsar                                  on 1998/07/14  05:56:14
+        Log: From: Dan Sugalski 
+             Message-Id: <3.0.5.32.19980713150427.00b2a540@ous.edu>
+             Date: Mon, 13 Jul 1998 15:04:27 -0700
+             Subject: [PATCH 5.004_73]Thread tweak for VMS.C
+     Branch: perl
+           ! vms/vms.c
+____________________________________________________________________________
+[  1479] By: gsar                                  on 1998/07/14  05:55:13
+        Log: From: Laszlo Molnar 
+             Date: Mon, 13 Jul 1998 23:13:43 +0200
+             Message-ID: <19980713231343.A178@cdata.tvnet.hu>
+             Subject: [PATCH _72] Configure problem on dos-djgpp
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
+[  1478] By: gsar                                  on 1998/07/14  05:53:08
+        Log: add files and tweaks needed for MPE/iX port (via PM)
+             From: Jarkko Hietaniemi 
+             Date: Tue, 14 Jul 1998 00:07:30 +0300 (EET DST)
+             Message-Id: <199807132107.AAA20603@alpha.hut.fi>
+             Subject: MPE/iX patches for _73
+     Branch: perl
+	   + README.mpeix ext/DynaLoader/dl_mpeix.xs ext/re/hints/mpeix.pl
+           + mpeix/mpeixish.h mpeix/nm mpeix/relink
+	   ! MANIFEST ext/Socket/Socket.xs hints/mpeix.sh installperl
+           ! lib/File/Copy.pm perl.c perl.h pod/perldelta.pod
+____________________________________________________________________________
+[  1477] By: gsar                                  on 1998/07/14  04:23:28
+        Log: added suggested patch (via PM), tweaked to implicitly specify -DDEBUGGING
+             From: Andy Dougherty 
+             Date: Mon, 13 Jul 1998 16:50:55 -0400 (EDT)
+             Message-Id: 
+             Subject: Re: _70 and Devel::RE
+     Branch: perl
+           ! ext/re/Makefile.PL ext/re/re.xs regcomp.c regexec.c
+____________________________________________________________________________
+[  1476] By: gsar                                  on 1998/07/14  04:06:25
+        Log: minor Configure nits
+             From: Jarkko Hietaniemi 
+             Date: Mon, 13 Jul 1998 23:25:27 +0300 (EET DST)
+             Message-Id: <199807132025.XAA10771@alpha.hut.fi>
+             Subject: Configure patches for MVS (and one x2p/Makefile.SH)
+     Branch: perl
+           ! Configure x2p/Makefile.SH
+____________________________________________________________________________
+[  1475] By: gsar                                  on 1998/07/14  03:59:56
+        Log: From: Dan Sugalski 
+             Date: Mon, 13 Jul 1998 12:54:19 -0700
+             Message-Id: <3.0.5.32.19980713125419.009e0100@ous.edu>
+             Subject: [PATCH 5.004_73] Fixes to the VMS configuration system
+     Branch: perl
+           ! vms/munchconfig.c vms/subconfigure.com
+____________________________________________________________________________
+[  1474] By: gsar                                  on 1998/07/14  03:58:13
+        Log: make Term::Readline::get_line() independent of caller's $/
+             From: kstar@chapin.edu
+             Date: Mon, 13 Jul 1998 15:17:49 -0400
+             Message-ID: <19980713151749.G8596@O2.chapin.edu>
+             Subject: [PATCH] Was: CPAN.pm still fails
+     Branch: perl
+           ! lib/Term/ReadLine.pm
+____________________________________________________________________________
+[  1473] By: gsar                                  on 1998/07/14  03:55:29
+        Log: fix $trnl interpolation in here-docs (via PM)
+             From: Andy Dougherty 
+             Date: Mon, 13 Jul 1998 15:49:00 -0400 (EDT)
+             Message-Id: 
+             Subject: Re: [PATCH] 5.004_73: Re: Configure/trnl craziness
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
+[  1472] By: gsar                                  on 1998/07/14  03:50:18
+        Log: From: Dominic Dunlop 
+             Date: Mon, 13 Jul 1998 15:55:09 +0100 (WET DST)
+             Message-Id: <199807131455.PAA23621@ppp52.vo.lu>
+             Subject: Not OK: perl 5.00473 on powerpc-machten 4.1 [PATCH 5.004_73]
+     Branch: perl
+           ! hints/machten.sh
+____________________________________________________________________________
+[  1471] By: gsar                                  on 1998/07/14  03:49:07
+        Log: From: Dan Sugalski 
+             Message-Id: <3.0.5.32.19980713123005.00b6be50@ous.edu>
+             Date: Mon, 13 Jul 1998 12:30:05 -0700
+             Subject: [PATCH 5.004_73] Add Data::Dumper and re modules to VMS config stuff
+     Branch: perl
+           ! configure.com vms/descrip_mms.template
+____________________________________________________________________________
+[  1470] By: gsar                                  on 1998/07/14  03:40:14
+        Log: consistently refer to functions as C
+             From: abigail@fnx.com
+             Date: Mon, 13 Jul 1998 03:04:24 -0400 (EDT)
+             Message-ID: <19980713070424.19841.qmail@betelgeuse.wayne.fnx.com>
+             Subject: Re: [PATCH 5.004_71] pod/perlfunc.pod
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1469] By: gsar                                  on 1998/07/14  03:35:06
+        Log: From: Tom Hughes 
+             Date: 13 Jul 1998 09:34:16 +0100
+             Message-ID: 
+             Subject: [PATCH 5.004_72] Fix d_Gconvert definition in hints/svr4.sh
+     Branch: perl
+           ! hints/svr4.sh
+____________________________________________________________________________
+[  1468] By: gsar                                  on 1998/07/14  03:34:03
+        Log: From: andreas.koenig@kulturbox.de (Andreas J. Koenig)
+             Date: 13 Jul 1998 11:16:27 +0200
+             Message-ID: 
+             Subject: Parallel Makefiles
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  1467] By: gsar                                  on 1998/07/14  03:31:39
+        Log: From: Ilya Zakharevich 
+             Date: Mon, 13 Jul 1998 00:12:19 -0400 (EDT)
+             Message-Id: <199807130412.AAA27128@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_72] t/io/pipe.t - completely broken?
+     Branch: perl
+           ! t/io/pipe.t
+____________________________________________________________________________
+[  1466] By: gsar                                  on 1998/07/14  03:29:25
+        Log: minor tweaks to perldelta and README.win32
+     Branch: perl
+           ! Changes README.win32 pod/perldelta.pod
+____________________________________________________________________________
+[  1465] By: TimBunce                              on 1998/07/13  21:33:45
+        Log: Assorted patches:
+             
+             Title:  "Fix string substitution returncode problem"
+             From:  Dominic Dunlop , Gurusamy Sarathy 
+             Msg-ID:  <199805271236.IAA28213@aatma.engin.umich.edu>,
+             
+             Files:  pp_hot.c
+             
+             Title:  "umask EXPR is fatal only if (EXPR & 0700) > 0"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807111656.MAA03310@aatma.engin.umich.edu>
+             Files:  pod/perldiag.pod pp_sys.c
+             
+             Title:  "Remove reference to qsort from perlfunc.pod"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807111923.PAA05124@aatma.engin.umich.edu>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Deprecate AvFILL in favor of av_len()"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807111945.PAA05489@aatma.engin.umich.edu>
+             Files:  pod/perlguts.pod
+             
+             Title:  "Further clarify effects of using quotes with m operator"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199806201921.PAA03829@aatma.engin.umich.edu>
+             Files:  pod/perlop.pod
+             
+             Title:  "Add PERL_DESTRUCT_LEVEL=2 to test suite"
+             From:  Tim Bunce
+             Files:  t/TEST t/op/local.t t/op/pat.t t/op/regexp.t t/op/substr.t t/op/vec.t
+     Branch: maint-5.004/perl
+	   ! pod/perldiag.pod pod/perlfunc.pod pod/perlguts.pod
+	   ! pod/perlop.pod pp_hot.c pp_sys.c t/TEST t/op/local.t
+           ! t/op/pat.t t/op/regexp.t t/op/substr.t t/op/vec.t toke.c
+
+----------------
+Version 5.004_73
+----------------
+
+____________________________________________________________________________
+[  1464] By: gsar                                  on 1998/07/13  04:41:07
+        Log: up patchlevel to 73, update Changes &c.
+     Branch: perl
+	   ! Changes patchlevel.h pod/perlhist.pod t/op/array.t
+	   ! win32/Makefile win32/config_H.bc win32/config_H.gc
+           ! win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1463] By: gsar                                  on 1998/07/13  02:58:51
+        Log: avoid empty rm -f in MM_Unix.pm
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  1462] By: gsar                                  on 1998/07/13  02:54:52
+        Log: update perldelta
+     Branch: perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  1461] By: gsar                                  on 1998/07/13  02:44:30
+        Log: added patch, tweaked PERL_OBJECT things
+             From:    Graham Barr 
+             Date:    Sun, 12 Jul 1998 19:57:47 CDT
+             Message-Id: <19980712195747.C493@pobox.com>
+             Subject: [ PATCH perl5.004_72] patch to add qr//
+     Branch: perl
+	   ! dump.c embed.h ext/Opcode/Opcode.pm global.sym globals.c
+	   ! keywords.h keywords.pl op.c op.h opcode.h opcode.pl
+	   ! pod/perlfunc.pod pp.c pp_hot.c pp_proto.h proto.h regcomp.c
+           ! regexp.h sv.c t/op/pat.t toke.c
+____________________________________________________________________________
+[  1460] By: gsar                                  on 1998/07/13  01:25:07
+        Log: add a few more PURIFY guards
+     Branch: perl
+           ! av.c sv.c
+____________________________________________________________________________
+[  1459] By: gsar                                  on 1998/07/12  23:38:31
+        Log: add tests for change#1458 and then some
+     Branch: perl
+           ! t/op/array.t
+____________________________________________________________________________
+[  1458] By: gsar                                  on 1998/07/12  22:42:47
+        Log: apply patch for smarter AASSIGN_COMMON detection; regen headers
+             From:    Stephen McCamant 
+             Date:    Sun, 12 Jul 1998 17:17:00 CDT
+             Message-Id: <13737.12300.950886.821143@alias-2.pr.mcs.net>
+             Subject: [PATCH] @a=@a=qw(1) not working, both 5.004_04 and 5.004_71
+     Branch: perl
+           ! op.c opcode.h opcode.pl
+____________________________________________________________________________
+[  1457] By: gsar                                  on 1998/07/12  22:06:05
+        Log: small tweaks from Jarkko Hietaniemi 
+     Branch: perl
+           ! Configure Makefile.SH ext/Socket/Socket.xs perl.c
+____________________________________________________________________________
+[  1456] By: gsar                                  on 1998/07/12  21:56:39
+        Log: From: Doug MacEachern 
+             Date: Sun, 12 Jul 1998 14:29:29 -0400
+             Message-Id: <199807121829.OAA00525@postman.opengroup.org>
+             Subject: [PATCH 5.004_72] Embed.pm support for PERL_OBJECT
+     Branch: perl
+           ! lib/ExtUtils/Embed.pm
+____________________________________________________________________________
+[  1455] By: gsar                                  on 1998/07/12  21:54:02
+        Log: applied installperl patch, corrected other little nits
+             From: andreas.koenig@kulturbox.de (Andreas J. Koenig)
+             Date: 12 Jul 1998 16:27:21 +0200
+             Message-ID: 
+             Subject: [5.004_72] installperl tweak
+     Branch: perl
+           ! Changes Configure README.win32 installperl win32/makefile.mk
+____________________________________________________________________________
+[  1454] By: gsar                                  on 1998/07/12  10:14:24
+        Log: update MANIFEST, Changes
+     Branch: perl
+           - lib/Bundle/CPAN.pm
+           ! Changes MANIFEST
+
+----------------
+Version 5.004_72
+----------------
+
+____________________________________________________________________________
+[  1453] By: gsar                                  on 1998/07/12  10:04:33
+        Log: merge changes 1424, 1428 from maintbranch
+     Branch: perl
+           ! Porting/makerel ext/re/re.pm lib/Sys/Syslog.pm
+____________________________________________________________________________
+[  1452] By: gsar                                  on 1998/07/12  09:46:40
+        Log: patchlevel up to 72, update Changes, minor tweaks to win32/config*
+             and README.win32
+     Branch: perl
+	   ! Changes README.win32 patchlevel.h win32/Makefile
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1451] By: gsar                                  on 1998/07/12  07:01:26
+        Log: generic Configure mods and HAS_GROUP additions to help MiNT/MPEix/MVS
+             From: Jarkko Hietaniemi 
+             Date: Sat, 11 Jul 1998 17:51:07 +0300 (EET DST)
+             Message-Id: <199807111451.RAA27010@alpha.hut.fi>
+             Subject: M3 "generic" parts
+     Branch: perl
+	   ! Configure Makefile.SH config_h.SH ext/POSIX/POSIX.xs
+	   ! ext/SDBM_File/sdbm/sdbm.h lib/ExtUtils/MM_Unix.pm
+	   ! makedepend.SH mv-if-diff perl.h plan9/plan9ish.h pp_sys.c
+	   ! unixish.h vms/subconfigure.com vms/vmsish.h win32/config_H.bc
+           ! win32/config_H.gc x2p/Makefile.SH
+____________________________________________________________________________
+[  1450] By: gsar                                  on 1998/07/12  06:38:27
+        Log: various tweaks for PERL_OBJECT build & test
+     Branch: perl
+	   ! globals.c iperlsys.h win32/GenCAPI.pl win32/Makefile
+           ! win32/makefile.mk win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[  1449] By: gsar                                  on 1998/07/12  06:29:23
+        Log: From:    andreas.koenig@kulturbox.de (Andreas J. Koenig)
+             Date:    12 Jul 1998 08:22:16 +0200
+             Message-Id: 
+             Subject: [5.004_71] Patch: let CPAN.pm work with threaded perl
+     Branch: perl
+           ! lib/CPAN.pm lib/SelfLoader.pm
+____________________________________________________________________________
+[  1448] By: gsar                                  on 1998/07/12  05:10:50
+        Log: make RE engine threadsafe; -Dusethreads builds, tests on Solaris,
+             and runs regexes in 1000s of threads without crashing; also fixed
+             statcache not being thread-local
+     Branch: perl
+	   ! embed.h embedvar.h ext/Thread/Thread.xs ext/re/re.xs
+	   ! intrpvar.h op.c perl.c pp_ctl.c regcomp.c regexec.c sv.c
+           ! t/lib/thread.t thrdvar.h util.c
+____________________________________________________________________________
+[  1447] By: gsar                                  on 1998/07/12  02:40:45
+        Log: From:    Hugo van der Sanden 
+             Date:    Sun, 12 Jul 1998 03:23:04 +0200
+             Message-Id: 
+             Subject: Re: perlbug doesn't check that save succeeded
+     Branch: perl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  1446] By: gsar                                  on 1998/07/12  02:39:24
+        Log: be generous about CRs
+             From:    larry@wall.org (Larry Wall)
+             Date:    Sat, 11 Jul 1998 17:54:21 PDT
+             Message-Id: <199807120054.RAA19550@wall.org>
+             Subject: [PATCH _71] CRs et al 
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[  1445] By: gsar                                  on 1998/07/12  02:11:16
+        Log: fix pp_caller() to fully traverse stacklevels
+     Branch: perl
+           ! objpp.h pp_ctl.c proto.h t/op/runlevel.t
+____________________________________________________________________________
+[  1444] By: gsar                                  on 1998/07/11  23:43:37
+        Log: add patch, along with all the missing bits, and doc tweaks
+             From: Ilya Zakharevich 
+             Date: Thu, 9 Jul 1998 18:47:25 -0400 (EDT)
+             Message-Id: <199807092247.SAA06314@monk.mps.ohio-state.edu>
+             Subject: Re: [PATCH 5.004_71] Secure RE update
+     Branch: perl
+	   ! ObjXSub.h embed.h embedvar.h ext/Opcode/Opcode.pm ext/re/re.pm
+	   ! global.sym globals.c interp.sym intrpvar.h op.c opcode.h
+	   ! opcode.pl pp_ctl.c pp_proto.h regcomp.c sv.c t/op/misc.t
+           ! t/op/pat.t t/op/subst.t
+____________________________________________________________________________
+[  1443] By: gsar                                  on 1998/07/11  23:08:14
+        Log: tweak to get BSDI to build IPC/SysV
+             From: Jarkko Hietaniemi 
+             Date: 11 Jul 1998 16:26:44 +0300
+             Message-ID: 
+             Subject: Re: NOT OK: perl5.004_71 on BSDI 3.1
+     Branch: perl
+           ! ext/IPC/SysV/SysV.xs
+____________________________________________________________________________
+[  1442] By: gsar                                  on 1998/07/11  23:03:39
+        Log: fix closures in optimized C (only the tests are in this
+             change, the pp_hot.c fix accidentally went in change#1441)
+     Branch: perl
+           ! t/op/closure.t
+____________________________________________________________________________
+[  1441] By: gsar                                  on 1998/07/11  22:35:40
+        Log: From: Ilya Zakharevich 
+             Date: Sat, 11 Jul 1998 18:21:21 -0400 (EDT)
+             Message-Id: <199807112221.SAA03221@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_71] Update os2's OS2::Process
+     Branch: perl
+	   ! os2/OS2/Process/Makefile.PL os2/OS2/Process/Process.pm
+           ! os2/OS2/Process/Process.xs pp_hot.c
+____________________________________________________________________________
+[  1440] By: gsar                                  on 1998/07/11  19:41:59
+        Log: From: andreas.koenig@kulturbox.de (Andreas J. Koenig)
+             Date: 11 Jul 1998 17:00:21 +0200
+             Message-ID: 
+             Subject: [perl5.004_71] Patch: change MakeMaker default compress --> gzip
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1439] By: gsar                                  on 1998/07/11  19:36:58
+        Log: export newRV_noinc on win32, deprecate AvFILL in favor of av_len()
+     Branch: perl
+           ! pod/perlguts.pod win32/makedef.pl
+____________________________________________________________________________
+[  1438] By: gsar                                  on 1998/07/11  19:14:21
+        Log: applied patch for perlfunc tweaks, removed reference to system qsort()
+             From: abigail@fnx.com
+             Date: Sat, 11 Jul 1998 04:20:54 -0400 (EDT)
+             Message-ID: <19980711082054.2184.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.004_71] pod/perlfunc.pod
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1437] By: gsar                                  on 1998/07/11  19:05:00
+        Log: From: abigail@fnx.com
+             Date: Sat, 11 Jul 1998 04:09:57 -0400 (EDT)
+             Message-ID: <19980711080957.2106.qmail@betelgeuse.wayne.fnx.com>
+             Subject: [PATCH 5.004_71] pod/pod2man.PL
+     Branch: perl
+           ! pod/pod2man.PL
+____________________________________________________________________________
+[  1436] By: gsar                                  on 1998/07/11  18:58:03
+        Log: more complete version of change#1421
+             From: Stephen McCamant 
+             Date: Fri, 10 Jul 1998 23:46:46 -0500 (CDT)
+             Message-ID: <13734.58994.735473.859218@alias-2.pr.mcs.net>
+             Subject: [PATCH] Re: B::Deparse for(1..100000)
+     Branch: perl
+           ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[  1435] By: gsar                                  on 1998/07/11  18:54:42
+        Log: win32 fixes for VC 6.0 nits
+     Branch: perl
+	   ! ext/Data/Dumper/Dumper.xs win32/Makefile win32/makefile.mk
+           ! win32/win32.h
+____________________________________________________________________________
+[  1434] By: gsar                                  on 1998/07/11  18:45:32
+        Log: s/AVHV/pseudo-hash/ (via PM)
+             From: Gisle Aas 
+             Date: 11 Jul 1998 00:16:53 +0200
+             Message-ID: 
+             Subject: [PATCH] trivial fields.pm doc patch
+     Branch: perl
+           ! lib/fields.pm
+____________________________________________________________________________
+[  1433] By: gsar                                  on 1998/07/11  18:43:11
+        Log: From: Laszlo Molnar 
+             Date: Fri, 10 Jul 1998 23:12:11 +0200
+             Message-ID: <19980710231211.A161@cdata.tvnet.hu>
+             Subject: [PATCH _71] dos-djgpp update
+     Branch: perl
+           ! Configure djgpp/config.over djgpp/djgppsed.sh djgpp/fixpmain
+____________________________________________________________________________
+[  1432] By: gsar                                  on 1998/07/11  18:41:00
+        Log: applied patch, reformatted long lines in places
+             From: Dominic Dunlop 
+             Date: Fri, 10 Jul 1998 23:11:30 +0000
+             Message-Id: 
+             Subject: [PATCH 5.004_71] Re: Document "count exceeded" regular expression
+             warning
+     Branch: perl
+           ! pod/perldiag.pod regexec.c
+____________________________________________________________________________
+[  1431] By: gsar                                  on 1998/07/11  18:29:18
+        Log: From: "John L. Allen" 
+             Date: Fri, 10 Jul 1998 13:57:01 -0400 (EDT)
+             Message-ID: 
+             Subject: [PATCH]: _71 & _04 - Make AIX hints preserve ccflags as per docs
+     Branch: perl
+           ! hints/aix.sh
+____________________________________________________________________________
+[  1430] By: TimBunce                              on 1998/07/11  18:15:09
+        Log: Title:  "Fix string substitution returncode problem"
+             From:  Dominic Dunlop , Gurusamy Sarathy 
+             Msg-ID:  <199805271236.IAA28213@aatma.engin.umich.edu>,
+             
+             Files:  pp_hot.c
+     Branch: maint-5.004/perl
+           ! pp_hot.c
+____________________________________________________________________________
+[  1429] By: gsar                                  on 1998/07/11  18:07:52
+        Log: applied patch, tweaked doc and code that does labels/indentation
+             From: Ilya Zakharevich 
+             Date: Thu, 9 Jul 1998 21:39:40 -0400 (EDT)
+             Message-Id: <199807100139.VAA08617@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_71] perldebug.pod and RE
+     Branch: perl
+           ! pod/perldebug.pod regcomp.c regexec.c
+____________________________________________________________________________
+[  1428] By: TimBunce                              on 1998/07/11  17:45:56
+        Log: Assorted patches:
+             
+             Title:  "makerel now reads local patch list from patchlevel.h"
+             Files:  patchlevel.h Porting/makerel
+             
+             Title:  "pod/pod2man.PL"
+             From:  abigail@fnx.com
+             Msg-ID:  <19980711080957.2106.qmail@betelgeuse.wayne.fnx.com>
+             Files:  pod/pod2man.PL
+             
+             Title:  "Clarify taint example in re.pm"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  lib/re.pm
+             
+             Title:  "Anohter ptags improvement"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199807070059.UAA28815@monk.mps.ohio-state.edu>
+             Files:  emacs/ptags
+             
+             Title:  "_71 & _04 - Make AIX hints preserve ccflags as per docs"
+             From:  "John L. Allen" 
+             Msg-ID:  
+             Files:  hints/aix.sh
+     Branch: maint-5.004/perl
+	   ! Porting/makerel emacs/ptags hints/aix.sh lib/re.pm
+           ! patchlevel.h pod/pod2man.PL
+____________________________________________________________________________
+[  1427] By: gsar                                  on 1998/07/11  17:04:47
+        Log: make Liblist return consistently backslashed paths
+     Branch: perl
+           ! lib/ExtUtils/Liblist.pm
+____________________________________________________________________________
+[  1426] By: gsar                                  on 1998/07/11  16:53:56
+        Log: don't 'touch a2p.c', it might readonly (via PM)
+             From: Robin Barker 
+             Date: Fri, 10 Jul 98 17:19:54 BST
+             Message-Id: <20430.9807101619@tempest.cise.npl.co.uk>
+     Branch: perl
+           ! x2p/Makefile.SH
+____________________________________________________________________________
+[  1425] By: TimBunce                              on 1998/07/11  16:42:26
+        Log: Title:  "Add newCONSTSUB (from 5.005_70)"
+             Files:  embed.h proto.h global.sym op.c
+     Branch: maint-5.004/perl
+           ! embed.h global.sym op.c proto.h
+____________________________________________________________________________
+[  1424] By: TimBunce                              on 1998/07/11  16:20:21
+        Log: Title:  "Assorted fixes for Sys::Syslog.pm"
+             From:  "M.J.T. Guy" , Sean Robinson
+             , Tim.Bunce@ig.co.uk
+             Msg-ID:  <01IXGLISWJ7Q0001B6@sc.maricopa.edu>,
+             <199805270939.KAA08453@toad.ig.co.uk>,
+             
+             Files:  lib/Sys/Syslog.pm
+     Branch: maint-5.004/perl
+           ! lib/Sys/Syslog.pm
+____________________________________________________________________________
+[  1423] By: TimBunce                              on 1998/07/11  15:53:37
+        Log: Assorted patches:
+             
+             Title:  "umask: die if EXPR & 0700 else return undef"
+             From:  Chip Salzenberg , Jarkko Hietaniemi ,
+             Jarkko Hietaniemi , Malcolm Beattie
+             , Tim.Bunce@ig.co.uk (Tim Bunce),
+             kstar@chapin.ed, kstar@chapin.edu@ig.co.uk ()
+             Msg-ID:  <199805291520.QAA01615@sable.ox.ac.uk>,
+             <199805291549.SAA01439@alpha.hut.fi>,
+             <199805291608.RAA29283@toad.ig.co.uk>,
+             <19980530105129.A24006@O2.chapin.edu>,
+             <19980608133037.A8793@perlsupport.com>
+             Files:  pod/perldiag.pod pod/perlfunc.pod pp_sys.c
+             
+             Title:  "File name DynaLoader.pm.PL is 8.3 unfriendly"
+             From:  Laszlo Molnar 
+             Msg-ID:  <19980610005417.G162@cdata.tvnet.hu>
+             Files:  MANIFEST ext/DynaLoader/Makefile.PL
+     Branch: maint-5.004/perl
+          +> ext/DynaLoader/DynaLoader_pm.PL
+           - ext/DynaLoader/DynaLoader.pm.PL
+	   ! MANIFEST ext/DynaLoader/Makefile.PL pod/perldiag.pod
+           ! pod/perlfunc.pod pp_sys.c
+____________________________________________________________________________
+[  1421] By: gsar                                  on 1998/07/11  02:54:02
+        Log: From: Gisle Aas 
+             Subject: [PATCH] B::Deparse for(1..100000)
+             Date: 10 Jul 1998 14:04:44 +0200
+             Message-ID: 
+     Branch: perl
+           ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[  1420] By: gsar                                  on 1998/07/11  02:28:18
+        Log: add 'clean' target for ext/re
+     Branch: perl
+           ! ext/re/Makefile.PL
+____________________________________________________________________________
+[  1419] By: gsar                                  on 1998/07/11  02:20:32
+        Log: From: Tom Hughes 
+             Date: 10 Jul 1998 10:25:18 +0100
+             Message-ID: 
+             Subject: [5.004_71] Patch: svr4 hints updates for Unixware
+     Branch: perl
+           ! hints/svr4.sh
+____________________________________________________________________________
+[  1418] By: gsar                                  on 1998/07/11  02:19:12
+        Log: move op/ipc{msg,sem}.t into lib/ipc_sysv.t
+             From: Jarkko Hietaniemi 
+             Date: Fri, 10 Jul 1998 13:08:08 +0300 (EET DST)
+             Message-Id: <199807101008.NAA10817@alpha.hut.fi>
+             Subject: Re: make minitest does not work out of the box - test subset
+             needs pruning
+     Branch: perl
+           + t/lib/ipc_sysv.t
+           - t/op/ipcmsg.t t/op/ipcsem.t
+           ! MANIFEST
+____________________________________________________________________________
+[  1417] By: gsar                                  on 1998/07/11  02:14:16
+        Log: disable CR croaking (via #define, default off) in lieu of more
+             complete fix
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[  1416] By: gsar                                  on 1998/07/11  02:06:11
+        Log: added patch, made linking with setargv a build option
+             From: "Douglas Lankshear" 
+             Date: Thu, 9 Jul 1998 09:51:42 -0700
+             Message-ID: <000101bdab59$d9602dc0$a32fa8c0@tau.Active>
+             Subject: [PATCH 5.004_71]
+     Branch: perl
+           ! perl.c pp_sys.c win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1415] By: gsar                                  on 1998/07/11  01:47:19
+        Log: From: Tom Hughes 
+             Date: 10 Jul 1998 09:01:12 +0100
+             Message-ID: 
+             Subject: [5.004_71] Patch: Fix perl_exp.SH for Unixware
+     Branch: perl
+           ! perl_exp.SH
+____________________________________________________________________________
+[  1414] By: gsar                                  on 1998/07/11  01:45:45
+        Log: make lib/re.pm a prereq for minitest
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1413] By: gsar                                  on 1998/07/11  01:40:56
+        Log: add patch (via PM)
+             From: Stephen McCamant 
+             Date: Fri, 10 Jul 1998 01:14:11 -0500 (CDT)
+             Message-ID: <13733.45251.47363.431138@alias-2.pr.mcs.net>
+             Subject: Big B::Deparse update
+     Branch: perl
+           ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[  1412] By: gsar                                  on 1998/07/11  00:25:17
+        Log: add perlport.pod v1.23 from Chris Nandor 
+     Branch: perl
+           + pod/perlport.pod
+           ! pod/perl.pod
+____________________________________________________________________________
+[  1411] By: gsar                                  on 1998/07/10  21:53:06
+        Log: make binmode(STDIN) not whine
+             From: Dan Sugalski 
+             Date: Thu, 09 Jul 1998 16:51:27 -0700
+             Message-Id: <3.0.5.32.19980709165127.00a692e0@ous.edu>
+             Subject: [PATCH 5.004_70] Fix up binmode() for VMS
+     Branch: perl
+           ! vms/vms.c
+____________________________________________________________________________
+[  1410] By: gsar                                  on 1998/07/10  21:50:57
+        Log: CPAN-1.39 update
+             From: koenig@kulturbox.de (Andreas J. Koenig)
+             Date: 10 Jul 1998 00:45:36 +0200
+             Message-ID: 
+             Subject: Re: perl5.004_71 hit the stands this morn
+     Branch: perl
+           ! MANIFEST lib/CPAN.pm lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm
+____________________________________________________________________________
+[  1409] By: gsar                                  on 1998/07/10  21:45:10
+        Log: manually apply patch with conflicts
+             From: Dan Sugalski 
+             Date: Thu, 09 Jul 1998 12:08:33 -0700
+             Message-Id: <3.0.5.32.19980709120833.009eb100@ous.edu>
+             Subject: [PATCH 5.004_70] Updated duble-quotes in config.h/config.pm patch
+     Branch: perl
+           ! configpm
+____________________________________________________________________________
+[  1408] By: gsar                                  on 1998/07/10  21:36:54
+        Log: From: Andy Dougherty 
+             Date: Thu, 9 Jul 1998 11:58:30 -0400 (EDT)
+             Message-Id: 
+             Subject: Re: perldelta.pod [PATCH]
+     Branch: perl
+           ! pod/perldelta.pod
+____________________________________________________________________________
+[  1407] By: gsar                                  on 1998/07/10  21:35:13
+        Log: From: Andy Dougherty 
+             Date: Thu, 9 Jul 1998 11:26:03 -0400 (EDT)
+             Subject: [PATCH 5.004_71] Allow static build of IPC::SysV
+             Message-Id: 
+     Branch: perl
+           ! ext/IPC/SysV/Makefile.PL
+____________________________________________________________________________
+[  1406] By: gsar                                  on 1998/07/10  21:33:30
+        Log: manually apply patch with conflicts
+             From: kstar@chapin.edu
+             Message-ID: <19980709093621.B7857@O2.chapin.edu>
+             Date: Thu, 9 Jul 1998 09:36:21 -0400
+             Subject: Re: [PATCH] 5.004_70 installperl and docs
+     Branch: perl
+           ! installperl
+____________________________________________________________________________
+[  1405] By: gsar                                  on 1998/07/10  21:28:29
+        Log: misc tweaks to docs and qsortsv() warning
+     Branch: perl
+           ! Changes pod/perldelta.pod pod/perlsub.pod pp_ctl.c
+____________________________________________________________________________
+[  1404] By: gsar                                  on 1998/07/10  21:23:53
+        Log: add more correct version of change#1350 (as yet untested)
+             From: joshua.pritikin@db.com
+             Date: Thu, 9 Jul 1998 09:22:46 -0400
+             Message-Id: 
+             Subject: Re: [PATCH _70] cache missing methods
+     Branch: perl
+           ! embedvar.h gv.c interp.sym intrpvar.h perlvars.h
+____________________________________________________________________________
+[  1403] By: gsar                                  on 1998/07/10  20:46:12
+        Log: add win32_rename() that does what docs say
+     Branch: perl
+	   ! win32/GenCAPI.pl win32/makedef.pl win32/perlhost.h
+           ! win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[  1402] By: gsar                                  on 1998/07/10  20:19:18
+        Log: inet_aton() should do DNS lookup only if arg isn't a dotted-quad
+             (suggested by Philippe.Simonet@swisscom.com)
+     Branch: perl
+           ! ext/Socket/Socket.xs
+____________________________________________________________________________
+[  1401] By: gsar                                  on 1998/07/10  03:24:45
+        Log: undo change#1379 (order of tests *is* significant)
+     Branch: perl
+           ! t/lib/posix.t
+____________________________________________________________________________
+[  1400] By: nick                                  on 1998/07/09  17:43:14
+        Log: Integrate mainline (_071-ish)
+     Branch: ansiperl
+	  +> ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm
+	  +> ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Makefile.PL
+	  +> ext/Data/Dumper/Todo ext/IPC/SysV/ChangeLog
+	  +> ext/IPC/SysV/MANIFEST ext/IPC/SysV/Makefile.PL
+	  +> ext/IPC/SysV/Msg.pm ext/IPC/SysV/README
+	  +> ext/IPC/SysV/Semaphore.pm ext/IPC/SysV/SysV.pm
+	  +> ext/IPC/SysV/SysV.xs ext/IPC/SysV/t/msg.t ext/IPC/SysV/t/sem.t
+	  +> ext/re/Makefile.PL ext/re/re.pm ext/re/re.xs pp_proto.h
+          +> t/io/iprefix.t t/lib/dumper-ovl.t t/lib/dumper.t
+          !> (integrate 145 files)
+
+----------------
+Version 5.004_71
+----------------
+
+____________________________________________________________________________
+[  1399] By: gsar                                  on 1998/07/09  12:15:12
+        Log: update Changes, perlhist.pod, beginnings of perldelta.pod
+     Branch: perl
+           ! Changes pod/perldelta.pod pod/perlhist.pod
+____________________________________________________________________________
+[  1397] By: gsar                                  on 1998/07/09  08:35:39
+        Log: merge changes from maintbranch (1354, and relevant part of 1356); all
+             maintenance changes upto 1356 merged
+     Branch: perl
+           ! pod/perldiag.pod pp_hot.c t/op/misc.t
+____________________________________________________________________________
+[  1396] By: gsar                                  on 1998/07/09  08:02:52
+        Log: add Data-Dumper, up patchlevel to 71, various misc tweaks to
+             make all configs build on Solaris and win32
+     Branch: perl
+	   + ext/Data/Dumper/Changes ext/Data/Dumper/Dumper.pm
+	   + ext/Data/Dumper/Dumper.xs ext/Data/Dumper/Makefile.PL
+           + ext/Data/Dumper/Todo t/lib/dumper-ovl.t t/lib/dumper.t
+	   ! MANIFEST Todo patchlevel.h win32/Makefile win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1395] By: gsar                                  on 1998/07/09  05:39:48
+        Log: From:    Stephen McCamant 
+             Date:    Wed, 08 Jul 1998 23:16:49 CDT
+             Message-Id: <13732.16626.904108.608743@alias-2.pr.mcs.net>
+             Subject: [PATCH] UNOP opclass test in B.xs
+     Branch: perl
+           ! ext/B/B.xs
+____________________________________________________________________________
+[  1394] By: gsar                                  on 1998/07/09  05:37:48
+        Log: get it building again on win32
+     Branch: perl
+	   ! bytecode.h embed.h ext/re/Makefile.PL global.sym intrpvar.h
+	   ! op.c opcode.pl perl.h pp.c pp_ctl.c pp_hot.c pp_proto.h
+	   ! pp_sys.c proto.h win32/Makefile win32/makedef.pl
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1393] By: gsar                                  on 1998/07/09  05:20:31
+        Log: applied patch from Ilya, tweaked some to get clean static build of
+             the ext/re stuff (untested on win32)
+     Branch: perl
+           ! regcomp.c regexec.c
+____________________________________________________________________________
+[  1392] By: gsar                                  on 1998/07/09  03:56:45
+        Log: fix installperl typo
+             From:    kstar@chapin.edu
+             Date:    Wed, 08 Jul 1998 23:51:57 EDT
+             Message-Id: <19980708235157.D1380@O2.chapin.edu>
+             Subject: Re: [PATCH] 5.004_70 installperl and docs
+     Branch: perl
+           ! installperl
+____________________________________________________________________________
+[  1391] By: gsar                                  on 1998/07/09  01:48:16
+        Log: From: Chip Salzenberg 
+             Date: Wed, 8 Jul 1998 18:10:55 -0400
+             Message-ID: <19980708181055.A8005@perlsupport.com>
+             Subject: [PATCH _70] Allow $SIG{CHLD}='IGNORE' to work on Solaris
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[  1390] By: gsar                                  on 1998/07/09  01:45:16
+        Log: added patch, tweaked per Ilya's suggestion
+             From: "M.J.T. Guy" 
+             Date: Wed, 8 Jul 1998 13:34:42 +0100
+             Message-Id: 
+             Subject: [PATCH] perl5db.pl complains about non-integer condition
+     Branch: perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[  1389] By: gsar                                  on 1998/07/09  01:42:13
+        Log: reenable misaligned memory checks, cast to UV & check alignment
+             From: Dominic Dunlop 
+             Date: Wed, 8 Jul 1998 11:21:48 +0000
+             Message-Id: 
+             Subject: Re: [PATCH 5.00469] corrupt malloc ptr on NeXT
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[  1388] By: gsar                                  on 1998/07/09  01:36:22
+        Log: From: Andy Dougherty 
+             Date: Wed, 8 Jul 1998 13:32:07 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.004_70] more on finding metaconfig units.
+     Branch: perl
+           ! Porting/pumpkin.pod
+____________________________________________________________________________
+[  1387] By: gsar                                  on 1998/07/09  01:35:23
+        Log: From: Andy Dougherty 
+             Date: Wed, 8 Jul 1998 13:29:34 -0400 (EDT)
+             Message-Id: 
+             Subject: Configure indentation patch
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
+[  1386] By: gsar                                  on 1998/07/09  01:33:31
+        Log: don't try to hardlink perldiag.pod; that is no longer not needed
+             From: Andy Dougherty 
+             Date: Wed, 8 Jul 1998 12:18:32 -0400 (EDT)
+             Message-Id: 
+             Subject: Re: pelr installation attempts hard links between file systems
+     Branch: perl
+           ! installperl
+____________________________________________________________________________
+[  1385] By: gsar                                  on 1998/07/09  01:28:05
+        Log: win32/makefile.mk =~ s|gcc -pipe|gcc|
+     Branch: perl
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1384] By: gsar                                  on 1998/07/09  01:26:19
+        Log: make t/TEST run 'perl $switches ./foo/test.t' everywhere
+     Branch: perl
+           ! t/TEST
+____________________________________________________________________________
+[  1383] By: gsar                                  on 1998/07/09  01:06:47
+        Log: manually apply patch with a dependency on unapplied patch
+             From: Ilya Zakharevich 
+             Date: Wed, 8 Jul 1998 07:03:51 -0400 (EDT)
+             Message-Id: <199807081103.HAA25145@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_70] make quoted RE embeddable
+     Branch: perl
+           ! sv.c t/op/pat.t
+____________________________________________________________________________
+[  1382] By: gsar                                  on 1998/07/09  01:02:23
+        Log: change order of libs for extensions
+             From: Laszlo Molnar 
+             Date: Tue, 7 Jul 1998 23:48:05 +0200
+             Message-ID: <19980707234805.C180@cdata.tvnet.hu>
+             Subject: [PATCH _70] linking problem with modules
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  1381] By: gsar                                  on 1998/07/09  00:56:12
+        Log: patch for more flexible initialization of xsub parameters
+             From: Tye McQueen 
+             Date: Mon, 6 Jul 1998 19:04:27 -0500 (CDT)
+             Message-Id: <199807070004.AA16454@metronet.com>
+             Subject: Enhanced arg inits for xsubpp
+     Branch: perl
+           ! lib/ExtUtils/xsubpp pod/perlxs.pod
+____________________________________________________________________________
+[  1380] By: gsar                                  on 1998/07/09  00:44:01
+        Log: From: Tye McQueen 
+             Date: Mon, 6 Jul 1998 17:34:54 -0500 (CDT)
+             Message-Id: <16619-17073@lyris.activestate.com>
+             Subject: New pl2bat.pl
+     Branch: perl
+           ! win32/bin/pl2bat.pl
+____________________________________________________________________________
+[  1379] By: gsar                                  on 1998/07/09  00:30:58
+        Log: remove ordering dependency in posix.t
+     Branch: perl
+           ! t/lib/posix.t
+____________________________________________________________________________
+[  1378] By: gsar                                  on 1998/07/08  20:17:43
+        Log: make -i'*suffix' work too
+     Branch: perl
+           ! doio.c
+____________________________________________________________________________
+[  1377] By: gsar                                  on 1998/07/08  08:56:28
+        Log: regen headers; result builds & tests on Solaris again (threaded)
+     Branch: perl
+           ! embedvar.h
+____________________________________________________________________________
+[  1376] By: gsar                                  on 1998/07/08  08:55:03
+        Log: change#1350 breaks things, back it out
+     Branch: perl
+           ! embedvar.h gv.c interp.sym intrpvar.h perlvars.h
+____________________________________________________________________________
+[  1375] By: gsar                                  on 1998/07/08  07:47:00
+        Log: From: Ilya Zakharevich 
+             Date: Wed, 8 Jul 1998 01:30:15 -0400 (EDT)
+             Message-Id: <199807080530.BAA14072@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_70] Switch modifiers in RE off
+     Branch: perl
+           ! pod/perlre.pod regcomp.c t/op/re_tests
+____________________________________________________________________________
+[  1374] By: gsar                                  on 1998/07/08  07:41:06
+        Log: From: Gisle Aas 
+             Date: 07 Jul 1998 23:08:59 +0200
+             Message-ID: 
+             Subject: [PATCH] Faster copying from SvIV/SvNVs in sv_setsv()
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1373] By: gsar                                  on 1998/07/08  07:36:01
+        Log: From: Laszlo Molnar 
+             Date: Tue, 7 Jul 1998 23:47:50 +0200
+             Message-ID: <19980707234750.A180@cdata.tvnet.hu>
+             Subject: [PATCH _70] dos-djgpp update
+     Branch: perl
+           ! djgpp/config.over djgpp/djgppsed.sh
+____________________________________________________________________________
+[  1372] By: gsar                                  on 1998/07/08  07:12:47
+        Log: add extension to support SysV IPC
+             From: Jarkko Hietaniemi 
+             Date: Tue, 7 Jul 1998 02:32:53 +0300 (EET DST)
+             Message-Id: <199807062332.CAA25792@alpha.hut.fi>
+             Subject: [PATCH] 5.004_70: IPC::SysV
+     Branch: perl
+	   + ext/IPC/SysV/ChangeLog ext/IPC/SysV/MANIFEST
+	   + ext/IPC/SysV/Makefile.PL ext/IPC/SysV/Msg.pm
+	   + ext/IPC/SysV/README ext/IPC/SysV/Semaphore.pm
+	   + ext/IPC/SysV/SysV.pm ext/IPC/SysV/SysV.xs ext/IPC/SysV/t/msg.t
+           + ext/IPC/SysV/t/sem.t
+	   ! Configure MANIFEST pod/perlfunc.pod pod/perlipc.pod
+           ! t/op/ipcmsg.t t/op/ipcsem.t
+____________________________________________________________________________
+[  1371] By: gsar                                  on 1998/07/08  05:12:07
+        Log: add patch for C
+             From: Ilya Zakharevich 
+             Date: Mon, 6 Jul 1998 22:24:33 -0400 (EDT)
+             Message-Id: <199807070224.WAA10318@monk.mps.ohio-state.edu>
+             Subject: Re: _70 and Devel::RE
+     Branch: perl
+           + ext/re/Makefile.PL ext/re/re.pm ext/re/re.xs
+           - lib/re.pm
+	   ! MANIFEST Makefile.SH global.sym interp.sym intrpvar.h op.c
+           ! perl.h pp.c pp_ctl.c pp_hot.c regcomp.c regexec.c
+____________________________________________________________________________
+[  1370] By: gsar                                  on 1998/07/08  04:27:27
+        Log: added patch to generate PPDEF(pp_foo)
+             From: Ilya Zakharevich 
+             Date: Mon, 6 Jul 1998 20:43:54 -0400 (EDT)
+             Message-Id: <199807070043.UAA28572@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_70] Autogenerate declarations for opcodes
+     Branch: perl
+           + pp_proto.h
+           ! MANIFEST Makefile.SH opcode.pl proto.h
+____________________________________________________________________________
+[  1369] By: gsar                                  on 1998/07/08  04:19:49
+        Log: suggest 'make test' after make
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1368] By: gsar                                  on 1998/07/08  03:58:19
+        Log: added patch for -i'foo*bar', made code somewhat simpler, tweaked doc
+             From: Colin Kuskie 
+             Date: Tue, 7 Jul 1998 09:44:33 -0700 (PDT)
+             Message-ID: 
+             Subject: Corrected -i prefix patch
+     Branch: perl
+           + t/io/iprefix.t
+           ! MANIFEST doio.c pod/perlrun.pod
+____________________________________________________________________________
+[  1366] By: gsar                                  on 1998/07/08  02:28:30
+        Log: From: Gisle Aas 
+             Date: 07 Jul 1998 17:48:36 +0200
+             Message-ID: 
+             Subject: [PATCH] Remove some rendundant SvOOK_on tests
+     Branch: perl
+           ! sv.c sv.h
+____________________________________________________________________________
+[  1365] By: gsar                                  on 1998/07/08  02:25:17
+        Log: applied patch to clarify m//g
+             From: "M.J.T. Guy" 
+             Date: Tue, 7 Jul 1998 15:59:03 +0100
+             Message-Id: 
+             Subject: [PATCH] Re: m//g in perlop.pod
+     Branch: perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[  1364] By: gsar                                  on 1998/07/08  02:13:07
+        Log: From: "M.J.T. Guy" 
+             Subject: [PATCH] 5.004_70 bug in perlfaq.pod
+             Message-Id: 
+             Date: Tue, 7 Jul 1998 11:59:41 +0100
+     Branch: perl
+           ! pod/perlfaq.pod
+____________________________________________________________________________
+[  1363] By: gsar                                  on 1998/07/08  02:11:11
+        Log: applied tweak (via private mail)
+             From: Jarkko Hietaniemi 
+             Date: Tue, 7 Jul 1998 13:27:47 +0300 (EET DST)
+             Message-Id: <199807071027.NAA20829@alpha.hut.fi>
+             Subject: tiny perllocale.pod patch for 5.004_70
+     Branch: perl
+           ! pod/perllocale.pod
+____________________________________________________________________________
+[  1362] By: gsar                                  on 1998/07/08  02:07:48
+        Log: applied patch, various tweaks to pander to pod2man tantrums
+             From: Ilya Zakharevich 
+             Date: Mon, 6 Jul 1998 22:47:30 -0400 (EDT)
+             Message-Id: <199807070247.WAA10677@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_70] CONFIGPM
+     Branch: perl
+           ! Porting/Glossary configpm
+____________________________________________________________________________
+[  1361] By: gsar                                  on 1998/07/07  22:13:11
+        Log: From: Stephen McCamant 
+             Date: Mon,  6 Jul 1998 21:22:17 -0500 (CDT)
+             Message-ID: <13729.33816.311236.995647@alias-2.pr.mcs.net>
+             Subject: Re: Inconsistent arithmetics on refs
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1360] By: gsar                                  on 1998/07/07  22:11:11
+        Log: From: Ilya Zakharevich 
+             Date: Mon, 6 Jul 1998 20:59:10 -0400 (EDT)
+             Message-Id: <199807070059.UAA28815@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_70] Anohter ptags improvement
+     Branch: perl
+           ! emacs/ptags
+____________________________________________________________________________
+[  1359] By: gsar                                  on 1998/07/07  22:08:48
+        Log: fix accidental RE-de-optimization
+             From: larry@wall.org (Larry Wall)
+             Date: Mon, 6 Jul 1998 17:49:31 -0700
+             Message-Id: <199807070049.RAA23475@wall.org>
+             Subject: Re: before you deluge us with patches
+             --
+             From: Ilya Zakharevich 
+             Date: Tue, 7 Jul 1998 03:10:56 -0400 (EDT)
+             Message-Id: <199807070710.DAA25399@monk.mps.ohio-state.edu>
+             Subject: Re: before you deluge us with patches
+     Branch: perl
+           ! pp_hot.c regexec.c
+____________________________________________________________________________
+[  1358] By: gsar                                  on 1998/07/07  21:36:29
+        Log: From: Gisle Aas 
+             Subject: [PATCH] Evaluation of AVHVs in scalar context
+             Date: 06 Jul 1998 21:41:14 +0200
+             Message-ID: 
+     Branch: perl
+           ! pp_hot.c t/op/avhv.t
+____________________________________________________________________________
+[  1357] By: gsar                                  on 1998/07/07  21:29:46
+        Log: doc tweaks suggested by Abigail, M.J.T. Guy, and Larry Wall
+     Branch: perl
+           ! lib/Math/Trig.pm lib/fields.pm thread.sym
+____________________________________________________________________________
+[  1356] By: TimBunce                              on 1998/07/07  17:19:42
+        Log: Assorted patches:
+             
+             ------  BUILD PROCESS  ------
+             
+             Title:  "Add Test.pm (from perl 5.004_70)"
+             Files:  MANIFEST lib/Test.pm
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "Add CR LF CRLF to Socket.pm"
+             From:  Chris Nandor 
+             Msg-ID:  
+             Files:  ext/Socket/Socket.pm
+             
+             ------  LIBRARY  ------
+             
+             Title:  "AutoSplit upgrade (AutoSplit 1.0302 from 5.004_70)"
+             Files:  lib/AutoSplit.pm
+             
+             Title:  "Upgrade base.pm (from perl 5.004_70)"
+             Files:  lib/base.pm
+             
+             Title:  "Add File::Spec modules (from 5.004_70)"
+             Files:  lib/File/Spec.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
+             
+             ------  TESTS  ------
+             
+             Title:  "fixup test for method call on undefined value"
+             Files:  t/op/misc.t
+             
+             ------  UTILITIES  ------
+             
+             Title:  "perlbug upgrade (from 5.004_70)"
+             Files:  utils/perlbug.PL
+             
+             Title:  "Upgrade perldoc (from 5.004_70)"
+             Files:  utils/perldoc.PL
+     Branch: maint-5.004/perl
+	   + lib/File/Spec.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 lib/Test.pm
+	   ! MANIFEST ext/Socket/Socket.pm lib/AutoSplit.pm lib/base.pm
+           ! t/op/misc.t utils/perlbug.PL utils/perldoc.PL
+____________________________________________________________________________
+[  1355] By: TimBunce                              on 1998/07/07  14:39:51
+        Log: Title:  "Fix memory leak in Safe module"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199806290544.BAA18463@aatma.engin.umich.edu>
+             Files:  ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
+     Branch: maint-5.004/perl
+           ! ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
+____________________________________________________________________________
+[  1354] By: TimBunce                              on 1998/07/07  14:35:25
+        Log: Title:  "Better error message for $undef->method call"
+             From:  Tim Bunce , Graham Barr ,
+             joshua.pritikin@db.com
+             Msg-ID:  <19980615171027.U4120@asic.sc.ti.com>, 
+             Files:  pod/perldiag.pod pp_hot.c
+     Branch: maint-5.004/perl
+           ! pod/perldiag.pod pp_hot.c
+____________________________________________________________________________
+[  1353] By: gsar                                  on 1998/07/06  23:33:38
+        Log: From: Andy Dougherty 
+             Date: Mon, 6 Jul 1998 16:59:06 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.004_70] Update metaconfig info
+     Branch: perl
+           ! Porting/pumpkin.pod
+____________________________________________________________________________
+[  1352] By: gsar                                  on 1998/07/06  23:30:54
+        Log: From: Andy Dougherty 
+             Date: Mon, 6 Jul 1998 13:14:37 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.004_70] Config_70-01: Remove default "/share"
+     Branch: perl
+	   ! Configure INSTALL Policy_sh.SH Porting/Glossary
+           ! Porting/config.sh Porting/config_H
+____________________________________________________________________________
+[  1351] By: gsar                                  on 1998/07/06  23:24:47
+        Log: try harder to run non-executable tests
+     Branch: perl
+           ! t/TEST
+____________________________________________________________________________
+[  1350] By: gsar                                  on 1998/07/06  23:12:17
+        Log: add patch to improve method caching, regen headers
+             From: joshua.pritikin@db.com
+             Date: Mon, 6 Jul 1998 09:19:29 -0400
+             Message-Id: 
+             Subject: [PATCH _70] cache missing methods
+     Branch: perl
+           ! embedvar.h gv.c interp.sym intrpvar.h perlvars.h
+____________________________________________________________________________
+[  1349] By: TimBunce                              on 1998/07/06  23:03:16
+        Log: Assorted patches:
+             
+             ------  BUILD PROCESS  ------
+             
+             Title:  "Configure: Workaround bash CDPATH oddity"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  Configure
+             
+             Title:  "Don't suppress display of Makefile recipes that invoke perl"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199806252213.SAA08545@aatma.engin.umich.edu>
+             Files:  Makefile.SH
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "one more^Wless quad unpack bug"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199806301132.OAA27353@alpha.hut.fi>
+             Files:  pp.c
+             
+             Title:  "minor fixups to bring maint closer to devel for patching"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805200046.UAA19284@aatma.engin.umich.edu>
+             Files:  pod/perldiag.pod deb.c dump.c t/op/ref.t t/op/split.t taint.c util.c
+             
+             Title:  "-Pw switches used together report bogus error"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199806252331.TAA10160@aatma.engin.umich.edu>
+             Files:  perl.c
+             
+             Title:  "Add doc and perl home page info to -v output"
+             From:  Tom Christiansen 
+             Msg-ID:  <199802172229.PAA29309@jhereg.perl.com>
+             Files:  perl.c
+             
+             Title:  "Fix C<@a = (%a = 1)> bizarreness"
+             From:  Gurusamy Sarathy , Tom Christiansen
+             
+             Msg-ID:  <199807012026.OAA31507@jhereg.perl.com>,
+             <199807012339.TAA26024@aatma.engin.umich.edu>
+             Files:  pp_hot.c
+             
+             Title:  "make find_script() return saved string, reenable missing
+             diagnostics"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199806262224.SAA00422@aatma.engin.umich.edu>
+             Files:  perl.c util.c
+             
+             Title:  "minor e_script optimization"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807060704.DAA25988@aatma.engin.umich.edu>
+             Files:  perl.c
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "Insecure $ENV{} message out of step with perldiag"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perldiag.pod pod/perlsec.pod
+             
+             Title:  "documenting close without arguments"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod
+             
+             Title:  "pod for scalar .. op"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perlop.pod
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "Fcntl: add few constants, enhance maintainability"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199806221558.SAA18626@alpha.hut.fi>
+             Files:  ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
+             
+             ------  LIBRARY  ------
+             
+             Title:  "Fix undef warnings in Text::Parsewords"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199806300842.LAA26409@alpha.hut.fi>
+             Files:  lib/Text/ParseWords.pm
+             
+             Title:  "Add Symbol::delete_package()"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807060702.DAA25976@aatma.engin.umich.edu>
+             Files:  pod/perlembed.pod lib/Symbol.pm
+     Branch: maint-5.004/perl
+	   ! Configure Makefile.SH deb.c dump.c ext/Fcntl/Fcntl.pm
+	   ! ext/Fcntl/Fcntl.xs lib/Symbol.pm lib/Text/ParseWords.pm perl.c
+	   ! pod/perldiag.pod pod/perlembed.pod pod/perlfunc.pod
+	   ! pod/perlop.pod pod/perlsec.pod pp.c pp_hot.c t/op/ref.t
+           ! t/op/split.t taint.c util.c
+____________________________________________________________________________
+[  1348] By: gsar                                  on 1998/07/06  22:55:56
+        Log: remove #! line from Errno_pm.PL
+     Branch: perl
+           ! ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  1347] By: gsar                                  on 1998/07/06  22:51:34
+        Log: added patch to fix Cwd.pm warnings, fixed a couple more places
+             From: Gisle Aas 
+             Date: 06 Jul 1998 13:08:53 +0200
+             Message-ID: 
+             Subject: [PATCH] 5.004_70 Cwd.pm now give warnings
+     Branch: perl
+           ! lib/Cwd.pm
+____________________________________________________________________________
+[  1346] By: gsar                                  on 1998/07/06  22:20:29
+        Log: much simpler fix to typecheck read/sysread/recv, as suggested by
+             Stephen McCamant
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[  1345] By: gsar                                  on 1998/07/06  21:58:52
+        Log: undo ck_sysread() changes#1319,1337 in preparation for a much
+             simpler fix
+     Branch: perl
+	   ! ObjXSub.h embed.h global.sym globals.c objpp.h op.c opcode.h
+           ! opcode.pl proto.h
+____________________________________________________________________________
+[  1344] By: TimBunce                              on 1998/07/06  21:51:05
+        Log: Title:  "Fix for broken goto &xsub"
+             From:  Albert Dvornik ,
+             Msg-ID:  
+             Files:  MANIFEST pp_ctl.c t/op/goto_xs.t
+     Branch: maint-5.004/perl
+           + t/op/goto_xs.t
+           ! MANIFEST pp_ctl.c
+____________________________________________________________________________
+[  1343] By: TimBunce                              on 1998/07/06  21:40:14
+        Log: Title:  "Undo sub stub optimization and add comments on GV_FOO constants"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199807050841.EAA25114@aatma.engin.umich.edu>
+             Files:  gv.h gv.c op.c toke.c
+     Branch: maint-5.004/perl
+           ! gv.c gv.h op.c toke.c
+____________________________________________________________________________
+[  1342] By: gsar                                  on 1998/07/06  20:57:06
+        Log: From:    Gisle Aas 
+             Message-Id: 
+             Date:    06 Jul 1998 21:52:12 +0200
+             Subject: Keepers of the Patch Pumpkin
+     Branch: perl
+           ! Changes
+____________________________________________________________________________
+[  1341] By: gsar                                  on 1998/07/06  20:43:35
+        Log: remove dup entry in perldiag
+     Branch: perl
+           ! pod/perldiag.pod
+____________________________________________________________________________
+[  1340] By: gsar                                  on 1998/07/06  20:31:44
+        Log: more reasonable diagnostic on keyword vs. sub ambiguity
+     Branch: perl
+           ! pod/perldiag.pod toke.c
+____________________________________________________________________________
+[  1339] By: gsar                                  on 1998/07/06  19:23:06
+        Log: rename s/\bSI_/PERLSI_/ to avoid collisions with sysinfo headers
+     Branch: perl
+	   ! av.c cop.h gv.c mg.c op.c perl.c pp_ctl.c pp_sys.c scope.c
+           ! sv.c toke.c util.c
+____________________________________________________________________________
+[  1338] By: gsar                                  on 1998/07/06  18:45:35
+        Log: per Larry suggestion, toss change#1327 and fix the documentation
+             to match behavior instead
+     Branch: perl
+           ! pod/perlfunc.pod pp_sys.c
+____________________________________________________________________________
+[  1337] By: gsar                                  on 1998/07/06  17:15:26
+        Log: allow read(FH,threadsv,...)
+     Branch: perl
+           ! op.c
+
+----------------
+Version 5.004_70
+----------------
+
+____________________________________________________________________________
+[  1336] By: gsar                                  on 1998/07/06  09:06:33
+        Log: 5.004_70 tweaks
+     Branch: perl
+           ! Changes win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1335] By: gsar                                  on 1998/07/06  07:05:37
+        Log: update Changes
+     Branch: perl
+           ! Changes pod/perldiag.pod
+____________________________________________________________________________
+[  1334] By: gsar                                  on 1998/07/06  06:41:17
+        Log: allow eval-groups in patterns only if they C
+     Branch: perl
+	   ! lib/re.pm perl.h pod/perldiag.pod pod/perlre.pod regcomp.c
+           ! t/op/misc.t t/op/pat.t t/op/regexp.t t/op/subst.t
+____________________________________________________________________________
+[  1333] By: gsar                                  on 1998/07/06  03:22:52
+        Log: From: Hans Mulder 
+             Date: Mon,  6 Jul 98 02:11:32 +0200
+             Message-Id: <9807060021.AA29027@icgned.icgroup.nl>
+             Subject: [PATCH 5.00469] corrupt malloc ptr on NeXT
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[  1332] By: gsar                                  on 1998/07/06  03:18:34
+        Log: added Errno-1.09 from CPAN
+     Branch: perl
+           ! ext/Errno/ChangeLog ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  1331] By: gsar                                  on 1998/07/06  02:59:09
+        Log: fix small memleak on -e, don't try to find_script() when e_script
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[  1330] By: gsar                                  on 1998/07/06  00:40:24
+        Log: add Symbol::delete_package()
+     Branch: perl
+           ! lib/Symbol.pm pod/perlembed.pod
+____________________________________________________________________________
+[  1329] By: gsar                                  on 1998/07/05  23:05:40
+        Log: patch to remove assumptions about offset of IV being == sizeof(XPV)
+             From: Stephen McCamant 
+             Date: Sun,  5 Jul 1998 17:36:14 -0500 (CDT)
+             Message-ID: <13727.63831.95324.696098@alias-2.pr.mcs.net>
+             Subject: [PATCH] alignment in X[IN]V allocation
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1328] By: gsar                                  on 1998/07/05  22:47:57
+        Log: make read() return undef on errors as documented, and clarify docs
+     Branch: perl
+           ! pod/perlfunc.pod pp_sys.c
+____________________________________________________________________________
+[  1327] By: gsar                                  on 1998/07/05  22:11:21
+        Log: fix getc() to return empty string instead of undef on eof, as it was
+             documented to behave; still returns undef on error
+     Branch: perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1326] By: gsar                                  on 1998/07/05  21:53:30
+        Log: patch whitespace-mutiliated; applied manually
+             From: Hans Mulder 
+             Date: Sun,  5 Jul 98 23:23:20 +0200
+             Message-Id: <9807052133.AA28626@icgned.icgroup.nl>
+             Subject: [PATCH 5.004_69] building Errno.pm still fails on NeXT
+     Branch: perl
+           ! ext/Errno/Errno_pm.PL
+____________________________________________________________________________
+[  1325] By: gsar                                  on 1998/07/05  21:38:39
+        Log: applied patch (via private mail), modulo retrohunks in pod/perlfaq2.pod
+             From: Tom Christiansen 
+             Date: Sun, 05 Jul 1998 09:15:22 -0500
+             Subject: Re: docpatch 
+             Message-Id: <199807051515.JAA03644@jhereg.perl.com>
+     Branch: perl
+	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
+	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
+	   ! pod/perlfaq9.pod pod/perlfunc.pod pod/perlipc.pod
+           ! pod/perlrun.pod
+____________________________________________________________________________
+[  1324] By: gsar                                  on 1998/07/05  21:06:56
+        Log: applied patch, and undid change#1302 which it made unnecessary
+             From: Billy 
+             Date: Sun, 5 Jul 1998 23:05:52 +0930 (CST)
+             Subject: [PATCH] utils/h2ph.PL and t/lib/h2ph.t
+             Message-ID: 
+     Branch: perl
+           ! t/lib/h2ph.t utils/h2ph.PL
+____________________________________________________________________________
+[  1323] By: gsar                                  on 1998/07/05  20:56:39
+        Log: fix t/lib/fields.t's @INC so make test runs
+     Branch: perl
+           ! t/lib/fields.t
+____________________________________________________________________________
+[  1322] By: gsar                                  on 1998/07/05  20:26:43
+        Log: add comments on GV_FOO constants, s/8/GV_ADDINEVAL/
+     Branch: perl
+           ! gv.c gv.h toke.c
+____________________________________________________________________________
+[  1321] By: gsar                                  on 1998/07/05  07:41:50
+        Log: sundry win32 config tweaks
+     Branch: perl
+	   ! Todo.5.005 t/op/stat.t win32/Makefile win32/config.bc
+	   ! win32/config.gc win32/config.vc win32/config_H.bc
+	   ! win32/config_H.gc win32/config_H.vc win32/config_h.PL
+           ! win32/config_sh.PL win32/makefile.mk
+____________________________________________________________________________
+[  1320] By: gsar                                  on 1998/07/05  06:30:35
+        Log: update Changes
+     Branch: perl
+           ! Changes
+____________________________________________________________________________
+[  1319] By: gsar                                  on 1998/07/05  06:27:37
+        Log: add ck_sysread() for better sysread/read/recv sanity
+     Branch: perl
+	   ! ObjXSub.h embed.h global.sym globals.c objpp.h op.c opcode.h
+           ! opcode.pl proto.h
+____________________________________________________________________________
+[  1318] By: gsar                                  on 1998/07/05  04:34:05
+        Log: From: Stephen McCamant 
+             Date: Sat,  4 Jul 1998 23:24:47 -0500 (CDT)
+             Subject: [PATCH] Document B::Deparse, add pp_threadsv
+             Message-ID: <13726.65230.19324.216849@alias-2.pr.mcs.net>
+     Branch: perl
+           ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[  1317] By: gsar                                  on 1998/07/05  04:15:25
+        Log: added patch with tweak to doc
+             From: Chip Salzenberg 
+             Message-ID: <19980704205136.A16319@perlsupport.com>
+             Date: Sat, 4 Jul 1998 20:51:36 -0400
+             Subject: [PATCH _69] Take 2: Warn on C
+     Branch: perl
+           ! ext/IO/lib/IO/Handle.pm pod/perldiag.pod toke.c
+____________________________________________________________________________
+[  1316] By: gsar                                  on 1998/07/05  03:56:22
+        Log: Porting/Glossary goes podly into Config.pm
+     Branch: perl
+           ! Porting/Glossary configpm
+____________________________________________________________________________
+[  1315] By: gsar                                  on 1998/07/05  02:50:18
+        Log: add suggested tool as an example in ExtUtils::Packlist
+             From: Alan Burlison 
+             Message-Id: <199807031028.LAA10456@sale-wts>
+             Date: Fri, 3 Jul 1998 11:28:03 +0100 (BST)
+             Subject: Re: [make install] another horror story
+     Branch: perl
+           ! lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
+____________________________________________________________________________
+[  1314] By: gsar                                  on 1998/07/05  02:28:04
+        Log: avoid race condition (storing ptr to SV before incrementing its
+             REFCNT) and warning in newRV()
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1313] By: gsar                                  on 1998/07/05  02:06:40
+        Log: applied suggested fix for xhv_array sizing, with portability tweaks
+             From: Gisle Aas 
+             Subject: Re: [PATCH] Re: perl5.004_69 core dump
+             Date: 04 Jul 1998 10:20:35 +0200
+             Message-ID: 
+     Branch: perl
+           ! hv.c
+____________________________________________________________________________
+[  1312] By: gsar                                  on 1998/07/05  01:36:45
+        Log: From: Gisle Aas 
+             Subject: [PATCH] hv_max may be a few too many
+             Date: 04 Jul 1998 09:28:46 +0200
+             Message-ID: 
+     Branch: perl
+           ! doop.c
+____________________________________________________________________________
+[  1311] By: gsar                                  on 1998/07/05  00:35:27
+        Log: patchlevel up to 5.004_70, various tweaks
+             * fix taint problems due to maintbranch regression
+             * PERL_OBJECT now builds again
+             * deal with C++ strong-typing problems in hv.c
+             * fix mismatch in "reserved word" diagnostic
+     Branch: perl
+	   ! av.c hv.c objpp.h patchlevel.h pp_ctl.c pp_hot.c proto.h
+           ! regexec.c regexp.h toke.c win32/perlhost.h win32/win32.c
+____________________________________________________________________________
+[  1310] By: TimBunce                              on 1998/07/04  11:35:25
+        Log: Remove old RE //t flag from scan_subst().
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[  1309] By: gsar                                  on 1998/07/04  08:32:53
+        Log: various small tweaks (still fails a few taint tests in {taint,locale}.t)
+     Branch: perl
+           ! Todo.5.005 lib/re.pm sv.c t/lib/fields.t
+____________________________________________________________________________
+[  1307] By: gsar                                  on 1998/07/04  07:00:14
+        Log: fix C, add tests
+     Branch: perl
+           ! pp_hot.c t/op/local.t
+____________________________________________________________________________
+[  1306] By: gsar                                  on 1998/07/04  05:52:34
+        Log: fixes for mortalization bug in xsubpp, other efficiency tweaks
+             From: joshua.pritikin@db.com
+             Date: Wed, 1 Jul 1998 10:09:43 -0400
+             Message-Id: 
+             Subject: [PATCH _69] sv_2mortal fix
+     Branch: perl
+           ! lib/ExtUtils/xsubpp perl.c pp.c pp_hot.c proto.h sv.c sv.h
+____________________________________________________________________________
+[  1305] By: gsar                                  on 1998/07/04  05:46:42
+        Log: add patch preextend global string table, tweak for 512 entries
+             From: Gisle Aas 
+             Date: 04 Jul 1998 01:04:08 +0200
+             Subject: Re: [PATCH] Re: perl5.004_69 core dump
+             Message-ID: 
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[  1304] By: gsar                                  on 1998/07/04  05:40:35
+        Log: simplify xhv_array sizing
+             From: Gisle Aas 
+             Date: 04 Jul 1998 00:49:42 +0200
+             Subject: Re: [PATCH] Re: perl5.004_69 core dump
+             Message-ID: 
+     Branch: perl
+           ! hv.c
+____________________________________________________________________________
+[  1303] By: gsar                                  on 1998/07/04  05:37:29
+        Log: make 4-arg win32_select() sleep more reasonably on false values
+             From: Blair Zajac 
+             Message-Id: <199807020225.TAA18740@gobi.gps.caltech.edu>
+             Date: Wed, 1 Jul 1998 19:25:56 -0700 (PDT)
+             Subject: [PATCH 5.004_69] select dumps core on MSWin32-x86
+             --
+             Message-Id: <199807030107.SAA08595@gobi.gps.caltech.edu>
+             Date: Thu, 2 Jul 1998 18:07:19 -0700 (PDT)
+             Subject: [PATCH 5.004_69] select dumps core on MSWin32-x86
+     Branch: perl
+           ! win32/win32sck.c
+____________________________________________________________________________
+[  1302] By: gsar                                  on 1998/07/04  05:32:50
+        Log: adjust h2ph.t for dos-specific problem
+             From: Laszlo Molnar 
+             Message-ID: <19980703234525.C208@cdata.tvnet.hu>
+             Date: Fri, 3 Jul 1998 23:45:25 +0200
+             Subject: Re: [PATCH _68] t/lib/h2ph.t problem
+     Branch: perl
+           ! t/lib/h2ph.t
+____________________________________________________________________________
+[  1301] By: gsar                                  on 1998/07/04  05:31:04
+        Log: fix CPAN.pm problem, OS2 tweaks
+             From: Ilya Zakharevich 
+             Message-Id: <199807030459.AAA00097@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_68] PAtch to CPAN first-time
+             Date: Fri, 3 Jul 1998 00:59:35 -0400 (EDT)
+     Branch: perl
+	   ! lib/CPAN/FirstTime.pm lib/ExtUtils/MM_OS2.pm
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1300] By: gsar                                  on 1998/07/04  05:27:20
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199807030102.VAA26813@monk.mps.ohio-state.edu>
+             Date: Thu, 2 Jul 1998 21:02:59 -0400 (EDT)
+             Subject: [PATCH 5.004_68] Add elc target to to makefile
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1299] By: gsar                                  on 1998/07/04  05:25:56
+        Log: newer emacs/cperl-mode.el (via private mail)
+             From: Ilya Zakharevich 
+             Message-Id: <199807030104.VAA26825@monk.mps.ohio-state.edu>
+             Date: Thu, 2 Jul 1998 21:04:29 -0400 (EDT)
+             Subject: [PATCH 5.004_68] cperl-mode
+     Branch: perl
+           ! emacs/cperl-mode.el
+____________________________________________________________________________
+[  1298] By: gsar                                  on 1998/07/04  05:22:41
+        Log: From: Dominic Dunlop 
+             Message-Id: 
+             Date: Thu, 2 Jul 1998 22:57:26 +0000
+             Subject: [PATCH 5.004_69] Make Power MachTen use vfork and perl's malloc
+     Branch: perl
+           ! hints/machten.sh malloc.c
+____________________________________________________________________________
+[  1297] By: gsar                                  on 1998/07/04  05:20:52
+        Log: allow a flags args to fbm_instr() for future needs
+             From: Ilya Zakharevich 
+             Message-Id: <199807020749.DAA12379@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_68] mORE FBM_ CHANGES FOR FUTURE
+             Date: Thu, 2 Jul 1998 03:49:32 -0400 (EDT)
+     Branch: perl
+           ! pod/perlguts.pod pp.c pp_hot.c proto.h regexec.c util.c
+____________________________________________________________________________
+[  1296] By: gsar                                  on 1998/07/04  05:16:15
+        Log: From: Andy Dougherty 
+             Date: Thu, 2 Jul 1998 11:50:41 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.004_69] INSTALL-1.39
+     Branch: perl
+           ! INSTALL
+____________________________________________________________________________
+[  1295] By: gsar                                  on 1998/07/04  05:15:05
+        Log: Configure update
+             From: doughera@newton.phys.lafayette.edu (Andy Dougherty)
+             Date: Wed, 1 Jul 98 23:07:50 EDT
+             Message-Id: <9807020307.AA17848@newton.phys.lafayette.edu>
+             Subject: [PATCH 5.004_69] Config_69-01
+     Branch: perl
+	   ! Configure INSTALL MANIFEST Policy_sh.SH Porting/Glossary
+	   ! Porting/config.sh Porting/config_H Porting/pumpkin.pod
+           ! config_h.SH win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1294] By: gsar                                  on 1998/07/04  05:10:25
+        Log: add perlbug -F switch to save message to file
+             From: Hugo van der Sanden 
+             Message-Id: 
+             Date: Wed, 1 Jul 1998 21:14:22 +0200
+             Subject: Re: [PATCH 5.004_69] perlbug -fok
+     Branch: perl
+           ! Makefile.SH utils/perlbug.PL
+____________________________________________________________________________
+[  1293] By: gsar                                  on 1998/07/04  05:06:52
+        Log: catch nonexistent backrefs in REs
+             From: Hugo van der Sanden 
+             Message-Id: 
+             Date: Wed, 1 Jul 1998 20:14:05 +0200
+             Subject: Re: [PATCH _66] for bad backrefs
+             --
+             Message-Id: 
+             Date: Wed, 1 Jul 1998 20:47:16 +0200
+             Subject: Re: [PATCH _66] for bad backrefs
+     Branch: perl
+           ! regcomp.c t/op/re_tests util.c
+____________________________________________________________________________
+[  1292] By: gsar                                  on 1998/07/04  05:02:01
+        Log: fix perlcc to not rm output file, and other -w(arts)
+     Branch: perl
+           ! utils/perlcc.PL
+____________________________________________________________________________
+[  1291] By: gsar                                  on 1998/07/04  04:30:03
+        Log: ignore stash entries that are not GVs in dump.c
+     Branch: perl
+           ! dump.c
+____________________________________________________________________________
+[  1290] By: gsar                                  on 1998/07/04  03:55:10
+        Log: cleaner page headers from pod2man
+     Branch: perl
+           ! pod/pod2man.PL
+____________________________________________________________________________
+[  1288] By: gsar                                  on 1998/07/04  03:16:39
+        Log: tweaks to Getopt::Std
+             From: Robin Barker 
+             Date: Tue, 30 Jun 98 14:45:49 BST
+             Message-Id: <14103.9806301345@tempest.cise.npl.co.uk>
+             Subject: [PATCH perl5.004_69] lib/Getopt/Std.pm
+             --
+             Message-Id: <17918.9807021053@tempest.cise.npl.co.uk>
+             To: perl5-porters@perl.org
+             Subject: [PATCH perl5.004_69] second: lib/Getopt/Std.pm
+     Branch: perl
+           ! lib/Getopt/Std.pm
+____________________________________________________________________________
+[  1287] By: gsar                                  on 1998/07/04  03:13:02
+        Log: added patch, with tweaks
+             From: Gisle Aas 
+             Date: 03 Jul 1998 00:50:15 +0200
+             Message-ID: 
+             Subject: [PATCH] Some AVHV documentation
+     Branch: perl
+           ! pod/perlref.pod
+____________________________________________________________________________
+[  1286] By: gsar                                  on 1998/07/04  02:53:26
+        Log: applied patch with tweaks to prose
+             From: Gisle Aas 
+             Subject: [PATCH] Simplified AVHV support
+             Date: 30 Jun 1998 13:34:07 +0200
+             Message-ID: 
+     Branch: perl
+	   ! ObjXSub.h av.c embed.h global.sym objpp.h pod/perldiag.pod
+           ! pp.c proto.h t/op/avhv.t
+____________________________________________________________________________
+[  1285] By: gsar                                  on 1998/07/04  02:30:48
+        Log: tweak doc for ".."
+             From: "M.J.T. Guy" 
+             Subject: [PATCH] pod for scalar ..
+             Message-Id: 
+             Date: Tue, 30 Jun 1998 12:14:50 +0100
+     Branch: perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[  1284] By: gsar                                  on 1998/07/04  02:28:43
+        Log: fix use of uninitialized var in pp_unpack()
+             From: Jarkko Hietaniemi 
+             Date: Tue, 30 Jun 1998 14:32:17 +0300 (EET DST)
+             Message-Id: <199806301132.OAA27353@alpha.hut.fi>
+             Subject: [PATCH] 5.004_69 (also for 5.004_04) one more^Wless quad bug
+     Branch: perl
+           ! pp.c
+____________________________________________________________________________
+[  1283] By: gsar                                  on 1998/07/04  02:26:37
+        Log: From: Jarkko Hietaniemi 
+             Date: Tue, 30 Jun 1998 11:40:22 +0300 (EET DST)
+             Message-Id: <199806300840.LAA04872@alpha.hut.fi>
+             Subject: [PATCH] 5.004_69: Parsewords.pm: avoid undefined warnings
+     Branch: perl
+           ! lib/Text/ParseWords.pm
+____________________________________________________________________________
+[  1282] By: gsar                                  on 1998/07/04  02:24:32
+        Log: VMS updates from Dan Sugalski 
+             Message-Id: <3.0.5.32.19980629165356.00a20730@ous.edu>
+             Date: Mon, 29 Jun 1998 16:53:56 -0700
+             Subject: [PATCH 5.004_69]README.vms doc patch
+             --
+             Message-Id: <3.0.5.32.19980629165125.00a4e100@ous.edu>
+             Date: Mon, 29 Jun 1998 16:51:25 -0700
+             --
+             Message-Id: <3.0.5.32.19980702135357.00a5eb40@ous.edu>
+             Date: Thu, 02 Jul 1998 13:53:57 -0700
+             Subject: [PATCH 5.004_69]VMS filetest operator fixup
+     Branch: perl
+           ! README.vms vms/descrip_mms.template vms/vms.c
+____________________________________________________________________________
+[  1281] By: gsar                                  on 1998/07/04  02:17:48
+        Log: From: Dan Sugalski 
+             Message-Id: <3.0.5.32.19980629164625.00a4d7c0@ous.edu>
+             Date: Mon, 29 Jun 1998 16:46:25 -0700
+             Subject: [PATCH 5.004_69]Tweaks to VMS configuration procedure
+     Branch: perl
+           ! vms/subconfigure.com
+____________________________________________________________________________
+[  1280] By: gsar                                  on 1998/07/04  02:16:03
+        Log: don't attempt to copy directories on VMS
+             From: Dan Sugalski 
+             Message-Id: <3.0.5.32.19980629163129.00a82140@ous.edu>
+             Date: Mon, 29 Jun 1998 16:31:29 -0700
+             Subject: [PATCH 5.004_69]Tweak to installperl
+     Branch: perl
+           ! installperl
+____________________________________________________________________________
+[  1279] By: gsar                                  on 1998/07/04  02:09:26
+        Log: add 'installhtml*dir' to win32 config templates
+             From: "Douglas Lankshear" 
+             Subject: [PATCH 5.004_68] For Win32 config
+             Date: Mon, 29 Jun 1998 09:00:13 -0700
+             Message-ID: <000a01bda376$ffe8b0b0$a32fa8c0@tau.Active>
+     Branch: perl
+           ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1278] By: gsar                                  on 1998/07/04  02:06:23
+        Log: implemented described fix for h2ph hanging on "enum"
+             From: Billy 
+             Subject: Re: h2ph problem on Solaris 2.6/SPARC/Sun compiler
+             Message-ID: 
+             Date: Sat, 27 Jun 1998 01:13:12 +0930 (CST)
+     Branch: perl
+           ! utils/h2ph.PL
+____________________________________________________________________________
+[  1277] By: gsar                                  on 1998/07/04  01:51:47
+        Log: merge changes#1210,1211,1270 from maintbranch
+     Branch: perl
+           + lib/re.pm
+	   ! MANIFEST dump.c installperl lib/File/Basename.pm mg.c op.c
+	   ! op.h perl.h pod/perlmodlib.pod pod/perlop.pod pp_ctl.c
+           ! pp_hot.c t/lib/basename.t t/op/taint.t toke.c
+____________________________________________________________________________
+[  1276] By: gsar                                  on 1998/07/04  00:33:37
+        Log: deprecate use of reserved word "our" (Larry's idea)
+             Date: Mon, 22 Jun 1998 08:55:09 -0700
+             From: larry@wall.org (Larry Wall)
+             Message-Id: <199806221555.IAA07212@wall.org>
+             Subject: Re: our
+     Branch: perl
+           ! pod/perldiag.pod toke.c
+____________________________________________________________________________
+[  1275] By: nick                                  on 1998/07/02  18:36:59
+        Log: Integrate mainline, just to keep up.
+     Branch: ansiperl
+          +> t/lib/fields.t
+           - lib/Math/Trig/Radial.pm
+	  !> MANIFEST lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+	  !> lib/Math/Trig.pm lib/base.pm lib/fields.pm mg.c
+	  !> pod/perldiag.pod pod/perltrap.pod pp_hot.c scope.c scope.h
+	  !> t/lib/trig.t t/op/array.t toke.c utils/perldoc.PL
+	  !> win32/config.bc win32/config.gc win32/config.vc
+	  !> win32/include/dirent.h win32/makedef.pl win32/win32.c
+          !> win32/win32iop.h
+____________________________________________________________________________
+[  1274] By: gsar                                  on 1998/07/02  16:47:20
+        Log: tweak win32/config.* variables
+     Branch: perl
+           ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1273] By: gsar                                  on 1998/07/02  16:33:53
+        Log: export opendir() set of functions on win32
+     Branch: perl
+	   ! win32/include/dirent.h win32/makedef.pl win32/win32.c
+           ! win32/win32iop.h
+____________________________________________________________________________
+[  1272] By: gsar                                  on 1998/07/01  23:21:49
+        Log: fix C<@a = (%a = 1)> bizarreness
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[  1271] By: gsar                                  on 1998/06/30  22:49:39
+        Log: document perltrap on precedence of keys/values/each
+     Branch: perl
+           ! pod/perltrap.pod
+____________________________________________________________________________
+[  1270] By: TimBunce                              on 1998/06/30  09:06:21
+        Log: Added lib/re.pm missing from change 1210
+     Branch: maint-5.004/perl
+           + lib/re.pm
+____________________________________________________________________________
+[  1269] By: gsar                                  on 1998/06/30  08:20:52
+        Log: From:    Murray Nesbitt 
+             Message-Id: <77180549BCE.AAA466A@mail.rdc1.bc.wave.home.com>
+             Date:    Mon, 29 Jun 1998 14:30:59 PDT
+             Subject: Re: [PATCH 5.004_67] MakeMaker mods for PPD support 
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1268] By: gsar                                  on 1998/06/30  05:38:34
+        Log: From:    Robin Barker 
+             Message-Id: <13254.9806291404@tempest.cise.npl.co.uk>
+             Date:    Mon, 29 Jun 1998 15:04:57 -0000
+             Subject: [PATCH perl5.004_69] perldoc.PL
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  1267] By: gsar                                  on 1998/06/30  05:34:06
+        Log: add patch to integrate Math::Trig::Radial into Math::Trig
+             From: Jarkko Hietaniemi 
+             Date: Mon, 29 Jun 1998 16:28:53 +0300 (EET DST)
+             Message-Id: <199806291328.QAA16916@alpha.hut.fi>
+             Subject: [PATCH] 5.004_68 (or 5.004_04): radial trig
+     Branch: perl
+           - lib/Math/Trig/Radial.pm
+           ! MANIFEST lib/Math/Trig.pm t/lib/trig.t
+____________________________________________________________________________
+[  1266] By: gsar                                  on 1998/06/30  05:17:33
+        Log: From:    Gisle Aas 
+             Message-Id: 
+             Date:    29 Jun 1998 12:36:09 +0200
+             Subject: Re: [PATCH] Simplified magic_setisa() and improved fields.pm
+     Branch: perl
+           + t/lib/fields.t
+	   ! MANIFEST lib/base.pm lib/fields.pm mg.c pod/perldiag.pod
+           ! t/op/array.t
+____________________________________________________________________________
+[  1265] By: gsar                                  on 1998/06/30  05:12:57
+        Log: tweaks to overloaded constants (change#1259)
+     Branch: perl
+           ! scope.c scope.h toke.c
+____________________________________________________________________________
+[  1264] By: nick                                  on 1998/06/29  17:38:03
+        Log: Integrate mainline c. _69 to ansiperl
+     Branch: ansiperl
+	  +> eg/cgi/caution.xbm eg/cgi/dna.small.gif.uu
+	  +> eg/cgi/nph-multipart.cgi ext/Errno/ChangeLog
+	  +> ext/Errno/Errno_pm.PL ext/Errno/Makefile.PL lib/CGI/Cookie.pm
+	  +> lib/Math/Trig/Radial.pm perlio.h t/lib/cgi-form.t
+	  +> t/lib/cgi-function.t t/lib/cgi-html.t t/lib/cgi-request.t
+          +> t/lib/errno.t t/op/goto_xs.t t/op/splice.t
+          !> (integrate 100 files)
+
+----------------
+Version 5.004_69
+----------------
+
+____________________________________________________________________________
+[  1263] By: gsar                                  on 1998/06/29  09:17:28
+        Log: update Changes and perlhist.pod
+     Branch: perl
+           ! Changes pod/perlhist.pod
+____________________________________________________________________________
+[  1262] By: gsar                                  on 1998/06/29  08:26:36
+        Log: bump patchlevel to 69, various little tweaks (tested on win32, Solaris
+             under several build configurations)
+     Branch: perl
+	   ! Todo.5.005 op.c patchlevel.h t/lib/cgi-function.t
+	   ! t/lib/cgi-request.t toke.c win32/Makefile win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1261] By: gsar                                  on 1998/06/29  06:51:10
+        Log: add missing SSCHECK() to rectify faulty SSPUSH*() logic in change#1259
+     Branch: perl
+           ! scope.h
+____________________________________________________________________________
+[  1260] By: gsar                                  on 1998/06/29  06:46:12
+        Log: Message-Id: <199806290610.IAA19443@moulon.inra.fr>
+             Date:    Mon, 29 Jun 1998 08:10:46 +0200
+             From:    ts 
+             Subject: {perlembed.pod] Re: Memory leak in Perl 5.004 and the fix
+     Branch: perl
+           ! pod/perlembed.pod
+____________________________________________________________________________
+[  1259] By: gsar                                  on 1998/06/29  06:01:35
+        Log: added patch for overloading constants, made PERL_OBJECT-aware
+             From: Ilya Zakharevich 
+             Message-Id: <199806270328.XAA21088@monk.mps.ohio-state.edu>
+             Date: Fri, 26 Jun 1998 23:28:41 -0400 (EDT)
+     Branch: perl
+	   ! ObjXSub.h embed.h embedvar.h global.sym hv.c interp.sym
+	   ! intrpvar.h lib/Math/BigInt.pm lib/overload.pm objpp.h op.c
+	   ! perl.c perl.h pp_ctl.c proto.h scope.c scope.h
+           ! t/pragma/overload.t toke.c
+____________________________________________________________________________
+[  1258] By: gsar                                  on 1998/06/29  05:32:25
+        Log: fix Socket.pm typo from change#1240
+     Branch: perl
+           ! ext/Socket/Socket.pm
+____________________________________________________________________________
+[  1257] By: gsar                                  on 1998/06/29  05:09:24
+        Log: applied patch, tweak for threads awareness
+             From: Albert Dvornik 
+             Subject: [PATCH]5.004_04-m4 (CORE) fix for broken "goto &xsub"
+             Date: 24 Jun 1998 19:33:09 -0400
+             Message-Id: 
+     Branch: perl
+           + t/op/goto_xs.t
+           ! MANIFEST pp_ctl.c
+____________________________________________________________________________
+[  1256] By: gsar                                  on 1998/06/29  03:34:18
+        Log: applied patch, fixed one more leak, tweaked whitespace bugs
+             From: Guy Decoux 
+             (via)
+             Date: Fri, 26 Jun 1998 09:59:32 -0400
+             From: "Chunhui Teng" 
+             Message-Id: <199806261359.JAA02393@bmers357.nortel.ca>
+             Subject: Memory leak in Perl 5.004 and the fix
+     Branch: perl
+           ! ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
+____________________________________________________________________________
+[  1255] By: gsar                                  on 1998/06/29  02:50:37
+        Log: From: koenig@kulturbox.de (Andreas J. Koenig)
+             Subject: Permissions in MakeMaker (Was: patch to MM_Unix.pm)
+             Date: 28 Jun 1998 23:47:07 +0200
+             Message-ID: 
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1254] By: gsar                                  on 1998/06/28  21:35:02
+        Log: From: joshua.pritikin@db.com
+             Date: Fri, 26 Jun 1998 09:34:34 -0400
+             Message-Id: 
+             Subject: [PATCH _68] PUSHSTACK renovation
+     Branch: perl
+           ! av.c cop.h gv.c mg.c perl.c pp_ctl.c pp_sys.c sv.c util.c
+____________________________________________________________________________
+[  1253] By: gsar                                  on 1998/06/28  21:21:22
+        Log: From: Stephen McCamant 
+             Message-Id: 
+             Date: Sat, 27 Jun 1998 16:38:19 -0500 (CDT)
+             Subject: IV changes for long long (was Re: 5.004_68 on its way to the CPAN)
+     Branch: perl
+           ! perlvars.h sv.c
+____________________________________________________________________________
+[  1252] By: gsar                                  on 1998/06/28  21:16:34
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806272359.TAA05436@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_68] Improve warning on zero-length chunks in RE
+             Date: Sat, 27 Jun 1998 19:59:13 -0400 (EDT)
+     Branch: perl
+           ! regcomp.c
+____________________________________________________________________________
+[  1251] By: gsar                                  on 1998/06/28  21:14:32
+        Log: add Math/Trig/Radial.pm, update MANIFEST
+             From: Jarkko Hietaniemi 
+             Date: Sat, 27 Jun 1998 17:28:14 +0300 (EET DST)
+             Message-Id: <199806271428.RAA05307@alpha.hut.fi>
+             Subject: Math::Trig::Radial ?
+     Branch: perl
+           + lib/Math/Trig/Radial.pm
+           ! MANIFEST
+____________________________________________________________________________
+[  1250] By: gsar                                  on 1998/06/28  21:09:48
+        Log: applied patch, tweaked doc, and regen regnodes.h
+             From: Ilya Zakharevich 
+             Message-Id: <199806270655.CAA29144@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_68] \z in RE
+             Date: Sat, 27 Jun 1998 02:55:26 -0400 (EDT)
+     Branch: perl
+	   ! pod/perlre.pod regcomp.c regcomp.sym regexec.c regnodes.h
+           ! t/op/re_tests t/op/regexp.t toke.c
+____________________________________________________________________________
+[  1249] By: gsar                                  on 1998/06/28  20:56:38
+        Log: From: mike@bill.iac.net
+             Message-ID: <19980627034913.A32220@bill.minivend.com>
+             Date: Sat, 27 Jun 1998 03:49:13 +0000
+             Subject: [ PATCH 5.004 68 ] Text::ParseWords, ^W fixed, version 3.1
+     Branch: perl
+           ! lib/Text/ParseWords.pm t/lib/parsewords.t
+____________________________________________________________________________
+[  1248] By: gsar                                  on 1998/06/28  20:54:43
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806270352.XAA21174@monk.mps.ohio-state.edu>
+             Subject: [PATCH] Fix ptags
+             Date: Fri, 26 Jun 1998 23:52:54 -0400 (EDT)
+     Branch: perl
+           ! emacs/ptags
+____________________________________________________________________________
+[  1247] By: gsar                                  on 1998/06/28  20:42:54
+        Log: apply patch sent via private mail
+             From: Stephen McCamant 
+             Message-Id: 
+             Date: Fri, 26 Jun 1998 21:32:23 -0500 (CDT)
+             Subject: Re: Enhanced B::Deparse 
+     Branch: perl
+           ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[  1246] By: gsar                                  on 1998/06/28  20:38:24
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806270109.VAA14907@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_68] pat.t tests
+             Date: Fri, 26 Jun 1998 21:09:02 -0400 (EDT)
+     Branch: perl
+           ! t/op/pat.t
+____________________________________________________________________________
+[  1245] By: gsar                                  on 1998/06/28  20:36:08
+        Log: From: joshua.pritikin@db.com
+             Date: Fri, 26 Jun 1998 10:02:32 -0400
+             Message-Id: 
+             Subject: [PATCH _68] improve recursive error messages!
+     Branch: perl
+           ! gv.c pod/perldiag.pod universal.c
+____________________________________________________________________________
+[  1244] By: gsar                                  on 1998/06/28  20:09:02
+        Log: From: Dominic Dunlop 
+             Message-Id: 
+             Date: Thu, 25 Jun 1998 17:46:55 +0000
+             Subject: [PATCH 5.004_68]: Move REG_INFTY-dependent tests from op/regexp.t
+             to op/pat.t; add tests for a few  more regexp parse failures etc.
+     Branch: perl
+           ! t/op/pat.t t/op/re_tests t/op/regexp.t
+____________________________________________________________________________
+[  1243] By: gsar                                  on 1998/06/28  20:06:30
+        Log: specify *.sym files needed in perl_exp.SH instead of picking up all
+             From: Andy Dougherty 
+             Date: Thu, 25 Jun 1998 10:36:21 -0400 (EDT)
+             Subject: Re: Not OK: perl 5.00468 on aix-thread 4.1.4.0
+             Message-Id: 
+     Branch: perl
+           ! perl_exp.SH
+____________________________________________________________________________
+[  1242] By: gsar                                  on 1998/06/28  20:01:28
+        Log: 
+             From: Gisle Aas 
+             Subject: Re: [PATCH] 4-arg substr update for perl5.004_68
+             Date: 25 Jun 1998 10:32:43 +0200
+             Message-ID: 
+     Branch: perl
+           ! op.c pod/perlfunc.pod pp.c t/op/substr.t
+____________________________________________________________________________
+[  1241] By: gsar                                  on 1998/06/28  19:55:11
+        Log: applied patch, tweaked opcode.pl for PERL_OBJECT, and regen opcode.h
+             From: Stephen McCamant 
+             Message-Id: 
+             Date: Wed, 24 Jun 1998 21:10:32 -0500 (CDT)
+             Subject: [PATCH REPOST] refgen in opcode.pl
+     Branch: perl
+           ! opcode.h opcode.pl
+____________________________________________________________________________
+[  1240] By: gsar                                  on 1998/06/28  19:46:29
+        Log: From: Chris Nandor 
+             Message-Id: 
+             Date: Wed, 24 Jun 1998 19:58:28 -0400
+             Subject: [PATCH 3d try] Add CR LF CRLF to Socket.pm
+     Branch: perl
+           ! ext/Socket/Socket.pm
+____________________________________________________________________________
+[  1239] By: gsar                                  on 1998/06/28  19:44:19
+        Log: From: Gisle Aas 
+             Subject: [PATCH] Optimize foreach (1..1000000)
+             Date: 24 Jun 1998 20:26:48 +0200
+             Message-ID: 
+     Branch: perl
+	   ! Todo cop.h op.c pod/perldiag.pod pod/perlop.pod pp_ctl.c
+           ! pp_hot.c t/op/range.t
+____________________________________________________________________________
+[  1238] By: gsar                                  on 1998/06/28  19:28:13
+        Log: avoid creation of %^R
+             From: Ilya Zakharevich 
+             Message-Id: <199806241825.OAA06346@monk.mps.ohio-state.edu>
+             Subject: Re: [5.004_68] What is %^R ? [PATCH?]
+             Date: Wed, 24 Jun 1998 14:25:06 -0400 (EDT)
+     Branch: perl
+           ! perl.c t/op/splice.t
+____________________________________________________________________________
+[  1237] By: gsar                                  on 1998/06/28  19:23:40
+        Log: From: Gisle Aas 
+             Subject: [PATCH] Negative LENGTH argument to splice
+             Date: 24 Jun 1998 15:11:35 +0200
+             Message-ID: 
+     Branch: perl
+           + t/op/splice.t
+           ! MANIFEST pod/perlfunc.pod pp.c
+____________________________________________________________________________
+[  1236] By: gsar                                  on 1998/06/28  19:18:29
+        Log: From: "M.J.T. Guy" 
+             Subject: [PATCH] Insecure $ENV{} message out of step with perldiag
+             Message-Id: 
+             Date: Wed, 24 Jun 1998 13:13:02 +0100
+     Branch: perl
+           ! pod/perldiag.pod pod/perlsec.pod
+____________________________________________________________________________
+[  1235] By: gsar                                  on 1998/06/28  19:16:13
+        Log: Complex.pm update
+             From: Jarkko Hietaniemi 
+             Date: Wed, 24 Jun 1998 15:19:05 +0300 (EET DST)
+             Message-Id: <199806241219.PAA04061@alpha.hut.fi>
+             Subject: [PATCH] 5.004_68: Complex.pm, complex.t
+     Branch: perl
+           ! lib/Math/Complex.pm t/lib/complex.t
+____________________________________________________________________________
+[  1234] By: gsar                                  on 1998/06/28  19:13:05
+        Log: disable perl malloc on UNICOS for now
+             From: Jarkko Hietaniemi 
+             Date: Wed, 24 Jun 1998 12:37:14 +0300 (EET DST)
+             Message-Id: <199806240937.MAA01669@alpha.hut.fi>
+             Subject: [PATCH] 5.004_68: UNICOS hints
+     Branch: perl
+           ! hints/unicos.sh
+____________________________________________________________________________
+[  1233] By: gsar                                  on 1998/06/28  19:10:53
+        Log: fixes unpack("q"...), and semctl() tests for UNICOS
+             From: Jarkko Hietaniemi 
+             Date: Wed, 24 Jun 1998 11:55:09 +0300 (EET DST)
+             Message-Id: <199806240855.LAA16152@alpha.hut.fi>
+             Subject: [PATCH] 5.004_68: semctl() in UNICOS (was: pack/unpack)
+     Branch: perl
+           ! pp.c t/op/ipcsem.t t/op/pack.t
+____________________________________________________________________________
+[  1232] By: gsar                                  on 1998/06/28  19:01:23
+        Log: tweak various places for iperlsys.h awareness
+     Branch: perl
+	   ! MANIFEST Makefile.SH lib/ExtUtils/MM_Unix.pm
+           ! lib/ExtUtils/MM_VMS.pm pod/perlapio.pod
+____________________________________________________________________________
+[  1231] By: gsar                                  on 1998/06/28  18:37:07
+        Log: add a perlio.h stub for compat (some extensions seem to #include it)
+     Branch: perl
+           + perlio.h
+____________________________________________________________________________
+[  1230] By: gsar                                  on 1998/06/28  18:35:23
+        Log: Message-ID: <19980624003701.C161@cdata.tvnet.hu>
+             Date: Wed, 24 Jun 1998 00:37:01 +0200
+             From: Laszlo Molnar 
+             Subject: Re: [PATCH for _66] Makefile.SH problem on dos/djgpp
+     Branch: perl
+           ! pod/pod2text.PL
+____________________________________________________________________________
+[  1229] By: gsar                                  on 1998/06/28  18:33:42
+        Log: hand apply mutiliated patch
+             Message-Id: <3.0.5.32.19980623114100.00ab76e0@ous.edu>
+             Date: Tue, 23 Jun 1998 11:41:00 -0700
+             From: Dan Sugalski 
+             Subject: [PATCH 5.004_68]Configure update for VMS
+     Branch: perl
+           ! configure.com vms/descrip_mms.template vms/subconfigure.com
+____________________________________________________________________________
+[  1228] By: gsar                                  on 1998/06/28  17:17:35
+        Log: hand apply whitespace mutiliated patch
+             Date: Tue, 23 Jun 98 16:38:06 BST
+             Message-Id: <5389.9806231538@tempest.cise.npl.co.uk>
+             From: Robin Barker 
+             Subject: PATCH [perl5.004_68] perlbug.PL; was Re: Error message for Errno_pm.PL
+     Branch: perl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  1227] By: gsar                                  on 1998/06/28  17:14:34
+        Log: Date: Tue, 23 Jun 1998 08:51:00 -0700 (PDT)
+             From: Tom Phoenix 
+             Subject: [PATCH] documenting close without arguments
+             Message-ID: 
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1226] By: gsar                                  on 1998/06/28  17:12:56
+        Log: Date: Tue, 23 Jun 1998 05:37:09 -0700 (PDT)
+             From: Tom Phoenix 
+             Subject: Better diags for vars.pm
+             Message-ID: 
+     Branch: perl
+           ! lib/vars.pm
+____________________________________________________________________________
+[  1225] By: gsar                                  on 1998/06/28  17:05:59
+        Log: hand apply whitespace mutiliated perldoc.PL patches
+             Date: Tue, 23 Jun 98 15:49:52 BST
+             Message-Id: <5302.9806231449@tempest.cise.npl.co.uk>
+             From: Robin Barker 
+             Subject: PATCH [5.004_68] perldoc.PL
+             --
+             Date: Fri, 26 Jun 98 17:50:05 BST
+             Message-Id: <6834.9806261650@tempest.cise.npl.co.uk>
+             From: Robin Barker 
+             Subject: [PATCH 5.004_68] perldoc.PL
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  1224] By: gsar                                  on 1998/06/28  16:50:59
+        Log: integrate ansiperl to get makedef.pl tweak
+     Branch: perl
+           ! Porting/pumpkin.pod win32/makedef.pl
+____________________________________________________________________________
+[  1223] By: gsar                                  on 1998/06/28  16:33:32
+        Log: add CGI-2.42, its and testsuite
+     Branch: perl
+	   + eg/cgi/caution.xbm eg/cgi/dna.small.gif.uu
+	   + eg/cgi/nph-multipart.cgi lib/CGI/Cookie.pm t/lib/cgi-form.t
+           + t/lib/cgi-function.t t/lib/cgi-html.t t/lib/cgi-request.t
+	   ! MANIFEST eg/cgi/RunMeFirst eg/cgi/file_upload.cgi
+	   ! eg/cgi/index.html eg/cgi/monty.cgi eg/cgi/save_state.cgi
+	   ! eg/cgi/wilogo.gif.uu lib/CGI.pm lib/CGI/Apache.pm
+	   ! lib/CGI/Carp.pm lib/CGI/Fast.pm lib/CGI/Push.pm
+           ! lib/CGI/Switch.pm
+____________________________________________________________________________
+[  1222] By: gsar                                  on 1998/06/28  15:28:29
+        Log: enable Errno build on win32, add Errno-1.08 files to repository
+     Branch: perl
+	   + ext/Errno/ChangeLog ext/Errno/Errno_pm.PL
+           + ext/Errno/Makefile.PL t/lib/errno.t
+	   ! MANIFEST win32/Makefile win32/config.bc win32/config.gc
+           ! win32/config.vc win32/makefile.mk
+____________________________________________________________________________
+[  1221] By: gsar                                  on 1998/06/28  14:34:06
+        Log: tweak win32 config templates for cpp
+     Branch: perl
+           ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1220] By: nick                                  on 1998/06/26  16:46:13
+        Log: Integrate mainline
+     Branch: ansiperl
+	  !> Changes Makefile.SH ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod
+	  !> ext/POSIX/POSIX.xs perl.c pod/perlre.pod pod/perlvar.pod sv.c
+          !> util.c win32/win32.h
+____________________________________________________________________________
+[  1219] By: gsar                                  on 1998/06/26  04:33:57
+        Log: make find_script() return saved string, reenable missing diagnostics
+     Branch: perl
+           ! perl.c util.c
+____________________________________________________________________________
+[  1218] By: gsar                                  on 1998/06/25  23:24:53
+        Log: avoid warning with -P switch
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[  1217] By: gsar                                  on 1998/06/25  22:06:58
+        Log: don't suppress display of Makefile recipes that invoke perl
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1216] By: gsar                                  on 1998/06/25  21:32:06
+        Log: tweak order of destruction so OBJECTs in GLOBs are visited after those
+             in RVs
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1215] By: gsar                                  on 1998/06/25  18:56:59
+        Log: mknod() is not POSIX, so remove the POSIX pieces from change#1199
+     Branch: perl
+           ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs
+____________________________________________________________________________
+[  1214] By: gsar                                  on 1998/06/25  18:11:22
+        Log: add FILE_SHARE_DELETE ifndef in win32.h
+     Branch: perl
+           ! win32/win32.h
+____________________________________________________________________________
+[  1213] By: nick                                  on 1998/06/24  17:18:59
+        Log: Correct perl malloc tweak to .def generation
+     Branch: ansiperl
+           ! win32/makedef.pl
+____________________________________________________________________________
+[  1212] By: gsar                                  on 1998/06/24  12:40:13
+        Log: check in what change#1182 didn't, and Changes
+     Branch: perl
+           ! Changes pod/perlre.pod pod/perlvar.pod
+____________________________________________________________________________
+[  1211] By: TimBunce                              on 1998/06/23  23:09:37
+        Log: Update test count in t/lib/basename.t (see change 1210)
+     Branch: maint-5.004/perl
+           ! t/lib/basename.t
+____________________________________________________________________________
+[  1210] By: TimBunce                              on 1998/06/23  22:58:18
+        Log: Title:  "Add C pragma to propagate tainting in m// and s///"
+             From:  Chip Salzenberg , Gurusamy Sarathy
+             , Tim.Bunce@ig.co.uk (Tim Bunce)
+             Msg-ID:  <19980525155222.A18445@perlsupport.com>,
+             <199805261143.MAA04260@toad.ig.co.uk>,
+             <199805261235.IAA10371@aatma.engin.umich.edu>,
+             Files:  MANIFEST pod/perlmodlib.pod pod/perlop.pod op.h perl.h dump.c
+             installperl lib/re.pm lib/File/Basename.pm mg.c op.c
+             pp_ctl.c pp_hot.c t/lib/basename.t t/op/taint.t toke.c
+     Branch: maint-5.004/perl
+	   ! MANIFEST dump.c embed.h installperl lib/File/Basename.pm mg.c
+	   ! op.c op.h perl.h pod/perlmodlib.pod pod/perlop.pod pp_ctl.c
+           ! pp_hot.c t/lib/basename.t t/op/taint.t toke.c
+____________________________________________________________________________
+[  1209] By: nick                                  on 1998/06/23  21:33:34
+        Log: Perl_malloced_size() only available with perl's malloc
+     Branch: ansiperl
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1208] By: nick                                  on 1998/06/23  18:15:23
+        Log: Integrate mainline c. 5.004_68 into ansiperl, mainly
+             so see what has changed...
+     Branch: ansiperl
+	  +> Porting/genlog iperlsys.h lib/File/Spec.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 regcomp.pl regcomp.sym regnodes.h
+          +> t/lib/filespec.t win32/perlhost.h
+	   - atomic.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h ipsock.h
+	   - ipstdio.h perldir.h perlenv.h perlio.h perllio.h perlmem.h
+           - perlproc.h perlsock.h
+          !> (integrate 96 files)
+
+----------------
+Version 5.004_68
+----------------
+
+____________________________________________________________________________
+[  1207] By: gsar                                  on 1998/06/23  10:55:05
+        Log: final touches to 5.004_68
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[  1206] By: gsar                                  on 1998/06/23  10:50:10
+        Log: more MULTIPLICITY tweaks
+     Branch: perl
+	   ! objpp.h perl.c perl.h proto.h win32/GenCAPI.pl win32/config.bc
+	   ! win32/config.gc win32/config.vc win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc
+____________________________________________________________________________
+[  1205] By: gsar                                  on 1998/06/23  09:03:46
+        Log: partial MULTIPLICITY cleanup
+     Branch: perl
+	   ! embedvar.h interp.sym intrpvar.h perl.c perlvars.h proto.h
+           ! thrdvar.h
+____________________________________________________________________________
+[  1204] By: gsar                                  on 1998/06/23  09:00:48
+        Log: tweak MANIFEST, add Dev_t to POSIX/typemap
+     Branch: perl
+           ! MANIFEST Porting/makerel README.win32 ext/POSIX/typemap
+____________________________________________________________________________
+[  1203] By: gsar                                  on 1998/06/23  07:08:02
+        Log: bump patchlevel to 68, Porting/makerel tweaks
+     Branch: perl
+	   ! Porting/makerel patchlevel.h win32/Makefile win32/config_H.bc
+           ! win32/config_H.gc win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1202] By: gsar                                  on 1998/06/23  06:16:19
+        Log: remove atomic.h pending resolution of licensing issues,
+             EMULATE_ATOMIC_REFCOUNTS everywhere
+     Branch: perl
+           - atomic.h
+           ! MANIFEST perl.h sv.h
+____________________________________________________________________________
+[  1201] By: gsar                                  on 1998/06/23  06:06:23
+        Log: applied patch, regen headers
+             From: Ilya Zakharevich 
+             Message-Id: <199806220819.EAA03295@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Malloc size feedback
+             Date: Mon, 22 Jun 1998 04:19:45 -0400 (EDT)
+     Branch: perl
+	   ! ObjXSub.h av.c embed.h global.sym hv.c malloc.c objpp.h perl.c
+           ! pp_sys.c proto.h sv.c toke.c
+____________________________________________________________________________
+[  1200] By: gsar                                  on 1998/06/23  05:59:09
+        Log: Message-Id: 
+             Date: Mon, 22 Jun 1998 21:19:43 -0500 (CDT)
+             From: Stephen McCamant 
+             Subject: [PATCH] Inheritance of B:: classes
+     Branch: perl
+           ! ext/B/B.pm
+____________________________________________________________________________
+[  1199] By: gsar                                  on 1998/06/23  05:57:58
+        Log: applied patch, moved #define mkfifo ... from perl.h to POSIX.xs
+             Date: Tue, 23 Jun 1998 00:01:02 +0300 (EET DST)
+             Message-Id: <199806222101.AAA16456@alpha.hut.fi>
+             Subject: [PATCH] _67: somebody said POSIX::mknod?
+             From: Jarkko Hietaniemi 
+     Branch: perl
+	   ! Configure config_h.SH ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod
+           ! ext/POSIX/POSIX.xs perl.h
+____________________________________________________________________________
+[  1198] By: gsar                                  on 1998/06/23  05:48:56
+        Log: Date: Mon, 22 Jun 1998 14:10:46 -0600 (MDT)
+             From: Daniel Grisinger 
+             Subject: PATCH [5.004_67] perldoc.PL
+             Message-ID: 
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  1197] By: gsar                                  on 1998/06/23  05:47:24
+        Log: Message-Id: <3.0.5.32.19980622092918.00aa46e0@ous.edu>
+             Date: Mon, 22 Jun 1998 09:29:18 -0700
+             From: Dan Sugalski 
+             Subject: [PATCH 5.004_67] Autosplit's not qite case-insensitive enough on VMS
+     Branch: perl
+           ! lib/AutoSplit.pm
+____________________________________________________________________________
+[  1196] By: gsar                                  on 1998/06/23  05:45:19
+        Log: Date: Mon, 22 Jun 1998 18:58:55 +0300 (EET DST)
+             Message-Id: <199806221558.SAA18626@alpha.hut.fi>
+             Subject: [PATCH] 5.004_67: Fcntl: add few constants, enhance maintainability
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
+____________________________________________________________________________
+[  1195] By: gsar                                  on 1998/06/23  05:43:32
+        Log: Message-Id: 
+             Date: Mon, 22 Jun 1998 15:22:24 +0000
+             From: Dominic Dunlop 
+             Subject: [PATCH 5.004_67] Amend tests/regexp.t for variable REG_INFTY;
+             update machten.sh to vary REG_INFTY
+     Branch: perl
+           ! hints/machten.sh t/op/re_tests t/op/regexp.t
+____________________________________________________________________________
+[  1194] By: gsar                                  on 1998/06/23  05:38:36
+        Log: filter out array subscripts when generating symbols for AIX
+             Date: Mon, 22 Jun 1998 12:14:31 +0300 (EET DST)
+             Message-Id: <199806220914.MAA13631@alpha.hut.fi>
+             Subject: [PATCH] 5.004_67: perl.exp bug, AIX unhappy
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! perl_exp.SH
+____________________________________________________________________________
+[  1193] By: gsar                                  on 1998/06/23  05:32:52
+        Log: updated hints file to cope with buggy sigsetjmp() on Solaris-x86
+             Message-Id: <199806221102.NAA12106@alanya.m.isar.de>
+             Date: Mon, 22 Jun 1998 13:02:45 +0200 (MET DST)
+             From: Lupe Christoph 
+             Subject: Re: Perl 5.004_67: Death is on vacation - miniperl can't die 
+     Branch: perl
+           ! hints/solaris_2.sh
+____________________________________________________________________________
+[  1192] By: gsar                                  on 1998/06/23  05:27:13
+        Log: add detailed changelogs and 'genlog'--the script which generates them
+     Branch: perl
+           + Porting/genlog
+           ! Changes INSTALL
+____________________________________________________________________________
+[  1191] By: gsar                                  on 1998/06/22  15:56:27
+        Log: tweak win32 makefiles for PERL_OBJECT build
+     Branch: perl
+           ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1190] By: gsar                                  on 1998/06/22  04:06:02
+        Log: backout change#1178 as it was dependent on an unapplied patch,
+             fix filespec.t to know its @INC
+     Branch: perl
+           ! sv.c t/lib/filespec.t
+____________________________________________________________________________
+[  1189] By: gsar                                  on 1998/06/22  03:47:43
+        Log: eliminate use of tokenbuf in util.c
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[  1188] By: gsar                                  on 1998/06/22  01:53:59
+        Log: add patch that generates regnodes.h via regcomp.pl
+             From: Ilya Zakharevich 
+             Message-Id: <199806212038.QAA29797@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] regcomp.h regnodes cleanup
+             Date: Sun, 21 Jun 1998 16:38:21 -0400 (EDT)
+     Branch: perl
+           + regcomp.pl regcomp.sym regnodes.h
+           ! MANIFEST Makefile.SH regcomp.h
+____________________________________________________________________________
+[  1187] By: gsar                                  on 1998/06/22  01:42:21
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806210145.VAA21629@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Avoid temporaries on recursion
+             Date: Sat, 20 Jun 1998 21:45:03 -0400 (EDT)
+     Branch: perl
+           ! pp_ctl.c pp_hot.c
+____________________________________________________________________________
+[  1186] By: gsar                                  on 1998/06/22  01:14:14
+        Log: merge relevant portions from maintbranch change#1155
+     Branch: perl
+	   ! lib/Math/BigFloat.pm op.c pod/perlfunc.pod pod/perlop.pod
+           ! pod/perlrun.pod pp_hot.c
+____________________________________________________________________________
+[  1185] By: gsar                                  on 1998/06/22  00:59:28
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806210827.EAA26322@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Zero-length matching bug
+             Date: Sun, 21 Jun 1998 04:27:16 -0400 (EDT)
+     Branch: perl
+           ! regexec.c t/op/pat.t
+____________________________________________________________________________
+[  1184] By: gsar                                  on 1998/06/22  00:57:27
+        Log: fix alignment issues in malloc.c on 64-bit platforms (via private mail)
+             From: Ilya Zakharevich 
+             Message-Id: <199806170844.EAA24584@monk.mps.ohio-state.edu>
+             Subject: Re: _67 not okay
+             Date: Wed, 17 Jun 1998 04:44:26 -0400 (EDT)
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[  1183] By: gsar                                  on 1998/06/22  00:53:37
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806210727.DAA24072@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Test study/re/
+             Date: Sun, 21 Jun 1998 03:27:13 -0400 (EDT)
+     Branch: perl
+           ! t/op/pat.t
+____________________________________________________________________________
+[  1182] By: gsar                                  on 1998/06/21  21:25:07
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806210430.AAA21818@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] $^R documented
+             Date: Sun, 21 Jun 1998 00:30:48 -0400 (EDT)
+     Branch: perl
+           ! pod/perlre.pod pod/perlvar.pod
+____________________________________________________________________________
+[  1181] By: gsar                                  on 1998/06/21  21:23:41
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806210111.VAA17752@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Re docs
+             Date: Sat, 20 Jun 1998 21:11:37 -0400 (EDT)
+     Branch: perl
+           ! pod/perlop.pod pod/perlre.pod
+____________________________________________________________________________
+[  1180] By: gsar                                  on 1998/06/21  21:22:16
+        Log: adapted contents of message into comments in malloc.c and INSTALL
+             From: Ilya Zakharevich 
+             Message-Id: <199806162240.SAA23597@monk.mps.ohio-state.edu>
+             Subject: [5.004_67] malloc.c -Defines
+             Date: Tue, 16 Jun 1998 18:40:41 -0400 (EDT)
+     Branch: perl
+           ! INSTALL malloc.c
+____________________________________________________________________________
+[  1179] By: gsar                                  on 1998/06/21  07:26:35
+        Log: applied patch, with edits to the prose
+             From: Ilya Zakharevich 
+             Message-Id: <199806201936.PAA17499@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Error variables compared
+             Date: Sat, 20 Jun 1998 15:36:14 -0400 (EDT)
+     Branch: perl
+           ! pod/perlvar.pod
+____________________________________________________________________________
+[  1178] By: gsar                                  on 1998/06/21  07:07:16
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806200104.VAA11343@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] print study /re/ broken
+             Date: Fri, 19 Jun 1998 21:04:54 -0400 (EDT)
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[  1177] By: gsar                                  on 1998/06/21  07:06:10
+        Log: applied patch, tweaked wording
+             From: Ilya Zakharevich 
+             Message-Id: <199806200838.EAA13992@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Documentation patch for malloc
+             Date: Sat, 20 Jun 1998 04:38:07 -0400 (EDT)
+     Branch: perl
+           ! malloc.c pod/perldiag.pod
+____________________________________________________________________________
+[  1176] By: gsar                                  on 1998/06/21  07:00:30
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806200829.EAA13974@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Cosmetic malloc patch
+             Date: Sat, 20 Jun 1998 04:29:00 -0400 (EDT)
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[  1175] By: gsar                                  on 1998/06/21  06:58:37
+        Log: Message-Id: <3.0.5.32.19980619160057.032e7480@ous.edu>
+             Date: Fri, 19 Jun 1998 16:00:57 -0700
+             From: Dan Sugalski 
+             Subject: [PATCH 5.004_67] fixup patches for VMS
+     Branch: perl
+	   ! ext/SDBM_File/sdbm/Makefile.PL t/lib/filecopy.t t/op/defins.t
+           ! t/op/taint.t vms/test.com vms/vms.c
+____________________________________________________________________________
+[  1174] By: gsar                                  on 1998/06/21  06:55:18
+        Log: applied VMS patch from Dan Sugalski
+             Date: Fri, 19 Jun 1998 15:36:34 -0700
+             From: SYSTEM@cedar.osshe.edu
+             Message-Id: <980619153634.2063ee12@cedar.osshe.edu>
+             Subject: [PATCH 5.004_67] Enhancements to the VMS configuration procedures
+     Branch: perl
+	   ! configure.com lib/ExtUtils/MM_VMS.pm perl.h
+	   ! vms/descrip_mms.template vms/gen_shrfls.pl
+           ! vms/subconfigure.com
+____________________________________________________________________________
+[  1173] By: gsar                                  on 1998/06/21  06:51:38
+        Log: applied patch, modified logic to avoid reentering lexer at compile-time
+             Message-ID: <19980619113104.S9711@asic.sc.ti.com>
+             Date: Fri, 19 Jun 1998 11:31:04 -0500
+             From: Graham Barr 
+             Subject: Re: [PATCH perl5.004_67] Add Errno in ext/
+     Branch: perl
+	   ! Configure MANIFEST Makefile.SH ext/util/make_ext gv.c
+           ! lib/English.pm
+____________________________________________________________________________
+[  1172] By: gsar                                  on 1998/06/21  06:27:57
+        Log: applied patch, along with many changes:
+             - ipfoo.h headers have been coalesced along with perlfoo.h into
+             iperlsys.h
+             - win32/cp*.h have been combined in perlhost.h
+             - CPerlObj::PerlParse() takes an extra xsinit arg
+             - tweaks to get dl_win32.xs compiling again w/ PERL_OBJECT
+             From: "Douglas Lankshear" 
+             Message-Id: <000001bd9b8c$0417fe90$a32fa8c0@tau.Active>
+             Subject: RE: [PATCH 5.004_67] Fixes for broken MS compiler 
+             Date: Fri, 19 Jun 1998 10:59:50 -0700
+     Branch: perl
+           + iperlsys.h win32/perlhost.h
+	   - ipdir.h ipenv.h iplio.h ipmem.h ipproc.h ipsock.h ipstdio.h
+	   - perldir.h perlenv.h perlio.h perllio.h perlmem.h perlproc.h
+           - perlsock.h
+	   ! MANIFEST mg.h op.h perl.h perlio.c proto.h util.c
+	   ! win32/Makefile win32/dl_win32.xs win32/makefile.mk
+           ! win32/runperl.c win32/win32.h
+____________________________________________________________________________
+[  1171] By: gsar                                  on 1998/06/21  00:44:42
+        Log: Date: Fri, 19 Jun 1998 07:55:19 -0600 (MDT)
+             From: Daniel Grisinger 
+             Subject: Re: PATCH _67 (Doc) perlop.pod 
+             Message-ID: 
+     Branch: perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[  1170] By: gsar                                  on 1998/06/21  00:43:06
+        Log: a tweaked version of:
+             From: "Douglas Lankshear" 
+             Subject: [PATCH 5.004_67] Win32 using PerlCRT.dll
+             Date: Wed, 17 Jun 1998 20:25:51 -0700
+             Message-ID: <001b01bd9a68$cb752410$a32fa8c0@tau.Active>
+     Branch: perl
+           ! lib/ExtUtils/MM_Win32.pm win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1169] By: gsar                                  on 1998/06/21  00:10:18
+        Log: added patch, regen headers
+             From: Ilya Zakharevich 
+             Message-Id: <199806190227.WAA07371@monk.mps.ohio-state.edu>
+             Subject: Re: Ilya's patches
+             Date: Thu, 18 Jun 1998 22:27:31 -0400 (EDT)
+     Branch: perl
+           ! ObjXSub.h embedvar.h interp.sym intrpvar.h toke.c
+____________________________________________________________________________
+[  1168] By: gsar                                  on 1998/06/21  00:05:01
+        Log: Date: Thu, 18 Jun 1998 23:37:32 -0700 (PDT)
+             From: Tom Phoenix 
+             Subject: [PATCH] docs creating files via open
+             Message-ID: 
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[  1167] By: gsar                                  on 1998/06/21  00:03:34
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806172151.RAA28441@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_67] Better version of malloc improver
+             Date: Wed, 17 Jun 1998 17:51:54 -0400 (EDT)
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[  1166] By: gsar                                  on 1998/06/20  23:59:23
+        Log: enhance perlre.pod to say C<)> can't appear in a (?#...) comment
+     Branch: perl
+           ! pod/perlre.pod
+____________________________________________________________________________
+[  1165] By: gsar                                  on 1998/06/20  23:47:09
+        Log: added patch, tweaked missed files, excised comment that doesn't really
+             belong in the sources
+             From: joshua.pritikin@db.com
+             Date: Mon, 15 Jun 1998 10:03:37 -0400
+             Message-Id: 
+             Subject: [PATCH 5.004_57] tied hash slice & do_kv cleanup
+     Branch: perl
+	   ! ObjXSub.h av.c doop.c embed.h global.sym objpp.h pp.c proto.h
+           ! t/op/avhv.t
+____________________________________________________________________________
+[  1164] By: gsar                                  on 1998/06/20  23:29:09
+        Log: add File-Spec-0.6 from CPAN
+     Branch: perl
+	   + lib/File/Spec.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 t/lib/filespec.t
+           ! MANIFEST
+____________________________________________________________________________
+[  1163] By: gsar                                  on 1998/06/20  23:15:41
+        Log: tweaks to allow both mingw32{gcc-2.8.1,egcs-1.0.2} build and test
+     Branch: perl
+           ! ext/POSIX/POSIX.xs win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1162] By: gsar                                  on 1998/06/20  21:48:32
+        Log: manual integration of all outstanding ansi branch stuff into mainline
+     Branch: perl
+	   ! ext/POSIX/POSIX.xs lib/ExtUtils/MM_Win32.pm t/op/ipcsem.t
+	   ! win32/config.gc win32/dl_win32.xs win32/makefile.mk
+           ! win32/win32.h
+____________________________________________________________________________
+[  1161] By: gsar                                  on 1998/06/20  21:12:01
+        Log: undo goofed change 1157 (backed out the fix instead of keeping it)
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  1160] By: nick                                  on 1998/06/20  21:05:51
+        Log: Patches to build with EGCS-1.0.2 Mingw32 port.
+     Branch: ansiperl
+	   ! ext/POSIX/POSIX.xs win32/config.gc win32/config_H.gc
+           ! win32/dl_win32.xs win32/makefile.mk win32/win32.h
+____________________________________________________________________________
+[  1159] By: gsar                                  on 1998/06/20  02:51:35
+        Log: cleanup installation of utilities on win32
+     Branch: perl
+	   ! installperl pod/Makefile win32/Makefile win32/makefile.mk
+           ! win32/pod.mak
+____________________________________________________________________________
+[  1158] By: gsar                                  on 1998/06/20  02:50:35
+        Log: intuit @INC pathnames from exe location only if dll location
+             is unknown (ensures that multiple executables will coexist)
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  1157] By: gsar                                  on 1998/06/20  02:48:34
+        Log: make perldoc ignore null files (it tried to open() them)
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  1156] By: gsar                                  on 1998/06/19  21:18:47
+        Log: fix perldoc to ignore unfound null filenames
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[  1155] By: TimBunce                              on 1998/06/19  18:47:57
+        Log: Assorted patches:
+             
+             ------  BUILD PROCESS  ------
+             
+             Title:  "Clarify varargs issues in INSTALL docs"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  INSTALL
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "Further fixes for updated SysV IPC support"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199805211644.TAA15139@alpha.hut.fi>
+             Files:  Configure perl.h doio.c
+             
+             Title:  "Fixed SEGV caused by bug in pp_hot.c:pp_sassign()"
+             From:  Andrew Bettison 
+             Msg-ID:  
+             Files:  pp_hot.c
+             
+             Title:  "Invalidate method cache on C"
+             From:  Chip Salzenberg 
+             Msg-ID:  <19980604134731.D24343@perlsupport.com>
+             Files:  scope.c t/op/method.t
+             
+             Title:  "fix uninitialized cv variable in op.c"
+             From:  joshua.pritikin@db.com
+             Msg-ID:  
+             Files:  op.c
+             
+             Title:  "fix for undef as last arg to setsockopt"
+             From:  Graham Barr 
+             Msg-ID:  <19980603112219.B7638@asic.sc.ti.com>
+             Files:  pp_sys.c
+             
+             Title:  "Fix -i when @ARGV is empty"
+             From:  Chip Salzenberg , Gurusamy Sarathy
+             , Ilya Zakharevich
+             , Tim.Bunce@ig.co.uk (Tim Bunce)
+             Msg-ID:  <19980606184942.A4583@perlsupport.com>,
+             <199806070029.UAA18709@monk.mps.ohio-state.edu>,
+             <199806071817.OAA28141@aatma.engin.umich.edu>,
+             <199806191549.QAA16376@toad.ig.co.uk>
+             Files:  pp_hot.c
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "Discrepancy between perlop.pod and m// operator docs"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perlop.pod
+             
+             Title:  "Doc addition for perlfunc entry for system()"
+             From:  Ilya Zakharevich , Mike Fletcher
+             
+             Msg-ID:  <199806011908.PAA31069@dewdrop2.mindspring.com>,
+             <199806012057.QAA26830@monk.mps.ohio-state.edu>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Clarify effects of using quotes with m operator"
+             From:  Daniel Grisinger 
+             Msg-ID:  
+             Files:  pod/perlop.pod
+             
+             Title:  "Document -i with STDIN"
+             From:  joshua.pritikin@db.com
+             Msg-ID:  
+             Files:  pod/perlrun.pod
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "Fix Liblist.pm to tolerate backslashen in paths"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199806011954.PAA10900@aatma.engin.umich.edu>
+             Files:  lib/ExtUtils/Liblist.pm
+             
+             ------  LIBRARY  ------
+             
+             Title:  "Typo fix for Math::BogFloat"
+             From:  Mike Stok 
+             Msg-ID:  
+             Files:  lib/Math/BigFloat.pm
+             
+             ------  PORTABILITY - GENERAL  ------
+             
+             Title:  "Add docs about types of diff to Porting/patching.pod"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199806090105.VAA20005@aatma.engin.umich.edu>
+             Files:  Porting/patching.pod
+             
+             Title:  "Set dont_use_nlink for PowerMAX OS 4.2"
+             From:  Tom Horsley 
+             Msg-ID:  <199806161354.NAA21316@cleo.ssd.hcsc.com>
+             Files:  hints/powerux.sh
+             
+             Title:  "Assorted improvements to hints/solaris_2.sh"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  hints/solaris_2.sh
+     Branch: maint-5.004/perl
+	   ! Configure INSTALL Porting/patching.pod doio.c hints/powerux.sh
+	   ! hints/solaris_2.sh lib/ExtUtils/Liblist.pm
+	   ! lib/Math/BigFloat.pm op.c perl.h pod/perlfunc.pod
+	   ! pod/perlop.pod pod/perlrun.pod pp_hot.c pp_sys.c scope.c
+           ! t/op/method.t
+____________________________________________________________________________
+[  1154] By: gsar                                  on 1998/06/19  17:22:23
+        Log: update repository copy of Asmdata.pm after `perl bytecode.pl`
+     Branch: perl
+           ! ext/B/B/Asmdata.pm regcomp.c
+____________________________________________________________________________
+[  1153] By: nick                                  on 1998/06/19  17:21:21
+        Log: Use libxxx.a for -lxxx with GCC
+     Branch: ansiperl
+	   ! lib/ExtUtils/MM_Win32.pm win32/config.gc win32/config_H.gc
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1152] By: TimBunce                              on 1998/06/19  17:08:18
+        Log: Title:  Tom's jumbo doc patch
+             From:   Tom Christiansen 
+             Msg-Id: <199806140419.WAA20549@chthon.perl.com>
+             Files:  pod/perl.pod pod/perlbook.pod pod/perldata.pod pod/perldsc.pod
+             pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
+             pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+             pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
+             pod/perlfaq9.pod pod/perlform.pod pod/perlfunc.pod
+             pod/perlipc.pod pod/perllocale.pod pod/perllol.pod
+             pod/perlmod.pod pod/perlmodlib.pod pod/perlobj.pod
+             pod/perlop.pod pod/perlre.pod pod/perlref.pod
+             pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod
+             pod/perlsyn.pod pod/perltie.pod pod/perltoot.pod
+             pod/perlvar.pod
+     Branch: maint-5.004/perl
+	   ! pod/perl.pod pod/perlbook.pod pod/perldata.pod pod/perldsc.pod
+	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
+	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
+	   ! pod/perlfaq9.pod pod/perlform.pod pod/perlfunc.pod
+	   ! pod/perlipc.pod pod/perllocale.pod pod/perllol.pod
+	   ! pod/perlmod.pod pod/perlmodlib.pod pod/perlobj.pod
+	   ! pod/perlop.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
+	   ! pod/perlsec.pod pod/perlsub.pod pod/perlsyn.pod
+           ! pod/perltie.pod pod/perltoot.pod pod/perlvar.pod
+____________________________________________________________________________
+[  1151] By: nick                                  on 1998/06/19  15:38:28
+        Log: Resolve latest
+     Branch: ansiperl
+	  !> av.c embed.h embedvar.h ext/Socket/Socket.xs global.sym
+	  !> hints/powerux.sh mg.c perl.h pod/perlsub.pod pp_ctl.c proto.h
+          !> sv.c t/TEST
+____________________________________________________________________________
+[  1150] By: gsar                                  on 1998/06/18  20:43:07
+        Log: Date: Tue, 16 Jun 1998 13:54:17 GMT
+             Message-Id: <199806161354.NAA21316@cleo.ssd.hcsc.com>
+             From: Tom Horsley 
+             Subject: [PATCH] perl5.004 hints file (maint and dev paths)
+     Branch: perl
+           ! hints/powerux.sh
+____________________________________________________________________________
+[  1149] By: gsar                                  on 1998/06/18  20:41:30
+        Log: hand apply whitespace-mutiliated patch
+             From: joshua.pritikin@db.com
+             Date: Mon, 15 Jun 1998 09:21:36 -0400
+             Message-Id: 
+             Subject: [PATCH 5.004_67] SvREADONLY for av_clear
+     Branch: perl
+           ! av.c
+____________________________________________________________________________
+[  1148] By: gsar                                  on 1998/06/18  20:33:59
+        Log: hand apply whitespace-mutiliated and reversed patch
+             Date: Tue, 16 Jun 1998 16:31:40 -0400
+             From: Les Peters 
+             Message-Id: <199806162031.QAA08202@ds9>
+             Subject: [PATCH 5.004_67] Socket.xs tweak for IRIX 6.3
+     Branch: perl
+           ! ext/Socket/Socket.xs
+____________________________________________________________________________
+[  1147] By: gsar                                  on 1998/06/18  20:26:59
+        Log: close child pipe in t/TEST, other cosmetic tweaks
+     Branch: perl
+           ! t/TEST
+____________________________________________________________________________
+[  1146] By: gsar                                  on 1998/06/18  19:37:41
+        Log: back out problematic change#1105, tweak perlsub.pod
+     Branch: perl
+	   ! embed.h embedvar.h global.sym mg.c perl.h pod/perlsub.pod
+           ! pp_ctl.c proto.h sv.c
+____________________________________________________________________________
+[  1145] By: nick                                  on 1998/06/18  19:31:07
+        Log: Integrate and resolve -at mainline to ansiperl prior to Ming32 hacking
+     Branch: ansiperl
+	  +> configure.com ext/DB_File/dbinfo
+	  +> ext/DynaLoader/DynaLoader_pm.PL t/base/rs.t
+	  +> t/op/regexp_noamp.t vms/descrip_mms.template vms/munchconfig.c
+          +> vms/subconfigure.com
+	   - ext/DynaLoader/DynaLoader.pm.PL vms/config.vms vms/descrip.mms
+           - vms/fndvers.com
+          !> (integrate 499 files)
+____________________________________________________________________________
+[  1144] By: gsar                                  on 1998/06/18  16:35:11
+        Log: fix spurious cxstack_max init that trampled memory
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[  1143] By: gsar                                  on 1998/06/18  16:33:01
+        Log: fix memory leaks and uninitialized memory accesses found by Purify
+     Branch: perl
+           ! doio.c perl.c regexec.c sv.c
+____________________________________________________________________________
+[  1142] By: gsar                                  on 1998/06/18  16:28:48
+        Log: fix off-by-one that trampled memory in re_croak2()
+     Branch: perl
+           ! regcomp.c
+____________________________________________________________________________
+[  1141] By: gsar                                  on 1998/06/18  16:26:59
+        Log: fix AutoLoader to do the right thing when there are relative paths
+             in @INC
+     Branch: perl
+           ! lib/AutoLoader.pm
+____________________________________________________________________________
+[  1140] By: gsar                                  on 1998/06/18  16:22:47
+        Log: fix Makefile.SH typo
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1139] By: gsar                                  on 1998/06/17  18:06:16
+        Log: 5.004_67 niggles
+     Branch: perl
+           ! Makefile.SH op.c
+
+----------------
+Version 5.004_67
+----------------
+
+____________________________________________________________________________
+[  1138] By: gsar                                  on 1998/06/15  10:09:27
+        Log: up patchlevel.h to 67, other small tweaks
+     Branch: perl
+	   ! patchlevel.h pod/perlhist.pod pod/perltoc.pod vms/perly_c.vms
+	   ! win32/Makefile win32/config_H.bc win32/config_H.gc
+           ! win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[  1137] By: gsar                                  on 1998/06/15  09:08:57
+        Log: tweaks to get PERL_OBJECT building again; passes tests
+     Branch: perl
+           ! ObjXSub.h objpp.h proto.h
+____________________________________________________________________________
+[  1136] By: gsar                                  on 1998/06/15  08:51:54
+        Log: back out previous change (it breaks PERL_OBJECT)
+     Branch: perl
+	   ! ObjXSub.h cc_runtime.h embed.h embedvar.h global.sym
+	   ! interp.sym intrpvar.h objpp.h perl.c perl.h pod/perldiag.pod
+           ! pod/perlguts.pod pp_ctl.c proto.h scope.c scope.h util.c
+____________________________________________________________________________
+[  1135] By: gsar                                  on 1998/06/15  05:32:01
+        Log: added patch, fixed typo, reworked documentation
+             Message-Id: 
+             Date:    Sun, 14 Jun 1998 14:03:15 EDT
+             From:    joshua.pritikin@db.com
+             Subject: [PATCH 5.004_66] JMPENV!
+     Branch: perl
+	   ! ObjXSub.h cc_runtime.h embed.h embedvar.h global.sym
+	   ! interp.sym intrpvar.h objpp.h perl.c perl.h pod/perldiag.pod
+           ! pod/perlguts.pod pp_ctl.c proto.h scope.c scope.h util.c
+____________________________________________________________________________
+[  1134] By: gsar                                  on 1998/06/15  04:07:18
+        Log: various win32 odds and ends
+             - added support for waitpid(), open2/open3, and a bugfix for kill()
+             from Ronald Schmidt 
+             - tweak testsuite mods of above
+             - regenerate win32/config_H.?c
+             - change kill() to win32_kill() and export it
+             - coalesce common code in win32.c
+             - add PerlProc_waitpid() and export win32_waitpid()
+             result builds and passes on the three win32 compilers
+     Branch: perl
+	   ! ipproc.h lib/IPC/Open3.pm perlproc.h t/lib/open2.t
+	   ! t/lib/open3.t util.c win32/config.bc win32/config.gc
+	   ! win32/config.vc win32/config_H.bc win32/config_H.gc
+	   ! win32/config_H.vc win32/makedef.pl win32/runperl.c
+           ! win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[  1133] By: gsar                                  on 1998/06/15  01:39:13
+        Log: newer Getopt/Long.pm from public distribution cited in:
+             Message-Id: 
+             Date:    14 Jun 1998 15:15:28 +0200
+             From:    Johan Vromans 
+             Subject: Getopt::Long version 2.17 released
+     Branch: perl
+           ! lib/Getopt/Long.pm
+____________________________________________________________________________
+[  1132] By: gsar                                  on 1998/06/15  01:37:12
+        Log: documentation update from tchrist
+             Message-Id: <199806140419.WAA20549@chthon.perl.com>
+             Date:    Sat, 13 Jun 1998 22:19:32 MDT
+             From:    Tom Christiansen 
+             Subject: doc patches
+     Branch: perl
+	   ! pod/perl.pod pod/perlbook.pod pod/perldata.pod pod/perldsc.pod
+	   ! pod/perlfaq.pod pod/perlfaq1.pod pod/perlfaq2.pod
+	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+	   ! pod/perlfaq6.pod pod/perlfaq7.pod pod/perlfaq8.pod
+	   ! pod/perlfaq9.pod pod/perlform.pod pod/perlfunc.pod
+	   ! pod/perlipc.pod pod/perllocale.pod pod/perllol.pod
+	   ! pod/perlmod.pod pod/perlmodlib.pod pod/perlobj.pod
+	   ! pod/perlop.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
+	   ! pod/perlsec.pod pod/perlsub.pod pod/perlsyn.pod
+           ! pod/perltie.pod pod/perltoot.pod pod/perlvar.pod
+____________________________________________________________________________
+[  1131] By: gsar                                  on 1998/06/14  19:33:36
+        Log: Message-ID: 
+             From: Roderick Schertler 
+             Subject: [PATCH] Re: Exceptions in IPC::Open2
+             Date: 12 Jun 1998 13:24:15 -0400
+     Branch: perl
+           ! lib/IPC/Open3.pm
+____________________________________________________________________________
+[  1130] By: gsar                                  on 1998/06/14  19:32:25
+        Log: fixup MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[  1129] By: gsar                                  on 1998/06/14  18:51:53
+        Log: various win32 fixes
+             - fixes that silence VC noises about dup exports, non-default libs, and
+             unsupported *.def file directives
+             - s/inplace/inplace_label/ malloc.c
+             - update Config{usemymalloc} based on d_mymalloc
+             - export Perl_*Vars
+             - fix makefiles to not build miniperl.exe twice, and to make it properly
+             when defaults are changed
+     Branch: perl
+	   ! lib/ExtUtils/MM_Win32.pm lib/ExtUtils/Mksymlists.pm malloc.c
+	   ! win32/Makefile win32/config_sh.PL win32/makedef.pl
+           ! win32/makefile.mk win32/perllib.c win32/win32.h
+____________________________________________________________________________
+[  1128] By: gsar                                  on 1998/06/14  01:38:39
+        Log: remove unused global `scrgv'
+     Branch: perl
+           ! ObjXSub.h cygwin32/cw32imp.h embedvar.h perlvars.h
+____________________________________________________________________________
+[  1127] By: nick                                  on 1998/06/13  08:39:07
+        Log: Move specialsv_list to embed.sym, regen embed*.h
+     Branch: win32/perl
+           ! embed.h embedvar.h global.sym interp.sym
+____________________________________________________________________________
+[  1126] By: gsar                                  on 1998/06/12  07:23:06
+        Log: From: jan.dubois@ibm.net (Jan Dubois)
+             Subject: Re: execv in toke.c [PATCH]: win32 wrapper for _66
+             Date: Thu, 11 Jun 1998 21:13:31 +0200
+             Message-ID: <35842ac5.7883075@smtp1.ibm.net>
+     Branch: perl
+           ! win32/makedef.pl win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[  1125] By: gsar                                  on 1998/06/12  07:21:29
+        Log: added patch, undo earlier workaround
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Subject: Re: Why does saferealloc(NULL,size) croak? [PATCH] against _66
+             Date: Thu, 11 Jun 1998 20:28:36 +0200
+             Message-ID: <35831f69.4975644@smtp1.ibm.net>
+     Branch: perl
+           ! perl.c util.c
+____________________________________________________________________________
+[  1124] By: gsar                                  on 1998/06/12  07:16:12
+        Log: hand-applied patch with wrapped lines
+             From: "Douglas Lankshear" 
+             Subject: [PATCH 5.004_66] Win32::Reg... bloat in Win32
+             Date: Thu, 11 Jun 1998 11:06:33 -0700
+             Message-ID: <000101bd9563$aae0c4c0$a32fa8c0@tau.Active>
+     Branch: perl
+           ! win32/win32.c
+____________________________________________________________________________
+[  1123] By: gsar                                  on 1998/06/12  07:07:25
+        Log: Date: Thu, 11 Jun 1998 12:40:05 -0400 (EDT)
+             From: Andy Dougherty 
+             Subject: [PATCH 5.004_66] Config_66-01-02.diff
+             Message-Id: 
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
+[  1122] By: gsar                                  on 1998/06/12  07:06:02
+        Log: Message-Id: 
+             Date: Thu, 11 Jun 1998 12:27:15 -0400 (EDT)
+             From: Andy Dougherty 
+             Subject: Re: [PATCH for _66] Makefile.SH problem on dos/djgpp 
+     Branch: perl
+	   ! pod/checkpods.PL pod/pod2html.PL pod/pod2latex.PL
+	   ! pod/pod2man.PL utils/c2ph.PL utils/h2ph.PL utils/h2xs.PL
+	   ! utils/perlbug.PL utils/perlcc.PL utils/perldoc.PL
+           ! utils/pl2pm.PL utils/splain.PL x2p/find2perl.PL x2p/s2p.PL
+____________________________________________________________________________
+[  1121] By: gsar                                  on 1998/06/12  07:01:20
+        Log: a tweaked version of:
+             Message-Id: 
+             Date: Fri, 12 Jun 1998 01:26:53 +0200
+             From: Hugo van der Sanden 
+             Subject: Re: Misparsing s///x
+     Branch: perl
+           ! pod/perlre.pod
+____________________________________________________________________________
+[  1120] By: gsar                                  on 1998/06/12  06:51:08
+        Log: applied patch, with indentation tweaks
+             From: Ilya Zakharevich 
+             Message-Id: <199806110803.EAA09149@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_66] Remove REG_ALIGN junk
+             Date: Thu, 11 Jun 1998 04:03:58 -0400 (EDT)
+     Branch: perl
+           ! regcomp.c regcomp.h regexec.c
+____________________________________________________________________________
+[  1119] By: gsar                                  on 1998/06/11  17:42:07
+        Log: make REG_INFTY default to something saner when sizeof(short) > 2
+             Message-Id: 
+             Date:    Thu, 11 Jun 1998 11:50:07 EDT
+             From:    Andy Dougherty 
+             Subject: Re: [PATCH for tests] Regexp fails on long string 
+     Branch: perl
+           ! regcomp.h
+____________________________________________________________________________
+[  1118] By: gsar                                  on 1998/06/11  07:09:06
+        Log: regen embedvar.h
+     Branch: perl
+           ! embedvar.h
+____________________________________________________________________________
+[  1117] By: gsar                                  on 1998/06/11  06:45:52
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806100751.DAA05441@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_66] Bugs with (?{}), $^R and many-to-many subst
+             Date: Wed, 10 Jun 1998 03:51:47 -0400 (EDT)
+     Branch: perl
+	   ! interp.sym intrpvar.h op.c op.h perl.c regcomp.c regcomp.h
+           ! regexec.c regexp.h t/op/pat.t t/op/subst.t
+____________________________________________________________________________
+[  1116] By: gsar                                  on 1998/06/11  06:35:54
+        Log: misc win32 fixes
+             From: "Douglas Lankshear" 
+             Subject: [PATCH 5.004_66]
+             Date: Wed, 10 Jun 1998 11:28:27 -0700
+             Message-ID: <001a01bd949d$8fd18050$a32fa8c0@tau.Active>
+     Branch: perl
+           ! ObjXSub.h perl.c win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1115] By: gsar                                  on 1998/06/11  06:33:21
+        Log: Message-ID: <19980610005325.D162@cdata.tvnet.hu>
+             Date: Wed, 10 Jun 1998 00:53:25 +0200
+             From: Laszlo Molnar 
+             Subject: [PATCH for _66] Makefile.SH problem on dos/djgpp
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[  1114] By: gsar                                  on 1998/06/11  06:31:34
+        Log: back out change#1111 and add alternative patch:
+             From: Ilya Zakharevich 
+             Message-Id: <199806101538.LAA07293@monk.mps.ohio-state.edu>
+             Subject: Re: PATCH for study/foo/
+             Date: Wed, 10 Jun 1998 11:38:58 -0400 (EDT)
+     Branch: perl
+           ! pp.c sv.c
+____________________________________________________________________________
+[  1113] By: gsar                                  on 1998/06/11  02:59:23
+        Log: fix outdated bytecode.pl
+     Branch: perl
+           ! bytecode.h bytecode.pl byterun.c byterun.h
+____________________________________________________________________________
+[  1112] By: gsar                                  on 1998/06/10  07:56:06
+        Log: Added patch, regenerated perly.c and perly.c.diff
+             Message-Id: 
+             Date: Sun, 31 May 1998 12:56:14 -0500 (CDT)
+             From: Stephen McCamant 
+             Subject: [PATCH] too many RV2GVs in *foo{THING}
+     Branch: perl
+           ! perly.c perly.c.diff perly.y t/op/gv.t
+____________________________________________________________________________
+[  1111] By: gsar                                  on 1998/06/10  07:40:30
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806100309.XAA04974@monk.mps.ohio-state.edu>
+             Subject: Re: PATCH for study/foo/
+             Date: Tue, 9 Jun 1998 23:09:55 -0400 (EDT)
+     Branch: perl
+           ! pp.c
+____________________________________________________________________________
+[  1110] By: gsar                                  on 1998/06/10  07:37:04
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806100219.WAA04865@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_66] -DL and PERL_DEBUG_MSTATS unravelled
+             Date: Tue, 9 Jun 1998 22:19:02 -0400 (EDT)
+     Branch: perl
+           ! pod/perldebug.pod
+____________________________________________________________________________
+[  1109] By: gsar                                  on 1998/06/10  07:35:29
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806100302.XAA04958@monk.mps.ohio-state.edu>
+             Subject: Re: [PATCH 5.004_66] REG_INFTY patch corrected
+             Date: Tue, 9 Jun 1998 23:02:52 -0400 (EDT)
+     Branch: perl
+           ! regcomp.h
+____________________________________________________________________________
+[  1108] By: gsar                                  on 1998/06/10  07:31:25
+        Log: Added patch, tweaked other places affected by name change
+             Message-ID: <19980610005417.G162@cdata.tvnet.hu>
+             Date: Wed, 10 Jun 1998 00:54:17 +0200
+             From: Laszlo Molnar 
+             Subject: [PATCH] file name DynaLoader.pm.PL is 8.3 unfriendly
+     Branch: perl
+          +> ext/DynaLoader/DynaLoader_pm.PL
+           - ext/DynaLoader/DynaLoader.pm.PL
+	   ! MANIFEST ext/DynaLoader/Makefile.PL win32/Makefile
+           ! win32/makefile.mk
+____________________________________________________________________________
+[  1107] By: gsar                                  on 1998/06/10  07:24:20
+        Log: Message-ID: <19980610005342.E162@cdata.tvnet.hu>
+             Date: Wed, 10 Jun 1998 00:53:42 +0200
+             From: Laszlo Molnar 
+             Subject: [PATCH for _66] new version of README.dos
+     Branch: perl
+           ! README.dos
+____________________________________________________________________________
+[  1106] By: gsar                                  on 1998/06/10  07:22:31
+        Log: Message-ID: <19980610005404.F162@cdata.tvnet.hu>
+             Date: Wed, 10 Jun 1998 00:54:04 +0200
+             From: Laszlo Molnar 
+             Subject: [PATCH for _66] op/taint.t problem on dos/djgpp
+     Branch: perl
+           ! t/op/taint.t
+____________________________________________________________________________
+[  1105] By: gsar                                  on 1998/06/10  07:21:21
+        Log: Applied patch, followed by tweaks to *.sym and `perl embed.pl`
+             From: Ilya Zakharevich 
+             Message-Id: <199806090216.WAA02041@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_66] Resend of RE cache patch (modified)
+             Date: Mon, 8 Jun 1998 22:16:56 -0400 (EDT)
+     Branch: perl
+	   ! embed.h embedvar.h global.sym intrpvar.h mg.c perl.h
+           ! perlvars.h pp_ctl.c proto.h sv.c
+____________________________________________________________________________
+[  1104] By: gsar                                  on 1998/06/10  07:06:01
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806090210.WAA02027@monk.mps.ohio-state.edu>
+             Subject: Lost chunk of RE jumbo patch
+             Date: Mon, 8 Jun 1998 22:10:52 -0400 (EDT)
+     Branch: perl
+           + t/op/regexp_noamp.t
+____________________________________________________________________________
+[  1103] By: gsar                                  on 1998/06/10  07:04:20
+        Log: From: Ilya Zakharevich 
+             Message-Id: <199806090207.WAA02015@monk.mps.ohio-state.edu>
+             Subject: [PATCH 5.004_66] Combined OS/2 support
+             Date: Mon, 8 Jun 1998 22:07:48 -0400 (EDT)
+     Branch: perl
+           ! os2/Changes os2/diff.configure os2/os2.c
+____________________________________________________________________________
+[  1102] By: gsar                                  on 1998/06/10  07:00:08
+        Log: Message-Id: <199803140103.UAA04839@monk.mps.ohio-state.edu>
+             Date:    Fri, 13 Mar 1998 20:03:52 EST
+             From:    Ilya Zakharevich 
+             Subject: [PATCH 5.004_62 5_004_04m1] pod2html again
+     Branch: perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  1101] By: gsar                                  on 1998/06/10  06:55:20
+        Log: From: Ilya Zakharevich 
+             Subject: Re: 5.004_65 uninitialized variable regexec.c (2)
+             Date: Thu, 28 May 1998 01:28:54 -0400 (EDT)
+     Branch: perl
+           ! regexec.c
+____________________________________________________________________________
+[  1100] By: gsar                                  on 1998/06/10  06:52:50
+        Log: updated MANIFEST for previous change
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[  1099] By: gsar                                  on 1998/06/10  06:51:08
+        Log: Mangled patch, needed hand-tweaks, along with binmode for rs.t:
+             Message-Id: <3.0.5.32.19980605110840.009e12b0@ous.edu>
+             Date: Fri, 05 Jun 1998 11:08:40 -0700
+             From: Dan Sugalski 
+             Subject: Re: [PATCH 5.004_66]Add record read capability to <>
+     Branch: perl
+           + t/base/rs.t
+           ! perl.h pod/perlvar.pod sv.c
+____________________________________________________________________________
+[  1098] By: gsar                                  on 1998/06/10  06:36:59
+        Log: From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             Message-Id: <9806042022.AA10418@claudius.bfsec.bt.co.uk>
+             Subject: [PATCH fror 5.004_66] DB_File-1.60
+             Date: Thu, 4 Jun 1998 21:22:35 +0100 (BST)
+     Branch: perl
+           + ext/DB_File/dbinfo
+	   ! MANIFEST ext/DB_File/Changes ext/DB_File/DB_File.pm
+	   ! ext/DB_File/DB_File.xs ext/DB_File/typemap t/lib/db-btree.t
+           ! t/lib/db-hash.t t/lib/db-recno.t
+____________________________________________________________________________
+[  1097] By: gsar                                  on 1998/06/10  06:33:16
+        Log: Message-ID: <19980604134731.D24343@perlsupport.com>
+             Date: Thu, 4 Jun 1998 13:47:31 -0400
+             From: Chip Salzenberg 
+             Subject: [PATCH] Invalidate method cache on C
+     Branch: perl
+           ! scope.c t/op/method.t
+____________________________________________________________________________
+[  1096] By: gsar                                  on 1998/06/10  06:30:51
+        Log: From: Norton Allen 
+             Message-Id: <199806031908.PAA04183@bottesini.harvard.edu>
+             Subject: [PATCH] _66 MM_Unix.pm for QNX
+             Date: Wed, 3 Jun 1998 15:08:33 -0400 (edt)
+     Branch: perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[  1095] By: gsar                                  on 1998/06/10  06:29:21
+        Log: From: Norton Allen 
+             Message-Id: <199806031909.PAA04358@bottesini.harvard.edu>
+             Subject: [PATCH] _66 proto.h
+             Date: Wed, 3 Jun 1998 15:09:14 -0400 (edt)
+     Branch: perl
+           ! proto.h
+____________________________________________________________________________
+[  1094] By: gsar                                  on 1998/06/10  06:26:39
+        Log: Applied relevant parts of:
+             From: Paul Johnson 
+             Date: Wed, 3 Jun 1998 19:07:55 +0100 (BST)
+             Message-Id: <199806031807.TAA04100@west-tip.transeda.com>
+             Subject: [PATCH] Enhancing xsubpp's support for C++
+     Branch: perl
+           ! lib/ExtUtils/xsubpp
+____________________________________________________________________________
+[  1093] By: gsar                                  on 1998/06/10  06:22:54
+        Log: Message-ID: <19980603112219.B7638@asic.sc.ti.com>
+             Date: Wed, 3 Jun 1998 11:22:19 -0500
+             From: Graham Barr 
+             Subject: [PATCH perl5.004_04-m4] fix for undef as last arg to setsockopt
+     Branch: perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1092] By: gsar                                  on 1998/06/10  06:20:44
+        Log: Message-Id: <199806030919.KAA03527@sale-wts>
+             Date: Wed, 3 Jun 1998 10:20:06 +0100 (BST)
+             From: Alan Burlison 
+             Subject: [PATCH 5.004_66] ExtUtils::Installed.pm and ExtUtils::Packlist.pm
+     Branch: perl
+           ! lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
+____________________________________________________________________________
+[  1091] By: gsar                                  on 1998/06/10  06:18:42
+        Log: Message-Id: <3.0.5.32.19980601122229.00a58420@ous.edu>
+             Date: Mon, 01 Jun 1998 12:22:29 -0700
+             From: SYSTEM@cedar.osshe.edu (by way of Dan Sugalski )
+             Subject: [PATCH 5.004_66] proto.h change to make byterun() visible to VMS
+     Branch: perl
+           ! proto.h
+____________________________________________________________________________
+[  1090] By: gsar                                  on 1998/06/10  06:14:24
+        Log: A tweaked version of:
+             Date: Mon, 1 Jun 1998 12:05:47 -0700
+             From: SYSTEM@cedar.osshe.edu
+             Message-Id: <980601120547.20617d54@cedar.osshe.edu>
+             Subject: [PATCH 5.004_66] Fix problem with SDBM makefile on VMS
+     Branch: perl
+           ! ext/SDBM_File/sdbm/Makefile.PL
+____________________________________________________________________________
+[  1089] By: gsar                                  on 1998/06/10  05:58:00
+        Log: Message-Id: 
+             Date: Fri, 29 May 1998 23:52:26 -0500 (CDT)
+             From: Stephen McCamant 
+             Subject: [PATCH] Re: Uninitialised error from -M()
+     Branch: perl
+           ! op.c t/op/stat.t
+____________________________________________________________________________
+[  1088] By: gsar                                  on 1998/06/10  05:55:24
+        Log: Date: Sat, 30 May 1998 08:07:01 -0400
+             From: lvirden@cas.org (Larry Virden)
+             Message-Id: <199805301207.IAA08856@cas.org>
+             Subject: PATCH for pod and warning notice
+     Branch: perl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[  1087] By: gsar                                  on 1998/06/10  05:52:05
+        Log: From: Andy Dougherty 
+             Date: Mon, 8 Jun 1998 14:45:36 -0400 (EDT)
+             Message-Id: 
+             Subject: [PATCH 5.004_66] Config_66-01
+     Branch: perl
+	   ! Configure MANIFEST Porting/Glossary Porting/config.sh
+           ! Porting/config_H config_h.SH
+____________________________________________________________________________
+[  1086] By: gsar                                  on 1998/06/10  05:46:38
+        Log: Message-Id: <3.0.5.32.19980608161314.00a0a880@ous.edu>
+             Date: Mon, 08 Jun 1998 16:13:14 -0700
+             From: Dan Sugalski 
+             Subject: [PATCH 5.004_66] Documentation patch for Semaphore.pm
+     Branch: perl
+           ! ext/Thread/Thread/Semaphore.pm
+____________________________________________________________________________
+[  1085] By: gsar                                  on 1998/06/10  05:44:44
+        Log: Message-Id: <3.0.5.32.19980608161002.00a64a70@ous.edu>
+             Date: Mon, 08 Jun 1998 16:10:02 -0700
+             From: Dan Sugalski 
+             Subject: [PATCH 5.004_66]Doc & feature patch for Thread::Queue
+     Branch: perl
+           - vms/descrip.mms
+           ! ext/Thread/Thread/Queue.pm
+____________________________________________________________________________
+[  1084] By: gsar                                  on 1998/06/10  05:38:11
+        Log: Message-Id: <3.0.5.32.19980608153828.00a81ea0@ous.edu>
+             Date: Mon, 08 Jun 1998 15:38:28 -0700
+             From: Dan Sugalski 
+             Subject: [PATCH POINTER 5.004_66]A configuration system for VMS perl
+     Branch: perl
+	   + configure.com vms/descrip_mms.template vms/munchconfig.c
+           + vms/subconfigure.com
+           - vms/config.vms vms/fndvers.com
+           ! MANIFEST README.vms lib/ExtUtils/MM_VMS.pm
+____________________________________________________________________________
+[  1083] By: gsar                                  on 1998/06/10  05:07:04
+        Log: xsubpp enhancements ($CPAN/authors/id/ILYAZ/patches/diff_xsubpp_65), a
+             variant of:
+             Message-Id: <199712131231.HAA04125@monk.mps.ohio-state.edu>
+             Date:    Sat, 13 Dec 1997 07:31:02 EST
+             From:    Ilya Zakharevich 
+             Subject: 5.004_55: xsubpp: new keywords INTERFACE C_ARGS
+     Branch: perl
+           ! XSUB.h lib/ExtUtils/xsubpp pod/perlxs.pod
+____________________________________________________________________________
+[  1082] By: gsar                                  on 1998/06/10  04:52:26
+        Log: add newer malloc.c from Ilya Zakharevich 
+             (from $CPAN/authors/id/ILYAZ/patches/diff_malloc_65)
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[  1081] By: gsar                                  on 1998/06/10  03:45:10
+        Log: reverse integrate contents of win32 branch into mainline
+     Branch: perl
+          !> (integrate 44 files)
+____________________________________________________________________________
+[  1080] By: gsar                                  on 1998/06/09  17:37:55
+        Log: `p4 integrate -b ASPerl && p4 resolve -at`
+     Branch: asperl
+          !> (integrate 43 files)
+____________________________________________________________________________
+[  1079] By: gsar                                  on 1998/06/09  00:59:06
+        Log: add examples of diff(1) usage
+     Branch: win32/perl
+           ! Porting/patching.pod
+____________________________________________________________________________
+[  1078] By: gsar                                  on 1998/06/09  00:52:23
+        Log: undo change#1077
+     Branch: win32/perl
+           ! sv.c
+____________________________________________________________________________
+[  1077] By: gsar                                  on 1998/06/06  16:47:32
+        Log: make sv_setsv() treat freed SVs like SVt_NULL
+     Branch: win32/perl
+           ! sv.c
+____________________________________________________________________________
+[  1076] By: gsar                                  on 1998/06/05  19:03:14
+        Log: delete undiscussed AS changes for PPD (broke .packlist
+             mechanism)
+     Branch: win32/perl
+           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[  1075] By: gsar                                  on 1998/06/05  18:18:44
+        Log: add AS patch#26 (rename THIS to PERL_OBJEC_THIS to avoid clash
+             with the xsubpp-generated symbol)
+     Branch: win32/perl
+	   ! ObjXSub.h perl.c perl.h pp_ctl.c pp_hot.c toke.c
+           ! win32/dl_win32.xs
+____________________________________________________________________________
+[  1074] By: gsar                                  on 1998/06/04  22:45:18
+        Log: add AS patch#25 (allow B build with -DPERL_OBJECT)
+     Branch: win32/perl
+	   ! ObjXSub.h byterun.h embed.h embedvar.h ext/B/B.xs intrpvar.h
+           ! objpp.h proto.h util.c win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1073] By: nick                                  on 1998/06/04  17:18:14
+        Log: resolve -at win32 branch into ansiperl
+     Branch: ansiperl
+	  +> ObjXSub.h XSLock.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
+	  +> ipsock.h ipstdio.h objpp.h t/lib/h2ph.h t/lib/h2ph.pht
+          +> t/lib/h2ph.t win32/GenCAPI.pl
+          !> (integrate 127 files)
+____________________________________________________________________________
+[  1072] By: gsar                                  on 1998/06/04  01:49:24
+        Log: document CORE::GLOBAL:: and global overriding, fix up
+             File::DosGlob, testsuited and all
+     Branch: win32/perl
+           ! lib/File/DosGlob.pm pod/perlsub.pod t/lib/dosglob.t
+____________________________________________________________________________
+[  1071] By: gsar                                  on 1998/06/03  22:12:55
+        Log: add AS patch#24, remove one other instance of error_no
+             that was missed (patch#23 was intentionally skipped)
+     Branch: win32/perl
+	   ! embedvar.h globals.c perlvars.h win32/makedef.pl
+           ! win32/runperl.c
+____________________________________________________________________________
+[  1070] By: gsar                                  on 1998/06/01  19:42:06
+        Log: fix Liblist.pm to tolerate backslashen in paths
+     Branch: win32/perl
+           ! lib/ExtUtils/Liblist.pm
+____________________________________________________________________________
+[  1069] By: gsar                                  on 1998/06/01  07:43:02
+        Log: @INC construction on win32 cleaned up
+             - perl.dll location based paths should be much more reliable now
+             - registry stuff unchanged
+             - Config.pm now has all the installfoolib entries for MakeMaker et al
+     Branch: win32/perl
+	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+	   ! win32/config_h.PL win32/config_sh.PL win32/makefile.mk
+           ! win32/runperl.c win32/win32.c win32/win32.h
+____________________________________________________________________________
+[  1068] By: gsar                                  on 1998/05/31  21:52:18
+        Log: semctl tweak
+             Message-Id: <199805312127.QAA06750@gbarr.connect.net>
+             Date:    Sun, 31 May 1998 16:27:33 CDT
+             From:    Graham Barr 
+             Subject: Not OK: perl 5.00466 on i586-linux-thread 2.0.31 
+     Branch: win32/perl
+           ! doio.c
+____________________________________________________________________________
+[  1067] By: gsar                                  on 1998/05/31  21:07:44
+        Log: minimal fix to enable compiling with -DMULTIPLICITY
+             (non-threadsafe regcomp.c globals need revisiting)
+     Branch: win32/perl
+	   ! ObjXSub.h embedvar.h interp.sym intrpvar.h regcomp.c
+           ! win32/GenCAPI.pl win32/makedef.pl
+____________________________________________________________________________
+[  1066] By: gsar                                  on 1998/05/30  21:35:37
+        Log: integrate mainline changes (ASPerl branch is identical to
+             win32 branch as of this change)
+     Branch: asperl
+	  !> MANIFEST Todo.5.005 embed.h ext/POSIX/POSIX.xs global.sym
+	  !> lib/ExtUtils/Mksymlists.pm pod/perldelta.pod pp_sys.c
+	  !> t/op/ipcmsg.t t/op/ipcsem.t 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
+____________________________________________________________________________
+[  1065] By: gsar                                  on 1998/05/30  21:13:06
+        Log: change#1060 was inexplicably missing some of the "ensure
+             AS stuff does no harm" fixes
+     Branch: win32/perl
+           ! embed.h global.sym win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1064] By: gsar                                  on 1998/05/30  21:10:27
+        Log: integrate mainline to pick up trivial changes
+     Branch: win32/perl
+          !> MANIFEST pp_sys.c
+
+----------------
+Version 5.004_66
+----------------
+
+____________________________________________________________________________
+[  1063] By: mbeattie                              on 1998/05/29  15:19:55
+        Log: Remove duplicate win32/TEST line from MANIFEST.
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[  1062] By: mbeattie                              on 1998/05/29  15:18:33
+        Log: Add missing ";" to pp_umask (spotted by Jarkko Hietaniemi).
+     Branch: perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1061] By: mbeattie                              on 1998/05/29  12:02:17
+        Log: Integrate from win32 branch into mainline (this now pulls in the
+             asperl stuff).
+     Branch: perl
+	  +> ObjXSub.h XSLock.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
+	  +> ipsock.h ipstdio.h objpp.h t/lib/h2ph.h t/lib/h2ph.pht
+          +> t/lib/h2ph.t win32/GenCAPI.pl
+          !> (integrate 104 files)
+____________________________________________________________________________
+[  1060] By: gsar                                  on 1998/05/29  11:05:50
+        Log: reverse integrate asperl branch contents (phew!)
+             - various fixups to ensure AS stuff does no harm
+             - adjust win32/makefiles for the new directory layout (new layout
+             looks rather a muddle--needs rework)
+             - verified build & test on NT and Solaris/gcc
+     Branch: win32/perl
+	  +> ObjXSub.h XSLock.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
+          +> ipsock.h ipstdio.h objpp.h win32/GenCAPI.pl
+	   ! ext/POSIX/POSIX.xs lib/ExtUtils/Mksymlists.pm 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
+          !> (integrate 77 files)
+____________________________________________________________________________
+[  1059] By: gsar                                  on 1998/05/29  08:33:56
+        Log: asperl branch verified to build w/o PERL_OBJECT on Solaris and NT
+     Branch: asperl
+           ! util.c
+____________________________________________________________________________
+[  1058] By: gsar                                  on 1998/05/29  08:31:09
+        Log: type xtext for *.t that were missing it
+     Branch: asperl
+           ! t/lib/thread.t t/op/nothread.t
+____________________________________________________________________________
+[  1057] By: gsar                                  on 1998/05/29  08:28:46
+        Log: stray t/op/ipc*.t fixups
+     Branch: win32/perl
+           ! t/op/ipcmsg.t t/op/ipcsem.t
+____________________________________________________________________________
+[  1056] By: gsar                                  on 1998/05/29  07:41:49
+        Log: fixups to make it build and pass tests under both compilers
+     Branch: asperl
+           ! ObjXSub.h objpp.h proto.h
+____________________________________________________________________________
+[  1055] By: gsar                                  on 1998/05/29  07:22:51
+        Log: integrate mainline changes
+     Branch: asperl
+          +> t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t
+          !> (integrate 69 files)
+     Branch: win32/perl
+           ! Todo.5.005 pod/perldelta.pod
+____________________________________________________________________________
+[  1054] By: gsar                                  on 1998/05/29  05:04:03
+        Log: add a txt_compare() routine to t/h2ph.t for DOSISH sanity
+     Branch: win32/perl
+           ! t/lib/h2ph.t
+____________________________________________________________________________
+[  1053] By: gsar                                  on 1998/05/29  05:01:54
+        Log: misc changes
+             - remove code that works around lack of I_STDARG (we're a happy ANSI family)
+             - leave dump_foo() stubs when not -DDEBUGGING for consistent symbol exports
+     Branch: win32/perl
+	   ! deb.c dump.c ext/DynaLoader/dlutils.c ext/POSIX/POSIX.xs
+	   ! perl.h perlio.c proto.h regcomp.c run.c scope.c sv.c util.c
+           ! x2p/util.c x2p/util.h
+____________________________________________________________________________
+[  1052] By: gsar                                  on 1998/05/29  02:31:44
+        Log: merge changes#1014,1038 from maintbranch
+     Branch: win32/perl
+           + t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t
+	   ! MANIFEST Makefile.SH doio.c ext/POSIX/POSIX.xs gv.c
+	   ! lib/Benchmark.pm lib/ExtUtils/MM_Unix.pm pod/perldebug.pod
+	   ! pod/perldiag.pod pod/perlfunc.pod pod/perlop.pod
+	   ! pod/perlre.pod pod/perltie.pod pod/perltrap.pod sv.c
+           ! t/io/pipe.t utils/h2ph.PL
+____________________________________________________________________________
+[  1051] By: gsar                                  on 1998/05/29  01:38:51
+        Log: regenerate win32/config_H.?c
+     Branch: win32/perl
+           ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+____________________________________________________________________________
+[  1050] By: gsar                                  on 1998/05/29  01:32:41
+        Log: integrate mainline
+     Branch: win32/perl
+           ! win32/Makefile win32/makefile.mk
+	  !> Configure INSTALL MANIFEST Porting/Glossary Porting/config.sh
+	  !> Porting/config_H Porting/patching.pod config_h.SH doio.c
+	  !> ext/POSIX/hints/sunos_4.pl hints/bsdos.sh hints/openbsd.sh
+	  !> hints/solaris_2.sh hints/sunos_4_1.sh hints/svr4.sh
+	  !> lib/FileHandle.pm patchlevel.h perl.h plan9/config.plan9
+	  !> vms/config.vms win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1049] By: gsar                                  on 1998/05/29  00:57:05
+        Log: fix various shenanigans with C, BC and VC builds now pass
+             all tests
+     Branch: asperl
+	   ! globals.c win32/Makefile win32/makefile.mk win32/runperl.c
+           ! win32/win32.h win32/win32iop.h
+____________________________________________________________________________
+[  1048] By: mbeattie                              on 1998/05/28  18:07:24
+        Log: Integrated win32 branch into mainline. The changes to t/op/ipc*.t
+             in change 1043 clashed badly with changes made in the win32
+             branch. I did an accept on the win32 branch version for now.
+     Branch: perl
+          +> t/op/die.t
+          !> (integrate 52 files)
+____________________________________________________________________________
+[  1047] By: mbeattie                              on 1998/05/28  17:59:18
+        Log: From: Andy Dougherty 
+             Subject: [PATCH 5.004_65] Config_65-02-03.diff: SunOS and Solaris hints
+             Date: Thu, 28 May 1998 13:27:25 -0400 (EDT)
+             Subject: [PATCH 5.004_65] Config_65-03-04.diff:  semctl probing
+             Date: Thu, 28 May 1998 13:28:21 -0400 (EDT)
+     Branch: perl
+	   ! Configure MANIFEST Porting/Glossary Porting/config.sh
+	   ! Porting/config_H config_h.SH doio.c ext/POSIX/hints/sunos_4.pl
+	   ! hints/solaris_2.sh hints/sunos_4_1.sh perl.h vms/config.vms
+           ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1046] By: mbeattie                              on 1998/05/28  17:55:48
+        Log: Back out change 1043 since Andy's forthcoming Config patch
+             includes a modified version.
+     Branch: perl
+           ! Configure config_h.SH doio.c perl.h
+____________________________________________________________________________
+[  1045] By: mbeattie                              on 1998/05/28  17:52:40
+        Log: Bump patchlevel.h to 66.
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[  1044] By: mbeattie                              on 1998/05/28  17:51:49
+        Log: From: Daniel Grisinger 
+             Subject: [PATCH] _04m2  perlfunc.pod (fwd)
+             Date: Fri, 15 May 1998 16:18:26 -0600 (MDT)
+             (above minus the t/system.t test pending checking)
+             Subject: [PATCH] 5.004[04|65]  FileHandle.pm
+             Date: Wed, 20 May 1998 19:50:50 -0600 (MDT)
+             Subject: [PATCH] _65 and _04  patching.pod
+             Date: Thu, 21 May 1998 16:33:03 -0600 (MDT)
+     Branch: perl
+           ! Porting/patching.pod lib/FileHandle.pm pod/perlfunc.pod
+____________________________________________________________________________
+[  1043] By: mbeattie                              on 1998/05/28  17:42:21
+        Log: This change really is:
+             Subject: [PATCH] 5.004_65: the infamous semctl()
+             Date: Sun, 24 May 1998 16:13:21 +0300 (EET DST)
+             From: Jarkko Hietaniemi 
+             
+             Change 1041 claimed to be this patch but was really:
+             Subject: [PATCH] 5.004_65: t/op/ipc*.t
+             Date: Sat, 16 May 1998 00:52:39 +0300 (EET DST)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! Configure config_h.SH doio.c perl.h
+____________________________________________________________________________
+[  1042] By: mbeattie                              on 1998/05/28  17:36:57
+        Log: From: Andy Dougherty 
+             Subject: [PATCH 5.004_65] Config_65-01: lchown() detection.
+             Date: Thu, 28 May 1998 13:25:21 -0400 (EDT)
+             Subject: [PATCH 5.004_65] Config_65-01-02.diff: INSTALL and hints fixes
+             Date: Thu, 28 May 1998 13:26:18 -0400 (EDT)
+     Branch: perl
+	   ! Configure INSTALL Porting/Glossary Porting/config.sh
+	   ! Porting/config_H config_h.SH doio.c hints/bsdos.sh
+	   ! hints/openbsd.sh hints/svr4.sh plan9/config.plan9
+	   ! vms/config.vms win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[  1041] By: mbeattie                              on 1998/05/28  17:34:26
+        Log: Subject: [PATCH] 5.004_65: the infamous semctl()
+             Date: Sun, 24 May 1998 16:13:21 +0300 (EET DST)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! t/op/ipcmsg.t t/op/ipcsem.t
+____________________________________________________________________________
+[  1040] By: gsar                                  on 1998/05/28  02:06:47
+        Log: tweaks to enable Borland build
+     Branch: asperl
+           ! win32/makefile.mk win32/win32.c
+____________________________________________________________________________
+[  1039] By: gsar                                  on 1998/05/27  23:29:22
+        Log: remove C<#define index strchr> from win32.h (unused, and the
+             pollution causes spurious variable name changes in extensions)
+     Branch: win32/perl
+           ! win32/win32.h
+____________________________________________________________________________
+[  1038] By: TimBunce                              on 1998/05/27  17:29:15
+        Log: Assorted patches:
+             
+             ------  BUILD PROCESS  ------
+             
+             Title:  "add utilities to make test dependencies"
+             From:  Robin Barker 
+             Msg-ID:  <2607.9805211303@tempest.cise.npl.co.uk>
+             Files:  Makefile.SH
+             
+             Title:  "Add 'make nok' complement to 'make ok'"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  Makefile.SH
+             
+             Title:  "further h2ph patches (add enum support)"
+             From:  Billy 
+             Msg-ID:              
+             Files:  MANIFEST t/lib/h2ph.pht t/lib/h2ph.t utils/h2ph.PL
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "Fix %! error spelling and add perldiag.pod entry"
+             From:  Graham Barr , Tim Bunce
+             Msg-ID:  <19980524193101.A573@pobox.com>
+             Files:  pod/perldiag.pod gv.c
+             
+             Title:  "Remove obsolete Win32 uppercasing ENV code"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805201510.LAA28676@aatma.engin.umich.edu>
+             Files:  perl.c
+             
+             Title:  "Don't mung $! on implicit close"
+             From:  Chip Salzenberg 
+             Msg-ID:  <19980525113309.A15845@perlsupport.com>
+             Files:  doio.c
+             
+             Title:  "Maint trial 3 fails on SunOS 4.1.3 with Sun cc"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  doio.c
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "doc patch: you canna return an array ( list context: || vs or)"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  
+             Files:  pod/perldebug.pod pod/perlfunc.pod pod/perltie.pod pod/perltrap.pod
+             
+             Title:  "doc patch: @ needs escaping in m/\Q\E/ environment"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perlop.pod pod/perlre.pod
+             
+             Title:  "Discrepancy between perlop.pod and m// operator", "Doc fix: Only
+             with /g does list context get matches without parens"
+             From:  Greg Chapman , Tom Christiansen
+             , Tom Phoenix
+             
+             Msg-ID:  <000201bd865e$f3bf72e0$1f04400c@assigned.well.com>,
+             <199805231559.JAA21316@jhereg.perl.com>,
+             
+             Files:  pod/perlop.pod
+             
+             Title:  "Documenting last/next/redo even further"
+             From:  "M.J.T. Guy" , Tom Phoenix
+             
+             Msg-ID:  ,
+             
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Documenting last/next/redo within continue block"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Document stat return in scalar context"
+             From:  Mark-Jason Dominus 
+             Files:  pod/perlfunc.pod
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "Better LD_RUN_PATH handling on IRIX"
+             From:  "W. Phillip Moore" 
+             Msg-ID:  <199805212206.SAA07504@zappa.morgan.com>
+             Files:  lib/ExtUtils/MM_Unix.pm
+             
+             Title:  "Dealing with  in POSIX and SunOS"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  ext/POSIX/hints/sunos_4.pl hints/sunos_4_1.sh ext/POSIX/POSIX.xs
+             
+             ------  LIBRARY  ------
+             
+             Title:  "Fix FileHandle.pm example bug"
+             From:  Daniel Grisinger 
+             Msg-ID:  
+             Files:  lib/FileHandle.pm
+             
+             Title:  "Add zero/negative $count docs for Benchmark.pm"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  lib/Benchmark.pm
+             
+             ------  PORTABILITY - GENERAL  ------
+             
+             Title:  "Add test suite recommendations to Porting/patching.pod"
+             From:  Daniel Grisinger 
+             Msg-ID:  
+             Files:  Porting/patching.pod
+             
+             ------  TESTS  ------
+             
+             Title:  "Fix looping bug in t/io/pipe.t"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  t/io/pipe.t
+     Branch: maint-5.004/perl
+	   ! MANIFEST Makefile.SH Porting/patching.pod doio.c
+	   ! ext/POSIX/POSIX.xs ext/POSIX/hints/sunos_4.pl gv.c
+	   ! hints/sunos_4_1.sh lib/Benchmark.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/FileHandle.pm perl.c pod/perldebug.pod pod/perldiag.pod
+	   ! pod/perlfunc.pod pod/perlop.pod pod/perlre.pod pod/perltie.pod
+	   ! pod/perltrap.pod t/io/pipe.t t/lib/h2ph.pht t/lib/h2ph.t
+           ! utils/h2ph.PL
+____________________________________________________________________________
+[  1037] By: gsar                                  on 1998/05/27  16:18:30
+        Log: add AS patch#22 (fix to make die_exit.t pass)
+     Branch: asperl
+           ! win32/runperl.c
+____________________________________________________________________________
+[  1036] By: gsar                                  on 1998/05/27  12:50:34
+        Log: add AS patch#21 (misc. fixes)
+     Branch: asperl
+	   ! ObjXSub.h lib/ExtUtils/MM_Unix.pm objpp.h perl.h
+	   ! win32/GenCAPI.pl win32/Makefile win32/makefile.mk
+           ! win32/win32.c win32/win32sck.c
+____________________________________________________________________________
+[  1035] By: gsar                                  on 1998/05/26  17:26:17
+        Log: more changes to satisfy non-debug VC build (C-API doesn't
+             build, and the testsuite still won't run)
+     Branch: asperl
+	   ! ObjXSub.h deb.c dump.c ext/POSIX/POSIX.xs globals.c proto.h
+           ! regcomp.c run.c scope.c sv.c util.c win32/GenCAPI.pl
+____________________________________________________________________________
+[  1034] By: gsar                                  on 1998/05/26  17:20:22
+        Log: remove doubled hunk (perforce auto-integrate oddity)
+     Branch: win32/perl
+           ! pod/perldiag.pod
+____________________________________________________________________________
+[  1033] By: gsar                                  on 1998/05/26  13:39:14
+        Log: tweaks to make it build with the Borland compiler.  Won't run
+             testsuite because @INC intuition from location of perlcore.dll seems
+             to be broken.  Also, system() and qx// seem broken as well.
+     Branch: asperl
+	   ! ObjXSub.h doio.c embedvar.h ext/POSIX/POSIX.xs interp.sym
+	   ! intrpvar.h objpp.h perl.c perl.h perlvars.h proto.h regcomp.c
+           ! regexec.c toke.c
+____________________________________________________________________________
+[  1032] By: gsar                                  on 1998/05/24  23:13:05
+        Log: tweak Benchmark.pm to restore old timestr() behavior--show wall secs
+     Branch: win32/perl
+           ! lib/Benchmark.pm
+____________________________________________________________________________
+[  1031] By: gsar                                  on 1998/05/24  05:36:44
+        Log: tweak makefiles
+     Branch: asperl
+           ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[  1030] By: gsar                                  on 1998/05/23  18:58:23
+        Log: merge changes#1016,1018 from maintbranch (1017 is n/a)
+     Branch: win32/perl
+           ! pp_sys.c t/op/die.t
+____________________________________________________________________________
+[  1029] By: gsar                                  on 1998/05/23  18:55:13
+        Log: merge change#1015 from maintbranch (must revisit 1014 later, is
+             incomplete)
+     Branch: win32/perl
+           ! embed.h global.sym op.c pp.c proto.h sv.c
+____________________________________________________________________________
+[  1028] By: gsar                                  on 1998/05/23  18:25:14
+        Log: merge change#1013 from maintbranch (1012 is n/a)
+     Branch: win32/perl
+           ! toke.c
+____________________________________________________________________________
+[  1027] By: gsar                                  on 1998/05/23  18:02:21
+        Log: merge change#1011 from maintbranch
+     Branch: win32/perl
+	   ! perl.c pod/perldiag.pod pod/perlfunc.pod pp_ctl.c
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[  1026] By: nick                                  on 1998/05/23  08:45:04
+        Log: Ids of msgs and sems can be zero, so change || die to a defined() test
+     Branch: win32/perl
+           ! t/op/ipcmsg.t t/op/ipcsem.t
+____________________________________________________________________________
+[  1025] By: nick                                  on 1998/05/23  08:36:36
+        Log: Resolve win32 into ansiperl
+     Branch: ansiperl
+          +> t/op/die.t
+          !> (integrate 42 files)
+____________________________________________________________________________
+[  1024] By: gsar                                  on 1998/05/21  21:11:12
+        Log: more mingw32 tweaks
+     Branch: win32/perl
+           ! ext/POSIX/POSIX.xs t/pragma/locale.t
+____________________________________________________________________________
+[  1023] By: gsar                                  on 1998/05/21  19:15:02
+        Log: fix problematic change#965 from maintbranch
+             Message-Id: <199805162145.RAA02552@monk.mps.ohio-state.edu>
+             Date:    Sat, 16 May 1998 17:45:22 EDT
+             From:    Ilya Zakharevich 
+             Subject: Re: Not OK (after all) : perl 5.00404 +MAINT_TRIAL_3 on sun4-solaris 2.5
+     Branch: win32/perl
+           ! gv.c op.c t/comp/proto.t
+____________________________________________________________________________
+[  1022] By: gsar                                  on 1998/05/21  01:37:04
+        Log: fix POSIX for mingw32
+     Branch: win32/perl
+           ! ext/POSIX/POSIX.xs win32/config.gc win32/config_H.gc
+____________________________________________________________________________
+[  1021] By: gsar                                  on 1998/05/20  15:02:21
+        Log: remove strupr() from perl.c
+     Branch: win32/perl
+           ! perl.c
+____________________________________________________________________________
+[  1020] By: TimBunce                              on 1998/05/19  22:41:40
+        Log: Title:  "fix up descrepancy in h2ph test"
+             From:  Tim Bunce
+             Files:  t/lib/h2ph.pht
+     Branch: maint-5.004/perl
+           ! t/lib/h2ph.pht
+____________________________________________________________________________
+[  1019] By: TimBunce                              on 1998/05/19  22:17:15
+        Log: Title:  "add a test to check return value from successful s/// (there was none!)"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805161759.NAA12995@aatma.engin.umich.edu>
+             Files:  t/op/subst.t
+             
+             Title:  "fix up descrepancy in h2ph test"
+             From:  Tim Bunce
+             Files:  t/lib/h2ph.t
+     Branch: maint-5.004/perl
+           ! t/lib/h2ph.t t/op/subst.t
+____________________________________________________________________________
+[  1018] By: TimBunce                              on 1998/05/19  21:56:32
+        Log: Title:  "fix mem leak and core dump from change 1016"
+             From:  Tim Bunce
+             Files:  pp_sys.c
+     Branch: maint-5.004/perl
+           ! pp_sys.c
+____________________________________________________________________________
+[  1017] By: TimBunce                              on 1998/05/19  21:26:03
+        Log: Title:  "qsort, Win32 "POSIX" plus other devel changes for patch-compatibility"
+             From:  Gurusamy Sarathy 
+             Files:  MANIFEST cflags.SH pod/perlembed.pod pod/perlfunc.pod
+             pod/perlguts.pod pod/perlref.pod pod/perlrun.pod
+             pod/perlxstut.pod av.h embed.h hv.h op.h perl.h pp.h
+             proto.h Todo av.c cygwin32/perlgcc cygwin32/perlld deb.c
+             doio.c doop.c ext/ODBM_File/ODBM_File.xs
+             ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
+             gv.c hv.c interp.sym lib/AutoSplit.pm lib/Cwd.pm
+             lib/FindBin.pm lib/strict.pm lib/ExtUtils/Command.pm
+             lib/ExtUtils/Liblist.pm lib/ExtUtils/MakeMaker.pm
+             lib/ExtUtils/Manifest.pm lib/File/Basename.pm
+             lib/File/Find.pm lib/File/Path.pm lib/Getopt/Long.pm
+             lib/Getopt/Std.pm lib/Net/Ping.pm lib/Pod/Html.pm
+             lib/Pod/Text.pm lib/Term/Cap.pm lib/Test/Harness.pm mg.c
+             op.c perl.c pod/pod2latex.PL pod/pod2man.PL pp.c pp_ctl.c
+             pp_hot.c pp_sys.c scope.c sv.c t/lib/posix.t
+             t/pragma/locale.t utils/perldoc.PL win32/win32.h toke.c
+             universal.c util.c win32/Makefile win32/config_H.bc
+             win32/config_H.vc win32/dl_win32.xs win32/makedef.pl
+             win32/makefile.mk win32/perlglob.c win32/runperl.c
+             win32/win32.c win32/win32sck.c x2p/s2p.PL
+     Branch: maint-5.004/perl
+	   ! MANIFEST Todo av.c av.h cflags.SH cygwin32/perlgcc
+	   ! cygwin32/perlld deb.c doio.c doop.c embed.h
+	   ! ext/ODBM_File/ODBM_File.xs ext/POSIX/Makefile.PL
+	   ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs gv.c hv.c hv.h
+	   ! interp.sym lib/AutoSplit.pm lib/Cwd.pm lib/ExtUtils/Command.pm
+	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MakeMaker.pm
+	   ! lib/ExtUtils/Manifest.pm lib/File/Basename.pm lib/File/Find.pm
+	   ! lib/File/Path.pm lib/FindBin.pm lib/Getopt/Long.pm
+	   ! lib/Getopt/Std.pm lib/Net/Ping.pm lib/Pod/Html.pm
+	   ! lib/Pod/Text.pm lib/Term/Cap.pm lib/Test/Harness.pm
+	   ! lib/strict.pm mg.c op.c op.h perl.c perl.h pod/perlembed.pod
+	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlref.pod
+	   ! pod/perlrun.pod pod/perlxstut.pod pod/pod2latex.PL
+	   ! pod/pod2man.PL pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h
+	   ! scope.c sv.c t/lib/posix.t t/pragma/locale.t toke.c
+	   ! universal.c util.c utils/perldoc.PL win32/Makefile
+	   ! win32/config_H.bc win32/config_H.vc win32/dl_win32.xs
+	   ! win32/makedef.pl win32/makefile.mk win32/perlglob.c
+	   ! win32/runperl.c win32/win32.c win32/win32.h win32/win32sck.c
+           ! x2p/s2p.PL
+____________________________________________________________________________
+[  1016] By: TimBunce                              on 1998/05/19  20:37:42
+        Log: Title:  "eval { die $obj }; die; calls $obj->PROPAGATE"
+             From:  Graham Barr 
+             Msg-ID:  <3561D147.7F3E0C88@ti.com>
+             Files:  pp_sys.c t/op/die.t
+     Branch: maint-5.004/perl
+           ! pp_sys.c t/op/die.t
+____________________________________________________________________________
+[  1015] By: TimBunce                              on 1998/05/19  20:07:01
+        Log: Title:  "loosen const sub re-defined warnings"
+             From:  Doug MacEachern 
+             Msg-ID:  <355F713B.6A4C0F04@pobox.com>
+             Files:  proto.h global.sym op.c pp.c sv.c
+     Branch: maint-5.004/perl
+           ! global.sym op.c pp.c proto.h sv.c
+____________________________________________________________________________
+[  1014] By: TimBunce                              on 1998/05/19  19:48:18
+        Log: Title:  "s/FORMLINE/FORMAT/ in sv.c"
+             From:  Hugo van der Sanden 
+             Msg-ID:  
+             Files:  sv.c
+             
+             Title:  "Further h2ph patches (including a test suite)"
+             From:  Billy 
+             Msg-ID:  
+             Files:  MANIFEST t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t utils/h2ph.PL
+     Branch: maint-5.004/perl
+           + t/lib/h2ph.h t/lib/h2ph.pht t/lib/h2ph.t
+           ! MANIFEST sv.c utils/h2ph.PL
+____________________________________________________________________________
+[  1013] By: TimBunce                              on 1998/05/19  19:14:13
+        Log: Title:  "Remove change 673 (Allow empty BLOCK in code)"
+             From:  Gurusamy Sarathy , Ilya Zakharevich
+             
+             Msg-ID:  <199805151857.OAA29586@monk.mps.ohio-state.edu>,
+             <199805151931.PAA23086@aatma.engin.umich.edu>,
+             <19980129002112Z13378-6931+226@scapa.cs.ualberta.ca>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[  1012] By: TimBunce                              on 1998/05/19  19:03:32
+        Log: Title:  "Further SysV sem/msg fixes and removal of non-portable tests"
+             From:  Andy Dougherty , Jarkko Hietaniemi
+             
+             Msg-ID:  <199805182028.XAA15717@alpha.hut.fi>,
+             
+             Files:  MANIFEST Configure config_h.SH perl.h doio.c t/op/ipcmsg.t
+             t/op/ipcsem.t
+     Branch: maint-5.004/perl
+	   ! Configure MANIFEST config_h.SH doio.c perl.h t/op/ipcmsg.t
+           ! t/op/ipcsem.t
+____________________________________________________________________________
+[  1011] By: TimBunce                              on 1998/05/19  17:55:38
+        Log: Title:  "interp.sym is missing C after -e fix"
+             From:  jan.dubois@ibm.net (Jan Dubois)
+             Msg-ID:  <355d460d.7621669@smtp1.ibm.net>
+             Files:  embed.h interp.sym
+             
+             Title:  "Undo changed error message which breaks Tk"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805161557.LAA08106@aatma.engin.umich.edu>
+             Files:  pp_ctl.c
+             
+             Title:  "Minor fixups to new -e script code"
+             From:  Tim Bunce
+             Files:  perl.c
+             
+             Title:  "Remove old diags not relevant after -e fix"
+             From:  Andy Dougherty , Gurusamy Sarathy
+             , Tim.Bunce@ig.co.uk (Tim Bunce)
+             Msg-ID:  <199805172143.RAA07896@aatma.engin.umich.edu>,
+             <199805181335.OAA07008@toad.ig.co.uk>,
+             
+             Files:  pod/perldiag.pod
+             
+             Title:  "more examples for vec()"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod
+             
+             Title:  ""make ok" (perlbug -ok) should not be interactive"
+             From:  Hugo van der Sanden , Jarkko Hietaniemi
+             
+             Msg-ID:  <199805160942.MAA20171@alpha.hut.fi>,
+             
+             Files:  utils/perlbug.PL
+     Branch: maint-5.004/perl
+	   ! embed.h interp.sym perl.c pod/perldiag.pod pod/perlfunc.pod
+           ! pp_ctl.c utils/perlbug.PL
+____________________________________________________________________________
+[  1010] By: gsar                                  on 1998/05/18  09:40:58
+        Log: integrate mainline changes (untested)
+     Branch: asperl
+	  +> Porting/Contract Porting/patching.pod README.beos beos/nm.c
+	  +> ext/DynaLoader/DynaLoader.pm.PL ext/POSIX/hints/bsdos.pl
+	  +> ext/POSIX/hints/freebsd.pl ext/POSIX/hints/netbsd.pl
+	  +> ext/POSIX/hints/openbsd.pl hints/beos.sh hints/openbsd.sh
+	  +> pod/perldelta4.pod t/op/defins.t t/op/die.t t/op/die_exit.t
+          +> t/op/ipcmsg.t t/op/ipcsem.t t/op/pos.t utils/perlcc.PL
+           - ext/DynaLoader/DynaLoader.pm
+           ! win32/win32.c
+          !> (integrate 234 files)
+____________________________________________________________________________
+[  1009] By: gsar                                  on 1998/05/18  07:51:19
+        Log: more whitespace tweaks from maintbranch
+     Branch: win32/perl
+           ! av.c perl.c pp_ctl.c pp_sys.c toke.c
+____________________________________________________________________________
+[  1008] By: gsar                                  on 1998/05/17  22:37:20
+        Log: sundry whitespace cleanups from maintbranch
+     Branch: win32/perl
+           ! Porting/Contract XSUB.h av.c gv.c mg.c perl.c
+____________________________________________________________________________
+[  1007] By: gsar                                  on 1998/05/16  21:59:46
+        Log: integrate mainline
+     Branch: win32/perl
+	  !> INSTALL doio.c lib/strict.pm perl.c perl.h pod/perldebug.pod
+          !> t/op/ipcmsg.t t/op/ipcsem.t
+____________________________________________________________________________
+[  1006] By: gsar                                  on 1998/05/16  21:54:23
+        Log: merge changes#996,998,999 from maintbranch
+     Branch: win32/perl
+           ! Changes5.004 Porting/makerel t/base/lex.t toke.c
+____________________________________________________________________________
+[  1005] By: gsar                                  on 1998/05/16  21:49:47
+        Log: merge change#995 from maintbranch, tweak interp.sym and
+             run embed.pl
+     Branch: win32/perl
+           ! embedvar.h interp.sym intrpvar.h perl.c
+____________________________________________________________________________
+[  1004] By: gsar                                  on 1998/05/16  21:27:18
+        Log: merge changes#989,990,992 from maintbranch
+     Branch: win32/perl
+           + t/op/die.t
+           ! MANIFEST installperl pod/perldiag.pod pp_ctl.c t/op/ipcmsg.t
+____________________________________________________________________________
+[  1003] By: gsar                                  on 1998/05/16  21:16:47
+        Log: sync config*.gc with others, and verify that nothing from
+             change#986 needs to be merged
+     Branch: win32/perl
+           ! win32/config.gc win32/config_H.gc
+____________________________________________________________________________
+[  1002] By: gsar                                  on 1998/05/16  21:04:04
+        Log: merge change#985 from maintbranch
+     Branch: win32/perl
+	   ! lib/AutoSplit.pm lib/ExtUtils/Manifest.pm pp_ctl.c pp_sys.c
+           ! util.c
+____________________________________________________________________________
+[  1001] By: gsar                                  on 1998/05/16  17:53:16
+        Log: add a test to check return value from successful s/// (there was none!)
+     Branch: win32/perl
+           ! t/op/subst.t
+____________________________________________________________________________
+[  1000] By: gsar                                  on 1998/05/16  17:42:34
+        Log: fix misplaced SPAGAIN that caused successful s/// to fail to
+             return a value on the stack
+     Branch: win32/perl
+           ! pp_hot.c
+____________________________________________________________________________
+[   999] By: TimBunce                              on 1998/05/15  23:04:30
+        Log: Title:  "Update Porting/makerel script for perforce dir structure"
+             From:  Tim Bunce
+             Files:  Porting/makerel
+     Branch: maint-5.004/perl
+           ! Porting/makerel
+____________________________________________________________________________
+[   998] By: TimBunce                              on 1998/05/15  22:49:55
+        Log: Title:  "Updated Changes file for trial 3"
+             From:  Tim Bunce
+             Files:  Changes
+     Branch: maint-5.004/perl
+           ! Changes
+____________________________________________________________________________
+[   997] By: gsar                                  on 1998/05/15  22:21:41
+        Log: merge changes#982,984 from maintbranch
+     Branch: win32/perl
+	   ! gv.c lib/English.pm perl.c pod/perlfunc.pod t/io/pipe.t
+           ! t/op/exec.t t/op/ipcsem.t util.c utils/h2ph.PL utils/h2xs.PL
+____________________________________________________________________________
+[   996] By: TimBunce                              on 1998/05/15  22:19:32
+        Log: Title:  "Negative array subscript unrecognized in regex"
+             From:  Mark-Jason Dominus ,
+             h.sanden@elsevier.nl (Hugo van der Sanden)
+             Msg-ID:  <19980425040819.13828.qmail@plover.com>,
+             <199805151514.RAA04121@dorlas.elsevier.nl>
+             Files:  t/base/lex.t toke.c
+             
+             Title:  "Remove e_fp from toke.c after change 955"
+             From:  Tim Bunce
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! t/base/lex.t toke.c
+____________________________________________________________________________
+[   995] By: TimBunce                              on 1998/05/15  22:08:32
+        Log: Title:  "Fix -e security hole (no longer uses temp file)"
+             From:  Tim Bunce
+             Files:  embed.h perl.h perl.c
+     Branch: maint-5.004/perl
+           ! embed.h perl.c perl.h
+____________________________________________________________________________
+[   994] By: gsar                                  on 1998/05/15  22:08:17
+        Log: merge change#981 from maintbranch, add XXX comment about
+             supporting %! for usethreads case
+     Branch: win32/perl
+           ! gv.c op.c
+____________________________________________________________________________
+[   992] By: TimBunce                              on 1998/05/15  22:01:32
+        Log: Title:  "install non-backwards compatible .pm files into archlib"
+             From:  Tim Bunce
+             Files:  installperl
+             
+             Title:  "revert "Can't locate" message to original for maintenance"
+             From:  Tim Bunce
+             Msg-ID:  <199804240047.SAA24155@den-mdev1.co.csgsystems.com>
+             Files:  pod/perldiag.pod pp_ctl.c
+     Branch: maint-5.004/perl
+           ! installperl pod/perldiag.pod pp_ctl.c
+____________________________________________________________________________
+[   991] By: gsar                                  on 1998/05/15  21:35:00
+        Log: reverse integrate ansiperl (all except the
+             C stuff, and the duplicate hunks)
+             i.e. prototype fixes, perldoc.PL enhancements, and s/comment/comment_t/g
+     Branch: win32/perl
+	  !> bytecode.h byterun.c cv.h ext/attrs/attrs.pm
+	  !> ext/attrs/attrs.xs pod/perlop.pod pp_hot.c sv.c toke.c
+          !> utils/perldoc.PL
+____________________________________________________________________________
+[   990] By: TimBunce                              on 1998/05/15  16:54:18
+        Log: Title:  "Add tests for die $ref"
+             From:  Graham Barr 
+             Msg-ID:  <355C6297.121B576B@ti.com>
+             Files:  MANIFEST t/op/die.t
+     Branch: maint-5.004/perl
+           + t/op/die.t
+           ! MANIFEST
+____________________________________________________________________________
+[   989] By: TimBunce                              on 1998/05/15  16:38:19
+        Log: Title:  "Fix t/op/ipcmsg.t for Digital UNIX"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199805151337.QAA01174@alpha.hut.fi>
+             Files:  t/op/ipcmsg.t
+     Branch: maint-5.004/perl
+           ! t/op/ipcmsg.t
+____________________________________________________________________________
+[   988] By: mbeattie                              on 1998/05/15  16:28:08
+        Log: Patch from Sarathy to fix up win32 integration. Patch from Jarkko
+             (manually applied and tweaked) to fix up SysV IPC semaphores for
+             Solaris and Linux (pre-glibc and glibc). Fix up t/op/ipcmsg.t and
+             t/op/ipcsem.t for platforms which wanted to skip test. Completely
+             disable ipcsem.t since it doesn't seem to work properly even when
+             not skipped. This is _65.
+     Branch: perl
+	   ! INSTALL doio.c lib/strict.pm perl.c perl.h pod/perldebug.pod
+           ! t/op/ipcmsg.t t/op/ipcsem.t
+____________________________________________________________________________
+[   987] By: nick                                  on 1998/05/15  16:03:35
+        Log: Integrate win32
+     Branch: ansiperl
+	  +> Porting/Contract Porting/patching.pod README.beos beos/nm.c
+	  +> ext/DynaLoader/DynaLoader.pm.PL ext/POSIX/hints/bsdos.pl
+	  +> ext/POSIX/hints/freebsd.pl ext/POSIX/hints/netbsd.pl
+	  +> ext/POSIX/hints/openbsd.pl hints/beos.sh hints/openbsd.sh
+	  +> pod/perldelta4.pod t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
+          +> t/op/pos.t utils/perlcc.PL
+           - ext/DynaLoader/DynaLoader.pm
+          !> (integrate 208 files)
+____________________________________________________________________________
+[   986] By: TimBunce                              on 1998/05/15  15:28:45
+        Log: Title:  "Patches for BeOS port of Perl, courtesy of Tom Spindler"
+             From:  Jarkko Hietaniemi , Tom Spindler
+             Msg-ID:  <199805042312.CAA09025@alpha.hut.fi>
+             Files:  MANIFEST Configure config_h.SH hints/beos.sh pod/perlfunc.pod
+             Porting/Glossary README.beos beos/nm.c lib/Term/ReadLine.pm
+             plan9/config.plan9 pp_sys.c t/io/pipe.t vms/config.vms
+             win32/config.bc win32/config.vc win32/config_H.bc
+             win32/config_H.vc
+     Branch: maint-5.004/perl
+           + README.beos beos/nm.c hints/beos.sh
+	   ! Configure MANIFEST Porting/Glossary config_h.SH
+	   ! lib/Term/ReadLine.pm plan9/config.plan9 pod/perlfunc.pod
+	   ! pp_sys.c t/io/pipe.t vms/config.vms win32/config.bc
+           ! win32/config.vc win32/config_H.bc win32/config_H.vc
+____________________________________________________________________________
+[   985] By: TimBunce                              on 1998/05/15  15:02:43
+        Log: Title:  "allow die $ref"
+             From:  Graham Barr , Tim.Bunce@ig.co.uk (Tim Bunce)
+             Msg-ID:  <199805151351.OAA01985@toad.ig.co.uk>, <355C3E67.AF25B9F7@ti.com>
+             Files:  pp_ctl.c pp_sys.c util.c
+             
+             Title:  "ExtUtils::Manifest could truncate files during "make dist""
+             From:  "James E Jurach Jr." ,
+             koenig@kulturbox.de (Andreas J. Koenig)
+             Msg-ID:  <199805111048.MAA02573@arrakis.int.ein.cz>,
+             
+             Files:  lib/ExtUtils/Manifest.pm
+             
+             Title:  "Autosplit doesn't like upper case letters in sub names on VMS"
+             From:  Dan Sugalski 
+             Msg-ID:  <3.0.5.32.19980330152332.009cb130@osshe.edu>
+             Files:  lib/AutoSplit.pm
+             
+             Title:  "AutoSplit/AutoLoaded subs: give useful line numbers in warnings etc"
+             From:  "Jesse N. Glick" , koenig@anna.mind.de (Andreas
+             J. Koenig), larry@wall.org (Larry Wall)
+             Msg-ID:  <199709292015.NAA09627@wall.org>, <342FCDDF.23534195@sig.bsh.com>,
+             ,
+             
+             Files:  lib/AutoSplit.pm
+     Branch: maint-5.004/perl
+	   ! lib/AutoSplit.pm lib/ExtUtils/Manifest.pm pp_ctl.c pp_sys.c
+           ! util.c
+____________________________________________________________________________
+[   984] By: TimBunce                              on 1998/05/15  14:18:52
+        Log: ------  CORE LANGUAGE  ------
+             
+             Title:  "Fix close pipe returning status from wrong child"
+             From:  "M.J.T. Guy" , kstar@chapin.edu@ig.co.uk ()
+             Msg-ID:  <199805142313.TAA02684@chapin.edu>,
+             
+             Files:  t/io/pipe.t util.c
+             
+             Title:  "Avoid English.pm triggering load of Errno.pm"
+             From:  Tim Bunce
+             Files:  gv.c lib/English.pm
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "Document child exit cause a parent sleep to end early"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "BSD Platforms need STRUCT_TM_HASZONE for POSIX"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  MANIFEST ext/POSIX/hints/bsdos.pl ext/POSIX/hints/freebsd.pl
+             ext/POSIX/hints/netbsd.pl ext/POSIX/hints/openbsd.pl
+             
+             Title:  "MM_VMS.pm fixes for building external library"
+             From:  Dan Sugalski 
+             Msg-ID:  <3.0.5.32.19980511160542.009dd480@ous.edu>
+             Files:  lib/ExtUtils/MM_VMS.pm
+             
+             Title:  "Appease picky DEC compiler in POSIX.xs"
+             From:  Dan Sugalski 
+             Msg-ID:  <3.0.5.32.19980511161434.009f8bb0@ous.edu>
+             Files:  ext/POSIX/POSIX.xs
+             
+             ------  TESTS  ------
+             
+             Title:  "Fix constant detection in t/op/ipcsem.t for Digit UNIX"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199805121212.PAA15351@alpha.hut.fi>
+             Files:  t/op/ipcsem.t
+             
+             Title:  "Fix doc bug for system() return value"
+             From:  Daniel Grisinger 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod t/op/exec.t
+             
+             ------  UTILITIES  ------
+             
+             Title:  "Avoid possible constant autoload loop"
+             From:  "M.J.T. Guy" , Graham Barr , Ilya
+             Zakharevich 
+             Msg-ID:  <199805141910.PAA26994@monk.mps.ohio-state.edu>,
+             <355B475A.C5AD4B90@ti.com>,
+             
+             Files:  utils/h2xs.PL
+             
+             Title:  "Further improvements to h2ph.PL"
+             From:  kstar@chapin.edu
+             Msg-ID:  <199805130241.WAA25459@chapin.edu>
+             Files:  utils/h2ph.PL
+     Branch: maint-5.004/perl
+	   + ext/POSIX/hints/bsdos.pl ext/POSIX/hints/freebsd.pl
+           + ext/POSIX/hints/netbsd.pl ext/POSIX/hints/openbsd.pl
+	   ! MANIFEST ext/POSIX/POSIX.xs gv.c lib/English.pm
+	   ! lib/ExtUtils/MM_VMS.pm pod/perlfunc.pod t/io/pipe.t
+           ! t/op/exec.t t/op/ipcsem.t util.c utils/h2ph.PL utils/h2xs.PL
+
+----------------
+Version 5.004_64
+----------------
+
+____________________________________________________________________________
+[   983] By: mbeattie                              on 1998/05/15  14:04:17
+        Log: Integrate win32 branch into mainline.
+     Branch: perl
+          +> Porting/patching.pod t/op/defins.t
+          !> (integrate 107 files)
+____________________________________________________________________________
+[   982] By: TimBunce                              on 1998/05/15  12:33:26
+        Log: Title:  "comment init_postdump_symbols issues"
+             From:  Tim Bunce
+             Files:  perl.c
+             
+             Title:  "Improve sort docs re SUBNAME"
+             From:  circle@azstarnet.com
+             Msg-ID:  <199804281828.LAA22737@andromeda.azstarnet.com>
+             Files:  pod/perlfunc.pod
+     Branch: maint-5.004/perl
+           ! perl.c pod/perlfunc.pod
+____________________________________________________________________________
+[   981] By: TimBunce                              on 1998/05/15  11:47:28
+        Log: Title:  "Add hook to tie %! to external Errno.pm module (not included)"
+             From:  Graham Barr 
+             Msg-ID:  <355080CD.1111BC81@ti.com>
+             Files:  gv.c
+     Branch: maint-5.004/perl
+           ! gv.c
+____________________________________________________________________________
+[   980] By: gsar                                  on 1998/05/15  06:16:13
+        Log: add doc for C<+{}> vs. C<{;}> disambiguation
+     Branch: win32/perl
+           ! pod/perlref.pod
+____________________________________________________________________________
+[   979] By: gsar                                  on 1998/05/15  04:59:47
+        Log: tweaks to win32 makefiles.  This version builds and passes all
+             tests on Solaris/gcc, win32/[bv]c.  Looks all set to go.
+     Branch: win32/perl
+           ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[   978] By: gsar                                  on 1998/05/15  02:41:58
+        Log: merge changes#922,944,949,965,970 from maintbranch
+     Branch: win32/perl
+           + Porting/patching.pod t/op/defins.t
+	   ! MANIFEST Porting/makerel ext/POSIX/POSIX.pod gv.c gv.h hv.c
+	   ! lib/File/Find.pm op.c pod/Makefile pod/perlfunc.pod
+	   ! pod/perlguts.pod pod/perlop.pod pod/pod2man.PL
+	   ! t/lib/filefind.t t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[   977] By: gsar                                  on 1998/05/15  02:15:25
+        Log: merge changes#906,907,909,910 from maintbranch
+     Branch: win32/perl
+	   ! MANIFEST doio.c doop.c embed.h embedvar.h global.sym
+	   ! keywords.h lib/Carp.pm lib/File/Basename.pm mg.c opcode.h
+	   ! perl.c perl.h pod/perldiag.pod pp.c pp_hot.c proto.h sv.c
+           ! util.c
+____________________________________________________________________________
+[   976] By: gsar                                  on 1998/05/15  01:34:53
+        Log: merge change#905 from maintbranch, minor fixes to get
+             clean build+test on Solaris
+     Branch: win32/perl
+	   ! doop.c dump.c embed.h embedvar.h lib/strict.pm mg.c op.h
+	   ! opcode.h pod/perlop.pod pod/perlre.pod pp_ctl.c pp_hot.c
+           ! regcomp.c sv.c t/op/taint.t toke.c
+____________________________________________________________________________
+[   975] By: gsar                                  on 1998/05/14  23:34:26
+        Log: merge change#904 from maintbranch
+     Branch: win32/perl
+	   ! doop.c ext/DynaLoader/dl_aix.xs ext/IO/lib/IO/Socket.pm
+	   ! ext/NDBM_File/NDBM_File.pm lib/strict.pm lib/subs.pm
+	   ! lib/vars.pm op.c perl.c pod/perldiag.pod pod/perlembed.pod
+	   ! pod/perlfunc.pod pod/perlsec.pod pp_ctl.c sv.c utils/h2ph.PL
+           ! vms/descrip.mms
+____________________________________________________________________________
+[   974] By: gsar                                  on 1998/05/14  23:11:05
+        Log: merge change#897 from maintbranch
+     Branch: win32/perl
+	   ! Porting/Contract Todo doio.c emacs/ptags embed.h ext/IO/IO.pm
+	   ! ext/Opcode/Opcode.pm lib/Carp.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/Pod/Html.pm lib/Term/ReadLine.pm lib/chat2.pl opcode.h
+	   ! opcode.pl perl.c pod/perlapio.pod pod/perlcall.pod
+	   ! pod/perldebug.pod pod/perldelta.pod pod/perldelta4.pod
+	   ! pod/perldiag.pod pod/perlembed.pod pod/perlfaq2.pod
+	   ! pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+	   ! pod/perlfaq7.pod pod/perlfaq8.pod pod/perlform.pod
+	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlhist.pod
+	   ! pod/perlipc.pod pod/perllocale.pod pod/perlmodlib.pod
+	   ! pod/perlop.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
+	   ! pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
+	   ! pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod pod/pod2man.PL
+	   ! pod/roffitall pp.c pp_sys.c t/TEST t/op/gv.t t/op/hashwarn.t
+	   ! t/op/substr.t vms/vms.c win32/config.bc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.vc win32/win32.c
+           ! x2p/find2perl.PL
+____________________________________________________________________________
+[   973] By: gsar                                  on 1998/05/14  22:24:26
+        Log: integrate mainline
+     Branch: win32/perl
+           + Porting/Contract
+	  +> README.beos beos/nm.c ext/POSIX/hints/bsdos.pl
+	  +> ext/POSIX/hints/freebsd.pl ext/POSIX/hints/netbsd.pl
+	  +> ext/POSIX/hints/openbsd.pl hints/beos.sh pod/perldelta4.pod
+          +> utils/perlcc.PL
+	   ! MANIFEST Todo doio.c emacs/ptags embed.h ext/IO/IO.pm
+	   ! ext/Opcode/Opcode.pm ext/Socket/Socket.xs hints/irix_5.sh
+	   ! hints/netbsd.sh hv.c lib/Benchmark.pm lib/Carp.pm
+	   ! lib/ExtUtils/Install.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/Pod/Html.pm lib/Term/ReadLine.pm lib/chat2.pl opcode.h
+	   ! opcode.pl perl.c perl.h pod/perlapio.pod pod/perlcall.pod
+	   ! pod/perldebug.pod pod/perldelta.pod pod/perldiag.pod
+	   ! pod/perlembed.pod pod/perlfaq2.pod pod/perlfaq3.pod
+	   ! pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfaq7.pod
+	   ! pod/perlfaq8.pod pod/perlform.pod pod/perlfunc.pod
+	   ! pod/perlguts.pod pod/perlhist.pod pod/perlipc.pod
+	   ! pod/perllocale.pod pod/perlmodlib.pod pod/perlop.pod
+	   ! pod/perlre.pod pod/perlref.pod pod/perlrun.pod
+	   ! pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
+	   ! pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod pod/pod2man.PL
+	   ! pod/roffitall pp.c pp_hot.c pp_sys.c sv.c t/TEST t/op/gv.t
+	   ! t/op/hashwarn.t t/op/substr.t vms/vms.c win32/config.bc
+	   ! win32/config.vc win32/config_H.bc win32/config_H.vc
+           ! win32/win32.c x2p/find2perl.PL
+          !> (integrate 59 files)
+____________________________________________________________________________
+[   972] By: nick                                  on 1998/05/14  18:09:01
+        Log: Changes to allow compiler with gcc-2.8.1 in C++ mode,
+             Remove K&R style functions, avoid struct/typedef clash. 
+     Branch: ansiperl
+           ! bytecode.h byterun.c sv.c toke.c
+____________________________________________________________________________
+[   971] By: TimBunce                              on 1998/05/14  16:52:19
+        Log: 
+             Title:  "fix C (pp_refgen fumbles when G_SCALAR, no args)"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805070402.AAA02858@aatma.engin.umich.edu>
+             Files:  pp.c
+     Branch: maint-5.004/perl
+           ! pp.c
+____________________________________________________________________________
+[   970] By: TimBunce                              on 1998/05/14  16:18:06
+        Log: 
+             Title:  "perlbug reformatted"
+             From:  Dominic Dunlop , Hugo van der Sanden
+             
+             Msg-ID:  <199805110954.LAA20367@dorlas.elsevier.nl>,
+             ,
+             
+             Files:  utils/perlbug.PL
+     Branch: maint-5.004/perl
+           ! utils/perlbug.PL
+____________________________________________________________________________
+[   969] By: mbeattie                              on 1998/05/14  16:15:09
+        Log: Integrate win32 branch into mainline
+     Branch: perl
+	  +> ext/DynaLoader/DynaLoader.pm.PL hints/openbsd.sh
+          +> t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t t/op/pos.t
+           - ext/DynaLoader/DynaLoader.pm
+          !> (integrate 118 files)
+____________________________________________________________________________
+[   968] By: mbeattie                              on 1998/05/14  16:05:57
+        Log: Bump patchlevel to 65
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   967] By: mbeattie                              on 1998/05/14  16:05:19
+        Log: Another fixup of MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   966] By: mbeattie                              on 1998/05/14  16:02:20
+        Log: Add missing files to MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   965] By: TimBunce                              on 1998/05/14  16:00:11
+        Log: 
+             Title:  "Sub declaration cost reduced from ~500 to ~100 bytes"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199805050607.CAA02050@monk.mps.ohio-state.edu>
+             Files:  gv.h gv.c op.c
+     Branch: maint-5.004/perl
+           ! gv.c gv.h op.c
+____________________________________________________________________________
+[   964] By: mbeattie                              on 1998/05/14  15:58:01
+        Log: Subject: [PATCH] Using Getopts::* with strict vars
+             Date: Wed, 29 Apr 1998 22:48:16 -0700 (PDT)
+             From: Tom Phoenix 
+     Branch: perl
+           ! lib/Getopt/Long.pm lib/Getopt/Std.pm lib/strict.pm
+____________________________________________________________________________
+[   963] By: mbeattie                              on 1998/05/14  15:56:53
+        Log: Subject: [ PATCH 5.004_64 ] Integrated regression tests for compiler
+             Date: Wed, 29 Apr 1998 21:02:36 -0600 (MDT)
+             From: epeschko@den-mdev1 (Ed Peschko)
+     Branch: perl
+           + utils/perlcc.PL
+	   ! MANIFEST Makefile.SH installperl lib/Test/Harness.pm
+           ! pod/Makefile t/TEST t/harness utils/Makefile x2p/Makefile.SH
+____________________________________________________________________________
+[   962] By: mbeattie                              on 1998/05/14  15:45:28
+        Log: From: Dan Sugalski 
+             Subject: [PATCH 5.004_64] Final (I hope) doc patch for Thread.pm
+             Date: Wed, 08 Apr 1998 17:08:48 -0700
+             Subject: [PATCH 5.004_64] Revised second Thread.PM doc patch
+             Date: Fri, 08 May 1998 10:49:16 -0700
+     Branch: perl
+           ! ext/Thread/Thread.pm
+____________________________________________________________________________
+[   961] By: mbeattie                              on 1998/05/14  15:43:39
+        Log: Subject: Consolidated patch to 5.004_64
+             Date: Wed, 08 Apr 1998 19:44:34 -0400 (EDT)
+             From: Charles Bailey 
+     Branch: perl
+	   ! ext/B/byteperl.c lib/ExtUtils/MM_Unix.pm
+	   ! lib/ExtUtils/MM_VMS.pm lib/chat2.pl perl.c pod/perlsub.pod
+	   ! vms/config.vms vms/descrip.mms vms/genconfig.pl
+           ! vms/perlvms.pod
+____________________________________________________________________________
+[   960] By: mbeattie                              on 1998/05/14  15:41:41
+        Log: Subject: Re: ANNOUNCE: Perl 5.005b1t3 (a.k.a. perl5.004_64) is available
+             Date: 07 Apr 1998 18:31:21 +0200
+             From: JVromans@Squirrel.nl (Johan Vromans)
+     Branch: perl
+           ! lib/Getopt/Long.pm
+____________________________________________________________________________
+[   959] By: mbeattie                              on 1998/05/14  15:39:29
+        Log: From: Jarkko Hietaniemi 
+             Subject: Re: [PATCH] 5.004_04 or 5.004_64: Benchmark.pm: add run-for-some-time 
+             Date: Wed, 8 Apr 1998 09:47:45 +0300 (EET DST)
+             Subject: [PATCH] perl 5.004_64+Config_04
+             Date: Thu, 14 May 1998 12:14:07 +0300 (EET DST)
+     Branch: perl
+           ! lib/Benchmark.pm pod/perlfunc.pod
+____________________________________________________________________________
+[   958] By: mbeattie                              on 1998/05/14  15:36:30
+        Log: From: kstar@chapin.edu
+             Subject: [PATCH] hints for Irix 6
+             Date: Mon, 6 Apr 1998 15:14:14 -0400 (EDT)
+             Subject: [PATCH 5.004_64] Threads - an easy way for dual installation
+             Date: Wed, 29 Apr 1998 15:39:46 -0400 (EDT)
+     Branch: perl
+           ! INSTALL hints/irix_6.sh installperl
+____________________________________________________________________________
+[   957] By: mbeattie                              on 1998/05/14  15:33:48
+        Log: Subject: [PATCH] Install extensions with bootstrap (again) in $archlib
+             Date: Mon, 06 Apr 1998 21:09:24 +0200
+             From: Achim Bohnet 
+     Branch: perl
+           ! lib/ExtUtils/Install.pm
+____________________________________________________________________________
+[   956] By: mbeattie                              on 1998/05/14  15:32:39
+        Log: Subject: [PATCH] Config: Irix 5 hints
+             Date: Mon, 6 Apr 1998 13:12:47 -0400 (EDT)
+             From: kstar@O2.chapin.edu
+     Branch: perl
+           ! hints/irix_5.sh
+____________________________________________________________________________
+[   955] By: mbeattie                              on 1998/05/14  15:31:12
+        Log: Subject: PATCH: h2ph produces incorrect code
+             Date: Mon, 6 Apr 1998 23:52:13 +0930 (CST)
+             From: Billy 
+     Branch: perl
+           ! utils/h2ph.PL
+____________________________________________________________________________
+[   954] By: mbeattie                              on 1998/05/14  15:29:27
+        Log: Subject: [PATCH] perldebug.pod
+             Date: Mon, 6 Apr 1998 00:36:57 -0600
+             From: jason stewart 
+     Branch: perl
+           ! pod/perldebug.pod
+____________________________________________________________________________
+[   953] By: mbeattie                              on 1998/05/14  15:28:00
+        Log: From: Dominic Dunlop 
+             Subject: [PATCH 5.004_64]: hints/machten.sh: disable semctl()
+             Date: Wed, 6 May 1998 14:39:32 +0000
+             Subject: [PATCH] Not OK: perl 5.00464 on powerpc-machten 4.1 (hashwarn @INC problem)
+             Date: Sat, 4 Apr 1998 19:44:34 +0000
+     Branch: perl
+           ! hints/machten.sh t/op/hashwarn.t
+____________________________________________________________________________
+[   952] By: mbeattie                              on 1998/05/14  15:23:19
+        Log: New pod/perldelta.pod (previous one branched in last change):
+             Subject: [PATCH 5.004_64] Start new perldelta
+             Date: Thu, 23 Apr 1998 12:12:38 -0400 (EDT)
+             From: Andy Dougherty 
+     Branch: perl
+           + pod/perldelta.pod
+____________________________________________________________________________
+[   951] By: mbeattie                              on 1998/05/14  15:20:43
+        Log: From: Andy Dougherty 
+             Subject: [PATCH for 5.004_04 and 5.004_64] (Was: Obsoleted svr4.sh)
+             Date: Thu, 23 Apr 1998 11:10:15 -0400 (EDT)
+             Subject: [PATCH 5.004_64] Start new perldelta
+             Date: Thu, 23 Apr 1998 12:12:38 -0400 (EDT)
+             (above branched perldelta -> perldelta4, new perldelta will be
+             created/added next change)
+             Subject: [PATCH] BSD Platforms need STRUCT_TM_HASZONE
+             Date: Tue, 12 May 1998 09:58:49 -0400 (EDT)
+     Branch: perl
+	   + ext/POSIX/hints/bsdos.pl ext/POSIX/hints/freebsd.pl
+           + ext/POSIX/hints/netbsd.pl ext/POSIX/hints/openbsd.pl
+          +> pod/perldelta4.pod
+           - pod/perldelta.pod
+           ! MANIFEST hints/svr4.sh
+____________________________________________________________________________
+[   949] By: TimBunce                              on 1998/05/14  15:11:30
+        Log: 
+             Title:  "while($x=<>) no longer warns (implicit defined added)"
+             From:  Nick Ing-Simmons 
+             Msg-ID:  <199805051035.LAA27365@pluto.tiuk.ti.com>
+             Files:  MANIFEST op.c t/op/defins.t
+     Branch: maint-5.004/perl
+           + t/op/defins.t
+           ! MANIFEST op.c
+____________________________________________________________________________
+[   948] By: mbeattie                              on 1998/05/14  15:09:51
+        Log: From: Andy Dougherty 
+             Subject: [PATCH for 5.004_64] Configure patch Config_64-01
+             Date: Tue, 14 Apr 1998 13:04:58 -0400 (EDT)
+             Subject: [PATCH for 5.004_64] Configure patch Config_64-01-02.diff
+             Date: Fri, 17 Apr 1998 11:01:13 -0400 (EDT)
+             Subject: [PATCH for 5.004_64] Configure patch Config_64-02-03.diff
+             Date: Thu, 23 Apr 1998 15:03:20 -0400 (EDT)
+             Subject: [PATCH 5.004_64] Config_64-03-04.diff
+             Date: Wed, 13 May 1998 14:33:30 -0400 (EDT)
+     Branch: perl
+           + README.beos beos/nm.c hints/beos.sh
+	   ! Configure INSTALL MANIFEST Makefile.SH Policy_sh.SH
+	   ! Porting/Glossary Porting/config.sh Porting/config_H
+	   ! Porting/pumpkin.pod Todo cflags.SH config_h.SH
+	   ! djgpp/djgppsed.sh doop.c handy.h hints/dos_djgpp.sh
+	   ! hints/netbsd.sh hints/solaris_2.sh hints/unicos.sh
+	   ! hints/unicosmk.sh hv.h lib/Term/ReadLine.pm perl.h
+	   ! plan9/config.plan9 pod/perlfunc.pod pp.c pp_sys.c sv.h
+	   ! t/io/pipe.t thread.h vms/config.vms win32/config.bc
+           ! win32/config.vc win32/config_H.bc win32/config_H.vc
+____________________________________________________________________________
+[   946] By: TimBunce                              on 1998/05/14  15:07:06
+        Log: 
+             Title:  "Fix PERL_DESTRUCT_LEVEL core dumps"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805062301.TAA24599@aatma.engin.umich.edu>
+             Files:  perl.c sv.c t/op/misc.t
+     Branch: maint-5.004/perl
+           ! perl.c sv.c t/op/misc.t
+____________________________________________________________________________
+[   945] By: mbeattie                              on 1998/05/14  15:00:31
+        Log: Subject: Perl Social Contract
+             Date: 13 Apr 1998 06:16:59 -0700
+             From: Russ Allbery 
+     Branch: perl
+           + Porting/Contract
+____________________________________________________________________________
+[   944] By: TimBunce                              on 1998/05/14  14:59:37
+        Log: 
+             Title:  "5.004_04-m2 Cleanup of test failures"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805070416.AAA03082@aatma.engin.umich.edu>
+             Files:  t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t t/op/taint.t
+             win32/config.bc win32/config.vc
+     Branch: maint-5.004/perl
+	   ! t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t t/op/taint.t
+           ! win32/config.bc win32/config.vc
+____________________________________________________________________________
+[   943] By: mbeattie                              on 1998/05/14  14:58:13
+        Log: From: Joshua.Pritikin@NewYork2.dmg.deuba.com
+             Subject: [PATCH 5.004_64] Test.pm update
+             Date: Sat, 4 Apr 1998 08:33:50 -0500
+             Subject: [PATCH 5.004_64] modcount + comments
+             Date: Fri, 17 Apr 1998 16:07:35 -0400
+     Branch: perl
+           ! lib/Test.pm op.c thrdvar.h
+____________________________________________________________________________
+[   942] By: mbeattie                              on 1998/05/14  14:49:43
+        Log: From: Ilya Zakharevich 
+             Subject: [PATCH 5.004_64] newSV
+             Date: Wed, 8 Apr 1998 03:21:03 -0400 (EDT)
+             Subject: [PATCH 5.004_64] Cryptic error from B::CC
+             Date: Sat, 11 Apr 1998 19:52:25 -0400 (EDT)
+     Branch: perl
+           ! ext/B/B/CC.pm handy.h proto.h sv.c
+____________________________________________________________________________
+[   941] By: mbeattie                              on 1998/05/14  14:47:29
+        Log: From: Ilya Zakharevich 
+             Subject: [PATCH 5.004_64] anydbm.t
+             Date: Sat, 4 Apr 1998 01:39:03 -0500 (EST)
+             Subject: [PATCH 5.004_64] threads on OS/2
+             Date: Sat, 4 Apr 1998 01:44:29 -0500 (EST)
+             Subject: [PATCH 5.004_64] Better handling of Perl DLLs under OS/2
+             Date: Sat, 4 Apr 1998 01:47:58 -0500 (EST)
+             Subject: [PATCH 5.004_64] Immediate stop in debugger
+             Date: Sat, 11 Apr 1998 19:50:58 -0400 (EDT)
+             Subject: [PATCH 5.005_64] ptags broken
+             Date: Sat, 11 Apr 1998 22:08:21 -0400 (EDT)
+             Subject: [PATCH 5.004_64] Document switch syntax via RE
+             Date: Sun, 12 Apr 1998 01:12:33 -0400 (EDT)
+     Branch: perl
+	   ! emacs/ptags lib/ExtUtils/MM_OS2.pm lib/ExtUtils/Mksymlists.pm
+	   ! lib/perl5db.pl os2/Changes os2/Makefile.SHs os2/os2.c
+           ! os2/os2thread.h pod/perlsyn.pod t/lib/anydbm.t
+____________________________________________________________________________
+[   940] By: mbeattie                              on 1998/05/14  14:38:44
+        Log: Subject: [PATCH 5.004_64] Build Stdio and DCLSym modules as part of  normal VMS perl build
+             Date: Fri, 03 Apr 1998 16:01:57 -0800
+             From: Dan Sugalski 
+     Branch: perl
+	   ! vms/descrip.mms vms/ext/DCLsym/Makefile.PL
+           ! vms/ext/Stdio/Makefile.PL vms/ext/Stdio/Stdio.xs
+____________________________________________________________________________
+[   939] By: mbeattie                              on 1998/05/14  14:35:42
+        Log: Subject: [PATCH 5.004_64] perl dies in perl_construct when compiled  with MULTIPLICITY
+             Date: Fri, 03 Apr 1998 13:58:15 -0800
+             From: Dan Sugalski 
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[   938] By: gsar                                  on 1998/05/14  10:53:55
+        Log: merge change#896 from maintbranch
+     Branch: win32/perl
+	   ! doio.c ext/Socket/Socket.xs lib/Class/Struct.pm lib/Cwd.pm
+	   ! lib/File/Find.pm lib/Math/BigInt.pm lib/lib.pm lib/strict.pm
+	   ! op.c pod/perldiag.pod pod/perlfunc.pod pp.c pp_ctl.c sv.c
+           ! t/op/gv.t t/op/misc.t t/op/pack.t
+____________________________________________________________________________
+[   937] By: gsar                                  on 1998/05/14  09:31:34
+        Log: merge change#887 from maintbranch
+     Branch: win32/perl
+           + t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
+	   ! MANIFEST doio.c lib/File/CheckTree.pm lib/Getopt/Long.pm
+	   ! lib/Math/BigFloat.pm lib/Text/ParseWords.pm lib/Text/Wrap.pm
+	   ! lib/base.pm perl.c pod/perlre.pod t/lib/io_sock.t
+	   ! t/lib/io_udp.t t/lib/parsewords.t t/lib/timelocal.t
+           ! t/op/stat.t toke.c utils/h2xs.PL
+____________________________________________________________________________
+[   936] By: gsar                                  on 1998/05/14  09:06:18
+        Log: merge change#886 from maintbranch
+     Branch: win32/perl
+	   ! README.os2 README.vms cop.h ext/DynaLoader/dl_hpux.xs
+	   ! ext/POSIX/POSIX.xs ext/POSIX/hints/linux.pl global.sym
+	   ! hints/aix.sh hints/bsdos.sh hints/dec_osf.sh hints/hpux.sh
+	   ! hints/linux.sh hints/netbsd.sh hints/os2.sh hints/svr4.sh
+	   ! lib/ExtUtils/MM_OS2.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/File/Basename.pm lib/File/Path.pm op.c os2/Makefile.SHs
+	   ! os2/os2.c os2/perl2cmd.pl perl.c perl.h pod/perlguts.pod
+	   ! pod/pod2man.PL pp_ctl.c pp_hot.c pp_sys.c proto.h
+	   ! t/lib/filecopy.t util.c utils/perldoc.PL vms/config.vms
+	   ! vms/descrip.mms vms/ext/Filespec.pm vms/ext/filespec.t
+           ! vms/test.com
+____________________________________________________________________________
+[   935] By: gsar                                  on 1998/05/14  07:00:02
+        Log: merge changes#872,873 from maintbranch
+     Branch: win32/perl
+	   ! Changes5.004 INSTALL lib/ExtUtils/MakeMaker.pm
+	   ! lib/FileHandle.pm lib/Tie/Hash.pm lib/constant.pm
+	   ! lib/integer.pm pod/perl.pod pod/perlbook.pod pod/perldsc.pod
+	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlhist.pod
+	   ! pod/perlop.pod pod/perlre.pod pod/perlrun.pod pod/perlsec.pod
+	   ! pod/perltrap.pod pod/perlvar.pod pod/pod2latex.PL
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   934] By: gsar                                  on 1998/05/14  06:24:38
+        Log: merge changes#755..759,763,764 from maintbranch
+     Branch: win32/perl
+           + hints/openbsd.sh
+	   ! MANIFEST Porting/patchls perl.c perlsdio.h pod/perlfunc.pod
+           ! t/op/pos.t utils/perldoc.PL
+____________________________________________________________________________
+[   933] By: gsar                                  on 1998/05/14  06:07:31
+        Log: merge change#754 from maintbranch
+     Branch: win32/perl
+           ! perl.c
+____________________________________________________________________________
+[   932] By: gsar                                  on 1998/05/14  06:03:50
+        Log: merge changes#752,753 from maintbranch
+     Branch: win32/perl
+           + t/op/pos.t
+	   ! README ext/GDBM_File/GDBM_File.pm
+           ! ext/SDBM_File/sdbm/Makefile.PL pod/perlsyn.pod
+____________________________________________________________________________
+[   931] By: gsar                                  on 1998/05/14  05:51:19
+        Log: merge change#745 from maintbranch
+     Branch: win32/perl
+           + ext/DynaLoader/DynaLoader.pm.PL
+           - ext/DynaLoader/DynaLoader.pm
+           ! MANIFEST ext/DynaLoader/Makefile.PL
+____________________________________________________________________________
+[   930] By: nick                                  on 1998/05/13  20:39:59
+        Log: resolve -at //depot/win32 into ansiperl for C++ testing.
+     Branch: ansiperl
+           ! utils/perldoc.PL
+	  !> MANIFEST ext/Fcntl/Fcntl.pm hv.c lib/ExtUtils/Liblist.pm op.c
+	  !> perl.c pod/perlfunc.pod pod/perlguts.pod pp.c pp_ctl.c
+	  !> regcomp.c regcomp.h regexec.c t/op/hashwarn.t t/op/runlevel.t
+	  !> win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+          !> win32/makedef.pl win32/makefile.mk
+____________________________________________________________________________
+[   929] By: gsar                                  on 1998/05/13  10:13:36
+        Log: merge change#687 from maintbranch
+     Branch: win32/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[   928] By: gsar                                  on 1998/05/13  10:08:13
+        Log: merge change#683 from maintbranch
+     Branch: win32/perl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[   927] By: gsar                                  on 1998/05/13  09:51:43
+        Log: merge change#681 from maintbranch
+     Branch: win32/perl
+           ! ext/Fcntl/Fcntl.pm
+____________________________________________________________________________
+[   926] By: gsar                                  on 1998/05/13  09:47:11
+        Log: merge change#664 from maint branch
+     Branch: win32/perl
+           ! regcomp.c regcomp.h regexec.c
+____________________________________________________________________________
+[   925] By: gsar                                  on 1998/05/13  08:55:28
+        Log: merge missing part of change#663 from maint branch
+     Branch: win32/perl
+           ! op.c
+____________________________________________________________________________
+[   924] By: gsar                                  on 1998/05/12  18:50:04
+        Log: remove x586 code gen switch (-5) for Borland, it is non-generic,
+             and seems to generate problematic code for PII.
+     Branch: win32/perl
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   923] By: gsar                                  on 1998/05/12  16:24:02
+        Log: fix test failure
+             Message-Id: <199805120940.KAA01252@pluto.tiuk.ti.com>
+             Date:    Tue, 12 May 1998 10:40:57 BST
+             From:    Nick.Ing-Simmons@tiuk.ti.com
+             Subject: test buglet
+     Branch: win32/perl
+           ! t/op/hashwarn.t
+____________________________________________________________________________
+[   922] By: TimBunce                              on 1998/05/11  20:58:58
+        Log: Assorted patches:
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "incorrect return value for hv_iterinit"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805031848.OAA20618@aatma.engin.umich.edu>
+             Files:  pod/perlguts.pod hv.c
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "perlvar.pod buglet E"
+             From:  Achim Bohnet 
+             Msg-ID:  <9805041415.AA22185@o09.xray.mpe.mpg.de>
+             Files:  pod/perlvar.pod
+             
+             Title:  "Improve docs for warning about code after an exec()"
+             From:  "M.J.T. Guy" , Chaim Frenkel
+             
+             Msg-ID:  ,
+             
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Remove dead code from pod2man"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/pod2man.PL
+             
+             Title:  "tweak doc for C"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199805090017.UAA06888@aatma.engin.umich.edu>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Document integer pragma effect on % operator"
+             From:  Gisle Aas 
+             Msg-ID:  
+             Files:  pod/perlop.pod
+             
+             Title:  "Reduce rm command line length in pod/Makefile"
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199805041423.QAA13199@dorlas.elsevier.nl>
+             Files:  pod/Makefile
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "Clarify Termios usage in POSIX.pod"
+             From:  Rocco Caputo 
+             Msg-ID:  <199805101952.PAA12738@ns.netrus.net>
+             Files:  ext/POSIX/POSIX.pod
+             
+             ------  LIBRARY  ------
+             
+             Title:  "Fix File::Find::finddepth typo in trial 2 release"
+             From:  koenig@kulturbox.de (Andreas J. Koenig)
+             Msg-ID:  
+             Files:  lib/File/Find.pm t/lib/filefind.t
+             
+             ------  PORTABILITY - GENERAL  ------
+             
+             Title:  "Add Porting/patching.pod document"
+             From:  Daniel Grisinger 
+             Msg-ID:  <199805030305.XAA16147@relay.pair.com>
+             Files:  MANIFEST Porting/patching.pod
+             
+             Title:  "hints/machten.sh: disable semctl(), align with devel version"
+             From:  Dominic Dunlop 
+             Msg-ID:  
+             Files:  hints/machten.sh
+             
+             Title:  "Add VMS specifics to Porting/makerel"
+             From:  Charles Bailey 
+             Msg-ID:  <01IWDK1LONRQ0026P0@cor.newman.upenn.edu>,
+             <199804271732.SAA13762@toad.ig.co.uk>,
+             <9804250212.AA27695@forte.com>
+             Files:  Porting/makerel
+     Branch: maint-5.004/perl
+           + Porting/patching.pod
+	   ! MANIFEST Porting/makerel ext/POSIX/POSIX.pod hints/machten.sh
+	   ! hv.c lib/File/Find.pm pod/Makefile pod/perlfunc.pod
+	   ! pod/perlguts.pod pod/perlop.pod pod/perlvar.pod pod/pod2man.PL
+           ! t/lib/filefind.t
+____________________________________________________________________________
+[   921] By: gsar                                  on 1998/05/10  02:28:03
+        Log: various tweaks to makefiles
+     Branch: win32/perl
+           ! win32/Makefile win32/makedef.pl win32/makefile.mk
+____________________________________________________________________________
+[   920] By: gsar                                  on 1998/05/10  02:27:19
+        Log: fix ExtUtils::Liblist mishandling paths with spaces
+     Branch: win32/perl
+           ! lib/ExtUtils/Liblist.pm
+____________________________________________________________________________
+[   919] By: gsar                                  on 1998/05/09  17:10:15
+        Log: minor cleanup
+     Branch: win32/perl
+           ! MANIFEST perl.c
+____________________________________________________________________________
+[   918] By: gsar                                  on 1998/05/09  17:09:09
+        Log: protect sortcop from C
+             Message-Id: <199805082333.TAA06287@aatma.engin.umich.edu>
+             Date:    Fri, 08 May 1998 19:33:44 EDT
+             From:    Gurusamy Sarathy 
+             Subject: [PATCH] Re: double recursion in sort 
+     Branch: win32/perl
+           ! pp_ctl.c t/op/runlevel.t
+____________________________________________________________________________
+[   917] By: gsar                                  on 1998/05/09  17:05:55
+        Log: c
+     Branch: win32/perl
+           ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[   916] By: gsar                                  on 1998/05/07  03:40:15
+        Log: fix C (pp_refgen fumbles when G_SCALAR, no args)
+     Branch: win32/perl
+           ! pp.c
+____________________________________________________________________________
+[   915] By: mbeattie                              on 1998/05/06  13:08:29
+        Log: Speed up pp_entersub for usethreads with only 1 thread running.
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[   914] By: gsar                                  on 1998/05/03  18:44:38
+        Log: make hv_iterinit() return HvKEYS()
+             Message-Id: <3.0.1.32.19980502162922.009e6320@www.syncad.com>
+             Date:    Sat, 02 May 1998 16:29:22 EDT
+             From:    "SynaptiCAD, Inc." 
+             Subject: incorrect return value for hv_iterinit
+     Branch: win32/perl
+           ! hv.c pod/perlguts.pod
+____________________________________________________________________________
+[   913] By: TimBunce                              on 1998/05/01  22:38:38
+        Log: Update MANIFEST for trial 2.
+             (Porting/Contract lib/Tie/Handle.pm t/op/tiehandle.t)
+     Branch: maint-5.004/perl
+           ! MANIFEST
+____________________________________________________________________________
+[   912] By: TimBunce                              on 1998/05/01  22:30:29
+        Log: Add t/op/tiehandle.t as xtext to repository (see change 911)
+     Branch: maint-5.004/perl
+           + t/op/tiehandle.t
+____________________________________________________________________________
+[   911] By: TimBunce                              on 1998/05/01  21:35:03
+        Log: 
+             Title:  "Add ERRSV, ERRHV, DEFSV and SAVE_DEFSV for XS 5.005 compatibility"
+             From:  timbo@ig.co.uk (Tim Bunce)
+             Msg-ID:  <199804200854.JAA01482@toad.ig.co.uk>
+             Files:  perl.h
+             
+             Title:  "Add WRITE & CLOSE to TIEHANDLE"
+             From:  Graham Barr 
+             Msg-ID:  <34F63DC8.CA95670F@pobox.com>
+             Files:  pod/perltie.pod lib/Tie/Handle.pm pp_sys.c t/op/tiehandle.t
+     Branch: maint-5.004/perl
+           + lib/Tie/Handle.pm
+           ! perl.h pod/perltie.pod pp_sys.c
+____________________________________________________________________________
+[   910] By: TimBunce                              on 1998/05/01  20:47:47
+        Log: 
+             Title:  "Add warning for Illegal hex digit"
+             From:  Stephen P Potter , Stephen Potter
+             , Tim.Bunce@ig.co.uk (Tim Bunce)
+             Msg-ID:  <199804232219.SAA02267@spp.users.ds.net>,
+             <199804271409.PAA12819@toad.ig.co.uk>,
+             <199804280307.WAA12332@psasolar.psa.pencom.com>
+             Files:  pod/perldiag.pod util.c
+             
+             Title:  "perl_call_method() bug fix (corrupt op pointer)"
+             From:  "Alterman, Eugene" 
+             Msg-ID:  <510415F72ECFD111A31700A0C9B3CCDE3098@efx98digmasa.bremer-inc.com>
+             Files:  perl.c
+             
+             Title:  "Fix printf segmentation fault"
+             From:  Hugo van der Sanden 
+             Msg-ID:  
+             Files:  pp_hot.c
+             
+             Title:  "Document changed local($a[$i],$b{$j}) behaviour re delete/splice"
+             From:  Charles Bailey 
+             Msg-ID:  <01IVMVIHNZ36001NKH@cor.newman.upenn.edu>
+             Files:  pod/perlsub.pod
+     Branch: maint-5.004/perl
+           ! perl.c pod/perldiag.pod pod/perlsub.pod pp_hot.c util.c
+____________________________________________________________________________
+[   909] By: TimBunce                              on 1998/05/01  19:44:47
+        Log: 
+             Title:  "Change Ilya's do_binmode to K&R prototype and move to doio.c"
+             Files:  doio.c util.c
+     Branch: maint-5.004/perl
+           ! doio.c util.c
+____________________________________________________________________________
+[   908] By: gsar                                  on 1998/05/01  19:21:02
+        Log: add AS patch#20 (exposes more global constants)
+     Branch: asperl
+	   ! ObjXSub.h byterun.h embed.h embedvar.h global.sym globals.c
+	   ! interp.sym ipsock.h ipstdio.h objpp.h perlio.h perlsock.h
+           ! proto.h util.c win32/GenCAPI.pl win32/runperl.c
+____________________________________________________________________________
+[   907] By: TimBunce                              on 1998/05/01  17:50:46
+        Log: 
+             Title:  "Runtime Carp verbosity without aliasing"
+             From:  Joshua.Pritikin@NewYork2.dmg.deuba.com, Tim Bunce
+             Msg-ID:  
+             Files:  lib/Carp.pm
+             
+             Title:  "Fix File::Basename to not untaint results (using new //t flag)"
+             From:  Eric Hammond , Tom Phoenix
+             
+             Msg-ID:  <199710070515.WAA00682@finity.citysearch.com>,
+             
+             Files:  lib/File/Basename.pm
+     Branch: maint-5.004/perl
+           ! lib/Carp.pm lib/File/Basename.pm
+____________________________________________________________________________
+[   906] By: TimBunce                              on 1998/04/28  11:04:49
+        Log: 
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "5.004_04m5t1: Fix dangling references in LVs", "Fix dangling
+             references in LVs"
+             From:  Spider Boardman 
+             Msg-ID:  <199804010541.AAA32615@Orb.Nashua.NH.US>,
+             <19980422164037.D29222@perl.org>
+             Files:  embed.h keywords.h opcode.h perl.h proto.h doop.c global.sym mg.c
+             pp.c sv.c
+             
+             Title:  "Fix SvGMAGIC typo in change 904"
+             Files:  doop.c
+     Branch: maint-5.004/perl
+	   ! doop.c embed.h global.sym keywords.h mg.c opcode.h perl.h pp.c
+           ! proto.h sv.c
+____________________________________________________________________________
+[   905] By: TimBunce                              on 1998/04/28  10:32:20
+        Log: Regexp patches
+             
+             Title:  "New regex flag //t to leave $1 etc. tainted"
+             From:  Chip Salzenberg , Tim Bunce 
+             Msg-ID:  <19980310192640.37826@cyprus>
+             Files:  pod/perlop.pod pod/perlre.pod op.h dump.c mg.c pp_hot.c sv.c
+             t/op/taint.t toke.c
+             
+             Title:  "Don't accidentally untaint target of s///"
+             From:  Chip Salzenberg 
+             Msg-ID:  <19980310151756.24767@cyprus>
+             Files:  pp_ctl.c pp_hot.c t/op/taint.t
+             
+             Title:  "Allow but ignore embedded /...(?o).../ in regexp"
+             From:  h.sanden@elsevier.nl (Hugo van der Sanden)
+             Msg-ID:  <199804201243.OAA08244@dorlas.elsevier.nl>
+             Files:  regcomp.c
+     Branch: maint-5.004/perl
+	   ! dump.c mg.c op.h pod/perlop.pod pod/perlre.pod pp_ctl.c
+           ! pp_hot.c regcomp.c sv.c t/op/taint.t toke.c
+____________________________________________________________________________
+[   904] By: TimBunce                              on 1998/04/27  20:20:21
+        Log: Assorted patches:
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "Protect join() against double reads on undef and SvGMAGICALs"
+             From:  Chip Salzenberg , Tim Bunce
+             
+             Msg-ID:  <19980424080630.D13985@perl.org>
+             Files:  doop.c
+             
+             Title:  "Better error message for require failure"
+             From:  epeschko@den-mdev1 (Ed Peschko)
+             Msg-ID:  <199804240047.SAA24155@den-mdev1.co.csgsystems.com>
+             Files:  pod/perldiag.pod pp_ctl.c
+             
+             Title:  "fixes for various noises under PERL_DESTRUCT_LEVEL"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199804231926.PAA23969@aatma.engin.umich.edu>
+             Files:  perl.c
+             
+             Title:  "Fix nice_chunk memory leak"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199804052347.TAA15699@aatma.engin.umich.edu>
+             Files:  sv.c
+             
+             Title:  "-2.0 vs. -2 (was Number representations)"
+             From:  Chip Salzenberg 
+             Msg-ID:  <19980309185652.11231@cyprus>
+             Files:  op.c
+             
+             Title:  "perl.c fixes for -DUNEXEC"
+             From:  Matt Wette , Matthew R Wette
+             
+             Msg-ID:  <199710152146.OAA07283@mr-ed.jpl.nasa.gov>
+             Files:  perl.c
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "perlcall is Perl from C, not C from Perl"
+             From:  Steve A Fink 
+             Files:  pod/perlembed.pod
+             
+             Title:  "Clarify require "Foo::Bar" non-bareword issue"
+             From:  Dominique Dumont 
+             Msg-ID:  <199804231527.AA153445256@ss7serv.grenoble.hp.com>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "(repost) new text for perlsec", "new text for perlsec"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perlsec.pod
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "IO::Socket->socketpair broken (typo)"
+             From:  Olaf Titz 
+             Msg-ID:  <19980425224535.2807.qmail@bigred.inka.de>
+             Files:  ext/IO/lib/IO/Socket.pm
+             
+             Title:  "NDBM_File man page needs Fcntl"
+             From:  "Danny R. Faught" 
+             Msg-ID:  <199707011500.IAA00601@palrel3.hp.com>
+             Files:  ext/NDBM_File/NDBM_File.pm
+             
+             ------  LIBRARY  ------
+             
+             Title:  "Documentation discrepancy: pragmatic modules"
+             From:  "M.J.T. Guy" , h.sanden@elsevier.nl (Hugo van der Sanden)
+             Msg-ID:  <199804221525.RAA12695@dorlas.elsevier.nl>,
+             
+             Files:  lib/strict.pm lib/subs.pm lib/vars.pm
+             
+             ------  PORTABILITY - GENERAL  ------
+             
+             Title:  "Updated hints file for svr4"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  hints/svr4.sh
+             
+             Title:  "Pumpkin update -- shared libperl.so location"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  Porting/pumpkin.pod
+             
+             Title:  "perl compile fix for AIX 4.3"
+             From:  Jens-Uwe Mager 
+             Msg-ID:  <199804261611.SAA34728@ans.helios.de>
+             Files:  ext/DynaLoader/dl_aix.xs
+             
+             Title:  "Dynaloader build on VMS",
+             From:  pvhp@forte.com (Peter Prymmer), timbo@ig.co.uk (Tim Bunce)
+             Msg-ID:  <199804271732.SAA13762@toad.ig.co.uk>, <9804250212.AA27695@forte.com>
+             Files:  vms/descrip.mms
+             
+             ------  UTILITIES  ------
+             
+             Title:  "Major update to h2ph.PL"
+             From:  Billy 
+             Msg-ID:  
+             Files:  utils/h2ph.PL
+     Branch: maint-5.004/perl
+	   ! Porting/pumpkin.pod doop.c ext/DynaLoader/dl_aix.xs
+	   ! ext/IO/lib/IO/Socket.pm ext/NDBM_File/NDBM_File.pm
+	   ! hints/svr4.sh lib/strict.pm lib/subs.pm lib/vars.pm op.c
+	   ! perl.c pod/perldiag.pod pod/perlembed.pod pod/perlfunc.pod
+           ! pod/perlsec.pod pp_ctl.c sv.c utils/h2ph.PL vms/descrip.mms
+____________________________________________________________________________
+[   903] By: gsar                                  on 1998/04/25  22:27:19
+        Log: add AS patch#19 (adds socket layer generation to GenCAPI.pl)
+     Branch: asperl
+           ! win32/GenCAPI.pl
+____________________________________________________________________________
+[   902] By: nick                                  on 1998/04/25  16:35:08
+        Log: Case sensitive tweak to perldoc.PL
+     Branch: ansiperl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   901] By: nick                                  on 1998/04/25  15:16:54
+        Log: Implement use attrs qw(locked package);
+             Passes all tests except posix (hangs/dies) in sigaction test after 
+             printing "ok 9".
+     Branch: ansiperl
+           ! cv.h ext/attrs/attrs.pm ext/attrs/attrs.xs pp_hot.c
+____________________________________________________________________________
+[   900] By: nick                                  on 1998/04/25  13:58:17
+        Log: Auto-insert defined() test in while when test expression is 
+             readline (i.e. <>), glob, readdir, or each.
+     Branch: ansiperl
+           + t/op/defins.t
+           ! op.c pod/perlop.pod
+____________________________________________________________________________
+[   899] By: nick                                  on 1998/04/25  13:14:52
+        Log: Resolve ansiperl against win32 branch
+     Branch: ansiperl
+          +> (branch 53 files)
+           - config_H
+          !> (integrate 227 files)
+____________________________________________________________________________
+[   898] By: gsar                                  on 1998/04/24  17:01:05
+        Log: add AS patch#18
+     Branch: asperl
+           ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/xsubpp win32/GenCAPI.pl
+____________________________________________________________________________
+[   897] By: TimBunce                              on 1998/04/23  19:49:22
+        Log: Assorted patches:
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "fix for "Unbalanced string table refcount""
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199804042251.RAA25527@aatma.engin.umich.edu>
+             Files:  sv.c
+             
+             Title:  "Allow more lenient switch processing"
+             From:  "John L. Allen" 
+             Msg-ID:  <199803251638.LAA22664@gateway.grumman.com>
+             Files:  perl.c
+             
+             Title:  "Add fourth arg to substr: substr EXPR,OFFSET,LEN,REPLACEMENT"
+             From:  Gisle Aas 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod Todo opcode.pl pp.c t/op/substr.t
+             
+             Title:  "Odd number of elements in hash list."
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  MANIFEST pod/perldiag.pod pp.c pp_hot.c t/op/hashwarn.t
+             
+             Title:  "another destruct_level fix"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199804030105.UAA04400@aatma.engin.umich.edu>
+             Files:  hv.c
+             
+             Title:  "bidirectional pipe warning blues"
+             From:  pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             Msg-ID:  <9804082151.AA20399@claudius.bfsec.bt.co.uk>
+             Files:  doio.c
+             
+             Title:  "stale pointers after realloc (MEXTEND in pp_print and pp_prtf)"
+             From:  Malcolm Beattie 
+             Msg-ID:  <199801191107.LAA17979@sable.ox.ac.uk>
+             Files:  pp_hot.c pp_sys.c
+             
+             Title:  "unimplemented umask() should return undef not die"
+             From:  kstar@chapin.edu (Kurt D. Starsinic)
+             Msg-ID:  <199803120515.VAA08660@chapin.edu>
+             Files:  pod/perlfunc.pod pp_sys.c
+             
+             Title:  "warning for: bless $foo, """
+             From:  Joshua.Pritikin@NewYork2.dmg.deuba.com
+             Msg-ID:  
+             Files:  pod/perldiag.pod pp.c
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "Mention SWIG in perlxs.pod"
+             From:  Steve A Fink 
+             Msg-ID:  
+             Files:  pod/perlxs.pod
+             
+             Title:  "fix-up of previous perlre.pod patch"
+             From:  Ted Ashton 
+             Msg-ID:  <199803031540.KAA09388@ns.southern.edu>
+             Files:  pod/perlre.pod
+             
+             Title:  "long list of man page nitpicks"
+             From:  Greg Bacon , Tom Christiansen
+             
+             Msg-ID:  <199804221844.NAA08338@pluto.cs.uah.edu>,
+             <199804222204.QAA20805@jhereg.perl.com>
+             Files:  pod/perlapio.pod pod/perlcall.pod pod/perldebug.pod pod/perldelta.pod
+             pod/perldiag.pod pod/perlembed.pod pod/perlfaq2.pod
+             pod/perlfaq3.pod pod/perlfaq4.pod pod/perlfaq5.pod
+             pod/perlfaq7.pod pod/perlfaq8.pod pod/perlform.pod
+             pod/perlfunc.pod pod/perlguts.pod pod/perlipc.pod
+             pod/perllocale.pod pod/perlmodlib.pod pod/perlop.pod
+             pod/perlre.pod pod/perlref.pod pod/perlrun.pod
+             pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
+             pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod
+             pod/pod2man.PL
+             
+             Title:  "document that system() does not set $! when it fails"
+             From:  "Mark R. Levinson" 
+             Msg-ID:  <199803011946.OAA31942@anaximander.dccs.upenn.edu>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Fix pod/roffitall execute permission"
+             From:  lvirden@cas.org
+             Msg-ID:  <1997Nov17.132031.2589892@cor.newman>
+             Files:  pod/roffitall
+             
+             Title:  "document when split ignores trailing empty fields"
+             From:  Hugo van der Sanden 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod
+             
+             ------  EXTENSIONS  ------
+             
+             Title:  "Buglet in Opcode.pm documentation"
+             From:  Horst von Brand 
+             Msg-ID:  <199804170349.XAA32445@sleipnir.valparaiso.cl>
+             Files:  ext/Opcode/Opcode.pm
+             
+             Title:  "Failure to append to perllocal.pod should not be fatal"
+             From:  koenig@kulturbox.de (Andreas J. Koenig)
+             Msg-ID:  
+             Files:  lib/ExtUtils/MM_Unix.pm
+             
+             Title:  "Document that IO.pm does not load IO::Select etc"
+             From:  Graham Barr 
+             Msg-ID:  <353B48F1.64E35A63@ti.com>
+             Files:  ext/IO/IO.pm
+             
+             Title:  "Install extensions with bootstrap (again) in $archlib"
+             From:  Achim Bohnet , koenig@kulturbox.de (Andreas J.
+             Koenig)
+             Msg-ID:  <9804061909.AA12675@o09.xray.mpe.mpg.de>,
+             
+             Files:  lib/ExtUtils/Install.pm
+             
+             Title:  "glibc2.0.6 missing MSG_*  defines."
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  ext/Socket/Socket.xs
+             
+             ------  LIBRARY  ------
+             
+             Title:  "Benchmark.pm: add run-for-some-time mode"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199804080647.JAA15136@alpha.hut.fi>
+             Files:  lib/Benchmark.pm
+             
+             Title:  "Comments added to Carp.pm"
+             From:  Andy Wardley , Chip Salzenberg
+             , Tom Christiansen
+             
+             Msg-ID:  <19980422164242.E29222@perl.org>,
+             <199804222033.OAA17959@jhereg.perl.com>,
+             <980409182357.ZM21638@bandanna>
+             Files:  lib/Carp.pm
+             
+             Title:  "chat2.pl fix"
+             From:  Charles Bailey 
+             Msg-ID:  <01IVMVF507PO001NKH@cor.newman.upenn.edu>
+             Files:  lib/chat2.pl
+             
+             Title:  "lib/Pod/Html.pm"
+             From:  d-lewart@uiuc.edu (Daniel S. Lewart)
+             Msg-ID:  <199710170718.DAA25472@staff1.cso.uiuc.edu>,
+             <199710180417.AAA19778@staff2.cso.uiuc.edu>
+             Files:  lib/Pod/Html.pm
+             
+             Title:  "ormaments method in Term/ReadLine.pm causes warning with string
+             arg."
+             From:  hiroo.hayashi@computer.org
+             Msg-ID:  <199804061519.AAA21907@mail.fb3.so-net.ne.jp>
+             Files:  lib/Term/ReadLine.pm
+             
+             ------  OTHER CHANGES  ------
+             
+             Title:  "ptags broken"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199804120208.WAA29264@monk.mps.ohio-state.edu>
+             Files:  emacs/ptags
+             
+             ------  PORTABILITY - WIN32  ------
+             
+             Title:  "win32 tweaks (signals and crypt support)"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199804170505.BAA06413@aatma.engin.umich.edu>
+             Files:  perl.h win32/config.bc win32/config.vc win32/config_H.bc
+             win32/config_H.vc win32/win32.c
+             
+             ------  PORTABILITY - GENERAL  ------
+             
+             Title:  "Add Social Contract (2nd Draft) as Porting/Contract"
+             From:  Russ Allbery 
+             Msg-ID:  
+             Files:  Porting/Contract
+             
+             Title:  "Config: Irix 5 hints"
+             From:  kstar@O2.chapin.edu
+             Msg-ID:  <199804061712.NAA22823@O2.chapin.edu>
+             Files:  hints/irix_5.sh
+             
+             Title:  "VMS patches to 5.004_03"
+             From:  Charles Bailey 
+             Msg-ID:  <01IVYJS0L8D200209B@cor.newman.upenn.edu>
+             Files:  vms/vms.c
+             
+             Title:  "hints/netbsd.sh - enable vfork"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  hints/netbsd.sh
+             
+             ------  UTILITIES  ------
+             
+             Title:  "support find2perl -follow"
+             From:  Billy 
+             Msg-ID:  
+             Files:  x2p/find2perl.PL
+     Branch: maint-5.004/perl
+           + Porting/Contract t/op/hashwarn.t
+	   ! MANIFEST Todo doio.c emacs/ptags embed.h ext/IO/IO.pm
+	   ! ext/Opcode/Opcode.pm ext/Socket/Socket.xs hints/irix_5.sh
+	   ! hints/netbsd.sh hv.c lib/Benchmark.pm lib/Carp.pm
+	   ! lib/ExtUtils/Install.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/Pod/Html.pm lib/Term/ReadLine.pm lib/chat2.pl opcode.h
+	   ! opcode.pl perl.c perl.h pod/perlapio.pod pod/perlcall.pod
+	   ! pod/perldebug.pod pod/perldelta.pod pod/perldiag.pod
+	   ! pod/perlembed.pod pod/perlfaq2.pod pod/perlfaq3.pod
+	   ! pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfaq7.pod
+	   ! pod/perlfaq8.pod pod/perlform.pod pod/perlfunc.pod
+	   ! pod/perlguts.pod pod/perlhist.pod pod/perlipc.pod
+	   ! pod/perllocale.pod pod/perlmodlib.pod pod/perlop.pod
+	   ! pod/perlre.pod pod/perlref.pod pod/perlrun.pod
+	   ! pod/perlstyle.pod pod/perlsub.pod pod/perlsyn.pod
+	   ! pod/perltoot.pod pod/perlvar.pod pod/perlxs.pod pod/pod2man.PL
+	   ! pod/roffitall pp.c pp_hot.c pp_sys.c sv.c t/TEST t/op/gv.t
+	   ! t/op/substr.t vms/vms.c win32/config.bc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.vc win32/win32.c
+           ! x2p/find2perl.PL
+____________________________________________________________________________
+[   896] By: TimBunce                              on 1998/04/22  11:49:24
+        Log: Assorted patches:
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "Additional regex-cache patch"
+             From:  Chip Salzenberg 
+             Msg-ID:  <19980305104831.38100@cyprus>
+             Files:  pp_ctl.c
+             
+             Title:  "Conservative C<*x = undef> patch"
+             From:  Chip Salzenberg 
+             Msg-ID:  <19980310163310.48509@cyprus>
+             Files:  pod/perldiag.pod pod/perlfunc.pod pp.c sv.c t/op/gv.t
+             
+             Title:  "Consider @ARGV to be plain files if inplace (-i)"
+             From:  Chip Salzenberg 
+             Msg-ID:  <199802042106.QAA04082@nielsenmedia.com>
+             Files:  doio.c
+             
+             Title:  "Fix semctl for Linux, Sun and SVR4"
+             From:  Graham Barr , lvirden@cas.org (Larry W. Virden, x2487)
+             Msg-ID:  <3484247D.BB036D39@ti.com>, <9712021313.AA11495@cas.org>
+             Files:  doio.c
+             
+             Title:  "C entails using C, not C"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199803070149.UAA12217@aatma.engin.umich.edu>
+             Files:  pod/perlcall.pod pod/perlembed.pod pod/perlguts.pod pod/perlxs.pod
+             doio.c doop.c ext/DB_File/DB_File.xs
+             ext/DynaLoader/dl_dld.xs ext/Opcode/Opcode.xs
+             ext/POSIX/POSIX.xs ext/Socket/Socket.xs gv.c
+             lib/ExtUtils/typemap mg.c os2/OS2/REXX/REXX.xs
+             win32/win32.c
+             
+             Title:  "Make autouse -w-safe"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199803030236.VAA13244@monk.mps.ohio-state.edu>
+             Files:  lib/autouse.pm op.c sv.c
+             
+             Title:  "Misleading error on close of unopened handle"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  doio.c
+             
+             Title:  "Confusing error from perl -e "x'""
+             From:  Hans Mulder 
+             Msg-ID:  <1998Mar25.174320.2866352@cor.newman.upenn.edu>
+             Files:  toke.c
+             
+             Title:  "Add HAS_GNULIBC define"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  config_H config_h.SH
+             
+             Title:  "h_errno might not be an int"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  pp_sys.c
+             
+             Title:  "Revised taint hole closer", "Revised taint hole closer"
+             From:  Chip Salzenberg , Ilya Zakharevich
+             
+             Msg-ID:  <19980310222127.09350@cyprus>,
+             <199803110554.AAA29157@monk.mps.ohio-state.edu>
+             Files:  doio.c
+             
+             Title:  "SEGV compiling localised lexical in perl5.004_05t1"
+             From:  Gurusamy Sarathy , h.sanden@elsevier.nl (Hugo
+             van der Sanden)
+             Msg-ID:  <199803171530.QAA24053@dorlas.elsevier.nl>,
+             <199803171727.MAA05234@aatma.engin.umich.edu>
+             Files:  op.c t/op/misc.t
+             
+             Title:  "Stale SP in pp_substr"
+             From:  Stephen McCamant 
+             Msg-ID:  
+             Files:  pp.c
+             
+             Title:  "Statement unlikely to be reached warning"
+             From:  Hans Mulder 
+             Msg-ID:  <1997Dec24.171511.2683516@cor.newman>
+             Files:  op.c
+             
+             Title:  "Tainting propagates from nowhere"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199803140411.XAA09343@aatma.engin.umich.edu>
+             Files:  pp.c
+             
+             Title:  "two trivial tweaks to 5.004m5t1"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199803060553.AAA28461@aatma.engin.umich.edu>
+             Files:  proto.h win32/Makefile
+             
+             Title:  "unpacking negatives on Alpha"
+             From:  Achim Bohnet 
+             Msg-ID:  <9710201503.AA24797@o09.xray.mpe.mpg.de>
+             Files:  pp.c t/op/pack.t
+             
+             ------  LIBRARY AND EXTENSIONS  ------
+             
+             Title:  "Cwd.pm: abs_path() and fast_abs_path() plus code merge"
+             From:  Graham Barr 
+             Msg-ID:  <3482F365.4A0486BA@ti.com>
+             Files:  lib/Cwd.pm
+             
+             Title:  "Math/BigInt.pm, fixed use of undefined value."
+             From:  abigail@fnx.com
+             Msg-ID:  <19980313052452.27365.qmail@betelgeuse.wayne.fnx.com>
+             Files:  lib/Math/BigInt.pm
+             
+             Title:  "File::Find rewrite"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199803052344.SAA01008@monk.mps.ohio-state.edu>
+             Files:  lib/File/Find.pm
+             
+             Title:  "efficient version of strict.pm"
+             From:  koenig@anna.mind.de (Andreas J. Koenig)
+             Msg-ID:  
+             Files:  lib/strict.pm
+             
+             Title:  "Socket occasional SEGV in pack_sockaddr_un"
+             From:  Trevor Blackwell 
+             Msg-ID:  <199710281804.NAA09632@wagg.viaweb.com>
+             Files:  ext/Socket/Socket.xs
+             
+             Title:  "Warning on mis-use of 'use lib'"
+             From:  "M.J.T. Guy" , Tom Phoenix
+             , chip@atlantic.net
+             Msg-ID:  <199801270435.XAA14147@cyprus.atlantic.net>,
+             ,
+             
+             Files:  lib/lib.pm
+             
+             Title:  "bug in Class::Struct"
+             From:  Tom Christiansen 
+             Msg-ID:  <199803290814.KAA05699@toy.perl.com>
+             Files:  lib/Class/Struct.pm
+             
+             Title:  "Allow POSIX to export nice()"
+             From:  bkeelerx@iwa.dp.intel.com (Bruce J. Keeler)
+             Msg-ID:  
+             Files:  ext/POSIX/POSIX.pm
+             
+             Title:  "'use Env' on WinNT/95 fails"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199803280511.AAA15933@aatma.engin.umich.edu>
+             Files:  lib/Env.pm
+             
+             ------  OTHER CHANGES  ------
+             
+             Title:  "mv-if-diff"
+             From:  Robin Barker 
+             Msg-ID:  <14572.9803271806@tempest.cise.npl.co.uk>
+             Files:  mv-if-diff
+             
+             ------  PORTABILITY - WIN32  ------
+             
+             Title:  "fix various problems with backticks on win32"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199803070705.CAA15945@aatma.engin.umich.edu>
+             Files:  win32/config_h.PL win32/win32.c
+             
+             ------  TESTS  ------
+             
+             Title:  "Fix bug in locale.t"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199801042148.XAA08599@alpha.hut.fi>
+             Files:  t/pragma/locale.t
+     Branch: maint-5.004/perl
+	   ! config_H config_h.SH doio.c doop.c ext/DB_File/DB_File.xs
+	   ! ext/DynaLoader/dl_dld.xs ext/Opcode/Opcode.xs
+	   ! ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs ext/Socket/Socket.xs
+	   ! gv.c lib/Class/Struct.pm lib/Cwd.pm lib/Env.pm
+	   ! lib/ExtUtils/typemap lib/File/Find.pm lib/Math/BigInt.pm
+	   ! lib/autouse.pm lib/lib.pm lib/strict.pm mg.c mv-if-diff op.c
+	   ! os2/OS2/REXX/REXX.xs pod/perlcall.pod pod/perldiag.pod
+	   ! pod/perlembed.pod pod/perlfunc.pod pod/perlguts.pod
+	   ! pod/perlxs.pod pp.c pp_ctl.c pp_sys.c proto.h sv.c t/op/gv.t
+	   ! t/op/misc.t t/op/pack.t t/pragma/locale.t toke.c
+           ! win32/Makefile win32/config_h.PL win32/win32.c
+____________________________________________________________________________
+[   895] By: gsar                                  on 1998/04/22  03:13:19
+        Log: intern -> sys_intern
+     Branch: win32/perl
+           ! embedvar.h interp.sym intrpvar.h win32/win32.h
+____________________________________________________________________________
+[   894] By: gsar                                  on 1998/04/22  02:42:20
+        Log: hand-applied patch along with small tweaks
+             Message-Id: <35400e2a.13538517@smtp1.ibm.net>
+             Date:    Tue, 21 Apr 1998 23:31:06 +0200
+             From:    jan.dubois@ibm.net (Jan Dubois)
+             Subject: Re: Per-Interpreter variables for win32.c 
+     Branch: win32/perl
+	   ! embedvar.h interp.sym intrpvar.h perl.c perl.h proto.h
+           ! win32/makedef.pl win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   893] By: gsar                                  on 1998/04/21  03:42:21
+        Log: add AS patch#17
+     Branch: asperl
+           + win32/GenCAPI.pl
+	   ! MANIFEST XSUB.h cv.h ipstdio.h lib/ExtUtils/MM_Unix.pm
+	   ! lib/ExtUtils/MM_Win32.pm lib/ExtUtils/MakeMaker.pm
+	   ! lib/ExtUtils/Mksymlists.pm lib/ExtUtils/xsubpp op.c perl.h
+	   ! pp_ctl.c pp_hot.c proto.h sv.h thread.h win32/Makefile
+	   ! win32/dl_win32.xs win32/makefile.mk win32/runperl.c
+           ! win32/win32.c
+____________________________________________________________________________
+[   892] By: gsar                                  on 1998/04/20  20:51:50
+        Log: add AS patch#16
+     Branch: asperl
+	   ! globals.c ipdir.h perl.h perlvars.h regcomp.h win32/Makefile
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   891] By: gsar                                  on 1998/04/19  23:50:34
+        Log: tweak doc for C
+     Branch: win32/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[   890] By: gsar                                  on 1998/04/19  01:08:11
+        Log: use a pidtable that grows dynamically for popen()
+             Message-Id: <3539f434.44835409@smtp1.ibm.net>
+             Date:    Sat, 18 Apr 1998 21:01:27 +0200
+             From:    jan.dubois@ibm.net (Jan Dubois)
+             Subject: Re: [PATCH] for bug in 5.004_64 when compiled with MSC++ 4.2 
+     Branch: win32/perl
+           ! win32/win32.c
+____________________________________________________________________________
+[   889] By: gsar                                  on 1998/04/17  02:13:58
+        Log: support POSIX, enable more locale tests
+     Branch: win32/perl
+	   ! ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
+	   ! t/lib/posix.t t/pragma/locale.t win32/Makefile
+           ! win32/makedef.pl win32/makefile.mk
+____________________________________________________________________________
+[   888] By: mbeattie                              on 1998/04/14  16:22:51
+        Log: CC did "<<" instead of ">>" for right-shift on ints.
+     Branch: perl
+           ! ext/B/B/CC.pm
+____________________________________________________________________________
+[   887] By: TimBunce                              on 1998/04/10  17:44:55
+        Log: Assorted patches:
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "Re: die exits with 0"
+             From:  Robin Barker 
+             Files:  perl.c t/op/die_exit.t
+             
+             Title:  "More toke.c commentary; fix oddity"
+             From:  h.sanden@elsevier.nl (Hugo van der Sanden)
+             Msg-ID:  <199803251022.LAA01308@dorlas.elsevier.nl>
+             Files:  toke.c
+             
+             Title:  "for semctl on solaris"
+             From:  Graham Barr 
+             Msg-ID:  <34624B80.C014E841@ti.com>
+             Files:  doio.c t/op/ipcmsg.t t/op/ipcsem.t
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "Add more 'see also's to perlre.pod.", "Perl regexp /g modifier bug"
+             From:  Ilya Zakharevich , epeschko@den-mdev1 (Ed
+             Peschko), pjr@watcher.telstra.com.au (Peter Richardson)
+             Msg-ID:  <199803050000.LAA11476@watcher.telecom.com.au>,
+             <199803050231.VAA19128@monk.mps.ohio-state.edu>,
+             <199803050605.XAA09785@den-mdev1.co.csgsystems.com>
+             Files:  pod/perlre.pod
+             
+             ------  LIBRARY AND EXTENSIONS  ------
+             
+             Title:  "BigFloat - small neagtive numbers cause panic"
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199711201325.NAA09732@crypt.compulink.co.uk>
+             Files:  lib/Math/BigFloat.pm
+             
+             Title:  "Update Getopt::Long to 2.16"
+             From:  JVromans@Squirrel.nl (Johan Vromans), Johan Vromans
+             
+             Msg-ID:  <13571.48089.726787.147769@plume.nl.compuware.com>,
+             <13572.6847.863219.973795@phoenix.squirrel.nl>
+             Files:  lib/Getopt/Long.pm
+             
+             Title:  "New Text::ParseWords"
+             From:  pomeranz@netcom.com (Hal Pomeranz)
+             Msg-ID:  <199710162118.OAA06275@netcom7.netcom.com>
+             Files:  lib/Text/ParseWords.pm t/lib/parsewords.t
+             
+             Title:  "Fixed Text/Wrap.pm bugs (2)"
+             From:  Jacqui Caren 
+             Msg-ID:  <199709291548.QAA08645@toad.ig.co.uk>
+             Files:  lib/Text/Wrap.pm
+             
+             Title:  "Very *evil* File::CheckTree behavior! (now uses warn/die not
+             print/exit)"
+             From:  Eryq , Randal Schwartz 
+             Msg-ID:  <34B542FD.190A@zeegee.com>, <8cen2i9k6f.fsf@gadget.cscaper.com>
+             Files:  lib/File/CheckTree.pm
+             
+             ------  OTHER CHANGES  ------
+             
+             Title:  "Add ./emacs/ptags"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199803150847.DAA08196@monk.mps.ohio-state.edu>
+             Files:  emacs/ptags
+             
+             ------  TESTS  ------
+             
+             Title:  "Avoid stat test failure from build in /tmp (tmpfs)", "Build in /tmp"
+             From:  Andy Dougherty , Greg Bacon
+             , pudge@pobox.com (Chris Nandor)
+             Msg-ID:  <199710171616.LAA13435@crp-201.adtran.com>,
+             ,
+             
+             Files:  t/op/stat.t
+             
+             Title:  "for failure with lib/timelocal"
+             From:  "M.J.T. Guy" , jan.dubois@ibm.net (Jan Dubois)
+             Msg-ID:  <34c78f61.2529827@smtp1.ibm.net>,
+             
+             Files:  t/lib/timelocal.t
+             
+             Title:  "Make "localhost" related failures more clear"
+             From:  Paul Hoffman 
+             Msg-ID:  <199801201859.KAA05686@mail.proper.com>
+             Files:  t/lib/io_sock.t t/lib/io_udp.t
+             
+             ------  UTILITIES  ------
+             
+             Title:  "Let h2xs read multiple header files"
+             From:  Andy Dougherty , Benjamin Sugars
+             
+             Msg-ID:  ,
+             
+             Files:  utils/h2xs.PL
+     Branch: maint-5.004/perl
+           + emacs/ptags t/op/die_exit.t t/op/ipcmsg.t t/op/ipcsem.t
+	   ! MANIFEST doio.c lib/File/CheckTree.pm lib/Getopt/Long.pm
+	   ! lib/Math/BigFloat.pm lib/Text/ParseWords.pm lib/Text/Wrap.pm
+	   ! lib/base.pm perl.c pod/perlre.pod t/lib/io_sock.t
+	   ! t/lib/io_udp.t t/lib/parsewords.t t/lib/timelocal.t
+           ! t/op/stat.t toke.c utils/h2xs.PL vms/perly_h.vms
+____________________________________________________________________________
+[   886] By: TimBunce                              on 1998/04/10  14:35:34
+        Log: Changes relating primarily to portability.
+             
+             ------  CORE LANGUAGE  ------
+             
+             Title:  "5.004_55: Another round of OS/2 patches"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199803050945.EAA20153@monk.mps.ohio-state.edu>
+             Files:  hints/os2.sh pod/perlguts.pod cop.h perl.h proto.h README.os2
+             global.sym lib/ExtUtils/MM_OS2.pm lib/File/Path.pm op.c
+             os2/Changes os2/Makefile.SHs os2/os2.c os2/perl2cmd.pl
+             perl.c pod/pod2man.PL pp_ctl.c pp_hot.c pp_sys.c
+             t/lib/filecopy.t util.c utils/perldoc.PL
+             
+             Title:  "VMS: chdir() with empty arg list"
+             From:  lane@duphy4.drexel.edu (Charles Lane)
+             Msg-ID:  <980317125556.222041c7@DUPHY4.Physics.Drexel.Edu>
+             Files:  pp_sys.c
+             
+             ------  LIBRARY AND EXTENSIONS  ------
+             
+             Title:  "ExtUtils/MM_Unix.pm changed to use ld -rpath on IRIX"
+             From:  "W. Phillip Moore" 
+             Msg-ID:  <199712011738.MAA21139@zappa.morgan.com>
+             Files:  lib/ExtUtils/MM_Unix.pm
+             
+             Title:  "[Linux] POSIX::_[PS]C_.+ bug (add HINT_SC_EXIST)"
+             From:  Yutaka OIWA 
+             Msg-ID:  <199712251923.EAA08260@tjms1f.is.s.u-tokyo.ac.jp>
+             Files:  ext/POSIX/hints/linux.pl ext/POSIX/POSIX.xs
+             
+             Title:  "5.004_04-m1] Use HAS_GNULIBC in POSIX.xs"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  ext/POSIX/POSIX.xs
+             
+             Title:  ""ODBM_File.c", line 275: NULL undefined"
+             From:  pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             Msg-ID:  <9803091310.AA23264@claudius.bfsec.bt.co.uk>
+             Files:  ext/ODBM_File/ODBM_File.xs
+             
+             ------  OTHER CHANGES  ------
+             Files:  
+             
+             ------  PORTABILITY - GENERAL  ------
+             
+             Title:  "5.004_04 QNX getcwd"
+             From:  Norton Allen 
+             Msg-ID:  <199802121838.NAA20452@dolores.harvard.edu>,
+             <199803061511.KAA22346@bottesini.harvard.edu>
+             Files:  hints/qnx.sh lib/Cwd.pm t/op/magic.t
+             
+             Title:  "hints/netbsd.sh d_setrgid d_setruid"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199802281435.QAA10866@alpha.hut.fi>
+             Files:  hints/netbsd.sh
+             
+             Title:  "osname=unixware, osvers=2.03, archname=i386-unixware
+             d_casti32=undef"
+             From:  Tom Hughes 
+             Msg-ID:  <465398da47%tom@compton.demon.co.uk>
+             Files:  hints/svr4.sh
+             
+             Title:  "hints/bsdos.sh patch for BSDI 3.1"
+             From:  Jan-Pieter Cornet 
+             Msg-ID:  <6fbip6$3cp$1@xs1.xs4all.nl>
+             Files:  hints/bsdos.sh
+             
+             Title:  "Remove BIND_NOSTART from DynaLoader for HP"
+             From:  Keong Lim 
+             Msg-ID:  <01BD1D03.53B65E90@sieplan2.sr.com.au>
+             Files:  ext/DynaLoader/dl_hpux.xs
+             
+             Title:  "Building Perl on AIX 4+ with shared libraries and dynamic loading"
+             From:  Juan Gallego 
+             Msg-ID:  
+             Files:  hints/aix.sh
+             
+             Title:  "alpha-dec_osf 5.0"
+             From:  Spider Boardman 
+             Msg-ID:  <199712232305.SAA08359@Orb.Nashua.NH.US>
+             Files:  hints/dec_osf.sh
+             
+             Title:  "Off-by-one error with OS2::PrfDB"
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199710170920.FAA00390@monk.mps.ohio-state.edu>
+             Files:  os2/OS2/PrfDB/PrfDB.xs
+             
+             Title:  "5.004_04-m1] Allow overrides in hints/openbsd.sh"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  hints/openbsd.sh
+             
+             Title:  "5.004_04-m1] Linux shouldn't use -lnet"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  hints/linux.sh
+             
+             Title:  "5.004_(04|63)] Close VMS security hole"
+             From:  Charles Bailey 
+             Msg-ID:  <01IV6LRJCSSC0009C4@cor.newman.upenn.edu>
+             Files:  vms/vms.c
+             
+             Title:  "Re: Perl online documentation on OpenVMS"
+             From:  pvhp@forte.com (Peter Prymmer)
+             Msg-ID:  <9803192143.AA28120@forte.com>
+             Files:  README.vms
+             
+             Title:  "Perl5.004_04m4t4 *almost* makes it for VMS", "Updated
+             vms/perly_c.vms and vms/perly_h.vms"
+             From:  Andy Dougherty , Dan Sugalski
+             , larry@wall.org (Larry Wall)
+             Msg-ID:  <199710151650.JAA29185@wall.org>,
+             <3.0.3.32.19971014150404.02fdef78@osshe.edu>,
+             
+             Files:  vms/perly_c.vms
+             
+             Title:  "Updated, non-wordwrapped, patch to README.VMS"
+             From:  Dan Sugalski 
+             Msg-ID:  <3.0.5.32.19980213133828.0092c870@osshe.edu>
+             Files:  README.vms
+             
+             Title:  "VMS patches to 5.004_03 (excluding installperl and timelocal.t)"
+             From:  Charles Bailey 
+             Msg-ID:  <01INZT9G2LZS0006YW@cor.newman.upenn.edu>
+             Files:  lib/File/Basename.pm lib/File/Path.pm vms/config.vms vms/descrip.mms
+             vms/genconfig.pl vms/test.com vms/vms.c vms/ext/Filespec.pm
+             vms/ext/filespec.t
+             
+             Title:  "Re: VMSperl crashes on -Mblib argument"
+             From:  bailey@newman.upenn.edu (Charles Bailey)
+             Msg-ID:  <1997Dec10.004439.2635060@cor.newman>
+             Files:  lib/blib.pm vms/vms.c
+             
+             Title:  "hints/linux.sh (MkLinux / PPC)"
+             From:  pudge@pobox.com (Chris Nandor)
+             Msg-ID:  
+             Files:  hints/linux.sh
+             
+             Title:  "hpux.sh hints file clarification suggestion"
+             From:  root@qad.com
+             Msg-ID:  <199802192351.QAA09096@jhereg.perl.com>
+             Files:  hints/hpux.sh
+             
+             Title:  "new hints/solaris_2.sh"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  hints/solaris_2.sh
+     Branch: maint-5.004/perl
+	   ! README.os2 README.vms cop.h ext/DynaLoader/dl_hpux.xs
+	   ! ext/ODBM_File/ODBM_File.xs ext/POSIX/POSIX.xs
+	   ! ext/POSIX/hints/linux.pl global.sym hints/aix.sh
+	   ! hints/bsdos.sh hints/dec_osf.sh hints/hpux.sh hints/linux.sh
+	   ! hints/netbsd.sh hints/openbsd.sh hints/os2.sh hints/qnx.sh
+	   ! hints/solaris_2.sh hints/svr4.sh lib/Cwd.pm
+	   ! lib/ExtUtils/MM_OS2.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/File/Basename.pm lib/File/Path.pm lib/blib.pm op.c
+	   ! os2/Changes os2/Makefile.SHs os2/OS2/PrfDB/PrfDB.xs os2/os2.c
+	   ! os2/perl2cmd.pl perl.c perl.h pod/perlguts.pod pod/pod2man.PL
+	   ! pp_ctl.c pp_hot.c pp_sys.c proto.h t/lib/filecopy.t
+	   ! t/op/magic.t util.c utils/perldoc.PL vms/config.vms
+	   ! vms/descrip.mms vms/ext/Filespec.pm vms/ext/filespec.t
+	   ! vms/genconfig.pl vms/perly_c.vms vms/perly_h.vms vms/test.com
+           ! vms/vms.c
+____________________________________________________________________________
+[   885] By: gsar                                  on 1998/04/08  01:14:29
+        Log: small tweaks to make it compile (doesn't run)
+     Branch: asperl
+	   ! objpp.h win32/Makefile win32/config.bc win32/config.gc
+           ! win32/config.vc win32/makefile.mk
+____________________________________________________________________________
+[   884] By: gsar                                  on 1998/04/08  00:14:13
+        Log: integrate mainline changes
+     Branch: asperl
+	  +> Changes5.004 ext/Thread/Thread/Signal.pm
+	  +> lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
+          +> lib/ExtUtils/inst t/op/hashwarn.t
+           ! ObjXSub.h embedvar.h interp.sym intrpvar.h objpp.h
+          !> (integrate 127 files)
+____________________________________________________________________________
+[   883] By: gsar                                  on 1998/04/06  20:21:20
+        Log: make old DomainName() implementation the default (so Win95
+             is happy)
+     Branch: win32/perl
+           ! win32/win32.c
+____________________________________________________________________________
+[   882] By: gsar                                  on 1998/04/05  23:32:33
+        Log: fix memory leaks in offer_nice_chunk()
+     Branch: win32/perl
+           ! perl.h sv.c
+____________________________________________________________________________
+[   881] By: gsar                                  on 1998/04/04  23:11:52
+        Log: set up PUSHSTACK for __DIE__ and __WARN__ hooks also
+     Branch: win32/perl
+           ! cop.h util.c
+____________________________________________________________________________
+[   880] By: gsar                                  on 1998/04/04  22:35:54
+        Log: fix refcounting of GvSTASH() when glob becomes nought
+             (this takes care of the "unbalanced strtab refcount" problem)
+     Branch: win32/perl
+           ! sv.c
+____________________________________________________________________________
+[   879] By: gsar                                  on 1998/04/04  21:16:17
+        Log: change 866 was incomplete
+     Branch: win32/perl
+           ! hv.c
+____________________________________________________________________________
+[   878] By: gsar                                  on 1998/04/04  20:31:56
+        Log: fixes for various noises under PERL_DESTRUCT_LEVEL
+     Branch: win32/perl
+           ! cop.h perl.c pp_ctl.c
+____________________________________________________________________________
+[   877] By: gsar                                  on 1998/04/04  17:55:30
+        Log: integrate mainline
+     Branch: win32/perl
+          +> Changes5.004
+          !> Changes MANIFEST sv.c t/op/misc.t
+____________________________________________________________________________
+[   876] By: gsar                                  on 1998/04/04  17:26:32
+        Log: remove __declspec kludge in sdbm.h in favor of setting a
+             flag for static symbols
+     Branch: win32/perl
+	   ! EXTERN.h ext/SDBM_File/sdbm/Makefile.PL
+           ! ext/SDBM_File/sdbm/sdbm.h
+____________________________________________________________________________
+[   875] By: gsar                                  on 1998/04/04  01:11:57
+        Log: fix order of init
+             Message-Id: <3.0.5.32.19980403135815.009d2440@osshe.edu>
+             Date:    Fri, 03 Apr 1998 13:58:15 PST
+             From:    Dan Sugalski 
+             Subject: [PATCH 5.004_64] perl dies in perl_construct when compiled
+             with MULTIPLICITY
+     Branch: win32/perl
+           ! perl.c
+____________________________________________________________________________
+[   874] By: gsar                                  on 1998/04/04  00:34:59
+        Log: the EXTCONST in sdbm.h breaks SDBM on Borland, since
+             the declared symbol is not in a DLL (so kludge it)
+     Branch: win32/perl
+           ! ext/SDBM_File/sdbm/sdbm.h
+____________________________________________________________________________
+[   873] By: TimBunce                              on 1998/04/03  22:17:40
+        Log: Title:  "FileHandle Documentation patch"
+             From:  "Darren/Torin/Who Ever..." 
+             Msg-ID:  <87emzqo49g.fsf@perv.daft.com>
+             Files:  lib/FileHandle.pm
+     Branch: maint-5.004/perl
+           ! lib/FileHandle.pm
+____________________________________________________________________________
+[   872] By: TimBunce                              on 1998/04/03  22:01:03
+        Log: Documentation and documentation related patches:
+             
+             ------  BUILD PROCESS  ------
+             
+             Title:  "Docs re /usr/bin/perl quasi-standard location"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  INSTALL pod/perlrun.pod
+             
+             ------  DOCUMENTATION  ------
+             
+             Title:  "/RFC|RFC-1305/ non-greedy"
+             From:  Jan-Pieter Cornet 
+             Msg-ID:  <6epo02$c4r$1@xs1.xs4all.nl>
+             Files:  pod/perlre.pod
+             
+             Title:  "5.004_04: perlhist.pod, buildtoc, perltoc.pod"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199802191543.RAA29231@alpha.hut.fi>
+             Files:  pod/perl.pod pod/perlhist.pod pod/perltoc.pod pod/buildtoc
+             
+             Title:  "5.004_04: pod/perlfunc.pod: i18n example for localtime()"
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199711141555.RAA18875@alpha.hut.fi>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "typo-fix and suggestion for perlguts.pod"
+             From:  h.sanden@elsevier.nl (Hugo van der Sanden)
+             Msg-ID:  <199803051543.QAA03097@dorlas.elsevier.nl>
+             Files:  pod/perlguts.pod
+             
+             Title:  "perlfunc/syscall curiosity"
+             From:  Roderick Schertler , Tkil
+             
+             Msg-ID:  <199711302259.PAA02134@reptile.scrye.com>,
+             
+             Files:  pod/perlfunc.pod
+             
+             Title:  "Document sprintf %#x behaviour for zero value"
+             From:  ilya@math.ohio-state.edu (Ilya Zakharevich)
+             Msg-ID:  <1997Nov5.185959.2539604@cor.newman>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "NUL termination (was Re: STOP THE PRESSES)"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perlguts.pod
+             
+             Title:  "Typo fix."
+             From:  abigail@fnx.com
+             Msg-ID:  <19971101120114.1030.qmail@betelgeuse.wayne.fnx.com>
+             Files:  pod/perlop.pod pod/perlvar.pod
+             
+             Title:  "5.004_63 perlrun.pod: _DEBUG_MSTATS"
+             From:  Achim Bohnet 
+             Msg-ID:  <9803181940.AA22587@o09.xray.mpe.mpg.de>
+             Files:  pod/perlrun.pod
+             
+             Title:  "Re: Conservative C<*x = undef> patch"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perltrap.pod
+             
+             Title:  "perlfunc.pod for flock()"
+             From:  "Jeremy D. Zawodny" 
+             Msg-ID:  <3.0.5.32.19971118203119.00a723e0@woody.wcnet.org>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "buglet: 'perltoc' not mentioned in perl.pod"
+             From:  Tkil 
+             Msg-ID:  <19971127035036.17668.qmail@scrye.com>
+             Files:  pod/perl.pod
+             
+             Title:  "for() and map() peculiarity"
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perlsyn.pod
+             
+             Title:  "Re: new text for perlsec"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perlsec.pod
+             
+             Title:  "perldsc's debugger x command"
+             From:  Roderick Schertler 
+             Msg-ID:  <10669.878352893@eeyore.ibcinc.com>
+             Files:  pod/perldsc.pod
+             
+             Title:  "perlre.pod"
+             From:  Ted Ashton 
+             Msg-ID:  <199802271501.KAA09279@ns.southern.edu>
+             Files:  pod/perlre.pod
+             
+             Title:  "Re: printf and $\", "printf and $\"
+             From:  Roderick Schertler , Tom Phoenix
+             , nag 
+             Msg-ID:  <199711141918.TAA08096@flirble.org>,
+             , 
+             Files:  pod/perlfunc.pod
+             
+             Title:  "recv() typo"
+             From:  Roderick Schertler 
+             Msg-ID:  <12064.877012073@eeyore.ibcinc.com>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "truncate return value"
+             From:  Roderick Schertler 
+             Msg-ID:  <5490.878337883@eeyore.ibcinc.com>
+             Files:  pod/perlfunc.pod
+             
+             Title:  "update to perlbook.pod"
+             From:  "Nathan V. Patwardhan" , Randal Schwartz
+             , Stephen Potter
+             , Tom Phoenix
+             
+             Msg-ID:  <199803241354.HAA23938@psasolar.psa.pencom.com>,
+             <199803241441.OAA01261@mediaone.net>,
+             <8clnu0i05k.fsf@gadget.cscaper.com>,
+             
+             Files:  pod/perlbook.pod
+             
+             Title:  "utime documentation"
+             From:  "Brandon S. Allbery KF8NH" , "M.J.T. Guy"
+             
+             Msg-ID:  <199802180256.VAA11369@speaker.kf8nh.apk.net>,
+             
+             Files:  pod/perlfunc.pod
+             
+             Title:  "(well, doc patch) use of // requires successful match"
+             From:  Roderick Schertler 
+             Msg-ID:  
+             Files:  pod/perlop.pod
+             
+             ------  LIBRARY AND EXTENSIONS  ------
+             
+             Title:  "MakeMaker PM doc patch and a DIR buglet"
+             From:  Achim Bohnet 
+             Msg-ID:  <9711101050.AA13868@o09.xray.mpe.mpg.de>
+             Files:  lib/ExtUtils/MakeMaker.pm
+             
+             Title:  "bareword clarification for constant.pm"
+             From:  Roderick Schertler 
+             Msg-ID:  <6460.878143077@eeyore.ibcinc.com>
+             Files:  lib/constant.pm
+             
+             Title:  "integer rand - bug or feature?"
+             From:  Roderick Schertler 
+             Msg-ID:  
+             Files:  lib/integer.pm
+             
+             ------  OTHER CHANGES  ------
+             
+             Title:  "FileHandle Documentation patch"
+             From:  "Darren/Torin/Who Ever..." 
+             Msg-ID:  <87emzqo49g.fsf@perv.daft.com>
+             
+             Title:  "perl5.004_61 myconfig updates"
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  myconfig
+             
+             Title:  "small fixups in pod2latex.PL"
+             From:  "Darren/Torin/Who Ever..." 
+             Msg-ID:  <873eg6o3v2.fsf@perv.daft.com>
+             
+             ------  PORTABILITY - GENERAL  ------
+             
+             Title:  "Misc doc fixes for README.VMS"
+             From:  Dan Sugalski 
+             Msg-ID:  <3.0.5.32.19980121113134.00924a20@osshe.edu>
+             Files:  README.vms
+             
+             Title:  "moved DynaLib"
+             From:  John Tobey 
+             Msg-ID:  <199710182332.XAA21630@remote212>
+             Files:  ext/DynaLoader/DynaLoader.pm.PL
+             
+             ------  UTILITIES  ------
+             
+             Title:  "Searching for FAQs (patch to perldoc)"
+             From:  Piers Cawley , Russ Allbery 
+             Msg-ID:  ,
+             
+             Files:  utils/perldoc.PL
+             
+             Title:  "perldoc"
+             From:  Ted Ashton 
+             Msg-ID:  <199802271510.KAA10506@ns.southern.edu>
+             Files:  utils/perldoc.PL
+             
+             Title:  "perldoc -f not using pod2man"
+             From:  Russ Allbery 
+             Msg-ID:  
+             Files:  utils/perldoc.PL
+             
+             Title:  "perldoc -m should not require pod"
+             From:  Robin Houston 
+             Msg-ID:  <199803241319.NAA24777@stringfellow.guardian.co.uk>
+             Files:  utils/perldoc.PL
+             
+             Title:  "small fix for perldoc in perl 5.004_04"
+             From:  Julian Yip 
+             Msg-ID:  
+             Files:  utils/perldoc.PL
+     Branch: maint-5.004/perl
+           - ext/DynaLoader/DynaLoader.pm
+	   ! Changes Configure INSTALL README.vms
+	   ! ext/DynaLoader/DynaLoader.pm.PL ext/Socket/Socket.pm
+	   ! lib/ExtUtils/MakeMaker.pm lib/Tie/Hash.pm lib/constant.pm
+	   ! lib/integer.pm myconfig pod/buildtoc pod/checkpods.PL
+	   ! pod/perl.pod pod/perlbook.pod pod/perldelta.pod
+	   ! pod/perldiag.pod pod/perldsc.pod pod/perlfunc.pod
+	   ! pod/perlguts.pod pod/perlhist.pod pod/perllocale.pod
+	   ! pod/perlmod.pod pod/perlop.pod pod/perlre.pod pod/perlrun.pod
+	   ! pod/perlsec.pod pod/perlstyle.pod pod/perlsyn.pod
+	   ! pod/perltoc.pod pod/perltrap.pod pod/perlvar.pod
+           ! pod/pod2latex.PL toke.c utils/perldoc.PL
+
+----------------
+Version 5.004_64
+----------------
+
+____________________________________________________________________________
+[   871] By: mbeattie                              on 1998/04/03  13:38:59
+        Log: Update Changes5.004 and Changes, fix MANIFEST
+     Branch: perl
+           + Changes
+           ! Changes5.004 MANIFEST
+____________________________________________________________________________
+[   870] By: mbeattie                              on 1998/04/03  13:36:29
+        Log: Rename Changes to Changes5.004 (via an integrate)
+     Branch: perl
+          +> Changes5.004
+           - Changes
+____________________________________________________________________________
+[   869] By: mbeattie                              on 1998/04/03  11:53:00
+        Log: Subject: [PATCH] Perl 5.005b1t2/perl5.004_63 (resend)
+             Date: Wed, 18 Mar 1998 01:24:20 +0100 (MET)
+             From: Jan-Pieter Cornet 
+     Branch: perl
+           ! sv.c t/op/misc.t
+____________________________________________________________________________
+[   868] By: mbeattie                              on 1998/04/03  11:16:26
+        Log: Integrate win32 branch into mainline
+     Branch: perl
+          !> (integrate 31 files)
+____________________________________________________________________________
+[   867] By: gsar                                  on 1998/04/03  08:47:55
+        Log: config.* fixes
+     Branch: win32/perl
+	   ! 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
+____________________________________________________________________________
+[   866] By: gsar                                  on 1998/04/03  07:22:50
+        Log: fixup hv_free_ent() to not fail on null HeVAL()
+     Branch: win32/perl
+           ! hv.c perl.c
+____________________________________________________________________________
+[   865] By: gsar                                  on 1998/04/03  07:06:12
+        Log: integrate mainline
+     Branch: win32/perl
+          +> ext/Thread/Thread/Signal.pm t/op/hashwarn.t
+          !> (integrate 71 files)
+____________________________________________________________________________
+[   864] By: gsar                                  on 1998/04/03  06:59:37
+        Log: implement stack-of-stacks so that magic invocations don't
+             invalidate local stack pointer
+     Branch: win32/perl
+	   ! av.c cop.h deb.c embed.h embedvar.h global.sym gv.c interp.sym
+	   ! intrpvar.h mg.c op.c perl.c pp.h pp_ctl.c pp_sys.c proto.h
+           ! scope.c sv.c t/op/runlevel.t thrdvar.h util.c
+____________________________________________________________________________
+[   863] By: gsar                                  on 1998/04/03  01:26:09
+        Log: add AS patch#15
+     Branch: asperl
+	   ! ipenv.h lib/ExtUtils/MM_Unix.pm perl.c perlenv.h
+	   ! win32/config.bc win32/config.gc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+	   ! win32/config_h.PL win32/config_sh.PL win32/runperl.c
+           ! win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   862] By: mbeattie                              on 1998/04/02  17:08:43
+        Log: Subject: [PATCH for 5.004_63] Config_63-04-05.diff
+             Date: Thu, 2 Apr 1998 11:56:51 -0500 (EST)
+             From: Andy Dougherty 
+     Branch: perl
+           ! Configure ext/Socket/Socket.xs myconfig
+____________________________________________________________________________
+[   861] By: mbeattie                              on 1998/04/02  16:32:53
+        Log: Change 854 added { NULL, 0 } to sdbm.h which needs to be {0, 0}
+             since appropriate headers aren't included.
+     Branch: perl
+           ! ext/SDBM_File/sdbm/sdbm.h
+____________________________________________________________________________
+[   860] By: mbeattie                              on 1998/04/02  16:17:11
+        Log: Bumped patchlevel.h to 64
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   859] By: mbeattie                              on 1998/04/02  16:16:26
+        Log: Subject: Re: [PATCH] 5.004_63: UNICOS 9
+             Date: Fri, 20 Mar 1998 19:39:28 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! hints/unicos.sh regcomp.h
+____________________________________________________________________________
+[   858] By: mbeattie                              on 1998/04/02  16:13:24
+        Log: Subject: [PATCH] Re: Odd number of elements in hash list.
+             Date: Sat, 28 Mar 1998 15:26:46 -0800 (PST)
+             From: Tom Phoenix 
+     Branch: perl
+           + t/op/hashwarn.t
+           ! MANIFEST pod/perldiag.pod pp.c pp_hot.c
+____________________________________________________________________________
+[   857] By: mbeattie                              on 1998/04/02  16:08:43
+        Log: Subject: [PATCH 5.004_(04|63)] Close VMS security hole
+             Date: Sat, 28 Mar 1998 02:05:03 -0500 (EST)
+             From: Charles Bailey 
+     Branch: perl
+           ! vms/vms.c
+____________________________________________________________________________
+[   856] By: mbeattie                              on 1998/04/02  16:07:44
+        Log: Subject: [PATCH] mv-if-diff
+             Date: Fri, 27 Mar 98 18:06:11 GMT
+             From: Robin Barker 
+     Branch: perl
+           ! mv-if-diff
+____________________________________________________________________________
+[   855] By: mbeattie                              on 1998/04/02  16:06:54
+        Log: From: Jan-Pieter Cornet 
+             Subject: Re: [PATCH] [BUG 5.004_63] define/set of PERL_DESTRUCT_LEVEL
+             Date: Fri, 27 Mar 1998 02:11:21 +0100 (MET)
+             Subject: [PATCH] another destruct_level fix
+             Date: Mon, 30 Mar 1998 23:48:12 +0200 (MET DST)
+     Branch: perl
+           ! perl.c sv.c
+____________________________________________________________________________
+[   854] By: mbeattie                              on 1998/04/02  16:03:37
+        Log: Subject: Next wave of _63 VMS patches
+             Date: Thu, 26 Mar 1998 15:11:50 -0500 (EST)
+             From: Charles Bailey 
+     Branch: perl
+	   ! EXTERN.h INTERN.h ext/SDBM_File/Makefile.PL
+	   ! ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/dba.c
+	   ! ext/SDBM_File/sdbm/dbd.c ext/SDBM_File/sdbm/dbu.c
+	   ! ext/SDBM_File/sdbm/hash.c ext/SDBM_File/sdbm/pair.c
+	   ! ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
+	   ! ext/Thread/io.t installperl lib/ExtUtils/MM_VMS.pm
+	   ! lib/Net/Ping.pm perldir.h perlsdio.h t/lib/english.t
+	   ! vms/config.vms vms/descrip.mms vms/ext/Filespec.pm
+	   ! vms/ext/Stdio/0README.txt vms/ext/Stdio/Stdio.pm
+	   ! vms/ext/Stdio/Stdio.xs vms/ext/Stdio/test.pl
+	   ! vms/ext/filespec.t vms/genconfig.pl vms/perly_c.vms vms/vms.c
+           ! vms/vmsish.h
+____________________________________________________________________________
+[   853] By: mbeattie                              on 1998/04/02  15:55:46
+        Log: Subject: [PATCH 5.00463] Confusing error from perl -e "x'"
+             Date: Wed, 25 Mar 1998 17:43:17 -0500 (EST)
+             From: Hans Mulder 
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[   852] By: mbeattie                              on 1998/04/02  15:54:24
+        Log: Subject: [PATCH] small fixups in pod2latex.PL
+             Date: 25 Mar 1998 13:30:25 -0800
+             From: "Darren/Torin/Who Ever..." 
+     Branch: perl
+           ! pod/pod2latex.PL
+____________________________________________________________________________
+[   851] By: mbeattie                              on 1998/04/02  15:50:58
+        Log: Subject: [PATCH] hints/irix_6.sh with GCC
+             Date: Tue, 24 Mar 1998 12:25:10 -0800 (EST)
+             From: kstar@chapin.edu (Kurt D. Starsinic)
+     Branch: perl
+           ! hints/irix_6.sh
+____________________________________________________________________________
+[   850] By: mbeattie                              on 1998/04/02  15:45:33
+        Log: Subject: [PATCH] perldoc -m
+             Date: Tue, 24 Mar 1998 13:19:38 GMT
+             From: Robin Houston 
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   849] By: mbeattie                              on 1998/04/02  15:42:52
+        Log: Subject: [PATCH for 5.004_63] dos-djgpp update
+             Date: Mon, 23 Mar 1998 14:13:46 +0100
+             From: Laszlo Molnar 
+     Branch: perl
+           ! djgpp/config.over hints/dos_djgpp.sh
+____________________________________________________________________________
+[   848] By: mbeattie                              on 1998/04/02  15:38:19
+        Log: Subject: [PATCH] Stale SP in pp_substr
+             Date: Thu, 19 Mar 1998 21:28:02 -0600 (CST)
+             From: Stephen McCamant 
+     Branch: perl
+           ! pp.c
+____________________________________________________________________________
+[   847] By: mbeattie                              on 1998/04/02  15:36:33
+        Log: Add missing export of "nice" to ext/POSIX/POSIX.pm (Phil Tait)
+     Branch: perl
+           ! ext/POSIX/POSIX.pm
+____________________________________________________________________________
+[   846] By: mbeattie                              on 1998/04/02  15:34:36
+        Log: Subject: [PATCH] 5.004_63: further -e patching
+             Date: Wed, 18 Mar 1998 23:21:08 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! perl.c pod/perldiag.pod
+____________________________________________________________________________
+[   845] By: mbeattie                              on 1998/04/02  15:25:18
+        Log: Andy Dougherty's configuration patches (Config_63-01 up to 04).
+     Branch: perl
+	   ! Configure INSTALL Policy_sh.SH Porting/Glossary
+	   ! Porting/config.sh Porting/config_H config_h.SH
+	   ! ext/POSIX/POSIX.xs handy.h hints/hpux.sh myconfig perlsock.h
+           ! pp.c pp_sys.c regexec.c
+____________________________________________________________________________
+[   844] By: mbeattie                              on 1998/04/02  14:28:17
+        Log: Subject: [PATCH 5.004_63] perlrun.pod: PERL_DEBUG_MSTATS 
+             Date: Wed, 18 Mar 1998 20:40:19 +0100
+             From: Achim Bohnet 
+     Branch: perl
+           ! pod/perlrun.pod
+____________________________________________________________________________
+[   843] By: mbeattie                              on 1998/04/02  14:26:52
+        Log: From: Dan Sugalski 
+             Subject: 5.004_63 picky compiler fixes [PATCH]
+             Date: Wed, 18 Mar 1998 09:36:32 -0800
+             Subject: [PATCH 5.004_63] Fix function prototype with long doubles
+             Date: Wed, 18 Mar 1998 14:48:19 -0800
+     Branch: perl
+           ! ext/POSIX/POSIX.xs ext/Thread/Thread.xs vms/vms.c
+____________________________________________________________________________
+[   842] By: mbeattie                              on 1998/04/02  14:22:41
+        Log: From: Stephen Potter 
+             Subject: Re: doc: perlrun typo 
+             Date: Wed, 18 Mar 1998 10:06:55 -0600
+             Subject: Re: [PATCH 5.004_63] PerlLIO abstraction cleanup 
+             Date: Tue, 24 Mar 1998 21:20:51 -0600
+     Branch: perl
+           ! mg.c perl.c pod/perlrun.pod pp_hot.c pp_sys.c util.c
+____________________________________________________________________________
+[   841] By: mbeattie                              on 1998/04/02  14:17:31
+        Log: Subject: [PATCH] Add "Full 64 bit support" to Todo; document Todo in pumpkin.pod
+             Date: Wed, 18 Mar 1998 12:44:58 +0100
+             From: Dominic Dunlop 
+     Branch: perl
+           ! Porting/pumpkin.pod Todo
+____________________________________________________________________________
+[   840] By: mbeattie                              on 1998/04/02  14:14:22
+        Log: Subject: [PATCH] Configure hints/ patches
+             Date: Wed, 18 Mar 1998 02:47:38 +0100 (MET)
+             From: Jan-Pieter Cornet 
+     Branch: perl
+           ! hints/linux.sh hints/qnx.sh
+____________________________________________________________________________
+[   839] By: mbeattie                              on 1998/04/02  14:13:13
+        Log: Remove duplicate code in cygwin32/perlgcc (Blair Zajac)
+     Branch: perl
+           ! cygwin32/perlgcc
+____________________________________________________________________________
+[   838] By: gsar                                  on 1998/03/28  05:01:57
+        Log: fix Env.pm to weed out illegal names
+     Branch: win32/perl
+           ! lib/Env.pm
+____________________________________________________________________________
+[   837] By: gsar                                  on 1998/03/28  04:39:43
+        Log: fix typo in makefile.mk
+     Branch: win32/perl
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   836] By: gsar                                  on 1998/03/23  17:40:15
+        Log: add file: to installhtml URLs
+     Branch: win32/perl
+           ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[   835] By: mbeattie                              on 1998/03/18  11:03:11
+        Log: Add Thread::Signal to run signal handlers reliably in a new thread
+     Branch: perl
+           + ext/Thread/Thread/Signal.pm
+           ! MANIFEST ext/Thread/Thread.xs
+
+----------------
+Version 5.004_63
+----------------
+
+____________________________________________________________________________
+[   834] By: mbeattie                              on 1998/03/17  16:19:10
+        Log: Policy_sh.SH had extra $ in pager=$pager comment (Hallvard B Furuseth)
+     Branch: perl
+           ! Policy_sh.SH
+____________________________________________________________________________
+[   833] By: mbeattie                              on 1998/03/17  16:11:02
+        Log: Integrate win32 branch into mainline.
+     Branch: perl
+	  !> regcomp.c win32/config.bc win32/config.gc win32/config.vc
+	  !> win32/config_H.bc win32/config_H.gc win32/config_H.vc
+          !> win32/win32.c
+____________________________________________________________________________
+[   832] By: gsar                                  on 1998/03/17  14:32:39
+        Log: propagate bugfix @ change831 from asperl
+     Branch: win32/perl
+           ! regcomp.c
+____________________________________________________________________________
+[   831] By: gsar                                  on 1998/03/17  14:02:51
+        Log: fix buggy order of free() in regcomp.c (from AS)
+     Branch: asperl
+           ! regcomp.c
+____________________________________________________________________________
+[   830] By: gsar                                  on 1998/03/17  01:10:54
+        Log: add a part of AS patch#14, backout incomplete variable
+             name changes for gcc. Builds and tests under VC/BC once again.
+     Branch: asperl
+           ! bytecode.h mg.c pp.c pp_ctl.c pp_hot.c toke.c
+____________________________________________________________________________
+[   829] By: gsar                                  on 1998/03/16  23:49:18
+        Log: stray tweak to win32.c
+     Branch: win32/perl
+           ! win32/win32.c
+____________________________________________________________________________
+[   828] By: gsar                                  on 1998/03/16  22:06:03
+        Log: update win32/config* files
+     Branch: win32/perl
+	   ! win32/config.bc win32/config.gc win32/config.vc
+           ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+____________________________________________________________________________
+[   827] By: gsar                                  on 1998/03/16  19:09:30
+        Log: trivial integrate of mainline
+     Branch: win32/perl
+	  +> lib/ExtUtils/Installed.pm lib/ExtUtils/Packlist.pm
+          +> lib/ExtUtils/inst
+          !> (integrate 61 files)
+____________________________________________________________________________
+[   826] By: mbeattie                              on 1998/03/16  16:39:23
+        Log: newCONSTSUB had private MY_start_subparse.
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[   825] By: mbeattie                              on 1998/03/16  16:36:55
+        Log: Missing dTHR in hv_fetch_ent when statics moved to thread struct.
+     Branch: perl
+           ! hv.c
+____________________________________________________________________________
+[   824] By: mbeattie                              on 1998/03/16  16:27:43
+        Log: Added missing entry for lib/ExtUtils/Packlist.pm to MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   823] By: mbeattie                              on 1998/03/16  16:26:02
+        Log: Missed p4 add of lib/ExtUtils/Packlist.pm in change 814.
+     Branch: perl
+           + lib/ExtUtils/Packlist.pm
+____________________________________________________________________________
+[   822] By: mbeattie                              on 1998/03/16  16:22:58
+        Log: Bump patchlevel.h to 63.
+     Branch: perl
+           ! ext/IO/IO.xs patchlevel.h
+          !> (integrate 41 files)
+____________________________________________________________________________
+[   821] By: mbeattie                              on 1998/03/16  16:18:35
+        Log: newCONSTSUB added (XSUB equivalent for inlinable sub () { 123 }).
+             Subject: Bundling builtin.pm and newCONSTSUB with the core?
+             From: jan.dubois@ibm.net (Jan Dubois)
+             Date: Sun, 15 Mar 1998 19:09:05 +0100
+     Branch: perl
+           ! embed.h global.sym op.c pod/perlguts.pod proto.h
+____________________________________________________________________________
+[   820] By: mbeattie                              on 1998/03/16  16:02:50
+        Log: Subject: [PATCH] STRESS_REALLOC
+             Date: Fri, 13 Mar 1998 22:28:19 -0600 (CST)
+             From: Stephen McCamant 
+     Branch: perl
+           ! malloc.c perl.c scope.c
+____________________________________________________________________________
+[   819] By: mbeattie                              on 1998/03/16  16:01:06
+        Log: Subject: [BUG+PATCH] _62 with -DDEBUGGING and -Duseperlio
+             Date: Fri, 13 Mar 1998 23:21:25 +0100
+             From: Jan-Pieter Cornet 
+     Branch: perl
+           ! perly.c
+____________________________________________________________________________
+[   818] By: mbeattie                              on 1998/03/16  15:59:16
+        Log: Subject: [Configure PATCH] for OS/2
+             Date: Fri, 13 Mar 1998 16:18:12 -0500 (EST)
+             From: Ilya Zakharevich 
+             [Two hunks to Configure failed to apply due to clashes]
+     Branch: perl
+           ! Configure hints/os2.sh
+____________________________________________________________________________
+[   817] By: mbeattie                              on 1998/03/16  15:55:28
+        Log: Subject: [PATCH 5.004_62] VMS updates (direct)
+             Date: Thu, 12 Mar 1998 16:02:29 -0500 (EST)
+             From: Charles Bailey 
+             [Needed manual tweaks on vms/config.vms since it clashed with other
+             patches. I may have got it wrong.]
+     Branch: perl
+	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm
+	   ! lib/ExtUtils/Mksymlists.pm perl.h pp.c pp_hot.c regcomp.c
+	   ! regcomp.h utils/perldoc.PL vms/config.vms vms/descrip.mms
+	   ! vms/ext/Stdio/Stdio.pm vms/ext/filespec.t vms/fndvers.com
+	   ! vms/gen_shrfls.pl vms/genconfig.pl vms/sockadapt.h
+           ! vms/test.com vms/vms.c vms/vmsish.h
+____________________________________________________________________________
+[   816] By: mbeattie                              on 1998/03/16  15:26:04
+        Log: Subject: [PATCH] Let h2xs read multiple header files
+             Date: Tue, 10 Mar 1998 09:35:42 -0500 (EST)
+             From: Benjamin Sugars 
+     Branch: perl
+           ! utils/h2xs.PL
+____________________________________________________________________________
+[   815] By: mbeattie                              on 1998/03/16  15:24:12
+        Log: Subject: Re: Almost OK: Perl 5.004_62 on VMS 7.1
+             Date: Mon, 09 Mar 1998 09:18:56 -0800
+             From: Dan Sugalski 
+     Branch: perl
+           ! vms/config.vms
+____________________________________________________________________________
+[   814] By: mbeattie                              on 1998/03/16  13:17:14
+        Log: Subject: PATCH for 5.004_62 : Add .packlist handling classes to ExtUtils
+             Date: Sun, 08 Mar 1998 12:50:23 +0000
+             From: Alan Burlison 
+             plus manual update of MANIFEST
+     Branch: perl
+           + lib/ExtUtils/Installed.pm lib/ExtUtils/inst
+	   ! MANIFEST installman installperl lib/ExtUtils/Install.pm
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[   813] By: mbeattie                              on 1998/03/16  13:08:55
+        Log: From: Blair Zajac 
+             Subject: PATCH: util.c and util.h function declarations do not match
+             Date: Fri, 6 Mar 1998 10:29:29 -0800 (PST)
+             Subject: PATCH: cgywin32 patch for perlgcc
+             Date: Fri, 6 Mar 1998 11:15:36 -0800 (PST)
+             Subject: PATCH: perl5.004_62 on cygwin32
+             Date: Fri, 6 Mar 1998 11:57:35 -0800 (PST)
+     Branch: perl
+	   ! Configure cygwin32/perlgcc cygwin32/perlld pp_sys.c x2p/util.c
+____________________________________________________________________________
+[   812] By: mbeattie                              on 1998/03/16  12:55:39
+        Log: From: Andy Dougherty 
+             Subject: [PATCH 5.004_62} Config_62-01 patch available.
+             Date: Mon, 9 Mar 1998 15:23:33 -0500 (EST)
+             Subject: [PATCH 5.004_62] Tiny hint file updates
+             Date: Mon, 9 Mar 1998 13:21:46 -0500 (EST)
+     Branch: perl
+	   ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+	   ! config_h.SH ext/ODBM_File/ODBM_File.xs handy.h hints/aix.sh
+	   ! hints/dec_osf.sh hints/dos_djgpp.sh hints/freebsd.sh
+	   ! hints/irix_6.sh hints/irix_6_0.sh hints/irix_6_1.sh
+	   ! hints/os2.sh hints/solaris_2.sh patchlevel.h perl.c perl.h
+           ! perllio.h pod/perldiag.pod pp_sys.c vms/config.vms
+____________________________________________________________________________
+[   811] By: mbeattie                              on 1998/03/16  12:13:55
+        Log: DOS djgpp updates:
+             From: Laszlo Molnar 
+             Subject: [PATCH for 5.004_61] dos-djgpp update
+             Date: Fri, 6 Mar 1998 10:41:01 +0100
+             Subject: [PATCH 5.004_62] dos-djgpp update
+             Date: Thu, 12 Mar 1998 13:34:51 +0100
+     Branch: perl
+           ! djgpp/config.over hints/dos_djgpp.sh
+____________________________________________________________________________
+[   810] By: gsar                                  on 1998/03/16  08:48:17
+        Log: integrate mainline
+     Branch: win32/perl
+          !> pp_sys.c
+____________________________________________________________________________
+[   809] By: gsar                                  on 1998/03/16  08:44:37
+        Log: various changes to get asperl working under Borland
+             (passes all tests when built under PERL_OBJECT)
+     Branch: asperl
+	   ! ObjXSub.h ext/Opcode/Opcode.xs globals.c mg.c objpp.h op.c
+	   ! perl.h perly.c perly.c.diff pp.c pp_ctl.c pp_hot.c pp_sys.c
+	   ! proto.h scope.h sv.c toke.c win32/Makefile win32/config_H.bc
+	   ! win32/config_H.gc win32/config_H.vc win32/makedef.pl
+	   ! win32/makefile.mk win32/runperl.c win32/win32.c win32/win32.h
+           ! win32/win32sck.c
+____________________________________________________________________________
+[   808] By: gsar                                  on 1998/03/12  19:50:20
+        Log: set sockets to nonoverlapped mode for every thread
+             Message-Id: <35081FE4.965A484D@enteract.com>
+             Date:    Thu, 12 Mar 1998 11:48:20 CST
+             From:    Steve Nielsen 
+             Subject: [PATCH 5.004_62] win32: set sockopt on a per-thread basis
+     Branch: win32/perl
+           ! win32/win32.h win32/win32sck.c
+____________________________________________________________________________
+[   807] By: gsar                                  on 1998/03/12  19:26:54
+        Log: add AS patch#13
+     Branch: asperl
+           ! win32/Makefile
+____________________________________________________________________________
+[   806] By: gsar                                  on 1998/03/12  00:51:08
+        Log: added AS patch#12 with minor changes
+     Branch: asperl
+	   ! ObjXSub.h bytecode.h byterun.c doio.c iplio.h
+	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MakeMaker.pm
+	   ! lib/ExtUtils/Mksymlists.pm lib/ExtUtils/xsubpp objpp.h perl.c
+	   ! perllio.h proto.h regcomp.c win32/Makefile win32/config_h.PL
+           ! win32/runperl.c
+____________________________________________________________________________
+[   805] By: gsar                                  on 1998/03/10  20:35:10
+        Log: reinstate some standard sig_names to avoid noise from
+             modules (and in hopes of making them _do_ something in future)
+     Branch: win32/perl
+	   ! win32/config.bc win32/config.gc win32/config.vc
+           ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+____________________________________________________________________________
+[   804] By: gsar                                  on 1998/03/10  20:33:05
+        Log: mingw32 tweaks
+     Branch: win32/perl
+           ! win32/makefile.mk win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   803] By: gsar                                  on 1998/03/09  20:56:07
+        Log: tweak Win32::DomainName() implementation
+     Branch: win32/perl
+           ! win32/Makefile win32/win32.c
+____________________________________________________________________________
+[   802] By: gsar                                  on 1998/03/09  03:51:01
+        Log: merge C patch, also moved statics in
+             [ah]v.c to thrdvar.h
+     Branch: win32/perl
+           ! av.c embedvar.h hv.c scope.c t/op/local.t thrdvar.h
+____________________________________________________________________________
+[   801] By: gsar                                  on 1998/03/09  02:38:35
+        Log: minor win32 support fixes
+             - add a better implementation of Win32::DomainName() (as
+             suggested by Jutta M. Klebe )
+             - fix opendir() emulation was unsafe what given long paths
+     Branch: win32/perl
+           ! win32/win32.c
+____________________________________________________________________________
+[   800] By: nick                                  on 1998/03/07  09:36:41
+        Log: There has been a 'thaw' in config.h (the ICE has gone ;-))
+             So pp_sys.c needs tweaking otherwise it does not believe getservby*()
+             exist. (Breaks libnet).
+     Branch: perl
+           ! pp_sys.c
+____________________________________________________________________________
+[   799] By: gsar                                  on 1998/03/07  07:51:28
+        Log: integrate mainline changes
+     Branch: asperl
+          !> (integrate 111 files)
+____________________________________________________________________________
+[   798] By: gsar                                  on 1998/03/07  07:01:55
+        Log: integrate mainline
+     Branch: win32/perl
+          !> myconfig patchlevel.h
+____________________________________________________________________________
+[   797] By: gsar                                  on 1998/03/07  06:49:49
+        Log: provide our own popen()/pclose() to fix problems with qx//:
+             - qx// used to always invoke the shell, now does so only when needed
+             - qx// didn't respect PERL5SHELL, now does
+     Branch: win32/perl
+           ! lib/ExtUtils/typemap win32/config_h.PL win32/win32.c
+____________________________________________________________________________
+[   796] By: gsar                                  on 1998/03/07  01:37:10
+        Log: a missed s/sp/SP/
+     Branch: win32/perl
+           ! lib/ExtUtils/typemap pod/perlcall.pod
+____________________________________________________________________________
+[   795] By: gsar                                  on 1998/03/07  01:05:21
+        Log: change all 'sp' to 'SP' in code and in the docs.  Explicitly
+             mention that local stack pointer should be called SP.  This makes the
+             API safer from source incompatibilities down the line.
+     Branch: win32/perl
+	   ! av.c doio.c doop.c ext/DB_File/DB_File.xs
+	   ! ext/DynaLoader/dl_dld.xs ext/Opcode/Opcode.xs
+	   ! ext/POSIX/POSIX.xs ext/Socket/Socket.xs ext/Thread/Thread.xs
+	   ! gv.c mg.c op.c os2/OS2/REXX/REXX.xs perl.c pod/perlcall.pod
+	   ! pod/perlembed.pod pod/perlguts.pod pod/perlxs.pod pp.c
+           ! pp_ctl.c pp_hot.c pp_sys.c util.c
+
+----------------
+Version 5.004_62
+----------------
+
+____________________________________________________________________________
+[   794] By: mbeattie                              on 1998/03/06  09:38:08
+        Log: Subject: [PATCH] perl5.004_61 myconfig updates
+             Date: Thu, 5 Mar 1998 15:10:54 -0500 (EST)
+             From: Andy Dougherty 
+     Branch: perl
+           ! myconfig
+____________________________________________________________________________
+[   793] By: mbeattie                              on 1998/03/06  09:36:37
+        Log: Bump patchlevel.h to 62.
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   792] By: mbeattie                              on 1998/03/06  09:35:57
+        Log: Integrate win32 branch into mainline.
+     Branch: perl
+	  !> bytecode.h op.c proto.h scope.c 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
+____________________________________________________________________________
+[   791] By: gsar                                  on 1998/03/06  06:00:08
+        Log: various
+             - s/PerlIO_fread/PerlIO_read/, the former doesn't exist
+             - add missing prototypes
+             - regenerate win32/config*.?c
+     Branch: win32/perl
+	   ! bytecode.h proto.h win32/config.bc win32/config.gc
+	   ! win32/config.vc win32/config_H.bc win32/config_H.gc
+           ! win32/config_H.vc win32/makefile.mk
+____________________________________________________________________________
+[   790] By: gsar                                  on 1998/03/06  03:19:23
+        Log: fix typo in Makefile
+     Branch: win32/perl
+           ! win32/Makefile
+____________________________________________________________________________
+[   789] By: gsar                                  on 1998/03/05  22:55:53
+        Log: integrate mainline
+     Branch: win32/perl
+          !> (integrate 47 files)
+____________________________________________________________________________
+[   788] By: gsar                                  on 1998/03/05  20:02:09
+        Log: added AS patch#11
+             Message-Id: <01BD4820.AFC70110.dougl@ActiveState.com>
+             Date:    Thu, 05 Mar 1998 10:23:04 PST
+             From:    Douglas Lankshear 
+             
+             This patch fixes a bug I introduced removing duplicate code.
+             -- Doug
+     Branch: asperl
+           ! ObjXSub.h objpp.h win32/runperl.c
+____________________________________________________________________________
+[   787] By: gsar                                  on 1998/03/05  19:56:17
+        Log: add Nick's dTHR fixes
+     Branch: win32/perl
+           ! op.c scope.c
+____________________________________________________________________________
+[   786] By: gsar                                  on 1998/03/05  19:54:49
+        Log: maintpatch
+             Message-Id: <199803050749.CAA15206@Orb.Nashua.NH.US>
+             Date:    Thu, 05 Mar 1998 02:49:46 EST
+             From:    Spider Boardman 
+             Subject: [PATCH] 5.004_04 +MAINT_TRIAL_1 broken when sizeof(int) != sizeof(void
+     Branch: win32/perl
+           ! scope.c
+____________________________________________________________________________
+[   785] By: mbeattie                              on 1998/03/05  19:12:14
+        Log: Subject: [5.004_61 PATCH] Make incompatible changes to RE engine NOW
+             Date: Wed, 4 Mar 1998 23:55:54 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! op.c proto.h regcomp.c regexp.h util.c
+____________________________________________________________________________
+[   784] By: mbeattie                              on 1998/03/05  19:11:09
+        Log: Subject: [PATCH] Re: perl 5.0061 unable to build on sparc 5 Sol2.5.1 threads.
+             Date: Wed, 4 Mar 1998 10:18:03 GMT
+             From: Nick Ing-Simmons 
+     Branch: perl
+           ! atomic.h
+____________________________________________________________________________
+[   783] By: mbeattie                              on 1998/03/05  19:09:16
+        Log: Subject: Configure patches -01 and -02 for 5.004_61.
+             Date: Tue, 3 Mar 1998 16:41:16 -0500 (EST)
+             From: Andy Dougherty 
+     Branch: perl
+	   ! Configure INSTALL Policy_sh.SH Porting/Glossary
+	   ! Porting/config.sh Porting/config_H Porting/pumpkin.pod
+	   ! config_h.SH handy.h hints/README.hints hints/aix.sh
+	   ! hints/linux.sh hints/solaris_2.sh hints/unicos.sh
+           ! makedepend.SH myconfig pp_sys.c
+____________________________________________________________________________
+[   782] By: mbeattie                              on 1998/03/05  19:05:23
+        Log: Subject: [PATCH] Compiling with OP_IN_REGISTER
+             Date: 03 Mar 1998 18:05:07 +0100
+             From: Gisle Aas 
+     Branch: perl
+           ! perl.h pp_ctl.c
+____________________________________________________________________________
+[   781] By: mbeattie                              on 1998/03/05  19:04:34
+        Log: Subject: [PATCH] Make autouse -w-safe
+             Date: Mon, 2 Mar 1998 21:36:02 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! lib/autouse.pm op.c sv.c
+____________________________________________________________________________
+[   780] By: mbeattie                              on 1998/03/05  19:02:50
+        Log: Subject: [PATCH] External symbol re_croak2
+             Date: 02 Mar 1998 13:00:45 +0100
+             From: Gisle Aas 
+     Branch: perl
+           ! regcomp.c regcomp.h
+____________________________________________________________________________
+[   779] By: mbeattie                              on 1998/03/05  19:01:25
+        Log: Subject: [PATCH 5.004_61] Miscellaneous minor fixes
+             Date: Mon, 02 Mar 1998 01:48:27 -0500 (EST)
+             From: bailey@newman.upenn.edu (Charles Bailey)
+     Branch: perl
+	   ! bytecode.h embedvar.h ext/B/Makefile.PL ext/B/byteperl.c
+	   ! ext/Thread/Makefile.PL lib/File/Path.pm patchlevel.h perldir.h
+           ! sv.h
+____________________________________________________________________________
+[   778] By: mbeattie                              on 1998/03/05  18:53:13
+        Log: Subject: [PATCH 5.004_61] USHRT range limit macros
+             Date: Mon, 02 Mar 1998 01:41:41 -0500 (EST)
+             From: bailey@newman.upenn.edu (Charles Bailey)
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[   777] By: mbeattie                              on 1998/03/05  18:50:25
+        Log: Subject: [PATCH 5.004_61]  File::Basename taint fix (revised)
+             Date: Mon, 02 Mar 1998 01:39:47 -0500 (EST)
+             From: bailey@newman.upenn.edu (Charles Bailey)
+     Branch: perl
+           ! lib/File/Basename.pm
+____________________________________________________________________________
+[   776] By: mbeattie                              on 1998/03/05  18:49:15
+        Log: Subject: [PATCH] Take out version number in perlguts (perl5.004_61)
+             Date: 01 Mar 1998 15:16:03 +0100
+             From: Gisle Aas 
+     Branch: perl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[   775] By: mbeattie                              on 1998/03/05  18:48:05
+        Log: Subject: Re: [PATCH] 5.004_61: Makefile.SH (Re: 5.004_61: annoyingly missing patch)
+             Date: Sun, 1 Mar 1998 12:14:44 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! Makefile.SH perl_exp.SH
+____________________________________________________________________________
+[   774] By: mbeattie                              on 1998/03/05  18:46:32
+        Log: Subject: Almost OK: 5.004_61 (threads, perlio)
+             Date: Sun, 1 Mar 1998 02:02:47 -0500
+             From: Spider Boardman 
+     Branch: perl
+           ! bytecode.h bytecode.pl byterun.c byterun.h perlsdio.h
+____________________________________________________________________________
+[   773] By: mbeattie                              on 1998/03/05  18:43:57
+        Log: Subject: [PATCH 5.004_61] print sort {-1} 1..10; hangs
+             Date: Sat, 28 Feb 1998 15:51:14 -0500 (EST)
+             From: Hans Mulder 
+     Branch: perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   772] By: mbeattie                              on 1998/03/05  18:39:25
+        Log: Subject: [PATCH] 5.004_61: Makefile.SH: 'ok' target needs perlbug...
+             Date: Sat, 28 Feb 1998 17:06:41 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! Makefile.SH
+____________________________________________________________________________
+[   771] By: mbeattie                              on 1998/03/05  18:38:32
+        Log: Subject: [PATCH] 5.004_61: hints/netbsd.sh
+             Date: Sat, 28 Feb 1998 16:35:32 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! hints/netbsd.sh
+____________________________________________________________________________
+[   770] By: mbeattie                              on 1998/03/05  18:36:50
+        Log: Add byterun.c to cflags.SH (Dominic Dunlop )
+     Branch: perl
+           ! cflags.SH
+____________________________________________________________________________
+[   769] By: mbeattie                              on 1998/03/05  18:34:35
+        Log: Change getc/fread to PerlIO_getc/fread in bytecode.h:
+             Subject: [PATCH 5.004_61] bunch of small patches
+             Date: Fri, 27 Feb 1998 20:03:29 -0500 (EST)
+             From: Andrew Cohen 
+     Branch: perl
+           ! bytecode.h
+____________________________________________________________________________
+[   768] By: mbeattie                              on 1998/03/05  18:13:06
+        Log: Integrate win32 branch into mainline.
+     Branch: perl
+          !> (integrate 53 files)
+____________________________________________________________________________
+[   767] By: TimBunce                              on 1998/03/05  11:48:09
+        Log: Update to change 744.
+     Branch: maint-5.004/perl
+           ! lib/ExtUtils/Install.pm
+____________________________________________________________________________
+[   765] By: TimBunce                              on 1998/03/05  11:24:24
+        Log: Update embed.h after make regen_headers.
+     Branch: maint-5.004/perl
+           ! embed.h
+____________________________________________________________________________
+[   764] By: TimBunce                              on 1998/03/05  11:05:13
+        Log: APPLLIB_EXP now has arch and version dirs added to @INC
+     Branch: maint-5.004/perl
+           ! perl.c
+____________________________________________________________________________
+[   763] By: TimBunce                              on 1998/03/05  11:01:38
+        Log: Added hints/openbsd.sh and t/op/pos.t to MANIFEST
+             Added MAINT_TRIAL_1 local patch label to patchlevel.h
+             Removed win32/win32io.c and win32/win32io.h from repository
+     Branch: maint-5.004/perl
+           - win32/win32io.c win32/win32io.h
+           ! MANIFEST patchlevel.h
+____________________________________________________________________________
+[   762] By: TimBunce                              on 1998/03/05  10:05:34
+        Log: Title:  "5.004_04 +MAINT_TRIAL_1 broken when sizeof(int) != sizeof(void)"
+             From:  Spider Boardman 
+             Files:  scope.c
+     Branch: maint-5.004/perl
+           ! scope.c
+____________________________________________________________________________
+[   761] By: TimBunce                              on 1998/03/05  10:03:10
+        Log: Title:  "properly refcount localization, fix C"
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199802191207.MAA10742@toad.ig.co.uk>
+             Files:  av.c hv.c scope.c t/op/local.t
+     Branch: maint-5.004/perl
+           ! av.c hv.c scope.c t/op/local.t
+____________________________________________________________________________
+[   760] By: gsar                                  on 1998/03/04  20:58:21
+        Log: added AS patch#10
+             Message-Id: <01BD4691.963D1670.dougl@ActiveState.com>
+             Date:    Tue, 03 Mar 1998 10:46:13 PST
+             From:    Douglas Lankshear 
+             Subject: [PATCH]
+             
+             Here's a patch to win32/dl_win32.xs that is a fix for the lookup of statically 
+             linked modules.
+             
+             -- Doug
+     Branch: asperl
+           ! win32/dl_win32.xs
+____________________________________________________________________________
+[   759] By: TimBunce                              on 1998/03/04  18:46:41
+        Log: Update patchls utility
+     Branch: maint-5.004/perl
+           ! Porting/patchls
+____________________________________________________________________________
+[   758] By: TimBunce                              on 1998/03/04  17:07:06
+        Log: perldoc -f now uses pager if text is too long for screen
+     Branch: maint-5.004/perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   757] By: TimBunce                              on 1998/03/04  16:57:04
+        Log: Added OpenBSD hint file from 
+             Document 'warn with no args' behaviour, from 
+     Branch: maint-5.004/perl
+           + hints/openbsd.sh
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[   756] By: TimBunce                              on 1998/03/04  16:48:40
+        Log: Fix for new gnulibc stdio.h when using sfio+perlio
+     Branch: maint-5.004/perl
+           ! perlsdio.h
+____________________________________________________________________________
+[   755] By: TimBunce                              on 1998/03/04  16:47:08
+        Log: Fixed typo in vms/ext/Stdio/Stdio.pm AUTOLOAD
+             Added details of split in scalar context to perlfunc.pod
+     Branch: maint-5.004/perl
+           ! pod/perlfunc.pod vms/ext/Stdio/Stdio.pm
+____________________________________________________________________________
+[   754] By: TimBunce                              on 1998/03/04  16:35:58
+        Log: Updated perl -v info to include reference to docs and home page.
+     Branch: maint-5.004/perl
+           ! perl.c
+____________________________________________________________________________
+[   753] By: TimBunce                              on 1998/03/04  16:31:29
+        Log: Updated hints/bsdos.sh for BSD/OS 3.1
+             Fixed typo in pod/perlsyn.pod
+             Added workaround for old gmake in ext/SDBM_File/sdbm/Makefile.PL
+             Fixed typo in ext/GDBM_File/GDBM_File.pm
+     Branch: maint-5.004/perl
+	   ! ext/GDBM_File/GDBM_File.pm ext/SDBM_File/sdbm/Makefile.PL
+           ! hints/bsdos.sh pod/perlsyn.pod
+____________________________________________________________________________
+[   752] By: TimBunce                              on 1998/03/04  15:49:19
+        Log: Changed bug address in README to perlbug@perl.com
+             Changed Copyright in perl.c to 1998
+             Added op/pos.t test from Robin Houston 
+     Branch: maint-5.004/perl
+           + t/op/pos.t
+           ! README perl.c
+____________________________________________________________________________
+[   751] By: TimBunce                              on 1998/03/04  14:47:15
+        Log: Make t/comp/require.t and t/lib/ph.t executable in repository
+     Branch: maint-5.004/perl
+           ! t/comp/require.t t/lib/ph.t
+____________________________________________________________________________
+[   750] By: TimBunce                              on 1998/03/04  13:29:58
+        Log: Added dTHR definition to ease backwards compatibility for XS
+             source code from 5.005.
+     Branch: maint-5.004/perl
+           ! perl.h
+____________________________________________________________________________
+[   749] By: TimBunce                              on 1998/03/04  12:19:19
+        Log: Title:  "rename local 'op' variables to 'o'", #F114
+             From:  Gurusamy Sarathy
+             Files:  op.h opcode.h proto.h dump.c op.c opcode.pl pp_ctl.c run.c scope.c
+             toke.c
+     Branch: maint-5.004/perl
+	   ! dump.c op.c op.h opcode.h opcode.pl pp_ctl.c proto.h run.c
+           ! scope.c toke.c
+____________________________________________________________________________
+[   748] By: TimBunce                              on 1998/03/04  12:12:27
+        Log: Title:  "consolidated win32 patch", #F112
+             From:  Gurusamy Sarathy
+             Files:  MANIFEST pod/perlfaq2.pod pod/perlrun.pod win32/include/sys/socket.h
+             EXTERN.h INTERN.h dosish.h lib/ExtUtils/Command.pm
+             lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
+             lib/ExtUtils/Mksymlists.pm lib/File/DosGlob.pm t/TEST
+             t/harness win32/win32.h win32/win32iop.h README.win32
+             doio.c installhtml installperl pp_sys.c win32/Makefile
+             win32/config.bc win32/config.vc win32/config_H.bc
+             win32/config_H.vc win32/config_h.PL win32/config_sh.PL
+             win32/dl_win32.xs win32/makedef.pl win32/makefile.mk
+             win32/perllib.c win32/runperl.c win32/win32.c
+             win32/win32sck.c win32/bin/perlglob.pl x2p/a2p.h x2p/a2p.c
+             x2p/a2py.c
+     Branch: maint-5.004/perl
+           + win32/bin/perlglob.pl
+	   ! EXTERN.h INTERN.h MANIFEST README.win32 doio.c dosish.h
+	   ! installhtml installperl lib/ExtUtils/Command.pm
+	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Win32.pm
+	   ! lib/ExtUtils/Mksymlists.pm lib/File/DosGlob.pm
+	   ! pod/perlfaq2.pod pod/perlrun.pod pp_sys.c t/TEST t/harness
+	   ! win32/Makefile win32/config.bc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.vc win32/config_h.PL
+	   ! win32/config_sh.PL win32/dl_win32.xs
+	   ! win32/include/sys/socket.h win32/makedef.pl win32/makefile.mk
+	   ! win32/perllib.c win32/runperl.c win32/win32.c win32/win32.h
+	   ! win32/win32iop.h win32/win32sck.c x2p/a2p.c x2p/a2p.h
+           ! x2p/a2py.c
+____________________________________________________________________________
+[   747] By: TimBunce                              on 1998/03/04  11:59:57
+        Log: Title:  "initialize @INC in ph.t, and fix up MANIFEST", #F111
+             From:  Gurusamy Sarathy
+             Files:  MANIFEST t/lib/ph.t
+     Branch: maint-5.004/perl
+           ! MANIFEST t/lib/ph.t
+____________________________________________________________________________
+[   746] By: TimBunce                              on 1998/03/04  11:47:43
+        Log: Title:  "properly save STDOUT during system() in debugger", #F110
+             From:  Jason Smith 
+             Files:  lib/perl5db.pl
+     Branch: maint-5.004/perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[   745] By: TimBunce                              on 1998/03/04  11:40:19
+        Log: Title:  "generate DynaLoader.pm at build time", #F109
+             From:  Achim Bohnet 
+             Msg-ID:  <9802111938.AA26224@o09.xray.mpe.mpg.de>
+             Files:  MANIFEST ext/DynaLoader/DynaLoader.pm.PL ext/DynaLoader/Makefile.PL
+     Branch: maint-5.004/perl
+           + ext/DynaLoader/DynaLoader.pm.PL
+           ! MANIFEST ext/DynaLoader/Makefile.PL
+____________________________________________________________________________
+[   744] By: TimBunce                              on 1998/03/04  11:34:09
+        Log: Title:  "Install extensions with bootstrap in $archlib", #F108
+             From:  koenig@anna.mind.de (Andreas J. Koenig), koenig@kulturbox.de (Andreas
+             J. Koenig)
+             Msg-ID:  
+             Files:  lib/ExtUtils/Install.pm
+     Branch: maint-5.004/perl
+           ! lib/ExtUtils/Install.pm
+____________________________________________________________________________
+[   743] By: TimBunce                              on 1998/03/04  10:45:05
+        Log: Title:  "Pod::Html trips over "C<0>"", #F107
+             From:  Chip Salzenberg
+             Files:  lib/Pod/Html.pm
+     Branch: maint-5.004/perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[   742] By: TimBunce                              on 1998/03/04  10:12:54
+        Log: Title:  "5.004_58 | _04: pod2*,perlpod: L", #F106
+             From:  Achim Bohnet 
+             Msg-ID:  <9802111629.AA00595@o09.xray.mpe.mpg.de>
+             Files:  pod/perlpod.pod lib/Pod/Html.pm lib/Pod/Text.pm pod/pod2man.PL
+     Branch: maint-5.004/perl
+	   ! lib/Pod/Html.pm lib/Pod/Text.pm pod/perlpod.pod pod/pod2man.PL
+____________________________________________________________________________
+[   741] By: TimBunce                              on 1998/03/04  10:08:31
+        Log: Title:  "New patch for $^E==GetLastError() under Win32", #F105
+             From:  Gurusamy Sarathy , Tye McQueen
+             , ilya@math.ohio-state.edu (Ilya
+             Zakharevich)
+             Msg-ID:  <199801040630.AA29298@metronet.com>,
+             <199801041826.NAA11568@aatma.engin.umich.edu>,
+             <1998Jan4.130412.2719461@cor.newman>
+             Files:  pod/perlfunc.pod pod/perlvar.pod doio.c lib/dumpvar.pl lib/perl5db.pl
+             win32/win32.h mg.c util.c win32/makedef.pl win32/win32.c
+     Branch: maint-5.004/perl
+	   ! doio.c lib/dumpvar.pl lib/perl5db.pl mg.c pod/perlfunc.pod
+	   ! pod/perlvar.pod util.c win32/makedef.pl win32/win32.c
+           ! win32/win32.h
+____________________________________________________________________________
+[   740] By: TimBunce                              on 1998/03/04  09:55:57
+        Log: Title:  "5.004_56: Patch to Tie::Hash and docs", #F104
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199801120134.UAA05437@monk.mps.ohio-state.edu>
+             Files:  pod/perlfunc.pod lib/Tie/Hash.pm
+     Branch: maint-5.004/perl
+           ! lib/Tie/Hash.pm pod/perlfunc.pod
+____________________________________________________________________________
+[   739] By: TimBunce                              on 1998/03/04  09:26:01
+        Log: Title:  "more doc for perldoc", #F103
+             From:  Gurusamy Sarathy
+             Files:  utils/perldoc.PL
+     Branch: maint-5.004/perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   738] By: TimBunce                              on 1998/03/04  09:23:16
+        Log: Title:  "Make perldoc look for an index file ", #F102
+             From:  Gisle Aas 
+             Msg-ID:  <199801221220.NAA22902@furu.g.aas.no>
+             Files:  utils/perldoc.PL
+     Branch: maint-5.004/perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   737] By: TimBunce                              on 1998/03/04  09:21:15
+        Log: Title:  "perldoc -F filename", #F101
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199712120037.TAA00176@math.mps.ohio-state.edu>
+             Files:  utils/perldoc.PL
+     Branch: maint-5.004/perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   736] By: TimBunce                              on 1998/03/04  09:16:20
+        Log: Title:  "sv_grow can fail for HAS_64K_LIMIT systems", #F100
+             From:  Gisle Aas 
+             Msg-ID:  
+             Files:  sv.c
+     Branch: maint-5.004/perl
+           ! sv.c
+____________________________________________________________________________
+[   735] By: TimBunce                              on 1998/03/04  09:08:51
+        Log: Title:  "Benchmark.pm: timethese corrupts $_", #F099
+             From:  abigail@fnx.com
+             Msg-ID:  <19980201114609.7779.qmail@betelgeuse.wayne.fnx.com>
+             Files:  lib/Benchmark.pm
+     Branch: maint-5.004/perl
+           ! lib/Benchmark.pm
+____________________________________________________________________________
+[   734] By: TimBunce                              on 1998/03/04  08:59:58
+        Log: Title:  "STRANGE_MALLOC should test failed alloc", #F098
+             From:  Gisle Aas 
+             Msg-ID:  <199802021406.PAA03285@furu.g.aas.no>
+             Files:  hv.c
+     Branch: maint-5.004/perl
+           ! hv.c
+____________________________________________________________________________
+[   733] By: TimBunce                              on 1998/03/04  08:35:19
+        Log: Title:  "support caseless %ENV", #F097
+             From:  Gurusamy Sarathy
+             Files:  hv.c t/op/magic.t win32/win32.h
+     Branch: maint-5.004/perl
+           ! hv.c t/op/magic.t win32/win32.h
+____________________________________________________________________________
+[   732] By: TimBunce                              on 1998/03/04  08:33:58
+        Log: Title:  "newer cperl-mode.el (from 5.004_60)", #F096
+             From:  Ilya Zakharevich
+             Files:  emacs/cperl-mode.el
+     Branch: maint-5.004/perl
+           ! emacs/cperl-mode.el
+____________________________________________________________________________
+[   731] By: TimBunce                              on 1998/03/04  08:26:23
+        Log: Title:  "Handle set magic on xsub OUTPUT args, add API functions that handle
+             magic", #F095
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199801190409.XAA26710@aatma.engin.umich.edu>
+             Files:  pod/perlguts.pod pod/perlxs.pod embed.h proto.h sv.h global.sym
+             lib/ExtUtils/xsubpp sv.c
+     Branch: maint-5.004/perl
+	   ! embed.h global.sym lib/ExtUtils/xsubpp pod/perlguts.pod
+           ! pod/perlxs.pod proto.h sv.c sv.h
+____________________________________________________________________________
+[   730] By: TimBunce                              on 1998/03/04  08:20:52
+        Log: Title:  "Fix flawed cleanup when signal handlers are not defined", #F094
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199710290106.UAA11485@aatma.engin.umich.edu>
+             Files:  mg.c
+     Branch: maint-5.004/perl
+           ! mg.c
+____________________________________________________________________________
+[   729] By: TimBunce                              on 1998/03/04  08:18:02
+        Log: Title:  "Tests for C", #F093
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199711021247.MAA01743@crypt.compulink.co.uk>
+             Files:  t/op/sort.t
+     Branch: maint-5.004/perl
+           ! t/op/sort.t
+____________________________________________________________________________
+[   728] By: TimBunce                              on 1998/03/04  08:17:07
+        Log: Title:  "Make search.pl work on win32", #F092
+             From:  Gurusamy Sarathy
+             Files:  win32/bin/search.pl
+     Branch: maint-5.004/perl
+           ! win32/bin/search.pl
+____________________________________________________________________________
+[   727] By: gsar                                  on 1998/03/04  04:13:23
+        Log: missing s/op/o/ from one of the mainpatches
+     Branch: win32/perl
+           ! op.c
+____________________________________________________________________________
+[   726] By: gsar                                  on 1998/03/04  02:12:13
+        Log: maintpatches #102 and #103 to perldoc.PL
+     Branch: win32/perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   725] By: gsar                                  on 1998/03/04  02:00:15
+        Log: renumber some tests to match maint branch
+     Branch: win32/perl
+           ! t/op/local.t
+____________________________________________________________________________
+[   724] By: gsar                                  on 1998/03/04  01:25:50
+        Log: maintpatch
+             #70:  "Fix random whitespace errors in docs"
+             From:  Roderick Schertler 
+             Msg-ID:  <12726.877706444@eeyore.ibcinc.com>
+             Date:  Fri, 24 Oct 1997 11:20:44 -0400
+             Files:  pod/checkpods.PL pod/perlfunc.pod
+     Branch: win32/perl
+           ! pod/checkpods.PL
+____________________________________________________________________________
+[   723] By: gsar                                  on 1998/03/04  01:04:37
+        Log: sync maintpatch
+             #76:  "Fix infinite loop on unlink() failure in File::Path::rmtree()
+             From:  Chip Salzenberg
+             Files:  lib/File/Path.pm
+     Branch: win32/perl
+           ! lib/File/Path.pm
+____________________________________________________________________________
+[   722] By: gsar                                  on 1998/03/04  00:46:46
+        Log: remove redundancy in File::Find
+     Branch: win32/perl
+           ! lib/File/Find.pm
+____________________________________________________________________________
+[   721] By: TimBunce                              on 1998/03/03  20:06:41
+        Log: Title:  "Fix spurious perldoc warnings on DOSISH platforms", #F091
+             From:  Molnar Laszlo 
+             Msg-ID:  <34475659.1AA69855@cdata.tvnet.hu>
+             Files:  utils/perldoc.PL
+     Branch: maint-5.004/perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   720] By: TimBunce                              on 1998/03/03  20:03:59
+        Log: Title:  "Make ExtUtils::MM_Unix::fixin() do something meaningful on win32",
+             #F090
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199801070016.TAA17766@aatma.engin.umich.edu>
+             Files:  lib/ExtUtils/MM_Unix.pm
+     Branch: maint-5.004/perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[   719] By: TimBunce                              on 1998/03/03  20:02:06
+        Log: Title:  "Fix inconsistent case $ENV{Path} (vs $ENV{PATH})", #F089
+             From:  Gurusamy Sarathy
+             Files:  lib/FindBin.pm
+     Branch: maint-5.004/perl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[   718] By: TimBunce                              on 1998/03/03  20:00:26
+        Log: Title:  "Fix File::Find's longstanding confusion about win32 being like VMS",
+             #F088
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199802020459.XAA04964@aatma.engin.umich.edu>
+             Files:  lib/File/Find.pm
+     Branch: maint-5.004/perl
+           ! lib/File/Find.pm
+____________________________________________________________________________
+[   717] By: TimBunce                              on 1998/03/03  19:59:38
+        Log: Title:  "do_postponed breaks with multiple interpreters", #F087
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199710290316.WAA15888@aatma.engin.umich.edu>
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   716] By: TimBunce                              on 1998/03/03  19:57:17
+        Log: Title:  "Make warning on C optional, add to perl{diag,delta}.pod",
+             #F086
+             From:  Gurusamy Sarathy
+             Files:  pod/perldelta.pod pod/perldiag.pod toke.c
+     Branch: maint-5.004/perl
+           ! pod/perldelta.pod pod/perldiag.pod toke.c
+____________________________________________________________________________
+[   715] By: TimBunce                              on 1998/03/03  19:51:33
+        Log: Title:  "Pod::Html bug and fix: missing  in index", #F085
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199802192314.SAA23326@aatma.engin.umich.edu>
+             Files:  lib/Pod/Html.pm
+     Branch: maint-5.004/perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[   714] By: TimBunce                              on 1998/03/03  19:50:28
+        Log: Title:  "New pod: perlhist", #F084
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199802191556.RAA09578@alpha.hut.fi>
+             Files:  MANIFEST pod/perl.pod pod/perlhist.pod pod/perltoc.pod pod/buildtoc
+     Branch: maint-5.004/perl
+           + pod/perlhist.pod
+           ! MANIFEST pod/buildtoc pod/perl.pod pod/perltoc.pod
+____________________________________________________________________________
+[   713] By: TimBunce                              on 1998/03/03  19:47:13
+        Log: Title:  "Fix restoration of locals on scope unwinding", #F083
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199802110515.AAA23700@aatma.engin.umich.edu>
+             Files:  pp_ctl.c t/op/local.t
+     Branch: maint-5.004/perl
+           ! pp_ctl.c t/op/local.t
+____________________________________________________________________________
+[   712] By: TimBunce                              on 1998/03/03  19:45:56
+        Log: Title:  "after an eval-ed bad require, requiring a string ref SEGVs", #F082
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199802102349.SAA16001@aatma.engin.umich.edu>
+             Files:  pp_ctl.c
+     Branch: maint-5.004/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   711] By: TimBunce                              on 1998/03/03  19:44:41
+        Log: Title:  "Fix seg fault on eval/require and syntax errors", #F081
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199802102321.SAA15346@aatma.engin.umich.edu>
+             Files:  MANIFEST scope.h op.c pp_ctl.c scope.c t/comp/require.t toke.c
+     Branch: maint-5.004/perl
+           + t/comp/require.t
+           ! MANIFEST op.c pp_ctl.c scope.c scope.h toke.c
+____________________________________________________________________________
+[   710] By: TimBunce                              on 1998/03/03  19:36:34
+        Log: Title:  "5.004_58: the locale.t problem in IRIX", #F080
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199802091747.TAA01735@alpha.hut.fi>
+             Files:  t/pragma/locale.t
+     Branch: maint-5.004/perl
+           ! t/pragma/locale.t
+____________________________________________________________________________
+[   709] By: TimBunce                              on 1998/03/03  19:32:30
+        Log: Title:  "sv_setnv will upgrade SVt_NV to SVt_PVNV", #F079
+             From:  Gisle Aas 
+             Msg-ID:  
+             Files:  sv.c
+     Branch: maint-5.004/perl
+           ! sv.c
+____________________________________________________________________________
+[   708] By: TimBunce                              on 1998/03/03  19:28:06
+        Log: Title:  "Eliminate double warnings under C", #F077
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  gv.c op.c toke.c
+     Branch: maint-5.004/perl
+           ! gv.c op.c toke.c
+____________________________________________________________________________
+[   707] By: TimBunce                              on 1998/03/03  19:13:17
+        Log: Title:  "Fix infinite loop on unlink() failure in File::Path::rmtree()",
+             #F076
+             From:  Murray Nesbitt , Tim Bunce 
+             Msg-ID:  <199802061100.LAA16423@toad.ig.co.uk>
+             Files:  lib/File/Path.pm
+     Branch: maint-5.004/perl
+           ! lib/File/Path.pm
+____________________________________________________________________________
+[   706] By: TimBunce                              on 1998/03/03  19:08:45
+        Log: Title:  "Update of h2ph", #F075
+             From:  kstar@www.chapin.edu (Kurt D. Starsinic)
+             Msg-ID:  <199802051354.FAA11452@www.chapin.edu>
+             Files:  t/lib/ph.t utils/h2ph.PL
+     Branch: maint-5.004/perl
+           + t/lib/ph.t
+           ! utils/h2ph.PL
+____________________________________________________________________________
+[   705] By: TimBunce                              on 1998/03/03  18:56:59
+        Log: Title:  "Fix AutoLoader for deep packages", #F074
+             From:  Zachary Miller 
+             Msg-ID:  <199710092348.SAA02108@zappy.er.usgs.gov>
+             Files:  lib/AutoLoader.pm
+     Branch: maint-5.004/perl
+           ! lib/AutoLoader.pm
+____________________________________________________________________________
+[   704] By: TimBunce                              on 1998/03/03  18:35:36
+        Log: Title:  "Fix order of warnings for misplaced subscripts", #F073
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199710131023.LAA16796@crypt.compulink.co.uk>
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   703] By: TimBunce                              on 1998/03/03  18:32:28
+        Log: Title:  "Make recursive lexical analysis more robust", #F072
+             From:  Ilya Zakharevich and Chip Salzenberg
+             Msg-ID:  <199710160102.VAA28817@monk.mps.ohio-state.edu>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   702] By: TimBunce                              on 1998/03/03  18:18:10
+        Log: Title:  "Fix random whitespace errors in docs", #F070
+             From:  Roderick Schertler 
+             Msg-ID:  <12726.877706444@eeyore.ibcinc.com>
+             Files:  pod/perlfunc.pod pod/checkpods.PL
+     Branch: maint-5.004/perl
+           ! pod/checkpods.PL pod/perlfunc.pod
+____________________________________________________________________________
+[   701] By: TimBunce                              on 1998/03/03  18:13:54
+        Log: Title:  "Fix line numbers after here documents in eval STRING", #F069
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199710241745.NAA08166@monk.mps.ohio-state.edu>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   700] By: TimBunce                              on 1998/03/03  18:11:20
+        Log: Title:  "Fix SEGV from combining caller and C", #F068
+             From:  James Duncan , Nicholas Clark
+             
+             Msg-ID:  <199710241248.NAA00163@flirble.org>,
+             
+             Files:  pp_ctl.c sv.c
+     Branch: maint-5.004/perl
+           ! pp_ctl.c sv.c
+____________________________________________________________________________
+[   699] By: TimBunce                              on 1998/03/03  18:06:59
+        Log: Title:  "Don't fold string comparison under C", #F067
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199711151506.RAA26287@alpha.hut.fi>
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   698] By: TimBunce                              on 1998/03/03  18:04:51
+        Log: Title:  "Fix SEGV on constant at end of sort block", #F066
+             From:  Administration 
+             Msg-ID:  <199711170838.JAA26073@thetis.fi.muni.cz>
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   697] By: TimBunce                              on 1998/03/03  18:02:54
+        Log: Title:  "Allow C to mean C", #F065
+             From:  Chip Salzenberg
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   696] By: TimBunce                              on 1998/03/03  17:58:12
+        Log: Title:  "Fix extension version mismatch message", #F064
+             From:  Chip Salzenberg
+             Files:  XSUB.h
+     Branch: maint-5.004/perl
+           ! XSUB.h
+____________________________________________________________________________
+[   695] By: TimBunce                              on 1998/03/03  17:53:04
+        Log: Title:  "Better handle and test struct tm of Linux and SunOS", #F063
+             From:  Andy Dougherty 
+             Msg-ID:  
+             Files:  MANIFEST ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
+             hints/linux.sh hints/sunos_4_1.sh t/lib/posix.t
+     Branch: maint-5.004/perl
+           + ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
+           ! MANIFEST hints/linux.sh hints/sunos_4_1.sh t/lib/posix.t
+____________________________________________________________________________
+[   694] By: TimBunce                              on 1998/03/03  17:40:47
+        Log: Title:  "Fix doc bug in getservbyname() examples", #F062
+             From:  Tom Christiansen
+             Files:  ext/Socket/Socket.pm
+     Branch: maint-5.004/perl
+           ! ext/Socket/Socket.pm
+____________________________________________________________________________
+[   693] By: TimBunce                              on 1998/03/03  17:32:57
+        Log: Title:  "Kill warning about parameter type", #F061
+             From:  Chip Salzenberg
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   692] By: TimBunce                              on 1998/03/03  17:11:07
+        Log: Title:  "Socket occasional SEGV", #F060
+             From:  Trevor Blackwell 
+             Msg-ID:  <199710281804.NAA09632@wagg.viaweb.com>
+             Files:  ext/Socket/Socket.xs
+     Branch: maint-5.004/perl
+           ! ext/Socket/Socket.xs
+____________________________________________________________________________
+[   691] By: TimBunce                              on 1998/03/03  17:09:51
+        Log: Title:  "Avoid SEGV from local($@)", #F059
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199710290251.VAA14362@aatma.engin.umich.edu>
+             Files:  pp_ctl.c
+     Branch: maint-5.004/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   690] By: TimBunce                              on 1998/03/03  17:08:21
+        Log: Title:  "Don't use broken pad_reset() (was Re: Perl bug in 5.004_03 )", #F058
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199710300036.TAA01004@aatma.engin.umich.edu>
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   689] By: TimBunce                              on 1998/03/03  17:05:57
+        Log: Title:  "Use STMT_{START,END} in XSRETURN", #F057
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199710300245.VAA04244@aatma.engin.umich.edu>
+             Files:  XSUB.h
+     Branch: maint-5.004/perl
+           ! XSUB.h
+____________________________________________________________________________
+[   688] By: TimBunce                              on 1998/03/03  17:04:15
+        Log: Title:  "Re: Sort grammar bug", #F056
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199711011946.OAA18882@aatma.engin.umich.edu>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   687] By: TimBunce                              on 1998/03/03  17:01:32
+        Log: Title:  "Document indirect object cases for exec(), system()", #F055
+             From:  Dominic Dunlop 
+             Msg-ID:  
+             Files:  pod/perlfunc.pod
+     Branch: maint-5.004/perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[   686] By: TimBunce                              on 1998/03/03  16:56:44
+        Log: Title:  "Update docs on tr///", #F054
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
+             pod/perllocale.pod pod/perlmod.pod pod/perlop.pod
+             pod/perlstyle.pod toke.c
+     Branch: maint-5.004/perl
+	   ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
+	   ! pod/perllocale.pod pod/perlmod.pod pod/perlop.pod
+           ! pod/perlstyle.pod toke.c
+____________________________________________________________________________
+[   685] By: TimBunce                              on 1998/03/03  16:38:50
+        Log: Title:  "Re: perlop bitwise & | ^ documentation", #F053
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Files:  pod/perlop.pod
+     Branch: maint-5.004/perl
+           ! pod/perlop.pod
+____________________________________________________________________________
+[   684] By: TimBunce                              on 1998/03/03  16:37:00
+        Log: Title:  "Fix SEGV on C<*glob{'SCALAR','ARRAY'}>", #F052
+             From:  "Joseph N. Hall" 
+             Msg-ID:  <199711110552.WAA12613@gadget.cscaper.com>
+             Files:  perly.c perly.c.diff perly.y vms/perly_c.vms
+     Branch: maint-5.004/perl
+           ! perly.c perly.c.diff perly.y vms/perly_c.vms
+____________________________________________________________________________
+[   683] By: TimBunce                              on 1998/03/03  16:31:15
+        Log: Title:  "for perlguts.pod: document sv_derived_from, sv_vcatpfn and
+             sv_vsetpfn", #F051
+             From:  jan.dubois@ibm.net (Jan Dubois) and Chip Salzenberg
+             Msg-ID:  <346ae970.7444534@smtp1.ibm.net>
+             Files:  pod/perlguts.pod
+     Branch: maint-5.004/perl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[   682] By: TimBunce                              on 1998/03/03  16:28:30
+        Log: Title:  "5.004_04: locale startup failure (at last) documented", #F050
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199711172054.WAA08261@alpha.hut.fi>
+             Files:  INSTALL pod/perldiag.pod pod/perllocale.pod
+     Branch: maint-5.004/perl
+           ! INSTALL pod/perldiag.pod pod/perllocale.pod
+____________________________________________________________________________
+[   681] By: TimBunce                              on 1998/03/03  16:24:12
+        Log: Title:  "Cope with lack of args in Fcntl::AUTOLOAD", #F049
+             From:  Jerome Abela 
+             Msg-ID:  <19971120183248.23588@coredump.hsc.fr>
+             Files:  ext/Fcntl/Fcntl.pm
+     Branch: maint-5.004/perl
+           ! ext/Fcntl/Fcntl.pm
+____________________________________________________________________________
+[   680] By: TimBunce                              on 1998/03/03  16:23:20
+        Log: Title:  "Commenting toke.c", #F048
+             From:  gnat@frii.com
+             Msg-ID:  <199801082138.OAA14186@prometheus.frii.com>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   679] By: TimBunce                              on 1998/03/03  16:18:32
+        Log: Title:  "Re: 5.004_04 vec() fails with 32-bit values", #F047
+             From:  "M.J.T. Guy" 
+             Msg-ID:  
+             Files:  pod/perlguts.pod pp.c t/op/vec.t
+     Branch: maint-5.004/perl
+           ! pod/perlguts.pod pp.c t/op/vec.t
+____________________________________________________________________________
+[   678] By: TimBunce                              on 1998/03/03  16:15:44
+        Log: Title:  "A few perl5.004_03 bugs", #F046
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199801221211.MAA05315@crypt.compulink.co.uk>
+             Files:  mg.c t/op/magic.t
+     Branch: maint-5.004/perl
+           ! mg.c t/op/magic.t
+____________________________________________________________________________
+[   677] By: TimBunce                              on 1998/03/03  16:13:11
+        Log: Title:  "Faster, cleaner av_unshift() ", #F045
+             From:  Gisle Aas 
+             Msg-ID:  <199801221850.TAA23111@furu.g.aas.no>
+             Files:  av.c
+     Branch: maint-5.004/perl
+           ! av.c
+____________________________________________________________________________
+[   676] By: TimBunce                              on 1998/03/03  16:04:30
+        Log: Title:  "New hints/solaris2.sh", #F044
+             From:  Stephen Zander 
+             Msg-ID:  <87oh12y458.fsf@wsuse5.mckesson.com>
+             Files:  hints/solaris_2.sh
+     Branch: maint-5.004/perl
+           ! hints/solaris_2.sh
+____________________________________________________________________________
+[   675] By: TimBunce                              on 1998/03/03  15:33:07
+        Log: Title:  "Refresh Complex.pm and test", #F043
+             From:  Jarkko Hietaniemi 
+             Msg-ID:  <199802051608.SAA20262@alpha.hut.fi>
+             Files:  lib/Math/Complex.pm t/lib/complex.t
+     Branch: maint-5.004/perl
+           ! lib/Math/Complex.pm t/lib/complex.t
+____________________________________________________________________________
+[   674] By: TimBunce                              on 1998/03/03  15:29:16
+        Log: Title:  "Fix (\@@) proto", #F042
+             From:  "Joseph N. Hall" 
+             Msg-ID:  <199801240132.SAA25111@gadget.cscaper.com>
+             Files:  op.c t/comp/proto.t
+     Branch: maint-5.004/perl
+           ! op.c t/comp/proto.t
+____________________________________________________________________________
+[   673] By: TimBunce                              on 1998/03/03  15:26:31
+        Log: Title:  "Allow empty BLOCK in code", #F041
+             From:  Vladimir Alexiev 
+             Msg-ID:  <19980129002112Z13378-6931+226@scapa.cs.ualberta.ca>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   672] By: TimBunce                              on 1998/03/03  15:23:55
+        Log: Title:  "Fix name of $Foo::{'Bar::'}: '*Foo::Bar::'", #F040
+             From:  Chip Salzenberg
+             Files:  gv.c t/op/gv.t
+     Branch: maint-5.004/perl
+           ! gv.c t/op/gv.t
+____________________________________________________________________________
+[   671] By: TimBunce                              on 1998/03/03  10:02:32
+        Log: Title:  "Keep accurate reference count on globs' stashes", #F038
+             From:  Gisle Aas 
+             Msg-ID:  
+             Files:  gv.c sv.c
+     Branch: maint-5.004/perl
+           ! gv.c sv.c
+____________________________________________________________________________
+[   670] By: TimBunce                              on 1998/03/03  09:59:48
+        Log: Title:  "Avoid memory allocation in gv_fetchpv(), for speed", #F037
+             From:  Chip Salzenberg
+             Files:  gv.c
+     Branch: maint-5.004/perl
+           ! gv.c
+____________________________________________________________________________
+[   669] By: TimBunce                              on 1998/03/03  09:58:58
+        Log: Title:  "Make Configure less negative about PerlIO", #F036
+             From:  chip@atlantic.net
+             Msg-ID:  <199801312323.SAA15237@cyprus.atlantic.net>
+             Files:  Configure
+     Branch: maint-5.004/perl
+           ! Configure
+____________________________________________________________________________
+[   668] By: TimBunce                              on 1998/03/03  09:55:51
+        Log: Title:  "Fix (mostly) pseudo-same-REs due to embedded NULs", #F035
+             From:  Martin Plechsmid 
+             Msg-ID:  <199802021217.NAA05230@albert.karlin.mff.cuni.cz>
+             Files:  pp_ctl.c
+     Branch: maint-5.004/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   667] By: TimBunce                              on 1998/03/03  09:52:59
+        Log: Title:  "Make Getopt::Long avoid $&, $`, $'", #F034
+             From:  Irving Reid 
+             Msg-ID:  <98Feb3.005102est.11655@janus.tor.securecomputing.com>
+             Files:  lib/Getopt/Long.pm
+     Branch: maint-5.004/perl
+           ! lib/Getopt/Long.pm
+____________________________________________________________________________
+[   666] By: TimBunce                              on 1998/03/03  09:51:27
+        Log: Title:  "adding the newSVpvn API function", #F033
+             From:  Matthias Ulrich Neeracher 
+             Msg-ID:  <199801310532.GAA23798@solar.ethz.ch>
+             Files:  pod/perlguts.pod pod/perltoc.pod proto.h global.sym sv.c
+     Branch: maint-5.004/perl
+           ! global.sym pod/perlguts.pod pod/perltoc.pod proto.h sv.c
+____________________________________________________________________________
+[   665] By: TimBunce                              on 1998/03/03  09:43:30
+        Log: Title:  "Support C as function-blind bearword", #F032
+             From:  Chip Salzenberg
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   664] By: TimBunce                              on 1998/03/03  09:41:40
+        Log: Title:  "Re-optimize character classes", #F031
+             From:  Chip Salzenberg
+             Files:  regcomp.h regcomp.c regexec.c
+     Branch: maint-5.004/perl
+           ! regcomp.c regcomp.h regexec.c
+____________________________________________________________________________
+[   663] By: TimBunce                              on 1998/03/03  09:39:55
+        Log: Title:  "Fix C which needed ENTER/LEAVE", #F030
+             From:  dfh@dwroll.lucent.com (D461-David_F_Haertig(Dave)83040)
+             Msg-ID:  
+             Files:  op.c t/op/local.t
+     Branch: maint-5.004/perl
+           ! op.c t/op/local.t
+____________________________________________________________________________
+[   662] By: TimBunce                              on 1998/03/03  09:37:51
+        Log: Title:  "Dramatically improve performance of // with parens or $&", #F029
+             From:  Chip Salzenberg
+             Files:  cop.h perl.h proto.h regexp.h gv.c interp.sym perl.c pp.c pp_ctl.c
+             pp_hot.c regexec.c scope.c
+     Branch: maint-5.004/perl
+	   ! cop.h gv.c interp.sym perl.c perl.h pp.c pp_ctl.c pp_hot.c
+           ! proto.h regexec.c regexp.h scope.c
+____________________________________________________________________________
+[   661] By: TimBunce                              on 1998/03/03  09:27:04
+        Log: Title:  "Don't warn on $x{shift}, ne => 1, or -f => 1", #F028
+             From:  Chip Salzenberg
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   660] By: TimBunce                              on 1998/03/03  09:24:41
+        Log: Title:  "Protect against weirdness with unreal @_ in C", #F027
+             From:  Chip Salzenberg
+             Files:  scope.c
+     Branch: maint-5.004/perl
+           ! scope.c
+____________________________________________________________________________
+[   659] By: TimBunce                              on 1998/03/03  09:24:00
+        Log: Title:  "Fix C", #F026
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199711021331.NAA01826@crypt.compulink.co.uk>
+             Files:  sv.c t/op/sprintf.t
+     Branch: maint-5.004/perl
+           ! sv.c t/op/sprintf.t
+____________________________________________________________________________
+[   658] By: TimBunce                              on 1998/03/03  09:22:13
+        Log: Title:  "Tiny core patch for source filters", #F025
+             From:  pmarquess@bfsec.bt.co.uk (Paul Marquess)
+             Msg-ID:  <9711202312.AA02937@claudius.bfsec.bt.co.uk>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   657] By: TimBunce                              on 1998/03/03  09:20:00
+        Log: Title:  "Here-doc in s///e (was: Bug)", #F024
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199711221445.OAA14153@crypt.compulink.co.uk>
+             Files:  t/base/lex.t toke.c
+     Branch: maint-5.004/perl
+           ! t/base/lex.t toke.c
+____________________________________________________________________________
+[   656] By: TimBunce                              on 1998/03/03  09:17:56
+        Log: Title:  "Fix duplicate warnings on C<-e undef>", #F023
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199711221252.MAA14000@crypt.compulink.co.uk>
+             Files:  doio.c t/pragma/warn-1global
+     Branch: maint-5.004/perl
+           ! doio.c t/pragma/warn-1global
+____________________________________________________________________________
+[   655] By: TimBunce                              on 1998/03/03  09:16:56
+        Log: Title:  "Fix '*' prototype", #F022
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199711212225.RAA00755@monk.mps.ohio-state.edu>
+             Files:  toke.c
+     Branch: maint-5.004/perl
+           ! toke.c
+____________________________________________________________________________
+[   654] By: TimBunce                              on 1998/03/03  09:15:04
+        Log: Title:  "File::Find bugs (and patches)", "File::Find bugs & patches", #F021
+             From:  "Conrad E. Kimball" 
+             Msg-ID:  <199711260703.XAA21257@mailgate2.boeing.com>
+             Files:  lib/File/Find.pm
+     Branch: maint-5.004/perl
+           ! lib/File/Find.pm
+____________________________________________________________________________
+[   653] By: TimBunce                              on 1998/03/03  09:11:55
+        Log: Title:  "Fix typo: FORM{,AT}LINE", #F020
+             From:  Chip Salzenberg
+             Files:  sv.c
+     Branch: maint-5.004/perl
+           ! sv.c
+____________________________________________________________________________
+[   652] By: TimBunce                              on 1998/03/03  09:07:50
+        Log: Title:  "Fix use of unref mem when blessed object goes out of scope", #F019
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199711282326.SAA15090@aatma.engin.umich.edu>
+             Files:  scope.c
+     Branch: maint-5.004/perl
+           ! scope.c
+____________________________________________________________________________
+[   651] By: TimBunce                              on 1998/03/03  09:07:10
+        Log: Title:  "Fix C", #F018
+             From:  Stephane Payrard 
+             Msg-ID:  <199712040054.BAA04612@www.zweig.com>
+             Files:  op.c t/op/my.t
+     Branch: maint-5.004/perl
+           ! op.c t/op/my.t
+____________________________________________________________________________
+[   650] By: TimBunce                              on 1998/03/03  09:04:04
+        Log: Title:  "enhanced "use strict" warning", #F017
+             From:  Tkil 
+             Msg-ID:  <199712040938.CAA07628@reptile.scrye.com>
+             Files:  gv.c t/pragma/strict-subs t/pragma/strict-vars
+     Branch: maint-5.004/perl
+           ! gv.c t/pragma/strict-subs t/pragma/strict-vars
+____________________________________________________________________________
+[   649] By: TimBunce                              on 1998/03/03  09:02:55
+        Log: Title:  "eval of sub gives spurious "uninitialised" warning", #F016
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199712061025.FAA14396@aatma.engin.umich.edu>
+             Files:  pod/perldelta.pod pod/perlfunc.pod op.c t/op/eval.t
+     Branch: maint-5.004/perl
+           ! op.c pod/perldelta.pod pod/perlfunc.pod t/op/eval.t
+____________________________________________________________________________
+[   648] By: TimBunce                              on 1998/03/03  08:58:00
+        Log: Title:  "[PERL] Assigning result of pop scrambles unrelated reference", #F015
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199712061100.GAA14864@aatma.engin.umich.edu>
+             Files:  sv.c
+     Branch: maint-5.004/perl
+           ! sv.c
+____________________________________________________________________________
+[   647] By: TimBunce                              on 1998/03/03  08:53:35
+        Log: Title:  "[PERL] Filedescriptor leak in 5.004_55 (and earlier)", #F014
+             From:  Ilya Zakharevich 
+             Msg-ID:  <199712151922.OAA06410@monk.mps.ohio-state.edu>
+             Files:  os2/os2.c util.c
+     Branch: maint-5.004/perl
+           ! os2/os2.c util.c
+____________________________________________________________________________
+[   646] By: TimBunce                              on 1998/03/03  08:51:04
+        Log: Title:  "Fix fdopen() on STD{IN,OUT,ERR}", #F013
+             From:  Roderick Schertler 
+             Msg-ID:  
+             Files:  doio.c t/op/misc.t
+     Branch: maint-5.004/perl
+           ! doio.c t/op/misc.t
+____________________________________________________________________________
+[   645] By: TimBunce                              on 1998/03/03  08:49:34
+        Log: Title:  "Fix local $a[0] and local $h{a}", #F012
+             From:  Stephen McCamant 
+             Msg-ID:  
+             Files:  embed.h scope.h global.sym pp.c pp_hot.c scope.c t/op/local.t
+     Branch: maint-5.004/perl
+           ! embed.h global.sym pp.c pp_hot.c scope.c scope.h t/op/local.t
+____________________________________________________________________________
+[   644] By: TimBunce                              on 1998/03/03  08:43:06
+        Log: Title:  "Eliminate redundant mg_get() in SvTRUE()", #F011
+             From:  Spider Boardman 
+             Msg-ID:  <199712251839.NAA14800@Orb.Nashua.NH.US>
+             Files:  sv.c
+     Branch: maint-5.004/perl
+           ! sv.c
+____________________________________________________________________________
+[   643] By: TimBunce                              on 1998/03/03  08:41:07
+        Log: Title:  "Don't force scalar context on C or C", #F010
+             From:  Chip Salzenberg
+             Files:  op.c t/op/my.t
+     Branch: maint-5.004/perl
+           ! op.c t/op/my.t
+____________________________________________________________________________
+[   642] By: TimBunce                              on 1998/03/03  08:39:11
+        Log: Title:  "Fix assignment to $_[0] in DESTROY", #F009
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199801010030.TAA14274@aatma.engin.umich.edu>
+             Files:  pod/perlobj.pod sv.c t/op/ref.t
+     Branch: maint-5.004/perl
+           ! pod/perlobj.pod sv.c t/op/ref.t
+____________________________________________________________________________
+[   641] By: gsar                                  on 1998/03/03  04:39:49
+        Log: merge problematic maintpatch to op.c
+             #77:  "Eliminate double warnings under C"
+             From:  Chip Salzenberg
+             Files:  gv.c op.c toke.c
+     Branch: win32/perl
+           ! gv.c op.c toke.c
+____________________________________________________________________________
+[   640] By: gsar                                  on 1998/03/03  04:30:22
+        Log: merge another conflicting maintpatch to op.c
+             #17:  "Enhanced "use strict" warning"
+             From:  Tkil 
+             Msg-ID:  <199712040938.CAA07628@reptile.scrye.com>
+             Date:  Thu, 4 Dec 1997 02:38:26 -0700
+             Files:  gv.c t/pragma/strict-subs t/pragma/strict-vars
+     Branch: win32/perl
+           ! gv.c t/pragma/strict-subs t/pragma/strict-vars
+____________________________________________________________________________
+[   639] By: gsar                                  on 1998/03/03  04:09:11
+        Log: maintpatch
+             #73:  "Fix order of warnings for misplaced subscripts"
+             From:  Hugo van der Sanden 
+             Msg-ID:  <199710131023.LAA16796@crypt.compulink.co.uk>
+             Date:  Mon, 13 Oct 1997 11:23:56 +0100
+             Files:  op.c
+     Branch: win32/perl
+           ! op.c
+____________________________________________________________________________
+[   638] By: gsar                                  on 1998/03/03  04:02:16
+        Log: manually apply another conflicting maintpatch
+             #64:  "Fix extension version mismatch message"
+             From:  Chip Salzenberg
+             Files:  XSUB.h
+     Branch: win32/perl
+           ! XSUB.h
+____________________________________________________________________________
+[   637] By: gsar                                  on 1998/03/03  03:57:08
+        Log: maintpatch
+             #62:  "Fix doc bug in getservbyname() examples"
+             From:  Tom Christiansen
+             Files:  ext/Socket/Socket.pm
+     Branch: win32/perl
+           ! ext/Socket/Socket.pm
+____________________________________________________________________________
+[   636] By: gsar                                  on 1998/03/03  03:55:13
+        Log: maintpatch
+             #60:  "Socket occasional SEGV"
+             From:  Trevor Blackwell 
+             Msg-ID:  <199710281804.NAA09632@wagg.viaweb.com>
+             Date:  Tue, 28 Oct 1997 13:04:43 -0500 (EST)
+             Files:  ext/Socket/Socket.xs
+     Branch: win32/perl
+           ! ext/Socket/Socket.xs
+____________________________________________________________________________
+[   635] By: gsar                                  on 1998/03/03  03:51:01
+        Log: maintpatches for docs
+             #53:  "Perlop bitwise & | ^ documentation"
+             From:  Tom Phoenix 
+             Msg-ID:  
+             Msg-ID:  
+             Message-Id: <199801221211.MAA05315@crypt.compulink.co.uk>
+             Date: Thu, 22 Jan 1998 12:11:49 +0000
+             Subject: Re: [PERL] A few perl5.004_03 bugs 
+     Branch: win32/perl
+           ! mg.c t/op/magic.t
+____________________________________________________________________________
+[   633] By: gsar                                  on 1998/03/03  03:36:40
+        Log: merge another toke.c patch and its dependent (very carefully)
+             #32:  "Support C as function-blind bearword"
+             From:  Chip Salzenberg
+             Files:  toke.c
+             --------
+             #86:  "Make warning on C optional, add to perl{diag,delta}.pod"
+             From:  Gurusamy Sarathy
+             Files:  toke.c pod/perldelta.pod pod/perldiag.pod
+     Branch: win32/perl
+           ! pod/perldelta.pod pod/perldiag.pod toke.c
+____________________________________________________________________________
+[   632] By: gsar                                  on 1998/03/03  03:12:16
+        Log: another toke.c maintpatch
+             #28:  "Don't warn on $x{shift}, ne => 1, or -f => 1"
+             From:  Chip Salzenberg
+             Files:  toke.c
+     Branch: win32/perl
+           ! toke.c
+____________________________________________________________________________
+[   631] By: gsar                                  on 1998/03/03  03:06:59
+        Log: still another maintpatch
+             From: Hugo van der Sanden 
+             Message-Id: <199711021331.NAA01826@crypt.compulink.co.uk>
+             Date: Sun, 02 Nov 1997 13:31:54 +0000
+             Subject: [PATCH] assorted sprintf bugs
+     Branch: win32/perl
+           ! sv.c t/op/sprintf.t
+____________________________________________________________________________
+[   630] By: gsar                                  on 1998/03/03  03:03:55
+        Log: yet another maintpatch
+             From: Hugo van der Sanden 
+             Message-Id: <199711221252.MAA14000@crypt.compulink.co.uk>
+             Date: Sat, 22 Nov 1997 12:52:16 +0000
+             Subject: Re: [PERL] Unexpected output 
+     Branch: win32/perl
+           ! doio.c t/pragma/warn-1global
+____________________________________________________________________________
+[   629] By: gsar                                  on 1998/03/03  02:57:33
+        Log: merge another maintpatch to toke.c
+             From: Hugo van der Sanden 
+             Date: Sat, 22 Nov 1997 14:45:23 GMT
+             Message-Id: <199711221445.OAA14153@crypt.compulink.co.uk>
+             Subject: Re: [PERL] Here-doc in s///e (was: Bug)
+     Branch: win32/perl
+           ! t/base/lex.t toke.c
+____________________________________________________________________________
+[   628] By: gsar                                  on 1998/03/03  02:50:20
+        Log: manually merge a maintpatch
+             Date: Thu, 8 Jan 1998 14:38:04 -0700 (MST)
+             Message-Id: <199801082138.OAA14186@prometheus.frii.com>
+             From: gnat@frii.com
+             Subject: [PERL] Commenting toke.c
+     Branch: win32/perl
+           ! toke.c
+____________________________________________________________________________
+[   627] By: TimBunce                              on 1998/03/02  22:34:47
+        Log: Title:  "Fix inefficient checks for TIEHANDLE", #F008
+             From:  Gurusamy Sarathy 
+             Msg-ID:  <199801080106.UAA05048@aatma.engin.umich.edu>
+             Files:  pp_hot.c pp_sys.c
+     Branch: maint-5.004/perl
+           ! pp_hot.c pp_sys.c
+____________________________________________________________________________
+[   626] By: TimBunce                              on 1998/03/02  22:31:13
+        Log: This is the change description for change 625
+             Title:  "Fix tr///s option", #F007
+             From:  Inaba Hiroto 
+             Msg-ID:  <19980110155333D.inaba@st.rim.or.jp>
+             Files:  doop.c
+     Branch: maint-5.004/perl
+           ! doop.c
+____________________________________________________________________________
+[   625] By: TimBunce                              on 1998/03/02  22:23:48
+        Log:      Branch: maint-5.004/perl
+           ! doop.c
+____________________________________________________________________________
+[   623] By: TimBunce                              on 1998/03/02  21:51:53
+        Log: Title:  "Fix lexical lookup in eval-sub-eval", #F006
+             From:  Chip Salzenberg
+             Files:  pp_ctl.c
+     Branch: maint-5.004/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   622] By: TimBunce                              on 1998/03/02  21:43:29
+        Log: Title:  "Don't upgrade target of assignment from LVALUE", #F005
+             From:  Chip Salzenberg
+             Files:  sv.c
+     Branch: maint-5.004/perl
+           ! sv.c
+____________________________________________________________________________
+[   621] By: TimBunce                              on 1998/03/02  21:29:59
+        Log: Title:  "Fix compile-time warning line in while ()", #F004
+             From:  Chip Salzenberg
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   620] By: TimBunce                              on 1998/03/02  21:25:27
+        Log: Title:  "STMT foreach LIST;", #F002
+             From:  Chip Salzenberg
+             Files:  pod/perlsyn.pod perly.c perly.c.diff perly.y t/cmd/mod.t toke.c
+             vms/perly_c.vms
+     Branch: maint-5.004/perl
+	   ! perly.c perly.c.diff perly.y pod/perlsyn.pod t/cmd/mod.t
+           ! toke.c vms/perly_c.vms
+____________________________________________________________________________
+[   619] By: TimBunce                              on 1998/03/02  21:12:58
+        Log: Title:  "Fix SIGSEGV on C<42 until forever>", #F001
+             From:  Chip Salzenberg
+             Files:  op.c
+     Branch: maint-5.004/perl
+           ! op.c
+____________________________________________________________________________
+[   618] By: gsar                                  on 1998/03/02  04:40:16
+        Log: make t/lib/nothread.t type xtext also
+     Branch: win32/perl
+           ! t/op/nothread.t
+____________________________________________________________________________
+[   617] By: gsar                                  on 1998/03/02  04:35:15
+        Log: make t/lib/thread.t type xtext
+     Branch: win32/perl
+           ! t/lib/thread.t
+____________________________________________________________________________
+[   616] By: gsar                                  on 1998/03/02  04:17:40
+        Log: fix misapplied hunks in change#614
+     Branch: win32/perl
+           ! scope.c scope.h
+____________________________________________________________________________
+[   615] By: gsar                                  on 1998/03/02  03:39:16
+        Log: another one down
+             From: "Conrad E. Kimball" 
+             Message-Id: <199711260703.XAA21257@mailgate2.boeing.com>
+             Date: Tue, 25 Nov 1997 23:03:48 -0800
+             Subject: [PERL] File::Find bugs & patches
+     Branch: win32/perl
+           ! lib/File/Find.pm
+____________________________________________________________________________
+[   614] By: gsar                                  on 1998/03/02  03:28:28
+        Log: this one with adjusted test numbers
+             Message-Id: 
+             Date: Sat, 20 Dec 1997 15:16:14 -0600 (CST)
+             From: Stephen McCamant 
+             Subject: [PERL] [PATCH] Fix local $a[0] and local $h{a}
+     Branch: win32/perl
+           ! embed.h global.sym pp.c pp_hot.c scope.c scope.h t/op/local.t
+____________________________________________________________________________
+[   613] By: gsar                                  on 1998/03/02  03:13:32
+        Log: still another
+             From: Inaba Hiroto 
+             Subject: [PERL] tr///s bug
+             Message-Id: <19980110155333D.inaba@st.rim.or.jp>
+             Date: Sat, 10 Jan 1998 15:53:33 +0900
+     Branch: win32/perl
+           ! doop.c t/op/subst.t
+____________________________________________________________________________
+[   612] By: gsar                                  on 1998/03/02  03:01:27
+        Log: yet another patch
+             From: Chip Salzenberg 
+             Message-Id: <199709161748.NAA08418@nielsenmedia.com>
+             Subject: Tiny but massively cool:  C
+             Date: Tue, 16 Sep 1997 13:47:28 -0400 (EDT)
+     Branch: win32/perl
+	   ! perly.c perly.c.diff perly.y pod/perlsyn.pod t/cmd/mod.t
+           ! toke.c vms/perly_c.vms
+____________________________________________________________________________
+[   611] By: gsar                                  on 1998/03/02  01:52:46
+        Log: yet another 'old' patch
+             From: Stephane Payrard 
+             Message-Id: <199712040054.BAA04612@www.zweig.com>
+             To: perl5-porters@perl.org
+             Subject: Re: [PERL] buglet : minor but gratuitous inconsistency
+             between `my' and `local' (Patch included)
+     Branch: win32/perl
+           ! op.c t/op/my.t
+____________________________________________________________________________
+[   610] By: gsar                                  on 1998/03/02  01:45:55
+        Log: another 'old' patch
+             From: Roderick Schertler 
+             Date: 19 Dec 1997 12:52:36 -0500
+             Message-Id: 
+             Subject: [PERL] [PATCH] Re: Problem with open >&=
+     Branch: win32/perl
+           ! doio.c t/op/misc.t
+____________________________________________________________________________
+[   609] By: gsar                                  on 1998/03/02  01:23:56
+        Log: apply missing pieces from:
+             From: Chip Salzenberg 
+             Message-Id: <199711272044.PAA12102@nielsenmedia.com>
+             Subject: [PATCH] Improved LVALUE patch
+             Date: Thu, 27 Nov 1997 15:44:02 -0500 (EST)
+     Branch: win32/perl
+           ! sv.c
+____________________________________________________________________________
+[   608] By: gsar                                  on 1998/03/02  01:13:01
+        Log: merge two important 'old' patches
+             From: Chip Salzenberg 
+             Message-Id: <199709241632.MAA09164@nielsenmedia.com>
+             Subject: [PATCH]  Fix C<42 until forever> SIGSEGV
+             Date: Wed, 24 Sep 1997 12:32:11 -0400 (EDT)
+             ------
+             From: Chip Salzenberg 
+             Message-Id: <199710221332.JAA04814@nielsenmedia.com>
+             Subject: [PATCH] Fix for compile-time while() warnings
+             Date: Wed, 22 Oct 1997 09:31:50 -0400 (EDT)
+     Branch: win32/perl
+           ! op.c
+____________________________________________________________________________
+[   607] By: gsar                                  on 1998/03/01  06:52:26
+        Log: integrate mainline changes
+     Branch: asperl
+	  +> Policy_sh.SH Porting/config.sh Porting/config_H atomic.h
+          +> lib/Tie/Handle.pm t/op/tiehandle.t
+           - config_H
+          !> (integrate 89 files)
+____________________________________________________________________________
+[   606] By: gsar                                  on 1998/02/28  23:11:00
+        Log: misc small tweaks
+             - AutoLoader fix for long::pack::names
+             - d_mymalloc can be set from makefiles now
+             - make search.pl actually work on win32
+             - revert podoc about $^E on OS/2 (per Ilya's wishes)
+     Branch: win32/perl
+	   ! lib/AutoLoader.pm pod/perlvar.pod win32/Makefile
+           ! win32/bin/search.pl win32/makefile.mk win32/win32.c
+____________________________________________________________________________
+[   605] By: gsar                                  on 1998/02/28  22:16:45
+        Log: fix typo in sv.h, and run 'make regen_headers' to make it build
+     Branch: win32/perl
+           ! embedvar.h sv.h
+____________________________________________________________________________
+[   604] By: gsar                                  on 1998/02/28  21:08:58
+        Log: integrate mainline
+     Branch: win32/perl
+          +> Policy_sh.SH atomic.h lib/Tie/Handle.pm t/op/tiehandle.t
+	  !> Configure MANIFEST Makefile.SH bytecode.h bytecode.pl
+	  !> byterun.c ext/SDBM_File/Makefile.PL
+	  !> ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/sdbm.h
+	  !> lib/ExtUtils/MM_VMS.pm os2/diff.configure os2/os2.c perl.c
+	  !> perlvars.h pod/perltie.pod pp_sys.c sv.c sv.h t/lib/anydbm.t
+	  !> t/lib/sdbm.t util.c vms/descrip.mms vms/perlvms.pod
+          !> vms/test.com win32/makedef.pl
+____________________________________________________________________________
+[   603] By: nick                                  on 1998/02/28  11:31:15
+        Log: Missed FREAD in bytecode.h
+             Cannot export svref_mutex in non-threaded perl
+     Branch: perl
+           ! bytecode.h win32/makedef.pl
+
+----------------
+Version 5.004_61
+----------------
+
+____________________________________________________________________________
+[   602] By: mbeattie                              on 1998/02/27  18:35:27
+        Log: Change FREAD/FGETC to BGET_FREAD/BGET_FGETC to avoid clash with
+             preprocessor symbol on Digital UNIX.
+     Branch: perl
+           ! bytecode.h bytecode.pl byterun.c
+____________________________________________________________________________
+[   601] By: mbeattie                              on 1998/02/27  18:27:00
+        Log: Fix stupid ATOMIC_DEC_AND_TEST typo in sv.h.
+     Branch: perl
+           ! sv.h
+____________________________________________________________________________
+[   600] By: mbeattie                              on 1998/02/27  18:15:07
+        Log: Add atomic.h to MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   599] By: mbeattie                              on 1998/02/27  18:13:52
+        Log: Integrate win32 branch into mainline.
+     Branch: perl
+           ! bytecode.pl
+	  !> bytecode.h byterun.c byterun.h dosish.h embed.h embedvar.h
+	  !> ext/B/B.xs ext/B/Makefile.PL global.sym perl.h sv.c
+	  !> win32/Makefile win32/bin/pl2bat.pl win32/config.bc
+	  !> win32/config.gc win32/config.vc win32/config_H.bc
+	  !> win32/config_H.gc win32/config_H.vc win32/config_h.PL
+	  !> win32/makedef.pl win32/makefile.mk win32/win32.c win32/win32.h
+          !> win32/win32thread.h
+____________________________________________________________________________
+[   598] By: mbeattie                              on 1998/02/27  18:06:41
+        Log: Make refcounts atomic for threading (dependent on appropriate
+             arch-dependent and compiler-dependent definitions in atomic.h
+             or else falls back to a global mutex to protect refcounts).
+     Branch: perl
+           + atomic.h
+           ! global.sym perl.c perlvars.h sv.c sv.h
+____________________________________________________________________________
+[   597] By: mbeattie                              on 1998/02/27  15:37:22
+        Log: Tiehandle stuff in change 595 didn't add to MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   596] By: mbeattie                              on 1998/02/27  15:34:55
+        Log: Missed adding new file Policy_sh.SH in change 592.
+     Branch: perl
+           + Policy_sh.SH
+____________________________________________________________________________
+[   595] By: mbeattie                              on 1998/02/27  15:34:06
+        Log: Subject: [PATCH] _60 & _04 - Add WRITE & CLOSE to TIEHANDLE
+             Date: Fri, 27 Feb 1998 04:15:04 +0000
+             From: Graham Barr 
+     Branch: perl
+           + lib/Tie/Handle.pm t/op/tiehandle.t
+           ! pod/perltie.pod pp_sys.c
+____________________________________________________________________________
+[   594] By: mbeattie                              on 1998/02/27  15:31:12
+        Log: From: Dan Sugalski 
+             Subject: [PATCH 5.004_60] Fix to MM_VMS.PM
+             Date: Thu, 26 Feb 1998 11:09:55 -0800
+             Subject: [PATCH 5.004_60] Get SDBM_File working on VMS
+             Date: Thu, 26 Feb 1998 11:15:24 -0800
+     Branch: perl
+	   ! ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL
+	   ! ext/SDBM_File/sdbm/sdbm.h lib/ExtUtils/MM_VMS.pm
+	   ! t/lib/anydbm.t t/lib/sdbm.t vms/descrip.mms vms/perlvms.pod
+           ! vms/test.com
+____________________________________________________________________________
+[   593] By: mbeattie                              on 1998/02/27  15:26:45
+        Log: Fix file-descriptor leak when pipes fail via taint checks:
+             Subject: [PATCH] Some patches went through cracks
+             Date: Thu, 26 Feb 1998 02:47:46 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! os2/os2.c util.c
+____________________________________________________________________________
+[   592] By: mbeattie                              on 1998/02/27  15:15:12
+        Log: Subject: Config_60-03-04.diff patch for 5.004_60
+             Date: Wed, 25 Feb 1998 17:14:39 -0500 (EST)
+             From: Andy Dougherty 
+     Branch: perl
+           ! Configure MANIFEST Makefile.SH os2/diff.configure
+____________________________________________________________________________
+[   591] By: gsar                                  on 1998/02/26  19:34:50
+        Log: added AS patch#9
+     Branch: asperl
+	   - win32/ipdir.c win32/ipenv.c win32/iplio.c win32/ipmem.c
+	   - win32/ipproc.c win32/ipsock.c win32/ipstdio.c
+           - win32/ipstdiowin.h win32/perlobj.def
+	   ! ObjXSub.h globals.c perl.c proto.h win32/Makefile
+	   ! win32/dl_win32.xs win32/runperl.c win32/win32.c win32/win32.h
+           ! win32/win32sck.c win32/win32thread.c
+____________________________________________________________________________
+[   590] By: gsar                                  on 1998/02/26  04:25:40
+        Log: various changes to make win32 build under the new Configure & co.
+             - added byterun.c to core C build
+             - makefile.mk now has a regen_config_h target to quickly update config_H.[bgv]c
+             after adding new variables to config.[bgv]c
+             - sig_name_init now has only the valid signals
+             - we now have $Config{usethreads}
+             - tested under the two commercial compilers w/ and w/o usethreads
+     Branch: win32/perl
+	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/config_h.PL win32/makedef.pl win32/makefile.mk
+____________________________________________________________________________
+[   589] By: gsar                                  on 1998/02/26  03:56:19
+        Log: various cleanups so that B can be built as "just another extension"
+             - export symbols needed for building B
+             - bset_obj_store() is needed by byterun(), so define it there instead
+             of at B.xs, and export it
+             - freadpv() is only used in B.xs, so move it there
+             - byte*.h are now included by perl.h
+             - regenerate embed*.h
+     Branch: win32/perl
+	   ! bytecode.h bytecode.pl byterun.c byterun.h embed.h embedvar.h
+           ! ext/B/B.xs ext/B/Makefile.PL global.sym perl.h
+____________________________________________________________________________
+[   588] By: gsar                                  on 1998/02/25  21:46:35
+        Log: integrate mainline
+     Branch: win32/perl
+          +> Porting/config.sh Porting/config_H
+           - config_H
+          !> (integrate 54 files)
+____________________________________________________________________________
+[   587] By: gsar                                  on 1998/02/25  19:20:26
+        Log: added AS patch#8
+     Branch: asperl
+           ! sv.c x2p/a2py.c x2p/util.c
+____________________________________________________________________________
+[   586] By: gsar                                  on 1998/02/25  19:08:06
+        Log: added AS patch#7
+             Message-Id: <01BD40F9.CE57B210.dougl@ActiveState.com>
+             Date:    Tue, 24 Feb 1998 07:57:07 PST
+             From:    Douglas Lankshear 
+             Subject: [PATCH] 
+             
+             Here's an attempt at
+             6. MANIFEST must be updated with new file names
+             5. Mktime(), Stat() etc., rather than MKtime()/STat() etc.
+             And some changes to move toward
+             1. Merge PERL_OBJECT build support into regular Makefile and makefile.mk
+             
+             -- Doug
+     Branch: asperl
+	   ! MANIFEST installperl ipdir.h ipenv.h iplio.h ipmem.h ipproc.h
+	   ! ipsock.h ipstdio.h lib/ExtUtils/MM_Win32.pm perldir.h
+           ! perlenv.h perlio.h perllio.h win32/Makefile
+____________________________________________________________________________
+[   585] By: mbeattie                              on 1998/02/25  17:44:34
+        Log: More compiler tweaks.
+     Branch: perl
+	   ! Makefile.SH bytecode.pl byterun.c byterun.h ext/B/B/Asmdata.pm
+____________________________________________________________________________
+[   584] By: mbeattie                              on 1998/02/25  15:36:38
+        Log: Subject: [PATCH 5.004_60] dos-djgpp update
+             Date: Wed, 25 Feb 1998 11:17:07 +0100
+             From: Laszlo Molnar 
+     Branch: perl
+           ! djgpp/djgpp.c dosish.h hints/dos_djgpp.sh perl.c thread.h
+____________________________________________________________________________
+[   583] By: mbeattie                              on 1998/02/25  15:34:48
+        Log: Move find_threadsv to right bit of global.sym. Bump patchlevel to 61.
+     Branch: perl
+           ! global.sym patchlevel.h
+____________________________________________________________________________
+[   582] By: mbeattie                              on 1998/02/25  15:28:08
+        Log: Subject: Re: [PATCH 5.004_60] Fix goto-in-eval segfault (unwrapped!)
+             Date: Tue, 24 Feb 1998 11:15:57 +0000
+             From: Robin Houston 
+     Branch: perl
+           ! pod/perldiag.pod pp_ctl.c
+____________________________________________________________________________
+[   581] By: mbeattie                              on 1998/02/25  15:27:06
+        Log: Subject: [PATCH] #ifdef CAN_PROTOTYPE cleanup
+             Date: 23 Feb 1998 23:36:09 +0100
+             From: Gisle Aas 
+     Branch: perl
+	   ! doio.c miniperlmain.c op.c perl.c pp.h regcomp.c toke.c util.c
+____________________________________________________________________________
+[   580] By: mbeattie                              on 1998/02/25  15:25:29
+        Log: Subject: [PATCH 5.004_60] improved Test.pm
+             Date: Sat, 21 Feb 1998 14:17:09 -0500
+             From: Joshua Pritikin 
+     Branch: perl
+           ! lib/Test.pm
+____________________________________________________________________________
+[   579] By: mbeattie                              on 1998/02/25  15:23:24
+        Log: HP-UX hints and AIX global.sym changes (with Makefile.SH rule)
+             From: Jarkko Hietaniemi 
+             Subject: [PATCH] 5.004_60: AIX: global.sym and Makefile.SH
+             Date: Sat, 21 Feb 1998 15:26:19 +0200 (EET)
+             Subject: Re: your HP-UX perl patch
+             Date: Mon, 23 Feb 1998 23:14:37 +0200 (EET)
+     Branch: perl
+           ! Makefile.SH embed.h global.sym hints/hpux.sh
+____________________________________________________________________________
+[   578] By: mbeattie                              on 1998/02/25  15:18:06
+        Log: Back out DB_File patch (change _553) and tweak Configure.
+             Subject: ANNOUNCE: perl5.004_60 is available
+             Date: Mon, 23 Feb 1998 10:47:26 -0000
+             From: Paul Marquess 
+     Branch: perl
+           ! Configure ext/DB_File/DB_File.xs
+____________________________________________________________________________
+[   577] By: mbeattie                              on 1998/02/25  15:04:00
+        Log: Subject: [PATCH] Cwd.pm
+             Date: Fri, 20 Feb 1998 10:27:54 -0600
+             From: Graham Barr 
+     Branch: perl
+           ! lib/Cwd.pm
+____________________________________________________________________________
+[   576] By: mbeattie                              on 1998/02/25  15:02:57
+        Log: From: ilya@math.ohio-state.edu (Ilya Zakharevich)
+             Subject: [5.004_5* PATCH] Make ornaments default in Term::ReadLine
+             Date: Fri, 20 Feb 1998 00:09:52 -0500 (EST)
+             Subject: [PATCH 5.004_5*] Fix debugger messages and the default package
+             Date: Fri, 20 Feb 1998 00:12:28 -0500 (EST)
+             Subject: Re: Continued presence of segmentation violation in study_chunk()[PATCH]
+             Date: Sat, 21 Feb 1998 15:32:29 -0500 (EST)
+     Branch: perl
+           ! lib/Term/ReadLine.pm lib/perl5db.pl regcomp.c
+____________________________________________________________________________
+[   575] By: mbeattie                              on 1998/02/25  14:58:00
+        Log: Subject: Re: ANNOUNCE: perl5.004_60 Configure patch is available
+             Date: Tue, 24 Feb 1998 16:02:43 -0500 (EST)
+             From: Andy Dougherty 
+     Branch: perl
+           + Porting/config.sh Porting/config_H
+           - config_H
+	   ! Configure INSTALL MANIFEST Makefile.SH Porting/Glossary
+	   ! Porting/pumpkin.pod config_h.SH ext/POSIX/POSIX.xs
+	   ! hints/aix.sh hints/amigaos.sh hints/bsdos.sh hints/dec_osf.sh
+	   ! hints/freebsd.sh hints/irix_6.sh hints/linux.sh
+	   ! hints/netbsd.sh hints/next_3.sh hints/next_4.sh hints/os2.sh
+	   ! hints/solaris_2.sh makedepend.SH perl.c perl.h pp.c pp_sys.c
+           ! t/lib/thread.t t/op/nothread.t x2p/Makefile.SH
+____________________________________________________________________________
+[   574] By: gsar                                  on 1998/02/24  02:21:14
+        Log: fix typos in sv.c
+     Branch: win32/perl
+           ! sv.c
+____________________________________________________________________________
+[   573] By: mbeattie                              on 1998/02/23  10:03:39
+        Log: Remove old Linux+threads segfault degugging kludge.
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[   572] By: gsar                                  on 1998/02/23  09:45:26
+        Log: undo previous change (no added value!)
+     Branch: win32/perl
+           ! win32/bin/pl2bat.pl
+____________________________________________________________________________
+[   571] By: gsar                                  on 1998/02/23  09:18:32
+        Log: fix pl2bat.pl to tolerate trailing .bat (as suggested by
+             John Cavanaugh )
+     Branch: win32/perl
+           ! win32/bin/pl2bat.pl
+____________________________________________________________________________
+[   570] By: gsar                                  on 1998/02/22  04:02:15
+        Log: support chown() (just a noop for now)
+     Branch: win32/perl
+           ! dosish.h win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   569] By: gsar                                  on 1998/02/22  03:09:55
+        Log: integrate latest win32 branch
+     Branch: asperl
+          +> (branch 41 files)
+          !> (integrate 59 files)
+____________________________________________________________________________
+[   568] By: gsar                                  on 1998/02/22  02:40:56
+        Log: get compiler building under win32 (needed Makefile.PL
+             hacks that could be applicable to other platforms)
+     Branch: win32/perl
+           ! ext/B/Makefile.PL win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[   567] By: gsar                                  on 1998/02/22  01:30:19
+        Log: integrate mainline
+     Branch: win32/perl
+          +> (branch 41 files)
+          !> (integrate 46 files)
+____________________________________________________________________________
+[   566] By: gsar                                  on 1998/02/20  22:31:56
+        Log: fix handle leak in join()
+     Branch: win32/perl
+           ! win32/win32thread.h
+
+----------------
+Version 5.004_60
+----------------
+
+____________________________________________________________________________
+[   565] By: mbeattie                              on 1998/02/20  18:23:47
+        Log: Remove compiler files from their old lib/B locations. The compiler
+             now builds by default (without the byteperl executable so far) and
+             seems to work at least minimally.
+     Branch: perl
+	   - lib/B.pm lib/B/Asmdata.pm lib/B/Assembler.pm lib/B/Bblock.pm
+	   - lib/B/Bytecode.pm lib/B/C.pm lib/B/CC.pm lib/B/Debug.pm
+	   - lib/B/Deparse.pm lib/B/Disassembler.pm lib/B/Lint.pm
+	   - lib/B/Showlex.pm lib/B/Stackobj.pm lib/B/Terse.pm
+	   - lib/B/Xref.pm lib/B/assemble lib/B/cc_harness
+           - lib/B/disassemble lib/B/makeliblinks lib/O.pm
+           ! MANIFEST bytecode.pl
+____________________________________________________________________________
+[   564] By: mbeattie                              on 1998/02/20  18:05:33
+        Log: Move lib/B/... and lib/[BO].pm over to where they should be,
+             under ext/B.
+     Branch: perl
+	  +> ext/B/B.pm ext/B/B/Asmdata.pm ext/B/B/Assembler.pm
+	  +> ext/B/B/Bblock.pm ext/B/B/Bytecode.pm ext/B/B/C.pm
+	  +> ext/B/B/CC.pm ext/B/B/Debug.pm ext/B/B/Deparse.pm
+	  +> ext/B/B/Disassembler.pm ext/B/B/Lint.pm ext/B/B/Showlex.pm
+	  +> ext/B/B/Stackobj.pm ext/B/B/Terse.pm ext/B/B/Xref.pm
+	  +> ext/B/B/assemble ext/B/B/cc_harness ext/B/B/disassemble
+          +> ext/B/B/makeliblinks ext/B/O.pm
+____________________________________________________________________________
+[   563] By: mbeattie                              on 1998/02/20  17:54:58
+        Log: Start getting compiler to work when built with the core.
+             [Still won't work as of this change.]
+     Branch: perl
+	  +> byterun.c byterun.h lib/B/Asmdata.pm lib/B/Assembler.pm
+	  +> lib/B/Bblock.pm lib/B/Bytecode.pm lib/B/C.pm lib/B/CC.pm
+	  +> lib/B/Debug.pm lib/B/Deparse.pm lib/B/Disassembler.pm
+	  +> lib/B/Lint.pm lib/B/Showlex.pm lib/B/Stackobj.pm
+          +> lib/B/Terse.pm lib/B/Xref.pm
+           ! MANIFEST Makefile.SH bytecode.pl ext/B/Makefile.PL
+____________________________________________________________________________
+[   562] By: mbeattie                              on 1998/02/20  16:42:13
+        Log: Merge perlext/Compiler/... into mainline. Some files move to
+             ext/B/..., some to lib/B/..., O.pm and B.pm go in lib and some
+             move to the base perl directory (e.g. headers). Will need some
+             cleaning up before it builds properly, I would guess.
+     Branch: perl
+	  +> bytecode.h bytecode.pl cc_runtime.h ext/B/B.xs
+	  +> ext/B/Makefile.PL ext/B/NOTES ext/B/README ext/B/TESTS
+	  +> ext/B/Todo ext/B/byteperl.c ext/B/ramblings/cc.notes
+	  +> ext/B/ramblings/curcop.runtime ext/B/ramblings/flip-flop
+	  +> ext/B/ramblings/magic ext/B/ramblings/reg.alloc
+	  +> ext/B/ramblings/runtime.porting ext/B/typemap lib/B.pm
+	  +> lib/B/assemble lib/B/cc_harness lib/B/disassemble
+          +> lib/B/makeliblinks lib/O.pm
+____________________________________________________________________________
+[   561] By: mbeattie                              on 1998/02/20  16:39:38
+        Log: Win32 changes from Sarathy, tweaked slightly by me.
+     Branch: perlext
+	   ! Compiler/B.xs Compiler/B/Asmdata.pm Compiler/B/Bytecode.pm
+	   ! Compiler/B/C.pm Compiler/Makefile.PL Compiler/assemble
+	   ! Compiler/bytecode.h Compiler/bytecode.pl Compiler/byteperl.c
+           ! Compiler/byterun.c Compiler/byterun.h Compiler/cc_harness
+____________________________________________________________________________
+[   560] By: mbeattie                              on 1998/02/20  15:46:15
+        Log: Initialise $@ early (fixes t/lib/ph.t for threaded perl).
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[   559] By: mbeattie                              on 1998/02/20  12:56:10
+        Log: Add missing t/op/wantarray.t to MANIFEST. Bump patchlevel to 60.
+     Branch: perl
+           ! MANIFEST patchlevel.h
+____________________________________________________________________________
+[   558] By: mbeattie                              on 1998/02/20  12:53:26
+        Log: Integrate win32 branch into mainline.
+     Branch: perl
+	  !> XSUB.h config_h.SH doio.c lib/Pod/Html.pm pp_sys.c
+	  !> win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+	  !> win32/config_H.bc win32/config_H.gc win32/config_H.vc
+	  !> win32/makedef.pl win32/makefile.mk win32/win32.c win32/win32.h
+          !> win32/win32iop.h x2p/a2p.h
+____________________________________________________________________________
+[   557] By: mbeattie                              on 1998/02/20  12:51:42
+        Log: Subject: retry [PATCH] 5.004_59: the perlhist.pod etc
+             Date: Thu, 19 Feb 1998 17:54:52 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+	   ! ext/Thread/Thread.pm ext/Thread/Thread/Queue.pm
+	   ! ext/Thread/Thread/Semaphore.pm ext/Thread/Thread/Specific.pm
+	   ! lib/fields.pm pod/buildtoc pod/perl.pod pod/perlhist.pod
+           ! pod/perltoc.pod pod/perlvar.pod
+____________________________________________________________________________
+[   556] By: mbeattie                              on 1998/02/20  12:49:54
+        Log: Subject: [PATCH] installperl
+             Date: Wed, 18 Feb 1998 11:51:44 -0500 (est)
+             From: Norton Allen 
+     Branch: perl
+           ! installperl
+____________________________________________________________________________
+[   555] By: mbeattie                              on 1998/02/20  12:49:09
+        Log: Subject: [PATCH:_59] t/op/wantarray.t
+             Date: Wed, 18 Feb 1998 11:19:54 -0500 (est)
+             From: Norton Allen 
+     Branch: perl
+           + t/op/wantarray.t
+____________________________________________________________________________
+[   554] By: mbeattie                              on 1998/02/20  12:47:44
+        Log: Subject: Misprint in regcomp.c [PATCH]
+             Date: Tue, 17 Feb 1998 23:54:07 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! regcomp.c
+____________________________________________________________________________
+[   553] By: mbeattie                              on 1998/02/20  12:45:08
+        Log: Subject: DB_File ->length does not work just after tie.
+             Date: Tue, 17 Feb 1998 13:19:18 GMT
+             From: Nick Ing-Simmons 
+     Branch: perl
+           ! ext/DB_File/DB_File.xs
+____________________________________________________________________________
+[   552] By: mbeattie                              on 1998/02/20  12:43:32
+        Log: Subject: [PATCH] - perl5.005_59, update Copyright
+             Date: Mon, 16 Feb 1998 20:31:06 -0500 (EST)
+             From: lusol@CS4.CC.Lehigh.EDU (Stephen O. Lidie)
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[   551] By: mbeattie                              on 1998/02/20  12:42:41
+        Log: Subject: Re: for() and map() peculiarity
+             Date: Mon, 16 Feb 1998 21:33:44 +0000
+             From: "M.J.T. Guy" 
+     Branch: perl
+           ! pod/perlsyn.pod
+____________________________________________________________________________
+[   550] By: mbeattie                              on 1998/02/20  12:41:53
+        Log: Subject: [PATCH 5.004_59] Updates to VMS/CONFIG.VMS
+             Date: Mon, 16 Feb 1998 11:46:29 -0800
+             From: Dan Sugalski 
+     Branch: perl
+           ! vms/config.vms
+____________________________________________________________________________
+[   549] By: mbeattie                              on 1998/02/20  12:40:55
+        Log: Subject: [PATCH] 5.004_59 global.sym for AIX 3.2.5
+             Date: Mon, 16 Feb 1998 14:27:53 -0500 (EST)
+             From: "Stephen O. Lidie" 
+     Branch: perl
+           ! global.sym
+____________________________________________________________________________
+[   548] By: mbeattie                              on 1998/02/20  12:39:56
+        Log: Subject: [PATCH] 5.004_59: hints/irix_6.sh
+             Date: Mon, 16 Feb 1998 15:44:57 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! hints/irix_6.sh
+____________________________________________________________________________
+[   547] By: mbeattie                              on 1998/02/20  12:38:58
+        Log: Subject: [PATCH] perlguts update
+             Date: 16 Feb 1998 11:23:53 +0100
+             From: Gisle Aas 
+     Branch: perl
+           ! pod/perlguts.pod
+____________________________________________________________________________
+[   546] By: mbeattie                              on 1998/02/20  12:38:01
+        Log: Subject: [PATCH 5.004_59] bsdos/hints.sh is wrong
+             Date: Sun, 15 Feb 1998 23:56:05 -0500
+             From: Irving Reid 
+     Branch: perl
+           ! hints/bsdos.sh
+____________________________________________________________________________
+[   545] By: mbeattie                              on 1998/02/20  12:37:11
+        Log: Subject: [PATCH] 5% speedup in an empty loop
+             Date: Sun, 15 Feb 1998 17:49:46 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[   544] By: mbeattie                              on 1998/02/20  12:36:26
+        Log: Subject: [PATCH for 5.004_59] netdb_host_type and netdb_hlen_type on NeXt
+             Date: Sun, 15 Feb 98 23:06:16 +0100
+             From: Hans Mulder 
+     Branch: perl
+           ! hints/next_3.sh hints/next_4.sh
+____________________________________________________________________________
+[   543] By: mbeattie                              on 1998/02/20  12:35:39
+        Log: Subject: [PATCH for 5.004_59] Perl_sbrk declared inconsistently
+             Date: Sun, 15 Feb 98 23:05:20 +0100
+             From: Hans Mulder 
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[   542] By: mbeattie                              on 1998/02/20  12:35:03
+        Log: Subject: [PATCH for 5.004_59] "d_gethbyname" misspelled in Configure
+             From: Hans Mulder 
+             Date: Sun, 15 Feb 98 23:04:29 +0100
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
+[   541] By: mbeattie                              on 1998/02/20  12:33:56
+        Log: Subject: [PATCH for 5.004_59] NeXT doesn't need DONT_DECLARE_STD (was: 
+             NeXT   needs DONT_DECLARE_STD)
+             Date: Sun, 15 Feb 98 23:04:19 +0100
+             From: Hans Mulder 
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[   540] By: mbeattie                              on 1998/02/20  12:32:25
+        Log: Subject: [PATCH] sv_check_thinkfirst macroized
+             Date: 15 Feb 1998 22:00:38 +0100
+             From: Gisle Aas 
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[   539] By: mbeattie                              on 1998/02/20  12:31:07
+        Log: Subject: [PATCH 5.004_59] allow the Test::Harness to grok TODO-type tests docs
+             Date: Sat, 14 Feb 1998 17:58:01 -0500
+             From: Joshua Pritikin 
+     Branch: perl
+           + lib/Test.pm
+           ! MANIFEST lib/Test/Harness.pm
+____________________________________________________________________________
+[   538] By: mbeattie                              on 1998/02/20  12:24:31
+        Log: Subject: [PATCH] 5.004_59: locale startup problems documentation++
+             Date: Sat, 14 Feb 1998 15:40:44 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! INSTALL pod/perldiag.pod pod/perllocale.pod
+____________________________________________________________________________
+[   537] By: mbeattie                              on 1998/02/20  12:23:04
+        Log: Subject: [PATCH] Updated, non-wordwrapped, patch to README.VMS
+             Date: Fri, 13 Feb 1998 13:38:28 -0800
+             From: Dan Sugalski 
+     Branch: perl
+           ! README.vms
+____________________________________________________________________________
+[   536] By: mbeattie                              on 1998/02/20  12:20:29
+        Log: Subject: [PATCH] 5.004_58, move intuition tests
+             Date: Thu, 12 Feb 1998 17:11:05 -0600
+             From: Stephen Potter 
+     Branch: perl
+	   ! t/lib/anydbm.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t
+	   ! t/lib/sdbm.t t/op/array.t t/op/delete.t t/op/each.t
+           ! t/op/flip.t t/op/pat.t t/op/push.t
+____________________________________________________________________________
+[   535] By: gsar                                  on 1998/02/19  23:07:24
+        Log: applied a version of this with tabs intact
+             Message-Id: 
+             Date:    19 Feb 1998 15:06:38 EST
+             From:    dfan@harmonixmusic.com (Dan Schmidt)
+             Subject: Pod::Html bug and fix: missing  in index
+     Branch: win32/perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[   534] By: gsar                                  on 1998/02/19  19:40:27
+        Log: Fix C<0> problem in Pod::Html
+     Branch: win32/perl
+           ! lib/Pod/Html.pm
+____________________________________________________________________________
+[   533] By: gsar                                  on 1998/02/18  18:11:08
+        Log: non-debug VC builds are -O1 now (they say it works, and is
+             faster)
+     Branch: win32/perl
+           ! win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[   532] By: gsar                                  on 1998/02/18  04:11:03
+        Log: integrate nick's patch to mainline
+     Branch: win32/perl
+          !> pp.c
+____________________________________________________________________________
+[   531] By: mbeattie                              on 1998/02/17  17:50:50
+        Log: Assorted changes to the compiler
+     Branch: perlext
+	   ! Compiler/B.pm Compiler/B.xs Compiler/B/Asmdata.pm
+	   ! Compiler/B/Bytecode.pm Compiler/B/C.pm Compiler/B/Debug.pm
+	   ! Compiler/NOTES Compiler/O.pm Compiler/bytecode.pl
+           ! Compiler/byterun.c Compiler/byterun.h Compiler/typemap
+____________________________________________________________________________
+[   530] By: gsar                                  on 1998/02/17  01:47:35
+        Log: DLLs are now ok on mingw32/gcc-2.8.0 after removing the
+             FORCE_ARG_STRING() hack (that bug is fixed in gcc now).  mingw32
+             build passes all tests except t/lib/io_xs.t (seems to be due to
+             broken tmpfile() in the CRT or import lib)
+     Branch: win32/perl
+           ! XSUB.h win32/makefile.mk win32/win32.h
+____________________________________________________________________________
+[   529] By: gsar                                  on 1998/02/16  23:03:31
+        Log: fix mingw32 gcc 2.8.0 build (DLLs generated seem to be broken
+             in this version of gcc!)
+     Branch: win32/perl
+	   ! doio.c pp_sys.c win32/config.gc win32/makefile.mk
+           ! win32/win32.c win32/win32.h win32/win32iop.h x2p/a2p.h
+____________________________________________________________________________
+[   528] By: nick                                  on 1998/02/16  22:13:04
+        Log: Missing PUSHMARK in unshift TIEARRAY hook
+     Branch: perl
+           ! pp.c
+____________________________________________________________________________
+[   527] By: gsar                                  on 1998/02/15  20:59:07
+        Log: integrate win32 branch
+     Branch: asperl
+	  !> config_h.SH win32/config.bc win32/config.gc win32/config.vc
+	  !> win32/config_H.bc win32/config_H.gc win32/config_H.vc
+          !> win32/makedef.pl
+____________________________________________________________________________
+[   526] By: gsar                                  on 1998/02/15  20:02:11
+        Log: Fix typo: s/GETNETBYADD\b/GETNETBYADDR/
+     Branch: win32/perl
+	   ! config_h.SH win32/config_H.bc win32/config_H.gc
+           ! win32/config_H.vc
+____________________________________________________________________________
+[   525] By: gsar                                  on 1998/02/15  03:26:45
+        Log: fix build problems due to renamed Config variables
+     Branch: win32/perl
+	   ! win32/config.bc win32/config.gc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/makedef.pl
+____________________________________________________________________________
+[   524] By: gsar                                  on 1998/02/14  01:00:15
+        Log: bring ASPerl uptodate with mainline changes
+     Branch: asperl
+          +> ext/DB_File/Changes t/comp/require.t
+          !> (integrate 41 files)
+____________________________________________________________________________
+[   523] By: gsar                                  on 1998/02/14  00:52:17
+        Log: integrate mainline
+     Branch: win32/perl
+	  !> hints/qnx.sh lib/Cwd.pm lib/ExtUtils/xsubpp patchlevel.h
+          !> pp_hot.c t/op/magic.t
+____________________________________________________________________________
+[   522] By: gsar                                  on 1998/02/14  00:42:37
+        Log: added AS patch#6
+             Message-Id: <01BD3846.B29FB880.dougl@ActiveState.com>
+             Date:    Fri, 13 Feb 1998 06:14:51 PST
+             From:    Douglas Lankshear 
+             Subject: [PATCH] command line build
+             
+             This patch is for the command line build of perl object.
+             I'll merge the ipfoo.c function with win32_xxx functions next.
+             
+             -- Doug
+     Branch: asperl
+	   ! ObjXSub.h ext/Opcode/Opcode.xs lib/ExtUtils/MM_Win32.pm
+	   ! objpp.h proto.h sv.c win32/dl_win32.xs win32/ipenv.c
+	   ! win32/ipstdio.c win32/makedef.pl win32/runperl.c win32/win32.h
+____________________________________________________________________________
+[   521] By: gsar                                  on 1998/02/14  00:14:04
+        Log: added AS patch#5 (patch #4 was intentionally skipped after
+             discussion)
+     Branch: asperl
+	   ! embed.h embedvar.h global.sym globals.c hv.c interp.sym
+	   ! intrpvar.h op.c perl.c perl.h pp_ctl.c proto.h regcomp.c
+           ! regexec.c sv.c toke.c
+____________________________________________________________________________
+[   520] By: nick                                  on 1998/02/13  18:15:46
+        Log: Resolve ansiperl against win32
+     Branch: ansiperl
+	  +> ext/DB_File/Changes ext/POSIX/hints/linux.pl
+	  +> ext/POSIX/hints/sunos_4.pl lib/Fatal.pm t/comp/require.t
+          +> t/lib/ph.t
+          !> (integrate 898 files)
+
+----------------
+Version 5.004_59
+----------------
+
+____________________________________________________________________________
+[   519] By: mbeattie                              on 1998/02/13  17:05:37
+        Log: Integrate win32 into mainline.
+     Branch: perl
+           ! lib/ExtUtils/xsubpp
+	  !> win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+          !> win32/makefile.mk
+____________________________________________________________________________
+[   518] By: mbeattie                              on 1998/02/13  17:01:16
+        Log: Bump patchlevel.h to 59.
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   517] By: mbeattie                              on 1998/02/13  16:57:59
+        Log: Subject: [PATCH] _58: wantarray in void context broken
+             Date: Fri, 13 Feb 1998 11:24:49 -0500 (est)
+             From: Norton Allen 
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[   516] By: mbeattie                              on 1998/02/13  16:55:33
+        Log: Subject: [PATCH] 5.004_58 QNX getcwd
+             Date: Thu, 12 Feb 1998 13:40:56 -0500 (est)
+             From: Norton Allen 
+     Branch: perl
+           ! hints/qnx.sh lib/Cwd.pm t/op/magic.t
+____________________________________________________________________________
+[   515] By: gsar                                  on 1998/02/12  18:29:52
+        Log: pickup lddlflags properly for Config.pm
+     Branch: win32/perl
+	   ! win32/Makefile win32/config.bc win32/config.gc win32/config.vc
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   514] By: gsar                                  on 1998/02/12  18:16:09
+        Log: fix xsubpp bug in SETMAGIC code
+     Branch: win32/perl
+           ! lib/ExtUtils/xsubpp
+____________________________________________________________________________
+[   513] By: gsar                                  on 1998/02/12  18:06:30
+        Log: integrate mainline
+     Branch: win32/perl
+          +> ext/DB_File/Changes
+	  !> Configure MANIFEST config_h.SH ext/DB_File/DB_File.pm
+	  !> ext/DB_File/DB_File.xs hints/machten.sh
+	  !> lib/ExtUtils/Install.pm lib/Pod/Html.pm lib/Pod/Text.pm
+	  !> lib/perl5db.pl malloc.c pod/perldiag.pod pod/perlpod.pod
+	  !> pod/pod2man.PL pp_sys.c regcomp.c regexec.c scope.h sv.c
+	  !> t/lib/db-recno.t t/lib/filecopy.t t/op/misc.t t/op/pat.t
+          !> t/op/re_tests t/pragma/locale.t
+____________________________________________________________________________
+[   512] By: mbeattie                              on 1998/02/12  17:34:02
+        Log: Missing WITH_THR from new deb() in ENTER/LEAVE caused builds
+             with -DUSE_THREADS -DDEBUGGING to fail.
+     Branch: perl
+           ! scope.h
+____________________________________________________________________________
+[   511] By: mbeattie                              on 1998/02/12  16:44:03
+        Log: Integrate win32 into mainline
+     Branch: perl
+          +> t/comp/require.t
+          !> MANIFEST pp_ctl.c scope.c scope.h t/op/local.t toke.c
+____________________________________________________________________________
+[   510] By: mbeattie                              on 1998/02/12  16:42:26
+        Log: Subject: Re: [PATCH] 5.004_58 | _04  DynaLoader.pm -> DynaLoader.pm.PL (resend)
+             Date: 12 Feb 1998 14:25:55 +0100
+             From: koenig@kulturbox.de (Andreas J. Koenig)
+     Branch: perl
+           ! lib/ExtUtils/Install.pm
+____________________________________________________________________________
+[   509] By: mbeattie                              on 1998/02/12  16:40:34
+        Log: Subject: Re: wrong prototype for sbrk [PATCH]
+             Date: Wed, 11 Feb 1998 15:37:31 -0500 (EST)
+             From: Andy Dougherty 
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[   508] By: mbeattie                              on 1998/02/12  16:36:53
+        Log: Subject: [PATCH] 5.004_58 | _04: pod2*,perlpod: L
+             Date: Wed, 11 Feb 1998 17:29:20 +0100
+             From: Achim Bohnet 
+     Branch: perl
+	   ! lib/Pod/Html.pm lib/Pod/Text.pm pod/perlpod.pod pod/pod2man.PL
+____________________________________________________________________________
+[   507] By: mbeattie                              on 1998/02/12  16:35:26
+        Log: Subject: [PATCH] slight tweaks to hints/machten.sh
+             Date: Wed, 11 Feb 1998 14:59:46 +0100
+             From: Dominic Dunlop 
+     Branch: perl
+           ! hints/machten.sh
+____________________________________________________________________________
+[   506] By: mbeattie                              on 1998/02/12  16:28:40
+        Log: Subject: DB_File 1.58 patch
+             Date: Tue, 10 Feb 1998 11:23:22 +0000 (GMT)
+             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+     Branch: perl
+           + ext/DB_File/Changes
+	   ! MANIFEST ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
+           ! t/lib/db-recno.t
+____________________________________________________________________________
+[   505] By: mbeattie                              on 1998/02/12  16:24:26
+        Log: Subject: 5.004_5*: [PATCH] restore old behaviour of \1 in RE
+             Date: Tue, 10 Feb 1998 02:57:46 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! regexec.c t/op/re_tests
+____________________________________________________________________________
+[   504] By: mbeattie                              on 1998/02/12  16:22:46
+        Log: From: Jarkko Hietaniemi 
+             Subject: [PATCH] 5.004_58: the locale.t problem in IRIX
+             Date: Mon, 9 Feb 1998 19:47:22 +0200 (EET)
+             Subject: [PATCH] 5.004_58: reserve the POSIX regexp extensions
+             Date: Tue, 10 Feb 1998 15:12:12 +0200 (EET)
+             Subject: [PATCH] 5.004_58:  API prototype probing
+             Date: Wed, 11 Feb 1998 12:50:35 +0200 (EET)
+     Branch: perl
+	   ! Configure config_h.SH pod/perldiag.pod pp_sys.c regcomp.c
+           ! t/op/misc.t t/op/pat.t t/op/re_tests t/pragma/locale.t
+____________________________________________________________________________
+[   503] By: mbeattie                              on 1998/02/12  16:15:43
+        Log: Subject: [PATCH] filecopy.t #3 fails on dos-djgpp
+             Date: Mon, 9 Feb 1998 13:19:45 +0100
+             From: Laszlo Molnar 
+     Branch: perl
+           ! t/lib/filecopy.t
+____________________________________________________________________________
+[   502] By: mbeattie                              on 1998/02/12  16:14:27
+        Log: Assorted patches to sv.c:
+             From: Gisle Aas 
+             Subject: [PATCH] sv_grow can fail for HAS_64K_LIMIT systems
+             Date: 07 Feb 1998 00:21:57 +0100
+             Subject: [PATCH] sv_setnv will upgrade SVt_NV to SVt_PVNV
+             Date: 07 Feb 1998 00:29:45 +0100
+             Subject: [PATCH] sv_upgrade() always returns TRUE
+             Date: 09 Feb 1998 15:44:01 +0100
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[   501] By: mbeattie                              on 1998/02/12  16:09:26
+        Log: Fix saving of STDOUT during system() in lib/perl5db.pl:
+             Subject: Perl debugger.
+             Date: Fri, 6 Feb 1998 17:47:08 -0500
+             From: "Jason A. Smith" 
+     Branch: perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[   500] By: gsar                                  on 1998/02/12  03:20:55
+        Log: merge another maint patch
+             Message-Id: <199802102349.SAA16001@aatma.engin.umich.edu>
+             Date:    Tue, 10 Feb 1998 18:49:00 EST
+             From:    Gurusamy Sarathy 
+             Subject: Re: after an eval-ed bad require, requiring a string ref gives a SEGV 
+     Branch: win32/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   499] By: gsar                                  on 1998/02/12  03:14:39
+        Log: make t/comp/require.t type xtext
+     Branch: win32/perl
+           ! t/comp/require.t
+____________________________________________________________________________
+[   498] By: gsar                                  on 1998/02/12  03:09:58
+        Log: fix extra LEAVE when require fails
+             Message-Id: <199802102321.SAA15346@aatma.engin.umich.edu>
+             Date:    Tue, 10 Feb 1998 18:21:37 EST
+             From:    Gurusamy Sarathy 
+             Subject: Re: evals and requires make seg-fault with bad require file 
+     Branch: win32/perl
+           + t/comp/require.t
+           ! MANIFEST pp_ctl.c scope.c scope.h toke.c
+____________________________________________________________________________
+[   497] By: gsar                                  on 1998/02/12  02:47:29
+        Log: merge a maint patch
+             Message-Id: <199802110515.AAA23700@aatma.engin.umich.edu>
+             Date:    Wed, 11 Feb 1998 00:15:51 EST
+             From:    Gurusamy Sarathy 
+             Subject: Re: "local" can crash perl-4.00[34] on Solaris-x86 & FreeBSD 
+     Branch: win32/perl
+           ! pp_ctl.c t/op/local.t
+____________________________________________________________________________
+[   496] By: mbeattie                              on 1998/02/11  13:04:50
+        Log: Integrate win32 into mainline.
+     Branch: perl
+	  !> embed.h ext/GDBM_File/typemap ext/NDBM_File/typemap
+	  !> ext/ODBM_File/typemap ext/SDBM_File/typemap global.sym gv.c
+	  !> lib/ExtUtils/typemap lib/ExtUtils/xsubpp op.c
+	  !> os2/OS2/PrfDB/typemap pod/perlguts.pod pod/perlobj.pod
+	  !> pod/perlxs.pod pod/perlxstut.pod proto.h sv.c sv.h t/op/ref.t
+          !> win32/makedef.pl win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[   495] By: mbeattie                              on 1998/02/11  13:03:59
+        Log: Fix special constants in Xref.pm
+     Branch: perlext
+           ! Compiler/B/Xref.pm
+____________________________________________________________________________
+[   494] By: gsar                                  on 1998/02/10  18:26:28
+        Log: fix opendir() problem on share names
+             Message-Id: <199802101828.NAA10420@aatma.engin.umich.edu>
+             Date:    Tue, 10 Feb 1998 13:28:53 EST
+             From:    Gurusamy Sarathy 
+             Subject: Re: BUG: opendir and UNC names on NT 
+     Branch: win32/perl
+           ! win32/win32.c
+____________________________________________________________________________
+[   493] By: gsar                                  on 1998/02/09  23:09:40
+        Log: integrate win32 branch contents
+     Branch: asperl
+	  +> ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
+          +> lib/Fatal.pm t/lib/ph.t
+           ! hv.c
+          !> (integrate 895 files)
+____________________________________________________________________________
+[   492] By: gsar                                  on 1998/02/09  07:30:19
+        Log: enhancements to previous patch for XSUB OUTPUT args
+             Message-Id: <199802090731.CAA04438@aatma.engin.umich.edu>
+             Date:    Mon, 09 Feb 1998 02:31:55 EST
+             From:    Gurusamy Sarathy 
+             Subject: Re: [PATCH] XSUB OUTPUT arguments and 'set' magic 
+     Branch: win32/perl
+	   ! embed.h ext/GDBM_File/typemap ext/NDBM_File/typemap
+	   ! ext/ODBM_File/typemap ext/SDBM_File/typemap global.sym
+	   ! lib/ExtUtils/typemap lib/ExtUtils/xsubpp os2/OS2/PrfDB/typemap
+	   ! pod/perlguts.pod pod/perlxs.pod pod/perlxstut.pod proto.h sv.c
+           ! sv.h
+____________________________________________________________________________
+[   491] By: gsar                                  on 1998/02/09  03:00:52
+        Log: don't share TARG unless -DUSE_BROKEN_PAD_RESET
+             Message-Id: <199710300036.TAA01004@aatma.engin.umich.edu>
+             Date:    Wed, 29 Oct 1997 19:36:25 EST
+             From:    Gurusamy Sarathy 
+             Subject: [PATCH] Don't use broken pad_reset() (was Re: Perl bug in 5.004_03 )
+     Branch: win32/perl
+           ! op.c
+____________________________________________________________________________
+[   490] By: gsar                                  on 1998/02/09  02:30:43
+        Log: fix for bugs in handling DESTROY (adjusted test numbers)
+             Message-Id: <199801010030.TAA14274@aatma.engin.umich.edu>
+             Subject: Re: [PERL] RFD: iterative DESTROYing of objects 
+             Date: Wed, 31 Dec 1997 19:30:46 -0500
+             From: Gurusamy Sarathy 
+     Branch: win32/perl
+           ! pod/perlobj.pod sv.c t/op/ref.t
+____________________________________________________________________________
+[   489] By: gsar                                  on 1998/02/09  00:30:35
+        Log: ansify prototype for my_safemalloc(), avoid warnings
+     Branch: win32/perl
+           ! sv.c
+____________________________________________________________________________
+[   488] By: gsar                                  on 1998/02/09  00:29:08
+        Log: fix misapplied hunks in 5.004_58
+             Message-Id: <199802080718.CAA18115@aatma.engin.umich.edu>
+             Date:    Sun, 08 Feb 1998 02:18:12 EST
+             From:    Gurusamy Sarathy 
+             Subject: [PATCH] fixes for test failures in 5.004_58
+     Branch: win32/perl
+           ! gv.c op.c
+____________________________________________________________________________
+[   487] By: gsar                                  on 1998/02/09  00:27:16
+        Log: win32_utime() tweaks to avoid warnings
+     Branch: win32/perl
+           ! win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[   486] By: gsar                                  on 1998/02/07  23:45:22
+        Log: integrate mainline, plus a few small win32 enhancements
+             - remove Win32::GetCurrentDirectory()
+             - add Win32::Sleep() for compat
+             - add smarter utime() from Jan Dubois, and export it as win32_utime()
+     Branch: win32/perl
+	  +> ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
+          +> lib/Fatal.pm t/lib/ph.t
+           ! win32/makedef.pl win32/win32.c win32/win32iop.h
+          !> (integrate 61 files)
+
+----------------
+Version 5.004_58
+----------------
+
+____________________________________________________________________________
+[   485] By: mbeattie                              on 1998/02/06  18:11:47
+        Log: Bump patchlevel to 58.
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   484] By: mbeattie                              on 1998/02/06  18:08:28
+        Log: Fix up problem with gv.c from change 477.
+             Fix up Config.pm use in t/lib/ph.t from change 478.
+     Branch: perl
+           ! gv.c t/lib/ph.t
+____________________________________________________________________________
+[   483] By: mbeattie                              on 1998/02/06  17:34:34
+        Log: Integrate win32 branch into mainline
+     Branch: perl
+          !> win32/win32sck.c
+____________________________________________________________________________
+[   482] By: mbeattie                              on 1998/02/06  17:26:41
+        Log: lib/Fatal.pm missing from repository
+     Branch: perl
+           + lib/Fatal.pm
+____________________________________________________________________________
+[   481] By: mbeattie                              on 1998/02/06  17:24:57
+        Log: Subject: [PATCH] Re: posix::strftime (core dumped)
+             Date: Thu, 5 Feb 1998 13:55:23 -0500 (EST)
+             From: Andy Dougherty 
+     Branch: perl
+           + ext/POSIX/hints/linux.pl ext/POSIX/hints/sunos_4.pl
+           ! MANIFEST hints/linux.sh hints/sunos_4_1.sh t/lib/posix.t
+____________________________________________________________________________
+[   480] By: mbeattie                              on 1998/02/06  17:19:52
+        Log: x2p/str.c was missing from list of changed files in change 466
+     Branch: perl
+           ! x2p/str.c
+____________________________________________________________________________
+[   479] By: mbeattie                              on 1998/02/06  17:16:54
+        Log: Added t/lib/ph.t to MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   478] By: mbeattie                              on 1998/02/06  17:15:38
+        Log: Subject: [PATCH] h2ph.PL
+             Date: Thu, 5 Feb 1998 05:53:54 -0800 (EST)
+             From: kstar@www.chapin.edu (Kurt D. Starsinic)
+     Branch: perl
+           + t/lib/ph.t
+           ! utils/h2ph.PL
+____________________________________________________________________________
+[   477] By: mbeattie                              on 1998/02/06  17:10:46
+        Log: Subject: [PATCH] Faster gv_fetchpv() for nested packages
+             Date: 04 Feb 1998 14:49:46 +0100
+             From: Gisle Aas 
+             as modified by
+             From: chip@atlantic.net
+             Date: Wed, 4 Feb 1998 11:46:49 -0500 (EST)
+     Branch: perl
+           ! gv.c
+____________________________________________________________________________
+[   476] By: mbeattie                              on 1998/02/06  16:47:03
+        Log: From: Jarkko Hietaniemi 
+             Subject: [PATCH] almost OK: perl 5.00457 on i386-freebsd-thread 3.0
+             Date: Wed, 4 Feb 1998 12:59:47 +0200 (EET)
+             Subject: Re: [PATCH] 5.004_04 and 5.004_57: Complex.pm and complex.t 
+             Date: Thu, 5 Feb 1998 18:08:20 +0200 (EET)
+     Branch: perl
+           ! hints/freebsd.sh lib/Math/Complex.pm t/lib/complex.t
+____________________________________________________________________________
+[   475] By: mbeattie                              on 1998/02/06  16:44:57
+        Log: Subject: [PATCH] nomemok
+             Date: Mon, 2 Feb 1998 15:06:50 +0100
+             From: Gisle Aas 
+     Branch: perl
+           ! hv.c
+____________________________________________________________________________
+[   474] By: mbeattie                              on 1998/02/06  16:43:46
+        Log: Subject: [PATCH] Benchmark.pm: timethese corrupts $_
+             Date: Sun, 1 Feb 1998 06:46:08 -0500 (EST)
+             From: abigail@fnx.com
+     Branch: perl
+           ! lib/Benchmark.pm
+____________________________________________________________________________
+[   473] By: mbeattie                              on 1998/02/06  16:42:53
+        Log: Subject: [PATCH] adding the newSVpvn API function
+             Date: Sat, 31 Jan 1998 06:32:42 +0100
+             From: Matthias Ulrich Neeracher 
+     Branch: perl
+	   ! embed.h embedvar.h global.sym pod/perlguts.pod pod/perltoc.pod
+           ! proto.h sv.c
+____________________________________________________________________________
+[   472] By: mbeattie                              on 1998/02/06  16:35:41
+        Log: Subject: Re: [PATCH] new hints/solaris2.sh (was Re: make check fails 17% of it's tests on Solaris...)
+             Date: 28 Jan 1998 17:40:37 -0800
+             From: Stephen Zander 
+     Branch: perl
+           ! hints/solaris_2.sh
+____________________________________________________________________________
+[   471] By: mbeattie                              on 1998/02/06  16:02:57
+        Log: Subject: [PATCH] Re: 5.004_04 vec() fails with 32-bit values
+             Date: Thu, 15 Jan 1998 11:53:06 +0000
+             From: "M.J.T. Guy" 
+     Branch: perl
+           ! pod/perlguts.pod pp.c t/op/vec.t
+____________________________________________________________________________
+[   470] By: mbeattie                              on 1998/02/06  16:01:36
+        Log: From: Ilya Zakharevich 
+             Subject: 5.004_56: Patch to Tie::Hash and docs
+             Date: Sun, 11 Jan 1998 20:34:05 -0500 (EST)
+             Subject: 5.004_56: Patch to (?{}) quoting + cosmetic
+             Date: Mon, 2 Feb 1998 01:28:46 -0500 (EST)
+     Branch: perl
+	   ! lib/Tie/Hash.pm pod/perlfunc.pod pod/perlre.pod regcomp.c
+           ! t/op/misc.t t/op/pat.t toke.c
+____________________________________________________________________________
+[   469] By: mbeattie                              on 1998/02/06  15:58:31
+        Log: Subject: Another Array.pm patch
+             Date: Wed, 4 Feb 1998 20:37:03 +0000 (GMT)
+             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+     Branch: perl
+           ! lib/Tie/Array.pm
+____________________________________________________________________________
+[   468] By: mbeattie                              on 1998/02/06  15:56:28
+        Log: Subject: documentation patch for 5.004_57
+             Date: Wed, 4 Feb 1998 14:54:13 +0000 (GMT)
+             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+     Branch: perl
+           ! lib/Tie/Array.pm
+____________________________________________________________________________
+[   467] By: mbeattie                              on 1998/02/06  15:55:34
+        Log: Subject: 5.004_56: patch for `use Fatal' again
+             Date: Thu, 29 Jan 1998 17:04:28 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+	   ! MANIFEST pod/perldiag.pod pod/perlfunc.pod pod/perlmodlib.pod
+           ! pp.c t/comp/proto.t toke.c
+____________________________________________________________________________
+[   466] By: mbeattie                              on 1998/02/06  15:53:53
+        Log: Subject: Newer -DLEAKTEST patch
+             Date: Fri, 9 Jan 1998 17:55:09 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+	   ! ext/DB_File/DB_File.xs ext/DynaLoader/dl_next.xs
+	   ! ext/DynaLoader/dl_vms.xs ext/Opcode/Opcode.xs handy.h hv.c
+	   ! perl.c perly.c perly.c.diff perly.fixer pod/perlembed.pod
+	   ! pod/perlguts.pod pod/perlrun.pod pod/perltoc.pod pp_hot.c sv.c
+           ! toke.c util.c vms/perly_c.vms x2p/hash.c
+____________________________________________________________________________
+[   465] By: mbeattie                              on 1998/02/06  15:46:35
+        Log: More Chip patches (tweaked for _5x). The final one mentioned here
+             (@ARGV with -i) actually went in at change 462 but I failed to
+             add it to the change description:
+             Subject: [PATCH] Fix typo: "FORM{,AT}LINE"
+             Date: Sun, 11 Jan 1998 19:37:17 -0500 (EST)
+             Subject: [PATCH] Fix for C<@x = my @y>
+             Date: Sun, 11 Jan 1998 18:12:16 -0500 (EST)
+             Subject: [PATCH] Fix SEGV on C<*glob{SCALAR,ARRAY}>
+             Date: Thu, 5 Feb 1998 21:30:13 -0500 (EST)
+             Subject: [PATCH] Allow last() to mean last
+             Date: Thu, 5 Feb 1998 21:42:57 -0500 (EST)
+             Subject: [PATCH] Consider @ARGV to be plain files if inplace (-i)
+             Date: Wed, 4 Feb 1998 16:04:47 -0500 (EST)
+     Branch: perl
+	   ! op.c perly.c perly.h perly.y sv.c t/op/my.t vms/perly_c.vms
+           ! vms/perly_h.vms
+____________________________________________________________________________
+[   464] By: mbeattie                              on 1998/02/06  15:06:18
+        Log: More Chip patches:
+             Subject: [PATCH] Fix SEGV from combining caller and C
+             Date: Thu, 5 Feb 1998 21:47:50 -0500 (EST)
+             Subject: [PATCH] Fix line numbers after here documents in eval STRING
+             Date: Thu, 5 Feb 1998 21:50:08 -0500 (EST)
+             Subject: [PATCH] Make recursive lexical analysis more robust
+             Date: Thu, 5 Feb 1998 21:57:02 -0500 (EST)
+     Branch: perl
+           ! pp_ctl.c sv.c toke.c
+____________________________________________________________________________
+[   463] By: mbeattie                              on 1998/02/06  15:04:17
+        Log: Some more Chip patches (tweaked to match _5x):
+             Subject: [PATCH] Fix empty BLOCK
+             Date: Wed, 4 Feb 1998 16:52:28 -0500 (EST)
+             Subject: [PATCH] fix (\@@) proto
+             Date: Thu, 5 Feb 1998 10:24:29 -0500 (EST)
+             Subject: [PATCH] Cope with lack of args in Fcntl::AUTOLOAD
+             Date: Thu, 5 Feb 1998 21:26:55 -0500 (EST)
+             Subject: [PATCH] Don't fold string comparison under  C
+             Date: Thu, 5 Feb 1998 21:46:25 -0500 (EST)
+     Branch: perl
+           ! ext/Fcntl/Fcntl.pm op.c t/comp/proto.t toke.c
+____________________________________________________________________________
+[   462] By: mbeattie                              on 1998/02/06  14:56:30
+        Log: Some Chip patches (some tweaked to match _5x source):
+             From: Chip Salzenberg 
+             Subject: [PATCH] local leakage
+             Date: Tue, 3 Feb 1998 09:16:50 -0500 (EST)
+             Subject: [PATCH] NULs in patterns
+             Date: Wed, 4 Feb 1998 01:33:51 -0500 (EST)
+             Subject: [PATCH] Configure on PerlIO
+             Date: Wed, 4 Feb 1998 01:38:43 -0500 (EST)
+             Subject: [PATCH] Avoid core dump on package alias
+             Date: Wed, 4 Feb 1998 15:38:42 -0500 (EST)
+             Subject: [PATCH] Fix name of $Foo::{'Bar::'}
+             Date: Wed, 4 Feb 1998 16:37:51 -0500 (EST)
+     Branch: perl
+	   ! Configure doio.c gv.c op.c pp_ctl.c sv.c t/op/gv.t
+           ! t/op/local.t
+____________________________________________________________________________
+[   461] By: gsar                                  on 1998/02/04  03:34:36
+        Log: support win32_select(0,0,0,msec) (winsock doesn't)
+     Branch: win32/perl
+           ! win32/win32sck.c
+____________________________________________________________________________
+[   460] By: gsar                                  on 1998/02/04  00:44:47
+        Log: bug: win32_select() must StartSockets()
+     Branch: win32/perl
+           ! win32/win32sck.c
+
+----------------
+Version 5.004_57
+----------------
+
+____________________________________________________________________________
+[   459] By: mbeattie                              on 1998/02/03  16:00:07
+        Log: Replaced two occurrences of THREADSV(find_thread_sv(...)) (order
+             of execution causes core dump if threadsvp is moved). Replaced
+             lvalue occurrence of AvARRAY(av) with SvPVX(av) (former does cast).
+     Branch: perl
+           ! av.c perl.c
+____________________________________________________________________________
+[   458] By: mbeattie                              on 1998/02/03  14:40:02
+        Log: Fix up MANIFEST.
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   457] By: mbeattie                              on 1998/02/03  13:50:23
+        Log: Integrate win32 into mainline. My last integration from ansiperl
+             to the mainline was a dismal failure: I did -ay but meant -at.
+             This should fix things now since win32 has already integrated
+             all the necessary changes from ansiperl.
+     Branch: perl
+          !> (integrate 111 files)
+____________________________________________________________________________
+[   456] By: gsar                                  on 1998/02/03  04:48:08
+        Log: Fix minor problems with non USE_THREADS build. win32 branch
+             now looks 5.004_57-ready.
+     Branch: win32/perl
+           ! thread.h win32/makedef.pl
+____________________________________________________________________________
+[   455] By: gsar                                  on 1998/02/03  03:45:09
+        Log: integrate mainline
+     Branch: win32/perl
+          !> (integrate 887 files)
+____________________________________________________________________________
+[   454] By: mbeattie                              on 1998/02/02  16:44:24
+        Log: The new dec_osf.sh didn't work so the new glibpth and useshrplib
+             defaults have been commented out for now. 
+     Branch: perl
+           ! hints/dec_osf.sh
+____________________________________________________________________________
+[   453] By: mbeattie                              on 1998/02/02  15:51:39
+        Log: Introduced thr->threadsvp and THREADSV() for faster per-thread
+             variables. Moved threadnum to a per-interpreter variable and
+             made dTHR and lock/unlock of sv_mutex bypass the get/lock unless
+             more than one thread may be running. Minor tweaks to Thread.xs.
+     Branch: perl
+	   ! dosish.h embedvar.h ext/Thread/Thread.xs interp.sym intrpvar.h
+	   ! op.c perl.c perl.h pp.c pp_ctl.c scope.c sv.c thrdvar.h
+           ! thread.h util.c
+____________________________________________________________________________
+[   452] By: gsar                                  on 1998/02/02  04:56:50
+        Log: remove totally egregious s/\\dir// in File::Find
+     Branch: win32/perl
+           ! lib/File/Find.pm
+____________________________________________________________________________
+[   451] By: gsar                                  on 1998/02/01  22:20:20
+        Log: added AS patch#3
+             Message-Id: <01BD2EF2.53433A40.dougl@ActiveState.com>
+             Date:    Sun, 01 Feb 1998 09:18:13 PST
+             From:    Douglas Lankshear 
+             To:      "'Gurusamy Sarathy'" 
+             
+             Here's an additional diff against //depot/asperl
+             
+             The field name mg_length was changed back to mg_len
+             The function name mg_len was change to mg_length
+             
+             The need for sort_mutex removed thanks to the code derived
+             from Tom Horsley's work.
+             
+             -- Doug
+     Branch: asperl
+           + XSLock.h
+	   ! ObjXSub.h XSUB.h av.c embedvar.h ext/DynaLoader/dlutils.c
+	   ! globals.c ipstdio.h mg.c mg.h objpp.h perl.c perl.h perlio.h
+	   ! perlvars.h perly.c pp.c pp_ctl.c pp_hot.c proto.h regexec.c
+	   ! scope.c scope.h sv.c toke.c universal.c util.c
+	   ! win32/dl_win32.xs win32/iplio.c win32/ipstdio.c
+           ! win32/perlobj.def win32/runperl.c
+____________________________________________________________________________
+[   450] By: gsar                                  on 1998/01/30  23:43:57
+        Log: various tweaks
+             - add new functions to proto.h
+             - fix up makefile.mk for $(OBJECT)
+     Branch: asperl
+           ! pp_ctl.c proto.h win32/makefile.mk
+____________________________________________________________________________
+[   449] By: gsar                                  on 1998/01/30  21:23:15
+        Log: fix up missing patches from AS patch#2
+     Branch: asperl
+	   ! perldir.h perlenv.h perllio.h perlmem.h perlproc.h perlsock.h
+           ! pp_ctl.c proto.h
+____________________________________________________________________________
+[   448] By: gsar                                  on 1998/01/30  18:23:17
+        Log: fix htonlx typo
+     Branch: win32/perl
+           ! perlsock.h
+____________________________________________________________________________
+[   447] By: mbeattie                              on 1998/01/30  16:03:49
+        Log: Fix up MANIFEST to add missing files
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   446] By: mbeattie                              on 1998/01/30  12:34:55
+        Log: Bump patchlevel to 57.
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   445] By: gsar                                  on 1998/01/30  10:44:38
+        Log: initial merge of latest win32 branch into ASPerl
+     Branch: asperl
+	  +> lib/Tie/Array.pm pod/perlhist.pod t/lib/tie-push.t
+	  +> t/lib/tie-stdarray.t t/lib/tie-stdpush.t t/op/tiearray.t
+          +> win32/bin/perlglob.pl
+          !> (integrate 141 files)
+____________________________________________________________________________
+[   444] By: gsar                                  on 1998/01/30  09:25:58
+        Log: goofed branching, redo asperl branch
+     Branch: asperl
+           ! perl.h
+____________________________________________________________________________
+[   443] By: gsar                                  on 1998/01/30  09:23:36
+        Log: added AS patch#2
+     Branch: asperl
+	   + ObjXSub.h ipdir.h ipenv.h iplio.h ipmem.h ipproc.h ipsock.h
+	   + ipstdio.h objpp.h win32/ipdir.c win32/ipenv.c win32/iplio.c
+	   + win32/ipmem.c win32/ipproc.c win32/ipsock.c win32/ipstdio.c
+           + win32/ipstdiowin.h win32/perlobj.def
+	   ! EXTERN.h XSUB.h cv.h doio.c dosish.h dump.c embedvar.h
+	   ! globals.c gv.c hv.c intrpvar.h malloc.c mg.c mg.h op.c op.h
+	   ! opcode.h perl.c perl.h perldir.h perlenv.h perlio.h perllio.h
+	   ! perlmem.h perlproc.h perlsock.h perlvars.h perly.c pp.c pp.h
+	   ! pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regcomp.h
+	   ! regexec.c run.c scope.c scope.h sv.c sv.h thread.h toke.c
+	   ! universal.c util.c vms/vms.c win32/Makefile win32/config_H.bc
+	   ! win32/config_H.vc win32/dl_win32.xs win32/include/sys/socket.h
+           ! win32/makedef.pl win32/runperl.c win32/win32iop.h
+____________________________________________________________________________
+[   441] By: gsar                                  on 1998/01/30  08:54:19
+        Log: Created new branch from win32@396, added AS patch#1
+     Branch: asperl
+	   + doio.c malloc.c perl.c perl.h perldir.h perlenv.h perllio.h
+	   + perlmem.h perlproc.h perlsock.h pp.c pp_hot.c pp_sys.c
+           + regcomp.c scope.h sv.c toke.c util.c
+          +> (branch 915 files)
+____________________________________________________________________________
+[   440] By: gsar                                  on 1998/01/30  04:43:23
+        Log: integrate winansi
+     Branch: win32/perl
+          +> pod/perlhist.pod
+	  !> MANIFEST av.c hv.c op.c perlsock.h pp_ctl.c pp_sys.c scope.c
+          !> util.c
+____________________________________________________________________________
+[   439] By: mbeattie                              on 1998/01/27  15:31:53
+        Log: Integrate ansi branch into mainline (resolve -ay).
+     Branch: perl
+	  +> lib/Tie/Array.pm perldir.h perlenv.h perllio.h perlmem.h
+	  +> perlproc.h perlsock.h pod/perlhist.pod t/lib/tie-push.t
+	  +> t/lib/tie-stdarray.t t/lib/tie-stdpush.t t/op/tiearray.t
+          +> win32/bin/perlglob.pl
+           ! op.c
+          !> (integrate 868 files)
+____________________________________________________________________________
+[   438] By: nick                                  on 1998/01/24  12:02:34
+        Log: Gisle's av_unshift tweak, two small patches from chip
+             and check for NULL in hv_delete in case '~' and tie magic
+             are present
+     Branch: ansiperl
+           ! av.c hv.c op.c pp_ctl.c scope.c
+____________________________________________________________________________
+[   437] By: nick                                  on 1998/01/24  10:37:56
+        Log: Get PerlXxx_yyyy() macro stuff to _compile_ on Solaris.                   
+             Ugh! ...
+             Macros were unsuitable for declaring the functions, extra () round
+             parameters removed - non-function forms of PerlXxx_yyyy() need to 
+             add () themselves.
+             Need to include perlmem.h in util.c (at least) if not using Perl's malloc.
+     Branch: ansiperl
+           ! perlsock.h pp_sys.c util.c
+____________________________________________________________________________
+[   436] By: nick                                  on 1998/01/24  10:03:03
+        Log: Integrate win32 into ansiperl
+     Branch: ansiperl
+	  +> perldir.h perlenv.h perllio.h perlmem.h perlproc.h perlsock.h
+          +> win32/bin/perlglob.pl
+          !> (integrate 38 files)
+____________________________________________________________________________
+[   435] By: nick                                  on 1998/01/24  09:47:49
+        Log: Add perlhist.pod
+     Branch: ansiperl
+           + pod/perlhist.pod
+           ! MANIFEST
+____________________________________________________________________________
+[   434] By: gsar                                  on 1998/01/19  05:01:47
+        Log: s/PerlENV/PerlEnv/ just to be consistent
+     Branch: win32/perl
+           ! malloc.c perl.c perlenv.h regcomp.c toke.c util.c
+____________________________________________________________________________
+[   433] By: gsar                                  on 1998/01/19  04:52:18
+        Log: foo() -> PerlGroup_foo() patch from ActiveState
+     Branch: win32/perl
+           + perldir.h perlenv.h perllio.h perlmem.h perlproc.h perlsock.h
+	   ! doio.c malloc.c perl.c perl.h pp.c pp_hot.c pp_sys.c regcomp.c
+           ! scope.h sv.c toke.c util.c
+____________________________________________________________________________
+[   432] By: gsar                                  on 1998/01/19  04:42:26
+        Log: integrate mainline
+     Branch: win32/perl
+          !> pod/perlfunc.pod
+____________________________________________________________________________
+[   431] By: gsar                                  on 1998/01/19  04:40:04
+        Log: integrate changes in winansi
+     Branch: win32/perl
+	  +> lib/Tie/Array.pm t/lib/tie-push.t t/lib/tie-stdarray.t
+          +> t/lib/tie-stdpush.t t/op/tiearray.t
+          !> (integrate 98 files)
+____________________________________________________________________________
+[   430] By: gsar                                  on 1998/01/19  04:10:43
+        Log: Fix autovivification problems with XSUB OUTPUT args
+             Message-Id: <199801190409.XAA26710@aatma.engin.umich.edu>
+             Date:    Sun, 18 Jan 1998 23:09:07 EST
+             From:    Gurusamy Sarathy 
+             Subject: [PATCH] XSUB OUTPUT arguments and 'set' magic
+     Branch: win32/perl
+	   ! ext/GDBM_File/typemap ext/NDBM_File/typemap
+	   ! ext/ODBM_File/typemap ext/SDBM_File/typemap
+	   ! lib/ExtUtils/typemap os2/OS2/PrfDB/typemap pod/perlguts.pod
+           ! pod/perlxs.pod pod/perlxstut.pod sv.c sv.h win32/win32.h
+____________________________________________________________________________
+[   429] By: nick                                  on 1998/01/17  21:01:50
+        Log: Subject: [PATCH] 5.004_56 threaded and "CONFIG key 'exe_ext' does not exist in Config.pm"
+             Date: Thu, 25 Dec 1997 13:39:15 -0500
+             From: Spider Boardman 
+             To: perl5-porters@perl.org
+             
+             It turns out that the potential for the "CONFIG key 'exe_ext'
+             does not exist in Config.pm" problem has been around for a while,
+             in the definition of SvTRUE().  It's just that non-gcc compilers
+             are more or less being built as CRIPPLED_CC when USE_THREADS is
+             defined (even if they can inline things).  The inline macro for
+             SvTRUE works with tied hashes and the EXISTS method, and the
+             functional version (sv_true in 5.004_56, or SvTRUE in 5.004_04)
+             does not, because it adds an excess mg_get() which replaces the
+             EXISTS result with a FETCH result.
+     Branch: ansiperl
+           ! sv.c
+____________________________________________________________________________
+[   428] By: nick                                  on 1998/01/17  20:59:11
+        Log: From: Robin Barker 
+             Date: Fri, 19 Dec 97 17:19:09 GMT
+             Message-Id: <26260.9712191719@lightning.cise.npl.co.uk>
+     Branch: ansiperl
+           ! doio.c sv.c toke.c util.c
+____________________________________________________________________________
+[   427] By: nick                                  on 1998/01/17  12:01:53
+        Log: Permit tie ?foo,$object 
+             tidy up dead #ifdef ORIGINAL_TIE)
+             Remove 'P' magic from hash, before adding new one in dbm_open like tie does.
+     Branch: ansiperl
+           ! pp_sys.c
+____________________________________________________________________________
+[   426] By: nick                                  on 1998/01/15  18:06:36
+        Log: First working TIEARRAY and other misc tie fixes
+     Branch: ansiperl
+           ! MANIFEST pp.c pp_hot.c t/op/tiearray.t
+____________________________________________________________________________
+[   425] By: nick                                  on 1998/01/14  21:56:40
+        Log: Not working yet - split problems ...
+     Branch: ansiperl
+           ! pp.c t/lib/thread.t t/op/tiearray.t
+____________________________________________________________________________
+[   424] By: nick                                  on 1998/01/14  18:49:25
+        Log: TIEARRAY updates - almost works ...
+     Branch: ansiperl
+           + t/lib/tie-push.t t/lib/tie-stdarray.t t/lib/tie-stdpush.t
+	   ! MANIFEST av.c av.h ext/DB_File/DB_File.pm lib/Tie/Array.pm
+	   ! mg.c pod/perltie.pod pp.c pp_hot.c pp_sys.c scope.c
+           ! t/op/avhv.t t/op/push.t t/op/tiearray.t
+____________________________________________________________________________
+[   423] By: gsar                                  on 1998/01/14  00:13:16
+        Log: fix MakeMaker installbin problem
+             Message-Id: <199801070016.TAA17766@aatma.engin.umich.edu>
+             Subject: Re: can't modify message with HTML-Stream, v.1.42 
+             Date: Tue, 06 Jan 1998 19:16:35 -0500
+             From: Gurusamy Sarathy 
+     Branch: win32/perl
+           ! lib/ExtUtils/MM_Unix.pm
+____________________________________________________________________________
+[   422] By: gsar                                  on 1998/01/13  23:53:02
+        Log: add archname to *sitearch in config.{b,g,v}c
+     Branch: win32/perl
+           ! win32/config.bc win32/config.gc win32/config.vc
+____________________________________________________________________________
+[   421] By: gsar                                  on 1998/01/13  23:15:14
+        Log: set $ENV{PERL5LIB} in t/harness (so child perlglob.bat sees it)
+     Branch: win32/perl
+           ! t/harness
+____________________________________________________________________________
+[   420] By: nick                                  on 1998/01/13  22:55:02
+        Log: tiearray tweaks
+     Branch: ansiperl
+           ! av.c pp_sys.c t/op/nothread.t t/op/tiearray.t
+____________________________________________________________________________
+[   419] By: nick                                  on 1998/01/13  21:27:33
+        Log: Skeleton Tie::Array
+     Branch: ansiperl
+           + lib/Tie/Array.pm
+____________________________________________________________________________
+[   418] By: nick                                  on 1998/01/13  20:52:38
+        Log: tie array changes to core and tests
+     Branch: ansiperl
+           + t/op/tiearray.t
+	   ! MANIFEST av.c av.h deb.c embed.h ext/DB_File/DB_File.pm
+	   ! global.sym gv.c mg.c op.c perl.c perl.h pp.c pp.h pp_ctl.c
+           ! pp_hot.c proto.h sv.c toke.c universal.c util.c
+____________________________________________________________________________
+[   417] By: gsar                                  on 1998/01/13  20:49:52
+        Log: fix perlglob.bat warnings by splitting it from File::DosGlob
+     Branch: win32/perl
+           + win32/bin/perlglob.pl
+	   ! MANIFEST README.win32 lib/File/DosGlob.pm win32/Makefile
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   416] By: gsar                                  on 1998/01/13  02:46:53
+        Log: various tweaks to build support (NOTE: meant for 5.004_57)
+             - build and install x2p
+             - fix installperl warnings on win32
+             - `make install` now does puts the archlibs in right places
+             - makefiles don't default to USE_THREADS anymore
+             - sync config.{b,g,v}c
+             - sync makefile.mk -> Makefile
+     Branch: win32/perl
+	   ! installperl win32/Makefile win32/config.bc win32/config.gc
+	   ! win32/config.vc win32/config_sh.PL win32/makefile.mk x2p/a2p.h
+           ! x2p/a2py.c
+____________________________________________________________________________
+[   415] By: nick                                  on 1998/01/11  16:54:26
+        Log: Integrate win32 into ansiperl
+     Branch: ansiperl
+	  !> Configure hints/dec_osf.sh hv.c lib/Getopt/Long.pm lib/blib.pm
+	  !> lib/newgetopt.pl perl.h perl_exp.SH pp_ctl.c pp_hot.c pp_sys.c
+	  !> proto.h regcomp.h regexec.c t/op/re_tests t/pragma/locale.t
+	  !> utils/perldoc.PL vms/config.vms vms/descrip.mms
+	  !> vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms vms/vms.c
+          !> vms/vmsish.h x2p/s2p.PL
+____________________________________________________________________________
+[   414] By: nick                                  on 1998/01/11  15:13:49
+        Log: Integratye mainline -> ansiperl
+     Branch: ansiperl
+          !> (integrate 64 files)
+____________________________________________________________________________
+[   413] By: mbeattie                              on 1998/01/09  12:57:58
+        Log: Add missing blank line in pod/perlfunc.pod.
+     Branch: perl
+           ! pod/perlfunc.pod
+____________________________________________________________________________
+[   412] By: gsar                                  on 1998/01/08  20:54:31
+        Log: change#398 breaks ENV_IS_CASELESS, fix it
+     Branch: win32/perl
+           ! hv.c
+____________________________________________________________________________
+[   411] By: gsar                                  on 1998/01/08  18:33:58
+        Log: Integrate mainline
+     Branch: win32/perl
+	  !> Configure hints/dec_osf.sh hv.c lib/Getopt/Long.pm lib/blib.pm
+	  !> lib/newgetopt.pl perl.h perl_exp.SH pp_ctl.c pp_hot.c pp_sys.c
+	  !> proto.h regcomp.h regexec.c t/op/re_tests t/pragma/locale.t
+	  !> utils/perldoc.PL vms/config.vms vms/descrip.mms
+	  !> vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms vms/vms.c
+          !> vms/vmsish.h x2p/s2p.PL
+____________________________________________________________________________
+[   410] By: mbeattie                              on 1998/01/08  16:06:22
+        Log: Fix thinko in t/pragma/locale.t:
+             Subject: [PATCH] _04 or _56: locale.t
+             Date: Sun, 4 Jan 1998 23:48:44 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! t/pragma/locale.t
+____________________________________________________________________________
+[   409] By: mbeattie                              on 1998/01/08  16:05:09
+        Log: Use Tom Horley's qsort for sorting:
+             Subject: Re: [PATCH for 5.004_56] Re: op/sort.t hangs under Solaris 2.5
+             Date: Fri, 02 Jan 1998 19:33:24 -0500 (EST)
+             From: Hans Mulder 
+     Branch: perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   408] By: mbeattie                              on 1998/01/08  16:01:57
+        Log: Make s2p not use cpp:
+             Subject: [PATCH for 5.004_56] s2p shouldn't use cpp
+             Date: Mon, 29 Dec 1997 19:38:18 -0500 (EST)
+             From: Hans Mulder 
+     Branch: perl
+           ! x2p/s2p.PL
+____________________________________________________________________________
+[   407] By: mbeattie                              on 1998/01/08  15:57:31
+        Log: DG/UX tweaks to perl.h:
+             Subject: [PATCH] _56 on dgux without threads
+             Date: Sat, 20 Dec 1997 23:01:40 -0500
+             From: Roderick Schertler 
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[   406] By: mbeattie                              on 1998/01/08  15:56:02
+        Log: Configure and hints/dec_osf.sh changes for Digital UNIX:
+             Subject: [PATCH] perl5.004_56 NOT OK on alpha-dec_osf-thread (Digital UNIX X5.0-13)
+             Date: Sat, 20 Dec 1997 02:30:01 -0500
+             From: Spider Boardman 
+     Branch: perl
+           ! Configure hints/dec_osf.sh
+____________________________________________________________________________
+[   405] By: mbeattie                              on 1998/01/08  15:53:40
+        Log: Missing "" in Configure echo for gethbadd_addr_type.
+     Branch: perl
+           ! Configure
+____________________________________________________________________________
+[   404] By: mbeattie                              on 1998/01/08  13:04:48
+        Log: print/printf/... over-eager mg_find for glob magic:
+             Subject: [PATCH] fix inefficient checks for TIEHANDLE
+             Date: Wed, 07 Jan 1998 20:06:05 -0500
+             From: Gurusamy Sarathy 
+     Branch: perl
+           ! pp_hot.c pp_sys.c
+____________________________________________________________________________
+[   403] By: mbeattie                              on 1998/01/08  12:56:31
+        Log: Assorted VMS patches (mostly VMS makefile update for new headers):
+             Subject: [PATCH] VMS update for 5.004_56
+             Date: Sat, 03 Jan 1998 03:54:29 -0500 (EST)
+             From: Charles Bailey 
+     Branch: perl
+	   ! lib/blib.pm proto.h regcomp.h vms/config.vms vms/descrip.mms
+	   ! vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms vms/vms.c
+           ! vms/vmsish.h
+____________________________________________________________________________
+[   402] By: mbeattie                              on 1998/01/08  12:46:15
+        Log: Fix utils/perldoc.PL for dos-djgpp:
+             Subject: 5.004_56: perldoc.PL dos-djgpp patches
+             Date: Tue, 6 Jan 1998 18:14:59 +0100
+             From: Molnar Laszlo 
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   401] By: mbeattie                              on 1998/01/08  12:40:14
+        Log: Version 2.13 of GetoptLong:
+             Subject: Re: ANNOUNCE: perl 5.004_56 is available
+             Date: 06 Jan 1998 16:21:45 +0100
+             From: JVromans@Squirrel.nl (Johan Vromans)
+     Branch: perl
+           ! lib/Getopt/Long.pm lib/newgetopt.pl
+____________________________________________________________________________
+[   400] By: mbeattie                              on 1998/01/08  12:28:08
+        Log: Fix variable export and threading configuration for AIX:
+             Subject: [PATCH] 5.004_56: AIX 4.1.5.0: sans et avec threads
+             Date: Tue, 23 Dec 1997 15:39:12 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! Configure perl_exp.SH
+____________________________________________________________________________
+[   399] By: mbeattie                              on 1998/01/08  12:25:38
+        Log: Regexp fix: (?>a+)b  doesn't match  aaab:
+             Subject: Re: Regexp [PATCH] 5.004_56 (?>...)
+             Date: Fri, 19 Dec 1997 16:02:50 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! regexec.c t/op/re_tests
+____________________________________________________________________________
+[   398] By: mbeattie                              on 1998/01/08  12:23:41
+        Log: Fix hv_delete for 'm'-magic. Based on following patch, modified
+             to cope with ENV_IS_CASELESS:
+             Subject: [perl5.004_56] [PATCH] hv_delete and 'm' magic
+             Date: Fri, 19 Dec 1997 11:31:36 -0500
+             From: Owen Taylor 
+     Branch: perl
+           ! hv.c
+____________________________________________________________________________
+[   397] By: mbeattie                              on 1998/01/08  12:10:29
+        Log: Integrate win32 branch into mainline.
+     Branch: perl
+          !> (integrate 41 files)
+____________________________________________________________________________
+[   396] By: gsar                                  on 1998/01/07  19:12:27
+        Log: tweak case-insensitive ENV implementation
+     Branch: win32/perl
+           ! hv.c
+____________________________________________________________________________
+[   395] By: nick                                  on 1998/01/07  18:40:55
+        Log: Integrate win32 branch
+     Branch: ansiperl
+          !> (integrate 31 files)
+____________________________________________________________________________
+[   394] By: gsar                                  on 1998/01/05  19:17:40
+        Log: Allow $ENV{PERL5SHELL} to contain switches etc., and document
+             the fact
+     Branch: win32/perl
+           ! pod/perlrun.pod win32/win32.c
+____________________________________________________________________________
+[   393] By: gsar                                  on 1998/01/05  05:43:33
+        Log: Support case-tolerant %ENV
+             - underlying system calls see the case-as-supplied by user
+             - added tests to verify addition/deletion/enumeration case-tolerance
+             - hv.c touched, but changes are fully conditional on -DENV_IS_CASELESS,
+             which is default on win32 now
+     Branch: win32/perl
+           ! hv.c t/op/magic.t win32/win32.h
+____________________________________________________________________________
+[   392] By: gsar                                  on 1998/01/04  17:55:19
+        Log: Add a tweaked version of:
+             Message-Id: <199801040630.AA29298@metronet.com>
+             Date:    Sun, 04 Jan 1998 00:30:57 CST
+             From:    Tye McQueen 
+             Subject: New patch for $^E==GetLastError() under Win32
+     Branch: win32/perl
+	   ! doio.c lib/dumpvar.pl lib/perl5db.pl mg.c perl.h
+	   ! pod/perlfunc.pod pod/perlvar.pod util.c win32/makedef.pl
+           ! win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   391] By: gsar                                  on 1998/01/04  07:59:44
+        Log: Various win32 fixes
+             - support spawn via system(&P_NOWAIT,...) like OS2
+             - support wait() and waitpid()
+             - s/GetCurrentDirectory/GetCwd/, long-named XS to be removed
+             - support -lfoo properly in ExtUtils::Liblist
+             - fix outdated info about Win32 support in perlfaq2
+             - fix win32 bug in perldoc that causes spurious warnings
+             - regularize global function/variable names yet more
+             - fix bug in do_aspawn() (it was always invoking shell, instead of
+             almost never)
+             - implement and export win32_wait()
+             - stub version of USE_RTL_THREAD_API
+     Branch: win32/perl
+	   ! README.win32 dosish.h lib/Cwd.pm lib/ExtUtils/Liblist.pm
+	   ! pod/perlfaq2.pod pp_sys.c util.c utils/perldoc.PL
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+	   ! win32/config_h.PL win32/perllib.c win32/win32.c win32/win32.h
+	   ! win32/win32iop.h win32/win32sck.c win32/win32thread.c
+           ! win32/win32thread.h
+____________________________________________________________________________
+[   390] By: gsar                                  on 1997/12/30  21:00:28
+        Log: Fix $ENV{Path} in FindBin.pm
+     Branch: win32/perl
+           ! lib/FindBin.pm
+____________________________________________________________________________
+[   389] By: nick                                  on 1997/12/29  10:33:23
+        Log: Resolve ansiperl against win32
+     Branch: ansiperl
+          !> (integrate 105 files)
+____________________________________________________________________________
+[   388] By: gsar                                  on 1997/12/24  04:59:28
+        Log: make $? Unix (and ActiveWare) compatible
+     Branch: win32/perl
+           ! README.win32 win32/win32.c
+____________________________________________________________________________
+[   387] By: gsar                                  on 1997/12/24  04:21:30
+        Log: support ioctl() on sockets (does what ioctlsocket() does) to make
+             non-blocking IO on sockets possible
+     Branch: win32/perl
+	   ! README.win32 dosish.h win32/makedef.pl win32/win32.c
+           ! win32/win32iop.h win32/win32sck.c
+____________________________________________________________________________
+[   386] By: gsar                                  on 1997/12/24  03:10:55
+        Log: support getlogin()
+     Branch: win32/perl
+	   ! README.win32 win32/config.bc win32/config.gc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.gc win32/config_H.vc
+           ! win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   385] By: gsar                                  on 1997/12/24  02:24:59
+        Log: add support for crypt() via user-supplied des_fcrypt() source or library.
+             Update README.win32.
+     Branch: win32/perl
+	   ! README.win32 perl.h win32/Makefile win32/makedef.pl
+	   ! win32/makefile.mk win32/win32.c win32/win32.h win32/win32iop.h
+____________________________________________________________________________
+[   384] By: gsar                                  on 1997/12/24  02:22:42
+        Log: tweak op.c to avoid warning
+     Branch: win32/perl
+           ! op.c
+____________________________________________________________________________
+[   383] By: gsar                                  on 1997/12/23  21:12:42
+        Log: Trivial bugfix#3 from local repository
+             Message-Id: <199712061100.GAA14864@aatma.engin.umich.edu>
+             Subject: Re: Assigning result of pop scrambles unrelated reference 
+             Date: Sat, 06 Dec 1997 06:00:45 -0500
+             From: Gurusamy Sarathy 
+     Branch: win32/perl
+           ! sv.c
+____________________________________________________________________________
+[   382] By: gsar                                  on 1997/12/23  21:09:32
+        Log: Trivial bugfix#2 from local repository
+             Message-Id: <199712061025.FAA14396@aatma.engin.umich.edu>
+             Subject: Re: eval of sub gives spurious "uninitialised" warning 
+             Date: Sat, 06 Dec 1997 05:25:07 -0500
+             From: Gurusamy Sarathy 
+     Branch: win32/perl
+           ! op.c pod/perldelta.pod pod/perlfunc.pod t/op/eval.t
+____________________________________________________________________________
+[   381] By: gsar                                  on 1997/12/23  21:01:04
+        Log: Trivial bugfix#1 from local repository
+             Message-Id: <199711282326.SAA15090@aatma.engin.umich.edu>
+             Subject: [PATCH] Re: [5.004_04 BUG] bless broke scoping? 
+             Date: Fri, 28 Nov 1997 18:26:52 -0500
+             From: Gurusamy Sarathy 
+     Branch: win32/perl
+           ! scope.c
+____________________________________________________________________________
+[   380] By: gsar                                  on 1997/12/18  15:10:23
+        Log: Integrate mainline
+     Branch: win32/perl
+	  +> README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c
+	  +> djgpp/djgppsed.sh djgpp/fixpmain hints/dos_djgpp.sh
+          +> os2/os2.sym os2/os2thread.h
+          !> (integrate 77 files)
+
+----------------
+Version 5.004_56
+----------------
+
+____________________________________________________________________________
+[   379] By: mbeattie                              on 1997/12/18  13:28:35
+        Log: Integrate ansi @364,@366 into mainline.
+     Branch: perl
+          !> lib/ExtUtils/MakeMaker.pm miniperlmain.c perl.h
+____________________________________________________________________________
+[   378] By: mbeattie                              on 1997/12/18  13:20:15
+        Log: Add a few missing files to MANIFEST
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   377] By: mbeattie                              on 1997/12/18  13:00:16
+        Log: Bump patchlevel to 56.
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   376] By: nick                                  on 1997/12/18  01:32:12
+        Log: Resolve against mainline
+     Branch: ansiperl
+	  +> README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c
+	  +> djgpp/djgppsed.sh djgpp/fixpmain hints/dos_djgpp.sh
+          +> os2/os2.sym os2/os2thread.h
+          !> (integrate 74 files)
+____________________________________________________________________________
+[   375] By: nick                                  on 1997/12/18  01:06:15
+        Log: Resolve against Win32
+     Branch: ansiperl
+	  !> Configure README.threads config_h.SH doop.c embed.h
+	  !> ext/DynaLoader/dl_aix.xs global.sym hints/aix.sh
+	  !> hints/irix_6.sh op.c op.h perl.h perlvars.h pp_hot.c pp_sys.c
+          !> sv.c sv.h thread.h util.c
+____________________________________________________________________________
+[   374] By: mbeattie                              on 1997/12/17  14:44:26
+        Log: Lots of VMS changes. vms/gen_shrfls.pl (which parses header files)
+             needs rewriting now that we use perlvars.h and foovar.h:
+             Subject: [PATCH] 5.004_54 under VMS (fwd)
+             Date: Wed, 26 Nov 1997 12:32:09 -0400 (EDT)
+             From: Charles Bailey 
+     Branch: perl
+	   ! dosish.h handy.h intrpvar.h os2/os2ish.h perl.c perl.h
+	   ! plan9/plan9ish.h pp.c proto.h sv.c t/lib/thread.t
+	   ! t/lib/timelocal.t t/op/nothread.t taint.c thrdvar.h toke.c
+	   ! unixish.h vms/config.vms vms/descrip.mms vms/fndvers.com
+	   ! vms/gen_shrfls.pl vms/genconfig.pl vms/perly_c.vms
+           ! vms/test.com vms/vms.c vms/vms_yfix.pl vms/vmsish.h
+____________________________________________________________________________
+[   373] By: mbeattie                              on 1997/12/17  14:10:50
+        Log: Major changes to the DOS/djgpp port (including threading):
+             Subject: Re: dos-djgpp port not in perl 5.004_54
+             Date: Fri, 21 Nov 1997 10:58:26 +0100
+             From: Molnar Laszlo 
+     Branch: perl
+	   + README.dos djgpp/config.over djgpp/configure.bat djgpp/djgpp.c
+           + djgpp/djgppsed.sh djgpp/fixpmain hints/dos_djgpp.sh
+	   ! Configure MANIFEST Makefile.SH doio.c dosish.h
+	   ! ext/POSIX/POSIX.xs installhtml installperl lib/AutoSplit.pm
+	   ! lib/Cwd.pm lib/ExtUtils/Install.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/ExtUtils/Manifest.pm lib/File/Basename.pm lib/File/Find.pm
+	   ! lib/File/Path.pm lib/FindBin.pm lib/Pod/Html.pm
+	   ! lib/Pod/Text.pm lib/Term/Cap.pm lib/perl5db.pl makedepend.SH
+	   ! mg.c perl.c pod/pod2man.PL pp_hot.c t/io/fs.t t/lib/anydbm.t
+	   ! t/lib/filehand.t t/lib/gdbm.t t/lib/io_sel.t t/lib/io_tell.t
+	   ! t/lib/sdbm.t t/lib/thread.t t/op/magic.t t/op/stat.t
+           ! t/op/sysio.t t/op/taint.t utils/perldoc.PL
+____________________________________________________________________________
+[   372] By: mbeattie                              on 1997/12/17  13:18:34
+        Log: Upgrade DB_File to 1.56:
+             Subject: DB_File-1.56 for _55
+             Date: Tue, 16 Dec 1997 22:25:29 +0000 (GMT)
+             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+     Branch: perl
+	   ! Configure ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
+           ! ext/DB_File/Makefile.PL ext/DB_File/typemap t/lib/db-btree.t
+____________________________________________________________________________
+[   371] By: mbeattie                              on 1997/12/17  12:02:03
+        Log: Threading patches for OS/2 (missing files taken from previous patch):
+             Subject: Re: 5.004_55: OS/2 patches again
+             Date: Sat, 13 Dec 1997 18:09:15 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           + os2/os2.sym os2/os2thread.h
+	   ! MANIFEST hints/os2.sh os2/Changes os2/Makefile.SHs
+	   ! os2/OS2/PrfDB/PrfDB.xs os2/OS2/REXX/REXX.xs os2/os2.c
+           ! os2/os2ish.h perl.h
+____________________________________________________________________________
+[   370] By: mbeattie                              on 1997/12/17  11:01:34
+        Log: Add OS2 to list for DONT_DECLARE_STD in perl.h:
+             Subject: Re: 5.004_55: OS/2 patches again
+             Date: Sat, 13 Dec 1997 18:05:55 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[   369] By: mbeattie                              on 1997/12/17  10:59:40
+        Log: Fix typo in compiler B/C.pm.
+     Branch: perlext
+           ! Compiler/B/C.pm
+____________________________________________________________________________
+[   368] By: mbeattie                              on 1997/12/17  10:58:35
+        Log: Allow "perldoc -F filename":
+             Subject: 5.004_55: Patch to perldoc
+             Date: Thu, 11 Dec 1997 19:37:00 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! utils/perldoc.PL
+____________________________________________________________________________
+[   367] By: mbeattie                              on 1997/12/17  10:54:47
+        Log: Fix not-reached warning for pp_threadsv.
+     Branch: perl
+           ! pp.c
+____________________________________________________________________________
+[   366] By: nick                                  on 1997/12/14  16:06:24
+        Log: Fix typo in Ilya's patch :-(
+     Branch: ansiperl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[   365] By: nick                                  on 1997/12/14  15:30:25
+        Log: #undef new PERLVARIC macro in appropriate places
+     Branch: ansiperl
+           ! miniperlmain.c perl.h
+____________________________________________________________________________
+[   364] By: nick                                  on 1997/12/14  15:04:36
+        Log: Ilya's MakeMaker (empty makefile) patch
+     Branch: ansiperl
+           ! lib/ExtUtils/MakeMaker.pm
+____________________________________________________________________________
+[   363] By: gsar                                  on 1997/12/13  05:57:13
+        Log: Integrate mainline.  Builds and passes (Borland).
+     Branch: win32/perl
+	  !> Configure README.threads config_h.SH doop.c embed.h
+	  !> ext/DynaLoader/dl_aix.xs global.sym hints/aix.sh
+	  !> hints/irix_6.sh op.c op.h perl.h perlvars.h pp_hot.c pp_sys.c
+          !> sv.c sv.h thread.h util.c
+____________________________________________________________________________
+[   362] By: nick                                  on 1997/12/13  02:53:03
+        Log: Resolve ansiperl against mainline
+     Branch: ansiperl
+          !> (integrate 92 files)
+____________________________________________________________________________
+[   361] By: mbeattie                              on 1997/12/12  16:20:38
+        Log: pp_print and pp_prtf handling of tied file handles used EXTEND
+             instead of MEXTEND leading to core dumps. This fix needs
+             propagating back to the maintenance branch.
+     Branch: perl
+           ! pp_hot.c pp_sys.c
+____________________________________________________________________________
+[   360] By: mbeattie                              on 1997/12/11  15:45:56
+        Log: Add missing patch to op.c that didn't come across with win32 merge.
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[   359] By: mbeattie                              on 1997/12/11  11:54:41
+        Log: Stop tr/// from writing to target when only counting.
+     Branch: perl
+           ! doop.c op.c op.h
+____________________________________________________________________________
+[   358] By: mbeattie                              on 1997/12/10  18:36:26
+        Log: Fix char*/unsigned char* clashes in util.c:fbm_instr and remove
+             a few extraneous trailing semicolons in perlvars.h.
+     Branch: perl
+           ! perlvars.h util.c
+____________________________________________________________________________
+[   357] By: mbeattie                              on 1997/12/10  18:33:53
+        Log: Start overhauling compiler. It was working at least minimally
+             right up until the final tweak of B.xs to add threadsv_names
+             at which point building it provokes a seg fault in perl while
+             doing the xsubpp :-(.
+     Branch: perl
+           ! op.h util.c
+     Branch: perlext
+	   ! Compiler/B.pm Compiler/B.xs Compiler/B/Asmdata.pm
+	   ! Compiler/B/C.pm Compiler/B/CC.pm Compiler/Makefile.PL
+	   ! Compiler/bytecode.pl Compiler/byteperl.c Compiler/byterun.c
+	   ! Compiler/byterun.h Compiler/cc_harness Compiler/cc_runtime.h
+	   ! Compiler/ccop.c Compiler/ccop.h Compiler/test_harness
+           ! Compiler/test_harness_cc
+____________________________________________________________________________
+[   356] By: mbeattie                              on 1997/12/10  13:43:32
+        Log: Fix perl_os_thread typedef for pthreads. Tweak SvTAINT so that
+             sv_setfoo functions go back to not needing dTHR. Fix Configure
+             to check for already-existing -thread on archname and to check
+             better for d_pthread_created_joinable.
+     Branch: perl
+           ! Configure perl.h sv.c sv.h thread.h
+____________________________________________________________________________
+[   355] By: mbeattie                              on 1997/12/10  10:53:58
+        Log: Minor fix/speedup to util.c:fbm_instr:
+             Subject: 5.004_55: Minor regexp patch
+             Date: Fri, 5 Dec 1997 05:09:54 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! util.c
+____________________________________________________________________________
+[   354] By: mbeattie                              on 1997/12/10  10:41:25
+        Log: Patches for IRIX, AIX and some generic stuff:
+             Subject: [PATCH] _55: Mostly AIX stuff but also IRIX and generic
+             Date: Sat, 29 Nov 1997 08:35:30 -0800 (PST)
+             From: Jarkko Hietaniemi 
+             (checked/ignored a few rejects; tweaked wording).
+     Branch: perl
+	   ! Configure README.threads config_h.SH embed.h
+	   ! ext/DynaLoader/dl_aix.xs global.sym hints/aix.sh
+           ! hints/irix_6.sh
+____________________________________________________________________________
+[   353] By: mbeattie                              on 1997/12/10  10:10:19
+        Log: Integrate win32 back into mainline (trivial).
+     Branch: perl
+	  +> embedvar.h intrpvar.h perlvars.h thrdvar.h win32/config.gc
+          +> win32/config_H.gc
+          !> (integrate 36 files)
+____________________________________________________________________________
+[   352] By: nick                                  on 1997/12/09  17:36:45
+        Log: Resolve win32 - Sarathy's tweak.
+     Branch: ansiperl
+          !> win32/makedef.pl
+____________________________________________________________________________
+[   351] By: gsar                                  on 1997/12/08  06:13:04
+        Log: re-add PERLVARI?C? change that somehow went missing in makedef.pl
+     Branch: win32/perl
+           ! win32/makedef.pl
+____________________________________________________________________________
+[   350] By: nick                                  on 1997/12/05  00:56:03
+        Log: Resolve ansiperl against win32
+     Branch: ansiperl
+           - win32/makegcc.mk
+	  !> embed.h embed.pl embedvar.h global.sym miniperlmain.c perl.h
+	  !> perlvars.h win32/Makefile win32/config.gc win32/makedef.pl
+          !> win32/makefile.mk win32/perllib.c win32/win32.h
+____________________________________________________________________________
+[   349] By: gsar                                  on 1997/12/02  07:28:23
+        Log: Revert to keeping (some) constant strings as globals
+     Branch: win32/perl
+	   ! embed.h embed.pl embedvar.h global.sym miniperlmain.c perl.h
+           ! perlvars.h win32/makedef.pl win32/perllib.c
+____________________________________________________________________________
+[   348] By: gsar                                  on 1997/12/02  05:38:06
+        Log: makegcc.mk merged into makefile.mk, so makegcc.mk is gone.
+             Other minor fixes.  Now is a good time to get the changes in win32 branch.
+     Branch: win32/perl
+           - win32/makegcc.mk
+	   ! win32/Makefile win32/config.gc win32/makefile.mk win32/win32.h
+____________________________________________________________________________
+[   347] By: gsar                                  on 1997/12/02  03:32:55
+        Log: Integrate winansi again.  Result builds and passes all tests on all
+             three compilers.
+     Branch: win32/perl
+	  !> lib/ExtUtils/MM_Win32.pm win32/config.gc win32/makefile.mk
+          !> win32/makegcc.mk win32/win32.h
+____________________________________________________________________________
+[   346] By: gsar                                  on 1997/12/02  03:28:23
+        Log: various hacks to get mingw32 to build.  Sync Makefile with makefile.mk.
+             makegcc.mk to be merged into makefile.mk soon.
+     Branch: win32/perl
+	   ! lib/ExtUtils/MM_Win32.pm win32/Makefile win32/config.gc
+	   ! win32/makedef.pl win32/makefile.mk win32/makegcc.mk
+           ! win32/win32.h
+____________________________________________________________________________
+[   345] By: nick                                  on 1997/12/02  01:57:17
+        Log: Add a 4th step (yes FOUR) to dll build process for gcc.
+             Now runs again...
+     Branch: ansiperl
+           ! lib/ExtUtils/MM_Win32.pm
+____________________________________________________________________________
+[   344] By: nick                                  on 1997/12/02  01:11:16
+        Log: Sarathy's patch 
+     Branch: ansiperl
+	   ! lib/ExtUtils/MM_Win32.pm win32/config.gc win32/makefile.mk
+           ! win32/makegcc.mk win32/win32.h
+____________________________________________________________________________
+[   343] By: gsar                                  on 1997/12/01  04:37:06
+        Log: Reverse integrate to get all of Nick's changes over at winansi (win32/perl/*
+             is identical to ansiperl/* now)
+     Branch: win32/perl
+          +> embedvar.h intrpvar.h perlvars.h thrdvar.h
+          !> (integrate 34 files)
+____________________________________________________________________________
+[   342] By: nick                                  on 1997/12/01  04:01:57
+        Log: Builds and passes all tests with gcc on Win32 - phew!
+     Branch: ansiperl
+	   ! embed.h embedvar.h ext/Opcode/Opcode.xs global.sym perl.h
+           ! proto.h util.c win32/makedef.pl
+____________________________________________________________________________
+[   341] By: nick                                  on 1997/12/01  02:54:29
+        Log: Create a struct for all perls globals (as an option)
+             Mainly for Mingw32 which cannot import data.
+             Now only Opcode tests fail (op_desc/op_name not 
+             handled yet stuff)
+     Branch: ansiperl
+	   ! EXTERN.h embed.h embed.pl embedvar.h ext/Thread/Thread.xs
+	   ! global.sym miniperlmain.c perl.c perl.h perlvars.h pp_hot.c
+	   ! proto.h run.c util.c win32/Makefile win32/makedef.pl
+	   ! win32/makegcc.mk win32/perllib.c win32/win32.c win32/win32.h
+           ! win32/win32iop.h win32/win32thread.c
+____________________________________________________________________________
+[   340] By: nick                                  on 1997/11/30  20:21:10
+        Log: Fixup exports in non -DDEBUGGING case
+     Branch: ansiperl
+           ! win32/makedef.pl
+____________________________________________________________________________
+[   339] By: nick                                  on 1997/11/30  20:10:04
+        Log: Disable hard-coded -DDEBUGGING
+     Branch: ansiperl
+           ! win32/config_h.PL
+____________________________________________________________________________
+[   338] By: nick                                  on 1997/11/30  20:00:19
+        Log: embed.pl now reads *var*.h to do its stuff.
+             Split generated embed.h into two - new embedvar.h
+             is #included when 'op' etc. will not mess up proto.h etc.
+             Removed #define foo (thr->Tfoo) from thread.h
+             Added some 'missing' symbols to global.sym, removed
+             those in the *var*.h files
+             Has build all MULTIPLICITY/USE_THREADS options on win32
+             with VC++ (and passed tests), but not with exactly this set
+             of files.
+     Branch: ansiperl
+           + embedvar.h
+	   ! embed.h embed.pl global.sym interp.sym intrpvar.h perl.h
+	   ! perlvars.h regcomp.c thrdvar.h thread.h win32/Makefile
+           ! win32/makedef.pl
+____________________________________________________________________________
+[   337] By: nick                                  on 1997/11/29  23:55:31
+        Log: Globals and structs via macros - part 1 of N
+             - introduce perlvars.h intrpvar.h and thrdvar.h
+             - change perl.h and thread.h to include them with
+             appropriate macros defined
+             - result is status-quo but with macros
+             - next step is to tweak embed.* to capitalize on 
+             new easy-to-find info.
+     Branch: ansiperl
+           + intrpvar.h perlvars.h thrdvar.h
+           ! perl.h thread.h win32/Makefile
+____________________________________________________________________________
+[   336] By: nick                                  on 1997/11/29  19:13:55
+        Log: VC++ default to threaded
+     Branch: ansiperl
+           ! win32/Makefile
+____________________________________________________________________________
+[   335] By: nick                                  on 1997/11/29  18:38:26
+        Log: Avoid __declspec(thread) by default, for both scratch
+             return areas and THR stuff. Use struct thread intern instead.
+     Branch: ansiperl
+	   ! win32/win32.c win32/win32.h win32/win32sck.c
+           ! win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   334] By: nick                                  on 1997/11/29  17:49:04
+        Log: Non-threaded build fix
+     Branch: ansiperl
+           ! win32/win32thread.c
+____________________________________________________________________________
+[   333] By: nick                                  on 1997/11/29  17:29:07
+        Log: Sort out malloc_mutex for perl's malloc
+             Remove BINCOMPAT3 from embed.pl 
+             Add dependancy to CORE_H for PERL95_OBJ
+     Branch: ansiperl
+	   ! dosish.h embed.h embed.pl global.sym perl.h win32/Makefile
+           ! win32/win32.c
+____________________________________________________________________________
+[   332] By: nick                                  on 1997/11/29  16:21:01
+        Log: Integrate win32 into ansiperl
+     Branch: ansiperl
+	  !> README.threads hints/irix_6.sh lib/Test/Harness.pm
+	  !> lib/perl5db.pl malloc.c miniperlmain.c perl.h sv.c t/TEST
+	  !> t/lib/anydbm.t t/lib/db-btree.t t/lib/db-hash.t
+	  !> t/lib/db-recno.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t
+	  !> t/lib/safe2.t t/lib/sdbm.t t/op/pat.t t/op/taint.t
+          !> win32/perllib.c
+____________________________________________________________________________
+[   331] By: nick                                  on 1997/11/29  01:35:45
+        Log: GCC + Threads on Win32 - best gcc results yet
+     Branch: ansiperl
+	   ! XSUB.h perl.h thread.h win32/makedef.pl win32/makegcc.mk
+	   ! win32/win32.h win32/win32iop.h win32/win32thread.c
+           ! win32/win32thread.h
+____________________________________________________________________________
+[   330] By: nick                                  on 1997/11/28  23:05:08
+        Log: Un-botch gcc workround
+     Branch: ansiperl
+           ! XSUB.h
+____________________________________________________________________________
+[   329] By: nick                                  on 1997/11/28  22:39:39
+        Log: Builds completely with Mingw32, dynamic loaded extensions
+             don't work yet - suspect __declspec() non-implemented issues.
+     Branch: ansiperl
+	   ! XSUB.h lib/ExtUtils/Command.pm lib/ExtUtils/MM_Win32.pm
+	   ! lib/ExtUtils/Mksymlists.pm win32/config.gc win32/makegcc.mk
+           ! win32/runperl.c win32/win32.c win32/win32iop.h
+____________________________________________________________________________
+[   328] By: gsar                                  on 1997/11/28  05:48:15
+        Log: integrate winansi.
+     Branch: win32/perl
+          +> win32/config.gc win32/config_H.gc win32/makegcc.mk
+           ! perl.h
+	  !> dosish.h hv.c win32/dl_win32.xs win32/include/sys/socket.h
+	  !> win32/makedef.pl win32/makefile.mk win32/runperl.c
+          !> win32/win32.c win32/win32.h win32/win32iop.h win32/win32sck.c
+____________________________________________________________________________
+[   327] By: gsar                                  on 1997/11/28  05:38:48
+        Log: Integrate mainline.
+     Branch: win32/perl
+	  !> README.threads hints/irix_6.sh lib/Test/Harness.pm
+	  !> lib/perl5db.pl malloc.c miniperlmain.c sv.c t/TEST
+	  !> t/lib/anydbm.t t/lib/db-btree.t t/lib/db-hash.t
+	  !> t/lib/db-recno.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t
+	  !> t/lib/safe2.t t/lib/sdbm.t t/op/pat.t t/op/taint.t
+          !> win32/perllib.c
+____________________________________________________________________________
+[   326] By: nick                                  on 1997/11/27  19:13:36
+        Log: GCC builds perl.dll and perl.exe on Win32
+     Branch: ansiperl
+           ! win32/makedef.pl win32/makegcc.mk
+____________________________________________________________________________
+[   325] By: nick                                  on 1997/11/27  17:46:30
+        Log: Add files and tweak others to get 'native' Mingw32 gcc port as
+             far as building miniperl and perl.dll (but not import lib yet)
+             Seems to lack popen()/pclose() and fcloseall() and fflushall().
+             Also only CRTDLL not MCRTDLL so threading is probably not
+             possible yet.
+             Had to mess with win32iop.h's placement as we need __attribute__
+             to get STDCALL, and #define of printf messes up proto.h 
+     Branch: ansiperl
+           + win32/config.gc win32/config_H.gc win32/makegcc.mk
+	   ! dosish.h perl.h win32/dl_win32.xs win32/include/sys/socket.h
+	   ! win32/makefile.mk win32/runperl.c win32/win32.c win32/win32.h
+           ! win32/win32iop.h win32/win32sck.c
+____________________________________________________________________________
+[   324] By: mbeattie                              on 1997/11/27  17:08:06
+        Log: Give dire warnings about the IRIX 6.2 kernel panic.
+     Branch: perl
+           ! README.threads hints/irix_6.sh
+____________________________________________________________________________
+[   323] By: mbeattie                              on 1997/11/27  16:57:33
+        Log: Fix prototypes of sv_vsetpvfn and sv_vcatpvfn:
+             Subject: Re: ANNOUNCE: perl 5.004_55 is available
+             Date: 27 Nov 1997 17:18:53 +0100
+             From: koenig@kulturbox.de (Andreas J. Koenig)
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[   322] By: mbeattie                              on 1997/11/27  16:12:15
+        Log: Integrate win32 branch back into mainline.
+     Branch: perl
+          !> (integrate 42 files)
+____________________________________________________________________________
+[   321] By: mbeattie                              on 1997/11/27  15:06:36
+        Log: Fix t/lib/safe2.t for SunOS 4.1.3:
+             Subject: Re: ANNOUNCE: perl 5.004_55 is available
+             Date: Thu, 27 Nov 1997 10:46:42 +0000 (GMT)
+             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+     Branch: perl
+           ! t/lib/safe2.t
+____________________________________________________________________________
+[   320] By: mbeattie                              on 1997/11/27  15:02:59
+        Log: Fix MYMALLOC (wrong #define in malloc.c):
+             Subject: 5.004_55: MYMALLOC completely busted
+             Date: Thu, 27 Nov 1997 01:08:16 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! malloc.c
+____________________________________________________________________________
+[   319] By: mbeattie                              on 1997/11/27  15:01:37
+        Log: Fix newSVrv so sv_setref_foo work better:
+             Subject: [PATCH] [5.004_55] newSVrv (again)
+             Date: Thu, 27 Nov 1997 00:25:50 -0500
+             From: Owen Taylor 
+     Branch: perl
+           ! sv.c
+____________________________________________________________________________
+[   318] By: mbeattie                              on 1997/11/27  14:59:03
+        Log: Output skipped test information in test suite:
+             Subject: 5.004_55: Making test harness platform_aware
+             Date: Wed, 26 Nov 1997 17:16:55 -0500 (EST)
+             Date: Wed, 26 Nov 1997 17:16:55 -0500 (EST)
+     Branch: perl
+	   ! lib/Test/Harness.pm t/TEST t/lib/anydbm.t t/lib/db-btree.t
+	   ! t/lib/db-hash.t t/lib/db-recno.t t/lib/gdbm.t t/lib/ndbm.t
+           ! t/lib/odbm.t t/lib/sdbm.t t/op/taint.t
+____________________________________________________________________________
+[   317] By: mbeattie                              on 1997/11/27  14:55:15
+        Log: Add 'W'atch command to debugger and improve help:
+             Subject: 5.004_55: Debugger patch again
+             Date: Wed, 26 Nov 1997 17:05:57 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! lib/perl5db.pl
+____________________________________________________________________________
+[   316] By: mbeattie                              on 1997/11/27  14:52:44
+        Log: Stop double initialisation of malloc_mutex:
+             Subject: 5.004_55: Double initialiazation of malloc_mutex
+             Date: Wed, 26 Nov 1997 16:51:43 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           ! miniperlmain.c win32/perllib.c
+____________________________________________________________________________
+[   315] By: mbeattie                              on 1997/11/27  14:48:58
+        Log: Fix PVLV case in sv_setsv (plus tests in op/pat.t).
+     Branch: perl
+           ! sv.c t/op/pat.t
+____________________________________________________________________________
+[   314] By: nick                                  on 1997/11/27  01:03:19
+        Log: Merge win32 and ansiperl branches post _55 tweaks from Sarathy.
+     Branch: ansiperl
+          !> (integrate 897 files)
+____________________________________________________________________________
+[   313] By: gsar                                  on 1997/11/26  03:20:55
+        Log: merge win32-aware installperl in ansiperl branch.
+     Branch: win32/perl
+          !> installperl
+____________________________________________________________________________
+[   312] By: gsar                                  on 1997/11/26  01:50:37
+        Log: Fix for C bug:
+             From: Gurusamy Sarathy 
+             Message-Id: <199711011946.OAA18882@aatma.engin.umich.edu>
+             Subject: [PATCH] Re: Sort grammar bug 
+             Date: Sat, 01 Nov 1997 14:46:35 -0500
+             ------
+             From: Hugo van der Sanden 
+             Message-Id: <199711021247.MAA01743@crypt.compulink.co.uk>
+             Subject: Re: Sort grammar bug 
+             Date: Sun, 02 Nov 1997 12:47:51 +0000
+     Branch: win32/perl
+           ! t/op/sort.t toke.c
+____________________________________________________________________________
+[   311] By: nick                                  on 1997/11/26  01:42:50
+        Log: Win32-ize installperl
+     Branch: ansiperl
+           ! installperl
+____________________________________________________________________________
+[   310] By: gsar                                  on 1997/11/26  01:36:39
+        Log: Another trivial patch:
+             From: Gurusamy Sarathy 
+             Message-Id: <199710300245.VAA04244@aatma.engin.umich.edu>
+             Subject: [PATCH] Re: Why doesn't XSRETURN have STMT_START/STMT_END brackets? 
+             Date: Wed, 29 Oct 1997 21:45:26 -0500
+     Branch: win32/perl
+           ! XSUB.h
+____________________________________________________________________________
+[   309] By: nick                                  on 1997/11/26  01:33:32
+        Log: Fixup _55 for Win32:
+             Missed thread :-> perl_thread changes
+             Two #define THR (not the same)
+             K&R style func in hv.c
+     Branch: ansiperl
+           ! hv.c win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   308] By: gsar                                  on 1997/11/26  01:30:21
+        Log: Sync yet another patch (this one manually edited):
+             From: Gurusamy Sarathy 
+             Message-Id: <199710290251.VAA14362@aatma.engin.umich.edu>
+             Subject: [PATCH] Re: local($@) gives core dump 
+             Date: Tue, 28 Oct 1997 21:51:25 -0500
+     Branch: win32/perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[   307] By: gsar                                  on 1997/11/26  01:22:10
+        Log: Sync another change from local repository.
+             From: Gurusamy Sarathy 
+             Message-Id: <199710290316.WAA15888@aatma.engin.umich.edu>
+             Subject: Re: do_postponed breaks with multiple interpreters 
+             Date: Tue, 28 Oct 1997 22:16:13 -0500
+     Branch: win32/perl
+           ! op.c
+____________________________________________________________________________
+[   306] By: gsar                                  on 1997/11/26  01:17:46
+        Log: Sync a change from local repository.
+             From: Gurusamy Sarathy 
+             Message-Id: <199710290106.UAA11485@aatma.engin.umich.edu>
+             Subject: [PATCH] Re: Core dump from using sockets w/ system or open(pipe) or "`"
+             Date: Tue, 28 Oct 1997 20:06:06 -0500
+     Branch: win32/perl
+           ! mg.c
+____________________________________________________________________________
+[   305] By: nick                                  on 1997/11/26  00:50:10
+        Log: Integrate mainline as of _55
+     Branch: ansiperl
+          +> emacs/ptags
+          !> (integrate 36 files)
+____________________________________________________________________________
+[   304] By: gsar                                  on 1997/11/26  00:27:57
+        Log: Various changes to make it build cleanly and pass all tests:
+             - needed to run `perl embed.pl`
+             - use PERL_CORE instead of PERLDLL in places that do mean PERL_CORE
+             - fix prototypes for a few declarations (Borland is finally quiet)
+             - move declaration of Mymalloc etc to perl.h (since win32 and other
+             ports may #define malloc themselves, to let extensions bind to
+             the version that perl used)
+             - move struct reg_data into a public header file, since it is
+             referenced in a public datatype
+             - win32 makefile fixes
+             - fix remaining s/thread/perl_thread/
+     Branch: win32/perl
+	   ! EXTERN.h embed.h ext/DynaLoader/dlutils.c
+	   ! ext/SDBM_File/sdbm/sdbm.h hv.c perl.h proto.h regcomp.h
+	   ! regexp.h win32/Makefile win32/dl_win32.xs win32/makefile.mk
+           ! win32/win32.h win32/win32iop.h win32/win32thread.c
+____________________________________________________________________________
+[   303] By: gsar                                  on 1997/11/25  20:57:31
+        Log: Fixup the places where the automatic merge got it wrong.
+             Previous change (#302) was just a normal integration--ignore the
+             "reverse" in there.
+     Branch: win32/perl
+           ! op.c perl.h
+____________________________________________________________________________
+[   302] By: gsar                                  on 1997/11/25  20:32:12
+        Log: reverse integrate mainline
+     Branch: win32/perl
+          +> emacs/ptags
+          !> (integrate 896 files)
+
+----------------
+Version 5.004_55
+----------------
+
+____________________________________________________________________________
+[   301] By: mbeattie                              on 1997/11/25  17:59:53
+        Log: Fix minor thinkos in hv.c and pp_ctl.c. This is 5.004_55.
+     Branch: perl
+           ! hv.c pp_ctl.c
+____________________________________________________________________________
+[   300] By: mbeattie                              on 1997/11/25  16:29:36
+        Log: Add t/avhv.t to MANIFEST and bump patchlevel.h to 55.
+     Branch: perl
+           ! MANIFEST patchlevel.h
+____________________________________________________________________________
+[   299] By: mbeattie                              on 1997/11/25  15:59:16
+        Log: Move malloc_mutex initialisation/destruction:
+             Subject:  patch to 5.004_54 for pthreads with Perl's malloc
+             From: ilya@math.ohio-state.edu (Ilya Zakharevich)
+     Branch: perl
+	   ! malloc.c os2/os2.c os2/os2ish.h perl.c perl.h plan9/plan9ish.h
+           ! unixish.h vms/vmsish.h
+____________________________________________________________________________
+[   298] By: mbeattie                              on 1997/11/25  15:49:22
+        Log: Make hv_ functions cope better with 'm'-magic:
+             Subject: [5.004_54] Another neglected patch
+             Date: Fri, 21 Nov 1997 22:28:17 -0500
+             From: Owen Taylor 
+     Branch: perl
+           ! hv.c
+____________________________________________________________________________
+[   297] By: mbeattie                              on 1997/11/25  15:47:36
+        Log: Fix typo in Thread.xs.
+     Branch: perl
+           ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[   296] By: mbeattie                              on 1997/11/25  15:42:07
+        Log: Integrate from ansi branch to mainline.
+     Branch: perl
+          !> (integrate 890 files)
+____________________________________________________________________________
+[   295] By: mbeattie                              on 1997/11/25  14:29:31
+        Log: AIX patch for DynaLoader/dl_aix.xs and hints/aix.sh:
+             Subject: Re: _54 on AIX
+             Date: Tue, 25 Nov 1997 00:49:52 -0800 (PST)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! ext/DynaLoader/dl_aix.xs
+____________________________________________________________________________
+[   294] By: mbeattie                              on 1997/11/25  14:29:10
+        Log: AIX patch for hints/aix.sh:
+             Subject: Re: _54 on AIX
+             Date: Tue, 25 Nov 1997 00:49:52 -0800 (PST)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! hints/aix.sh
+____________________________________________________________________________
+[   291] By: mbeattie                              on 1997/11/25  14:17:05
+        Log: Fix scalar dereference of threadsv variables (e.g. $$_).
+     Branch: perl
+           ! op.c op.h
+____________________________________________________________________________
+[   290] By: mbeattie                              on 1997/11/25  14:16:29
+        Log: AIX patch (including Configure support for {sched,pthread}_yield,
+             pthread initial detach state, renaming perl_thread to perl_os_thread
+             and struct thread to struct perl_thread):
+             Subject: Re: _54 on AIX
+             Date: Thu, 20 Nov 1997 06:10:51 -0800 (PST)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+	   ! Configure config_h.SH cv.h ext/DB_File/DB_File.xs
+	   ! ext/Thread/Makefile.PL ext/Thread/Thread.pm
+	   ! ext/Thread/Thread.xs fakethr.h hints/aix.sh perl.c perl.h pp.h
+	   ! proto.h sv.h thread.h util.c win32/win32thread.c
+           ! win32/win32thread.h
+____________________________________________________________________________
+[   289] By: mbeattie                              on 1997/11/25  12:33:02
+        Log: Rename perl_thread to perl_os_thread.
+     Branch: perl
+           ! fakethr.h thread.h util.c win32/win32thread.h
+____________________________________________________________________________
+[   288] By: mbeattie                              on 1997/11/25  12:27:35
+        Log: Remove bincompat3 support:
+             Subject: Re: ANNOUNCE: perl5.004_54 is available
+             Date: Wed, 19 Nov 1997 08:07:10 -0800 (PST)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! Configure INSTALL embed.h global.sym malloc.c
+____________________________________________________________________________
+[   287] By: mbeattie                              on 1997/11/25  12:23:50
+        Log: Emacs/tags update:
+             Subject: Emacs/tags update for 5.004_54
+             Date: Fri, 21 Nov 1997 15:02:09 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+           + emacs/ptags
+           ! MANIFEST Makefile.SH emacs/cperl-mode.el
+____________________________________________________________________________
+[   286] By: nick                                  on 1997/11/23  23:03:56
+        Log: Add $$_ test 
+     Branch: ansiperl
+           ! t/op/ref.t
+____________________________________________________________________________
+[   285] By: gsar                                  on 1997/11/23  08:26:00
+        Log: Initial reverse integration of winansi branch.
+     Branch: win32/perl
+          !> (integrate 50 files)
+____________________________________________________________________________
+[   284] By: gsar                                  on 1997/11/23  07:32:24
+        Log: Add to docs about the BEGIN { shift } feature.  Make the change
+             yet simpler using CvUNIQUE(compcv) instead of subline (Chip's idea).
+     Branch: win32/perl
+           ! op.c perly.c perly.y pod/perlfunc.pod vms/perly_c.vms
+____________________________________________________________________________
+[   283] By: nick                                  on 1997/11/22  21:29:30
+        Log: Duplicate perl_threadsv
+     Branch: ansiperl
+           ! global.sym
+____________________________________________________________________________
+[   282] By: nick                                  on 1997/11/22  21:18:11
+        Log: Munge pseudo-Configure stuff to add -thread to archname as
+             Malcolm seems to think that is way to test for threads.
+             Update @INC stuffing hackery to have traditional @INC
+             search order archlib, privlib, sitearch, site.
+     Branch: ansiperl
+	   ! t/lib/english.t win32/config.bc win32/config_H.bc
+	   ! win32/config_H.vc win32/config_h.PL win32/config_sh.PL
+           ! win32/makefile.mk win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   281] By: nick                                  on 1997/11/22  19:28:21
+        Log: Builds and passes all but english.t on win32 VC++
+     Branch: ansiperl
+	   ! global.sym pp_ctl.c win32/Makefile win32/config.vc
+           ! win32/config_H.vc win32/win32thread.h
+____________________________________________________________________________
+[   280] By: nick                                  on 1997/11/22  18:10:50
+        Log: ansiperl builds with Borland C++ again
+     Branch: ansiperl
+	   ! pp_ctl.c regcomp.c regcomp.h regexec.c toke.c util.c
+	   ! win32/config.bc win32/config_H.bc win32/perlglob.c
+           ! win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   279] By: nick                                  on 1997/11/22  16:42:51
+        Log: Resolve ansiperl against mainline
+     Branch: ansiperl
+	  !> embed.h ext/Thread/Thread.xs global.sym op.c op.h perl.c
+	  !> perl.h pp.c pp_ctl.c pp_hot.c proto.h scope.c scope.h
+          !> t/lib/english.t thread.h toke.c util.c
+____________________________________________________________________________
+[   278] By: nick                                  on 1997/11/22  16:30:27
+        Log: Resolve ansiperl against win32
+     Branch: ansiperl
+          !> (integrate 55 files)
+____________________________________________________________________________
+[   277] By: gsar                                  on 1997/11/22  09:48:02
+        Log: - shift() inside BEGIN|END|INIT now shifts @ARGV instead of @_
+             - added a test for the above
+             - fixed up perly.c.diff and vms/perl_c.vms for above and added the
+             ansification hunks
+     Branch: win32/perl
+           ! op.c perly.c perly.c.diff perly.y t/op/misc.t vms/perly_c.vms
+____________________________________________________________________________
+[   276] By: gsar                                  on 1997/11/22  07:24:01
+        Log: Generic change in win32 branch: don't just turn on CRIPPLED_CC
+             when USE_THREADS.  GCC for instance, can do without macros that use
+             globals.  Instead, selectively re#define only those macros
+             that use globals to their functional equivalents.  Tests 100% on
+             Solaris/gcc (after `chmod +x t/op/nothread.t t/lib/thread.t` (hint,hint)).
+     Branch: win32/perl
+           ! perl.h sv.h
+____________________________________________________________________________
+[   275] By: gsar                                  on 1997/11/22  05:27:04
+        Log: Integrate mainline.
+     Branch: win32/perl
+          +> ext/Thread/die.t ext/Thread/die2.t t/op/avhv.t
+           - lib/Class/Fields.pm lib/ISA.pm
+          !> (integrate 41 files)
+____________________________________________________________________________
+[   274] By: mbeattie                              on 1997/11/21  18:28:22
+        Log: $_ is now per-thread (rather a lot of changes). Only tested under
+             *-linux-thread at the moment.
+     Branch: perl
+	   ! embed.h ext/Thread/Thread.xs global.sym op.c op.h perl.c
+	   ! perl.h pp.c pp_ctl.c pp_hot.c proto.h scope.c scope.h
+           ! t/lib/english.t thread.h toke.c util.c
+____________________________________________________________________________
+[   273] By: mbeattie                              on 1997/11/21  10:31:29
+        Log: Filter patch to toke.c:
+             Subject: Tiny core patch for source filters
+             Date: Thu, 20 Nov 1997 23:12:09 +0000 (GMT)
+             From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+     Branch: perl
+           ! toke.c
+____________________________________________________________________________
+[   272] By: nick                                  on 1997/11/21  00:54:43
+        Log: Basic integrate of lastest perl into ansiperl
+     Branch: ansiperl
+          +> ext/Thread/die.t ext/Thread/die2.t t/op/avhv.t
+           - lib/Class/Fields.pm lib/ISA.pm
+           ! win32/win32.c win32/win32.h
+          !> (integrate 57 files)
+____________________________________________________________________________
+[   271] By: mbeattie                              on 1997/11/20  12:12:00
+        Log: Initial stab at IRIX configuration support for threading. Manually
+             applied parts of following patches:
+             Subject: Perl 5.004_54 on IRIX
+             Date: Wed, 19 Nov 1997 18:37:14 +0200 (EET)
+             From: Jarkko Hietaniemi 
+             Subject: Re: Perl 5.004_54 on IRIX
+             Date: 19 Nov 1997 17:10:17 -0800
+             From: Scott Henry 
+     Branch: perl
+	   ! README.threads hints/irix_6.sh hints/irix_6_0.sh
+           ! hints/irix_6_1.sh perl.h
+____________________________________________________________________________
+[   270] By: mbeattie                              on 1997/11/19  17:45:37
+        Log: The new jumbo regexp stuff did SSPUSHINT on a char* instead of
+             SSPUSHPTR causing Alpha to core dump in pat.t. While fixing it,
+             also fixed two instances of referring to SVs after destruction.
+     Branch: perl
+           ! regcomp.c regexec.c
+____________________________________________________________________________
+[   269] By: mbeattie                              on 1997/11/19  15:33:23
+        Log: avhv_keys under Digital UNIX made avhv.t fail because *keysp was
+             changed by mg_get(*keysp) (!). Introducing a new local variable
+             fixed it but I don't know if it's a compiler problem or some
+             other corruption happening elsewhere.
+     Branch: perl
+           ! av.c
+____________________________________________________________________________
+[   268] By: mbeattie                              on 1997/11/19  11:39:49
+        Log: Let Configure sort out get{host,net}byaddr* prototypes:
+             Subject: [PATCH] 5.004_54: little something for
+             get{hos,ne}tbyaddr protos (Configure, config_h.SH, pp_sys.c)
+             Date: Tue, 18 Nov 1997 19:08:19 +0200 (EET)
+             From: Jarkko Hietaniemi 
+     Branch: perl
+           ! Configure config_h.SH pp_sys.c
+____________________________________________________________________________
+[   267] By: mbeattie                              on 1997/11/19  11:04:15
+        Log: Jumbo regexp patch applied (with minor fix-up tweaks):
+             Subject: Version 7 of Jumbo RE patch available
+             Date: Sun, 16 Nov 1997 00:29:39 -0500 (EST)
+             From: Ilya Zakharevich 
+     Branch: perl
+	   ! MANIFEST dump.c embed.h global.sym mg.c op.c op.h perl.c
+	   ! perl.h pod/perlre.pod pp.c pp_ctl.c pp_hot.c proto.h regcomp.c
+	   ! regcomp.h regexec.c regexp.h sv.c t/op/misc.t t/op/pat.t
+	   ! t/op/re_tests t/op/regexp.t t/op/split.t t/op/subst.t toke.c
+           ! util.c
+____________________________________________________________________________
+[   266] By: mbeattie                              on 1997/11/18  17:26:09
+        Log: Separate avhv_foo() key handling into avhv_keys(). Slightly tweaked
+             version of patch:
+             Subject: tie fake hash patch for 5.004_54
+             Date: Sat, 15 Nov 1997 19:18:30 -0500
+             From: Joshua Pritikin 
+     Branch: perl
+           + t/op/avhv.t
+           ! av.c embed.h global.sym proto.h
+____________________________________________________________________________
+[   265] By: mbeattie                              on 1997/11/18  16:51:04
+        Log: Bring MANIFEST up to date. Add new thread tests.
+     Branch: perl
+           + ext/Thread/die.t ext/Thread/die2.t
+           ! MANIFEST
+____________________________________________________________________________
+[   264] By: mbeattie                              on 1997/11/18  16:41:27
+        Log: magic_setisa enhanced to update %FIELDS automatically when @ISA
+             is assigned to. Added tests to t/op/array.t. magic_setisa now
+             warns about including non-existent packages in @ISA when -w is on.
+     Branch: perl
+           - lib/Class/Fields.pm lib/ISA.pm
+           ! mg.c t/op/array.t
+____________________________________________________________________________
+[   263] By: mbeattie                              on 1997/11/18  16:38:57
+        Log: Fix typo in win32 -> mainline integration.
+     Branch: perl
+           ! perl.h
+____________________________________________________________________________
+[   262] By: mbeattie                              on 1997/11/18  11:56:09
+        Log: Integrate win32 branch back into mainline.
+     Branch: perl
+           - win32/win32io.c win32/win32io.h
+           ! op.c
+          !> (integrate 30 files)
+____________________________________________________________________________
+[   261] By: gsar                                  on 1997/11/18  00:14:02
+        Log: Export our own FD_SET() et al to complete sockets-as-handles pretense.
+     Branch: win32/perl
+	   ! win32/config.bc win32/config.vc win32/config_H.bc
+           ! win32/config_H.vc win32/include/sys/socket.h win32/win32sck.c
+____________________________________________________________________________
+[   260] By: nick                                  on 1997/11/16  23:16:16
+        Log: Generic file changes for MYMALLOC
+     Branch: ansiperl
+           ! miniperlmain.c perl.c
+____________________________________________________________________________
+[   259] By: nick                                  on 1997/11/16  23:14:36
+        Log: MYMALLOC for Win32:
+             1. Initialize malloc_mutex before it is used (all platforms!)
+             2. Adjust #ifdef muddle to allow MYMALLOC and win32_ to coexist
+             3. Tweak win32/config*.* to define MYMALLOC
+             4. Provide sbrk() in terms of VirtualAlloc().
+             
+             Also fixup -MT (perl95) build to handle Perl_current_thread
+             via call to DLL (as though an extension).
+     Branch: ansiperl
+	   ! win32/Makefile win32/config.bc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.vc win32/makedef.pl
+	   ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h
+           ! win32/win32iop.h win32/win32thread.h
+____________________________________________________________________________
+[   258] By: nick                                  on 1997/11/15  20:42:28
+        Log: Implement dTHR via __declspec(thread) - part 2
+     Branch: ansiperl
+           ! win32/makedef.pl win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   257] By: nick                                  on 1997/11/15  19:52:53
+        Log: Use __declspec(thread) var rather tha TslAlloc & co.
+     Branch: ansiperl
+           ! win32/makedef.pl win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   256] By: gsar                                  on 1997/11/15  02:58:09
+        Log: Add #include guard in Thread.xs so it will build even under
+             no USE_THREADS (for win32).  This was missed because of edit
+             w/o checkout perforce kludge.
+     Branch: win32/perl
+           ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[   255] By: nick                                  on 1997/11/15  00:33:46
+        Log: Integrate mainline (5.004_54?) into ansiperl
+     Branch: ansiperl
+	  !> MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
+	  !> ext/Thread/Thread/Specific.pm ext/Thread/join.t
+	  !> ext/Thread/specific.t global.sym lib/fields.pm mg.c op.c
+	  !> perl.c perl.h pp_ctl.c pp_hot.c pp_sys.c proto.h scope.c
+          !> t/io/pipe.t t/lib/io_pipe.t t/op/magic.t thread.h
+____________________________________________________________________________
+[   254] By: nick                                  on 1997/11/15  00:25:26
+        Log: Interate win32 into ansiperl
+     Branch: ansiperl
+	  +> ext/Thread/Thread/Specific.pm ext/Thread/specific.t
+          +> lib/fields.pm
+	  !> MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
+	  !> ext/Thread/join.t global.sym mg.c op.c perl.c perl.h pp_ctl.c
+	  !> pp_hot.c pp_sys.c proto.h scope.c t/io/pipe.t t/lib/io_pipe.t
+	  !> t/op/magic.t thread.h win32/Makefile win32/config.bc
+          !> win32/config.vc win32/config_sh.PL win32/makefile.mk
+____________________________________________________________________________
+[   253] By: gsar                                  on 1997/11/14  22:04:58
+        Log: Integrate mainline changes into win32 branch.  Now would be a good time
+             to reverse integrate the win32 branch into mainline.
+     Branch: win32/perl
+	  +> ext/Thread/Thread/Specific.pm ext/Thread/specific.t
+          +> lib/fields.pm
+	  !> MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
+	  !> ext/Thread/join.t global.sym mg.c op.c perl.c perl.h pp_ctl.c
+	  !> pp_hot.c pp_sys.c proto.h scope.c t/io/pipe.t t/lib/io_pipe.t
+          !> t/op/magic.t thread.h
+
+----------------
+Version 5.004_54
+----------------
+
+____________________________________________________________________________
+[   252] By: mbeattie                              on 1997/11/14  15:07:19
+        Log: Two more delays added to test suite to help *-solaris-thread.
+     Branch: perl
+           ! t/io/pipe.t t/lib/io_pipe.t
+____________________________________________________________________________
+[   251] By: mbeattie                              on 1997/11/14  15:05:57
+        Log: Remove stale code from Thread.xs.
+     Branch: perl
+           ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[   250] By: mbeattie                              on 1997/11/14  10:12:40
+        Log: Add delay to signal handling in t/op/magic.t. (Solaris with pthreads
+             doesn't run handlers for self-sent signals until kill has returned.)
+     Branch: perl
+           ! t/op/magic.t
+____________________________________________________________________________
+[   249] By: gsar                                  on 1997/11/14  05:14:44
+        Log: Fix various details in win32 makefiles and Config.pm setup.
+             - ldflags is set for both compilers now
+             - extensions list is now correct
+             - delete perl95.exe on distclean
+             - cf_time now gets updated (once)
+             - ccdlflags is set for Borland
+             - fix startperl so dprofpp works
+     Branch: win32/perl
+	   ! win32/Makefile win32/config.bc win32/config.vc
+           ! win32/config_sh.PL win32/makefile.mk
+____________________________________________________________________________
+[   248] By: mbeattie                              on 1997/11/13  18:01:27
+        Log: Rewrite thread return code to distinguish between ordinary return
+             and die() and make join propagate the die. Add tiny method eval
+             which just does "return eval { shift->join; }". Add Thread::Specific
+             class for access to thread specific user data along with specific.t.
+             Rename Class to classname throughout Thread.xs for consistency.
+             Fix pp_specific to pp_threadsv in global.sym. Add support to
+             pp_entersub in pp_hot.c to lock stash for static locked methods.
+     Branch: perl
+	   + ext/Thread/Thread/Specific.pm ext/Thread/specific.t
+           + lib/fields.pm
+	   ! MANIFEST embed.h ext/Thread/Thread.pm ext/Thread/Thread.xs
+           ! ext/Thread/join.t global.sym mg.c pp_hot.c thread.h
+____________________________________________________________________________
+[   247] By: mbeattie                              on 1997/11/13  14:13:30
+        Log: Change CONTEXT to PERL_CONTEXT throughout source (since the #define
+             to avoid the Digital UNIX clash no longer works). Changed the #ifdef
+             in pp_sys.c for whether getnet* function get protoyped (since the
+             default had a broken prototype for getnetbyaddr).
+     Branch: perl
+	   ! mg.c op.c perl.c perl.h pp_ctl.c pp_hot.c pp_sys.c proto.h
+           ! scope.c thread.h
+____________________________________________________________________________
+[   246] By: nick                                  on 1997/11/13  02:44:40
+        Log: Integrate Win32 branch
+     Branch: ansiperl
+	   - configure ext/util/extliblist win32/bin/pl2bat.bat
+	   - win32/bin/search.bat win32/bin/test.bat win32/bin/webget.bat
+	   - win32/config.H win32/config.w32 win32/win32io.c
+           - win32/win32io.h
+          !> (integrate 905 files)
+____________________________________________________________________________
+[   245] By: nick                                  on 1997/11/13  00:47:54
+        Log: Integrate (-ay) win32 branch at its creation to 
+             establish and ancestor as per perkforce technote #9
+     Branch: ansiperl
+	  +> configure ext/util/extliblist win32/bin/pl2bat.bat
+	  +> win32/bin/search.bat win32/bin/test.bat win32/bin/webget.bat
+          +> win32/config.H win32/config.w32
+          !> (integrate 859 files)
+____________________________________________________________________________
+[   244] By: gsar                                  on 1997/11/12  22:26:39
+        Log: More cleanups of win32/win32*.[ch] files.  win32/win32iop.h now
+             contains the all the declarations and macros for the win32io layer.
+             New std-ish functions are exported now.  All win32-specific exported
+             functions begin with "win32_" consistently.  win32 version of
+             init_os_extras() is now exported, so embedders can get the in-core
+             xsubs.
+     Branch: win32/perl
+	   ! dosish.h win32/makedef.pl win32/win32.c win32/win32.h
+           ! win32/win32iop.h win32/win32sck.c
+____________________________________________________________________________
+[   243] By: gsar                                  on 1997/11/12  07:41:52
+        Log: Really delete deleted files.
+     Branch: win32/perl
+           - win32/win32io.c win32/win32io.h
+____________________________________________________________________________
+[   242] By: gsar                                  on 1997/11/12  07:40:54
+        Log: Egregious IOsubsystem code excised.  Phew, what a relief!  Two
+             files (win32/win32io.[ch]) completely removed, as are all traces
+             of them in makefiles and MANIFEST.  RunPerl() retains the void* arg
+             for later. Various myfoo() things regularized to my_foo().  CPP not
+             required anymore to create a perl binary :)
+     Branch: win32/perl
+	   ! MANIFEST win32/Makefile win32/makedef.pl win32/makefile.mk
+	   ! win32/perllib.c win32/runperl.c win32/win32.c win32/win32.h
+	   ! win32/win32io.c win32/win32io.h win32/win32iop.h
+           ! win32/win32sck.c
+____________________________________________________________________________
+[   241] By: gsar                                  on 1997/11/12  05:31:28
+        Log: Fix various win32 code blemishes:
+             - s/stolen/win32/g
+             - s/(CROAK|WARN)/lc($1)/eg
+             - remove deadcode from most places
+     Branch: win32/perl
+	   ! win32/makedef.pl win32/win32.c win32/win32io.c
+           ! win32/win32iop.h
+____________________________________________________________________________
+[   240] By: gsar                                  on 1997/11/12  04:36:29
+        Log: Carry over changes in ansiperl branch.  Win32 branch is now
+             the leading edge.
+     Branch: win32/perl
+	   ! embed.h global.sym perl.c win32/win32thread.c
+           ! win32/win32thread.h
+____________________________________________________________________________
+[   239] By: gsar                                  on 1997/11/12  03:39:57
+        Log: Add missing win32_closesocket() and export it (extension writers' complaint).
+     Branch: win32/perl
+           ! win32/include/sys/socket.h win32/makedef.pl win32/win32sck.c
+____________________________________________________________________________
+[   238] By: gsar                                  on 1997/11/12  03:25:17
+        Log: Clean up win32/win32sck.c (runtime load of Winsock now gone, it can be
+             done cleaner, if really needed (perhaps only for efficiency reasons?)).
+             Redundant EXTERN_C definitions and related warnings fixed.
+     Branch: win32/perl
+	   ! miniperlmain.c perl.h win32/perllib.c win32/win32io.c
+           ! win32/win32iop.h win32/win32sck.c
+____________________________________________________________________________
+[   237] By: nick                                  on 1997/11/12  02:45:15
+        Log: Fixup Win32
+             - #undef start_env before re-#defining it
+             - change pp_specific pp_threadsv in global.sym
+             - re-build embed.h
+             - avoid HAVE_THREAD_INTERN - we don't and empty struct
+             is a pain. If we did have it it would contain cached
+             values of things we can only get at _IN_ the thread
+             so new_struct_thread is wrong place to call it.
+             - add new macro SET_THREAD_SELF - we must (in main thread)
+             define in win32thread.h, support in win32thread.c,
+             test and call in perl.c
+     Branch: ansiperl
+	   ! embed.h global.sym perl.c thread.h win32/win32thread.c
+           ! win32/win32thread.h
+____________________________________________________________________________
+[   236] By: nick                                  on 1997/11/12  01:54:23
+        Log: Integrate mainline after it integrated us.
+             Accepted 'theirs' everywhere - so two branches should
+             now point to same files again.
+             Almost all of these were what was suggested, others were
+             whitespace diffs. A few dubious spots which we will now 
+             go fix.
+     Branch: ansiperl
+	  !> embed.h ext/DB_File/DB_File.xs ext/GDBM_File/GDBM_File.xs
+	  !> ext/Opcode/Opcode.pm ext/Thread/Thread.xs interp.sym mg.c op.c
+	  !> opcode.h opcode.pl perl.c perl.h pp.c pp_ctl.c pp_sys.c t/TEST
+	  !> t/lib/safe2.t t/lib/thread.t t/op/nothread.t thread.h toke.c
+          !> util.c
+____________________________________________________________________________
+[   235] By: gsar                                  on 1997/11/12  01:22:26
+        Log: Minor tweaks to add a thread_intern struct that should ultimately
+             contain all the win32-specific statics.
+             Win32 branch now passes all tests with or w/o USE_THREADS.
+     Branch: win32/perl
+           ! embed.h perl.c win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   234] By: gsar                                  on 1997/11/11  23:08:54
+        Log: Initial (untested) integration of mainline changes.
+     Branch: win32/perl
+           - configure
+          !> (integrate 89 files)
+____________________________________________________________________________
+[   233] By: mbeattie                              on 1997/11/11  18:07:30
+        Log: Typo in thread.h: ADD_THREAD_INTERN should be HAVE_THREAD_INTERN
+     Branch: perl
+           ! thread.h
+____________________________________________________________________________
+[   232] By: mbeattie                              on 1997/11/11  17:49:12
+        Log: t/TEST (reverted to @229 version) should have been included in the
+             previous change (231) but my way of recovering it didn't work
+             properly. The change 231 comments about successful tests applies
+             to this t/TEST (i.e. as of this change).
+     Branch: perl
+           ! t/TEST
+____________________________________________________________________________
+[   231] By: mbeattie                              on 1997/11/11  17:46:59
+        Log: Fix up ansiperl integration. Back to passing all expected tests
+             with usethreads. Untested with non-threaded perl.
+     Branch: perl
+	   ! embed.h ext/DB_File/DB_File.xs ext/GDBM_File/GDBM_File.xs
+           ! perl.c perl.h pp.c t/lib/thread.t t/op/nothread.t util.c
+____________________________________________________________________________
+[   230] By: mbeattie                              on 1997/11/11  16:36:22
+        Log: Initial integration of ansi branch into mainline (untested).
+     Branch: perl
+          +> t/lib/thread.t t/op/nothread.t thread.sym
+           - configure
+          !> (integrate 84 files)
+____________________________________________________________________________
+[   229] By: mbeattie                              on 1997/11/11  15:20:43
+        Log: Change name of OP_SPECIFIC to OP_THREADSV. Fixed perl_get_sv when
+             getting per-thread magicals. Fixed thr->errsv initialisation.
+     Branch: perl
+	   ! ext/Opcode/Opcode.pm op.c opcode.h opcode.pl perl.c pp.c
+           ! t/lib/safe2.t toke.c
+____________________________________________________________________________
+[   228] By: mbeattie                              on 1997/11/11  12:48:26
+        Log: Fix up $@ (ERRSV now refers to GvSV(errgv) for non-threaded perl and
+             thr->errsv for threaded perl). Fix pp_tie and pp_dbmopen to use
+             GvCV(gv) instead of gv so AUTOLOAD stuff works. All tests now pass
+             again for non-threaded perl. Enhanced perl_get_sv to return
+             per-thread magicals where necessary for threaded perl.
+     Branch: perl
+	   ! embed.h ext/Thread/Thread.xs interp.sym mg.c op.c perl.c
+           ! perl.h pp_ctl.c pp_sys.c thread.h toke.c util.c
+____________________________________________________________________________
+[   227] By: mbeattie                              on 1997/11/11  11:00:02
+        Log: hashlock bug.
+             
+             Jobs fixed ...
+             
+             hashlock fixed on 1997/11/11 by mbeattie@localhost
+             
+             Subject: [perl5.004_53; patch] Another hash-locking fix
+             Date: 23 Oct 1997 14:13:55 -0400
+             From: Owen Taylor 
+     Branch: bugs
+           + hashlock
+____________________________________________________________________________
+[   226] By: gsar                                  on 1997/11/11  02:11:23
+        Log: Slightly more refined lock() keyword recognition (using %INC).
+     Branch: win32/perl
+           ! toke.c
+____________________________________________________________________________
+[   225] By: gsar                                  on 1997/11/11  00:26:09
+        Log: "weak" lock keyword (hardcoded initial implementation) now works.
+             if not defined(&Thread::join) and defined(&__PACKAGE__::lock), 'lock'
+             is recognized as a sub, a regular keyword otherwise.  Could be
+             generalized by storing a flag for every op in OP struct, and turning
+             the flag off when Thread.xs loads.
+     Branch: win32/perl
+           ! toke.c
+____________________________________________________________________________
+[   224] By: gsar                                  on 1997/11/10  22:59:55
+        Log: Merge a patch in preparation for "weak keywords":
+             From: Gurusamy Sarathy 
+             Message-Id: <199710080618.CAA23899@aatma.engin.umich.edu>
+             Subject: [PATCH] global overrides for keywords
+             Date: Wed, 08 Oct 1997 02:18:23 -0400
+     Branch: win32/perl
+           ! embed.h interp.sym perl.c perl.h toke.c
+____________________________________________________________________________
+[   223] By: gsar                                  on 1997/11/10  22:41:31
+        Log: Remove runlevel.  It was used to count how many runops() calls
+             we were in the process of executing, and longjmp() to the topmost
+             one (if not already there).  We use a null top_env->je_prev
+             to distinguish that now.
+     Branch: win32/perl
+           ! embed.h interp.sym perl.h pp_ctl.c run.c thread.h util.c
+____________________________________________________________________________
+[   222] By: gsar                                  on 1997/11/10  04:47:48
+        Log: Win32 branch now contains all non-ansification changes in ansiperl branch.
+             USE_THREADS case builds and passes all tests using both compilers.
+             Additional tweaks:
+             - fixup win32/makedef.pl to skip more symbols for non-thread build.
+             - sync win32/Makefile with win32/makefile.mk
+             >>>Non-thread build fails a lot of tests.<<<
+     Branch: win32/perl
+           + thread.sym
+	   ! MANIFEST ext/Thread/Thread.xs perl.c perl.h pp_sys.c sv.c
+	   ! util.c win32/Makefile win32/config.bc win32/config_H.bc
+           ! win32/makedef.pl win32/makefile.mk
+____________________________________________________________________________
+[   221] By: gsar                                  on 1997/11/10  00:57:53
+        Log: Initial (untested) merge of all non-ansi changes on ansiperl branch
+             into win32 branch.
+     Branch: win32/perl
+           + t/lib/thread.t t/op/nothread.t
+	   ! MANIFEST embed.h ext/Opcode/Opcode.pm global.sym interp.sym
+	   ! perl.c proto.h sv.h t/lib/english.t t/op/misc.t thread.h
+	   ! util.c win32/Makefile win32/config.bc win32/config.vc
+	   ! win32/config_H.bc win32/config_H.vc win32/makedef.pl
+	   ! win32/makefile.mk win32/win32.c win32/win32.h win32/win32io.c
+	   ! win32/win32io.h win32/win32iop.h win32/win32sck.c
+           ! win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   220] By: gsar                                  on 1997/11/09  22:44:41
+        Log: Integrate latest mainline into win32 branch.
+     Branch: win32/perl
+          +> win32/win32thread.c win32/win32thread.h
+          !> (integrate 39 files)
+____________________________________________________________________________
+[   219] By: nick                                  on 1997/11/09  21:46:06
+        Log: Conditionalize english.t,
+             Enhance times() for NT,
+             (Failed) attempt to implement alarm(),
+             Fixed config.h dependancy in makefile.mk
+     Branch: ansiperl
+	   ! t/lib/english.t win32/config.bc win32/config_H.bc
+           ! win32/makefile.mk win32/win32.c
+____________________________________________________________________________
+[   218] By: nick                                  on 1997/11/09  15:38:00
+        Log: Dick Hardt's patch for build on Alpha
+     Branch: ansiperl
+           ! win32/Makefile
+____________________________________________________________________________
+[   217] By: nick                                  on 1997/11/09  03:31:20
+        Log: MakeMaker not in vofig noise fix for dmake
+     Branch: ansiperl
+           ! win32/config.bc win32/makefile.mk
+____________________________________________________________________________
+[   216] By: nick                                  on 1997/11/09  03:15:06
+        Log: Fix 'anydbm.t' - if the gv is passed 1st call to inherited
+             TIEHASH works, but 2nd call (after db is closed, attempt
+             to reopen) tries to AUTOLOAD TIEHASH rather than using
+             cached value.
+     Branch: ansiperl
+           ! pp_sys.c
+____________________________________________________________________________
+[   215] By: nick                                  on 1997/11/08  16:41:24
+        Log: Cleanup MakeMaker 'not in config' noise
+     Branch: ansiperl
+           ! win32/Makefile win32/config.vc
+____________________________________________________________________________
+[   214] By: nick                                  on 1997/11/08  15:07:24
+        Log: Remove 'configure' leaving configure.gnu and Configure
+             Win32 ignores case and keeps trying to update
+             repository copy of 'configure' or 'Configure' with
+             the other.
+     Branch: ansiperl
+           - configure
+           ! MANIFEST
+____________________________________________________________________________
+[   213] By: nick                                  on 1997/11/08  15:03:39
+        Log: Get threads working again on Win32
+             Root cause of fail was init_thread_intern() in
+             new_struct_thread() (which is called in parent thread)
+             clobbering dTHR of parent thread. 
+             It is doubtfull if setting 'self' in new_struct_thread()
+             is 'right' but left in for now.
+     Branch: ansiperl
+	   ! ext/Thread/Thread.xs perl.c thread.h util.c win32/Makefile
+           ! win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   212] By: nick                                  on 1997/11/08  00:34:03
+        Log: Add :base_thread to :default in Opcode.pm
+             This allows lib/safe.t to pass when threaded.
+             It is unclear if 'lock' should be safe as it allows
+             denial of service attack, but could not figure out
+             how to add just 'specific' (sic) to :default
+             without triggering 'already tagged' warning noise.
+     Branch: ansiperl
+           ! ext/Opcode/Opcode.pm win32/makefile.mk
+____________________________________________________________________________
+[   211] By: nick                                  on 1997/11/07  23:59:31
+        Log: Merge changes as of 18:00 CST 
+     Branch: ansiperl
+          !> op.c pp.c pp_sys.c thread.h util.c
+____________________________________________________________________________
+[   210] By: nick                                  on 1997/11/07  23:52:35
+        Log: Reverse integrate Malcolm's chanes into local
+             repository, then import result back into my view
+             of Malcolm's repository.
+             Builds and passes (most) tests with GNU C++/Solaris
+             and Borland C++, Win32.
+     Branch: ansiperl
+	   ! doop.c embed.h ext/Thread/Thread.xs global.sym gv.c hv.c
+	   ! interp.sym mg.c op.c opcode.h opcode.pl patchlevel.h perl.c
+	   ! perl.h pp.c pp_ctl.c pp_sys.c proto.h sv.c sv.h taint.c
+           ! thread.h toke.c util.c win32/makefile.mk
+____________________________________________________________________________
+[   209] By: mbeattie                              on 1997/11/07  18:12:36
+        Log: Change pp_tie and pp_dbmopen to use perl_call_sv instead of a
+             DIY pp_entersub (in preparation for AUTOLOAD change). dbmopen
+             not tested. ofslen now maps to thr->Tofslen in thread.h. Added
+             missing #ifdef USE_THREADS around some DEBU_L statements in die().
+             Building without USE_THREADS fails quite a lot of tests. It looks
+             as though the move to per-thread magicals must be missing some
+             #ifdef USE_THREADS.
+     Branch: perl
+           ! op.c pp.c pp_sys.c thread.h util.c
+____________________________________________________________________________
+[   208] By: nick                                  on 1997/11/07  01:37:28
+        Log: Raw integrate of latest perl
+     Branch: ansiperl
+           ! t/TEST
+	  !> README.threads Todo.5.005 embed.h ext/Opcode/Opcode.pm
+	  !> ext/Thread/Thread.xs global.sym gv.c interp.sym op.c op.h
+	  !> perl.c perl.h pp.c pp_ctl.c pp_hot.c proto.h scope.h sv.h
+          !> thread.h toke.c util.c
+____________________________________________________________________________
+[   207] By: mbeattie                              on 1997/11/06  14:58:00
+        Log: Update README.threads and Todo.5.005.
+     Branch: perl
+           ! README.threads Todo.5.005
+____________________________________________________________________________
+[   206] By: mbeattie                              on 1997/11/06  14:37:37
+        Log: Remove #ifdef DEPRECATED stuff: newXSUB, pp_entersubr, FREE_TMPS().
+     Branch: perl
+           ! op.c pp_ctl.c proto.h scope.h
+____________________________________________________________________________
+[   205] By: mbeattie                              on 1997/11/06  14:31:38
+        Log: Per-thread magicals now stored in their own thr->magicals and keyed
+             more directly. cvcache and oursv become ordinary struct thread
+             fields instead of #defined thr->Tfoo ones. SvREFCNT_inc now checks
+             for 0 again. Main thread initialisation done by new function
+             init_main_thread instead of (now fixed) new_struct_thread.
+             
+             Jobs fixed ...
+             
+             jmpenv fixed on 1997/11/06 by mbeattie@localhost
+             
+             Subject: [perl5.004_53; patch] eval's and threads
+             Date: 23 Oct 1997 23:59:19 -0400
+             From: Owen Taylor 
+     Branch: bugs
+           + jmpenv
+     Branch: perl
+	   ! embed.h ext/Thread/Thread.xs global.sym gv.c op.c perl.c
+           ! pp_ctl.c pp_hot.c proto.h sv.h thread.h toke.c util.c
+____________________________________________________________________________
+[   204] By: mbeattie                              on 1997/11/05  17:18:18
+        Log: Per-thread magicals mostly working (and localisable). Now getting
+             intermittent occasional "Use of uninitialized value" warnings
+             which may be due to some op flag black magic I've broken.
+     Branch: perl
+	   ! embed.h ext/Opcode/Opcode.pm ext/Thread/Thread.xs gv.c
+	   ! interp.sym op.c op.h perl.c perl.h pp.c thread.h toke.c util.c
+____________________________________________________________________________
+[   203] By: nick                                  on 1997/11/05  01:04:10
+        Log: Builds C++ Borland, MSVC++ (Win32) and GCC++ (Solaris)
+     Branch: ansiperl
+	   ! XSUB.h doio.c doop.c embed.h ext/SDBM_File/sdbm/sdbm.h
+	   ! ext/Thread/Thread.xs global.sym gv.c hv.c interp.sym mg.c
+	   ! miniperlmain.c op.c op.h opcode.h opcode.pl patchlevel.h
+	   ! perl.c perl.h pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h
+	   ! sv.c sv.h taint.c thread.h toke.c util.c win32/Makefile
+	   ! win32/config.vc win32/config_H.vc win32/makedef.pl
+	   ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h
+	   ! win32/win32io.c win32/win32io.h win32/win32iop.h
+           ! win32/win32sck.c win32/win32thread.h
+____________________________________________________________________________
+[   202] By: nick                                  on 1997/11/05  00:50:27
+        Log: Compile(d) at least once with threads on win32 
+             but did not work
+     Branch: ansiperl
+           ! embed.h perl.c thread.h
+____________________________________________________________________________
+[   201] By: nick                                  on 1997/11/05  00:32:13
+        Log: Trivial integrate
+     Branch: ansiperl
+          !> patchlevel.h
+____________________________________________________________________________
+[   200] By: mbeattie                              on 1997/11/04  12:06:09
+        Log: Up patchlevel to 5.004_54 (I missed _53 for the last release).
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[   199] By: nick                                  on 1997/11/01  00:18:52
+        Log: Integrate mainline @ 18:15 CST 31 Oct 1997
+     Branch: ansiperl
+	  !> doop.c embed.h ext/Thread/Thread.xs global.sym gv.c hv.c
+	  !> interp.sym mg.c op.c opcode.h opcode.pl perl.c perl.h pp.c
+	  !> pp_ctl.c pp_sys.c proto.h sv.c sv.h taint.c thread.h toke.c
+          !> util.c
+____________________________________________________________________________
+[   198] By: nick                                  on 1997/11/01  00:08:33
+        Log: win32thread.* not in MANIFEST which has muddled moving
+             back and forth between depots.
+     Branch: ansiperl
+           ! MANIFEST win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   197] By: nick                                  on 1997/11/01  00:02:49
+        Log: Test changes
+     Branch: ansiperl
+           + t/lib/thread.t t/op/nothread.t thread.sym
+           ! MANIFEST
+____________________________________________________________________________
+[   196] By: nick                                  on 1997/10/31  23:54:01
+        Log: Further ANSI changes now builds and passes (most) tests
+             with gcc -x c++. 
+     Branch: ansiperl
+	   ! INTERN.h embed.h ext/DynaLoader/dl_dlopen.xs
+	   ! ext/Fcntl/Fcntl.xs ext/GDBM_File/GDBM_File.xs ext/IO/IO.xs
+	   ! ext/Opcode/Opcode.xs ext/POSIX/POSIX.xs
+	   ! ext/SDBM_File/sdbm/hash.c ext/SDBM_File/sdbm/pair.c
+	   ! ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
+	   ! ext/SDBM_File/sdbm/util.c ext/Socket/Socket.xs
+	   ! ext/Thread/Thread.xs ext/attrs/attrs.xs global.sym perl.h
+	   ! perly.c sv.c t/lib/english.t t/op/misc.t thread.h util.c
+	   ! win32/Makefile win32/makedef.pl win32/makefile.mk x2p/a2p.c
+	   ! x2p/a2p.h x2p/a2py.c x2p/hash.c x2p/str.c x2p/util.c
+           ! x2p/walk.c
+____________________________________________________________________________
+[   195] By: mbeattie                              on 1997/10/31  18:05:31
+        Log: Half way through moving per-thread magicals into per-thread fields
+             and the associated new OP_SPECIFIC and find_thread_magical stuff.
+             perl will compile but plenty of the magicals are still broken.
+     Branch: perl
+	   ! doop.c embed.h ext/Thread/Thread.xs global.sym gv.c hv.c
+	   ! interp.sym mg.c op.c opcode.h opcode.pl perl.c perl.h pp.c
+	   ! pp_ctl.c pp_sys.c proto.h sv.c sv.h taint.c thread.h toke.c
+           ! util.c
+____________________________________________________________________________
+[   194] By: nick                                  on 1997/10/31  01:43:49
+        Log: Convert miniperl sources to ANSI C. Several passes of
+             GNU C's 'protoize' plus a few hand edits.
+             Will compile miniperl with gcc -x c++ (i.e. treat .c a C++ files)
+             Does not link seems gcc's C++ does not define a symbol for
+             const char foo[] = "....";
+             i.e. with empty [].
+     Branch: ansiperl
+	   ! av.c deb.c doio.c doop.c dump.c gv.c hv.c malloc.c mg.c
+	   ! miniperlmain.c op.c perl.c perl.h perlio.c perly.y pp.c
+	   ! pp_ctl.c pp_hot.c pp_sys.c regcomp.c regexec.c run.c scope.c
+           ! sv.c taint.c toke.c universal.c util.c
+____________________________________________________________________________
+[   193] By: nick                                  on 1997/10/30  03:00:01
+        Log: Make the ansi branch
+     Branch: ansiperl
+          +> (branch 907 files)
+____________________________________________________________________________
+[   192] By: nick                                  on 1997/10/30  02:48:17
+        Log: Oneperl builds with THREADS/THISPTR Borland
+             Manualy inserted Sarathy's new COND_XXXXX from his mail.
+             Manual change if Tself -> self as was easier than resolve :-(
+             Two aTHIS's in op.c
+     Branch: oneperl
+	   ! embed.h op.c thread.h thread.sym win32/makefile.mk
+           ! win32/win32thread.h
+____________________________________________________________________________
+[   191] By: nick                                  on 1997/10/30  01:54:50
+        Log: Raw resolve of latest sources with oneperl
+     Branch: oneperl
+	  !> Todo.5.005 ext/Thread/Thread.xs fakethr.h op.c op.h opcode.h
+	  !> opcode.pl perl.c thread.h win32/win32thread.c
+          !> win32/win32thread.h
+____________________________________________________________________________
+[   190] By: mbeattie                              on 1997/10/29  14:39:54
+        Log: Remove global macro "self". Change thr->Tself to thr->self.
+     Branch: perl
+	   ! ext/Thread/Thread.xs fakethr.h perl.c thread.h
+           ! win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   189] By: mbeattie                              on 1997/10/29  12:49:01
+        Log: Add to Todo: compiler with fake SvCUR in comppad_name entries.
+     Branch: perl
+           ! Todo.5.005
+____________________________________________________________________________
+[   188] By: mbeattie                              on 1997/10/29  12:45:32
+        Log: Add pp_lock knowledge to compiler
+     Branch: perlext
+           ! Compiler/ccop.c Compiler/ccop.h
+____________________________________________________________________________
+[   187] By: mbeattie                              on 1997/10/29  12:45:02
+        Log: Change peep() to optimise away unneeded rv2av in lval->[] and lval->{}
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[   186] By: mbeattie                              on 1997/10/29  12:43:36
+        Log: Move compiler OP class information into opcode.pl.
+     Branch: perl
+           ! op.h opcode.h opcode.pl
+____________________________________________________________________________
+[   185] By: nick                                  on 1997/10/26  22:52:05
+        Log: Split failing test in op/misc.t into op/nothread.t
+             so all tests can be passed where they apply.
+             Cleanup other two cases of THREADS/THISPTR.
+             Conditional compile option for CriticalSection's on Win32
+     Branch: oneperl
+           + t/op/nothread.t
+	   ! sv.h t/op/misc.t win32/Makefile win32/makedef.pl
+           ! win32/win32thread.h
+____________________________________________________________________________
+[   184] By: nick                                  on 1997/10/26  19:42:00
+        Log: USE_THISPTR fixes for CRIPPLED_CC (implied by threads)
+     Branch: oneperl
+           ! embed.h global.sym proto.h sv.c sv.h toke.c
+____________________________________________________________________________
+[   183] By: nick                                  on 1997/10/26  18:31:58
+        Log: Make USE_THREADS imply CRIPPLED_CC.
+             This avoids most of the uses of 'Sv' and hence many needs of 
+             dTHR in extension code. 
+             With this change Data::Dumper builds as-is
+             and Tk only needs four tweaks:
+             1. Obscure dump-stack case which really needs dTHR
+             2. A curcop in error-message code
+             3. Two cases of SAVETMPS
+             4. A curcop == &compiling which is probably not required.
+             IMHO the SAVETMPS case is only one which merits further automation.
+     Branch: oneperl
+	   ! embed.h global.sym perl.h sv.c win32/Makefile win32/makedef.pl
+____________________________________________________________________________
+[   182] By: nick                                  on 1997/10/26  16:31:58
+        Log: Change dSP to imply dTHR for extension source compatibility
+             introduce djSP (Declare Just SP) for use in perl sources
+             and thread-aware extensions. Use latter.
+     Branch: oneperl
+	   ! XSUB.h doio.c doop.c ext/Thread/Thread.xs gv.c mg.c perl.c
+           ! pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c sv.c
+____________________________________________________________________________
+[   181] By: nick                                  on 1997/10/26  00:39:57
+        Log: More tests
+     Branch: oneperl
+           ! t/lib/thread.t
+____________________________________________________________________________
+[   180] By: nick                                  on 1997/10/25  22:18:27
+        Log: Use return of THREAD_CREATE() - add basic thread test
+     Branch: oneperl
+           + t/lib/thread.t
+           ! ext/Thread/Thread.xs
+____________________________________________________________________________
+[   179] By: nick                                  on 1997/10/25  21:25:23
+        Log: Builds with no thread/this
+     Branch: oneperl
+	   ! ext/Thread/Thread.xs t/lib/english.t win32/makedef.pl
+           ! win32/win32thread.c
+____________________________________________________________________________
+[   178] By: nick                                  on 1997/10/25  18:28:03
+        Log: Cleanup dead #ifdef branch introduced by scruffy merging.
+     Branch: oneperl
+           ! perl.c
+____________________________________________________________________________
+[   177] By: nick                                  on 1997/10/25  18:11:33
+        Log: Basic integrate of oneperl with threads, passes 
+             tests THISPTR+THREADs - win32/win32thread.* needed
+             changes (where did they come from)?
+     Branch: oneperl
+	   ! embed.h ext/Thread/Thread.xs perl.h thread.h win32/Makefile
+           ! win32/makedef.pl win32/win32thread.c win32/win32thread.h
+____________________________________________________________________________
+[   176] By: nick                                  on 1997/10/25  17:05:52
+        Log: Onepel builds THISPTR no threads
+     Branch: oneperl
+           ! ext/Thread/Thread.xs thread.h win32/makedef.pl
+____________________________________________________________________________
+[   175] By: nick                                  on 1997/10/25  16:40:10
+        Log: Integrate oneperl with new style JOIN etc. macros
+     Branch: oneperl
+          +> win32/win32thread.c win32/win32thread.h
+	  !> Todo.5.005 ext/POSIX/POSIX.xs ext/Thread/Thread.xs fakethr.h
+	  !> global.sym gv.c hv.c mg.c op.c opcode.h opcode.pl perl.c
+	  !> perl.h pp.c pp_hot.c sv.h thread.h vms/descrip.mms
+	  !> vms/gen_shrfls.pl vms/vms.c vms/vmsish.h win32/Makefile
+          !> win32/makefile.mk
+____________________________________________________________________________
+[   174] By: mbeattie                              on 1997/10/24  17:14:00
+        Log: Remove xcv_condp CV field which is no longer used.
+     Branch: perl
+           ! sv.h
+____________________________________________________________________________
+[   173] By: mbeattie                              on 1997/10/24  14:36:09
+        Log: Patches for VMS [Dan Sugalski]
+     Branch: bugs
+           + vms2
+     Branch: perl
+	   ! ext/POSIX/POSIX.xs vms/descrip.mms vms/gen_shrfls.pl vms/vms.c
+           ! vms/vmsish.h
+____________________________________________________________________________
+[   172] By: mbeattie                              on 1997/10/24  13:50:59
+        Log: Improve internal threading API. Introduce win32/win32thread.[ch]
+             to use new API and patch win32 makefile stuff a little.
+     Branch: perl
+           + win32/win32thread.c win32/win32thread.h
+	   ! Todo.5.005 ext/Thread/Thread.xs fakethr.h global.sym gv.c hv.c
+           ! perl.c perl.h thread.h win32/Makefile win32/makefile.mk
+____________________________________________________________________________
+[   171] By: mbeattie                              on 1997/10/23  14:00:27
+        Log: Fix pp_hot.c:get_db_sub core dump when perl debugger used.
+             
+             Jobs fixed ...
+             
+             get_db_sub fixed on 1997/10/23 by mbeattie@squash
+             
+             Subject: [perl5.004_53] Debugger crash (patch)
+             Date: Thu, 16 Oct 1997 22:03:09 -0400
+             From: Owen Taylor 
+     Branch: bugs
+           + get_db_sub
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[   170] By: mbeattie                              on 1997/10/23  09:22:40
+        Log: Fix refcounts for lock/magic_mutexfree. Make OP_LOCK auto-ref
+             its argument using ck_rfun as OP_DEFINED. Make pp_lock return
+             a ref to its argument for AV, HV, CV. 
+     Branch: perl
+           ! mg.c op.c opcode.h opcode.pl pp.c pp_hot.c
+____________________________________________________________________________
+[   169] By: gsar                                  on 1997/10/21  03:49:25
+        Log: With these fixes, oneperl builds THISPTR && THREADS under both win32 compilers:
+             - Fixup static functions that were missing aTHIS.
+             - s/extern/EXT/ in dTHR macro, or Borland CC croaks.
+             - Removed static functions from global.sym.
+             - Typo in perl.h.
+             - Additions to makefile.mk.
+     Branch: oneperl
+	   ! embed.h embed.pl global.sym op.c perl.h pp_ctl.c toke.c
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   168] By: nick                                  on 1997/10/20  02:47:18
+        Log: Passes expected tests with -DUSE_THREADS with/without -DUSE_THISPTR
+     Branch: oneperl
+	   ! embed.h ext/Thread/Thread.xs mg.c pp.c pp_hot.c proto.h
+           ! scope.h thread.h
+____________________________________________________________________________
+[   167] By: nick                                  on 1997/10/20  01:03:00
+        Log: Add missing aTHIS in cast
+     Branch: oneperl
+           ! win32/dl_win32.xs
+____________________________________________________________________________
+[   166] By: nick                                  on 1997/10/20  00:44:42
+        Log: Builds and passes test with -DUSE_THISPTR
+     Branch: oneperl
+	   ! ext/Thread/Thread.xs win32/Makefile win32/makedef.pl
+           ! win32/perllib.c
+____________________________________________________________________________
+[   165] By: nick                                  on 1997/10/19  21:45:36
+        Log: Oneperl runs miniperl with THISPTR (Win32 threading patch included)
+     Branch: oneperl
+	   ! embed.h ext/Thread/Thread.xs global.sym interp.sym perl.c
+	   ! perl.h t/TEST thread.h win32/Makefile win32/makedef.pl
+           ! win32/makefile.mk win32/perllib.c
+____________________________________________________________________________
+[   164] By: nick                                  on 1997/10/19  20:09:13
+        Log: oneperl compiles (but fails) with -DUSE_THISPTR
+     Branch: oneperl
+	   ! av.c embed.h mg.c perl.c perl.h pp.c pp_ctl.c pp_hot.c
+	   ! pp_sys.c proto.h regexec.c sv.c thread.h thread.sym util.c
+           ! win32/win32.c win32/win32.h
+____________________________________________________________________________
+[   163] By: nick                                  on 1997/10/19  16:46:09
+        Log: Builds on NT4 without THISPTR or THREADS, passes all tests
+     Branch: oneperl
+           ! embed.h perl.h thread.h vars.h
+____________________________________________________________________________
+[   162] By: nick                                  on 1997/10/19  14:42:16
+        Log: Dubious merge of oneperl's variable and struct thread
+     Branch: oneperl
+          !> perl.h thread.h
+____________________________________________________________________________
+[   161] By: nick                                  on 1997/10/18  18:05:13
+        Log: integrate all but perl.h/thread.h
+     Branch: oneperl
+          +> Todo.5.005 perlio.sym
+          !> (integrate 98 files)
+____________________________________________________________________________
+[   160] By: nick                                  on 1997/10/18  03:49:27
+        Log: Integrate rest of sub-dirs into oneperl
+     Branch: oneperl
+	  +> ext/Thread/Makefile.PL ext/Thread/Notes ext/Thread/README
+	  +> ext/Thread/Thread.pm ext/Thread/Thread.xs
+	  +> ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm
+	  +> ext/Thread/create.t ext/Thread/io.t ext/Thread/join.t
+	  +> ext/Thread/join2.t ext/Thread/list.t ext/Thread/lock.t
+	  +> ext/Thread/queue.t ext/Thread/sync.t ext/Thread/sync2.t
+	  +> ext/Thread/typemap ext/Thread/unsync.t ext/Thread/unsync2.t
+	  +> ext/Thread/unsync3.t ext/Thread/unsync4.t hints/newsos4.sh
+          +> hints/os390.sh
+           - ext/util/extliblist
+          !> (integrate 425 files)
+____________________________________________________________________________
+[   159] By: nick                                  on 1997/10/18  03:20:11
+        Log: Integrate (accept) t and win32 into oneperl
+     Branch: oneperl
+	  +> t/lib/dosglob.t win32/bin/pl2bat.pl win32/bin/runperl.pl
+	  +> win32/bin/search.pl win32/bin/webget.pl win32/config.bc
+	  +> win32/config.vc win32/config_H.bc win32/config_H.vc
+          +> win32/makefile.mk
+          !> (integrate 188 files)
+____________________________________________________________________________
+[   158] By: nick                                  on 1997/10/18  03:12:59
+        Log: Integrate lib/... into oneperl
+     Branch: oneperl
+          +> lib/File/DosGlob.pm lib/base.pm lib/chat2.pl
+          !> (integrate 138 files)
+____________________________________________________________________________
+[   157] By: nick                                  on 1997/10/18  02:55:53
+        Log: Make lib/Bundle/CPAN.pm text in oneperl too.
+     Branch: oneperl
+           ! lib/Bundle/CPAN.pm
+____________________________________________________________________________
+[   156] By: nick                                  on 1997/10/18  02:52:44
+        Log: Make lib/Bundle/CPAN.pm a text file
+     Branch: perl
+           ! lib/Bundle/CPAN.pm
+____________________________________________________________________________
+[   155] By: nick                                  on 1997/10/18  02:33:02
+        Log: Some weirdness in the intgrate process
+     Branch: oneperl
+	   - win32/bin/pl2bat.bat win32/bin/search.bat win32/bin/test.bat
+           - win32/bin/webget.bat win32/config.H win32/config.w32
+____________________________________________________________________________
+[   153] By: nick                                  on 1997/10/18  02:29:16
+        Log: Let us try all the pure integrate stuff
+     Branch: oneperl
+          !> (integrate 647 files)
+____________________________________________________________________________
+[   152] By: nick                                  on 1997/10/18  02:13:35
+        Log: Get more sub directories out of the way.
+     Branch: oneperl
+          !> (integrate 92 files)
+____________________________________________________________________________
+[   151] By: nick                                  on 1997/10/18  02:05:41
+        Log: Integrate hints 
+     Branch: oneperl
+          !> (integrate 68 files)
+____________________________________________________________________________
+[   150] By: nick                                  on 1997/10/18  01:57:20
+        Log: Try reopening some non-contravertial files
+     Branch: oneperl
+	  !> x2p/EXTERN.h x2p/INTERN.h x2p/Makefile.SH x2p/a2p.c x2p/a2p.h
+	  !> x2p/a2p.pod x2p/a2p.y x2p/a2py.c x2p/cflags.SH
+	  !> x2p/find2perl.PL x2p/hash.c x2p/hash.h x2p/proto.h x2p/s2p.PL
+          !> x2p/str.c x2p/str.h x2p/util.c x2p/util.h x2p/walk.c
+____________________________________________________________________________
+[   144] By: gsar                                  on 1997/10/16  22:26:07
+        Log: Merge changes to Thread and add makefile fixups to accomodate Thread
+             build.  Once again, builds and runs all	Thread tests using either
+             compiler.
+     Branch: win32/perl
+	   ! embed.h ext/Thread/Thread.xs interp.sym perl.c win32/Makefile
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   143] By: gsar                                  on 1997/10/16  20:45:58
+        Log: A quick merge of latest mainline.
+     Branch: win32/perl
+	  +> ext/Thread/Makefile.PL ext/Thread/Notes ext/Thread/README
+	  +> ext/Thread/Thread.pm ext/Thread/Thread.xs
+	  +> ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm
+	  +> ext/Thread/create.t ext/Thread/io.t ext/Thread/join.t
+	  +> ext/Thread/join2.t ext/Thread/list.t ext/Thread/lock.t
+	  +> ext/Thread/queue.t ext/Thread/sync.t ext/Thread/sync2.t
+	  +> ext/Thread/typemap ext/Thread/unsync.t ext/Thread/unsync2.t
+	  +> ext/Thread/unsync3.t ext/Thread/unsync4.t hints/os390.sh
+          +> lib/base.pm t/lib/dosglob.t
+           - ext/util/extliblist
+          !> (integrate 134 files)
+
+----------------
+Version 5.004_53
+----------------
+
+____________________________________________________________________________
+[   142] By: mbeattie                              on 1997/10/16  16:52:55
+        Log: Add newly moved perl/ext/Thread/... files to MANIFEST.
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   141] By: mbeattie                              on 1997/10/16  16:42:13
+        Log: Move perlext/Thread into perl/ext/Thread.
+     Branch: perl
+	  +> ext/Thread/Makefile.PL ext/Thread/Notes ext/Thread/README
+	  +> ext/Thread/Thread.pm ext/Thread/Thread.xs
+	  +> ext/Thread/Thread/Queue.pm ext/Thread/Thread/Semaphore.pm
+	  +> ext/Thread/create.t ext/Thread/io.t ext/Thread/join.t
+	  +> ext/Thread/join2.t ext/Thread/list.t ext/Thread/lock.t
+	  +> ext/Thread/queue.t ext/Thread/sync.t ext/Thread/sync2.t
+	  +> ext/Thread/typemap ext/Thread/unsync.t ext/Thread/unsync2.t
+          +> ext/Thread/unsync3.t ext/Thread/unsync4.t
+           ! Configure
+     Branch: perlext
+	   - Thread/Makefile.PL Thread/Notes Thread/README Thread/Thread.pm
+	   - Thread/Thread.xs Thread/Thread/Queue.pm
+	   - Thread/Thread/Semaphore.pm Thread/create.t Thread/io.t
+	   - Thread/join.t Thread/join2.t Thread/list.t Thread/lock.t
+	   - Thread/queue.t Thread/sync.t Thread/sync2.t Thread/typemap
+	   - Thread/unsync.t Thread/unsync2.t Thread/unsync3.t
+           - Thread/unsync4.t
+____________________________________________________________________________
+[   140] By: mbeattie                              on 1997/10/16  16:26:53
+        Log: Correct threads_mutex locking in main thread destruction.
+             Add per-interp thrsv to hold SV struct thread for main thread.
+             Move Thread.xs MUTEX_DESTROY from end of threadstart to remove_thread.
+             Add Thread/list.t test of Thread->list method.
+             Let Thread::Semaphore methods up and down take an extra argument.
+     Branch: perl
+           ! embed.h interp.sym perl.c perl.h thread.h
+     Branch: perlext
+           + Thread/list.t
+           ! Thread/Thread.xs Thread/Thread/Semaphore.pm
+____________________________________________________________________________
+[   139] By: mbeattie                              on 1997/10/16  14:01:11
+        Log: Fix up merge with 5.004_04.
+     Branch: perl
+           ! op.c perl.c t/lib/dosglob.t
+____________________________________________________________________________
+[   138] By: TimBunce                              on 1997/10/16  12:58:22
+        Log: Fix-up PerForce type for t/lib/dosglob.t from text to xtext
+     Branch: maint-5.004/perl
+           ! t/lib/dosglob.t
+____________________________________________________________________________
+[   137] By: mbeattie                              on 1997/10/16  11:09:25
+        Log: Merge maint-5.004 branch (5.004_04) with mainline.
+     Branch: perl
+          +> hints/os390.sh lib/base.pm t/lib/dosglob.t
+           - ext/util/extliblist
+          !> (integrate 132 files)
+____________________________________________________________________________
+[   135] By: gsar                                  on 1997/10/15  21:46:05
+        Log: Win32 changes over 5.004_52:
+             - rearranged MUTEX_LOCK()s in perl_destroy so that we don't call it
+             on an already locked mutex.
+             - other minor tweaks.
+             Now builds and runs win32-version of Thread_52, passing all tests.
+     Branch: win32/perl
+           ! perl.c proto.h thread.h
+____________________________________________________________________________
+[   134] By: gsar                                  on 1997/10/15  18:19:31
+        Log: fixup makefile.mk conflict.
+     Branch: win32/perl
+           ! win32/makefile.mk
+____________________________________________________________________________
+[   133] By: gsar                                  on 1997/10/15  18:02:46
+        Log: Integrated latest changes from mainline into win32.
+     Branch: win32/perl
+          +> fakethr.h
+	  !> MANIFEST Porting/makerel Porting/patchls README.threads
+	  !> Todo.5.005 perl.c pp_hot.c thread.h util.c win32/config.bc
+	  !> win32/config.vc win32/config_H.bc win32/config_H.vc
+          !> win32/makefile.mk
+
+----------------
+Version 5.004_52
+----------------
+
+____________________________________________________________________________
+[   132] By: mbeattie                              on 1997/10/15  17:02:38
+        Log: Remove out-of-date test Thread/cond.t.
+     Branch: perlext
+           - Thread/cond.t
+____________________________________________________________________________
+[   131] By: mbeattie                              on 1997/10/15  16:57:45
+        Log: Finish thread state machine: fixes global destruction of threads,
+             detaching, joining etc. Alter FAKE_THREADS-specific fields to use
+             new HAVE_THREAD_INTERN stuff. Updates docs. Various fixes to
+             Thread.xs.
+     Branch: perl
+           ! MANIFEST README.threads Todo.5.005 perl.c util.c
+     Branch: perlext
+           ! Thread/Thread.xs Thread/queue.t
+____________________________________________________________________________
+[   130] By: mbeattie                              on 1997/10/15  16:55:10
+        Log: Add HAVE_THREAD_INTERN for platform-dependent struct thread additions.
+             Fix ThrSETSTATE not to lock t->mutex itself.
+     Branch: perl
+           ! fakethr.h thread.h
+____________________________________________________________________________
+[   129] By: mbeattie                              on 1997/10/15  16:53:35
+        Log: Remove stale code from pp_entersub which breaks sub ownership locks.
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[   128] By: TimBunce                              on 1997/10/15  15:55:26
+        Log: Maintenance 5.004_04 changes
+     Branch: maint-5.004/perl
+           + hints/os390.sh lib/base.pm t/lib/dosglob.t
+           - ext/util/extliblist
+	   ! Changes Configure INSTALL MANIFEST Makefile.SH Porting/makerel
+	   ! Porting/patchls Porting/pumpkin.pod README.vms av.c configpm
+	   ! doop.c eg/sysvipc/ipcsem emacs/cperl-mode.el embed.h
+	   ! ext/DynaLoader/DynaLoader.pm ext/IO/lib/IO/Socket.pm
+	   ! ext/util/make_ext global.sym gv.c hints/bsdos.sh
+	   ! hints/dec_osf.sh hints/dynixptx.sh hints/irix_6.sh
+	   ! hints/linux.sh hints/machten.sh hints/os2.sh hints/qnx.sh hv.c
+	   ! installperl lib/AutoLoader.pm lib/CPAN.pm
+	   ! lib/CPAN/FirstTime.pm lib/Carp.pm lib/Cwd.pm lib/English.pm
+	   ! lib/ExtUtils/Install.pm lib/ExtUtils/Liblist.pm
+	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/xsubpp
+	   ! lib/File/DosGlob.pm lib/File/Find.pm lib/FileHandle.pm
+	   ! lib/Getopt/Long.pm lib/Getopt/Std.pm lib/Math/Complex.pm
+	   ! lib/Sys/Hostname.pm lib/Sys/Syslog.pm lib/Test/Harness.pm
+	   ! lib/Time/Local.pm lib/autouse.pm lib/blib.pm
+	   ! lib/diagnostics.pm lib/getopt.pl lib/perl5db.pl lib/vars.pm
+	   ! makedepend.SH malloc.c mg.c miniperlmain.c myconfig op.c
+	   ! opcode.h os2/Changes os2/OS2/REXX/Makefile.PL
+	   ! os2/OS2/REXX/REXX.pm os2/os2.c patchlevel.h perl.c perl.h
+	   ! perly.c perly.fixer perly.y pod/perl.pod pod/perlapio.pod
+	   ! pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
+	   ! pod/perlguts.pod pod/perlipc.pod pod/perlop.pod
+	   ! pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod
+	   ! pod/perltrap.pod pod/perlvar.pod pod/perlxs.pod pp.c pp_ctl.c
+	   ! pp_hot.c pp_sys.c proto.h regcomp.c regexec.c scope.c sv.c
+	   ! t/TEST t/comp/proto.t t/lib/complex.t t/lib/io_sock.t
+	   ! t/lib/io_udp.t t/op/glob.t t/op/method.t t/op/misc.t
+	   ! t/op/ref.t t/op/runlevel.t t/op/split.t t/op/sprintf.t
+	   ! t/op/subst.t t/op/taint.t t/pragma/locale.t taint.c toke.c
+	   ! unixish.h util.c utils/h2ph.PL utils/h2xs.PL utils/perlbug.PL
+	   ! utils/perldoc.PL vms/perly_c.vms vms/vms.c vms/vmsish.h
+	   ! win32/Makefile win32/config_H.bc win32/config_H.vc
+	   ! win32/makefile.mk win32/pod.mak win32/win32.c win32/win32io.c
+           ! win32/win32sck.c x2p/Makefile.SH x2p/util.c
+____________________________________________________________________________
+[   127] By: mbeattie                              on 1997/10/15  10:00:18
+        Log: Added fakethr.h.
+     Branch: perl
+           + fakethr.h
+____________________________________________________________________________
+[   126] By: mbeattie                              on 1997/10/15  09:50:57
+        Log: pthread_condattr_init in thread.h for OLD_PTHREADS_API.
+     Branch: perl
+           ! thread.h
+____________________________________________________________________________
+[   125] By: mbeattie                              on 1997/10/15  09:09:24
+        Log: Started rewriting thread state machine.
+     Branch: perl
+           ! perl.c thread.h
+     Branch: perlext
+           ! Thread/Thread.xs
+____________________________________________________________________________
+[   124] By: gsar                                  on 1997/10/14  00:23:15
+        Log: Remove spurious extra MUTEX_LOCK in pp_entersub().  Now builds and passes
+             tests in win32 version of latest perlext/Thread.
+     Branch: win32/perl
+           ! pp_hot.c
+____________________________________________________________________________
+[   123] By: gsar                                  on 1997/10/13  23:18:38
+        Log: Initial merge of win32 threads patch.
+     Branch: win32/perl
+	   ! embed.h global.sym interp.sym perl.c perl.h pp_hot.c thread.h
+	   ! win32/Makefile win32/makedef.pl win32/makefile.mk
+           ! win32/perllib.c win32/pod.mak win32/win32.h
+____________________________________________________________________________
+[   122] By: gsar                                  on 1997/10/10  20:58:40
+        Log: Integrated changes on mainline into the win32 branch.  Had to set
+             P4USER=mbeattie for the resolve step (due to the presence of newly
+             branched files that had not been submitted?)
+     Branch: win32/perl
+	  +> Porting/makerel Porting/patchls README.threads Todo.5.005
+	  +> ext/attrs/Makefile.PL ext/attrs/attrs.pm ext/attrs/attrs.xs
+	  +> hints/newsos4.sh lib/File/DosGlob.pm lib/chat2.pl perlio.sym
+	  +> win32/bin/pl2bat.pl win32/bin/runperl.pl win32/bin/search.pl
+	  +> win32/bin/webget.pl win32/config.bc win32/config.vc
+          +> win32/config_H.bc win32/config_H.vc win32/makefile.mk
+	   - win32/bin/pl2bat.bat win32/bin/search.bat win32/bin/test.bat
+           - win32/bin/webget.bat win32/config.H win32/config.w32
+           ! thread.h
+          !> (integrate 858 files)
+____________________________________________________________________________
+[   121] By: mbeattie                              on 1997/10/10  17:23:41
+        Log: Tweak a few Thread tests.
+     Branch: perlext
+           + Thread/join2.t
+           ! Thread/io.t Thread/sync2.t
+____________________________________________________________________________
+[   120] By: mbeattie                              on 1997/10/10  17:22:46
+        Log: Rewrite thread destruction system using linked list of threads.
+             Still not completely done. Add methods self, equal, flags, list
+             to Thread.xs. Add Thread_MAGIC_SIGNATURE check to typemap.
+     Branch: perl
+           ! perl.c perl.h thread.h
+     Branch: perlext
+           ! Thread/Thread.xs Thread/typemap
+____________________________________________________________________________
+[   119] By: mbeattie                              on 1997/10/10  17:19:55
+        Log: Fix up locking/synchronisation for pp_entersub.
+     Branch: perl
+           ! pp_hot.c
+____________________________________________________________________________
+[   118] By: mbeattie                              on 1997/10/10  09:55:32
+        Log: Put back entries in MANIFEST for the four now-returned win32/* files
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[   117] By: mbeattie                              on 1997/10/10  08:12:23
+        Log: Took out mystack_foo for good, fixed up interp.sym and win32/makedef.pl
+     Branch: perl
+           ! Todo.5.005 embed.h interp.sym perl.h win32/makedef.pl
+____________________________________________________________________________
+[   116] By: mbeattie                              on 1997/10/08  15:41:08
+        Log: Add missing sig_pipe definition to Thread.xs.
+     Branch: perlext
+           ! Thread/Thread.xs
+____________________________________________________________________________
+[   115] By: mbeattie                              on 1997/10/08  15:40:46
+        Log: Fix up 5.004_03 merge: remove missing win32 files from MANIFEST,
+             add missing dTHR; to new function unwind_handler_stack() in mg.c
+             and bump patchlevel.h to 5.004_52.
+     Branch: perl
+           ! MANIFEST mg.c patchlevel.h
+____________________________________________________________________________
+[   114] By: mbeattie                              on 1997/10/08  10:19:27
+        Log: Merge maint-5.004 branch (5.004_03) with mainline.
+             MANIFEST is out of sync.
+     Branch: perl
+	  +> win32/bin/pl2bat.pl win32/bin/runperl.pl win32/bin/search.pl
+          +> win32/bin/webget.pl
+	   - win32/bin/pl2bat.bat win32/bin/search.bat win32/bin/test.bat
+           - win32/bin/webget.bat
+          !> (integrate 168 files)
+____________________________________________________________________________
+[   113] By: mbeattie                              on 1997/10/05  17:52:49
+        Log: Move init of global mutexes/cond vars earlier.
+     Branch: perl
+           ! perl.c
+____________________________________________________________________________
+[   112] By: nick                                  on 1997/10/04  15:25:28
+        Log: Add perl.sym to MANIFEST
+     Branch: oneperl
+           ! MANIFEST
+____________________________________________________________________________
+[   111] By: nick                                  on 1997/10/04  15:23:37
+        Log: Missing file
+     Branch: oneperl
+           + perl.sym
+____________________________________________________________________________
+[   110] By: nick                                  on 1997/10/04  13:04:26
+        Log: Now builds the extensions as well
+             Passes all tests
+     Branch: oneperl
+	   ! XSUB.h embed.pl ext/DynaLoader/dlutils.c ext/Opcode/Opcode.xs
+	   ! mg.c op.c perl.c pp_ctl.c pp_hot.c pp_sys.c proto.h sv.c
+           ! toke.c util.c writemain.SH
+____________________________________________________________________________
+[   109] By: nick                                  on 1997/10/04  12:02:14
+        Log: Odd checkin issue
+     Branch: oneperl
+	   ! dump.c global.sym gv.c hv.c malloc.c mg.c op.c opcode.h perl.c
+	   ! perly.c perly.c.diff perly.h perly.y pp.c pp_hot.c pp_sys.c
+	   ! proto.h scope.c sv.c toke.c universal.c util.c vms/perly_c.vms
+           ! vms/perly_h.vms writemain.SH
+____________________________________________________________________________
+[   108] By: nick                                  on 1997/10/04  11:12:52
+        Log: Added lots of (missing) prototypes (ckprotos is util to check)
+             Fixed missing aTHIS flagged by above.
+             -DUSE_THISPTR passes minitest!
+     Branch: oneperl
+           + ckprotos
+	   ! dump.c global.sym gv.c hv.c malloc.c mg.c op.c opcode.h perl.c
+	   ! perly.c perly.c.diff perly.h perly.y pp.c pp_hot.c pp_sys.c
+	   ! proto.h scope.c sv.c toke.c universal.c util.c vms/perly_c.vms
+           ! vms/perly_h.vms
+____________________________________________________________________________
+[   107] By: nick                                  on 1997/10/03  22:36:52
+        Log: .y muddle fixup - will get this sorted oneday ...
+     Branch: oneperl
+	   ! miniperlmain.c perly.c perly.c.diff perly.h vms/perly_c.vms
+           ! vms/perly_h.vms
+____________________________________________________________________________
+[   106] By: mbeattie                              on 1997/10/03  17:12:33
+        Log: Remove last traces of "tokenbuf as temp buffer" and removed it
+             from struct thread. Added missing thr->Tfoo defines for statbuf
+             and timesbuf and removed unused Tbuf field.
+     Branch: perl
+           ! doio.c mg.c perl.c pp_sys.c sv.c thread.h
+____________________________________________________________________________
+[   105] By: nick                                  on 1997/10/03  15:56:50
+        Log: dTHIS -> hasTHIS, dTHR -> dTHR; builds without THISPTR with/without USE_THREADS
+     Branch: oneperl
+	   ! XSUB.h av.c deb.c doio.c doop.c dump.c embed.pl global.sym
+	   ! gv.c hv.c mg.c op.c perl.c perl.h perlio.c perly.c pp.c pp.h
+	   ! pp_ctl.c pp_hot.c pp_sys.c regcomp.c regexec.c run.c scope.c
+           ! sv.c taint.c thread.h toke.c universal.c util.c
+____________________________________________________________________________
+[   104] By: mbeattie                              on 1997/10/03  15:23:25
+        Log: Back out sv_bless3 change which made pp_bless zap '~'-magic.
+     Branch: perl
+           ! global.sym pp.c proto.h sv.c
+____________________________________________________________________________
+[   103] By: mbeattie                              on 1997/10/03  15:17:39
+        Log: Fixed sv_mutex locking for new_SV, del_SV and nice_chunks.
+     Branch: perl
+           ! av.c hv.c perl.h sv.c
+____________________________________________________________________________
+[   102] By: mbeattie                              on 1997/10/03  11:53:51
+        Log: Reliable thread signal handling.
+     Branch: perl
+           ! global.sym mg.c perl.c perl.h
+     Branch: perlext
+           ! Thread/Thread.xs
+____________________________________________________________________________
+[   101] By: nick                                  on 1997/10/02  20:43:17
+        Log: Cleanup perly.y stuff
+     Branch: oneperl
+           ! embed.h perly.c perly.c.diff vms/perly_c.vms vms/perly_h.vms
+____________________________________________________________________________
+[   100] By: nick                                  on 1997/10/02  18:54:08
+        Log: Compiles with less invasive aTHIS adding
+     Branch: oneperl
+           + nothis.sym
+	   ! MANIFEST XSUB.h av.c cop.h deb.c doio.c doop.c dump.c embed.h
+	   ! embed.pl global.sym gv.c gv.h handy.h hv.c hv.h mg.c op.c op.h
+	   ! opcode.h perl.c perl.h perlio.c perlsdio.h perly.c
+	   ! perly.c.diff perly.y pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c
+	   ! proto.h regcomp.c regcomp.h regexec.c run.c scope.c scope.h
+	   ! sv.c sv.h t/op/sort.t taint.c thread.h toke.c universal.c
+           ! util.c vars.h
+
+----------------
+Version 5.004_51
+----------------
+
+____________________________________________________________________________
+[    99] By: mbeattie                              on 1997/10/02  17:23:48
+        Log: Added Thread/queue.t.
+     Branch: perlext
+           + Thread/queue.t
+____________________________________________________________________________
+[    98] By: mbeattie                              on 1997/10/02  17:19:44
+        Log: Bumped patchlevel to 51. Updated Todo.5.005.
+     Branch: perl
+           ! Todo.5.005 patchlevel.h
+____________________________________________________________________________
+[    97] By: mbeattie                              on 1997/10/02  17:07:47
+        Log: Update README.threads amd Thread/README
+     Branch: perl
+           ! README.threads
+     Branch: perlext
+           ! Thread/README
+____________________________________________________________________________
+[    96] By: mbeattie                              on 1997/10/02  16:58:47
+        Log: Configure -Dusethreads hints for dec_osf and solaris_2 and
+             fix sv_bless3 prototype.
+     Branch: perl
+           ! hints/dec_osf.sh hints/solaris_2.sh sv.c
+____________________________________________________________________________
+[    95] By: mbeattie                              on 1997/10/02  16:50:21
+        Log: Fixed broken typemap for Thread.
+     Branch: perlext
+           ! Thread/typemap
+____________________________________________________________________________
+[    94] By: mbeattie                              on 1997/10/02  16:34:03
+        Log: Fix pod text in Lint.pm for private-names option.
+     Branch: perlext
+           ! Compiler/B/Lint.pm
+____________________________________________________________________________
+[    93] By: mbeattie                              on 1997/10/02  13:44:46
+        Log: Add Todo.5.005 to MANIFEST and submit remade embed.h.
+     Branch: perl
+           ! MANIFEST embed.h
+____________________________________________________________________________
+[    92] By: mbeattie                              on 1997/10/02  13:27:10
+        Log: Add Todo.5.005
+     Branch: perl
+           + Todo.5.005
+____________________________________________________________________________
+[    91] By: nick                                  on 1997/10/01  20:23:38
+        Log: Raw _T# trial
+     Branch: oneperl
+           ! embed.h embed.pl proto.h sv.c
+____________________________________________________________________________
+[    90] By: nick                                  on 1997/10/01  18:22:03
+        Log: THIS + new sort stuff
+     Branch: oneperl
+           ! miniperlmain.c perl.c pp_ctl.c proto.h util.c
+____________________________________________________________________________
+[    89] By: nick                                  on 1997/10/01  18:03:05
+        Log: qsort cleanup - now tailored to perl's use and 'this' aware.
+     Branch: oneperl
+           ! pp_ctl.c proto.h util.c
+____________________________________________________________________________
+[    88] By: mbeattie                              on 1997/10/01  17:04:12
+        Log: Start of Configure support for -Dusethreads plus associated
+             Linux hints.
+     Branch: perl
+           ! Configure hints/linux.sh
+____________________________________________________________________________
+[    87] By: mbeattie                              on 1997/10/01  17:03:34
+        Log: Move runops_foo prototypes from proto.h to early in perl.h.
+     Branch: perl
+           ! perl.h proto.h
+____________________________________________________________________________
+[    86] By: nick                                  on 1997/09/30  19:15:21
+        Log: Debug hackery to thread.h - temporary
+             Quick-fix qsort() replacement - more to come.
+     Branch: oneperl
+           ! thread.h util.c
+____________________________________________________________________________
+[    85] By: mbeattie                              on 1997/09/30  15:50:27
+        Log: Added Lint option regexp-variables.
+     Branch: perlext
+           ! Compiler/B/Lint.pm
+____________________________________________________________________________
+[    84] By: mbeattie                              on 1997/09/30  15:11:07
+        Log: Merge maint-5.004 branch (5.004_01) with mainline.
+     Branch: perl
+	  +> Porting/makerel Porting/patchls hints/newsos4.sh
+	  +> lib/File/DosGlob.pm lib/chat2.pl perlio.sym win32/config.bc
+	  +> win32/config.vc win32/config_H.bc win32/config_H.vc
+          +> win32/makefile.mk
+           - win32/config.H win32/config.w32
+          !> (integrate 109 files)
+____________________________________________________________________________
+[    83] By: TimBunce                              on 1997/09/30  14:27:09
+        Log: Maintenance 5.004_03 changes (addendum)
+     Branch: maint-5.004/perl
+           - win32/bin/search.bat
+____________________________________________________________________________
+[    82] By: TimBunce                              on 1997/09/30  14:11:29
+        Log: Maintenance 5.004_03 changes
+     Branch: maint-5.004/perl
+	   + win32/bin/pl2bat.pl win32/bin/runperl.pl win32/bin/search.pl
+           + win32/bin/webget.pl
+	   - win32/bin/pl2bat.bat win32/bin/runperl.bat win32/bin/test.bat
+           - win32/bin/webget.bat
+	   ! Changes Configure MANIFEST Makefile.SH Porting/makerel
+	   ! ext/DynaLoader/DynaLoader.pm hints/hpux.sh hints/linux.sh
+	   ! hints/sco.sh hints/sunos_4_1.sh installhtml lib/CPAN.pm
+	   ! lib/ExtUtils/MM_Unix.pm lib/FileCache.pm lib/Math/Complex.pm
+	   ! lib/Math/Trig.pm lib/blib.pm os2/diff.configure patchlevel.h
+	   ! perl.c pod/perldelta.pod pod/perldiag.pod pod/perlfunc.pod
+	   ! pod/perlop.pod pod/perlre.pod pod/perlrun.pod pod/pod2man.PL
+	   ! pp_ctl.c pp_sys.c t/lib/complex.t t/pragma/locale.t toke.c
+	   ! utils/perlbug.PL win32/Makefile win32/makefile.mk
+           ! win32/win32.c
+____________________________________________________________________________
+[    81] By: TimBunce                              on 1997/09/30  13:17:27
+        Log: Maintenance 5.004_02 changes
+     Branch: maint-5.004/perl
+           + win32/bin/runperl.bat
+	   ! Changes Configure INSTALL MANIFEST Makefile.SH Porting/patchls
+	   ! README.os2 README.win32 Todo XSUB.h av.c configpm doio.c
+	   ! dosish.h embed.h ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
+	   ! ext/DB_File/typemap ext/GDBM_File/typemap ext/IO/IO.xs
+	   ! ext/IO/lib/IO/File.pm ext/IO/lib/IO/Handle.pm
+	   ! ext/IO/lib/IO/Socket.pm ext/NDBM_File/typemap
+	   ! ext/ODBM_File/ODBM_File.xs ext/POSIX/POSIX.xs
+	   ! ext/SDBM_File/typemap global.sym gv.c hints/cxux.sh
+	   ! hints/os2.sh hints/sunos_4_1.sh hints/svr4.sh installhtml
+	   ! lib/Bundle/CPAN.pm lib/CPAN.pm lib/CPAN/FirstTime.pm
+	   ! lib/CPAN/Nox.pm lib/Carp.pm lib/Class/Struct.pm
+	   ! lib/Exporter.pm lib/ExtUtils/Command.pm lib/ExtUtils/Embed.pm
+	   ! lib/ExtUtils/Install.pm lib/ExtUtils/Liblist.pm
+	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
+	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm
+	   ! lib/ExtUtils/xsubpp lib/File/Compare.pm lib/File/Copy.pm
+	   ! lib/File/Find.pm lib/File/Path.pm lib/FileHandle.pm
+	   ! lib/I18N/Collate.pm lib/IPC/Open3.pm lib/Net/hostent.pm
+	   ! lib/Pod/Html.pm lib/Shell.pm lib/Sys/Hostname.pm
+	   ! lib/Sys/Syslog.pm lib/Term/ReadLine.pm lib/Time/Local.pm
+	   ! lib/UNIVERSAL.pm lib/dumpvar.pl lib/ftp.pl lib/perl5db.pl
+	   ! malloc.c mg.c op.c opcode.pl os2/Changes os2/Makefile.SHs
+	   ! os2/diff.configure os2/os2.c os2/os2ish.h patchlevel.h perl.c
+	   ! perl.h pod/perlapio.pod pod/perlbook.pod pod/perldebug.pod
+	   ! pod/perldelta.pod pod/perldiag.pod pod/perlembed.pod
+	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlop.pod
+	   ! pod/perlre.pod pod/perlrun.pod pod/perltoc.pod
+	   ! pod/perltrap.pod pod/perlvar.pod pod/perlxstut.pod
+	   ! pod/pod2man.PL pod/splitpod pp.c pp_ctl.c pp_hot.c pp_sys.c
+	   ! proto.h regcomp.c regexec.c scope.c sv.c t/TEST t/base/lex.t
+	   ! t/comp/cmdopt.t t/comp/term.t t/lib/db-btree.t t/lib/db-hash.t
+	   ! t/lib/db-recno.t t/lib/filehand.t t/lib/gdbm.t t/lib/ndbm.t
+	   ! t/lib/odbm.t t/lib/sdbm.t t/op/local.t t/op/magic.t
+	   ! t/op/pack.t t/op/re_tests t/op/ref.t t/op/regexp.t t/op/stat.t
+	   ! t/op/substr.t t/op/universal.t toke.c universal.c util.c
+	   ! utils/Makefile utils/h2ph.PL utils/perlbug.PL utils/perldoc.PL
+	   ! vms/config.vms vms/descrip.mms vms/ext/filespec.t
+	   ! vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c
+	   ! vms/vmsish.h win32/Makefile win32/bin/pl2bat.bat
+	   ! win32/config.bc win32/config.vc win32/config_H.bc
+	   ! win32/config_H.vc win32/config_h.PL win32/makedef.pl
+	   ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h
+	   ! win32/win32io.c win32/win32io.h win32/win32iop.h
+           ! win32/win32sck.c
+____________________________________________________________________________
+[    80] By: nick                                  on 1997/09/29  20:31:43
+        Log: Add some prototypes in attempt to flush out errors
+             Tidy up vars.h usage.
+     Branch: oneperl
+	   ! av.c embed.h hv.c opcode.h perl.c perl.h perlio.c pp_sys.c
+           ! proto.h util.c vars.h
+____________________________________________________________________________
+[    79] By: nick                                  on 1997/09/29  17:12:07
+        Log: Builds and passes tests without THISPTR
+     Branch: oneperl
+           ! MANIFEST global.sym perl.c perl.h vars.h
+____________________________________________________________________________
+[    78] By: mbeattie                              on 1997/09/29  16:57:23
+        Log: Re-introduce the changes from change 68 (runops becomes a
+             function pointer and sv_bless3 for '~'-magic) which got lost
+             during the preparation for the maint-merge.
+     Branch: perl
+           ! global.sym perl.h pp.c proto.h run.c sv.c
+____________________________________________________________________________
+[    77] By: mbeattie                              on 1997/09/29  16:44:16
+        Log: Start merge with maint-5.004 branch by creating an ancestral
+             branch point via a fake resolution with the maint-merge branch.
+             See Perforce Tech Note 9 for details.
+     Branch: perl
+          !> (integrate 864 files)
+____________________________________________________________________________
+[    76] By: nick                                  on 1997/09/28  19:04:42
+        Log: Code with this pointer compiles (but core dumps)
+     Branch: oneperl
+	   ! EXTERN.h INTERN.h XSUB.h av.c av.h cop.h cv.h deb.c doio.c
+	   ! doop.c dosish.h dump.c form.h gv.c gv.h handy.h hv.c hv.h
+	   ! keywords.h mg.c mg.h miniperlmain.c nostdio.h op.c op.h
+	   ! opcode.h patchlevel.h perl.c perl.h perlio.c perlio.h
+	   ! perlsdio.h perlsfio.h perly.c perly.c.diff perly.h perly.y
+	   ! pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c
+	   ! regcomp.h regexec.c regexp.h run.c scope.c scope.h sv.c sv.h
+	   ! taint.c thread.h toke.c universal.c unixish.h util.c util.h
+           ! vars.h
+____________________________________________________________________________
+[    75] By: nick                                  on 1997/09/28  15:45:35
+        Log: Quasi sensible starting point for aTHIS addition.
+     Branch: oneperl
+           ! perl.c perl.h pp_ctl.c sv.c thread.h toke.c util.c
+____________________________________________________________________________
+[    74] By: nick                                  on 1997/09/28  11:23:32
+        Log: Ooops - unwind perly.* stuff for now
+     Branch: oneperl
+           ! perly.c perly.h perly.y vms/perly_c.vms vms/perly_h.vms
+____________________________________________________________________________
+[    73] By: nick                                  on 1997/09/28  11:17:23
+        Log: Builds and passes all tests again
+     Branch: oneperl
+	   ! embed.pl ext/DB_File/DB_File.xs gv.c perl.c perl.h perly.y
+           ! pp.h proto.h thread.sym vms/perly_c.vms vms/perly_h.vms
+____________________________________________________________________________
+[    72] By: nick                                  on 1997/09/28  10:47:01
+        Log: Save "important things" before re-try
+     Branch: oneperl
+           + vars.h
+           ! embed.pl thread.h thread.sym
+____________________________________________________________________________
+[    71] By: nick                                  on 1997/09/26  17:47:31
+        Log: Basic hacks to build with USE_THISPTR, not yet useful
+             but builds miniperl and passes minitest with all thread 
+             variables via a _GLOBAL_ thr variable rather than globals.
+             Now for the local thr variable ...
+     Branch: oneperl
+           + thread.sym
+	   ! MANIFEST README.threads XSUB.h av.c cv.h deb.c doio.c doop.c
+	   ! dump.c embed.pl ext/DB_File/DB_File.xs gv.c hints/solaris_2.sh
+	   ! hv.c mg.c op.c perl.c perl.h pp.c pp_ctl.c pp_hot.c pp_sys.c
+	   ! proto.h regcomp.c regexec.c run.c scope.c sv.c thread.h toke.c
+           ! util.c vms/vms.c
+____________________________________________________________________________
+[    70] By: mbeattie                              on 1997/09/23  14:29:23
+        Log: Branch oneperl from mainline.
+     Branch: oneperl
+          +> (branch 871 files)
+____________________________________________________________________________
+[    69] By: mbeattie                              on 1997/09/22  16:02:37
+        Log: struct thread now stored in an SV and uses '~'-magic for access.
+     Branch: perl
+           ! thread.h
+     Branch: perlext
+           ! Thread/Thread.xs Thread/typemap
+____________________________________________________________________________
+[    68] By: mbeattie                              on 1997/09/22  16:01:48
+        Log: runops becomes a funtion pointer and sv_bless3 created
+             to avoid pointer forgery with '~'-magic.
+     Branch: perl
+           ! global.sym perl.c perl.h pp.c proto.h run.c sv.c
+____________________________________________________________________________
+[    67] By: mbeattie                              on 1997/09/22  15:45:56
+        Log: More fprintf -> PerlIO_printf changes.
+     Branch: perl
+           ! perl.c pp_hot.c util.c
+____________________________________________________________________________
+[    66] By: mbeattie                              on 1997/09/22  15:10:40
+        Log: Minor multi-threading patches for VMS.
+     Branch: perl
+           ! mg.c thread.h vms/vms.c
+____________________________________________________________________________
+[    65] By: mbeattie                              on 1997/09/15  14:09:11
+        Log: Add undefined-subs option to Lint.pm.
+     Branch: perlext
+           ! Compiler/B/Lint.pm
+____________________________________________________________________________
+[    64] By: mbeattie                              on 1997/09/10  16:39:41
+        Log: Debugging output for lock handling.
+     Branch: perl
+           ! mg.c pp.c pp_hot.c util.c
+____________________________________________________________________________
+[    63] By: mbeattie                              on 1997/09/10  14:49:00
+        Log: Move Thread/Semaphore.pm to Thread/Thread/Semaphore.pm
+     Branch: perlext
+          +> Thread/Thread/Semaphore.pm
+           - Thread/Semaphore.pm
+____________________________________________________________________________
+[    62] By: mbeattie                              on 1997/09/10  14:47:31
+        Log: Move Thread/Queue.pm to Thread/Thread/Queue.pm
+     Branch: perlext
+          +> Thread/Thread/Queue.pm
+           - Thread/Queue.pm
+____________________________________________________________________________
+[    61] By: mbeattie                              on 1997/09/10  13:56:50
+        Log: Solaris fixes: delete pad and padname from thread.h and remove
+             MUTEX_* stuff when malloc.c gets copied to x2p/malloc.c.
+     Branch: perl
+           ! thread.h x2p/Makefile.SH
+
+----------------
+Version 5.004_50        First developer release towards 5.005
+----------------
+
+Maintenance of the 5.004 version of perl continues with the 5.004_xx
+series, where 'xx' is <= 49.  Development of the next version, 5.005,
+starts with 5.004_50.
+
+____________________________________________________________________________
+[    60] By: mbeattie                              on 1997/09/09  16:57:41
+        Log: Update README.threads to mention -DL.
+     Branch: perl
+           ! README.threads
+____________________________________________________________________________
+[    59] By: mbeattie                              on 1997/09/09  16:49:08
+        Log: Add Thread modules Queue.pm and Semaphore.pm
+     Branch: perlext
+           + Thread/Queue.pm Thread/Semaphore.pm
+____________________________________________________________________________
+[    58] By: mbeattie                              on 1997/09/09  16:33:45
+        Log: Update README.threads
+     Branch: perl
+           ! README.threads
+____________________________________________________________________________
+[    57] By: mbeattie                              on 1997/09/09  16:26:47
+        Log: Add debug info to Thread typemap.
+     Branch: perlext
+           ! Thread/typemap
+____________________________________________________________________________
+[    56] By: mbeattie                              on 1997/09/09  15:04:26
+        Log: Rewrite synchronisation of subs/methods and add attrs
+             extension for specifying 'locked' and 'method' attributes.
+     Branch: perl
+           + ext/attrs/Makefile.PL ext/attrs/attrs.pm ext/attrs/attrs.xs
+	   ! MANIFEST cv.h embed.h global.sym op.c perl.c pp.c pp_ctl.c
+           ! pp_hot.c proto.h sv.c sv.h toke.c
+     Branch: perlext
+	   ! Thread/Thread.pm Thread/Thread.xs Thread/sync.t Thread/sync2.t
+____________________________________________________________________________
+[    55] By: mbeattie                              on 1997/09/03  16:34:47
+        Log: Add new keyword "lock" to Opcode.pm
+     Branch: perl
+           ! ext/Opcode/Opcode.pm
+____________________________________________________________________________
+[    54] By: mbeattie                              on 1997/09/03  14:44:44
+        Log: Run embed.pl and keywords.pl to complete RESTART -> INIT change
+     Branch: perl
+           ! embed.h keywords.h
+____________________________________________________________________________
+[    53] By: mbeattie                              on 1997/09/03  13:52:24
+        Log: Add to MANIFEST: README.threads, lib/ISA.pm, lib/Class/Fields.pm
+     Branch: perl
+           ! MANIFEST
+____________________________________________________________________________
+[    52] By: mbeattie                              on 1997/09/03  13:41:20
+        Log: Let Lint private_names catch out-of-package _foo methods.
+     Branch: perlext
+           ! Compiler/B/Lint.pm
+____________________________________________________________________________
+[    51] By: mbeattie                              on 1997/09/03  13:20:12
+        Log: Bump patchlevel.h to 5.004_50
+     Branch: perl
+           ! patchlevel.h
+____________________________________________________________________________
+[    50] By: mbeattie                              on 1997/09/03  12:31:48
+        Log: Make compiler build/work with devel 5.005
+     Branch: perlext
+	   ! Compiler/B.xs Compiler/B/Asmdata.pm Compiler/bytecode.h
+           ! Compiler/bytecode.pl Compiler/byterun.c Compiler/byterun.h
+____________________________________________________________________________
+[    49] By: mbeattie                              on 1997/09/03  12:28:05
+        Log: Rename RESTART to INIT and associated changes
+     Branch: perl
+	   ! interp.sym keywords.pl op.c perl.c perl.h perly.c perly.y
+           ! toke.c vms/perly_c.vms
+____________________________________________________________________________
+[    48] By: mbeattie                              on 1997/09/02  15:54:27
+        Log: Added private-names option.
+     Branch: perlext
+           ! Compiler/B/Lint.pm
+____________________________________________________________________________
+[    47] By: mbeattie                              on 1997/09/02  11:54:55
+        Log: For compiler's CC, make PP_EVAL, PP_ENTERTRY work with JMPENV.
+     Branch: perlext
+           ! Compiler/cc_runtime.h
+____________________________________________________________________________
+[    46] By: mbeattie                              on 1997/08/28  19:40:08
+        Log: Missing sprintf in try_autoload.
+     Branch: perlext
+           ! Compiler/B/C.pm
+____________________________________________________________________________
+[    45] By: mbeattie                              on 1997/08/13  16:15:25
+        Log: Threading fixups for Digital UNIX.
+     Branch: perl
+           ! README.threads malloc.c perl.h toke.c
+____________________________________________________________________________
+[    44] By: mbeattie                              on 1997/08/11  15:46:29
+        Log: Assorted changes for multi-threading (now works rather more).
+     Branch: perl
+           + README.threads
+	   ! gv.c mg.c op.c perl.c perl.h pp_ctl.c pp_hot.c sv.c thread.h
+           ! toke.c util.c
+     Branch: perlext
+	   ! Thread/Makefile.PL Thread/Thread.xs Thread/lock.t
+           ! Thread/unsync.t
+____________________________________________________________________________
+[    43] By: mbeattie                              on 1997/08/08  14:11:00
+        Log: Made Lint check subs (and -u packages).
+             Added support for dollar_underscore and implicit $_ in foreach.
+     Branch: perlext
+           ! Compiler/B/Lint.pm
+____________________________________________________________________________
+[    42] By: TimBunce                              on 1997/07/25  17:15:57
+        Log: Maintenance 5.004_01 changes
+     Branch: maint-5.004/perl
+	   + Porting/makerel Porting/patchls hints/newsos4.sh
+	   + lib/File/DosGlob.pm lib/chat2.pl perlio.sym win32/config.bc
+	   + win32/config.vc win32/config_H.bc win32/config_H.vc
+           + win32/makefile.mk
+           - win32/config.H win32/config.w32
+	   ! Changes Configure EXTERN.h INSTALL MANIFEST Makefile.SH
+	   ! Porting/pumpkin.pod README README.win32 doio.c embed.h
+	   ! ext/DynaLoader/dl_aix.xs ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
+	   ! ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL
+	   ! global.sym hints/next_3.sh hints/next_4.sh hints/svr4.sh
+	   ! installhtml installman lib/AutoLoader.pm lib/AutoSplit.pm
+	   ! lib/CGI/Push.pm lib/CPAN.pm lib/ExtUtils/Install.pm
+	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_Unix.pm
+	   ! lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MM_Win32.pm
+	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm
+	   ! lib/ExtUtils/xsubpp lib/Pod/Html.pm lib/Pod/Text.pm
+	   ! lib/Sys/Syslog.pm lib/Term/ReadLine.pm lib/Test/Harness.pm
+	   ! lib/ftp.pl mg.c op.c patchlevel.h perl.c perl.h perl_exp.SH
+	   ! perlio.c pod/checkpods.PL pod/perlbook.pod pod/perldata.pod
+	   ! pod/perldebug.pod pod/perldelta.pod pod/perldiag.pod
+	   ! pod/perlembed.pod pod/perlfaq4.pod pod/perlfaq8.pod
+	   ! pod/perlfaq9.pod pod/perlfunc.pod pod/perlguts.pod
+	   ! pod/perllol.pod pod/perlop.pod pod/perlrun.pod pod/perlsub.pod
+	   ! pod/perltoc.pod pod/perltoot.pod pod/pod2man.PL pod/roffitall
+	   ! pod/splitpod pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c
+	   ! regcomp.h regexec.c sv.c t/lib/safe2.t t/op/flip.t
+	   ! t/op/groups.t t/op/magic.t t/op/mkdir.t t/op/re_tests
+	   ! t/op/regexp.t t/op/split.t t/op/stat.t t/op/subst.t
+	   ! t/op/taint.t util.c utils/Makefile utils/h2xs.PL
+	   ! utils/perlbug.PL vms/ext/DCLsym/DCLsym.pm
+	   ! vms/ext/Stdio/Stdio.pm vms/gen_shrfls.pl vms/perlvms.pod
+	   ! win32/Makefile win32/config_sh.PL win32/include/sys/socket.h
+	   ! win32/makedef.pl win32/makeperldef.pl win32/perlglob.c
+	   ! win32/perllib.c win32/win32.c win32/win32.h win32/win32io.c
+           ! win32/win32io.h win32/win32iop.h win32/win32sck.c
+____________________________________________________________________________
+[    41] By: mbeattie                              on 1997/07/24  14:57:53
+        Log: Start support for fake threads.
+             pp_lock now returns its argument.
+     Branch: perl
+	   ! MANIFEST Makefile.SH cv.h op.c opcode.h opcode.pl perl.c
+	   ! perl.h pp.c pp_ctl.c pp_hot.c proto.h sv.h thread.h toke.c
+           ! util.c
+     Branch: perlext
+           ! Thread/Thread.xs
+____________________________________________________________________________
+[    40] By: mbeattie                              on 1997/07/24  14:55:07
+        Log: Add missing reset of eval_owner if doeval() fails to parse.
+     Branch: perl
+           ! pp_ctl.c
+____________________________________________________________________________
+[    39] By: mbeattie                              on 1997/07/17  13:35:51
+        Log: Fix multiple problems with lexical @_.
+     Branch: perl
+	   ! cop.h op.c perl.c pp.c pp_ctl.c pp_hot.c t/op/do.t thread.h
+           ! toke.c
+____________________________________________________________________________
+[    38] By: mbeattie                              on 1997/07/16  17:02:09
+        Log: Change %lx to %x in B::CV::save to prevent some CV
+             fields becoming 0 in the init section. Add missing
+             write_back in B::Stackobj::Padsv::load_double to fix
+             test 22 of op/my.t.
+     Branch: perlext
+           ! Compiler/B/C.pm Compiler/B/Stackobj.pm
+____________________________________________________________________________
+[    37] By: mbeattie                              on 1997/07/10  11:28:16
+        Log: Branch win32 developments from main perl branch.
+     Branch: win32/perl
+          +> (branch 867 files)
+____________________________________________________________________________
+[    36] By: mbeattie                              on 1997/07/05  11:58:05
+        Log: B::CC::pp_padsv must cope with vivify_ref (5.004)
+             as well as provide_ref (5.003).
+     Branch: perlext
+           ! Compiler/B/C.pm Compiler/B/CC.pm Compiler/NOTES
+____________________________________________________________________________
+[    35] By: mbeattie                              on 1997/07/05  11:55:18
+        Log: Introduce pp_lock.
+     Branch: perl
+	   ! embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl
+           ! pp.c pp_ctl.c toke.c
+____________________________________________________________________________
+[    34] By: mbeattie                              on 1997/07/01  12:24:28
+        Log: Support for op in global register (still buggy)
+     Branch: perl
+	   ! embed.h global.sym gv.c op.c perl.c perl.h pp_ctl.c pp_sys.c
+           ! proto.h scope.c scope.h thread.h
+____________________________________________________________________________
+[    33] By: mbeattie                              on 1997/06/24  16:34:24
+        Log: Branch lexical warnings from perl branch.
+     Branch: lexwarn/perl
+          +> (branch 867 files)
+____________________________________________________________________________
+[    32] By: mbeattie                              on 1997/06/24  14:33:57
+        Log: Branch integration of maint-5.004 from relperl.
+     Branch: mainline/perl
+          +> (branch 600 files)
+     Branch: maint-5.004/perl
+          +> (branch 864 files)
+____________________________________________________________________________
+[    31] By: mbeattie                              on 1997/06/20  11:46:50
+        Log: corrected bad_type() prototype. 
+     Branch: perl
+           ! op.c
+____________________________________________________________________________
+[    30] By: mbeattie                              on 1997/06/12  12:38:05
+        Log: Tweak README.
+     Branch: perlext
+           ! Thread/README
+____________________________________________________________________________
+[    29] By: mbeattie                              on 1997/06/12  12:34:59
+        Log: Document -m option of CC backend.
+     Branch: perlext
+           ! Compiler/NOTES
+____________________________________________________________________________
+[    28] By: mbeattie                              on 1997/06/12  12:25:05
+        Log: Support sysseek introduced in 5.004.
+     Branch: perlext
+           ! Compiler/ccop.c Compiler/ccop.h
+____________________________________________________________________________
+[    27] By: mbeattie                              on 1997/06/05  14:20:51
+        Log: More fixups for thrperl integration.
+     Branch: perl
+	   ! ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
+	   ! ext/Opcode/Makefile.PL ext/Opcode/Opcode.pm
+	   ! ext/Opcode/Opcode.xs gv.c hv.c mg.c op.c perl.c perly.c
+	   ! perly.y pp.c pp_ctl.c run.c scope.c sv.c sv.h thread.h toke.c
+           ! util.c
+____________________________________________________________________________
+[    25] By: mbeattie                              on 1997/05/28  15:11:24
+        Log: Fixups for thrperl integration.
+     Branch: perl
+           ! embed.h keywords.h op.c opcode.h perl.c util.c
+____________________________________________________________________________
+[    24] By: mbeattie                              on 1997/05/26  20:10:42
+        Log: Integrate thrperl 5.003->5.004.
+     Branch: perl
+          +> thread.h
+          !> (integrate 33 files)
+____________________________________________________________________________
+[    23] By: mbeattie                              on 1997/05/26  11:45:39
+        Log: Fix ppname when saving subs.
+     Branch: perlext
+           ! Compiler/B/C.pm
+____________________________________________________________________________
+[    22] By: mbeattie                              on 1997/05/26  11:45:03
+        Log: -mFoo option now forces -uFoo.
+     Branch: perlext
+           ! Compiler/B/CC.pm
+____________________________________________________________________________
+[    21] By: mbeattie                              on 1997/05/26  11:43:37
+        Log: Put back objsym/savesym (used by walkoptree_exec).
+     Branch: perlext
+           ! Compiler/B.pm
+____________________________________________________________________________
+[    20] By: mbeattie                              on 1997/05/26  11:38:45
+        Log: Add avhv_store_ent. Add missing avhv_* to global.sym.
+     Branch: perl
+           ! av.c global.sym
+____________________________________________________________________________
+[    19] By: mbeattie                              on 1997/05/25  21:19:38
+        Log: Fix up integration 5.003->5.004.
+     Branch: perl
+           + lib/Class/Fields.pm lib/ISA.pm
+	   ! av.c ext/DB_File/DB_File.xs perl.c pp.c pp_hot.c proto.h
+           ! toke.c
+____________________________________________________________________________
+[    18] By: mbeattie                              on 1997/05/25  10:31:21
+        Log: First stab at 5.003 -> 5.004 integration.
+     Branch: perl
+          +> (branch 291 files)
+	   - Changes.Conf ext/DynaLoader/dl_os2.xs
+	   - ext/FileHandle/FileHandle.pm ext/FileHandle/FileHandle.xs
+	   - ext/FileHandle/Makefile.PL ext/SDBM_File/sdbm/readme.ps
+	   - ext/Safe/Makefile.PL ext/Safe/Safe.pm ext/Safe/Safe.xs
+	   - hints/aux.sh hints/dnix.sh hints/irix_6_2.sh lib/chat2.inter
+	   - lib/chat2.pl lib/splain os2/README os2/README.old
+	   - os2/diff.db_file os2/notes pod/perlovl.pod t/lib/safe.t
+	   - t/op/overload.t t/re_tests vms/Makefile x2p/a2p.man
+           - x2p/handy.h x2p/s2p.man
+          !> (integrate 392 files)
+____________________________________________________________________________
+[    17] By: mbeattie                              on 1997/05/24  18:46:49
+        Log: Wholesale update to 5.004.
+     Branch: relperl
+	   + Changes5.000 Changes5.001 Changes5.002 Changes5.003
+	   + Porting/Glossary Porting/pumpkin.pod README.amiga
+	   + README.cygwin32 README.os2 README.plan9 README.qnx
+	   + README.win32 compat3.sym configure.gnu cygwin32/cw32imp.h
+	   + cygwin32/gcc2 cygwin32/ld2 cygwin32/perlgcc cygwin32/perlld
+	   + eg/cgi/RunMeFirst eg/cgi/clickable_image.cgi eg/cgi/cookie.cgi
+	   + eg/cgi/crash.cgi eg/cgi/customize.cgi eg/cgi/diff_upload.cgi
+	   + eg/cgi/file_upload.cgi eg/cgi/frameset.cgi eg/cgi/index.html
+	   + eg/cgi/internal_links.cgi eg/cgi/javascript.cgi
+	   + eg/cgi/monty.cgi eg/cgi/multiple_forms.cgi
+	   + eg/cgi/nph-clock.cgi eg/cgi/popup.cgi eg/cgi/save_state.cgi
+	   + eg/cgi/tryit.cgi eg/cgi/wilogo.gif.uu
+	   + ext/DynaLoader/dl_cygwin32.xs ext/IO/IO.pm ext/IO/IO.xs
+	   + ext/IO/Makefile.PL ext/IO/README ext/IO/lib/IO/File.pm
+	   + ext/IO/lib/IO/Handle.pm ext/IO/lib/IO/Pipe.pm
+	   + ext/IO/lib/IO/Seekable.pm ext/IO/lib/IO/Select.pm
+	   + ext/IO/lib/IO/Socket.pm ext/NDBM_File/hints/dec_osf.pl
+	   + ext/NDBM_File/hints/dynixptx.pl ext/ODBM_File/hints/hpux.pl
+	   + ext/ODBM_File/hints/ultrix.pl ext/Opcode/Makefile.PL
+	   + ext/Opcode/Opcode.pm ext/Opcode/Opcode.xs ext/Opcode/Safe.pm
+	   + ext/Opcode/ops.pm ext/POSIX/hints/next_3.pl hints/amigaos.sh
+	   + hints/aux_3.sh hints/broken-db.msg hints/cygwin32.sh
+	   + hints/dcosx.sh hints/irix_6_0.sh hints/irix_6_1.sh
+	   + hints/lynxos.sh hints/next_4.sh hints/qnx.sh hints/umips.sh
+	   + hints/unicosmk.sh installhtml lib/Bundle/CPAN.pm lib/CGI.pm
+	   + lib/CGI/Apache.pm lib/CGI/Carp.pm lib/CGI/Fast.pm
+	   + lib/CGI/Push.pm lib/CGI/Switch.pm lib/CPAN.pm
+	   + lib/CPAN/FirstTime.pm lib/CPAN/Nox.pm lib/Class/Struct.pm
+	   + lib/ExtUtils/Command.pm lib/ExtUtils/Embed.pm
+	   + lib/ExtUtils/MM_Win32.pm lib/File/Compare.pm lib/File/stat.pm
+	   + lib/FileHandle.pm lib/FindBin.pm lib/Math/Trig.pm
+	   + lib/Net/hostent.pm lib/Net/netent.pm lib/Net/protoent.pm
+	   + lib/Net/servent.pm lib/Pod/Html.pm lib/Tie/RefHash.pm
+	   + lib/Time/gmtime.pm lib/Time/localtime.pm lib/Time/tm.pm
+	   + lib/UNIVERSAL.pm lib/User/grent.pm lib/User/pwent.pm
+	   + lib/autouse.pm lib/blib.pm lib/constant.pm lib/locale.pm
+	   + nostdio.h os2/Changes os2/OS2/ExtAttr/Changes
+	   + os2/OS2/ExtAttr/ExtAttr.pm os2/OS2/ExtAttr/ExtAttr.xs
+	   + os2/OS2/ExtAttr/MANIFEST os2/OS2/ExtAttr/Makefile.PL
+	   + os2/OS2/ExtAttr/myea.h os2/OS2/ExtAttr/t/os2_ea.t
+	   + os2/OS2/ExtAttr/typemap os2/OS2/PrfDB/Changes
+	   + os2/OS2/PrfDB/MANIFEST os2/OS2/PrfDB/Makefile.PL
+	   + os2/OS2/PrfDB/PrfDB.pm os2/OS2/PrfDB/PrfDB.xs
+	   + os2/OS2/PrfDB/t/os2_prfdb.t os2/OS2/PrfDB/typemap
+	   + os2/OS2/Process/MANIFEST os2/OS2/Process/Makefile.PL
+	   + os2/OS2/Process/Process.pm os2/OS2/Process/Process.xs
+	   + os2/OS2/REXX/Changes os2/OS2/REXX/MANIFEST
+	   + os2/OS2/REXX/Makefile.PL os2/OS2/REXX/REXX.pm
+	   + os2/OS2/REXX/REXX.xs os2/OS2/REXX/t/rx_cmprt.t
+	   + os2/OS2/REXX/t/rx_dllld.t os2/OS2/REXX/t/rx_objcall.t
+	   + os2/OS2/REXX/t/rx_sql.test os2/OS2/REXX/t/rx_tiesql.test
+	   + os2/OS2/REXX/t/rx_tievar.t os2/OS2/REXX/t/rx_tieydb.t
+	   + os2/OS2/REXX/t/rx_varset.t os2/OS2/REXX/t/rx_vrexx.t
+	   + os2/dl_os2.c os2/dlfcn.h perlio.c perlio.h perlsdio.h
+	   + perlsfio.h plan9/aperl plan9/arpa/inet.h plan9/buildinfo
+	   + plan9/config.plan9 plan9/exclude plan9/fndvers
+	   + plan9/genconfig.pl plan9/mkfile plan9/myconfig.plan9
+	   + plan9/perlplan9.doc plan9/perlplan9.pod plan9/plan9.c
+	   + plan9/plan9ish.h plan9/setup.rc plan9/versnum pod/checkpods.PL
+	   + pod/perlapio.pod pod/perldelta.pod pod/perlfaq.pod
+	   + pod/perlfaq1.pod pod/perlfaq2.pod pod/perlfaq3.pod
+	   + pod/perlfaq4.pod pod/perlfaq5.pod pod/perlfaq6.pod
+	   + pod/perlfaq7.pod pod/perlfaq8.pod pod/perlfaq9.pod
+	   + pod/perllocale.pod pod/perlmodlib.pod pod/perltoot.pod
+	   + pod/rofftoc qnx/ar qnx/cpp t/comp/colon.t t/comp/proto.t
+	   + t/comp/redef.t t/comp/use.t t/io/read.t t/lib/abbrev.t
+	   + t/lib/autoloader.t t/lib/basename.t t/lib/checktree.t
+	   + t/lib/complex.t t/lib/env.t t/lib/filecache.t t/lib/filecopy.t
+	   + t/lib/filefind.t t/lib/filepath.t t/lib/findbin.t
+	   + t/lib/getopt.t t/lib/hostname.t t/lib/io_dup.t t/lib/io_pipe.t
+	   + t/lib/io_sel.t t/lib/io_sock.t t/lib/io_taint.t
+	   + t/lib/io_tell.t t/lib/io_udp.t t/lib/io_xs.t t/lib/opcode.t
+	   + t/lib/open2.t t/lib/open3.t t/lib/ops.t t/lib/parsewords.t
+	   + t/lib/safe1.t t/lib/safe2.t t/lib/searchdict.t
+	   + t/lib/selectsaver.t t/lib/symbol.t t/lib/texttabs.t
+	   + t/lib/textwrap.t t/lib/timelocal.t t/lib/trig.t t/op/arith.t
+	   + t/op/assignwarn.t t/op/bop.t t/op/closure.t t/op/cmp.t
+	   + t/op/gv.t t/op/inc.t t/op/method.t t/op/recurse.t
+	   + t/op/runlevel.t t/op/sysio.t t/op/taint.t t/op/tie.t
+	   + t/op/universal.t t/pragma/constant.t t/pragma/locale.t
+	   + t/pragma/overload.t t/pragma/strict-refs t/pragma/strict-subs
+	   + t/pragma/strict-vars t/pragma/strict.t t/pragma/subs.t
+	   + t/pragma/warn-1global t/pragma/warning.t universal.c
+	   + utils/splain.PL vms/ext/DCLsym/0README.txt
+	   + vms/ext/DCLsym/DCLsym.pm vms/ext/DCLsym/DCLsym.xs
+	   + vms/ext/DCLsym/Makefile.PL vms/ext/DCLsym/test.pl
+	   + vms/ext/XSSymSet.pm vms/ext/filespec.t vms/ext/vmsish.pm
+	   + vms/ext/vmsish.t win32/Makefile win32/TEST win32/autosplit.pl
+	   + win32/bin/network.pl win32/bin/pl2bat.bat win32/bin/search.bat
+	   + win32/bin/test.bat win32/bin/webget.bat win32/bin/www.pl
+	   + win32/config.H win32/config.w32 win32/config_h.PL
+	   + win32/config_sh.PL win32/dl_win32.xs win32/genxsdef.pl
+	   + win32/include/arpa/inet.h win32/include/dirent.h
+	   + win32/include/netdb.h win32/include/sys/socket.h
+	   + win32/makedef.pl win32/makemain.pl win32/makeperldef.pl
+	   + win32/perlglob.c win32/perllib.c win32/pod.mak win32/runperl.c
+	   + win32/splittree.pl win32/win32.c win32/win32.h win32/win32io.c
+	   + win32/win32io.h win32/win32iop.h win32/win32sck.c x2p/a2p.pod
+           + x2p/proto.h
+	   - Changes.Conf ext/DynaLoader/dl_os2.xs
+	   - ext/FileHandle/FileHandle.pm ext/FileHandle/FileHandle.xs
+	   - ext/FileHandle/Makefile.PL ext/SDBM_File/sdbm/readme.ps
+	   - ext/Safe/Makefile.PL ext/Safe/Safe.pm ext/Safe/Safe.xs
+	   - hints/aux.sh hints/dnix.sh hints/irix_6_2.sh lib/chat2.inter
+	   - lib/chat2.pl lib/splain os2/README os2/README.old
+	   - os2/diff.db_file os2/notes pod/perlovl.pod t/lib/safe.t
+	   - t/op/overload.t t/re_tests vms/Makefile x2p/a2p.man
+           - x2p/handy.h x2p/s2p.man
+	   ! Artistic Changes Configure EXTERN.h INSTALL INTERN.h MANIFEST
+	   ! Makefile.SH README README.vms Todo XSUB.h av.c av.h cflags.SH
+	   ! config_H config_h.SH configpm configure cop.h cv.h deb.c
+	   ! doio.c doop.c dosish.h dump.c eg/README eg/nih
+	   ! eg/sysvipc/ipcmsg eg/sysvipc/ipcsem eg/sysvipc/ipcshm
+	   ! emacs/cperl-mode.el embed.h embed.pl ext/DB_File/DB_File.pm
+	   ! ext/DB_File/DB_File.xs ext/DB_File/Makefile.PL
+	   ! ext/DB_File/typemap ext/DynaLoader/DynaLoader.pm
+	   ! ext/DynaLoader/Makefile.PL ext/DynaLoader/dl_aix.xs
+	   ! ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_dlopen.xs
+	   ! ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_next.xs
+	   ! ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c
+	   ! ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
+	   ! ext/GDBM_File/GDBM_File.pm ext/NDBM_File/NDBM_File.pm
+	   ! ext/ODBM_File/ODBM_File.pm ext/ODBM_File/ODBM_File.xs
+	   ! ext/ODBM_File/hints/dec_osf.pl ext/POSIX/POSIX.pm
+	   ! ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs
+	   ! ext/SDBM_File/Makefile.PL ext/SDBM_File/SDBM_File.pm
+	   ! ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/pair.c
+	   ! ext/SDBM_File/sdbm/pair.h ext/SDBM_File/sdbm/sdbm.3
+	   ! ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
+	   ! ext/Socket/Socket.pm ext/Socket/Socket.xs ext/util/make_ext
+	   ! form.h global.sym gv.c gv.h handy.h hints/3b1.sh
+	   ! hints/README.hints hints/aix.sh hints/apollo.sh hints/bsdos.sh
+	   ! hints/convexos.sh hints/cxux.sh hints/dec_osf.sh hints/dgux.sh
+	   ! hints/dynixptx.sh hints/epix.sh hints/esix4.sh
+	   ! hints/freebsd.sh hints/hpux.sh hints/irix_4.sh hints/irix_5.sh
+	   ! hints/irix_6.sh hints/isc.sh hints/linux.sh hints/machten.sh
+	   ! hints/machten_2.sh hints/mips.sh hints/mpeix.sh
+	   ! hints/netbsd.sh hints/next_3.sh hints/next_3_0.sh hints/os2.sh
+	   ! hints/powerux.sh hints/sco.sh hints/sco_2_3_3.sh
+	   ! hints/sco_2_3_4.sh hints/solaris_2.sh hints/sunos_4_0.sh
+	   ! hints/sunos_4_1.sh hints/svr4.sh hints/titanos.sh
+	   ! hints/ultrix_4.sh hints/unicos.sh hints/utekv.sh hv.c hv.h
+	   ! installman installperl interp.sym keywords.h keywords.pl
+	   ! lib/AnyDBM_File.pm lib/AutoLoader.pm lib/AutoSplit.pm
+	   ! lib/Benchmark.pm lib/Carp.pm lib/Cwd.pm
+	   ! lib/Devel/SelfStubber.pm lib/English.pm lib/Env.pm
+	   ! lib/Exporter.pm lib/ExtUtils/Install.pm
+	   ! lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_OS2.pm
+	   ! lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
+	   ! lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
+	   ! lib/ExtUtils/Mkbootstrap.pm lib/ExtUtils/Mksymlists.pm
+	   ! lib/ExtUtils/testlib.pm lib/ExtUtils/typemap
+	   ! lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Copy.pm
+	   ! lib/File/Find.pm lib/File/Path.pm lib/FileCache.pm
+	   ! lib/Getopt/Long.pm lib/Getopt/Std.pm lib/I18N/Collate.pm
+	   ! lib/IPC/Open2.pm lib/IPC/Open3.pm lib/Math/BigInt.pm
+	   ! lib/Math/Complex.pm lib/Net/Ping.pm lib/Pod/Functions.pm
+	   ! lib/Pod/Text.pm lib/Search/Dict.pm lib/SelectSaver.pm
+	   ! lib/SelfLoader.pm lib/Symbol.pm lib/Sys/Hostname.pm
+	   ! lib/Sys/Syslog.pm lib/Term/Cap.pm lib/Term/Complete.pm
+	   ! lib/Term/ReadLine.pm lib/Test/Harness.pm lib/Text/Abbrev.pm
+	   ! lib/Text/ParseWords.pm lib/Text/Soundex.pm lib/Text/Tabs.pm
+	   ! lib/Text/Wrap.pm lib/Tie/Hash.pm lib/Tie/Scalar.pm
+	   ! lib/Tie/SubstrHash.pm lib/Time/Local.pm lib/abbrev.pl
+	   ! lib/bigfloat.pl lib/bigint.pl lib/cacheout.pl lib/complete.pl
+	   ! lib/diagnostics.pm lib/dotsh.pl lib/dumpvar.pl lib/find.pl
+	   ! lib/finddepth.pl lib/ftp.pl lib/getcwd.pl lib/getopts.pl
+	   ! lib/importenv.pl lib/lib.pm lib/look.pl lib/newgetopt.pl
+	   ! lib/open2.pl lib/open3.pl lib/overload.pm lib/perl5db.pl
+	   ! lib/sigtrap.pm lib/strict.pm lib/subs.pm lib/syslog.pl
+	   ! lib/termcap.pl lib/timelocal.pl lib/validate.pl lib/vars.pm
+	   ! makeaperl.SH makedepend.SH malloc.c mg.c mg.h minimod.pl
+	   ! miniperlmain.c myconfig op.c op.h opcode.h opcode.pl
+	   ! os2/Makefile.SHs os2/diff.configure os2/os2.c os2/os2ish.h
+	   ! os2/perl2cmd.pl patchlevel.h perl.c perl.h perl_exp.SH perlsh
+	   ! perly.c perly.c.diff perly.h perly.y pod/Makefile pod/buildtoc
+	   ! pod/perl.pod pod/perlbook.pod pod/perlbot.pod pod/perlcall.pod
+	   ! pod/perldata.pod pod/perldebug.pod pod/perldiag.pod
+	   ! pod/perldsc.pod pod/perlembed.pod pod/perlform.pod
+	   ! pod/perlfunc.pod pod/perlguts.pod pod/perlipc.pod
+	   ! pod/perllol.pod pod/perlmod.pod pod/perlobj.pod pod/perlop.pod
+	   ! pod/perlpod.pod pod/perlre.pod pod/perlref.pod pod/perlrun.pod
+	   ! pod/perlsec.pod pod/perlstyle.pod pod/perlsub.pod
+	   ! pod/perlsyn.pod pod/perltie.pod pod/perltoc.pod
+	   ! pod/perltrap.pod pod/perlvar.pod pod/perlxs.pod
+	   ! pod/perlxstut.pod pod/pod2html.PL pod/pod2latex.PL
+	   ! pod/pod2man.PL pod/pod2text.PL pod/roffitall pp.c pp.h
+	   ! pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regcomp.h
+	   ! regexec.c regexp.h run.c scope.c scope.h sv.c sv.h t/README
+	   ! t/TEST t/base/lex.t t/base/term.t t/cmd/mod.t t/cmd/while.t
+	   ! t/comp/cpp.t t/comp/multiline.t t/comp/package.t
+	   ! t/comp/script.t t/harness t/io/argv.t t/io/dup.t t/io/fs.t
+	   ! t/io/inplace.t t/io/pipe.t t/io/tell.t t/lib/anydbm.t
+	   ! t/lib/bigintpm.t t/lib/db-btree.t t/lib/db-hash.t
+	   ! t/lib/db-recno.t t/lib/dirhand.t t/lib/filehand.t t/lib/gdbm.t
+	   ! t/lib/ndbm.t t/lib/odbm.t t/lib/posix.t t/lib/sdbm.t
+	   ! t/lib/socket.t t/op/chop.t t/op/delete.t t/op/each.t
+	   ! t/op/exec.t t/op/fork.t t/op/glob.t t/op/goto.t t/op/groups.t
+	   ! t/op/magic.t t/op/misc.t t/op/mkdir.t t/op/my.t t/op/oct.t
+	   ! t/op/pack.t t/op/pat.t t/op/quotemeta.t t/op/rand.t
+	   ! t/op/re_tests t/op/readdir.t t/op/ref.t t/op/regexp.t
+	   ! t/op/sleep.t t/op/sort.t t/op/split.t t/op/stat.t t/op/subst.t
+	   ! t/op/substr.t t/op/write.t taint.c toke.c unixish.h util.c
+	   ! util.h utils/Makefile utils/c2ph.PL utils/h2ph.PL
+	   ! utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL utils/pl2pm.PL
+	   ! vms/config.vms vms/descrip.mms vms/ext/Filespec.pm
+	   ! vms/ext/Stdio/Stdio.pm vms/ext/Stdio/Stdio.xs
+	   ! vms/ext/Stdio/test.pl vms/fndvers.com vms/gen_shrfls.pl
+	   ! vms/genconfig.pl vms/genopt.com vms/myconfig.com
+	   ! vms/perlvms.pod vms/perly_c.vms vms/perly_h.vms
+	   ! vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c
+	   ! vms/vms_yfix.pl vms/vmsish.h vms/writemain.pl writemain.SH
+	   ! x2p/EXTERN.h x2p/INTERN.h x2p/Makefile.SH x2p/a2p.c x2p/a2p.h
+	   ! x2p/a2p.y x2p/a2py.c x2p/cflags.SH x2p/find2perl.PL x2p/hash.c
+	   ! x2p/hash.h x2p/s2p.PL x2p/str.c x2p/str.h x2p/util.c
+           ! x2p/util.h x2p/walk.c
+____________________________________________________________________________
+[    16] By: mbeattie                              on 1997/05/23  22:42:08
+        Log: Initial integration of relperl from 5.003.
+     Branch: relperl
+          +> (branch 600 files)
+____________________________________________________________________________
+[    14] By: mbeattie                              on 1997/05/12  20:22:56
+        Log: Finish code generation rewrite. Clean up B::Section class and
+             handle symbol table translation internally. Simple .pm modules
+             now compile OK.
+     Branch: perlext
+	   ! Compiler/B.pm Compiler/B/Bblock.pm Compiler/B/C.pm
+           ! Compiler/B/CC.pm
+____________________________________________________________________________
+[    13] By: mbeattie                              on 1997/05/05  19:41:18
+        Log: Don't make pp_enter and pp_return trigger basic blocks.
+     Branch: perlext
+           ! Compiler/B/Bblock.pm
+____________________________________________________________________________
+[    12] By: mbeattie                              on 1997/05/05  19:40:16
+        Log: Rewrite code generation. Sections (de)multiplexed into a
+             temporary file instead of stored in arrays.
+     Branch: perlext
+           ! Compiler/B.pm Compiler/B/C.pm Compiler/B/CC.pm
+____________________________________________________________________________
+[    11] By: mbeattie                              on 1997/05/03  20:20:59
+        Log: Development to pre-alpha4
+     Branch: perlext
+	   + Compiler/B/Deparse.pm Compiler/B/Lint.pm Compiler/makeliblinks
+	   ! Compiler/B.pm Compiler/B.xs Compiler/B/Bblock.pm
+	   ! Compiler/B/Bytecode.pm Compiler/B/C.pm Compiler/B/CC.pm
+	   ! Compiler/B/Debug.pm Compiler/B/Terse.pm Compiler/B/Xref.pm
+	   ! Compiler/Makefile.PL Compiler/README Compiler/TESTS
+	   ! Compiler/assemble Compiler/bytecode.pl Compiler/byteperl.c
+	   ! Compiler/byterun.c Compiler/cc_runtime.h Compiler/disassemble
+           ! Compiler/test_harness Compiler/test_harness_cc
+____________________________________________________________________________
+[    10] By: mbeattie                              on 1997/05/03  14:47:06
+        Log: Initial check-in of perl compiler.
+     Branch: perlext
+	   + Compiler/Artistic Compiler/B.pm Compiler/B.xs
+	   + Compiler/B/Asmdata.pm Compiler/B/Assembler.pm
+	   + Compiler/B/Bblock.pm Compiler/B/Bytecode.pm Compiler/B/C.pm
+	   + Compiler/B/CC.pm Compiler/B/Debug.pm
+	   + Compiler/B/Disassembler.pm Compiler/B/Showlex.pm
+	   + Compiler/B/Stackobj.pm Compiler/B/Terse.pm Compiler/B/Xref.pm
+	   + Compiler/Copying Compiler/Makefile.PL Compiler/NOTES
+	   + Compiler/O.pm Compiler/README Compiler/TESTS
+	   + Compiler/TESTS.alpha2 Compiler/Todo Compiler/assemble
+	   + Compiler/bytecode.h Compiler/bytecode.pl Compiler/byteperl.c
+	   + Compiler/byterun.c Compiler/byterun.h Compiler/cc_harness
+	   + Compiler/cc_runtime.h Compiler/ccop.c Compiler/ccop.h
+	   + Compiler/disassemble Compiler/old/README.feb11
+	   + Compiler/old/TESTS.mar11 Compiler/old/TESTS.mar20
+	   + Compiler/old/TESTS.may11 Compiler/old/TESTS.pre-jul27
+	   + Compiler/op.patch Compiler/ramblings/cc.notes
+	   + Compiler/ramblings/curcop.runtime
+	   + Compiler/ramblings/dontparse.c Compiler/ramblings/flip-flop
+	   + Compiler/ramblings/foo.bench Compiler/ramblings/foo2.bench
+	   + Compiler/ramblings/foo3.bench Compiler/ramblings/magic
+	   + Compiler/ramblings/pp_i_add Compiler/ramblings/reg.alloc
+	   + Compiler/ramblings/runtime.porting
+	   + Compiler/ramblings/sort.notes Compiler/ramblings/sub.call
+	   + Compiler/ramblings/subst.notes Compiler/run_bytecode_test
+	   + Compiler/run_cc_test Compiler/run_test Compiler/test_harness
+	   + Compiler/test_harness_bytecode Compiler/test_harness_cc
+           + Compiler/typemap
+____________________________________________________________________________
+[     9] By: mbeattie                              on 1997/05/02  19:03:49
+        Log: Don't require CvDEPTH == 0 when bombing out of subs.
+     Branch: thrperl
+           ! pp_hot.c
+____________________________________________________________________________
+[     8] By: mbeattie                              on 1997/04/23  19:06:45
+        Log: Added programmer-level condition variables via "condpair" magic.
+             Added support for detached threads and tweaked a few things.
+     Branch: thrperl
+	   ! embed.h global.sym keywords.h mg.c opcode.h perl.c perl.h
+	   ! pp_ctl.c pp_hot.c proto.h run.c scope.c sv.c sv.h thread.h
+           ! util.c
+____________________________________________________________________________
+[     7] By: mbeattie                              on 1997/04/23  19:04:18
+        Log: Rewrote programmer-level condition variables from scratch. Added
+             support for detaching threads. Fixed handling for arguments
+             passed in to threads and return values for joined threads.
+     Branch: perlext
+           + Thread/lock.t
+	   ! Thread/README Thread/Thread.pm Thread/Thread.xs Thread/cond.t
+           ! Thread/typemap
+____________________________________________________________________________
+[     6] By: mbeattie                              on 1997/04/10  20:17:26
+        Log: Initial check-in of Thread module.
+     Branch: perlext
+	   + Thread/Makefile.PL Thread/Notes Thread/README Thread/Thread.pm
+	   + Thread/Thread.xs Thread/cond.t Thread/create.t Thread/io.t
+	   + Thread/join.t Thread/sync.t Thread/sync2.t Thread/typemap
+	   + Thread/unsync.t Thread/unsync2.t Thread/unsync3.t
+           + Thread/unsync4.t
+____________________________________________________________________________
+[     5] By: mbeattie                              on 1997/04/10  20:05:52
+        Log: Tweaks to allow compilation without -DUSE_THREADS and fix
+             missing parens (pad allocation) in the tokener.
+     Branch: thrperl
+           ! op.c pp_ctl.c toke.c
+____________________________________________________________________________
+[     4] By: mbeattie                              on 1997/03/28  18:40:44
+        Log: Initial 3-way merge from (5.001m, thr1m, 5.003) plus fixups.
+     Branch: thrperl
+           + thread.h
+	   ! XSUB.h av.c cv.h deb.c doio.c doop.c dump.c global.sym gv.c
+	   ! hv.c malloc.c mg.c op.c op.h opcode.h opcode.pl perl.c perl.h
+	   ! pp.h pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regexec.c
+           ! run.c scope.c sv.c sv.h toke.c util.c
+____________________________________________________________________________
+[     3] By: mbeattie                              on 1997/03/28  13:36:23
+        Log: Branch 5.003 -> thrperl
+     Branch: thrperl
+          +> (branch 600 files)
+____________________________________________________________________________
+[     2] By: mbeattie                              on 1997/03/28  13:32:21
+        Log: Initial devel changes.
+             Pseudo-hashes. Optional strong typing. RESTART {}.
+     Branch: perl
+	   ! av.c doop.c embed.h ext/DB_File/DB_File.xs global.sym
+	   ! interp.sym keywords.h keywords.pl lib/ExtUtils/xsubpp op.c
+           ! perl.c perl.h pp.c pp_hot.c proto.h t/op/groups.t toke.c
+____________________________________________________________________________
+[     1] By: mbeattie                              on 1997/03/28  13:17:33
+        Log: Perl 5.003 check-in
+     Branch: perl
+	   + Artistic Changes Changes.Conf Configure Copying EXTERN.h
+	   + INSTALL INTERN.h MANIFEST Makefile.SH README README.vms Todo
+	   + XSUB.h av.c av.h cflags.SH config_H config_h.SH configpm
+	   + configure cop.h cv.h deb.c doio.c doop.c dosish.h dump.c
+	   + eg/ADB eg/README eg/changes eg/client eg/down eg/dus eg/findcp
+	   + eg/findtar eg/g/gcp eg/g/gcp.man eg/g/ged eg/g/ghosts eg/g/gsh
+	   + eg/g/gsh.man eg/muck eg/muck.man eg/myrup eg/nih eg/relink
+	   + eg/rename eg/rmfrom eg/scan/scan_df eg/scan/scan_last
+	   + eg/scan/scan_messages eg/scan/scan_passwd eg/scan/scan_ps
+	   + eg/scan/scan_sudo eg/scan/scan_suid eg/scan/scanner eg/server
+	   + eg/shmkill eg/sysvipc/README eg/sysvipc/ipcmsg
+	   + eg/sysvipc/ipcsem eg/sysvipc/ipcshm eg/travesty eg/unuc
+	   + eg/uudecode eg/van/empty eg/van/unvanish eg/van/vanexp
+	   + eg/van/vanish eg/who eg/wrapsuid emacs/cperl-mode.el embed.h
+	   + embed.pl ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
+	   + ext/DB_File/DB_File_BS ext/DB_File/Makefile.PL
+	   + ext/DB_File/typemap ext/DynaLoader/DynaLoader.pm
+	   + ext/DynaLoader/Makefile.PL ext/DynaLoader/README
+	   + ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_dld.xs
+	   + ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs
+	   + ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_none.xs
+	   + ext/DynaLoader/dl_os2.xs ext/DynaLoader/dl_vms.xs
+	   + ext/DynaLoader/dlutils.c ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs
+	   + ext/Fcntl/Makefile.PL ext/FileHandle/FileHandle.pm
+	   + ext/FileHandle/FileHandle.xs ext/FileHandle/Makefile.PL
+	   + ext/GDBM_File/GDBM_File.pm ext/GDBM_File/GDBM_File.xs
+	   + ext/GDBM_File/Makefile.PL ext/GDBM_File/typemap
+	   + ext/NDBM_File/Makefile.PL ext/NDBM_File/NDBM_File.pm
+	   + ext/NDBM_File/NDBM_File.xs ext/NDBM_File/hints/solaris.pl
+	   + ext/NDBM_File/hints/svr4.pl ext/NDBM_File/typemap
+	   + ext/ODBM_File/Makefile.PL ext/ODBM_File/ODBM_File.pm
+	   + ext/ODBM_File/ODBM_File.xs ext/ODBM_File/hints/dec_osf.pl
+	   + ext/ODBM_File/hints/sco.pl ext/ODBM_File/hints/solaris.pl
+	   + ext/ODBM_File/hints/svr4.pl ext/ODBM_File/typemap
+	   + ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod
+	   + ext/POSIX/POSIX.xs ext/POSIX/typemap ext/SDBM_File/Makefile.PL
+	   + ext/SDBM_File/SDBM_File.pm ext/SDBM_File/SDBM_File.xs
+	   + ext/SDBM_File/sdbm/CHANGES ext/SDBM_File/sdbm/COMPARE
+	   + ext/SDBM_File/sdbm/Makefile.PL ext/SDBM_File/sdbm/README
+	   + ext/SDBM_File/sdbm/README.too ext/SDBM_File/sdbm/biblio
+	   + ext/SDBM_File/sdbm/dba.c ext/SDBM_File/sdbm/dbd.c
+	   + ext/SDBM_File/sdbm/dbe.1 ext/SDBM_File/sdbm/dbe.c
+	   + ext/SDBM_File/sdbm/dbm.c ext/SDBM_File/sdbm/dbm.h
+	   + ext/SDBM_File/sdbm/dbu.c ext/SDBM_File/sdbm/grind
+	   + ext/SDBM_File/sdbm/hash.c ext/SDBM_File/sdbm/linux.patches
+	   + ext/SDBM_File/sdbm/makefile.sdbm ext/SDBM_File/sdbm/pair.c
+	   + ext/SDBM_File/sdbm/pair.h ext/SDBM_File/sdbm/readme.ms
+	   + ext/SDBM_File/sdbm/readme.ps ext/SDBM_File/sdbm/sdbm.3
+	   + ext/SDBM_File/sdbm/sdbm.c ext/SDBM_File/sdbm/sdbm.h
+	   + ext/SDBM_File/sdbm/tune.h ext/SDBM_File/sdbm/util.c
+	   + ext/SDBM_File/typemap ext/Safe/Makefile.PL ext/Safe/Safe.pm
+	   + ext/Safe/Safe.xs ext/Socket/Makefile.PL ext/Socket/Socket.pm
+	   + ext/Socket/Socket.xs ext/util/extliblist ext/util/make_ext
+	   + ext/util/mkbootstrap form.h global.sym globals.c gv.c gv.h
+	   + h2pl/README h2pl/cbreak.pl h2pl/cbreak2.pl h2pl/eg/sizeof.ph
+	   + h2pl/eg/sys/errno.pl h2pl/eg/sys/ioctl.pl h2pl/eg/sysexits.pl
+	   + h2pl/getioctlsizes h2pl/mksizes h2pl/mkvars h2pl/tcbreak
+	   + h2pl/tcbreak2 handy.h hints/3b1.sh hints/3b1cc
+	   + hints/README.hints hints/aix.sh hints/altos486.sh
+	   + hints/apollo.sh hints/aux.sh hints/bsdos.sh hints/convexos.sh
+	   + hints/cxux.sh hints/dec_osf.sh hints/dgux.sh hints/dnix.sh
+	   + hints/dynix.sh hints/dynixptx.sh hints/epix.sh hints/esix4.sh
+	   + hints/fps.sh hints/freebsd.sh hints/genix.sh
+	   + hints/greenhills.sh hints/hpux.sh hints/i386.sh
+	   + hints/irix_4.sh hints/irix_5.sh hints/irix_6.sh
+	   + hints/irix_6_2.sh hints/isc.sh hints/isc_2.sh hints/linux.sh
+	   + hints/machten.sh hints/machten_2.sh hints/mips.sh hints/mpc.sh
+	   + hints/mpeix.sh hints/ncr_tower.sh hints/netbsd.sh
+	   + hints/next_3.sh hints/next_3_0.sh hints/opus.sh hints/os2.sh
+	   + hints/powerux.sh hints/sco.sh hints/sco_2_3_0.sh
+	   + hints/sco_2_3_1.sh hints/sco_2_3_2.sh hints/sco_2_3_3.sh
+	   + hints/sco_2_3_4.sh hints/solaris_2.sh hints/stellar.sh
+	   + hints/sunos_4_0.sh hints/sunos_4_1.sh hints/svr4.sh
+	   + hints/ti1500.sh hints/titanos.sh hints/ultrix_4.sh
+	   + hints/unicos.sh hints/unisysdynix.sh hints/utekv.sh
+	   + hints/uts.sh hv.c hv.h installman installperl interp.sym
+	   + keywords.h keywords.pl lib/AnyDBM_File.pm lib/AutoLoader.pm
+	   + lib/AutoSplit.pm lib/Benchmark.pm lib/Carp.pm lib/Cwd.pm
+	   + lib/Devel/SelfStubber.pm lib/DirHandle.pm lib/English.pm
+	   + lib/Env.pm lib/Exporter.pm lib/ExtUtils/Install.pm
+	   + lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_OS2.pm
+	   + lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm
+	   + lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
+	   + lib/ExtUtils/Mkbootstrap.pm lib/ExtUtils/Mksymlists.pm
+	   + lib/ExtUtils/testlib.pm lib/ExtUtils/typemap
+	   + lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/CheckTree.pm
+	   + lib/File/Copy.pm lib/File/Find.pm lib/File/Path.pm
+	   + lib/FileCache.pm lib/Getopt/Long.pm lib/Getopt/Std.pm
+	   + lib/I18N/Collate.pm lib/IPC/Open2.pm lib/IPC/Open3.pm
+	   + lib/Math/BigFloat.pm lib/Math/BigInt.pm lib/Math/Complex.pm
+	   + lib/Net/Ping.pm lib/Pod/Functions.pm lib/Pod/Text.pm
+	   + lib/Search/Dict.pm lib/SelectSaver.pm lib/SelfLoader.pm
+	   + lib/Shell.pm lib/Symbol.pm lib/Sys/Hostname.pm
+	   + lib/Sys/Syslog.pm lib/Term/Cap.pm lib/Term/Complete.pm
+	   + lib/Term/ReadLine.pm lib/Test/Harness.pm lib/Text/Abbrev.pm
+	   + lib/Text/ParseWords.pm lib/Text/Soundex.pm lib/Text/Tabs.pm
+	   + lib/Text/Wrap.pm lib/Tie/Hash.pm lib/Tie/Scalar.pm
+	   + lib/Tie/SubstrHash.pm lib/Time/Local.pm lib/abbrev.pl
+	   + lib/assert.pl lib/bigfloat.pl lib/bigint.pl lib/bigrat.pl
+	   + lib/cacheout.pl lib/chat2.inter lib/chat2.pl lib/complete.pl
+	   + lib/ctime.pl lib/diagnostics.pm lib/dotsh.pl lib/dumpvar.pl
+	   + lib/exceptions.pl lib/fastcwd.pl lib/find.pl lib/finddepth.pl
+	   + lib/flush.pl lib/ftp.pl lib/getcwd.pl lib/getopt.pl
+	   + lib/getopts.pl lib/hostname.pl lib/importenv.pl lib/integer.pm
+	   + lib/less.pm lib/lib.pm lib/look.pl lib/newgetopt.pl
+	   + lib/open2.pl lib/open3.pl lib/overload.pm lib/perl5db.pl
+	   + lib/pwd.pl lib/shellwords.pl lib/sigtrap.pm lib/splain
+	   + lib/stat.pl lib/strict.pm lib/subs.pm lib/syslog.pl
+	   + lib/tainted.pl lib/termcap.pl lib/timelocal.pl lib/validate.pl
+	   + lib/vars.pm makeaperl.SH makedepend.SH makedir.SH malloc.c
+	   + mg.c mg.h minimod.pl miniperlmain.c mv-if-diff myconfig op.c
+	   + op.h opcode.h opcode.pl os2/Makefile.SHs os2/POSIX.mkfifo
+	   + os2/README os2/README.old os2/diff.configure os2/diff.db_file
+	   + os2/notes os2/os2.c os2/os2ish.h os2/perl2cmd.pl patchlevel.h
+	   + perl.c perl.h perl_exp.SH perlsh perly.c perly.c.diff
+	   + perly.fixer perly.h perly.y pod/Makefile pod/buildtoc
+	   + pod/perl.pod pod/perlbook.pod pod/perlbot.pod pod/perlcall.pod
+	   + pod/perldata.pod pod/perldebug.pod pod/perldiag.pod
+	   + pod/perldsc.pod pod/perlembed.pod pod/perlform.pod
+	   + pod/perlfunc.pod pod/perlguts.pod pod/perlipc.pod
+	   + pod/perllol.pod pod/perlmod.pod pod/perlobj.pod pod/perlop.pod
+	   + pod/perlovl.pod pod/perlpod.pod pod/perlre.pod pod/perlref.pod
+	   + pod/perlrun.pod pod/perlsec.pod pod/perlstyle.pod
+	   + pod/perlsub.pod pod/perlsyn.pod pod/perltie.pod
+	   + pod/perltoc.pod pod/perltrap.pod pod/perlvar.pod
+	   + pod/perlxs.pod pod/perlxstut.pod pod/pod2html.PL
+	   + pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL pod/roffitall
+	   + pod/splitman pod/splitpod pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c
+	   + proto.h regcomp.c regcomp.h regexec.c regexp.h run.c scope.c
+	   + scope.h sv.c sv.h t/README t/TEST t/base/cond.t t/base/if.t
+	   + t/base/lex.t t/base/pat.t t/base/term.t t/cmd/elsif.t
+	   + t/cmd/for.t t/cmd/mod.t t/cmd/subval.t t/cmd/switch.t
+	   + t/cmd/while.t t/comp/cmdopt.t t/comp/cpp.aux t/comp/cpp.t
+	   + t/comp/decl.t t/comp/multiline.t t/comp/package.t
+	   + t/comp/script.t t/comp/term.t t/harness t/io/argv.t t/io/dup.t
+	   + t/io/fs.t t/io/inplace.t t/io/pipe.t t/io/print.t t/io/tell.t
+	   + t/lib/anydbm.t t/lib/bigint.t t/lib/bigintpm.t
+	   + t/lib/db-btree.t t/lib/db-hash.t t/lib/db-recno.t
+	   + t/lib/dirhand.t t/lib/english.t t/lib/filehand.t t/lib/gdbm.t
+	   + t/lib/ndbm.t t/lib/odbm.t t/lib/posix.t t/lib/safe.t
+	   + t/lib/sdbm.t t/lib/socket.t t/lib/soundex.t t/op/append.t
+	   + t/op/array.t t/op/auto.t t/op/chop.t t/op/cond.t t/op/delete.t
+	   + t/op/do.t t/op/each.t t/op/eval.t t/op/exec.t t/op/exp.t
+	   + t/op/flip.t t/op/fork.t t/op/glob.t t/op/goto.t t/op/groups.t
+	   + t/op/index.t t/op/int.t t/op/join.t t/op/list.t t/op/local.t
+	   + t/op/magic.t t/op/misc.t t/op/mkdir.t t/op/my.t t/op/oct.t
+	   + t/op/ord.t t/op/overload.t t/op/pack.t t/op/pat.t t/op/push.t
+	   + t/op/quotemeta.t t/op/rand.t t/op/range.t t/op/re_tests
+	   + t/op/read.t t/op/readdir.t t/op/ref.t t/op/regexp.t
+	   + t/op/repeat.t t/op/sleep.t t/op/sort.t t/op/split.t
+	   + t/op/sprintf.t t/op/stat.t t/op/study.t t/op/subst.t
+	   + t/op/substr.t t/op/time.t t/op/undef.t t/op/unshift.t
+	   + t/op/vec.t t/op/write.t t/re_tests taint.c toke.c unixish.h
+	   + util.c util.h utils/Makefile utils/c2ph.PL utils/h2ph.PL
+	   + utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL utils/pl2pm.PL
+	   + vms/Makefile vms/config.vms vms/descrip.mms
+	   + vms/ext/Filespec.pm vms/ext/Stdio/0README.txt
+	   + vms/ext/Stdio/Makefile.PL vms/ext/Stdio/Stdio.pm
+	   + vms/ext/Stdio/Stdio.xs vms/ext/Stdio/test.pl vms/fndvers.com
+	   + vms/gen_shrfls.pl vms/genconfig.pl vms/genopt.com
+	   + vms/make_command.com vms/mms2make.pl vms/myconfig.com
+	   + vms/perlvms.pod vms/perly_c.vms vms/perly_h.vms
+	   + vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c
+	   + vms/vms_yfix.pl vms/vmsish.h vms/writemain.pl writemain.SH
+	   + x2p/EXTERN.h x2p/INTERN.h x2p/Makefile.SH x2p/a2p.c x2p/a2p.h
+	   + x2p/a2p.man x2p/a2p.y x2p/a2py.c x2p/cflags.SH
+	   + x2p/find2perl.PL x2p/handy.h x2p/hash.c x2p/hash.h x2p/s2p.PL
+	   + x2p/s2p.man x2p/str.c x2p/str.h x2p/util.c x2p/util.h
+           + x2p/walk.c
diff --git a/contrib/perl5/Configure b/contrib/perl5/Configure
index 5bcdbdaa5c4f..ddec97ca68d8 100755
--- a/contrib/perl5/Configure
+++ b/contrib/perl5/Configure
@@ -20,8 +20,8 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Tue Jul  7 10:10:21 EDT 1998 [metaconfig 3.0 PL70]
-# (with additional metaconfig patches by jhi@iki.fi)
+# Generated on Wed Mar 22 19:13:31 EET 2000 [metaconfig 3.0 PL70]
+# (with additional metaconfig patches by perlbug@perl.com)
 
 cat >/tmp/c1$$ <options.awk <<'EOF'
 BEGIN {
-	optstr = "dD:eEf:hKOrsSU:V";	# getopt-style specification
+	optstr = "A:dD:eEf:hKOrsSU:V";	# getopt-style specification
 
 	len = length(optstr);
 	for (i = 1; i <= len; i++) {
@@ -1045,7 +1184,7 @@ silent=''
 extractsh=''
 override=''
 knowitall=''
-rm -f optdef.sh
+rm -f optdef.sh posthint.sh
 cat >optdef.sh <> posthint.sh ;;
+	    clear)
+		echo "$yyy=''"			>> posthint.sh ;;
+	    define)
+	        case "$zzz" in
+		'') zzz=define ;;
+		esac
+		echo "$yyy='$zzz'"		>> posthint.sh ;;
+	    eval)
+		echo "eval \"$yyy=$zzz\""	>> posthint.sh ;;
+	    prepend)
+		echo "$yyy=\"$zzz\${$yyy}\""	>> posthint.sh ;;
+	    undef)
+	        case "$zzz" in
+		'') zzz="$uuu" ;;
+		esac
+		echo "$yyy=$zzz"		>> posthint.sh ;;
+            *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
+	    esac
+	    shift
+	    ;;
 	-V) echo "$me generated by metaconfig 3.0 PL70." >&2
-		exit 0;;
+	    exit 0;;
 	--) break;;
 	-*) echo "$me: unknown option $1" >&2; shift; error=true;;
 	*) break;;
@@ -1111,7 +1300,7 @@ case "$error" in
 true)
 	cat >&2 <extract <<'EOS'
-CONFIG=true
+CONFIGDOTSH=true
 echo "Doing variable substitutions on .SH files..."
 if test -f $src/MANIFEST; then
 	set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
@@ -1368,7 +1574,7 @@ THIS PACKAGE SEEMS TO BE INCOMPLETE.
 You have the option of continuing the configuration process, despite the
 distinct possibility that your kit is damaged, by typing 'y'es.  If you
 do, don't blame me if something goes wrong.  I advise you to type 'n'o
-and then contact perlbug@perl.com.
+and contact the author (perlbug@perl.com).
 
 EOM
 		echo $n "Continue? [n] $c" >&4
@@ -1593,7 +1799,7 @@ Much effort has been expended to ensure that this shell script will run on any
 Unix system.  If despite that it blows up on yours, your best bet is to edit
 Configure and run it again.  If you can't run Configure for some reason,
 you'll have to generate a config.sh file by hand.  Whatever problems you
-have, let perlbug@perl.com know how I blew it.
+have, let me (perlbug@perl.com) know how I blew it.
 
 This installation script affects things in two ways:
 
@@ -1665,7 +1871,6 @@ comm
 cp
 echo
 expr
-find
 grep
 ls
 make
@@ -1687,15 +1892,11 @@ date
 egrep
 gzip
 less
-line
 ln
 more
 nm
 nroff
-perl
 pg
-sendmail
-tee
 test
 uname
 zip
@@ -1902,7 +2103,8 @@ $eunicefix tr
 : Try to determine whether config.sh was made on this system
 case "$config_sh" in
 '')
-myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
+myuname=`$uname -a 2>/dev/null`
+$test -z "$myuname" && myuname=`hostname 2>/dev/null`
 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
 # because the A-Z/a-z are not consecutive.
 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
@@ -1968,6 +2170,7 @@ EOM
 	$test -f /dnix && osname=dnix
 	$test -f /lynx.os && osname=lynxos
 	$test -f /unicos && osname=unicos && osvers=`$uname -r`
+	$test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
 	$test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
 	$test -f /bin/mips && /bin/mips && osname=mips
 	$test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
@@ -1987,12 +2190,14 @@ EOM
 			osvers="$2.$3"
 		fi
 	fi
+
 	$test -f /sys/posix.dll &&
 		$test -f /usr/bin/what &&
 		set X `/usr/bin/what /sys/posix.dll` &&
 		$test "$3" = UWIN &&
 		osname=uwin &&
 		osvers="$5"
+
 	if $test -f $uname; then
 		set X $myuname
 		shift
@@ -2013,7 +2218,7 @@ EOM
 				osvers=$tmp
 			elif $test -f /etc/kconfig; then
 				osname=isc
-				if test "$lns" = "ln -s"; then
+				if test "$lns" = "$ln -s"; then
 					osvers=4
 				elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
 					osvers=3
@@ -2021,7 +2226,7 @@ EOM
 					osvers=2
 				fi
 			fi
-			unset tmp
+			tmp=''
 			;;
 		pc*)
 			if test -n "$DJGPP"; then
@@ -2042,6 +2247,12 @@ EOM
 			*) osvers=$tmp;;
 			esac
 			;;
+		bsd386) osname=bsd386
+			osvers=`$uname -r`
+			;;
+		cygwin*) osname=cygwin
+			osvers="$3"
+			;;
 		*dc.osx) osname=dcosx
 			osvers="$3"
 			;;
@@ -2055,7 +2266,7 @@ EOM
 			osvers="$3"
 			;;
 		dynixptx*) osname=dynixptx
-			osvers=`echo "$4" | $sed 's/^v//'`
+			osvers=`echo "$4"|sed 's/^v//'`
 			;;
 		freebsd) osname=freebsd 
 			osvers="$3" ;;
@@ -2086,14 +2297,17 @@ EOM
 			*) osname=newsos ;;
 			esac
 			;;
-		bsd386) osname=bsd386
-			osvers=`$uname -r`
+		next*) osname=next ;;
+		POSIX-BC | posix-bc ) osname=posix-bc
+			osvers="$3"
 			;;
 		powerux | power_ux | powermax_os | powermaxos | \
 		powerunix | power_unix) osname=powerux
 			osvers="$3"
 			;;
-		next*) osname=next ;;
+		qnx) osname=qnx
+			osvers="$4"
+			;;
 		solaris) osname=solaris
 			case "$3" in
 			5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
@@ -2128,12 +2342,12 @@ EOM
 			mips)	osname=mips_osf1 ;;
 			esac
 			;;
-		uts) osname=uts 
-			osvers="$3"
-			;;
-		qnx) osname=qnx
+		unixware) osname=svr5
 			osvers="$4"
 			;;
+		uts) osname=uts
+			osvers="$3"
+			;;
 		$2) case "$osname" in
 			*isc*) ;;
 			*freebsd*) ;;
@@ -2207,12 +2421,12 @@ EOM
 	: specified already.
 	case "$hintfile" in
 	''|' ')
-		file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
+		file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
 		: Also try without trailing minor version numbers.
-		xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
-		xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
-		xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
-		xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
+		xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
+		xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
+		xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
+		xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
 		case "$file" in
 		'') dflt=none ;;
 		*)  case "$osvers" in
@@ -2263,7 +2477,7 @@ EOM
 
 You may give one or more space-separated answers, or "none" if appropriate.
 A well-behaved OS will have no hints, so answering "none" or just "Policy"
-is a good thing.  DO NOT give a wrong version.
+is a good thing.  DO NOT give a wrong version or a wrong OS.
 
 EOM
 
@@ -2377,8 +2591,11 @@ none)  osvers='' ;;
 *) osvers="$ans" ;;
 esac
 
+
+. ./posthint.sh
+
 : who configured the system
-cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
+cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
 cf_by=`(logname) 2>/dev/null`
 case "$cf_by" in
 "")
@@ -2412,29 +2629,76 @@ $undef$define) . ./whoa; eval "$var=\$tu";;
 *) eval "$var=$val";;
 esac'
 
+case "$usethreads" in
+$define|true|[yY]*)     dflt='y';;
+*) dflt='n';;
+esac
 cat <&4 < tmparch 2>&1 ; then
-		tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
-			-e 's/$/'"-$osname/" tmparch`
-	else
-		tarch="$osname"
-	fi
-	$rm -f tmparch
-else
-	tarch="$osname"
-fi
-case "$myarchname" in
-''|"$tarch") ;;
-*)
-	echo "(Your architecture name used to be $myarchname.)"
-	archname=''
-	;;
-esac
-case "$archname" in
-'') dflt="$tarch";;
-*) dflt="$archname";;
-esac
-rp='What is your architecture name'
-. ./myread
-case "$usethreads" in
-$define)  echo "Threads selected." >&4
-          case "$ans" in
-          *-thread) echo "...and architecture name already ends in -thread." >&4
-                    archname="$ans"
-                    ;;
-          *)        archname="$ans-thread"
-                    echo "...setting architecture name to $archname." >&4
-                    ;;
-          esac
-          ;;
-*)        archname="$ans" ;;
-esac
-myarchname="$tarch"
-: is AFS running?
-echo " "
-case "$afs" in
-$define|true)	afs=true ;;
-$undef|false)	afs=false ;;
-*)	if test -d /afs; then
-		afs=true
-	else
-		afs=false
-	fi
-	;;
-esac
-if $afs; then
-	echo "AFS may be running... I'll be extra cautious then..." >&4
-else
-	echo "AFS does not seem to be running..." >&4
-fi
-
-: decide how portable to be.  Allow command line overrides.
-case "$d_portable" in
-"$undef") ;;
-*)	d_portable="$define" ;;
-esac
-
-: set up shell script to do ~ expansion
-cat >filexp <&2
-			exit 1
-		fi
-		case "\$1" in
-		*/*)
-			echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
-			;;
-		*)
-			echo \$dir
-			;;
-		esac
-	fi
-	;;
-*)
-	echo \$1
-	;;
-esac
-EOSS
-chmod +x filexp
-$eunicefix filexp
-
-: now set up to get a file name
-cat <getfile
-$startsh
-EOS
-cat <<'EOSC' >>getfile
-tilde=''
-fullpath=''
-already=''
-skip=''
-none_ok=''
-exp_file=''
-nopath_ok=''
-orig_rp="$rp"
-orig_dflt="$dflt"
-
-case "$fn" in
-*\(*)
-	expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
-	fn=`echo $fn | sed 's/(.*)//'`
-	;;
-esac
-
-case "$fn" in
-*:*)
-	loc_file=`expr $fn : '.*:\(.*\)'`
-	fn=`expr $fn : '\(.*\):.*'`
-	;;
-esac
-
-case "$fn" in
-*~*) tilde=true;;
-esac
-case "$fn" in
-*/*) fullpath=true;;
-esac
-case "$fn" in
-*+*) skip=true;;
-esac
-case "$fn" in
-*n*) none_ok=true;;
-esac
-case "$fn" in
-*e*) exp_file=true;;
-esac
-case "$fn" in
-*p*) nopath_ok=true;;
-esac
-
-case "$fn" in
-*f*) type='File';;
-*d*) type='Directory';;
-*l*) type='Locate';;
-esac
-
-what="$type"
-case "$what" in
-Locate) what='File';;
-esac
-
-case "$exp_file" in
-'')
-	case "$d_portable" in
-	"$define") ;;
-	*) exp_file=true;;
-	esac
-	;;
-esac
-
-cd ..
-while test "$type"; do
-	redo=''
-	rp="$orig_rp"
-	dflt="$orig_dflt"
-	case "$tilde" in
-	true) rp="$rp (~name ok)";;
-	esac
-	. UU/myread
-	if test -f UU/getfile.ok && \
-		$contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
-	then
-		value="$ans"
-		ansexp="$ans"
-		break
-	fi
-	case "$ans" in
-	none)
-		value=''
-		ansexp=''
-		case "$none_ok" in
-		true) type='';;
-		esac
-		;;
-	*)
-		case "$tilde" in
-		'') value="$ans"
-			ansexp="$ans";;
-		*)
-			value=`UU/filexp $ans`
-			case $? in
-			0)
-				if test "$ans" != "$value"; then
-					echo "(That expands to $value on this system.)"
-				fi
-				;;
-			*) value="$ans";;
-			esac
-			ansexp="$value"
-			case "$exp_file" in
-			'') value="$ans";;
-			esac
-			;;
-		esac
-		case "$fullpath" in
-		true)
-			case "$ansexp" in
-			/*) value="$ansexp" ;;
-			*)
-				redo=true
-				case "$already" in
-				true)
-				echo "I shall only accept a full path name, as in /bin/ls." >&4
-				echo "Use a ! shell escape if you wish to check pathnames." >&4
-					;;
-				*)
-				echo "Please give a full path name, starting with slash." >&4
-					case "$tilde" in
-					true)
-				echo "Note that using ~name is ok provided it expands well." >&4
-						already=true
-						;;
-					esac
-				esac
-				;;
-			esac
-			;;
-		esac
-		case "$redo" in
-		'')
-			case "$type" in
-			File)
-				if test -f "$ansexp"; then
-					type=''
-				elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
-				then
-					echo "($value is not a plain file, but that's ok.)"
-					type=''
-				fi
-				;;
-			Directory)
-				if test -d "$ansexp"; then
-					type=''
-				fi
-				;;
-			Locate)
-				if test -d "$ansexp"; then
-					echo "(Looking for $loc_file in directory $value.)"
-					value="$value/$loc_file"
-					ansexp="$ansexp/$loc_file"
-				fi
-				if test -f "$ansexp"; then
-					type=''
-				fi
-				case "$nopath_ok" in
-				true)	case "$value" in
-					*/*) ;;
-					*)	echo "Assuming $value will be in people's path."
-						type=''
-						;;
-					esac
-					;;
-				esac
-				;;
-			esac
-
-			case "$skip" in
-			true) type='';
-			esac
-
-			case "$type" in
-			'') ;;
-			*)
-				if test "$fastread" = yes; then
-					dflt=y
-				else
-					dflt=n
-				fi
-				rp="$what $value doesn't exist.  Use that name anyway?"
-				. UU/myread
-				dflt=''
-				case "$ans" in
-				y*) type='';;
-				*) echo " ";;
-				esac
-				;;
-			esac
-			;;
-		esac
-		;;
-	esac
-done
-cd UU
-ans="$value"
-rp="$orig_rp"
-dflt="$orig_dflt"
-rm -f getfile.ok
-EOSC
-
-: determine root of directory hierarchy where package will be installed.
-case "$prefix" in
-'')
-	dflt=`./loc . /usr/local /usr/local /local /opt /usr`
-	;;
-*)
-	dflt="$prefix"
-	;;
-esac
-$cat <&4
-if $test -r $rsrc/patchlevel.h;then
-	patchlevel=`awk '/define[ 	]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
-	subversion=`awk '/define[ 	]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
-else
-	patchlevel=0
-	subversion=0
-fi
-$echo $n "(You have $package" $c
-case "$package" in
-"*$baserev")	;;
-*)		$echo $n " $baserev" $c ;;
-esac
-$echo $n " patchlevel $patchlevel" $c
-test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
-echo ".)"
-
-if test 0 -eq "$subversion"; then
-	version=`LC_ALL=C; export LC_ALL; \
-		 echo $baserev $patchlevel | \
-		 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
-else
-	version=`LC_ALL=C; export LC_ALL; \
-		 echo $baserev $patchlevel $subversion | \
-		 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
-fi
-: Figure out perl API version.  Perhaps this should be in patchlevel.h
-if test "$subversion" -lt 50; then
-	apiversion=`LC_ALL=C; export LC_ALL; \
-		 echo $baserev $patchlevel | \
-		 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
-else
-	apiversion="$version"
-fi
-
-: determine where private library files go
-: Usual default is /usr/local/lib/perl5/$version.
-: Also allow things like /opt/perl/lib/$version, since 
-: /opt/perl/lib/perl5... would be redundant.
-case "$prefix" in
-*perl*) set dflt privlib lib/$version ;;
-*)	 set dflt privlib lib/$package/$version ;;
-esac
-eval $prefixit
-$cat <bsd
-echo exit 1 >usg
-echo exit 1 >v7
-echo exit 1 >osf1
-echo exit 1 >eunice
-echo exit 1 >xenix
-echo exit 1 >venix
-echo exit 1 >os2
-d_bsd="$undef"
-$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
-if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
-then
-	echo "Looks kind of like an OSF/1 system, but we'll see..."
-	echo exit 0 >osf1
-elif test `echo abc | tr a-z A-Z` = Abc ; then
-	xxx=`./loc addbib blurfl $pth`
-	if $test -f $xxx; then
-	echo "Looks kind of like a USG system with BSD features, but we'll see..."
-		echo exit 0 >bsd
-		echo exit 0 >usg
-	else
-		if $contains SIGTSTP foo >/dev/null 2>&1 ; then
-			echo "Looks kind of like an extended USG system, but we'll see..."
-		else
-			echo "Looks kind of like a USG system, but we'll see..."
-		fi
-		echo exit 0 >usg
-	fi
-elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
-	echo "Looks kind of like a BSD system, but we'll see..."
-	d_bsd="$define"
-	echo exit 0 >bsd
-else
-	echo "Looks kind of like a Version 7 system, but we'll see..."
-	echo exit 0 >v7
-fi
-case "$eunicefix" in
-*unixtovms*)
-	$cat <<'EOI'
-There is, however, a strange, musty smell in the air that reminds me of
-something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
-EOI
-	echo exit 0 >eunice
-	d_eunice="$define"
-: it so happens the Eunice I know will not run shell scripts in Unix format
-	;;
-*)
-	echo " "
-	echo "Congratulations.  You aren't running Eunice."
-	d_eunice="$undef"
-	;;
-esac
-: Detect OS2.  The p_ variable is set above in the Head.U unit.
-case "$p_" in
-:) ;;
-*)
-	$cat <<'EOI'
-I have the feeling something is not exactly right, however...don't tell me...
-lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
-EOI
-	echo exit 0 >os2
-	;;
-esac
-if test -f /xenix; then
-	echo "Actually, this looks more like a XENIX system..."
-	echo exit 0 >xenix
-	d_xenix="$define"
-else
-	echo " "
-	echo "It's not Xenix..."
-	d_xenix="$undef"
-fi
-chmod +x xenix
-$eunicefix xenix
-if test -f /venix; then
-	echo "Actually, this looks more like a VENIX system..."
-	echo exit 0 >venix
-else
-	echo " "
-	if ./xenix; then
-		: null
-	else
-		echo "Nor is it Venix..."
-	fi
-fi
-chmod +x bsd usg v7 osf1 eunice xenix venix os2
-$eunicefix bsd usg v7 osf1 eunice xenix venix os2
-$rm -f foo
-
-: see if setuid scripts can be secure
-$cat <reflect
-	chmod +x,u+s reflect
-	./reflect >flect 2>&1
-	if $contains "/dev/fd" flect >/dev/null; then
-		echo "Congratulations, your kernel has secure setuid scripts!" >&4
-		val="$define"
 	else
 		$cat <&4
-				dflt=n;;
-			"$undef")
-				echo "Well, the $hint value is *not* secure." >&4
-				dflt=n;;
-			*)	echo "Well, the $hint value *is* secure." >&4
-				dflt=y;;
-			esac
-			;;
-		*)
-			$rm -f reflect flect
-			echo "#!$ls" >reflect
-			chmod +x,u+s reflect
-			echo >flect
-			chmod a+w flect
-			echo '"su" will (probably) prompt you for '"$ans's password."
-			su $ans -c './reflect >flect'
-			if $contains "/dev/fd" flect >/dev/null; then
-				echo "Okay, it looks like setuid scripts are secure." >&4
-				dflt=y
-			else
-				echo "I don't think setuid scripts are secure." >&4
-				dflt=n
-			fi
-			;;
-		esac
-		rp='Does your kernel have *secure* setuid scripts?'
-		. ./myread
-		case "$ans" in
-		[yY]*)	val="$define";;
-		*)	val="$undef";;
-		esac
 	fi
-else
-	echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
-	echo "(That's for file descriptors, not floppy disks.)"
-	val="$undef"
-fi
-set d_suidsafe
-eval $setvar
-
-$rm -f reflect flect
-
-: now see if they want to do setuid emulation
-echo " "
-val="$undef"
-case "$d_suidsafe" in
-"$define")
-	val="$undef"
-	echo "No need to emulate SUID scripts since they are secure here." >& 4
 	;;
-*)
-	$cat <bsd
+echo exit 1 >usg
+echo exit 1 >v7
+echo exit 1 >osf1
+echo exit 1 >eunice
+echo exit 1 >xenix
+echo exit 1 >venix
+echo exit 1 >os2
+d_bsd="$undef"
+$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
+if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
+then
+	echo "Looks kind of like an OSF/1 system, but we'll see..."
+	echo exit 0 >osf1
+elif test `echo abc | tr a-z A-Z` = Abc ; then
+	xxx=`./loc addbib blurfl $pth`
+	if $test -f $xxx; then
+	echo "Looks kind of like a USG system with BSD features, but we'll see..."
+		echo exit 0 >bsd
+		echo exit 0 >usg
+	else
+		if $contains SIGTSTP foo >/dev/null 2>&1 ; then
+			echo "Looks kind of like an extended USG system, but we'll see..."
+		else
+			echo "Looks kind of like a USG system, but we'll see..."
+		fi
+		echo exit 0 >usg
+	fi
+elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
+	echo "Looks kind of like a BSD system, but we'll see..."
+	d_bsd="$define"
+	echo exit 0 >bsd
+else
+	echo "Looks kind of like a Version 7 system, but we'll see..."
+	echo exit 0 >v7
+fi
+case "$eunicefix" in
+*unixtovms*)
+	$cat <<'EOI'
+There is, however, a strange, musty smell in the air that reminds me of
+something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
+EOI
+	echo exit 0 >eunice
+	d_eunice="$define"
+: it so happens the Eunice I know will not run shell scripts in Unix format
+	;;
+*)
+	echo " "
+	echo "Congratulations.  You aren't running Eunice."
+	d_eunice="$undef"
+	;;
+esac
+: Detect OS2.  The p_ variable is set above in the Head.U unit.
+case "$p_" in
+:) ;;
+*)
+	$cat <<'EOI'
+I have the feeling something is not exactly right, however...don't tell me...
+lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
+EOI
+	echo exit 0 >os2
+	;;
+esac
+if test -f /xenix; then
+	echo "Actually, this looks more like a XENIX system..."
+	echo exit 0 >xenix
+	d_xenix="$define"
+else
+	echo " "
+	echo "It's not Xenix..."
+	d_xenix="$undef"
+fi
+chmod +x xenix
+$eunicefix xenix
+if test -f /venix; then
+	echo "Actually, this looks more like a VENIX system..."
+	echo exit 0 >venix
+else
+	echo " "
+	if ./xenix; then
+		: null
+	else
+		echo "Nor is it Venix..."
+	fi
+fi
+chmod +x bsd usg v7 osf1 eunice xenix venix os2
+$eunicefix bsd usg v7 osf1 eunice xenix venix os2
+$rm -f foo
+
 : see if we need a special compiler
 echo " "
 if ./usg; then
@@ -3421,11 +3078,12 @@ int main() {
 	exit(0);
 }
 EOM
-if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
+if $cc $ldflags -o gccvers gccvers.c; then
 	gccversion=`./gccvers`
 	case "$gccversion" in
 	'') echo "You are not using GNU cc." ;;
-	*)  echo "You are using GNU cc $gccversion." ;;
+	*)  echo "You are using GNU cc $gccversion."
+	    ;;
 	esac
 else
 	echo " "
@@ -3443,6 +3101,285 @@ case "$gccversion" in
 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
 esac
 
+: decide how portable to be.  Allow command line overrides.
+case "$d_portable" in
+"$undef") ;;
+*)	d_portable="$define" ;;
+esac
+
+: set up shell script to do ~ expansion
+cat >filexp <&2
+			exit 1
+		fi
+		case "\$1" in
+		*/*)
+			echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
+			;;
+		*)
+			echo \$dir
+			;;
+		esac
+	fi
+	;;
+*)
+	echo \$1
+	;;
+esac
+EOSS
+chmod +x filexp
+$eunicefix filexp
+
+: now set up to get a file name
+cat <getfile
+$startsh
+EOS
+cat <<'EOSC' >>getfile
+tilde=''
+fullpath=''
+already=''
+skip=''
+none_ok=''
+exp_file=''
+nopath_ok=''
+orig_rp="$rp"
+orig_dflt="$dflt"
+case "$gfpth" in
+'') gfpth='.' ;;
+esac
+
+case "$fn" in
+*\(*)
+	expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
+	fn=`echo $fn | sed 's/(.*)//'`
+	;;
+esac
+
+case "$fn" in
+*:*)
+	loc_file=`expr $fn : '.*:\(.*\)'`
+	fn=`expr $fn : '\(.*\):.*'`
+	;;
+esac
+
+case "$fn" in
+*~*) tilde=true;;
+esac
+case "$fn" in
+*/*) fullpath=true;;
+esac
+case "$fn" in
+*+*) skip=true;;
+esac
+case "$fn" in
+*n*) none_ok=true;;
+esac
+case "$fn" in
+*e*) exp_file=true;;
+esac
+case "$fn" in
+*p*) nopath_ok=true;;
+esac
+
+case "$fn" in
+*f*) type='File';;
+*d*) type='Directory';;
+*l*) type='Locate';;
+esac
+
+what="$type"
+case "$what" in
+Locate) what='File';;
+esac
+
+case "$exp_file" in
+'')
+	case "$d_portable" in
+	"$define") ;;
+	*) exp_file=true;;
+	esac
+	;;
+esac
+
+cd ..
+while test "$type"; do
+	redo=''
+	rp="$orig_rp"
+	dflt="$orig_dflt"
+	case "$tilde" in
+	true) rp="$rp (~name ok)";;
+	esac
+	. UU/myread
+	if test -f UU/getfile.ok && \
+		$contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
+	then
+		value="$ans"
+		ansexp="$ans"
+		break
+	fi
+	case "$ans" in
+	none)
+		value=''
+		ansexp=''
+		case "$none_ok" in
+		true) type='';;
+		esac
+		;;
+	*)
+		case "$tilde" in
+		'') value="$ans"
+			ansexp="$ans";;
+		*)
+			value=`UU/filexp $ans`
+			case $? in
+			0)
+				if test "$ans" != "$value"; then
+					echo "(That expands to $value on this system.)"
+				fi
+				;;
+			*) value="$ans";;
+			esac
+			ansexp="$value"
+			case "$exp_file" in
+			'') value="$ans";;
+			esac
+			;;
+		esac
+		case "$fullpath" in
+		true)
+			case "$ansexp" in
+			/*) value="$ansexp" ;;
+			*)
+				redo=true
+				case "$already" in
+				true)
+				echo "I shall only accept a full path name, as in /bin/ls." >&4
+				echo "Use a ! shell escape if you wish to check pathnames." >&4
+					;;
+				*)
+				echo "Please give a full path name, starting with slash." >&4
+					case "$tilde" in
+					true)
+				echo "Note that using ~name is ok provided it expands well." >&4
+						already=true
+						;;
+					esac
+				esac
+				;;
+			esac
+			;;
+		esac
+		case "$redo" in
+		'')
+			case "$type" in
+			File)
+				for fp in $gfpth; do
+					if test "X$fp" = X.; then
+					    pf="$ansexp"
+					else    
+					    pf="$fp/$ansexp"
+					fi
+					if test -f "$pf"; then
+						type=''
+					elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
+					then
+						echo "($value is not a plain file, but that's ok.)"
+						type=''
+					fi
+					if test X"$type" = X; then
+					    value="$pf"
+					    break
+					fi
+				done
+				;;
+			Directory)
+				for fp in $gfpth; do
+					if test "X$fp" = X.; then
+					    dir="$ans"
+					    direxp="$ansexp"
+					else    
+					    dir="$fp/$ansexp"
+					    direxp="$fp/$ansexp"
+					fi
+					if test -d "$direxp"; then
+						type=''
+						value="$dir"
+						break
+					fi
+				done
+				;;
+			Locate)
+				if test -d "$ansexp"; then
+					echo "(Looking for $loc_file in directory $value.)"
+					value="$value/$loc_file"
+					ansexp="$ansexp/$loc_file"
+				fi
+				if test -f "$ansexp"; then
+					type=''
+				fi
+				case "$nopath_ok" in
+				true)	case "$value" in
+					*/*) ;;
+					*)	echo "Assuming $value will be in people's path."
+						type=''
+						;;
+					esac
+					;;
+				esac
+				;;
+			esac
+
+			case "$skip" in
+			true) type='';
+			esac
+
+			case "$type" in
+			'') ;;
+			*)
+				if test "$fastread" = yes; then
+					dflt=y
+				else
+					dflt=n
+				fi
+				rp="$what $value doesn't exist.  Use that name anyway?"
+				. UU/myread
+				dflt=''
+				case "$ans" in
+				y*) type='';;
+				*) echo " ";;
+				esac
+				;;
+			esac
+			;;
+		esac
+		;;
+	esac
+done
+cd UU
+ans="$value"
+rp="$orig_rp"
+dflt="$orig_dflt"
+rm -f getfile.ok
+test "X$gfpthkeep" != Xy && gfpth=""
+EOSC
+
 : What should the include directory be ?
 echo " "
 $echo $n "Hmm...  $c"
@@ -3499,7 +3436,13 @@ ABC.XYZ
 EOT
 cd ..
 if test ! -f cppstdin; then
-echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+	if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
+		# AIX cc -E doesn't show the absolute headerfile
+		# locations but we'll cheat by using the -M flag.
+		echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
+	else
+		echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+	fi
 else
 	echo "Keeping your $hint cppstdin wrapper."
 fi
@@ -3691,7 +3634,7 @@ esac
 $cat <&4
@@ -3751,47 +3714,74 @@ esac
 case "$libswanted" in
 '') libswanted='c_s';;
 esac
+case "$usesocks" in
+"$define") libswanted="$libswanted socks5 socks5_sh" ;;
+esac
+libsfound=''
+libsfiles=''
+libsdirs=''
+libspath=''
+for thisdir in $libpth $xlibpth; do
+  test -d $thisdir && libspath="$libspath $thisdir"
+done
 for thislib in $libswanted; do
-	
-	if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
-		$test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
-		echo "Found -l$thislib (shared)."
+	for thisdir in $libspath; do
+	    xxx=''
+	    if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
+		xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
+	        $test -f "$xxx" && eval $libscheck
+		$test -f "$xxx" && libstyle=shared
+	    fi
+	    if test ! -f "$xxx"; then
+		xxx=$thisdir/lib$thislib.$so
+	        $test -f "$xxx" && eval $libscheck
+		$test -f "$xxx" && libstyle=shared
+	    fi	
+	    if test ! -f "$xxx"; then
+		xxx=$thisdir/lib$thislib$_a
+	        $test -f "$xxx" && eval $libscheck
+		$test -f "$xxx" && libstyle=static
+	    fi
+	    if test ! -f "$xxx"; then
+		xxx=$thisdir/$thislib$_a
+	        $test -f "$xxx" && eval $libscheck
+		$test -f "$xxx" && libstyle=static
+	    fi
+	    if test ! -f "$xxx"; then
+		xxx=$thisdir/lib${thislib}_s$_a
+	        $test -f "$xxx" && eval $libscheck
+		$test -f "$xxx" && libstyle=static
+		$test -f "$xxx" && thislib=${thislib}_s
+	    fi
+	    if test ! -f "$xxx"; then
+		xxx=$thisdir/Slib$thislib$_a
+	        $test -f "$xxx" && eval $libscheck
+		$test -f "$xxx" && libstyle=static
+	    fi
+	    if $test -f "$xxx"; then
+		case "$libstyle" in
+		shared) echo "Found -l$thislib (shared)." ;;
+		static) echo "Found -l$thislib." ;;
+		*)      echo "Found -l$thislib ($libstyle)." ;;
+		esac
 		case " $dflt " in
 		*"-l$thislib "*);;
-		*) dflt="$dflt -l$thislib";;
+		*) dflt="$dflt -l$thislib"
+                   libsfound="$libsfound $xxx"
+                   yyy=`basename $xxx`
+                   libsfiles="$libsfiles $yyy"
+                   yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
+                   case " $libsdirs " in
+                   *" $yyy "*) ;;
+                   *) libsdirs="$libsdirs $yyy" ;;
+                   esac
+		   ;;
 		esac
-	elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
-		echo "Found -l$thislib (shared)."
-		case " $dflt " in
-		*"-l$thislib "*);;
-		*) dflt="$dflt -l$thislib";;
-		esac
-	elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
-		echo "Found -l$thislib."
-		case " $dflt " in
-		*"-l$thislib "*);;
-		*) dflt="$dflt -l$thislib";;
-		esac
-	elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
-		echo "Found -l$thislib."
-		case " $dflt " in
-		*"-l$thislib "*);;
-		*) dflt="$dflt -l$thislib";;
-		esac
-	elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
-		echo "Found -l${thislib}_s."
-		case " $dflt " in
-		*"-l$thislib "*);;
-		*) dflt="$dflt -l${thislib}_s";;
-		esac
-	elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
-		echo "Found -l$thislib."
-		case " $dflt " in
-		*"-l$thislib "*);;
-		*) dflt="$dflt -l$thislib";;
-		esac
-	else
-		echo "No -l$thislib."
+		break
+	    fi	
+	done
+	if $test ! -f "$xxx"; then
+	    echo "No -l$thislib."
 	fi
 done
 set X $dflt
@@ -3806,27 +3796,21 @@ case "$dflt" in
 esac
 
 $cat <&1
+		echo 'int main(void) { return 0; }' > gcctest.c
+		if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
+			echo "Yes, it does." 2>&1
+			case "$ccflags" in
+			*strict-aliasing*) 
+				echo "Leaving current flags $ccflags alone." 2>&1
+				;;
+			*) dflt="$dflt -fno-strict-aliasing" ;;
+			esac
+		else
+			echo "Nope, it doesn't, but that's ok." 2>&1
+		fi
+		;;
+	esac
 	;;
 esac
 
@@ -3901,8 +3903,14 @@ fi'
 
 set signal.h LANGUAGE_C; eval $inctest
 
+case "$usesocks" in
+$define)
+	ccflags="$ccflags -DSOCKS"
+	;;
+esac
+
 case "$hint" in
-none|recommended) dflt="$ccflags $dflt" ;;
+default|recommended) dflt="$ccflags $dflt" ;;
 *) dflt="$ccflags";;
 esac
 
@@ -4112,6 +4120,942 @@ n) echo "OK, that should do.";;
 esac
 $rm -f try try.* core
 
+: define an is-a-typedef? function
+typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
+case "$inclist" in
+"") inclist="sys/types.h";;
+esac;
+eval "varval=\$$var";
+case "$varval" in
+"")
+	$rm -f temp.c;
+	for inc in $inclist; do
+		echo "#include <$inc>" >>temp.c;
+	done;
+	echo "#ifdef $type" >> temp.c;
+	echo "printf(\"We have $type\");" >> temp.c;
+	echo "#endif" >> temp.c;
+	$cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
+	if $contains $type temp.E >/dev/null 2>&1; then
+		eval "$var=\$type";
+	else
+		eval "$var=\$def";
+	fi;
+	$rm -f temp.?;;
+*) eval "$var=\$varval";;
+esac'
+
+: define an is-a-typedef? function that prompts if the type is not available.
+typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
+case "$inclist" in
+"") inclist="sys/types.h";;
+esac;
+eval "varval=\$$var";
+case "$varval" in
+"")
+	$rm -f temp.c;
+	for inc in $inclist; do
+		echo "#include <$inc>" >>temp.c;
+	done;
+	echo "#ifdef $type" >> temp.c;
+	echo "printf(\"We have $type\");" >> temp.c;
+	echo "#endif" >> temp.c;
+	$cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
+	echo " " ;
+	echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
+	if $contains $type temp.E >/dev/null 2>&1; then
+		echo "$type found." >&4;
+		eval "$var=\$type";
+	else
+		echo "$type NOT found." >&4;
+		dflt="$def";
+		. ./myread ;
+		eval "$var=\$ans";
+	fi;
+	$rm -f temp.?;;
+*) eval "$var=\$varval";;
+esac'
+
+: define a shorthand compile call
+compile='
+mc_file=$1;
+shift;
+$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
+: define a shorthand compile call for compilations that should be ok.
+compile_ok='
+mc_file=$1;
+shift;
+$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
+
+: check for lengths of integral types
+echo " "
+case "$intsize" in
+'')
+	echo "Checking to see how big your integers are..." >&4
+	$cat >intsize.c <<'EOCP'
+#include 
+int main()
+{
+	printf("intsize=%d;\n", (int)sizeof(int));
+	printf("longsize=%d;\n", (int)sizeof(long));
+	printf("shortsize=%d;\n", (int)sizeof(short));
+	exit(0);
+}
+EOCP
+	set intsize
+	if eval $compile_ok && ./intsize > /dev/null; then
+		eval `./intsize`
+		echo "Your integers are $intsize bytes long."
+		echo "Your long integers are $longsize bytes long."
+		echo "Your short integers are $shortsize bytes long."
+	else
+		$cat >&4 <&4
+$cat >try.c <
+#include 
+int main()
+{
+    printf("%d\n", (int)sizeof($lseektype));
+    return(0); 
+}
+EOCP
+set try
+if eval $compile_ok; then
+	lseeksize=`./try`
+	echo "Your file offsets are $lseeksize bytes long."
+else
+	dflt=$longsize
+	echo " "
+	echo "(I can't seem to compile the test program.  Guessing...)"
+	rp="What is the size of your file offsets (in bytes)?"
+	. ./myread
+	lseeksize="$ans"
+fi
+$rm -f try.c try
+
+: see what type file positions are declared as in the library
+rp="What is the type for file position used by fsetpos()?"
+set fpos_t fpostype long stdio.h sys/types.h
+eval $typedef_ask
+
+echo " "
+case "$fpostype" in
+*_t) zzz="$fpostype"	;;
+*)   zzz="fpos_t"	;;
+esac
+echo "Checking the size of $zzz..." >&4 
+cat > try.c <
+#include 
+int main() {
+    printf("%d\n", (int)sizeof($fpostype));
+    exit(0);
+}
+EOCP
+set try
+if eval $compile_ok; then
+	yyy=`./try`
+	case "$yyy" in
+	'')	fpossize=4
+		echo "(I can't execute the test program--guessing $fpossize.)" >&4
+		;;
+	*)	fpossize=$yyy
+		echo "Your $zzz is $fpossize bytes long."
+		;;
+	esac
+else
+	dflt="$longsize"
+	echo " " >&4
+	echo "(I can't compile the test program.  Guessing...)" >&4
+	rp="What is the size of your file positions (in bytes)?"
+	. ./myread
+	fpossize="$ans"
+fi
+
+
+
+# Backward compatibility (uselfs is deprecated).
+case "$uselfs" in
+"$define"|true|[yY]*)
+	cat <&4
+
+*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
+EOM
+	uselargefiles="$define"
+	;;
+esac                          
+
+case "$lseeksize:$fpossize" in
+8:8) cat <&4
+		$cat >try.c <
+#include 
+int main()
+{
+    printf("%d\n", (int)sizeof($lseektype));
+    return(0); 
+}
+EOCP
+		set try
+		if eval $compile_ok; then
+			lseeksize=`./try`
+			$echo "Your file offsets are now $lseeksize bytes long."
+		else
+			dflt="$lseeksize"
+			echo " "
+			echo "(I can't seem to compile the test program.  Guessing...)"
+			rp="What is the size of your file offsets (in bytes)?"
+			. ./myread
+			lseeksize="$ans"
+		fi
+		case "$fpostype" in
+		*_t) zzz="$fpostype"	;;
+		*)   zzz="fpos_t"	;;
+		esac
+		$echo $n "Rechecking the size of $zzz...$c" >&4 
+		$cat > try.c <
+#include 
+int main() {
+    printf("%d\n", (int)sizeof($fpostype));
+    exit(0);
+}
+EOCP
+		set try
+		if eval $compile_ok; then
+			yyy=`./try`
+			dflt="$lseeksize"
+			case "$yyy" in
+			'')	echo " "
+				echo "(I can't execute the test program--guessing $fpossize.)" >&4
+				;;
+			*)	fpossize=$yyy
+				echo " $fpossize bytes." >&4
+				;;
+			esac
+		else
+			dflt="$fpossize"
+			echo " "
+			echo "(I can't compile the test program.  Guessing...)" >&4
+			rp="What is the size of your file positions (in bytes)?"
+			. ./myread
+			fpossize="$ans"
+		fi
+		$rm -f try.c try
+	fi
+	;;
+esac
+
+
+case "$usemorebits" in
+"$define"|true|[yY]*)
+	use64bitint="$define"
+	uselongdouble="$define"
+	usemorebits="$define"
+	;;
+*)	usemorebits="$undef"
+	;;
+esac
+
+
+case "$uselonglong" in
+"$define"|true|[yY]*)
+	cat <&4
+
+*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
+EOM
+	use64bitint="$define"
+	;;
+esac                          
+case "$use64bits" in
+"$define"|true|[yY]*)
+	cat <&4
+
+*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
+EOM
+	use64bitint="$define"
+	;;
+esac                          
+case "$use64bitints" in
+"$define"|true|[yY]*)
+	cat <&4
+
+*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
+EOM
+	use64bitint="$define"
+	;;
+esac                          
+case "$use64bitsint" in
+"$define"|true|[yY]*)
+	cat <&4
+
+*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
+EOM
+	use64bitint="$define"
+	;;
+esac                          
+case "$uselonglongs" in
+"$define"|true|[yY]*)
+	cat <&4
+
+*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
+EOM
+	use64bitint="$define"
+	;;
+esac                          
+case "$use64bitsall" in
+"$define"|true|[yY]*)
+	cat <&4
+
+*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
+EOM
+	use64bitall="$define"
+	;;
+esac                          
+
+case "$ccflags" in
+*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
+esac
+case "$use64bitall" in
+"$define"|true|[yY]*) use64bitint="$define" ;;
+esac
+
+case "$longsize" in
+8) cat < tmparch 2>&1 ; then
+		tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
+			-e 's/$/'"-$osname/" tmparch`
+	else
+		tarch="$osname"
+	fi
+	$rm -f tmparch
+else
+	tarch="$osname"
+fi
+case "$myarchname" in
+''|"$tarch") ;;
+*)
+	echo "(Your architecture name used to be $myarchname.)"
+	archname=''
+	;;
+esac
+myarchname="$tarch"
+case "$archname" in
+'') dflt="$tarch";;
+*) dflt="$archname";;
+esac
+rp='What is your architecture name'
+. ./myread
+archname="$ans"
+case "$usethreads" in
+$define)
+	echo "Threads selected." >&4
+	case "$archname" in
+        *-thread*) echo "...and architecture name already has -thread." >&4
+                ;;
+        *)      archname="$archname-thread"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+	;;
+esac
+case "$usemultiplicity" in
+$define)
+	echo "Multiplicity selected." >&4
+	case "$archname" in
+        *-multi*) echo "...and architecture name already has -multi." >&4
+                ;;
+        *)      archname="$archname-multi"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+	;;
+esac
+case "$use64bitint" in
+$define)
+	case "$archname64" in
+	'')
+		;;
+	*)
+		case "$archname" in
+	        *-$archname64*) echo "...and architecture name already has $archname64." >&4
+	                ;;
+	        *)      archname="$archname-$archname64"
+	                echo "...setting architecture name to $archname." >&4
+	                ;;
+	        esac
+		;;
+	esac
+esac
+
+: determine root of directory hierarchy where package will be installed.
+case "$prefix" in
+'')
+	dflt=`./loc . /usr/local /usr/local /local /opt /usr`
+	;;
+*)
+	dflt="$prefix"
+	;;
+esac
+$cat <&4
+else
+	echo "AFS does not seem to be running..." >&4
+fi
+
+: determine installation prefix for where package is to be installed.
+if $afs; then 
+$cat <&4
+if $test -r $rsrc/patchlevel.h;then
+	revision=`awk '/define[ 	]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
+	patchlevel=`awk '/define[ 	]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
+	subversion=`awk '/define[ 	]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
+	api_revision=`awk '/define[ 	]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
+	api_version=`awk '/define[ 	]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
+	api_subversion=`awk '/define[ 	]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
+else
+	revision=0
+	patchlevel=0
+	subversion=0
+	api_revision=0
+	api_version=0
+	api_subversion=0
+fi
+$echo $n "(You have $package revision $revision" $c
+$echo $n " patchlevel $patchlevel" $c
+test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
+echo ".)"
+case "$osname" in
+dos|vms)
+	: XXX Should be a Configure test for double-dots in filenames.
+	version=`echo $revision $patchlevel $subversion | \
+		 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
+	api_versionstring=`echo $api_revision $api_version $api_subversion | \
+		 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
+	;;
+*)
+	version=`echo $revision $patchlevel $subversion | \
+		 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
+	api_versionstring=`echo $api_revision $api_version $api_subversion | \
+		 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
+	;;
+esac
+: Special case the 5.005_xx maintenance series, which used 5.005
+: without any subversion label as a subdirectory in $sitelib
+if test "${api_revision}${api_version}${api_subversion}" = "550"; then
+	api_versionstring='5.005'
+fi
+
+: determine installation style
+: For now, try to deduce it from prefix unless it is already set.
+: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
+case "$installstyle" in
+'')	case "$prefix" in
+		*perl*) dflt='lib';;
+		*) dflt='lib/perl5' ;;
+	esac
+	;;
+*)	dflt="$installstyle" ;;
+esac
+: Probably not worth prompting for this since we prompt for all
+: the directories individually, and the prompt would be too long and
+: confusing anyway.
+installstyle=$dflt
+
+: determine where private library files go
+: Usual default is /usr/local/lib/perl5/$version.
+: Also allow things like /opt/perl/lib/$version, since 
+: /opt/perl/lib/perl5... would be redundant.
+: The default "style" setting is made in installstyle.U
+case "$installstyle" in
+*lib/perl5*) set dflt privlib lib/$package/$version ;;
+*)	 set dflt privlib lib/$version ;;
+esac
+eval $prefixit
+$cat <reflect
+	chmod +x,u+s reflect
+	./reflect >flect 2>&1
+	if $contains "/dev/fd" flect >/dev/null; then
+		echo "Congratulations, your kernel has secure setuid scripts!" >&4
+		val="$define"
+	else
+		$cat <&4
+				dflt=n;;
+			"$undef")
+				echo "Well, the $hint value is *not* secure." >&4
+				dflt=n;;
+			*)	echo "Well, the $hint value *is* secure." >&4
+				dflt=y;;
+			esac
+			;;
+		*)
+			$rm -f reflect flect
+			echo "#!$ls" >reflect
+			chmod +x,u+s reflect
+			echo >flect
+			chmod a+w flect
+			echo '"su" will (probably) prompt you for '"$ans's password."
+			su $ans -c './reflect >flect'
+			if $contains "/dev/fd" flect >/dev/null; then
+				echo "Okay, it looks like setuid scripts are secure." >&4
+				dflt=y
+			else
+				echo "I don't think setuid scripts are secure." >&4
+				dflt=n
+			fi
+			;;
+		esac
+		rp='Does your kernel have *secure* setuid scripts?'
+		. ./myread
+		case "$ans" in
+		[yY]*)	val="$define";;
+		*)	val="$undef";;
+		esac
+	fi
+else
+	echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
+	echo "(That's for file descriptors, not floppy disks.)"
+	val="$undef"
+fi
+set d_suidsafe
+eval $setvar
+
+$rm -f reflect flect
+
+: now see if they want to do setuid emulation
+echo " "
+val="$undef"
+case "$d_suidsafe" in
+"$define")
+	val="$undef"
+	echo "No need to emulate SUID scripts since they are secure here." >& 4
+	;;
+*)
+	$cat <&4
@@ -4150,10 +5094,13 @@ $cat >findhdr <" > foo\$\$.c
 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
@@ -4161,14 +5108,22 @@ $grep "^[ 	]*#.*\$wanted" | \
 while read cline; do
 	name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
 	case "\$name" in
-	*/\$wanted) echo "\$name"; exit 0;;
-	*) name='';;
+	*[/\\\\]\$wanted) echo "\$name"; exit 1;;
+	*[\\\\/]\$wanted) echo "\$name"; exit 1;;
+	*) exit 2;;
 	esac;
 done;
+#
+# status = 0: grep returned 0 lines, case statement not executed
+# status = 1: headerfile found
+# status = 2: while loop executed, no headerfile found
+#
+status=\$?
 $rm -f foo\$\$.c;
-case "\$name" in
-'') exit 1;;
-esac
+if test \$status -eq 1; then
+	exit 0;
+fi
+exit 1
 EOF
 chmod +x findhdr
 
@@ -4286,6 +5241,126 @@ case "$freetype" in
 esac
 echo "Your system uses $freetype free(), it would seem." >&4
 $rm -f malloc.[co]
+$cat <&4
@@ -4339,30 +5414,207 @@ if $test "X$ansexp" != "X$binexp"; then
 fi
 bin="$ans"
 binexp="$ansexp"
-if $afs; then
-	$cat </dev/null 2>&1; then
+			perl5=$tdir/perl
+			break;
+		elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
+			perl5=$tdir/perl
+			break;
+		fi
+	done
+	;;
+*)	perl5="$perl5"
+	;;
+esac
+case "$perl5" in
+'')	echo "None found.  That's ok.";;
+*)	echo "Using $perl5." ;;
+esac
+
+$cat < getverlist <> getverlist <<'EOPL'
+# Can't have leading @ because metaconfig interprets it as a command!
+;@inc_version_list=();
+$stem=dirname($sitelib);
+# XXX Redo to do opendir/readdir? 
+if (-d $stem) {
+    chdir($stem);
+    ;@candidates = glob("5.*");
+}
+else {
+    ;@candidates = ();
+}
+
+# XXX ToDo:  These comparisons must be reworked when two-digit
+# subversions come along, so that 5.7.10 compares as greater than
+# 5.7.3!  By that time, hope that 5.6.x is sufficiently
+# widespread that we can use the built-in version vectors rather
+# than reinventing them here.  For 5.6.0, however, we must
+# assume this script will likely be run by 5.005_0x.  --AD 1/2000.
+foreach $d (@candidates) {
+    if ($d lt $version) {
+	if ($d ge $api_versionstring) {
+	    unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
+	}
+	elsif ($d ge "5.005") {
+	    unshift(@inc_version_list, grep { -d } $d);
+	}
+    }
+    else {
+	# Skip newer version.  I.e. don't look in
+	# 5.7.0 if we're installing 5.6.1.
+    }
+}
+
+if (@inc_version_list) {
+    print join(' ', @inc_version_list);
+}
+else {
+    # Blank space to preserve value for next Configure run.
+    print " ";
+}
+EOPL
+chmod +x getverlist
+case "$inc_version_list" in
+'')	if test -x "$perl5"; then
+		dflt=`$perl5 getverlist`
+	else
+		dflt='none'
+	fi
+	;;
+$undef) dflt='none' ;;
+*)  dflt="$inc_version_list" ;;
+esac
+case "$dflt" in
+''|' ') dflt=none ;;
+esac
+$cat <<'EOM'
+
+In order to ease the process of upgrading, this version of perl 
+can be configured to use modules built and installed with earlier 
+versions of perl that were installed under $prefix.  Specify here
+the list of earlier versions that this version of perl should check.
+If Configure detected no earlier versions of perl installed under
+$prefix, then the list will be empty.  Answer 'none' to tell perl
+to not search earlier versions.
+
+The default should almost always be sensible, so if you're not sure,
+just accept the default.
+EOM
+
+rp='List of earlier versions to include in @INC?'
+. ./myread
+case "$ans" in
+[Nn]one|''|' ') inc_version_list=' ' ;;
+*) inc_version_list="$ans" ;;
+esac
+case "$inc_version_list" in
+''|' ') 
+	inc_version_list_init='0';;
+*)	inc_version_list_init=`echo $inc_version_list |
+		$sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
+	;;
+esac
+$rm -f getverlist
+
+: determine whether to install perl also as /usr/bin/perl
+
 echo " "
-if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
+if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
 	$cat <&4
 cat >gnulibc.c <&4 <$first) 2>/dev/null; then
 	if $test -f 123456789abcde; then
 		echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
 		val="$undef"
 	else
-		if (echo hi >$second) 2>/dev/null; then
-			if $test -f /tmp/cf$$/123456789abcde; then
-				$cat <<'EOM'
-That's peculiar... You can have filenames longer than 14 characters, but only
-on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
-I shall consider your system cannot support long filenames at all.
-EOM
-				val="$undef"
-			else
-				echo 'You can have filenames longer than 14 characters.' >&4
-				val="$define"
-			fi
-		else
-			$cat <<'EOM'
-How confusing! Some of your filesystems are sane enough to allow filenames
-longer than 14 characters but some others like /tmp can't even think about them.
-So, for now on, I shall assume your kernel does not allow them at all.
-EOM
-			val="$undef"
-		fi
+ 		echo 'You can have filenames longer than 14 characters.'>&4
+ 		val="$define"
 	fi
 else
 	$cat <<'EOM'
-You can't have filenames longer than 14 chars.  You can't even think about them!
+You can't have filenames longer than 14 chars.
+You can't even think about them!
 EOM
 	val="$undef"
 fi 
 set d_flexfnam
 eval $setvar
-$rm -rf /tmp/cf$$ 123456789abcde*
+$rm -rf 123456789abcde*
 
 : determine where library module manual pages go
 set man3dir man3dir none
@@ -5450,52 +6671,48 @@ esac
 echo "If you don't want the manual sources installed, answer 'none'."
 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
 case "$man3dir" in
-'')	case "$prefix" in 
-	*$prog*) dflt=`echo $man1dir | 
-			$sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
-	*)	dflt="$privlib/man/man3" ;;
-	esac
+'')	dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
+	if $test -d "$privlib/man/man3"; then
+		cat <&4
+
+WARNING:  Previous versions of perl installed man3 pages into
+$privlib/man/man3.  This version will suggest a 
+new default of $dflt.  
+EOM
+		tdflt=$dflt
+		dflt='n'
+		rp='Do you wish to preserve the old behavior?(y/n)'
+		. ./myread
+		case "$ans" in
+		y*) dflt="$privlib/man/man3" ;;
+		*)  dflt=$tdflt ;;
+		esac
+    fi
 	;;
-' ') dflt=none;;
 *)	dflt="$man3dir" ;;
 esac
+case "$dflt" in
+' ') dflt=none ;;
+esac
 echo " "
-
 fn=dn+~
 rp="Where do the $package library man pages (source) go?"
 . ./getfile
-if test "X$man3direxp" != "X$ansexp"; then
-	installman3dir=''
-fi
-
 man3dir="$ans"
 man3direxp="$ansexp"
 case "$man3dir" in
-'') man3dir=' '
+'')	man3dir=' '
 	installman3dir='';;
 esac
-if $afs; then
-	$cat < hosts && \
 			$test -s hosts
 		} || {
+			test "X$hostcat" != "X" &&
 		     	$hostcat | $sed -n -e "s/[	 ]*#.*//; s/\$/ /
 					/[	 ]$myhostname[	. ]/p" > hosts
 		}
@@ -5773,7 +6991,7 @@ $cat <&4
+
+*** You requested the use of long doubles but you do not seem to have
+*** the mathematic functions for long doubles.  I'm disabling the use
+*** of long doubles.
+
+EOM
+	uselongdouble=$undef
+	;;
+esac
+
+case "$useperlio" in
+$define|true|[yY]*)	dflt='y';;
+*) dflt='n';;
+esac
 cat <&4
+	$cat >try.c <<'EOCP'
+#include 
+int main()
+{
+    printf("%d\n", (int)sizeof(double));
+    exit(0);
+}
+EOCP
+	set try
+	if eval $compile_ok; then
+		doublesize=`./try`
+		echo "Your double is $doublesize bytes long."
+	else
+		dflt='8'
+		echo "(I can't seem to compile the test program.  Guessing...)"
+		rp="What is the size of a double precision number (in bytes)?"
+		. ./myread
+		doublesize="$ans"
+	fi
+	;;
+esac
+$rm -f try.c try
+
+: check for long doubles
+echo " "
+echo "Checking to see if you have long double..." >&4
+echo 'int main() { long double x = 7.0; }' > try.c
+set try
+if eval $compile; then
+	val="$define"
+	echo "You have long double."
+else
+	val="$undef"
+	echo "You do not have long double."
+fi
+$rm try.*
+set d_longdbl
+eval $setvar
+
+: check for length of long double
+case "${d_longdbl}${longdblsize}" in
+$define)
+	echo " "
+	echo "Checking to see how big your long doubles are..." >&4
+	$cat >try.c <<'EOCP'
+#include 
+int main()
+{
+	printf("%d\n", sizeof(long double));
+}
+EOCP
+	set try
+	set try
+	if eval $compile; then
+		longdblsize=`./try$exe_ext`
+		echo "Your long doubles are $longdblsize bytes long."
+	else
+		dflt='8'
+		echo " "
+		echo "(I can't seem to compile the test program.  Guessing...)" >&4
+		rp="What is the size of a long double (in bytes)?"
+		. ./myread
+		longdblsize="$ans"
+	fi
+	if $test "X$doublesize" = "X$longdblsize"; then
+		echo "(That isn't any different from an ordinary double.)"
+	fi	
+	;;
+esac
+$rm -f try.* try
+
+echo " "
+
+if $test X"$d_longdbl" = X"$define"; then
+
+echo "Checking how to print long doubles..." >&4
+
+if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+int main() {
+  double d = 123.456;
+  printf("%.3f\n", d);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		123.456)
+			sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
+                	sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
+			echo "We will use %f."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+int main() {
+  long double d = 123.456;
+  printf("%.3llf\n", d);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		123.456)
+			sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
+                	sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
+			echo "We will use %llf."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+int main() {
+  long double d = 123.456;
+  printf("%.3Lf\n", d);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		123.456)
+			sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
+                	sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
+			echo "We will use %Lf."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+int main() {
+  long double d = 123.456;
+  printf("%.3lf\n", d);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		123.456)
+			sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
+                	sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
+			echo "We will use %lf."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+	echo "Cannot figure out how to print long doubles." >&4
+fi
+
+$rm -f try try.*
+
+fi # d_longdbl
+
+case "$sPRIfldbl" in
+'')	d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
+	d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
+	;;
+*)	d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
+	d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
+	;;
+esac
+
 : Check how to convert floats to strings.
 if test "X$d_Gconvert" = X; then
-    echo " "
-    echo "Checking for an efficient way to convert floats to strings."
-    $cat >try.c <<'EOP'
+	echo " "
+	echo "Checking for an efficient way to convert floats to strings."
+	echo " " > try.c
+	case "$uselongdouble" in
+	"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
+	esac
+	case "$d_longdbl" in
+	"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
+	esac
+	case "$d_PRIgldbl" in
+	"$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
+	esac
+	$cat >>try.c <
 
+#define I_STDLIB $i_stdlib
+#ifdef I_STDLIB
+#include 
+#endif
+
 int
 checkit(expect, got)
 char *expect;
@@ -6100,58 +7571,86 @@ int main()
 
 	/* This must be 1st test on (which?) platform */
 	/* Alan Burlison  */
-	Gconvert(0.1, 8, 0, buf);
+	Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
 	checkit("0.1", buf);
 
-	Gconvert(1.0, 8, 0, buf); 
+	Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
 	checkit("1", buf);
 
-	Gconvert(0.0, 8, 0, buf); 
+	Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
+	checkit("1.1", buf);
+
+	Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
+	checkit("1.01", buf);
+
+	Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
+	checkit("1.001", buf);
+
+	Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
+	checkit("1.0001", buf);
+
+	Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
+	checkit("1.00001", buf);
+
+	Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
+	checkit("1.000001", buf);
+
+	Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
 	checkit("0", buf);
 
-	Gconvert(-1.0, 8, 0, buf); 
+	Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
 	checkit("-1", buf);
 
 	/* Some Linux gcvt's give 1.e+5 here. */
-	Gconvert(100000.0, 8, 0, buf); 
+	Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
 	checkit("100000", buf);
 	
 	/* Some Linux gcvt's give -1.e+5 here. */
-	Gconvert(-100000.0, 8, 0, buf); 
+	Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
 	checkit("-100000", buf);
 
 	exit(0);
 }
 EOP
-    case "$d_Gconvert" in
-    gconvert*) xxx_list='gconvert gcvt sprintf' ;;
-    gcvt*) xxx_list='gcvt gconvert sprintf' ;;
-    sprintf*) xxx_list='sprintf gconvert gcvt' ;;
-    *) xxx_list='gconvert gcvt sprintf' ;;
-    esac
+	case "$d_Gconvert" in
+	gconvert*) xxx_list='gconvert gcvt sprintf' ;;
+	gcvt*) xxx_list='gcvt gconvert sprintf' ;;
+	sprintf*) xxx_list='sprintf gconvert gcvt' ;;
+	*) xxx_list='gconvert gcvt sprintf' ;;
+	esac
 
-    for xxx_convert in $xxx_list; do
-	echo "Trying $xxx_convert"
-	$rm -f try try$_o
-	set try -DTRY_$xxx_convert
-	if eval $compile; then
-		echo "$xxx_convert" found. >&4
-		if ./try; then
-			echo "I'll use $xxx_convert to convert floats into a string." >&4
-			break;
+        case "$d_longdbl$uselongdouble$d_qgcvt" in
+        "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
+	esac
+
+	for xxx_convert in $xxx_list; do
+		echo "Trying $xxx_convert..."
+		$rm -f try try$_o
+		set try -DTRY_$xxx_convert
+		if eval $compile; then
+			echo "$xxx_convert() found." >&4
+			if ./try; then
+				echo "I'll use $xxx_convert to convert floats into a string." >&4
+				break;
+			else
+				echo "...But $xxx_convert didn't work as I expected."
+			fi
 		else
-			echo "...But $xxx_convert didn't work as I expected."
+			echo "$xxx_convert NOT found." >&4
 		fi
-	else
-		echo "$xxx_convert NOT found." >&4
-	fi
-    done
+	done
 		
-    case "$xxx_convert" in
-    gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
-    gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
-    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
-    esac
+	case "$xxx_convert" in
+	gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
+	gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
+	qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
+	*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
+	   "$define$define$define")
+	      d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
+	   *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
+	   esac
+	   ;;  
+	esac
 fi
 
 : Initialize h_fcntl
@@ -6202,10 +7701,22 @@ EOCP
 esac
 $rm -f access*
 
+: see if accessx exists
+set accessx d_accessx
+eval $inlibc
+
 : see if alarm exists
 set alarm d_alarm
 eval $inlibc
 
+: see if atolf exists
+set atolf d_atolf
+eval $inlibc
+
+: see if atoll exists
+set atoll d_atoll
+eval $inlibc
+
 : Look for GNU-cc style attribute checking
 echo " "
 echo "Checking whether your compiler can handle __attribute__ ..." >&4
@@ -6368,52 +7879,6 @@ $rm -f set set.c
 set bzero d_bzero
 eval $inlibc
 
-: check for lengths of integral types
-echo " "
-case "$intsize" in
-'')
-	echo "Checking to see how big your integers are..." >&4
-	$cat >intsize.c <<'EOCP'
-#include 
-int main()
-{
-	printf("intsize=%d;\n", sizeof(int));
-	printf("longsize=%d;\n", sizeof(long));
-	printf("shortsize=%d;\n", sizeof(short));
-	exit(0);
-}
-EOCP
-	set intsize
-	if eval $compile_ok && ./intsize > /dev/null; then
-		eval `./intsize`
-		echo "Your integers are $intsize bytes long."
-		echo "Your long integers are $longsize bytes long."
-		echo "Your short integers are $shortsize bytes long."
-	else
-		$cat >&4 <&4
+                echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
 	fi
 	;;
 esac
@@ -6966,10 +8423,42 @@ $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
 set d_dlsymun
 eval $setvar
 
+hasproto='varname=$1; func=$2; shift; shift;
+while $test $# -ge 2; do
+	case "$1" in
+	$define) echo "#include <$2>";;
+	esac ;
+    shift 2;
+done > try.c;
+$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
+if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
+	echo "$func() prototype found.";
+	val="$define";
+else
+	echo "$func() prototype NOT found.";
+	val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c tryout.c'
+
+: see if prototype for drand48 is available
+echo " "
+set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
+eval $hasproto
+
 : see if dup2 exists
 set dup2 d_dup2
 eval $inlibc
 
+: see if eaccess exists
+set eaccess d_eaccess
+eval $inlibc
+
+: see if endgrent exists
+set endgrent d_endgrent
+eval $inlibc
+
 : see if endhostent exists
 set endhostent d_endhent
 eval $inlibc
@@ -6982,10 +8471,18 @@ eval $inlibc
 set endprotoent d_endpent
 eval $inlibc
 
+: see if endpwent exists
+set endpwent d_endpwent
+eval $inlibc
+
 : see if endservent exists
 set endservent d_endsent
 eval $inlibc
 
+: see if endspent exists
+set endspent d_endspent
+eval $inlibc
+
 : Locate the flags for 'open()'
 echo " "
 $cat >open3.c <<'EOCP'
@@ -7036,6 +8533,28 @@ set d_open3
 eval $setvar
 $rm -f open3*
 
+: see which of string.h or strings.h is needed
+echo " "
+strings=`./findhdr string.h`
+if $test "$strings" && $test -r "$strings"; then
+	echo "Using  instead of ." >&4
+	val="$define"
+else
+	val="$undef"
+	strings=`./findhdr strings.h`
+	if $test "$strings" && $test -r "$strings"; then
+		echo "Using  instead of ." >&4
+	else
+		echo "No string header found -- You'll surely have problems." >&4
+	fi
+fi
+set i_string
+eval $setvar
+case "$i_string" in
+"$undef") strings=`./findhdr strings.h`;;
+*)	  strings=`./findhdr string.h`;;
+esac
+
 : check for non-blocking I/O stuff
 case "$h_sysfile" in
 true) echo "#include " > head.c;;
@@ -7052,6 +8571,7 @@ case "$o_nonblock" in
 '')
 	$cat head.c > try.c
 	$cat >>try.c <<'EOCP'
+#include 
 int main() {
 #ifdef O_NONBLOCK
 	printf("O_NONBLOCK\n");
@@ -7092,10 +8612,21 @@ case "$eagain" in
 #include 
 #include 
 #include 
+#include  
 #define MY_O_NONBLOCK $o_nonblock
 #ifndef errno  /* XXX need better Configure test */
 extern int errno;
 #endif
+#$i_unistd I_UNISTD
+#ifdef I_UNISTD
+#include 
+#endif
+#$i_string I_STRING
+#ifdef I_STRING
+#include 
+#else
+#include 
+#endif
 $signal_t blech(x) int x; { exit(3); }
 EOCP
 	$cat >> try.c <<'EOCP'
@@ -7225,6 +8756,269 @@ eval $inlibc
 set fcntl d_fcntl
 eval $inlibc
 
+hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
+while $test $# -ge 2; do
+	case "$1" in
+	$define) echo "#include <$2>";;
+	esac ;
+    shift 2;
+done > try.c;
+echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
+set try;
+if eval $compile; then
+	val="$define";
+else
+	val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c try.o'
+
+socketlib=''
+sockethdr=''
+: see whether socket exists
+echo " "
+$echo $n "Hmm... $c" >&4
+if set socket val -f d_socket; eval $csym; $val; then
+	echo "Looks like you have Berkeley networking support." >&4
+	d_socket="$define"
+	if set setsockopt val -f; eval $csym; $val; then
+		d_oldsock="$undef"
+	else
+		echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
+		d_oldsock="$define"
+	fi
+else
+	if $contains socklib libc.list >/dev/null 2>&1; then
+		echo "Looks like you have Berkeley networking support." >&4
+		d_socket="$define"
+		: we will have to assume that it supports the 4.2 BSD interface
+		d_oldsock="$undef"
+	else
+		echo "You don't have Berkeley networking in libc$_a..." >&4
+		if test "X$d_socket" = "X$define"; then
+		   echo "...but you seem to believe that you have sockets." >&4
+		else
+			for net in net socket
+			do
+				if test -f /usr/lib/lib$net$_a; then
+					( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
+					$ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
+					if $contains socket libc.list >/dev/null 2>&1; then
+						d_socket="$define"
+						socketlib="-l$net"
+						case "$net" in
+						net)
+							echo "...but the Wollongong group seems to have hacked it in." >&4
+							sockethdr="-I/usr/netinclude"
+							;;
+						esac
+						echo "Found Berkeley sockets interface in lib$net." >& 4 
+						if $contains setsockopt libc.list >/dev/null 2>&1; then
+							d_oldsock="$undef"
+						else
+							echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
+							d_oldsock="$define"
+						fi
+						break
+					fi
+				fi
+			done
+			if test "X$d_socket" != "X$define"; then
+			   echo "or anywhere else I see." >&4
+			   d_socket="$undef"
+			   d_oldsock="$undef"
+			fi
+		fi
+	fi
+fi
+
+: see if socketpair exists
+set socketpair d_sockpair
+eval $inlibc
+
+
+echo " "
+echo "Checking the availability of certain socket constants..." >& 4
+for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
+	enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
+	$cat >try.c <
+#include 
+int main() {
+    int i = $ENUM;
+}
+EOF
+	val="$undef"
+	set try; if eval $compile; then
+		val="$define"
+	fi
+	set d_${enum}; eval $setvar
+	$rm -f try.c try
+done
+
+: see if sys/select.h has to be included
+set sys/select.h i_sysselct
+eval $inhdr
+
+: see if we should include time.h, sys/time.h, or both
+echo " "
+if test "X$timeincl" = X; then
+	echo "Testing to see if we should include ,  or both." >&4
+	$echo $n "I'm now running the test program...$c"
+	$cat >try.c <<'EOCP'
+#include 
+#ifdef I_TIME
+#include 
+#endif
+#ifdef I_SYSTIME
+#ifdef SYSTIMEKERNEL
+#define KERNEL
+#endif
+#include 
+#endif
+#ifdef I_SYSSELECT
+#include 
+#endif
+int main()
+{
+	struct tm foo;
+#ifdef S_TIMEVAL
+	struct timeval bar;
+#endif
+#ifdef S_TIMEZONE
+	struct timezone tzp;
+#endif
+	if (foo.tm_sec == foo.tm_sec)
+		exit(0);
+#ifdef S_TIMEVAL
+	if (bar.tv_sec == bar.tv_sec)
+		exit(0);
+#endif
+	exit(1);
+}
+EOCP
+	flags=''
+	for s_timezone in '-DS_TIMEZONE' ''; do
+	sysselect=''
+	for s_timeval in '-DS_TIMEVAL' ''; do
+	for i_systimek in '' '-DSYSTIMEKERNEL'; do
+	for i_time in '' '-DI_TIME'; do
+	for i_systime in '-DI_SYSTIME' ''; do
+		case "$flags" in
+		'') $echo $n ".$c"
+			set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
+			if eval $compile; then
+				set X $i_time $i_systime $i_systimek $sysselect $s_timeval
+				shift
+				flags="$*"
+				echo " "
+				$echo $n "Succeeded with $flags$c"
+			fi
+			;;
+		esac
+	done
+	done
+	done
+	done
+	done
+	timeincl=''
+	echo " "
+	case "$flags" in
+	*SYSTIMEKERNEL*) i_systimek="$define"
+		timeincl=`./findhdr sys/time.h`
+		echo "We'll include  with KERNEL defined." >&4;;
+	*) i_systimek="$undef";;
+	esac
+	case "$flags" in
+	*I_TIME*) i_time="$define"
+		timeincl=`./findhdr time.h`" $timeincl"
+		echo "We'll include ." >&4;;
+	*) i_time="$undef";;
+	esac
+	case "$flags" in
+	*I_SYSTIME*) i_systime="$define"
+		timeincl=`./findhdr sys/time.h`" $timeincl"
+		echo "We'll include ." >&4;;
+	*) i_systime="$undef";;
+	esac
+	$rm -f try.c try
+fi
+
+: check for fd_set items
+$cat <fd_set.c <
+#ifdef HAS_SOCKET
+#include  /* Might include  */
+#endif
+#ifdef I_SYS_TIME
+#include 
+#endif
+#ifdef I_SYS_SELECT
+#include 
+#endif
+int main() {
+	fd_set fds;
+
+#ifdef TRYBITS
+	if(fds.fds_bits);
+#endif
+
+#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
+	exit(0);
+#else
+	exit(1);
+#endif
+}
+EOCP
+set fd_set -DTRYBITS
+if eval $compile; then
+	d_fds_bits="$define"
+	d_fd_set="$define"
+	echo "Well, your system knows about the normal fd_set typedef..." >&4
+	if ./fd_set; then
+		echo "and you have the normal fd_set macros (just as I'd expect)." >&4
+		d_fd_macros="$define"
+	else
+		$cat >&4 <<'EOM'
+but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
+EOM
+		d_fd_macros="$undef"
+	fi
+else
+	$cat <<'EOM'
+Hmm, your compiler has some difficulty with fd_set.  Checking further...
+EOM
+	set fd_set
+	if eval $compile; then
+		d_fds_bits="$undef"
+		d_fd_set="$define"
+		echo "Well, your system has some sort of fd_set available..." >&4
+		if ./fd_set; then
+			echo "and you have the normal fd_set macros." >&4
+			d_fd_macros="$define"
+		else
+			$cat <<'EOM'
+but not the normal fd_set macros!  Gross!  More work for me...
+EOM
+			d_fd_macros="$undef"
+		fi
+	else
+	echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
+		d_fd_set="$undef"
+		d_fds_bits="$undef"
+		d_fd_macros="$undef"
+	fi
+fi
+$rm -f fd_set*
+
 : see if fgetpos exists
 set fgetpos d_fgetpos
 eval $inlibc
@@ -7245,10 +9039,115 @@ eval $inlibc
 set fpathconf d_fpathconf
 eval $inlibc
 
+
+: check for fpos64_t
+echo " "
+echo "Checking to see if you have fpos64_t..." >&4
+$cat >try.c <
+int main() { fpos64_t x = 7; }
+EOCP
+set try
+if eval $compile; then
+	val="$define"
+	echo "You have fpos64_t."
+else
+	val="$undef"
+	echo "You do not have fpos64_t."
+	case "$fpossize" in
+	8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
+	esac
+fi
+$rm -f try.* try
+set d_fpos64_t
+eval $setvar
+
+hasstruct='varname=$1; struct=$2; shift; shift;
+while $test $# -ge 2; do
+	case "$1" in
+	$define) echo "#include <$2>";;
+	esac ;
+    shift 2;
+done > try.c;
+echo "int main () { struct $struct foo; }" >> try.c;
+set try;
+if eval $compile; then
+	val="$define";
+else
+	val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c try.o'
+
+: see if this is a sys/param system
+set sys/param.h i_sysparam
+eval $inhdr
+
+: see if this is a sys/mount.h system
+set sys/mount.h i_sysmount
+eval $inhdr
+
+: see if sys/types.h has to be included
+set sys/types.h i_systypes
+eval $inhdr
+
+
+echo " "
+echo "Checking to see if your system supports struct fs_data..." >&4
+set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
+eval $hasstruct
+case "$d_fs_data_s" in
+"$define")      echo "Yes, it does."   ;;
+*)              echo "No, it doesn't." ;;
+esac
+
+: see if fseeko exists
+set fseeko d_fseeko
+eval $inlibc
+case "$longsize" in
+8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
+esac
+
 : see if fsetpos exists
 set fsetpos d_fsetpos
 eval $inlibc
 
+
+: see if fstatfs exists
+set fstatfs d_fstatfs
+eval $inlibc
+
+
+: see if statvfs exists
+set statvfs d_statvfs
+eval $inlibc
+
+: see if fstatvfs exists
+set fstatvfs d_fstatvfs
+eval $inlibc
+
+
+: see if ftello exists
+set ftello d_ftello
+eval $inlibc
+case "$longsize" in
+8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
+esac
+
+: see if getcwd exists
+set getcwd d_getcwd
+eval $inlibc
+
+
+: see if getfsstat exists
+set getfsstat d_getfsstat
+eval $inlibc
+
+: see if getgrent exists
+set getgrent d_getgrent
+eval $inlibc
+
 : see if gethostbyaddr exists
 set gethostbyaddr d_gethbyaddr
 eval $inlibc
@@ -7257,53 +9156,94 @@ eval $inlibc
 set gethostbyname d_gethbyname
 eval $inlibc
 
-: see if this is a sys/param system
-set sys/param.h i_sysparam
-eval $inhdr
-
-: see if this is a sys/mount.h system
-set sys/mount.h i_sysmount
-eval $inhdr
-
-: see if fstatfs exists
-set fstatfs d_fstatfs
-eval $inlibc
-
-: see if statfs knows about mount flags
-echo " "
-set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
-eval $hasfield
-
-: see if this is a sysstatvfs.h system
-set sys/statvfs.h i_sysstatvfs
-eval $inhdr
-
-: see if fstatvfs exists
-set fstatvfs d_fstatvfs
-eval $inlibc
-
 : see if gethostent exists
 set gethostent d_gethent
 eval $inlibc
 
-hasproto='varname=$1; func=$2; shift; shift;
-while $test $# -ge 2; do
-	case "$1" in
-	$define) echo "#include <$2>";;
-	esac ;
-    shift 2;
-done > try.c;
-$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
-if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
-	echo "$func() prototype found.";
-	val="$define";
-else
-	echo "$func() prototype NOT found.";
-	val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm -f try.c tryout.c'
+: see how we will look up host name
+echo " "
+call=''
+if set gethostname val -f d_gethname; eval $csym; $val; then
+	echo 'gethostname() found.' >&4
+	d_gethname="$define"
+	call=gethostname
+fi
+if set uname val -f d_uname; eval $csym; $val; then
+	if ./xenix; then
+		$cat <<'EOM'
+uname() was found, but you're running xenix, and older versions of xenix
+have a broken uname(). If you don't really know whether your xenix is old
+enough to have a broken system call, use the default answer.
+
+EOM
+		dflt=y
+		case "$d_uname" in
+		"$define") dflt=n;;
+		esac
+		rp='Is your uname() broken?'
+		. ./myread
+		case "$ans" in
+		n*) d_uname="$define"; call=uname;;
+		esac
+	else
+		echo 'uname() found.' >&4
+		d_uname="$define"
+		case "$call" in
+		'') call=uname ;;
+		esac
+	fi
+fi
+case "$d_gethname" in
+'') d_gethname="$undef";;
+esac
+case "$d_uname" in
+'') d_uname="$undef";;
+esac
+case "$d_uname$d_gethname" in
+*define*)
+	dflt=n
+	cat <&4;;
+	*)
+	echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
+		;;
+	esac;;
+esac
+case "$d_phostname" in
+'') d_phostname="$undef";;
+esac
 
 : see if this is a netdb.h system
 set netdb.h i_netdb
@@ -7318,6 +9258,14 @@ eval $hasproto
 set getlogin d_getlogin
 eval $inlibc
 
+: see if getmnt exists
+set getmnt d_getmnt
+eval $inlibc
+
+: see if getmntent exists
+set getmntent d_getmntent
+eval $inlibc
+
 : see if getnetbyaddr exists
 set getnetbyaddr d_getnbyaddr
 eval $inlibc
@@ -7348,18 +9296,6 @@ eval $inlibc
 set getprotoent d_getpent
 eval $inlibc
 
-: see if this is a mntent.h system
-set mntent.h i_mntent
-eval $inhdr
-
-: see if getmntent exists
-set getmntent d_getmntent
-eval $inlibc
-
-: see if hasmntopt exists
-set hasmntopt d_hasmntopt
-eval $inlibc
-
 : see if getpgid exists
 set getpgid d_getpgid
 eval $inlibc
@@ -7381,6 +9317,11 @@ echo " "
 set d_getprotoprotos getprotoent $i_netdb netdb.h
 eval $hasproto
 
+: see if getpwent exists
+set getpwent d_getpwent
+eval $inlibc
+
+
 : see if getservbyname exists
 set getservbyname d_getsbyname
 eval $inlibc
@@ -7398,6 +9339,14 @@ echo " "
 set d_getservprotos getservent $i_netdb netdb.h
 eval $hasproto
 
+: see if getspent exists
+set getspent d_getspent
+eval $inlibc
+
+: see if getspnam exists
+set getspnam d_getspnam
+eval $inlibc
+
 : see if gettimeofday or ftime exists
 set gettimeofday d_gettimeod
 eval $inlibc
@@ -7417,6 +9366,35 @@ case "$d_gettimeod$d_ftime" in
 	;;
 esac
 
+: see if this is an grp system
+set grp.h i_grp
+eval $inhdr
+
+case "$i_grp" in
+$define)
+	xxx=`./findhdr grp.h`
+	$cppstdin $cppflags $cppminus < $xxx >$$.h
+
+	if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
+		val="$define"
+	else
+		val="$undef"
+	fi
+	set d_grpasswd
+	eval $setvar
+
+	$rm -f $$.h
+	;;
+*)
+	val="$undef";
+	set d_grpasswd; eval $setvar
+	;;
+esac
+
+: see if hasmntopt exists
+set hasmntopt d_hasmntopt
+eval $inlibc
+
 : see if this is a netinet/in.h or sys/in.h system
 set netinet/in.h i_niin sys/in.h i_sysin
 eval $inhdr
@@ -7463,27 +9441,9 @@ esac
 set d_htonl
 eval $setvar
 
-: see which of string.h or strings.h is needed
-echo " "
-strings=`./findhdr string.h`
-if $test "$strings" && $test -r "$strings"; then
-	echo "Using  instead of ." >&4
-	val="$define"
-else
-	val="$undef"
-	strings=`./findhdr strings.h`
-	if $test "$strings" && $test -r "$strings"; then
-		echo "Using  instead of ." >&4
-	else
-		echo "No string header found -- You'll surely have problems." >&4
-	fi
-fi
-set i_string
-eval $setvar
-case "$i_string" in
-"$undef") strings=`./findhdr strings.h`;;
-*)	  strings=`./findhdr string.h`;;
-esac
+: see if iconv exists
+set iconv d_iconv
+eval $inlibc
 
 : index or strchr
 echo " "
@@ -7522,6 +9482,51 @@ set d_index; eval $setvar
 set inet_aton d_inetaton
 eval $inlibc
 
+: see if inttypes.h is available
+: we want a real compile instead of Inhdr because some systems
+: have an inttypes.h which includes non-existent headers
+echo " "
+$cat >try.c <
+int main() {
+	static int32_t foo32 = 0x12345678;
+}
+EOCP
+set try
+if eval $compile; then
+	echo " found." >&4
+	val="$define"
+else
+	echo " NOT found." >&4
+	val="$undef"
+fi
+$rm -f try.c try
+set i_inttypes
+eval $setvar
+
+: check for int64_t
+echo " "
+echo "Checking to see if you have int64_t..." >&4
+$cat >try.c <
+#$i_inttypes I_INTTYPES
+#ifdef I_INTTYPES
+#include 
+#endif
+int main() { int64_t x = 7; }
+EOCP
+set try
+if eval $compile; then
+	val="$define"
+	echo "You have int64_t."
+else
+	val="$undef"
+	echo "You do not have int64_t."
+fi
+$rm -f try try.*
+set d_int64_t
+eval $setvar
+
 : Look for isascii
 echo " "
 $cat >isascii.c <<'EOCP'
@@ -7583,6 +9588,33 @@ fi
 set d_lchown
 eval $setvar
 
+: See if number of significant digits in a double precision number is known
+echo " "
+$cat >ldbl_dig.c <
+#endif
+#ifdef I_FLOAT
+#include 
+#endif
+#ifdef LDBL_DIG
+printf("Contains LDBL_DIG");
+#endif
+EOM
+$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
+if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
+	echo "LDBL_DIG found." >&4
+	val="$define"
+else
+	echo "LDBL_DIG NOT found." >&4
+	val="$undef"
+fi
+$rm -f ldbl_dig.?
+set d_ldbl_dig
+eval $setvar
+
 : see if link exists
 set link d_link
 eval $inlibc
@@ -7595,62 +9627,17 @@ eval $inlibc
 set lockf d_lockf
 eval $inlibc
 
-: check for long doubles
-echo " "
-echo $n "Checking to see if your system supports long doubles...$c" >&4
-echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
-if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
-	val="$define"
-	echo " Yup, it does." >&4
-else
-	val="$undef"
-	echo " Nope, it doesn't." >&4
-fi
-$rm try.*
-set d_longdbl
-eval $setvar
-
-: check for length of long double
-case "${d_longdbl}${longdblsize}" in
-$define)
-	echo " "
-	$echo $n "Checking to see how big your long doubles are...$c" >&4
-	$cat >try.c <<'EOCP'
-#include 
-int main()
-{
-	printf("%d\n", sizeof(long double));
-}
-EOCP
-	set try
-	if eval $compile; then
-		longdblsize=`./try`
-		$echo " $longdblsize bytes." >&4
-	else
-		dflt='8'
-		echo " "
-		echo "(I can't seem to compile the test program.  Guessing...)" >&4
-		rp="What is the size of a long double (in bytes)?"
-		. ./myread
-		longdblsize="$ans"
-	fi
-	if $test "X$doublesize" = "X$longdblsize"; then
-		echo "(That isn't any different from an ordinary double.)"
-	fi	
-	;;
-esac
-$rm -f try.c try
-
 : check for long long
 echo " "
-echo $n "Checking to see if your system supports long long...$c" >&4
-echo 'long long foo() { long long x; x = 7; return x; }' > try.c
-if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
+echo "Checking to see if you have long long..." >&4
+echo 'int main() { long long x = 7; return 0; }' > try.c
+set try
+if eval $compile; then
 	val="$define"
-	echo " Yup, it does." >&4
+	echo "You have have long long."
 else
 	val="$undef"
-	echo " Nope, it doesn't." >&4
+	echo "You do not have long long."
 fi
 $rm try.*
 set d_longlong
@@ -7660,18 +9647,19 @@ eval $setvar
 case "${d_longlong}${longlongsize}" in
 $define)
 	echo " "
-	$echo $n "Checking to see how big your long longs are...$c" >&4
+	echo "Checking to see how big your long longs are..." >&4
 	$cat >try.c <<'EOCP'
 #include 
 int main()
 {
-	printf("%d\n", sizeof(long long));
+    printf("%d\n", (int)sizeof(long long));
+    return(0);
 }
 EOCP
 	set try
 	if eval $compile_ok; then
-		longlongsize=`./try`
-		$echo " $longlongsize bytes." >&4
+		longlongsize=`./try$exe_ext`
+		echo "Your long longs are $longlongsize bytes long."
 	else
 		dflt='8'
 		echo " "
@@ -7685,12 +9673,21 @@ EOCP
 	fi	
 	;;
 esac
-$rm -f try.c try
+$rm -f try.* try
+
+: see if prototype for lseek is available
+echo " "
+set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
+eval $hasproto
 
 : see if lstat exists
 set lstat d_lstat
 eval $inlibc
 
+: see if madvise exists
+set madvise d_madvise
+eval $inlibc
+
 : see if mblen exists
 set mblen d_mblen
 eval $inlibc
@@ -7703,6 +9700,10 @@ eval $inlibc
 set mbtowc d_mbtowc
 eval $inlibc
 
+: see if memchr exists
+set memchr d_memchr
+eval $inlibc
+
 : see if memcmp exists
 set memcmp d_memcmp
 eval $inlibc
@@ -7723,14 +9724,57 @@ eval $inlibc
 set mkdir d_mkdir
 eval $inlibc
 
+: see if mkdtemp exists
+set mkdtemp d_mkdtemp
+eval $inlibc
+
 : see if mkfifo exists
 set mkfifo d_mkfifo
 eval $inlibc
 
+: see if mkstemp exists
+set mkstemp d_mkstemp
+eval $inlibc
+
+: see if mkstemps exists
+set mkstemps d_mkstemps
+eval $inlibc
+
 : see if mktime exists
 set mktime d_mktime
 eval $inlibc
 
+: see if this is a sys/mman.h system
+set sys/mman.h i_sysmman
+eval $inhdr
+
+: see if mmap exists
+set mmap d_mmap
+eval $inlibc
+: see what shmat returns
+: default to something harmless
+mmaptype='void *'
+case "$i_sysmman$d_mmap" in
+"$define$define")
+	$cat >mmap.c <<'END'
+#include 
+void *mmap();
+END
+	if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
+		mmaptype='void *'
+	else
+		mmaptype='caddr_t'
+	fi
+	echo "and it returns ($mmaptype)." >&4
+	;;
+esac
+
+
+
+: see if mprotect exists
+set mprotect d_mprotect
+eval $inlibc
+
 : see if msgctl exists
 set msgctl d_msgctl
 eval $inlibc
@@ -7783,10 +9827,406 @@ fi
 set d_msg
 eval $setvar
 
+: see if msync exists
+set msync d_msync
+eval $inlibc
+
+: see if munmap exists
+set munmap d_munmap
+eval $inlibc
+
 : see if nice exists
 set nice d_nice
 eval $inlibc
 
+
+echo " "
+echo "Checking which 64-bit integer type we could use..." >&4
+
+case "$intsize" in
+8) val=int
+   set quadtype
+   eval $setvar
+   val='"unsigned int"'
+   set uquadtype
+   eval $setvar
+   quadkind=1
+   ;;
+*) case "$longsize" in
+   8) val=long
+      set quadtype
+      eval $setvar
+      val='"unsigned long"'
+      set uquadtype
+      eval $setvar
+      quadkind=2
+      ;;
+   *) case "$d_longlong:$longlongsize" in
+      define:8)
+        val='"long long"'
+        set quadtype
+        eval $setvar
+        val='"unsigned long long"'
+        set uquadtype
+        eval $setvar
+        quadkind=3
+        ;;
+      *) case "$d_int64_t" in
+         define)
+           val=int64_t
+           set quadtype
+           eval $setvar
+           val=uint64_t
+           set uquadtype
+           eval $setvar
+           quadkind=4
+           ;;
+         esac
+         ;;
+      esac
+      ;;
+   esac
+   ;;
+esac
+
+case "$quadtype" in
+'')	echo "Alas, no 64-bit integer types in sight." >&4
+	d_quad="$undef"
+	;;
+*)	if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
+	    verb="will"
+	else
+	    verb="could"
+	fi
+	echo "We $verb use '$quadtype' for 64-bit integers." >&4
+	d_quad="$define"
+	;;
+esac
+
+: check for length of character
+echo " "
+case "$charsize" in
+'')
+	echo "Checking to see how big your characters are (hey, you never know)..." >&4
+	$cat >try.c <<'EOCP'
+#include 
+int main()
+{
+    printf("%d\n", (int)sizeof(char));
+    exit(0);
+}
+EOCP
+	set try
+	if eval $compile_ok; then
+		dflt=`./try`
+	else
+		dflt='1'
+		echo "(I can't seem to compile the test program.  Guessing...)"
+	fi
+	;;
+*)
+	dflt="$charsize"
+	;;
+esac
+rp="What is the size of a character (in bytes)?"
+. ./myread
+charsize="$ans"
+$rm -f try.c try
+
+
+echo " "
+$echo "Choosing the C types to be used for Perl's internal types..." >&4
+
+case "$use64bitint:$d_quad:$quadtype" in
+define:define:?*)
+	ivtype="$quadtype"
+	uvtype="$uquadtype"
+	ivsize=8
+	uvsize=8
+	;;
+*)	ivtype="long"
+	uvtype="unsigned long"
+	ivsize=$longsize
+	uvsize=$longsize
+	;;
+esac
+
+case "$uselongdouble:$d_longdbl" in
+define:define)
+	nvtype="long double"
+	nvsize=$longdblsize
+	;;
+*)	nvtype=double
+	nvsize=$doublesize
+	;;
+esac
+
+$echo "(IV will be "$ivtype", $ivsize bytes)"
+$echo "(UV will be "$uvtype", $uvsize bytes)"
+$echo "(NV will be "$nvtype", $nvsize bytes)"
+
+$cat >try.c <
+#endif
+#include 
+int main() {
+#ifdef INT8
+   int8_t i =  INT8_MAX;
+  uint8_t u = UINT8_MAX;
+  printf("int8_t\n");
+#endif
+#ifdef INT16
+   int16_t i =  INT16_MAX;
+  uint16_t i = UINT16_MAX;
+  printf("int16_t\n");
+#endif
+#ifdef INT32
+   int32_t i =  INT32_MAX;
+  uint32_t u = UINT32_MAX;
+  printf("int32_t\n");
+#endif
+}
+EOCP
+
+case "$i8type" in
+'')	case "$charsize" in
+	1)	i8type=char
+		u8type="unsigned char"
+		i8size=$charsize
+		u8size=$charsize
+		;;
+	esac
+	;;
+esac
+case "$i8type" in
+'')	set try -DINT8
+	if eval $compile; then
+		case "`./try$exe_ext`" in
+		int8_t)	i8type=int8_t
+			u8type=uint8_t
+			i8size=1
+			u8size=1
+			;;
+		esac
+	fi
+	;;
+esac
+case "$i8type" in
+'')	if $test $charsize -ge 1; then
+		i8type=char
+		u8type="unsigned char"
+		i8size=$charsize
+		u8size=$charsize
+	fi
+	;;
+esac
+
+case "$i16type" in
+'')	case "$shortsize" in
+	2)	i16type=short
+		u16type="unsigned short"
+		i16size=$shortsize
+		u16size=$shortsize
+		;;
+	esac
+	;;
+esac
+case "$i16type" in
+'')	set try -DINT16
+	if eval $compile; then
+		case "`./try$exe_ext`" in
+		int16_t)
+			i16type=int16_t
+			u16type=uint16_t
+			i16size=2
+			u16size=2
+			;;
+		esac
+	fi
+	;;
+esac
+case "$i16type" in
+'')	if $test $shortsize -ge 2; then
+		i16type=short
+		u16type="unsigned short"
+		i16size=$shortsize
+		u16size=$shortsize
+	fi
+	;;
+esac
+
+case "$i32type" in
+'')	case "$longsize" in
+	4)	i32type=long
+		u32type="unsigned long"
+		i32size=$longsize
+		u32size=$longsize
+		;;
+	*)	case "$intsize" in
+		4)	i32type=int
+			u32type="unsigned int"
+			i32size=$intsize
+			u32size=$intsize
+			;;
+		esac
+		;;
+	esac
+	;;
+esac
+case "$i32type" in
+'')	set try -DINT32
+	if eval $compile; then
+		case "`./try$exe_ext`" in
+		int32_t)
+			i32type=int32_t
+			u32type=uint32_t
+			i32size=4
+			u32size=4
+			;;
+		esac
+	fi
+	;;
+esac
+case "$i32type" in
+'')	if $test $intsize -ge 4; then
+		i32type=int
+		u32type="unsigned int"
+		i32size=$intsize
+		u32size=$intsize
+	fi
+	;;
+esac
+
+case "$i64type" in
+'')	case "$d_quad:$quadtype" in
+	define:?*)
+		i64type="$quadtype"
+		u64type="$uquadtype"
+		i64size=8
+		u64size=8
+		;;
+	esac
+	;;
+esac
+
+$echo "Checking whether your NVs can preserve your UVs..." >&4
+$cat <try.c
+#include 
+int main() {
+    $uvtype k = ($uvtype)~0, l;
+    $nvtype d;
+    l = k;
+    d = ($nvtype)l;
+    l = ($uvtype)d;
+    if (l == k)
+       printf("preserve\n");
+    exit(0);
+}
+EOP
+set try
+if eval $compile; then
+	case "`./try$exe_ext`" in
+	preserve) d_nv_preserves_uv="$define" ;;
+	esac
+fi	
+case "$d_nv_preserves_uv" in
+$define) $echo "Yes, they can."  2>&1 ;;
+*)	 $echo "No, they can't." 2>&1
+	 d_nv_preserves_uv="$undef"
+	 ;;
+esac
+
+$rm -f try.* try
+
+
+: check for off64_t
+echo " "
+echo "Checking to see if you have off64_t..." >&4
+$cat >try.c <
+#include 
+int main() { off64_t x = 7; }
+EOCP
+set try
+if eval $compile; then
+	val="$define"
+	echo "You have off64_t."
+else
+	val="$undef"
+	echo "You do not have off64_t."
+	case "$lseeksize" in
+	8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
+	esac
+fi
+$rm -f try.* try
+set d_off64_t
+eval $setvar
+
+: see if POSIX threads are available
+set pthread.h i_pthread
+eval $inhdr
+
+
+
+
+: how to create joinable pthreads
+if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
+	echo " "
+	echo "Checking what constant to use for creating joinable pthreads..." >&4 
+	$cat >try.c <<'EOCP'
+#include 
+int main() {
+    int detachstate = JOINABLE;
+}
+EOCP
+	set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
+	if eval $compile; then
+		echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
+		val="$undef" # Yes, undef.
+		set d_old_pthread_create_joinable
+		eval $setvar
+		val=""
+		set old_pthread_create_joinable
+		eval $setvar
+	else
+		set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
+		if eval $compile; then
+			echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
+			val="$define"
+			set d_old_pthread_create_joinable
+			eval $setvar
+			val=PTHREAD_CREATE_UNDETACHED
+			set old_pthread_create_joinable
+			eval $setvar
+		else		
+			set try -DJOINABLE=__UNDETACHED
+			if eval $compile; then
+				echo "You seem to use __UNDETACHED." >&4
+				val="$define"
+				set d_old_pthread_create_joinable
+				eval $setvar
+				val=__UNDETACHED
+				set old_pthread_create_joinable
+				eval $setvar
+			else
+				echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
+				val="$define"
+				set d_old_pthread_create_joinable
+				eval $setvar
+				val=0
+				set old_pthread_create_joinable
+				eval $setvar
+			fi
+		fi
+	fi
+	$rm -f try try.*
+else
+    d_old_pthread_create_joinable="$undef"
+    old_pthread_create_joinable=""
+fi
+
 : see if pause exists
 set pause d_pause
 eval $inlibc
@@ -7803,104 +10243,80 @@ eval $inlibc
 : see whether the various POSIXish _yields exist
 $cat >try.c <
+#include 
 int main() {
-	YIELD();
-	exit(0);
+#ifdef SCHED_YIELD
+	sched_yield();
+#else
+#ifdef PTHREAD_YIELD
+	pthread_yield();
+#else
+#ifdef PTHREAD_YIELD_NULL
+	pthread_yield(NULL);
+#endif
+#endif
+#endif
 }
 EOP
-: see if pthread_yield exists within given cccmd,
-: if we do not usethreads this may well end up undef.
-set try -DYIELD=pthread_yield
+: see if sched_yield exists
+set try -DSCHED_YIELD
 if eval $compile; then
     val="$define"
-    echo 'pthread_yield() found.' >&4
+    sched_yield='sched_yield()'
 else
     val="$undef"
-    echo 'pthread_yield() NOT found.' >&4
 fi
+case "$usethreads" in
+$define)
+	case "$val" in
+	$define) echo 'sched_yield() found.' >&4	;;
+	*)	 echo 'sched_yield() NOT found.' >&4	;;
+	esac
+esac
+set d_sched_yield
+eval $setvar
+
+: see if pthread_yield exists
+set try -DPTHREAD_YIELD
+if eval $compile; then
+    val="$define"
+    case "$sched_yield" in
+    '') sched_yield='pthread_yield()' ;;
+    esac
+else
+    set try -DPTHREAD_YIELD_NULL
+    if eval $compile; then
+	val="$define"
+	case "$sched_yield" in
+	'') sched_yield='pthread_yield(NULL)' ;;
+	esac
+    else
+	val="$undef"
+    fi
+fi
+case "$usethreads" in
+$define)
+	case "$val" in
+	$define) echo 'pthread_yield() found.' >&4	;;
+	*)	 echo 'pthread_yield() NOT found.' >&4	;;
+	esac
+	;;
+esac
 set d_pthread_yield
 eval $setvar
 
-: see if sched_yield exists within given cccmd,
-: if we do not usethreads this may well end up undef.
-set try -DYIELD=sched_yield
-if eval $compile; then
-    val="$define"
-    echo 'sched_yield() found.' >&4
-else
-    val="$undef"
-    echo 'sched_yield() NOT found.' >&4
-fi
-set d_sched_yield
-eval $setvar
+case "$sched_yield" in
+'') sched_yield=undef ;;
+esac
+
 $rm -f try try.*
 
-: see if this is a pthread.h system
-set pthread.h i_pthread
-eval $inhdr
-
-: see if this is a mach/cthreads.h system
-set mach/cthreads.h i_machcthreads
-eval $inhdr
-
-: test whether pthreads are created in joinable -- aka undetached -- state
-if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
-	echo $n "Checking whether pthreads are created joinable. $c" >&4 
-	$cat >try.c <
-#include 
-int main() {
-    pthread_attr_t attr;
-    int detachstate;
-    printf("%s\n",
-	pthread_attr_init(&attr) == 0 &&
-        pthread_attr_getdetachstate(&attr, &detachstate) == 0 &&
-        detachstate == PTHREAD_CREATE_DETACHED ?
-        "detached" : "joinable");
-    exit(0);
-}
-EOCP
-	set try
-	if eval $compile; then
-		yyy=`./try`
-		case "$yyy" in
-			detached) echo "Nope, they aren't." >&4 ;;
-			*) echo "Yup, they are." >&4 ;;
-		esac
-	else
-		echo " "
-		echo "(I can't execute the test program--assuming they are.)" >&4
-		yyy=joinable
-	fi
-	$rm -f try try.*
-	case "$yyy" in
-		detached) val="$undef" ;;
-		*) val="$define" ;;
-	esac
-	set d_pthreads_created_joinable
-	eval $setvar
-else
-    d_pthreads_created_joinable="$undef"
-fi
-
 : see if this is a pwd.h system
 set pwd.h i_pwd
 eval $inhdr
 
 case "$i_pwd" in
 $define)
-	: see if setpwent exists
-	set setpwent d_setpwent
-	eval $inlibc
-
-	: see if getpwent exists
-	set getpwent d_getpwent
-	eval $inlibc
-
-	: see if endpwent exists
-	set endpwent d_endpwent
-	eval $inlibc
-
 	xxx=`./findhdr pwd.h`
 	$cppstdin $cppflags $cppminus < $xxx >$$.h
 
@@ -7970,11 +10386,8 @@ $define)
 
 	$rm -f $$.h
 	;;
-*)	# Assume all is lost as far as the d_*pw* go.
+*)
 	val="$undef"; 
-	set d_setpwent; eval $setvar
-	set d_getpwent; eval $setvar
-	set d_endpwent; eval $setvar
 	set d_pwquota; eval $setvar
 	set d_pwage; eval $setvar
 	set d_pwchange; eval $setvar
@@ -8306,7 +10719,7 @@ else
     echo "You do not have union semun in ." >&4
     val="$undef"
 fi
-$rm -f try try.c
+$rm -f try try.c try.h
 set d_union_semun
 eval $setvar
 
@@ -8347,6 +10760,7 @@ END
 #include 
 #include 
 #include 
+#include "try.h"
 #ifndef errno
 extern int errno;
 #endif
@@ -8399,7 +10813,7 @@ END
     case "$d_semctl_semun" in
     $define)
         echo "You can use union semun for semctl IPC_STAT." >&4
-	also='also '
+	also='also'
         ;;
     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
 	also=''
@@ -8412,9 +10826,9 @@ END
 #include 
 #include 
 #include 
+#include "try.h"
 #include 
 #include 
-#include "try.h"
 #ifndef errno
 extern int errno;
 #endif
@@ -8456,7 +10870,7 @@ END
     eval $setvar
     case "$d_semctl_semid_ds" in
     $define)
-        echo "You can ${also}use struct semid_ds* for semctl IPC_STAT." >&4
+        echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
         ;;
     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
         ;;
@@ -8484,6 +10898,10 @@ eval $inlibc
 set seteuid d_seteuid
 eval $inlibc
 
+: see if setgrent exists
+set setgrent d_setgrent
+eval $inlibc
+
 : see if sethostent exists
 set sethostent d_sethent
 eval $inlibc
@@ -8516,6 +10934,10 @@ eval $inlibc
 set setpriority d_setprior
 eval $inlibc
 
+: see if setpwent exists
+set setpwent d_setpwent
+eval $inlibc
+
 : see if setregid exists
 set setregid d_setregid
 eval $inlibc
@@ -8544,6 +10966,10 @@ eval $inlibc
 set setsid d_setsid
 eval $inlibc
 
+: see if setspent exists
+set setspent d_setspent
+eval $inlibc
+
 : see if setvbuf exists
 set setvbuf d_setvbuf
 eval $inlibc
@@ -8656,7 +11082,7 @@ case "$osname" in
 freebsd)
     case "`ipcs 2>&1`" in
     "SVID shared memory"*"not configured"*)
-	echo "But your $osname does not have the shm*(2) configured." >&4
+	echo "Your $osname does not have the shm*(2) configured." >&4
         h_shm=false
 	val="$undef"
 	set shmctl d_shmctl
@@ -8693,6 +11119,10 @@ if set sigaction val -f d_sigaction; eval $csym; $val; then
 int main()
 {
     struct sigaction act, oact;
+    act.sa_flags = 0;
+    oact.sa_handler = 0;
+    /* so that act and oact are used */
+    exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
 }
 EOP
 	set try
@@ -8754,73 +11184,60 @@ set d_sigsetjmp
 eval $setvar
 $rm -f try.c try
 
-socketlib=''
-sockethdr=''
-: see whether socket exists
-echo " "
-$echo $n "Hmm... $c" >&4
-if set socket val -f d_socket; eval $csym; $val; then
-	echo "Looks like you have Berkeley networking support." >&4
-	d_socket="$define"
-	if set setsockopt val -f; eval $csym; $val; then
-		d_oldsock="$undef"
-	else
-		echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
-		d_oldsock="$define"
-	fi
-else
-	if $contains socklib libc.list >/dev/null 2>&1; then
-		echo "Looks like you have Berkeley networking support." >&4
-		d_socket="$define"
-		: we will have to assume that it supports the 4.2 BSD interface
-		d_oldsock="$undef"
-	else
-		echo "You don't have Berkeley networking in libc$_a..." >&4
-		for net in net socket
-		do
-			if test -f /usr/lib/lib$net$_a; then
-				( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
-				$ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
-				if $contains socket libc.list >/dev/null 2>&1; then
-					d_socket="$define"
-					case "$net" in
-					net)
-						echo "...but the Wollongong group seems to have hacked it in." >&4
-						socketlib="-lnet"
-						sockethdr="-I/usr/netinclude"
-						;;
-					esac
-					echo "Found Berkeley sockets interface in lib$net." >& 4 
-					if $contains setsockopt libc.list >/dev/null 2>&1; then
-						d_oldsock="$undef"
-					else
-						echo "...using the old 4.1c interface, rather than 4.2" >&4
-						d_oldsock="$define"
-					fi
-					break
-				fi
-			fi
-		done
-		if test "X$d_socket" != "X$define"; then
-			echo "or anywhere else I see." >&4
-			d_socket="$undef"
-			d_oldsock="$undef"
-		fi
-	fi
-fi
+: see if sys/stat.h is available
+set sys/stat.h i_sysstat
+eval $inhdr
 
-: see if socketpair exists
-set socketpair d_sockpair
-eval $inlibc
 
 : see if stat knows about block sizes
 echo " "
+echo "Checking to see if your struct stat has st_blocks field..." >&4
 set d_statblks stat st_blocks $i_sysstat sys/stat.h
 eval $hasfield
 
+
+: see if this is a sys/vfs.h system
+set sys/vfs.h i_sysvfs
+eval $inhdr
+
+
+: see if this is a sys/statfs.h system
+set sys/statfs.h i_sysstatfs
+eval $inhdr
+
+
+echo " "
+echo "Checking to see if your system supports struct statfs..." >&4
+set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
+eval $hasstruct
+case "$d_statfs_s" in
+"$define")      echo "Yes, it does."   ;;
+*)              echo "No, it doesn't." ;;
+esac
+
+
+
+: see if struct statfs knows about f_flags
+case "$d_statfs_s" in
+define)	
+	echo " "
+	echo "Checking to see if your struct statfs has f_flags field..." >&4
+	set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
+	eval $hasfield
+	;;
+*)	val="$undef"
+	set d_statfs_f_flags
+	eval $setvar
+	;;
+esac
+case "$d_statfs_f_flags" in
+"$define")      echo "Yes, it does."   ;;
+*)              echo "No, it doesn't." ;;
+esac
+
 : see if _ptr and _cnt from stdio act std
 echo " "
-if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
+if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
 	echo "(Looks like you have stdio.h from Linux.)"
 	case "$stdio_ptr" in
 	'') stdio_ptr='((fp)->_IO_read_ptr)'
@@ -8945,6 +11362,41 @@ esac
 set d_stdiobase
 eval $setvar
 
+$cat >&4 <try.c <
+int main() {
+  if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
+    printf("yes\n");
+}
+EOCP
+	for s in _iob __iob __sF
+	do
+	        set try -DSTDIO_STREAM_ARRAY=$s
+		if eval $compile; then
+		    	case "`./try$exe_ext`" in
+			yes)	stdio_stream_array=$s; break ;;
+			esac
+		fi
+	done
+	$rm -f try.* try$exe_ext
+esac
+case "$stdio_stream_array" in
+'')	$cat >&4 <&4 <&4
-	d_strerror="$define"
-	d_strerrm='strerror(e)'
-	if set sys_errlist val -a d_syserrlst; eval $csym; $val; then	
-	    echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
-	    d_syserrlst="$define"
-	else
-	    echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
-	    d_syserrlst="$undef"
-	fi
+		echo 'strerror() found.' >&4
+		d_strerror="$define"
+		d_strerrm='strerror(e)'
+		if set sys_errlist val -a d_syserrlst; eval $csym; $val; then	
+			echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
+			d_syserrlst="$define"
+		else
+			echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
+			d_syserrlst="$undef"
+		fi
     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
-	$contains '#[ 	]*define.*strerror' "$xxx" >/dev/null 2>&1; then
-	echo 'strerror() found in string header.' >&4
-	d_strerror="$define"
-	d_strerrm='strerror(e)'
-	if set sys_errlist val -a d_syserrlst; eval $csym; $val; then	
-	echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
-	    d_syserrlst="$define"
-	else
-	    echo "(You don't appear to have any sys_errlist[], how can this be?)"
-	d_syserrlst="$undef"
-	fi
+			$contains '#[ 	]*define.*strerror' "$xxx" >/dev/null 2>&1; then
+		echo 'strerror() found in string header.' >&4
+		d_strerror="$define"
+		d_strerrm='strerror(e)'
+		if set sys_errlist val -a d_syserrlst; eval $csym; $val; then	
+			echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
+				d_syserrlst="$define"
+		else
+			echo "(You don't appear to have any sys_errlist[], how can this be?)"
+			d_syserrlst="$undef"
+		fi
     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
-echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
-	d_strerror="$undef"
-	d_syserrlst="$define"
-	d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
+		echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
+		d_strerror="$undef"
+		d_syserrlst="$define"
+		d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
     else
-	echo 'strerror() and sys_errlist[] NOT found.' >&4
-	d_strerror="$undef"
-	d_syserrlst="$undef"
-	d_strerrm='"unknown"'
+		echo 'strerror() and sys_errlist[] NOT found.' >&4
+		d_strerror="$undef"
+		d_syserrlst="$undef"
+		d_strerrm='"unknown"'
     fi
 fi
 
@@ -9020,10 +11472,117 @@ eval $inlibc
 set strtol d_strtol
 eval $inlibc
 
+: see if strtold exists
+set strtold d_strtold
+eval $inlibc
+
+: see if strtoll exists
+set strtoll d_strtoll
+eval $inlibc
+
+case "$d_longlong-$d_strtoll" in
+"$define-$define")
+	$cat <try.c <<'EOCP'
+#include 
+#ifdef __hpux
+#define strtoll __strtoll
+#endif
+#include 
+extern long long int strtoll(char *s, char **, int); 
+static int bad = 0;
+int check(char *s, long long ell, int een) {
+	long long gll;
+	errno = 0;
+	gll = strtoll(s, 0, 10);
+	if (!((gll == ell) && (errno == een)))
+		bad++;
+}
+int main() {
+	check(" 1",                                      1LL, 0);
+	check(" 0",                                      0LL, 0);
+	check("-1",                                     -1LL, 0);
+	check("-9223372036854775808", -9223372036854775808LL, 0);
+	check("-9223372036854775808", -9223372036854775808LL, 0);
+	check(" 9223372036854775807",  9223372036854775807LL, 0);
+	check("-9223372036854775808", -9223372036854775808LL, 0);
+	check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
+	check("-9223372036854775809", -9223372036854775808LL, ERANGE);
+	if (!bad)
+		printf("ok\n");
+}
+EOCP
+	set try
+	if eval $compile; then
+		case "`./try`" in
+		ok) echo "Your strtoll() seems to be working okay." ;;
+		*) cat <&4
+Your strtoll() doesn't seem to be working okay.
+EOM
+		   d_strtoll="$undef"
+		   ;;
+		esac
+	fi
+	;;
+esac
+
 : see if strtoul exists
 set strtoul d_strtoul
 eval $inlibc
 
+: see if strtoull exists
+set strtoull d_strtoull
+eval $inlibc
+
+case "$d_longlong-$d_strtoull" in
+"$define-$define")
+	$cat <try.c <<'EOCP'
+#include 
+#ifdef __hpux
+#define strtoull __strtoull
+#endif
+#include 
+extern unsigned long long int strtoull(char *s, char **, int); 
+static int bad = 0;
+int check(char *s, long long eull, int een) {
+	long long gull;
+	errno = 0;
+	gull = strtoull(s, 0, 10);
+	if (!((gull == eull) && (errno == een)))
+		bad++;
+}
+int main() {
+	check(" 1",                                       1LL, 0);
+	check(" 0",                                       0LL, 0);
+	check("18446744073709551615", 18446744073709551615ULL, 0);
+	check("18446744073709551616", 18446744073709551615ULL, ERANGE);
+	if (!bad)
+		printf("ok\n");
+}
+EOCP
+	set try
+	if eval $compile; then
+		case "`./try`" in
+		ok) echo "Your strtoull() seems to be working okay." ;;
+		*) cat <&4
+Your strtoull() doesn't seem to be working okay.
+EOM
+		   d_strtoull="$undef"
+		   ;;
+		esac
+	fi
+	;;
+esac
+
+: see if strtouq exists
+set strtouq d_strtouq
+eval $inlibc
+
 : see if strxfrm exists
 set strxfrm d_strxfrm
 eval $inlibc
@@ -9052,61 +11611,10 @@ eval $inlibc
 set tcsetpgrp d_tcsetpgrp
 eval $inlibc
 
-: define an is-a-typedef? function
-typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
-case "$inclist" in
-"") inclist="sys/types.h";;
-esac;
-eval "varval=\$$var";
-case "$varval" in
-"")
-	$rm -f temp.c;
-	for inc in $inclist; do
-		echo "#include <$inc>" >>temp.c;
-	done;
-	echo "#ifdef $type" >> temp.c;
-	echo "printf(\"We have $type\");" >> temp.c;
-	echo "#endif" >> temp.c;
-	$cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
-	if $contains $type temp.E >/dev/null 2>&1; then
-		eval "$var=\$type";
-	else
-		eval "$var=\$def";
-	fi;
-	$rm -f temp.?;;
-*) eval "$var=\$varval";;
-esac'
-
-: define an is-a-typedef? function that prompts if the type is not available.
-typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
-case "$inclist" in
-"") inclist="sys/types.h";;
-esac;
-eval "varval=\$$var";
-case "$varval" in
-"")
-	$rm -f temp.c;
-	for inc in $inclist; do
-		echo "#include <$inc>" >>temp.c;
-	done;
-	echo "#ifdef $type" >> temp.c;
-	echo "printf(\"We have $type\");" >> temp.c;
-	echo "#endif" >> temp.c;
-	$cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
-	echo " " ;
-	echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
-	if $contains $type temp.E >/dev/null 2>&1; then
-		echo "$type found." >&4;
-		eval "$var=\$type";
-	else
-		echo "$type NOT found." >&4;
-		dflt="$def";
-		. ./myread ;
-		eval "$var=\$ans";
-	fi;
-	$rm -f temp.?;;
-*) eval "$var=\$varval";;
-esac'
+: see if prototype for telldir is available
+echo " "
+set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
+eval $hasproto
 
 : see if this is a sys/times.h system
 set sys/times.h i_systimes
@@ -9150,42 +11658,9 @@ eval $setvar
 set umask d_umask
 eval $inlibc
 
-: see how we will look up host name
-echo " "
-if false; then
-	: dummy stub to allow use of elif
-elif set uname val -f d_uname; eval $csym; $val; then
-	if ./xenix; then
-		$cat <<'EOM'
-uname() was found, but you're running xenix, and older versions of xenix
-have a broken uname(). If you don't really know whether your xenix is old
-enough to have a broken system call, use the default answer.
-
-EOM
-		dflt=y
-		case "$d_uname" in
-		"$define") dflt=n;;
-		esac
-		rp='Is your uname() broken?'
-		. ./myread
-		case "$ans" in
-		n*) d_uname="$define"; call=uname;;
-		esac
-	else
-		echo 'uname() found.' >&4
-		d_uname="$define"
-		call=uname
-	fi
-fi
-case "$d_gethname" in
-'') d_gethname="$undef";;
-esac
-case "$d_uname" in
-'') d_uname="$undef";;
-esac
-case "$d_phostname" in
-'') d_phostname="$undef";;
-esac
+: see if ustat exists
+set ustat d_ustat
+eval $inlibc
 
 : backward compatibility for d_hvfork
 if test X$d_hvfork != X; then
@@ -9241,10 +11716,6 @@ eval $inhdr
 set sys/ndir.h i_sysndir
 eval $inhdr
 
-: see if sys/types.h has to be included
-set sys/types.h i_systypes
-eval $inhdr
-
 : see if closedir exists
 set closedir d_closedir
 eval $inlibc
@@ -9357,49 +11828,100 @@ Log='$Log'
 RCSfile='$RCSfile'
 Revision='$Revision'
 
+case "$crosscompile" in
+''|[nN]*) crosscompile="$undef" ;;
+esac
+
+case "$osname" in
+next|rhapsody|darwin) multiarch="$define" ;;
+esac
+case "$multiarch" in
+''|[nN]*) multiarch="$undef" ;;
+esac
+
 : check for alignment requirements
 echo " "
-case "$alignbytes" in
-'') echo "Checking alignment constraints..." >&4
-	$cat >try.c <<'EOCP'
+case "$crosscompile$multiarch" in
+*$define*)
+	$cat <&4
+		if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
+			$cat >try.c <<'EOCP'
+typedef long double NV;
+EOCP
+		else
+			$cat >try.c <<'EOCP'
+typedef double NV;
+EOCP
+		fi
+		$cat >>try.c <<'EOCP'
+#include 
 struct foobar {
 	char foo;
-	double bar;
-} try;
+	NV bar;
+} try_algn;
 int main()
 {
-	printf("%d\n", (char *)&try.bar - (char *)&try.foo);
+    printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
+    return(0);
 }
 EOCP
-	set try
-	if eval $compile_ok; then
-		dflt=`./try`
-	else
-		dflt='8'
-		echo "(I can't seem to compile the test program...)"
-	fi
-	;;
-*) dflt="$alignbytes"
+		set try
+		if eval $compile_ok; then
+			dflt=`./try`
+		else
+			dflt='8'
+			echo "(I can't seem to compile the test program...)"
+		fi
+		;;
+	*) dflt="$alignbytes"
+		;;
+	esac
+	rp="Doubles must be aligned on a how-many-byte boundary?"
+	. ./myread
+	alignbytes="$ans"
+	$rm -f try.c try
 	;;
 esac
-rp="Doubles must be aligned on a how-many-byte boundary?"
-. ./myread
-alignbytes="$ans"
-$rm -f try.c try
+
+
+: set the base revision
+baserev=5.0
 
 : check for ordering of bytes in a long
-case "$byteorder" in
-'')
-	$cat <<'EOM'
-  
+echo " "
+case "$crosscompile$multiarch" in
+*$define*)
+	$cat <try.c <<'EOCP'
+		$cat >try.c <<'EOCP'
 #include 
 int main()
 {
@@ -9419,37 +11941,40 @@ int main()
 	exit(0);
 }
 EOCP
-	xxx_prompt=y
-	set try
-	if eval $compile && ./try > /dev/null; then
-		dflt=`./try`
-		case "$dflt" in
-		[1-4][1-4][1-4][1-4]|12345678|87654321)
-			echo "(The test program ran ok.)"
-			echo "byteorder=$dflt"
-			xxx_prompt=n
+		xxx_prompt=y
+		set try
+		if eval $compile && ./try > /dev/null; then
+			dflt=`./try`
+			case "$dflt" in
+			[1-4][1-4][1-4][1-4]|12345678|87654321)
+				echo "(The test program ran ok.)"
+				echo "byteorder=$dflt"
+				xxx_prompt=n
 			;;
-		????|????????) echo "(The test program ran ok.)" ;;
-		*) echo "(The test program didn't run right for some reason.)" ;;
-		esac
-	else
-		dflt='4321'
-		cat <<'EOM'
+			????|????????) echo "(The test program ran ok.)" ;;
+			*) echo "(The test program didn't run right for some reason.)" ;;
+			esac
+		else
+			dflt='4321'
+			cat <<'EOM'
 (I can't seem to compile the test program.  Guessing big-endian...)
 EOM
-	fi
-	case "$xxx_prompt" in
-	y)
-		rp="What is the order of bytes in a long?"
-		. ./myread
-		byteorder="$ans"
-		;;
-	*)	byteorder=$dflt
+		fi
+		case "$xxx_prompt" in
+		y)
+			rp="What is the order of bytes in a long?"
+			. ./myread
+			byteorder="$ans"
+			;;
+		*)	byteorder=$dflt
+			;;
+		esac
 		;;
 	esac
+	$rm -f try.c try
 	;;
 esac
-$rm -f try.c try
+
 
 : how do we catenate cpp tokens here?
 echo " "
@@ -9539,7 +12064,7 @@ int main()
 }
 EOCP
 	set try
-	if eval $compile && ./try; then
+	if eval $compile_ok && ./try; then
 		echo 'Looks OK.' >&4
 	else
 		echo "I can't use Berkeley DB with your .  I'll disable Berkeley DB." >&4
@@ -9742,42 +12267,147 @@ EOM
 esac
 $rm -f try.* .out
 
-: check for length of double
+
+: How can we generate normalized random numbers ?
 echo " "
-case "$doublesize" in
+echo "Looking for a random number function..." >&4
+case "$randfunc" in
 '')
-	$echo $n "Checking to see how big your double precision numbers are...$c" >&4
-	$cat >try.c <<'EOCP'
-#include 
-int main()
-{
-	printf("%d\n", sizeof(double));
-}
-EOCP
-	set try
-	if eval $compile_ok; then
-		doublesize=`./try`
-		$echo " $doublesize bytes." >&4
+	if set drand48 val -f; eval $csym; $val; then
+		dflt="drand48"
+		echo "Good, found drand48()." >&4
+	elif set random val -f; eval $csym; $val; then
+		dflt="random"
+		echo "OK, found random()." >&4
 	else
-		dflt='8'
-		echo "(I can't seem to compile the test program.  Guessing...)"
-		rp="What is the size of a double precision number (in bytes)?"
-		. ./myread
-		doublesize="$ans"
+		dflt="rand"
+		echo "Yick, looks like I have to use rand()." >&4
 	fi
+	echo " "
+	;;
+*)
+	dflt="$randfunc"
 	;;
 esac
-$rm -f try.c try
+cont=true
+
+case "$ccflags" in
+*-Dmy_rand=*|*-Dmy_srand=*)
+	echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
+	ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
+	ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
+	ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
+	;;
+esac
+
+while $test "$cont"; do
+	rp="Use which function to generate random numbers?"
+	. ./myread
+	if $test "$ans" = "$dflt"; then
+		: null
+	else
+		randbits=''
+	fi
+	randfunc="$ans"
+	if set $ans val -f; eval $csym; $val; then
+		cont=''
+	else
+		dflt=y
+		rp="I cannot find function $ans. Use that name anyway?"
+		. ./myread
+		dflt=rand
+		case "$ans" in
+			[yY]*) cont='';;
+		esac
+	fi
+	case "$cont" in
+	'')
+		case "$randfunc" in
+		drand48)
+			drand01="drand48()"
+			seedfunc="srand48"
+			randbits=48
+			randseedtype=long
+			;;
+		rand|random)
+			case "$randbits" in
+			'')
+echo "Checking to see how many bits your $randfunc() function produces..." >&4
+				$cat >try.c <
+#ifdef I_UNISTD
+#  include 
+#endif
+#ifdef I_STDLIB
+#  include 
+#endif
+int main()
+{
+	register int i;
+	register unsigned long tmp;
+	register unsigned long max = 0L;
+
+	for (i = 1000; i; i--) {
+		tmp = (unsigned long) $randfunc();
+		if (tmp > max) max = tmp;
+	}
+	for (i = 0; max; i++)
+		max /= 2;
+	printf("%d\n",i);
+}
+EOCP
+				set try
+				if eval $compile_ok; then
+					dflt=`try`
+				else
+					dflt='?'
+					echo "(I can't seem to compile the test program...)"
+				fi
+				;;
+			*)
+				dflt="$randbits"
+				;;
+			esac
+			rp="How many bits does your $randfunc() function produce?"
+			. ./myread
+			randbits="$ans"
+			$rm -f try.c try
+			drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
+			seedfunc="s$randfunc"
+			randseedtype=unsigned
+			;;
+		*)
+			dflt="31"
+			rp="How many bits does your $randfunc() function produce?"
+			. ./myread
+			randbits="$ans"
+			seedfunc="s$randfunc"
+			drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
+			if set $seedfunc val -f; eval $csym; $val; then
+				echo "(Using $seedfunc() to seed random generator)"
+			else
+				echo "(Warning: no $seedfunc() to seed random generator)"
+				seedfunc=rand
+			fi
+			randseedtype=unsigned
+			;;
+		esac
+		;;
+	esac
+done
 
 echo " "
 echo "Determining whether or not we are on an EBCDIC system..." >&4
-$cat >tebcdic.c <tebcdic.c <<'EOM'
 int main()
 {
   if ('M'==0xd4) return 0;
   return 1;
 }
 EOM
+
 val=$undef
 set tebcdic
 if eval $compile_ok; then
@@ -9785,7 +12415,7 @@ if eval $compile_ok; then
 		echo "You have EBCDIC." >&4
 		val="$define"
 	else
-		echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
+		echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
 	fi
 else
 	echo "I'm unable to compile the test program." >&4
@@ -9795,32 +12425,295 @@ $rm -f tebcdic.c tebcdic
 set ebcdic
 eval $setvar
 
-: see what type file positions are declared as in the library
-rp="What is the type for file position used by fsetpos()?"
-set fpos_t fpostype long stdio.h sys/types.h
-eval $typedef_ask
-
-: get csh whereabouts
-case "$csh" in
-'csh') val="$undef" ;;
-*) val="$define" ;;
+echo " "
+$cat >&4 < try.c ;;
 esac
-set d_csh
-eval $setvar
-: Respect a hint or command line value for full_csh.
-case "$full_csh" in
-'') full_csh=$csh ;;
+$cat >>try.c <
+#$i_unistd I_UNISTD
+#ifdef I_UNISTD
+# include 
+#endif
+#$d_sysconf HAS_SYSCONF
+#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
+#ifdef HAS_STDIO_STREAM_ARRAY
+# define STDIO_STREAM_ARRAY $stdio_stream_array
+#endif
+int main() {
+  FILE* p = fopen("try.out", "w");
+#ifdef TRY_FPUTC
+  fputc('x', p);
+#else
+# ifdef TRY_FPRINTF
+  fprintf(p, "x");
+# endif
+#endif
+#ifdef TRY_FFLUSH_NULL
+  fflush(NULL);
+#endif
+#ifdef TRY_FFLUSH_ALL
+  {
+    long open_max = -1;
+# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
+    open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
+# else
+#  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
+    open_max = sysconf(_SC_OPEN_MAX);
+#  else
+#   ifdef FOPEN_MAX
+    open_max = FOPEN_MAX;
+#   else
+#    ifdef OPEN_MAX
+    open_max = OPEN_MAX;
+#    else
+#     ifdef _NFILE
+    open_max = _NFILE;
+#     endif
+#    endif
+#   endif
+#  endif
+# endif 
+# ifdef HAS_STDIO_STREAM_ARRAY
+    if (open_max > 0) {
+      long i;
+      for (i = 0; i < open_max; i++)
+	    if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
+		STDIO_STREAM_ARRAY[i]._file < open_max &&
+		STDIO_STREAM_ARRAY[i]._flag)
+		fflush(&STDIO_STREAM_ARRAY[i]);
+    }	
+  }
+# endif
+#endif
+  _exit(42);
+}
+EOCP
+: first we have to find out how _not_ to flush
+if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
+    output=''
+    set try -DTRY_FPUTC
+    if eval $compile; then
+	    $rm -f try.out
+ 	    ./try$exe_ext 2>/dev/null
+	    if $test ! -s try.out -a "X$?" = X42; then
+		output=-DTRY_FPUTC
+	    fi
+    fi
+    case "$output" in
+    '')
+	    set try -DTRY_FPRINTF
+	    $rm -f try.out
+	    if eval $compile; then
+		    $rm -f try.out
+ 		    ./try$exe_ext 2>/dev/null
+		    if $test ! -s try.out -a "X$?" = X42; then
+			output=-DTRY_FPRINTF
+		    fi
+	    fi
+	;;
+    esac
+fi
+: check for fflush NULL behaviour
+case "$fflushNULL" in
+'') 	set try -DTRY_FFLUSH_NULL $output
+	if eval $compile; then
+	        $rm -f try.out
+	    	./try$exe_ext 2>/dev/null
+		code="$?"
+		if $test -s try.out -a "X$code" = X42; then
+			fflushNULL="`$cat try.out`"
+		else
+			if $test "X$code" != X42; then
+				$cat >&4 <&4 <tryp.c <
+int
+main(int argc, char **argv)
+{
+    char buf[1024];
+    int i;
+    char *bp = buf;
+    while (1) {
+        while ((i = getc(stdin)) != -1
+               && (*bp++ = i) != '\n'
+               && bp < &buf[1024])
+    	/* DO NOTHING */ ;
+        *bp = '\0';
+        fprintf(stdout, "%s", buf);
+        fflush(NULL);
+        if (i == -1)
+	    return 0;
+        bp = buf;
+    }
+}
+EOCP
+                fflushNULL="$define"
+                set tryp
+                if eval $compile; then
+                    $rm -f tryp.out
+                    $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
+                    if cmp tryp.c tryp.out >/dev/null 2>&1; then
+                       $cat >&4 <&4 <&4 <&4 <tryp.c <
+int
+main(int argc, char **argv)
+{
+    char buf[1024];
+    int i;
+    char *bp = buf;
+    while (1) {
+	while ((i = getc(stdin)) != -1
+	       && (*bp++ = i) != '\n'
+	       && bp < &buf[1024])
+	/* DO NOTHING */ ;
+	*bp = '\0';
+	fprintf(stdout, "%s", buf);
+	fflush(stdin);
+	if (i == -1)
+	    return 0;
+	bp = buf;
+    }
+}
+EOCP
+	set tryp
+	if eval $compile; then
+	    $rm -f tryp.out
+	    $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
+	    if cmp tryp.c tryp.out >/dev/null 2>&1; then
+	       $cat >&4 <&4 </dev/null
+				if $test -s try.out -a "X$?" = X42; then
+					fflushall="`$cat try.out`"
+				fi
+			fi
+			$rm -f core try.core core.try.*
+			case "$fflushall" in
+			x)	$cat >&4 <&4 <&4 <&4 <&4 
+cat > try.c <
+#include 
+int main() {
+    printf("%d\n", (int)sizeof($gidtype));
+    exit(0);
+}
+EOCP
+set try
+if eval $compile_ok; then
+	yyy=`./try`
+	case "$yyy" in
+	'')	gidsize=4
+		echo "(I can't execute the test program--guessing $gidsize.)" >&4
+		;;
+	*)	gidsize=$yyy
+		echo "Your $zzz is $gidsize bytes long."
+		;;
+	esac
+else
+	gidsize=4
+	echo "(I can't compile the test program--guessing $gidsize.)" >&4
+fi
+
+
+echo " "
+case "$gidtype" in
+*_t) zzz="$gidtype"	;;
+*)   zzz="gid"		;;
+esac
+echo "Checking the sign of $zzz..." >&4 
+cat > try.c <
+#include 
+int main() {
+	$gidtype foo = -1;
+	if (foo < 0)
+		printf("-1\n");
+	else
+		printf("1\n");
+}
+EOCP
+set try
+if eval $compile; then
+	yyy=`./try`
+	case "$yyy" in
+	'')	gidsign=1
+		echo "(I can't execute the test program--guessing unsigned.)" >&4
+		;;
+	*)	gidsign=$yyy
+		case "$gidsign" in
+		 1) echo "Your $zzz is unsigned." ;;
+		-1) echo "Your $zzz is signed."   ;;
+		esac
+		;;
+	esac
+else
+	gidsign=1
+	echo "(I can't compile the test program--guessing unsigned.)" >&4
+fi
+
+
+echo " "
+
+if $test X"$quadtype" != X; then
+
+echo "Checking how to print 64-bit integers..." >&4
+
+if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+int main() {
+  int q = 12345678901;
+  printf("%ld\n", q);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		12345678901)
+			sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
+                	sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
+			echo "We will use %d."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+int main() {
+  long q = 12345678901;
+  printf("%ld\n", q);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		12345678901)
+			sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
+                	sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
+			echo "We will use %ld."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+#include 
+int main() {
+  int64_t q = 12345678901;
+  printf("%" PRId64 "\n", q);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		12345678901)
+			sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
+                	sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
+			echo "We will use the C9X style."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
+	$cat >try.c <<'EOCP'
+#include 
+#include 
+int main() {
+  long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
+  printf("%lld\n", q);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		12345678901)
+			sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
+                	sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
+			echo "We will use the %lld style."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRId64" = X -a X"$quadtype" != X; then
+	$cat >try.c <
+#include 
+int main() {
+  $quadtype q = 12345678901;
+  printf("%Ld\n", q);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		12345678901)
+			sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
+                	sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
+			echo "We will use %Ld."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRId64" = X -a X"$quadtype" != X; then
+	$cat >try.c <
+#include 
+int main() {
+  $quadtype q = 12345678901;
+  printf("%qd\n", q);
+}
+EOCP
+	set try
+	if eval $compile; then
+		yyy=`./try$exe_ext`
+		case "$yyy" in
+		12345678901)
+			sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
+                	sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
+			echo "We will use %qd."
+			;;
+		esac
+	fi
+fi
+
+if $test X"$sPRId64" = X; then
+	echo "Cannot figure out how to print 64-bit integers." >&4
+fi
+
+$rm -f try try.*
+
+fi
+
+case "$sPRId64" in
+'')	d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
+	d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
+	;;
+*)	d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
+	d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
+	;;
+esac
+
+
+echo " "
+$echo "Checking the format strings to be used for Perl's internal types..." >&4
+
+if $test X"$ivsize" = X8; then
+	ivdformat="$sPRId64"
+	uvuformat="$sPRIu64"
+	uvoformat="$sPRIo64"
+	uvxformat="$sPRIx64"
+else
+	if $test X"$ivsize" = X"$longsize"; then
+		ivdformat='"ld"'
+		uvuformat='"lu"'
+		uvoformat='"lo"'
+		uvxformat='"lx"'
+	else
+		if $test X"$ivsize" = X"$intsize"; then
+			ivdformat='"d"'
+			uvuformat='"u"'
+			uvoformat='"o"'
+			uvxformat='"x"'
+		else
+			: far out
+			if $test X"$ivsize" = X"$shortsize"; then
+				ivdformat='"hd"'
+				uvuformat='"hu"'
+				uvoformat='"ho"'
+				uvxformat='"hx"'
+			fi
+		fi
+	fi
+fi
+
+case "$ivdformat" in
+'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
+    exit 1
+    ;;
+esac
+
+
+echo " "
+$echo "Checking the format string to be used for gids..." >&4
+
+case "$gidsign" in
+-1)	if $test X"$gidsize" = X"$ivsize"; then
+		gidformat="$ivdformat"
+	else
+		if $test X"$gidsize" = X"$longsize"; then
+			gidformat='"ld"'
+		else
+			if $test X"$gidsize" = X"$intsize"; then
+				gidformat='"d"'
+			else
+				if $test X"$gidsize" = X"$shortsize"; then
+					gidformat='"hd"'
+				fi
+			fi
+		fi
+	fi
+	;;
+*)	if $test X"$gidsize" = X"$uvsize"; then
+		gidformat="$uvuformat"
+	else
+		if $test X"$gidsize" = X"$longsize"; then
+			gidformat='"lu"'
+		else
+			if $test X"$gidsize" = X"$intsize"; then
+				gidformat='"u"'
+			else
+				if $test X"$gidsize" = X"$shortsize"; then
+					gidformat='"hu"'
+				fi
+			fi
+		fi
+	fi
+	;;
+esac
+
 : see if getgroups exists
 set getgroups d_getgrps
 eval $inlibc
@@ -9874,11 +13069,6 @@ EOM
 *)  groupstype="$gidtype";;
 esac
 
-: see what type lseek is declared as in the kernel
-rp="What is the type used for lseek's offset on this system?"
-set off_t lseektype long stdio.h sys/types.h
-eval $typedef_ask
-
 echo " "
 echo "Checking if your $make program sets \$(MAKE)..." >&4
 case "$make_set_make" in
@@ -10107,11 +13297,20 @@ rp="What is the type of process ids on this system?"
 set pid_t pidtype int stdio.h sys/types.h
 eval $typedef_ask
 
+: Find earliest binary compatible site_perl subdirectory perl can use.
+case "$bincompat5005" in
+"$define") xs_apiversion='5.005' ;;
+*) xs_apiversion=$version ;;   # The current site_perl version.
+esac
+: Find earliest pure perl site_perl subdirectory perl can use.
+: The versioned directories started at 5.005.
+pm_apiversion='5.005'
+
 : check for length of pointer
 echo " "
 case "$ptrsize" in
 '')
-	$echo $n "Checking to see how big your pointers are...$c" >&4
+	echo "Checking to see how big your pointers are..." >&4
 	if test "$voidflags" -gt 7; then
 		echo '#define VOID_PTR char *' > try.c
 	else
@@ -10121,14 +13320,14 @@ case "$ptrsize" in
 #include 
 int main()
 {
-	printf("%d\n", sizeof(VOID_PTR));
-	exit(0);
+    printf("%d\n", (int)sizeof(VOID_PTR));
+    exit(0);
 }
 EOCP
 	set try
 	if eval $compile_ok; then
 		ptrsize=`./try`
-		$echo " $ptrsize bytes." >&4
+		echo "Your pointers are $ptrsize bytes long."
 	else
 		dflt='4'
 		echo "(I can't seem to compile the test program.  Guessing...)" >&4
@@ -10140,55 +13339,6 @@ EOCP
 esac
 $rm -f try.c try
 
-: check for size of random number generator
-echo " "
-case "$randbits" in
-'')
-	echo "Checking to see how many bits your rand function produces..." >&4
-	$cat >try.c <
-#ifdef I_UNISTD
-#  include 
-#endif
-#ifdef I_STDLIB
-#  include 
-#endif
-EOCP
-	$cat >>try.c <<'EOCP'
-int main()
-{
-	register int i;
-	register unsigned long tmp;
-	register unsigned long max = 0L;
-
-	for (i = 1000; i; i--) {
-		tmp = (unsigned long)rand();
-		if (tmp > max) max = tmp;
-	}
-	for (i = 0; max; i++)
-		max /= 2;
-	printf("%d\n",i);
-}
-EOCP
-	set try
-	if eval $compile_ok; then
-		dflt=`./try$_exe`
-	else
-		dflt='?'
-		echo "(I can't seem to compile the test program...)"
-	fi
-	;;
-*)
-	dflt="$randbits"
-	;;
-esac
-rp='How many bits does your rand() function produce?'
-. ./myread
-randbits="$ans"
-$rm -f try.* try
-
 : see if ar generates random libraries by itself
 echo " "
 echo "Checking how to generate random libraries on your machine..." >&4
@@ -10232,172 +13382,11 @@ else
 fi
 $rm -f foo* bar* 
 
-: see if sys/select.h has to be included
-set sys/select.h i_sysselct
-eval $inhdr
-
-: see if we should include time.h, sys/time.h, or both
-echo " "
-if test "X$timeincl" = X; then
-    echo "Testing to see if we should include ,  or both." >&4
-    $echo $n "I'm now running the test program...$c"
-    $cat >try.c <<'EOCP'
-#include 
-#ifdef I_TIME
-#include 
-#endif
-#ifdef I_SYSTIME
-#ifdef SYSTIMEKERNEL
-#define KERNEL
-#endif
-#include 
-#endif
-#ifdef I_SYSSELECT
-#include 
-#endif
-int main()
-{
-	struct tm foo;
-#ifdef S_TIMEVAL
-	struct timeval bar;
-#endif
-#ifdef S_TIMEZONE
-	struct timezone tzp;
-#endif
-	if (foo.tm_sec == foo.tm_sec)
-		exit(0);
-#ifdef S_TIMEVAL
-	if (bar.tv_sec == bar.tv_sec)
-		exit(0);
-#endif
-	exit(1);
-}
-EOCP
-    flags=''
-    for s_timezone in '-DS_TIMEZONE' ''; do
-    sysselect=''
-    for s_timeval in '-DS_TIMEVAL' ''; do
-    for i_systimek in '' '-DSYSTIMEKERNEL'; do
-    for i_time in '' '-DI_TIME'; do
-    for i_systime in '-DI_SYSTIME' ''; do
-	case "$flags" in
-	'') $echo $n ".$c"
-		set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
-		if eval $compile; then
-				set X $i_time $i_systime $i_systimek $sysselect $s_timeval
-			shift
-			flags="$*"
-			echo " "
-			$echo $n "Succeeded with $flags$c"
-		fi
-		;;
-	esac
-    done
-    done
-    done
-    done
-    done
-    timeincl=''
-    echo " "
-    case "$flags" in
-    *SYSTIMEKERNEL*) i_systimek="$define"
-	timeincl=`./findhdr sys/time.h`
-	echo "We'll include  with KERNEL defined." >&4;;
-    *) i_systimek="$undef";;
-    esac
-    case "$flags" in
-    *I_TIME*) i_time="$define"
-	timeincl=`./findhdr time.h`" $timeincl"
-	echo "We'll include ." >&4;;
-    *) i_time="$undef";;
-    esac
-    case "$flags" in
-    *I_SYSTIME*) i_systime="$define"
-	timeincl=`./findhdr sys/time.h`" $timeincl"
-	echo "We'll include ." >&4;;
-    *) i_systime="$undef";;
-    esac
-    $rm -f try.c try
-fi
-
-: check for fd_set items
-$cat <fd_set.c <
-#ifdef HAS_SOCKET
-#include  /* Might include  */
-#endif
-#ifdef I_SYS_TIME
-#include 
-#endif
-#ifdef I_SYS_SELECT
-#include 
-#endif
-int main() {
-	fd_set fds;
-
-#ifdef TRYBITS
-	if(fds.fds_bits);
-#endif
-
-#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
-	exit(0);
-#else
-	exit(1);
-#endif
-}
-EOCP
-set fd_set -DTRYBITS
-if eval $compile; then
-	d_fds_bits="$define"
-	d_fd_set="$define"
-	echo "Well, your system knows about the normal fd_set typedef..." >&4
-	if ./fd_set; then
-		echo "and you have the normal fd_set macros (just as I'd expect)." >&4
-		d_fd_macros="$define"
-	else
-		$cat >&4 <<'EOM'
-but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
-EOM
-		d_fd_macros="$undef"
-	fi
-else
-	$cat <<'EOM'
-Hmm, your compiler has some difficulty with fd_set.  Checking further...
-EOM
-	set fd_set
-	if eval $compile; then
-		d_fds_bits="$undef"
-		d_fd_set="$define"
-		echo "Well, your system has some sort of fd_set available..." >&4
-		if ./fd_set; then
-			echo "and you have the normal fd_set macros." >&4
-			d_fd_macros="$define"
-		else
-			$cat <<'EOM'
-but not the normal fd_set macros!  Gross!  More work for me...
-EOM
-			d_fd_macros="$undef"
-		fi
-	else
-	echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
-		d_fd_set="$undef"
-		d_fds_bits="$undef"
-		d_fd_macros="$undef"
-	fi
-fi
-$rm -f fd_set*
-
 : check for type of arguments to select. 
 case "$selecttype" in
 '') case "$d_select" in
 	$define)
+		echo " "
 		$cat <
 #endif
+#$d_socket HAS_SOCKET
+#ifdef HAS_SOCKET
+#   include  /* Might include  */
+#endif
 #include 
 $selecttype b;
 #define S sizeof(*(b))
@@ -10539,11 +13532,19 @@ esac
 
 : Trace out the files included by signal.h, then look for SIGxxx names.
 : Remove SIGARRAYSIZE used by HPUX.
+: Remove SIGSTKSIZE used by Linux.
+: Remove SIGSTKSZ used by Posix.
 : Remove SIGTYP void lines used by OS2.
-xxx=`echo '#include ' |
+: Some cpps, like os390, dont give the file name anywhere
+if [ "X$fieldn" = X ]; then
+	: Just make some guesses.  We check them later.
+	xxx='/usr/include/signal.h /usr/include/sys/signal.h'
+else
+	xxx=`echo '#include ' |
 	$cppstdin $cppminus $cppflags 2>/dev/null |
 	$grep '^[ 	]*#.*include' | 
 	$awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
+fi
 : Check this list of files to be sure we have parsed the cpp output ok.
 : This will also avoid potentially non-existent files, such 
 : as ../foo/bar.h
@@ -10556,17 +13557,19 @@ case "$xxxfiles" in
 '')	xxxfiles=`./findhdr signal.h` ;;
 esac
 xxx=`awk '
-$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
+$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
 	print substr($2, 4, 20)
 }
 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
 	print substr($3, 4, 20)
 }' $xxxfiles`
 : Append some common names just in case the awk scan failed.
-xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
-xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
-xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
-xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
+xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
+xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
+xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
+xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
+xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
+
 : generate a few handy files for later
 $cat > signal.c <<'EOCP'
 #include 
@@ -10639,7 +13642,7 @@ echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
 }
 END {
 	printf "#endif /* JUST_NSIG */\n";
-	printf "}\n";
+	printf "exit(0);\n}\n";
 }
 ' >>signal.c
 $cat >signal.awk <<'EOP'
@@ -10656,20 +13659,22 @@ $1 ~ /^NSIG$/ { nsig = $2 }
 	sig_name[$2] = $1
 	sig_num[$2] = $2
     }
-
 }
 END { 
-    if (nsig == 0) { nsig = maxsig + 1 }
-	for (n = 1; n < nsig; n++) {
-		if (sig_name[n]) {
-			printf("%s %d\n", sig_name[n], sig_num[n])
-		}
-		else {
-			printf("NUM%d %d\n", n, n) 
-		}
+    if (nsig == 0) {
+    	nsig = maxsig + 1
+    }
+    printf("NSIG %d\n", nsig);
+    for (n = 1; n < nsig; n++) {
+ 	if (sig_name[n]) {
+ 	    printf("%s %d\n", sig_name[n], sig_num[n])
 	}
+ 	else {
+ 	    printf("NUM%d %d\n", n, n) 
+ 	}
+    }
     for (n = 0; n < ndups; n++) {
-		printf("%s %d\n", dup_name[n], dup_num[n])
+ 	printf("%s %d\n", dup_name[n], dup_num[n])
     }
 }
 EOP
@@ -10735,7 +13740,8 @@ else
 	0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
 	esac
 	echo $@ | $tr ' ' $trnl | \
-		$awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
+ 	    $awk '{ printf "%s %d\n", $1, ++s; }
+ 		  END { printf "NSIG %d\n", ++s }' >signal.lst
 fi
 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
 EOS
@@ -10754,19 +13760,20 @@ case "$doinit" in
 yes)
 	echo "Generating a list of signal names and numbers..." >&4
 	. ./signal_cmd
-	sig_name=`$awk '{printf "%s ", $1}' signal.lst`
-	sig_name="ZERO $sig_name"
-	sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
-						{ printf "\"%s\", ", $1 }
-						END { printf "0\n" }' signal.lst`
-	sig_num=`$awk '{printf "%d ", $2}' signal.lst`
-	sig_num="0 $sig_num"
-	sig_num_init=`$awk 'BEGIN { printf "0, " }
-					{ printf "%d, ", $2}
-					END { printf "0\n"}' signal.lst`
+ 	sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
+ 	sig_name=`$awk 'BEGIN { printf "ZERO " }
+ 			!/^NSIG/ { printf "%s ", $1 }' signal.lst`
+ 	sig_num=`$awk  'BEGIN { printf "0 " }
+ 			!/^NSIG/ { printf "%d ", $2 }' signal.lst`
+ 	sig_name_init=`$awk 'BEGIN	{ printf "\"ZERO\", " }
+ 			     !/^NSIG/	{ printf "\"%s\", ", $1 }
+ 			     END	{ printf "0\n" }' signal.lst`
+ 	sig_num_init=`$awk  'BEGIN	{ printf "0, " }
+ 			     !/^NSIG/	{ printf "%d, ", $2}
+ 			     END	{ printf "0\n"}' signal.lst`
 	;;
 esac
-echo "The following signals are available:"
+echo "The following $sig_count signals are available:"
 echo " "
 echo $sig_name | $awk \
 'BEGIN { linelen = 0 }
@@ -10784,6 +13791,100 @@ echo $sig_name | $awk \
 }'
 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
 
+echo " "
+case "$sizetype" in
+*_t) zzz="$sizetype"	;;
+*)   zzz="filesize"	;;
+esac
+echo "Checking the size of $zzz..." >&4 
+cat > try.c <
+#include 
+int main() {
+    printf("%d\n", (int)sizeof($sizetype));
+    exit(0);
+}
+EOCP
+set try
+if eval $compile_ok; then
+	yyy=`./try`
+	case "$yyy" in
+	'')	sizesize=4
+		echo "(I can't execute the test program--guessing $sizesize.)" >&4
+		;;
+	*)	sizesize=$yyy
+		echo "Your $zzz size is $sizesize bytes."
+		;;
+	esac
+else
+	sizesize=4
+	echo "(I can't compile the test program--guessing $sizesize.)" >&4
+fi
+
+
+: check for socklen_t
+echo " "
+echo "Checking to see if you have socklen_t..." >&4
+$cat >try.c <
+#$d_socket HAS_SOCKET
+#ifdef HAS_SOCKET
+#include 
+#endif
+int main() { socklen_t x = 16; }
+EOCP
+set try
+if eval $compile; then
+	val="$define"
+	echo "You have socklen_t."
+else
+	val="$undef"
+	echo "You do not have socklen_t."
+	case "$sizetype" in
+	size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
+	esac
+fi
+$rm -f try try.*
+set d_socklen_t
+eval $setvar
+
+: check for type of the size argument to socket calls
+case "$d_socket" in
+"$define")
+	$cat <&4
-	val="$define"
-	rp="What is the type returned by time() on this system?"
-	set time_t timetype long stdio.h sys/types.h
-	eval $typedef_ask
+		echo 'time() found.' >&4
+		val="$define"
+		rp="What is the type returned by time() on this system?"
+		set time_t timetype long stdio.h sys/types.h
+		eval $typedef_ask
     else
-	echo 'time() not found, hope that will do.' >&4
-	val="$undef"
-	timetype='int';
+		echo 'time() not found, hope that will do.' >&4
+		val="$undef"
+		timetype='int';
     fi
     set d_time
     eval $setvar
@@ -10877,6 +13978,112 @@ uid_t)	echo "uid_t found." ;;
 	;;
 esac
 
+echo " "
+case "$uidtype" in
+*_t) zzz="$uidtype"	;;
+*)   zzz="uid"		;;
+esac
+echo "Checking the size of $zzz..." >&4 
+cat > try.c <
+#include 
+int main() {
+    printf("%d\n", (int)sizeof($uidtype));
+    exit(0);
+}
+EOCP
+set try
+if eval $compile_ok; then
+	yyy=`./try`
+	case "$yyy" in
+	'')	uidsize=4
+		echo "(I can't execute the test program--guessing $uidsize.)" >&4
+		;;
+	*)	uidsize=$yyy
+		echo "Your $zzz is $uidsize bytes long."
+		;;
+	esac
+else
+	uidsize=4
+	echo "(I can't compile the test program--guessing $uidsize.)" >&4
+fi
+
+echo " "
+case "$uidtype" in
+*_t) zzz="$uidtype"	;;
+*)   zzz="uid"		;;
+esac
+echo "Checking the sign of $zzz..." >&4
+cat > try.c <
+#include 
+int main() {
+	$uidtype foo = -1;
+	if (foo < 0)
+		printf("-1\n");
+	else
+		printf("1\n");
+}
+EOCP
+set try
+if eval $compile; then
+	yyy=`./try`
+	case "$yyy" in
+	'')	uidsign=1
+		echo "(I can't execute the test program--guessing unsigned.)" >&4
+		;;
+	*)	uidsign=$yyy
+		case "$uidsign" in
+		 1) echo "Your $zzz is unsigned." ;;
+		-1) echo "Your $zzz is signed."   ;;
+		esac
+		;;
+	esac
+else
+	uidsign=1
+	echo "(I can't compile the test program--guessing unsigned.)" >&4
+fi
+
+
+
+echo " "
+$echo "Checking the format string to be used for uids..." >&4
+
+case "$uidsign" in
+-1)	if $test X"$uidsize" = X"$ivsize"; then
+		uidformat="$ivdformat"
+	else
+		if $test X"$uidsize" = X"$longsize"; then
+			uidformat='"ld"'
+		else
+			if $test X"$uidsize" = X"$intsize"; then
+				uidformat='"d"'
+			else
+				if $test X"$uidsize" = X"$shortsize"; then
+					uidformat='"hd"'
+				fi
+			fi
+		fi
+	fi
+	;;
+*)	if $test X"$uidsize" = X"$uvsize"; then
+		uidformat="$uvuformat"
+	else
+		if $test X"$uidsize" = X"$longsize"; then
+			uidformat='"lu"'
+		else
+			if $test X"$uidsize" = X"$intsize"; then
+				uidformat='"u"'
+			else
+				if $test X"$uidsize" = X"$shortsize"; then
+					uidformat='"hu"'
+				fi
+			fi
+		fi
+	fi
+	;;
+esac
+
 : see if dbm.h is available
 : see if dbmclose exists
 set dbmclose d_dbmclose
@@ -10960,54 +14167,36 @@ esac
 set i_fcntl
 eval $setvar
 
-: see if this is an grp system
-set grp.h i_grp
+: see if this is a iconv.h system
+set iconv.h i_iconv
 eval $inhdr
 
-case "$i_grp" in
-$define)
-	: see if setgrent exists
-	set setgrent d_setgrent
-	eval $inlibc
-
-	: see if getgrent exists
-	set getgrent d_getgrent
-	eval $inlibc
-
-	: see if endgrent exists
-	set endgrent d_endgrent
-	eval $inlibc
-
-	xxx=`./findhdr grp.h`
-	$cppstdin $cppflags $cppminus < $xxx >$$.h
-
-	if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
-		val="$define"
-	else
-		val="$undef"
-	fi
-	set d_grpasswd
-	eval $setvar
-
-	$rm -f $$.h
-	;;
-*)	# Assume all is lost as far as the d_*gr* go.
-	val="$undef"; 
-	set d_setgrent; eval $setvar
-	set d_getgrent; eval $setvar
-	set d_endgrent; eval $setvar
-	set d_grpasswd; eval $setvar
-	;;
-esac
+: see if this is a ieeefp.h system
+set ieeefp.h i_ieeefp
+eval $inhdr
 
 : see if locale.h is available
 set locale.h i_locale
 eval $inhdr
 
+: see if mach cthreads are available
+if test "X$usethreads" = "X$define"; then
+	set mach/cthreads.h i_machcthr
+	eval $inhdr
+else
+	i_machcthr="$undef"
+fi
+
+
+
 : see if this is a math.h system
 set math.h i_math
 eval $inhdr
 
+: see if this is a mntent.h system
+set mntent.h i_mntent
+eval $inhdr
+
 : see if ndbm.h is available
 set ndbm.h t_ndbm
 eval $inhdr
@@ -11057,57 +14246,128 @@ esac
 set i_neterrno
 eval $setvar
 
-: get C preprocessor symbols handy
+: see if netinet/tcp.h is available
+set netinet/tcp.h i_netinettcp
+eval $inhdr
+
+: see if this is a poll.h system
+set poll.h i_poll
+eval $inhdr
+
 echo " "
-$echo $n "Hmm... $c"
-echo $al | $tr ' ' $trnl >Cppsym.know
-$cat <Cppsym
+$echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
+$cat <<'EOSH' > Cppsym.know
+a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
+AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
+alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
+ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
+BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
+BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
+bull c cadmus clipper CMU COFF COMPILER_VERSION
+concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
+CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
+Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
+FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
+GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
+H3050R H3050RX hbullx20 hcx host_mips
+hp200 hp300 hp700 HP700 hp800 hp9000
+hp9000s200 hp9000s300 hp9000s400 hp9000s500
+hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
+i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
+iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
+INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
+LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
+LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
+Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
+LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
+M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
+M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
+M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
+MATH_HAS_NO_SIDE_EFFECTS
+mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
+mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
+mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
+MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
+mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
+NetBSD news1500 news1700 news1800 news1900 news3700
+news700 news800 news900 NeXT NLS ns16000 ns32000
+ns32016 ns32332 ns32k nsc32000
+OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
+pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
+pc532 pdp11 PGC PIC plexus PORTAR posix
+POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
+POSIX_C_SOURCE POSIX_SOURCE POWER
+PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
+riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
+SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
+sony sony_news sonyrisc sparc sparclite spectrum
+stardent stdc STDC_EXT stratos sun sun3 sun386
+Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
+SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
+SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
+sysV68 sysV88 Tek4132 Tek4300 titan
+tower tower32 tower32_200 tower32_600 tower32_700
+tower32_800 tower32_850 tss
+u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
+ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
+unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
+Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
+XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
+XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
+z8000
+EOSH
+# Maybe put other stuff here too.
+cat <>Cppsym.know
+$osname
+EOSH
+./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
+./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
+$cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
+$rm -f Cppsym.a Cppsym.b
+cat < Cppsym
 $startsh
-case "\$1" in
--l) list=true
-	shift
-	;;
-esac
-unknown=''
-case "\$list\$#" in
-1|2)
-	for sym do
-		if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
-			exit 0
-		elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
-			:
-		else
-			unknown="\$unknown \$sym"
-		fi
-	done
-	set X \$unknown
-	shift
-	;;
-esac
-case \$# in
-0) exit 1;;
-esac
-echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
-#ifdef \1\\
-exit 0; _ _ _ _\1\\	 \1\\
-#endif\\
-/' >Cppsym\$\$
-echo "exit 1; _ _ _" >>Cppsym\$\$
-$cppstdin $cppminus Cppsym2\$\$
-case "\$list" in
-true) $awk 'NF > 5 {print substr(\$6,2,100)}'  Cppsym.got
+    if $test -s Cppsym.got; then
+        $rm -f Cppsym.got
+        exit 0
+    fi
+    $rm -f Cppsym.got
+    exit 1
+else
+    $tr " " "$trnl" | ./Cppsym.try
+    exit 0
+fi
+EOSH
 chmod +x Cppsym
 $eunicefix Cppsym
-./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
-
+cat < Cppsym.try
+$startsh
+cat <<'EOCP' > try.c
+#include 
+int main() {
+EOCP
+$awk \\
+EOSH
+cat <<'EOSH' >> Cppsym.try
+'length($1) > 0 {
+    printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
+    printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
+    printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
+    printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
+}'	 >> try.c
+echo '}' >> try.c
+EOSH
+cat <> Cppsym.try
+ccflags="$ccflags"
+case "$osname-$gccversion" in
+irix-) ccflags="\$ccflags -woff 1178" ;;
+esac
+$cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
+EOSH
+chmod +x Cppsym.try
+$eunicefix Cppsym.try
+./Cppsym < Cppsym.know > Cppsym.true
 : now check the C compiler for additional symbols
 postprocess_cc_v=''
 case "$osname" in
@@ -11127,7 +14387,7 @@ do
 done
 $rm -f try.c
 EOS
-unset postprocess_cc_v
+postprocess_cc_v=''
 chmod +x ccsym
 $eunicefix ccsym
 ./ccsym > ccsym1.raw
@@ -11139,15 +14399,16 @@ fi
 
 $awk '/\=/ { print $0; next }
 	{ print $0"=1" }' ccsym.raw >ccsym.list
-$awk '{ print $0"=1" }' Cppsym.true >ccsym.true
+$awk '/\=/ { print $0; next }
+	{ print $0"=1" }' Cppsym.true >ccsym.true
 $comm -13 ccsym.true ccsym.list >ccsym.own
 $comm -12 ccsym.true ccsym.list >ccsym.com
 $comm -23 ccsym.true ccsym.list >ccsym.cpp
 also=''
 if $test -z ccsym.raw; then
-	echo "Your C compiler doesn't seem to define any symbol!" >&4
+	echo "Your C compiler doesn't seem to define any symbols!" >&4
 	echo " "
-	echo "However, your C preprocessor defines the following ones:"
+	echo "However, your C preprocessor defines the following symbols:"
 	$cat Cppsym.true
     	ccsymbols=''
 	cppsymbols=`$cat Cppsym.true`
@@ -11159,27 +14420,27 @@ else
 		$sed -e 's/\(.*\)=.*/\1/' ccsym.com
 		also='also '
 		symbols='ones'
-		$test "$silent" || sleep 1
 		cppccsymbols=`$cat ccsym.com`
 		cppccsymbols=`echo $cppccsymbols`
+		$test "$silent" || sleep 1
 	fi
 	if $test -s ccsym.cpp; then
 		$test "$also" && echo " "
 		echo "Your C pre-processor ${also}defines the following symbols:"
 		$sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
 		also='further '
-		$test "$silent" || sleep 1
 		cppsymbols=`$cat ccsym.cpp`
 		cppsymbols=`echo $cppsymbols`
+		$test "$silent" || sleep 1
 	fi
 	if $test -s ccsym.own; then
 		$test "$also" && echo " "
 		echo "Your C compiler ${also}defines the following cpp symbols:"
 		$sed -e 's/\(.*\)=1/\1/' ccsym.own
 		$sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
-		$test "$silent" || sleep 1
 	        ccsymbols=`$cat ccsym.own`
 	        ccsymbols=`echo $ccsymbols`
+		$test "$silent" || sleep 1
 	fi
 fi
 $rm -f ccsym*
@@ -11239,6 +14500,14 @@ set i_termio; eval $setvar
 val=$val2; set i_sgtty; eval $setvar
 val=$val3; set i_termios; eval $setvar
 
+: see if this is a shadow.h system
+set shadow.h i_shadow
+eval $inhdr
+
+: see if this is a socks.h system
+set socks.h i_socks
+eval $inhdr
+
 : see if stdarg is available
 echo " "
 if $test `./findhdr stdarg.h`; then
@@ -11341,6 +14610,14 @@ $rm -f varargs*
 set stddef.h i_stddef
 eval $inhdr
 
+: see if this is a sunmath.h system
+set sunmath.h i_sunmath
+eval $inhdr
+
+: see if sys/access.h is available
+set sys/access.h i_sysaccess
+eval $inhdr
+
 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
 set sys/filio.h i_sysfilio
 eval $inhdr
@@ -11362,18 +14639,49 @@ fi
 set i_sysioctl
 eval $setvar
 
+
+: see if this is a syslog.h system
+set syslog.h i_syslog
+eval $inhdr
+
+
+: see if this is a sys/mode.h system
+set sys/mode.h i_sysmode
+eval $inhdr
+
 : see if sys/resource.h has to be included
 set sys/resource.h i_sysresrc
 eval $inhdr
 
+: see if sys/security.h is available
+set sys/security.h i_syssecrt
+eval $inhdr
+
+: see if this is a sys/statvfs.h system
+set sys/statvfs.h i_sysstatvfs
+eval $inhdr
+
+: see if this is a sys/uio.h system
+set sys/uio.h i_sysuio
+eval $inhdr
+
 : see if this is a sys/un.h system
 set sys/un.h i_sysun
 eval $inhdr
 
+
+: see if this is a sys/utsname.h system
+set sys/utsname.h i_sysutsname
+eval $inhdr
+
 : see if this is a syswait system
 set sys/wait.h i_syswait
 eval $inhdr
 
+: see if this is a ustat.h system
+set ustat.h i_ustat
+eval $inhdr
+
 : see if this is an utime system
 set utime.h i_utime
 eval $inhdr
@@ -11415,8 +14723,6 @@ eval $setvar
 
 echo " "
 echo "Looking for extensions..." >&4
-tdir=`pwd`
-cd $rsrc/ext
 : If we are using the old config.sh, known_extensions may contain
 : old or inaccurate or duplicate values.
 known_extensions=''
@@ -11425,30 +14731,35 @@ nonxs_extensions=''
 : We do not just use MANIFEST because the user may have dropped
 : some additional extensions into the source tree and expect them
 : to be built.
-for xxx in * ; do
-	case "$xxx" in
-	DynaLoader|dynaload) ;;
-	*)	if $test -f $xxx/$xxx.xs; then
-			known_extensions="$known_extensions $xxx"
-		elif $test -f $xxx/Makefile.PL; then
-			nonxs_extensions="$nonxs_extensions $xxx"
-		else
-			if $test -d $xxx; then
-				# Look for nested extensions, eg. Devel/Dprof.
-				cd $xxx
-				for yyy in * ; do
-				if $test -f $yyy/$yyy.xs; then
-					known_extensions="$known_extensions $xxx/$yyy"
-				elif $test -f $yyy/Makefile.PL; then
-					nonxs_extensions="$nonxs_extensions $xxx/$yyy"
-				fi
-				done
-				cd ..
-			fi
-		fi 
-		;;
-	esac
-done
+
+: Function to recursively find available extensions, ignoring DynaLoader
+: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
+find_extensions='
+    for xxx in *; do
+       case "$xxx" in
+           DynaLoader|dynaload) ;;
+           *)
+           if $test -f $xxx/$xxx.xs; then
+               known_extensions="$known_extensions $1$xxx";
+           elif $test -f $xxx/Makefile.PL; then
+               nonxs_extensions="$nonxs_extensions $1$xxx";
+           else
+               if $test -d $xxx -a $# -lt 10; then
+                   set $1$xxx/ $*;
+                   cd $xxx;
+                   eval $find_extensions;
+                   cd ..;
+                   shift;
+               fi;
+           fi
+           ;;
+       esac;
+    done'
+tdir=`pwd`
+cd $rsrc/ext
+set X
+shift
+eval $find_extensions
 set X $nonxs_extensions
 shift
 nonxs_extensions="$*"
@@ -11473,12 +14784,30 @@ for xxx in $known_extensions ; do
 		;;
 	NDBM_File|ndbm_fil)
 		case "$i_ndbm" in
-		$define) avail_ext="$avail_ext $xxx" ;;
+		$define)
+		    case "$osname-$use64bitint" in
+		    hpux-define)
+			case "$libs" in
+			*-lndbm*) avail_ext="$avail_ext $xxx" ;;
+			esac
+			;;
+		    *) avail_ext="$avail_ext $xxx" ;;
+		    esac
+		    ;;
 		esac
 		;;
 	ODBM_File|odbm_fil) 
 		case "${i_dbm}${i_rpcsvcdbm}" in
-		*"${define}"*) avail_ext="$avail_ext $xxx" ;;
+		*"${define}"*)
+		    case "$osname-$use64bitint" in
+		    hpux-define)
+			case "$libs" in
+			*-ldbm*) avail_ext="$avail_ext $xxx" ;;
+			esac
+			;;
+		    *) avail_ext="$avail_ext $xxx" ;;
+		    esac
+		    ;;
 		esac
 		;;
 	POSIX|posix)
@@ -11685,9 +15014,8 @@ case "$d_portable" in
 	echo " "
 	echo "Stripping down executable paths..." >&4
 	for file in $loclist $trylist; do
-		if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
-			eval $file="\$file"
-		fi
+		eval temp=\$$file
+		eval $file=`basename $temp`
 	done
 	;;
 esac
@@ -11728,16 +15056,21 @@ afs='$afs'
 alignbytes='$alignbytes'
 ansi2knr='$ansi2knr'
 aphostname='$aphostname'
-apiversion='$apiversion'
+api_revision='$api_revision'
+api_subversion='$api_subversion'
+api_version='$api_version'
+api_versionstring='$api_versionstring'
 ar='$ar'
 archlib='$archlib'
 archlibexp='$archlibexp'
+archname64='$archname64'
 archname='$archname'
 archobjs='$archobjs'
 awk='$awk'
 baserev='$baserev'
 bash='$bash'
 bin='$bin'
+bincompat5005='$bincompat5005'
 binexp='$binexp'
 bison='$bison'
 byacc='$byacc'
@@ -11753,6 +15086,7 @@ ccsymbols='$ccsymbols'
 cf_by='$cf_by'
 cf_email='$cf_email'
 cf_time='$cf_time'
+charsize='$charsize'
 chgrp='$chgrp'
 chmod='$chmod'
 chown='$chown'
@@ -11764,22 +15098,39 @@ cp='$cp'
 cpio='$cpio'
 cpp='$cpp'
 cpp_stuff='$cpp_stuff'
+cppccsymbols='$cppccsymbols'
 cppflags='$cppflags'
 cpplast='$cpplast'
 cppminus='$cppminus'
 cpprun='$cpprun'
 cppstdin='$cppstdin'
 cppsymbols='$cppsymbols'
-cppccsymbols='$cppccsymbols'
+crosscompile='$crosscompile'
 cryptlib='$cryptlib'
 csh='$csh'
 d_Gconvert='$d_Gconvert'
+d_PRIEldbl='$d_PRIEldbl'
+d_PRIFldbl='$d_PRIFldbl'
+d_PRIGldbl='$d_PRIGldbl'
+d_PRIX64='$d_PRIX64'
+d_PRId64='$d_PRId64'
+d_PRIeldbl='$d_PRIeldbl'
+d_PRIfldbl='$d_PRIfldbl'
+d_PRIgldbl='$d_PRIgldbl'
+d_PRIi64='$d_PRIi64'
+d_PRIo64='$d_PRIo64'
+d_PRIu64='$d_PRIu64'
+d_PRIx64='$d_PRIx64'
 d_access='$d_access'
+d_accessx='$d_accessx'
 d_alarm='$d_alarm'
 d_archlib='$d_archlib'
+d_atolf='$d_atolf'
+d_atoll='$d_atoll'
 d_attribut='$d_attribut'
 d_bcmp='$d_bcmp'
 d_bcopy='$d_bcopy'
+d_bincompat5005='$d_bincompat5005'
 d_bsd='$d_bsd'
 d_bsdgetpgrp='$d_bsdgetpgrp'
 d_bsdsetpgrp='$d_bsdsetpgrp'
@@ -11802,13 +15153,16 @@ d_dlerror='$d_dlerror'
 d_dlopen='$d_dlopen'
 d_dlsymun='$d_dlsymun'
 d_dosuid='$d_dosuid'
+d_drand48proto='$d_drand48proto'
 d_dup2='$d_dup2'
+d_eaccess='$d_eaccess'
 d_endgrent='$d_endgrent'
 d_endhent='$d_endhent'
 d_endnent='$d_endnent'
 d_endpent='$d_endpent'
 d_endpwent='$d_endpwent'
 d_endsent='$d_endsent'
+d_endspent='$d_endspent'
 d_eofnblk='$d_eofnblk'
 d_eunice='$d_eunice'
 d_fchmod='$d_fchmod'
@@ -11822,13 +15176,16 @@ d_flexfnam='$d_flexfnam'
 d_flock='$d_flock'
 d_fork='$d_fork'
 d_fpathconf='$d_fpathconf'
+d_fpos64_t='$d_fpos64_t'
+d_fs_data_s='$d_fs_data_s'
+d_fseeko='$d_fseeko'
 d_fsetpos='$d_fsetpos'
 d_fstatfs='$d_fstatfs'
-d_statfsflags='$d_statfsflags'
 d_fstatvfs='$d_fstatvfs'
-d_getmntent='$d_getmntent'
-d_hasmntopt='$d_hasmntopt'
+d_ftello='$d_ftello'
 d_ftime='$d_ftime'
+d_getcwd='$d_getcwd'
+d_getfsstat='$d_getfsstat'
 d_getgrent='$d_getgrent'
 d_getgrps='$d_getgrps'
 d_gethbyaddr='$d_gethbyaddr'
@@ -11837,6 +15194,8 @@ d_gethent='$d_gethent'
 d_gethname='$d_gethname'
 d_gethostprotos='$d_gethostprotos'
 d_getlogin='$d_getlogin'
+d_getmnt='$d_getmnt'
+d_getmntent='$d_getmntent'
 d_getnbyaddr='$d_getnbyaddr'
 d_getnbyname='$d_getnbyname'
 d_getnent='$d_getnent'
@@ -11855,38 +15214,62 @@ d_getsbyname='$d_getsbyname'
 d_getsbyport='$d_getsbyport'
 d_getsent='$d_getsent'
 d_getservprotos='$d_getservprotos'
+d_getspent='$d_getspent'
+d_getspnam='$d_getspnam'
 d_gettimeod='$d_gettimeod'
 d_gnulibc='$d_gnulibc'
 d_grpasswd='$d_grpasswd'
+d_hasmntopt='$d_hasmntopt'
 d_htonl='$d_htonl'
+d_iconv='$d_iconv'
 d_index='$d_index'
 d_inetaton='$d_inetaton'
+d_int64_t='$d_int64_t'
 d_isascii='$d_isascii'
 d_killpg='$d_killpg'
 d_lchown='$d_lchown'
+d_ldbl_dig='$d_ldbl_dig'
 d_link='$d_link'
 d_locconv='$d_locconv'
 d_lockf='$d_lockf'
 d_longdbl='$d_longdbl'
 d_longlong='$d_longlong'
+d_lseekproto='$d_lseekproto'
 d_lstat='$d_lstat'
+d_madvise='$d_madvise'
 d_mblen='$d_mblen'
 d_mbstowcs='$d_mbstowcs'
 d_mbtowc='$d_mbtowc'
+d_memchr='$d_memchr'
 d_memcmp='$d_memcmp'
 d_memcpy='$d_memcpy'
 d_memmove='$d_memmove'
 d_memset='$d_memset'
 d_mkdir='$d_mkdir'
+d_mkdtemp='$d_mkdtemp'
 d_mkfifo='$d_mkfifo'
+d_mkstemp='$d_mkstemp'
+d_mkstemps='$d_mkstemps'
 d_mktime='$d_mktime'
+d_mmap='$d_mmap'
+d_mprotect='$d_mprotect'
 d_msg='$d_msg'
+d_msg_ctrunc='$d_msg_ctrunc'
+d_msg_dontroute='$d_msg_dontroute'
+d_msg_oob='$d_msg_oob'
+d_msg_peek='$d_msg_peek'
+d_msg_proxy='$d_msg_proxy'
 d_msgctl='$d_msgctl'
 d_msgget='$d_msgget'
 d_msgrcv='$d_msgrcv'
 d_msgsnd='$d_msgsnd'
+d_msync='$d_msync'
+d_munmap='$d_munmap'
 d_mymalloc='$d_mymalloc'
 d_nice='$d_nice'
+d_nv_preserves_uv='$d_nv_preserves_uv'
+d_off64_t='$d_off64_t'
+d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
 d_oldpthreads='$d_oldpthreads'
 d_oldsock='$d_oldsock'
 d_open3='$d_open3'
@@ -11897,15 +15280,16 @@ d_pipe='$d_pipe'
 d_poll='$d_poll'
 d_portable='$d_portable'
 d_pthread_yield='$d_pthread_yield'
-d_pthreads_created_joinable='$d_pthreads_created_joinable'
 d_pwage='$d_pwage'
 d_pwchange='$d_pwchange'
 d_pwclass='$d_pwclass'
 d_pwcomment='$d_pwcomment'
 d_pwexpire='$d_pwexpire'
 d_pwgecos='$d_pwgecos'
-d_pwquota='$d_pwquota'
 d_pwpasswd='$d_pwpasswd'
+d_pwquota='$d_pwquota'
+d_qgcvt='$d_qgcvt'
+d_quad='$d_quad'
 d_readdir='$d_readdir'
 d_readlink='$d_readlink'
 d_rename='$d_rename'
@@ -11915,6 +15299,7 @@ d_safebcpy='$d_safebcpy'
 d_safemcpy='$d_safemcpy'
 d_sanemcmp='$d_sanemcmp'
 d_sched_yield='$d_sched_yield'
+d_scm_rights='$d_scm_rights'
 d_seekdir='$d_seekdir'
 d_select='$d_select'
 d_sem='$d_sem'
@@ -11945,6 +15330,7 @@ d_setrgid='$d_setrgid'
 d_setruid='$d_setruid'
 d_setsent='$d_setsent'
 d_setsid='$d_setsid'
+d_setspent='$d_setspent'
 d_setvbuf='$d_setvbuf'
 d_sfio='$d_sfio'
 d_shm='$d_shm'
@@ -11956,10 +15342,16 @@ d_shmget='$d_shmget'
 d_sigaction='$d_sigaction'
 d_sigsetjmp='$d_sigsetjmp'
 d_socket='$d_socket'
+d_socklen_t='$d_socklen_t'
 d_sockpair='$d_sockpair'
+d_sqrtl='$d_sqrtl'
 d_statblks='$d_statblks'
+d_statfs_f_flags='$d_statfs_f_flags'
+d_statfs_s='$d_statfs_s'
+d_statvfs='$d_statvfs'
 d_stdio_cnt_lval='$d_stdio_cnt_lval'
 d_stdio_ptr_lval='$d_stdio_ptr_lval'
+d_stdio_stream_array='$d_stdio_stream_array'
 d_stdiobase='$d_stdiobase'
 d_stdstdio='$d_stdstdio'
 d_strchr='$d_strchr'
@@ -11969,7 +15361,11 @@ d_strerrm='$d_strerrm'
 d_strerror='$d_strerror'
 d_strtod='$d_strtod'
 d_strtol='$d_strtol'
+d_strtold='$d_strtold'
+d_strtoll='$d_strtoll'
 d_strtoul='$d_strtoul'
+d_strtoull='$d_strtoull'
+d_strtouq='$d_strtouq'
 d_strxfrm='$d_strxfrm'
 d_suidsafe='$d_suidsafe'
 d_symlink='$d_symlink'
@@ -11981,6 +15377,7 @@ d_system='$d_system'
 d_tcgetpgrp='$d_tcgetpgrp'
 d_tcsetpgrp='$d_tcsetpgrp'
 d_telldir='$d_telldir'
+d_telldirproto='$d_telldirproto'
 d_time='$d_time'
 d_times='$d_times'
 d_truncate='$d_truncate'
@@ -11988,6 +15385,10 @@ d_tzname='$d_tzname'
 d_umask='$d_umask'
 d_uname='$d_uname'
 d_union_semun='$d_union_semun'
+d_ustat='$d_ustat'
+d_vendorarch='$d_vendorarch'
+d_vendorbin='$d_vendorbin'
+d_vendorlib='$d_vendorlib'
 d_vfork='$d_vfork'
 d_void_closedir='$d_void_closedir'
 d_voidsig='$d_voidsig'
@@ -12007,6 +15408,7 @@ direntrytype='$direntrytype'
 dlext='$dlext'
 dlsrc='$dlsrc'
 doublesize='$doublesize'
+drand01='$drand01'
 dynamic_ext='$dynamic_ext'
 eagain='$eagain'
 ebcdic='$ebcdic'
@@ -12017,15 +15419,21 @@ eunicefix='$eunicefix'
 exe_ext='$exe_ext'
 expr='$expr'
 extensions='$extensions'
+fflushNULL='$fflushNULL'
+fflushall='$fflushall'
 find='$find'
 firstmakefile='$firstmakefile'
 flex='$flex'
+fpossize='$fpossize'
 fpostype='$fpostype'
 freetype='$freetype'
 full_ar='$full_ar'
 full_csh='$full_csh'
 full_sed='$full_sed'
 gccversion='$gccversion'
+gidformat='$gidformat'
+gidsign='$gidsign'
+gidsize='$gidsize'
 gidtype='$gidtype'
 glibpth='$glibpth'
 grep='$grep'
@@ -12037,6 +15445,14 @@ h_sysfile='$h_sysfile'
 hint='$hint'
 hostcat='$hostcat'
 huge='$huge'
+i16size='$i16size'
+i16type='$i16type'
+i32size='$i32size'
+i32type='$i32type'
+i64size='$i64size'
+i64type='$i64type'
+i8size='$i8size'
+i8type='$i8type'
 i_arpainet='$i_arpainet'
 i_bsdioctl='$i_bsdioctl'
 i_db='$i_db'
@@ -12048,79 +15464,114 @@ i_fcntl='$i_fcntl'
 i_float='$i_float'
 i_gdbm='$i_gdbm'
 i_grp='$i_grp'
+i_iconv='$i_iconv'
+i_ieeefp='$i_ieeefp'
+i_inttypes='$i_inttypes'
 i_limits='$i_limits'
 i_locale='$i_locale'
+i_machcthr='$i_machcthr'
 i_malloc='$i_malloc'
-i_machcthreads='$i_machcthreads'
 i_math='$i_math'
 i_memory='$i_memory'
 i_mntent='$i_mntent'
 i_ndbm='$i_ndbm'
 i_netdb='$i_netdb'
 i_neterrno='$i_neterrno'
+i_netinettcp='$i_netinettcp'
 i_niin='$i_niin'
-i_pwd='$i_pwd'
+i_poll='$i_poll'
 i_pthread='$i_pthread'
+i_pwd='$i_pwd'
 i_rpcsvcdbm='$i_rpcsvcdbm'
 i_sfio='$i_sfio'
 i_sgtty='$i_sgtty'
+i_shadow='$i_shadow'
+i_socks='$i_socks'
 i_stdarg='$i_stdarg'
 i_stddef='$i_stddef'
 i_stdlib='$i_stdlib'
 i_string='$i_string'
+i_sunmath='$i_sunmath'
+i_sysaccess='$i_sysaccess'
 i_sysdir='$i_sysdir'
 i_sysfile='$i_sysfile'
 i_sysfilio='$i_sysfilio'
 i_sysin='$i_sysin'
 i_sysioctl='$i_sysioctl'
+i_syslog='$i_syslog'
+i_sysmman='$i_sysmman'
+i_sysmode='$i_sysmode'
 i_sysmount='$i_sysmount'
 i_sysndir='$i_sysndir'
 i_sysparam='$i_sysparam'
 i_sysresrc='$i_sysresrc'
+i_syssecrt='$i_syssecrt'
 i_sysselct='$i_sysselct'
 i_syssockio='$i_syssockio'
 i_sysstat='$i_sysstat'
+i_sysstatfs='$i_sysstatfs'
 i_sysstatvfs='$i_sysstatvfs'
 i_systime='$i_systime'
 i_systimek='$i_systimek'
 i_systimes='$i_systimes'
 i_systypes='$i_systypes'
+i_sysuio='$i_sysuio'
 i_sysun='$i_sysun'
+i_sysutsname='$i_sysutsname'
+i_sysvfs='$i_sysvfs'
 i_syswait='$i_syswait'
 i_termio='$i_termio'
 i_termios='$i_termios'
 i_time='$i_time'
 i_unistd='$i_unistd'
+i_ustat='$i_ustat'
 i_utime='$i_utime'
 i_values='$i_values'
 i_varargs='$i_varargs'
 i_varhdr='$i_varhdr'
 i_vfork='$i_vfork'
 ignore_versioned_solibs='$ignore_versioned_solibs'
+inc_version_list='$inc_version_list'
+inc_version_list_init='$inc_version_list_init'
 incpath='$incpath'
 inews='$inews'
 installarchlib='$installarchlib'
 installbin='$installbin'
 installman1dir='$installman1dir'
 installman3dir='$installman3dir'
+installprefix='$installprefix'
+installprefixexp='$installprefixexp'
 installprivlib='$installprivlib'
 installscript='$installscript'
 installsitearch='$installsitearch'
+installsitebin='$installsitebin'
 installsitelib='$installsitelib'
+installstyle='$installstyle'
 installusrbinperl='$installusrbinperl'
+installvendorarch='$installvendorarch'
+installvendorbin='$installvendorbin'
+installvendorlib='$installvendorlib'
 intsize='$intsize'
+ivdformat='$ivdformat'
+ivsize='$ivsize'
+ivtype='$ivtype'
 known_extensions='$known_extensions'
 ksh='$ksh'
 large='$large'
 ld='$ld'
 lddlflags='$lddlflags'
 ldflags='$ldflags'
+ldlibpthname='$ldlibpthname'
 less='$less'
 lib_ext='$lib_ext'
 libc='$libc'
 libperl='$libperl'
 libpth='$libpth'
 libs='$libs'
+libsdirs='$libsdirs'
+libsfiles='$libsfiles'
+libsfound='$libsfound'
+libspath='$libspath'
 libswanted='$libswanted'
 line='$line'
 lint='$lint'
@@ -12135,6 +15586,7 @@ longsize='$longsize'
 lp='$lp'
 lpr='$lpr'
 ls='$ls'
+lseeksize='$lseeksize'
 lseektype='$lseektype'
 mail='$mail'
 mailx='$mailx'
@@ -12150,12 +15602,13 @@ man3dir='$man3dir'
 man3direxp='$man3direxp'
 man3ext='$man3ext'
 medium='$medium'
-mips='$mips'
 mips_type='$mips_type'
 mkdir='$mkdir'
+mmaptype='$mmaptype'
 models='$models'
 modetype='$modetype'
 more='$more'
+multiarch='$multiarch'
 mv='$mv'
 myarchname='$myarchname'
 mydomain='$mydomain'
@@ -12171,8 +15624,11 @@ nm_opt='$nm_opt'
 nm_so_opt='$nm_so_opt'
 nonxs_ext='$nonxs_ext'
 nroff='$nroff'
+nvsize='$nvsize'
+nvtype='$nvtype'
 o_nonblock='$o_nonblock'
 obj_ext='$obj_ext'
+old_pthread_create_joinable='$old_pthread_create_joinable'
 optimize='$optimize'
 orderlib='$orderlib'
 osname='$osname'
@@ -12182,6 +15638,7 @@ pager='$pager'
 passcat='$passcat'
 patchlevel='$patchlevel'
 path_sep='$path_sep'
+perl5='$perl5'
 perl='$perl'
 perladmin='$perladmin'
 perlpath='$perlpath'
@@ -12189,6 +15646,7 @@ pg='$pg'
 phostname='$phostname'
 pidtype='$pidtype'
 plibpth='$plibpth'
+pm_apiversion='$pm_apiversion'
 pmake='$pmake'
 pr='$pr'
 prefix='$prefix'
@@ -12197,15 +15655,34 @@ privlib='$privlib'
 privlibexp='$privlibexp'
 prototype='$prototype'
 ptrsize='$ptrsize'
+quadkind='$quadkind'
+quadtype='$quadtype'
 randbits='$randbits'
+randfunc='$randfunc'
+randseedtype='$randseedtype'
 ranlib='$ranlib'
 rd_nodata='$rd_nodata'
+revision='$revision'
 rm='$rm'
 rmail='$rmail'
 runnm='$runnm'
+sPRIEldbl='$sPRIEldbl'
+sPRIFldbl='$sPRIFldbl'
+sPRIGldbl='$sPRIGldbl'
+sPRIX64='$sPRIX64'
+sPRId64='$sPRId64'
+sPRIeldbl='$sPRIeldbl'
+sPRIfldbl='$sPRIfldbl'
+sPRIgldbl='$sPRIgldbl'
+sPRIi64='$sPRIi64'
+sPRIo64='$sPRIo64'
+sPRIu64='$sPRIu64'
+sPRIx64='$sPRIx64'
+sched_yield='$sched_yield'
 scriptdir='$scriptdir'
 scriptdirexp='$scriptdirexp'
 sed='$sed'
+seedfunc='$seedfunc'
 selectminbits='$selectminbits'
 selecttype='$selecttype'
 sendmail='$sendmail'
@@ -12216,6 +15693,7 @@ shmattype='$shmattype'
 shortsize='$shortsize'
 shrpenv='$shrpenv'
 shsharp='$shsharp'
+sig_count='$sig_count'
 sig_name='$sig_name'
 sig_name_init='$sig_name_init'
 sig_num='$sig_num'
@@ -12223,8 +15701,14 @@ sig_num_init='$sig_num_init'
 signal_t='$signal_t'
 sitearch='$sitearch'
 sitearchexp='$sitearchexp'
+sitebin='$sitebin'
+sitebinexp='$sitebinexp'
 sitelib='$sitelib'
+sitelib_stem='$sitelib_stem'
 sitelibexp='$sitelibexp'
+siteprefix='$siteprefix'
+siteprefixexp='$siteprefixexp'
+sizesize='$sizesize'
 sizetype='$sizetype'
 sleep='$sleep'
 smail='$smail'
@@ -12232,6 +15716,7 @@ small='$small'
 so='$so'
 sockethdr='$sockethdr'
 socketlib='$socketlib'
+socksizetype='$socksizetype'
 sort='$sort'
 spackage='$spackage'
 spitshell='$spitshell'
@@ -12247,6 +15732,7 @@ stdio_bufsiz='$stdio_bufsiz'
 stdio_cnt='$stdio_cnt'
 stdio_filbuf='$stdio_filbuf'
 stdio_ptr='$stdio_ptr'
+stdio_stream_array='$stdio_stream_array'
 strings='$strings'
 submit='$submit'
 subversion='$subversion'
@@ -12262,10 +15748,30 @@ touch='$touch'
 tr='$tr'
 trnl='$trnl'
 troff='$troff'
+u16size='$u16size'
+u16type='$u16type'
+u32size='$u32size'
+u32type='$u32type'
+u64size='$u64size'
+u64type='$u64type'
+u8size='$u8size'
+u8type='$u8type'
+uidformat='$uidformat'
+uidsign='$uidsign'
+uidsize='$uidsize'
 uidtype='$uidtype'
 uname='$uname'
 uniq='$uniq'
+uquadtype='$uquadtype'
+use5005threads='$use5005threads'
+use64bitall='$use64bitall'
+use64bitint='$use64bitint'
 usedl='$usedl'
+useithreads='$useithreads'
+uselargefiles='$uselargefiles'
+uselongdouble='$uselongdouble'
+usemorebits='$usemorebits'
+usemultiplicity='$usemultiplicity'
 usemymalloc='$usemymalloc'
 usenm='$usenm'
 useopcode='$useopcode'
@@ -12273,14 +15779,31 @@ useperlio='$useperlio'
 useposix='$useposix'
 usesfio='$usesfio'
 useshrplib='$useshrplib'
+usesocks='$usesocks'
 usethreads='$usethreads'
+usevendorprefix='$usevendorprefix'
 usevfork='$usevfork'
 usrinc='$usrinc'
 uuname='$uuname'
+uvoformat='$uvoformat'
+uvsize='$uvsize'
+uvtype='$uvtype'
+uvuformat='$uvuformat'
+uvxformat='$uvxformat'
+vendorarch='$vendorarch'
+vendorarchexp='$vendorarchexp'
+vendorbin='$vendorbin'
+vendorbinexp='$vendorbinexp'
+vendorlib='$vendorlib'
+vendorlib_stem='$vendorlib_stem'
+vendorlibexp='$vendorlibexp'
+vendorprefix='$vendorprefix'
+vendorprefixexp='$vendorprefixexp'
 version='$version'
 vi='$vi'
 voidflags='$voidflags'
 xlibpth='$xlibpth'
+xs_apiversion='$xs_apiversion'
 zcat='$zcat'
 zip='$zip'
 EOT
@@ -12290,8 +15813,8 @@ $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
 
 : add special variables
 $test -f $src/patchlevel.h && \
-awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
-echo "CONFIG=true" >>config.sh
+awk '/^#define[ 	]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
+echo "CONFIGDOTSH=true" >>config.sh
 
 : propagate old symbols
 if $test -f UU/config.sh; then
@@ -12360,26 +15883,26 @@ if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
 	*)
 		$cat < makedepend.out &"
+Now you need to generate make dependencies by running "$make depend".
+You might prefer to run it in background: "$make depend > makedepend.out &"
 It can take a while, so you might not want to run it right now.
 
 EOM
 		;;
 	esac
-	rp="Run make depend now?"
+	rp="Run $make depend now?"
 	. UU/myread
 	case "$ans" in
 	y*)
-		make depend && echo "Now you must run a make."
+		$make depend && echo "Now you must run a $make."
 		;;
 	*)
-		echo "You must run 'make depend' then 'make'."
+		echo "You must run '$make depend' then '$make'."
 		;;
 	esac
 elif test -f [Mm]akefile; then
 	echo " "
-	echo "Now you must run a make."
+	echo "Now you must run a $make."
 else
 	echo "Done."
 fi
diff --git a/contrib/perl5/EXTERN.h b/contrib/perl5/EXTERN.h
index 66aeb9f65212..897fae63b078 100644
--- a/contrib/perl5/EXTERN.h
+++ b/contrib/perl5/EXTERN.h
@@ -1,6 +1,6 @@
 /*    EXTERN.h
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -27,7 +27,7 @@
 #  define EXTCONST globalref
 #  define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
 #else
-#  if defined(WIN32) && !defined(PERL_STATIC_SYMS) && !defined(__GNUC__) && !defined(PERL_OBJECT)
+#  if defined(WIN32) && !defined(PERL_STATIC_SYMS) && !defined(PERL_OBJECT)
 #    ifdef PERLDLL
 #      define EXT extern __declspec(dllexport)
 #      define dEXT 
@@ -40,10 +40,17 @@
 #      define dEXTCONST const
 #    endif
 #  else
-#    define EXT extern
-#    define dEXT
-#    define EXTCONST extern const
-#    define dEXTCONST const
+#    if defined(__CYGWIN__) && defined(USEIMPORTLIB)
+#      define EXT extern __declspec(dllimport)
+#      define dEXT 
+#      define EXTCONST extern __declspec(dllimport) const
+#      define dEXTCONST const
+#    else
+#      define EXT extern
+#      define dEXT
+#      define EXTCONST extern const
+#      define dEXTCONST const
+#    endif
 #  endif
 #endif
 
diff --git a/contrib/perl5/INSTALL b/contrib/perl5/INSTALL
index c5e04cb4c573..552c8702013b 100644
--- a/contrib/perl5/INSTALL
+++ b/contrib/perl5/INSTALL
@@ -4,10 +4,15 @@ Install - Build and Installation guide for perl5.
 
 =head1 SYNOPSIS
 
-The basic steps to build and install perl5 on a Unix system are:
+First, make sure you are installing an up-to-date version of Perl.   If
+you didn't get your Perl source from CPAN, check the latest version at
+.
+
+The basic steps to build and install perl5 on a Unix system
+with all the defaults are:
 
 	rm -f config.sh Policy.sh
-	sh Configure
+	sh Configure -de
 	make
 	make test
 	make install
@@ -19,9 +24,21 @@ The basic steps to build and install perl5 on a Unix system are:
 
 Each of these is explained in further detail below.
 
+The above commands will install Perl to /usr/local or /opt, depending
+on the platform.  If that's not okay with you, use
+
+	rm -f config.sh Policy.sh
+	sh Configure
+	make
+	make test
+	make install
+
 For information on non-Unix systems, see the section on
 L<"Porting information"> below.
 
+If you have problems, corrections, or questions, please see
+L<"Reporting Problems"> below.
+
 For information on what's new in this release, see the
 pod/perldelta.pod file.  For more detailed information about specific
 changes, see the Changes file.
@@ -37,7 +54,8 @@ by lines beginning with '='.  The other mark-up used is
     C	literal code
     L     A link (cross reference) to name
 
-You should probably at least skim through this entire document before
+Although most of the defaults are probably fine for most users,
+you should probably at least skim through this entire document before
 proceeding.
 
 If you're building Perl on a non-Unix system, you should also read
@@ -46,34 +64,63 @@ provide additional or different instructions for building Perl.
 
 If there is a hint file for your system (in the hints/ directory) you
 should also read that hint file for specific information for your
-system.  (Unixware users should use the svr4.sh hint file.)
+system.  (Unixware users should use the svr4.sh hint file.)  If
+there is a README file for your platform, then you should read
+that too.  Additional information is in the Porting/ directory.
 
-=head1 WARNING:  This version is not binary compatible with Perl 5.004.
+=head1 WARNING:  This version requires an extra step to build old extensions.
 
-Starting with Perl 5.004_50 there were many deep and far-reaching changes
-to the language internals.  If you have dynamically loaded extensions
-that you built under perl 5.003 or 5.004, you can continue to use them
-with 5.004, but you will need to rebuild and reinstall those extensions
-to use them 5.005.  See the discussions below on
+5.005_53 and later releases do not export unadorned
+global symbols anymore.  This means you may need to build older
+extensions that have not been updated for the new naming convention
+with:
+
+	perl Makefile.PL POLLUTE=1
+	
+Alternatively, you can enable CPP symbol pollution wholesale by
+building perl itself with:
+
+	sh Configure -Accflags=-DPERL_POLLUTE
+
+pod/perldelta.pod contains more details about this.
+
+=head1 WARNING:  This version may not be binary compatible with Perl 5.005.
+
+Using the default Configure options for building perl should get you
+a perl that will be binary compatible with the 5.005 release.
+
+However, if you run Configure with any custom options, such as
+-Dusethreads, -Dusemultiplicity, -Dusemymalloc, -Ubincompat5005 etc.,
+the resulting perl will not be binary compatible.  Under these
+circumstances, if you have dynamically loaded extensions that were
+built under perl 5.005, you will need to rebuild and reinstall all
+those extensions to use them with 5.6.
+
+Pure perl modules without XS or C code should continue to work fine
+without reinstallation.  See the discussions below on
 L<"Coexistence with earlier versions of perl5"> and
-L<"Upgrading from 5.004 to 5.005"> for more details.
+L<"Upgrading from 5.005 to 5.6"> for more details.
 
 The standard extensions supplied with Perl will be handled automatically.
 
-In a related issue, old extensions may possibly be affected by the
+On a related issue, old modules may possibly be affected by the
 changes in the Perl language in the current release.  Please see
-pod/perldelta.pod for a description of what's changed.
+pod/perldelta.pod (and pod/perl500Xdelta.pod) for a description of
+what's changed.  See your installed copy of the perllocal.pod
+file for a (possibly incomplete) list of locally installed modules.
+Also see CPAN::autobundle for one way to make a "bundle" of your
+currently installed modules.
 
 =head1 WARNING:  This version requires a compiler that supports ANSI C.
 
 If you find that your C compiler is not ANSI-capable, try obtaining
 GCC, available from GNU mirrors worldwide (e.g. ftp://ftp.gnu.org/pub/gnu).
-Another alternative may be to use a tool like C to convert the
+Another alternative may be to use a tool like ansi2knr to convert the
 sources back to K&R style, but there is no guarantee this route will get
 you anywhere, since the prototypes are not the only ANSI features used
-in the Perl sources.  C is usually found as part of the freely
-available C distribution.  Another similar tool is
-C, distributed with GCC.  Since C requires GCC to
+in the Perl sources.  ansi2knr is usually found as part of the freely
+available Ghostscript distribution.  Another similar tool is
+unprotoize, distributed with GCC.  Since unprotoize requires GCC to
 run, you may have to run it on a platform where GCC is available, and move
 the sources back to the platform without GCC.
 
@@ -81,12 +128,15 @@ If you succeed in automatically converting the sources to a K&R compatible
 form, be sure to email perlbug@perl.com to let us know the steps you
 followed.  This will enable us to officially support this option.
 
+Although Perl can be compiled using a C++ compiler, the Configure script
+does not work with some C++ compilers.
+
 =head1 Space Requirements
 
-The complete perl5 source tree takes up about 10 MB of disk space.  The
-complete tree after completing make takes roughly 20 MB, though the
-actual total is likely to be quite system-dependent.  The installation
-directories need something on the order of 10 MB, though again that
+The complete perl5 source tree takes up about 20 MB of disk space.
+After completing make, it takes up roughly 30 MB, though the actual
+total is likely to be quite system-dependent.  The installation
+directories need something on the order of 20 MB, though again that
 value is system-dependent.
 
 =head1 Start with a Fresh Distribution
@@ -107,9 +157,9 @@ The results of a Configure run are stored in the config.sh and Policy.sh
 files.  If you are upgrading from a previous version of perl, or if you
 change systems or compilers or make other significant changes, or if
 you are experiencing difficulties building perl, you should probably
-not re-use your old config.sh.  Simply remove it or rename it, e.g.
+not re-use your old config.sh.  Simply remove it
 
-	mv config.sh config.sh.old
+	rm -f config.sh
 
 If you wish to use your old config.sh, be especially attentive to the
 version and architecture-specific questions and answers.  For example,
@@ -121,76 +171,120 @@ probably check and correct for this, but it doesn't, presently.
 Similarly, if you used a shared libperl.so (see below) with version
 numbers, you will probably want to adjust them as well.
 
-Also, be careful to check your architecture name.  Some Linux systems
-(such as Debian) use i386, while others may use i486, i586, or i686.
-If you pick up a precompiled binary, it might not use the same name.
+Also, be careful to check your architecture name.  For example, some
+Linux distributions use i386, while others may use i486.  If you build
+it yourself, Configure uses the output of the arch command, which
+might be i586 or i686 instead.  If you pick up a precompiled binary, or
+compile extensions on different systems, they might not all agree on
+the architecture name.
 
 In short, if you wish to use your old config.sh, I recommend running
 Configure interactively rather than blindly accepting the defaults.
 
-If your reason to reuse your old config.sh is to save your
-particular installation choices, then you can probably achieve the
-same effect by using the new Policy.sh file.  See the section on
-L<"Site-wide Policy settings"> below.
+If your reason to reuse your old config.sh is to save your particular
+installation choices, then you can probably achieve the same effect by
+using the Policy.sh file.  See the section on L<"Site-wide Policy
+settings"> below.  If you wish to start with a fresh distribution, you
+also need to remove any old Policy.sh files you may have with
+
+	rm -f Policy.sh
 
 =head1 Run Configure
 
 Configure will figure out various things about your system.  Some
 things Configure will figure out for itself, other things it will ask
-you about.  To accept the default, just press RETURN.   The default
-is almost always okay.  At any Configure prompt, you can type  &-d
-and Configure will use the defaults from then on.
+you about.  To accept the default, just press RETURN.   The default is
+almost always okay.  It is normal for some things to be "NOT found",
+since Configure often searches for many different ways of performing
+the same function.
+
+At any Configure prompt, you can type  &-d and Configure will use the
+defaults from then on.
 
 After it runs, Configure will perform variable substitution on all the
 *.SH files and offer to run make depend.
 
+=head2 Altering config.sh variables for C compiler switches etc.
+
+For most users, all of the Configure defaults are fine.  Configure
+also has several convenient options which are all described below.
+However, if Configure doesn't have an option to do what you want,
+you can change Configure variables after the platform hints have been
+run, by using Configure's -A switch.  For example, here's how to add
+a couple of extra flags to C compiler invocations:
+
+	sh Configure -Accflags="-DPERL_Y2KWARN -DPERL_POLLUTE_MALLOC"
+
+For more help on Configure switches, run:
+
+	sh Configure -h
+
+=head2 Common Configure options
+
 Configure supports a number of useful options.  Run B to
 get a listing.  See the Porting/Glossary file for a complete list of
 Configure variables you can set and their definitions.
 
-To compile with gcc, for example, you should run
+=over 4
+
+=item gcc
+
+To compile with gcc you should run
 
 	sh Configure -Dcc=gcc
 
 This is the preferred way to specify gcc (or another alternative
 compiler) so that the hints files can set appropriate defaults.
 
-If you want to use your old config.sh but override some of the items
-with command line options, you need to use B.
+=item Installation prefix
 
 By default, for most systems, perl will be installed in
-/usr/local/{bin, lib, man}.  You can specify a different 'prefix' for
-the default installation directory, when Configure prompts you or by
-using the Configure command line option -Dprefix='/some/directory',
-e.g.
+/usr/local/{bin, lib, man}.  (See L<"Installation Directories">
+and L<"Coexistence with earlier versions of perl5"> below for
+further details.)
+
+You can specify a different 'prefix' for the default installation
+directory, when Configure prompts you or by using the Configure command
+line option -Dprefix='/some/directory', e.g.
 
 	sh Configure -Dprefix=/opt/perl
 
-If your prefix contains the string "perl", then the directories
-are simplified.  For example, if you use prefix=/opt/perl,
-then Configure will suggest /opt/perl/lib instead of
-/opt/perl/lib/perl5/.
+If your prefix contains the string "perl", then the suggested
+directory structure is simplified.  For example, if you use
+prefix=/opt/perl, then Configure will suggest /opt/perl/lib instead of
+/opt/perl/lib/perl5/.  Again, see L<"Installation Directories"> below
+for more details.
 
-NOTE:  You must not specify an installation directory that is below
-your perl source directory.  If you do, installperl will attempt
-infinite recursion.
+NOTE:  You must not specify an installation directory that is the same
+as or below your perl source directory.  If you do, installperl will
+attempt infinite recursion.
 
-It may seem obvious to say, but Perl is useful only when users can
-easily find it.  It's often a good idea to have both /usr/bin/perl and
+=item /usr/bin/perl
+
+It may seem obvious, but Perl is useful only when users can easily
+find it.  It's often a good idea to have both /usr/bin/perl and
 /usr/local/bin/perl be symlinks to the actual binary.  Be especially
-careful, however, of overwriting a version of perl supplied by your
-vendor.  In any case, system administrators are strongly encouraged to
+careful, however, not to overwrite a version of perl supplied by your
+vendor unless you are sure you know what you are doing.
+
+By default, Configure will arrange for /usr/bin/perl to be linked to
+the current version of perl.  You can turn off that behavior by running
+
+	Configure -Uinstallusrbinperl
+
+or by answering 'no' to the appropriate Configure prompt.
+
+In any case, system administrators are strongly encouraged to
 put (symlinks to) perl and its accompanying utilities, such as perldoc,
 into a directory typically found along a user's PATH, or in another
 obvious and convenient place.
 
-You can use "Configure -Uinstallusrbinperl" which causes installperl
-to skip installing perl also as /usr/bin/perl.
+=item Overriding an old config.sh
 
-By default, Configure will compile perl to use dynamic loading if
-your system supports it.  If you want to force perl to be compiled
-statically, you can either choose this when Configure prompts you or
-you can use the Configure command line option -Uusedl.
+If you want to use your old config.sh but override some of the items
+with command line options, you need to use B.
+
+=back
 
 If you are willing to accept all the defaults, and you want terse
 output, you can run
@@ -215,236 +309,217 @@ options.  Try
 
 for a listing.
 
-Cross compiling is not supported.
+Cross compiling and compiling in a different directory are not supported.
 
 (The file is called configure.gnu to avoid problems on systems
 that would not distinguish the files "Configure" and "configure".)
 
-=head2 Extensions
-
-By default, Configure will offer to build every extension which appears
-to be supported.  For example, Configure will offer to build GDBM_File
-only if it is able to find the gdbm library.  (See examples below.)
-B, DynaLoader, Fcntl, IO, and attrs are always built by default.
-Configure does not contain code to test for POSIX compliance, so POSIX
-is always built by default as well.  If you wish to skip POSIX, you can
-set the Configure variable useposix=false either in a hint file or from
-the Configure command line.  Similarly, the Opcode extension is always
-built by default, but you can skip it by setting the Configure variable
-useopcode=false either in a hint file for from the command line.
-
-You can learn more about each of these extensions by consulting the
-documentation in the individual .pm modules, located under the
-ext/ subdirectory.
-
-Even if you do not have dynamic loading, you must still build the
-DynaLoader extension; you should just build the stub dl_none.xs
-version.  (Configure will suggest this as the default.)
-
-In summary, here are the Configure command-line variables you can set
-to turn off each extension:
-
-    B			(Always included by default)
-    DB_File		i_db
-    DynaLoader		(Must always be included as a static extension)
-    Fcntl		(Always included by default)
-    GDBM_File		i_gdbm
-    IO			(Always included by default)
-    NDBM_File		i_ndbm
-    ODBM_File		i_dbm
-    POSIX		useposix
-    SDBM_File		(Always included by default)
-    Opcode		useopcode
-    Socket		d_socket
-    Threads		usethreads
-    attrs		(Always included by default)
-
-Thus to skip the NDBM_File extension, you can use
-
-	sh Configure -Ui_ndbm
-
-Again, this is taken care of automatically if you don't have the ndbm
-library.
-
-Of course, you may always run Configure interactively and select only
-the extensions you want.
-
-Note:  The DB_File module will only work with version 1.x of Berkeley
-DB or newer releases of version 2.  Configure will automatically detect
-this for you and refuse to try to build DB_File with version 2.
-
-If you re-use your old config.sh but change your system (e.g. by
-adding libgdbm) Configure will still offer your old choices of extensions
-for the default answer, but it will also point out the discrepancy to
-you.
-
-Finally, if you have dynamic loading (most modern Unix systems do)
-remember that these extensions do not increase the size of your perl
-executable, nor do they impact start-up time, so you probably might as
-well build all the ones that will work on your system.
-
-=head2 Including locally-installed libraries
-
-Perl5 comes with interfaces to number of database extensions, including
-dbm, ndbm, gdbm, and Berkeley db.  For each extension, if
-Configure can find the appropriate header files and libraries, it will
-automatically include that extension.  The gdbm and db libraries
-are not included with perl.  See the library documentation for
-how to obtain the libraries.
-
-Note:  If your database header (.h) files are not in a
-directory normally searched by your C compiler, then you will need to
-include the appropriate -I/your/directory option when prompted by
-Configure.  If your database library (.a) files are not in a directory
-normally searched by your C compiler and linker, then you will need to
-include the appropriate -L/your/directory option when prompted by
-Configure.  See the examples below.
-
-=head2 Examples
-
-=over 4
-
-=item gdbm in /usr/local
-
-Suppose you have gdbm and want Configure to find it and build the
-GDBM_File extension.  This examples assumes you have gdbm.h
-installed in /usr/local/include/gdbm.h and libgdbm.a installed in
-/usr/local/lib/libgdbm.a.  Configure should figure all the
-necessary steps out automatically.
-
-Specifically, when Configure prompts you for flags for
-your C compiler, you should include  -I/usr/local/include.
-
-When Configure prompts you for linker flags, you should include
--L/usr/local/lib.
-
-If you are using dynamic loading, then when Configure prompts you for
-linker flags for dynamic loading, you should again include
--L/usr/local/lib.
-
-Again, this should all happen automatically.  If you want to accept the
-defaults for all the questions and have Configure print out only terse
-messages, then you can just run
-
-	sh Configure -des
-
-and Configure should include the GDBM_File extension automatically.
-
-This should actually work if you have gdbm installed in any of
-(/usr/local, /opt/local, /usr/gnu, /opt/gnu, /usr/GNU, or /opt/GNU).
-
-=item gdbm in /usr/you
-
-Suppose you have gdbm installed in some place other than /usr/local/,
-but you still want Configure to find it.  To be specific, assume you
-have /usr/you/include/gdbm.h and /usr/you/lib/libgdbm.a.  You
-still have to add -I/usr/you/include to cc flags, but you have to take
-an extra step to help Configure find libgdbm.a.  Specifically, when
-Configure prompts you for library directories, you have to add
-/usr/you/lib to the list.
-
-It is possible to specify this from the command line too (all on one
-line):
-
-	sh Configure -des \
-		-Dlocincpth="/usr/you/include" \
-		-Dloclibpth="/usr/you/lib"
-
-locincpth is a space-separated list of include directories to search.
-Configure will automatically add the appropriate -I directives.
-
-loclibpth is a space-separated list of library directories to search.
-Configure will automatically add the appropriate -L directives.  If
-you have some libraries under /usr/local/ and others under
-/usr/you, then you have to include both, namely
-
-	sh Configure -des \
-		-Dlocincpth="/usr/you/include /usr/local/include" \
-		-Dloclibpth="/usr/you/lib /usr/local/lib"
-
-=back
-
 =head2 Installation Directories
 
 The installation directories can all be changed by answering the
 appropriate questions in Configure.  For convenience, all the
 installation questions are near the beginning of Configure.
+Further, there are a number of additions to the installation
+directories since 5.005, so reusing your old config.sh may not
+be sufficient to put everything where you want it.
 
 I highly recommend running Configure interactively to be sure it puts
 everything where you want it.  At any point during the Configure
-process, you can answer a question with  &-d  and Configure
-will use the defaults from then on.
+process, you can answer a question with  &-d  and Configure will use
+the defaults from then on.
 
-By default, Configure will use the following directories for library files
-for 5.005 (archname is a string like sun4-sunos, determined by Configure).
+The defaults are intended to be reasonable and sensible for most
+people building from sources.  Those who build and distribute binary
+distributions or who export perl to a range of systems will probably
+need to alter them.  If you are content to just accept the defaults,
+you can safely skip the next section.
 
-    Configure variable		Default value
-	$archlib 	/usr/local/lib/perl5/5.005/archname
-	$privlib	/usr/local/lib/perl5/5.005
-	$sitearch	/usr/local/lib/perl5/site_perl/5.005/archname
-	$sitelib	/usr/local/lib/perl5/site_perl/5.005
+The directories set up by Configure fall into three broad categories.
 
-Some users prefer to append a "/share" to $privlib and $sitelib
-to emphasize that those directories can be shared among different
-architectures.
+=over 4
 
-By default, Configure will use the following directories for manual pages:
+=item Directories for the perl distribution
 
-    Configure variable		Default value
-	$man1dir	/usr/local/man/man1
-	$man3dir	/usr/local/lib/perl5/man/man3
+By default, Configure will use the following directories for 5.6.0.
+$version is the full perl version number, including subversion, e.g.
+5.6.0 or 5.6.1, and $archname is a string like sun4-sunos,
+determined by Configure.  The full definitions of all Configure
+variables are in the file Porting/Glossary.
 
-(Actually, Configure recognizes the SVR3-style
+    Configure variable	Default value
+    $prefix		/usr/local
+    $bin		$prefix/bin
+    $scriptdir		$prefix/bin
+    $privlib		$prefix/lib/perl5/$version
+    $archlib 		$prefix/lib/perl5/$version/$archname
+    $man1dir		$prefix/man/man1
+    $man3dir		$prefix/man/man3
+    $html1dir		(none)
+    $html3dir		(none)
+
+Actually, Configure recognizes the SVR3-style
 /usr/local/man/l_man/man1 directories, if present, and uses those
-instead.)
+instead.  Also, if $prefix contains the string "perl", the library
+directories are simplified as described below.  For simplicity, only
+the common style is shown here.
 
-The module man pages are stuck in that strange spot so that
-they don't collide with other man pages stored in /usr/local/man/man3,
-and so that Perl's man pages don't hide system man pages.  On some
-systems, B would end up calling up Perl's less.pm module man
-page, rather than the less program.  (This default location will likely
-change to /usr/local/man/man3 in a future release of perl.)
+=item Directories for site-specific add-on files
 
-Note:  Many users prefer to store the module man pages in
-/usr/local/man/man3.  You can do this from the command line with
+After perl is installed, you may later wish to add modules (e.g. from
+CPAN) or scripts.  Configure will set up the following directories to
+be used for installing those add-on modules and scripts.
 
-	sh Configure -Dman3dir=/usr/local/man/man3
+    Configure variable	Default value
+    $siteprefix		$prefix
+    $sitebin		$siteprefix/bin
+    $sitescript		$siteprefix/bin
+    $sitelib		$siteprefix/lib/perl5/site_perl/$version
+    $sitearch		$siteprefix/lib/perl5/site_perl/$version/$archname
+    $siteman1		$siteprefix/man/man1
+    $siteman3		$siteprefix/man/man3
+    $sitehtml1		(none)
+    $sitehtml3		(none)
+
+By default, ExtUtils::MakeMaker will install architecture-independent
+modules into $sitelib and architecture-dependent modules into $sitearch.
+
+NOTE:  As of 5.6.0, ExtUtils::MakeMaker will use $sitelib and $sitearch,
+but will not use the other site-specific directories.  Volunteers to
+fix this are needed.
+
+=item Directories for vendor-supplied add-on files
+
+Lastly, if you are building a binary distribution of perl for
+distribution, Configure can optionally set up the following directories
+for you to use to distribute add-on modules.
+
+    Configure variable	Default value
+    $vendorprefix	(none)
+    (The next ones are set only if vendorprefix is set.)
+    $vendorbin		$vendorprefix/bin
+    $vendorscript	$vendorprefix/bin
+    $vendorlib		$vendorprefix/lib/perl5/vendor_perl/$version
+    $vendorarch		$vendorprefix/lib/perl5/vendor_perl/$version/$archname
+    $vendorman1		$vendorprefix/man/man1
+    $vendorman3		$vendorprefix/man/man3
+    $vendorhtml1	(none)
+    $vendorhtml3	(none)
+
+These are normally empty, but may be set as needed.  For example,
+a vendor might choose the following settings:
+
+	$prefix		/usr/bin
+	$siteprefix	/usr/local/bin
+	$vendorprefix	/usr/bin
+
+This would have the effect of setting the following:
+
+	$bin		/usr/bin
+	$scriptdir	/usr/bin
+	$privlib	/usr/lib/perl5/$version
+	$archlib 	/usr/lib/perl5/$version/$archname
+	$man1dir	/usr/man/man1
+	$man3dir	/usr/man/man3
+
+	$sitebin	/usr/local/bin
+	$sitescript	/usr/local/bin
+	$sitelib	/usr/local/lib/perl5/site_perl/$version
+	$sitearch	/usr/local/lib/perl5/site_perl/$version/$archname
+	$siteman1	/usr/local/man/man1
+	$siteman3	/usr/local/man/man3
+
+	$vendorbin	/usr/bin
+	$vendorscript	/usr/bin
+	$vendorlib	/usr/lib/perl5/vendor_perl/$version
+	$vendorarch	/usr/lib/perl5/vendor_perl/$version/$archname
+	$vendorman1	/usr/man/man1
+	$vendorman3	/usr/man/man3
+
+Note how in this example, the vendor-supplied directories are in the
+/usr hierarchy, while the directories reserved for the end-user are in
+the /usr/local hierarchy.
+
+NOTE:  As of 5.6.0, ExtUtils::MakeMaker does not use these directories.
+Volunteers to fix this are needed.
+
+The entire installed library hierarchy is installed in locations with
+version numbers, keeping the installations of different versions distinct.
+However, later installations of Perl can still be configured to search the
+installed libraries corresponding to compatible earlier versions.
+See L<"Coexistence with earlier versions of perl5"> below for more details
+on how Perl can be made to search older version directories.
+
+Of course you may use these directories however you see fit.  For
+example, you may wish to use $siteprefix for site-specific files that
+are stored locally on your own disk and use $vendorprefix for
+site-specific files that are stored elsewhere on your organization's
+network.  One way to do that would be something like
+
+	sh Configure -Dsiteprefix=/usr/local -Dvendorprefix=/usr/share/perl
+
+=item otherlibdirs
+
+As a final catch-all, Configure also offers an $otherlibdirs
+variable.  This variable contains a colon-separated list of additional
+directories to add to @INC.  By default, it will be set to
+$prefix/site_perl if Configure detects that you have 5.004-era modules
+installed there.  However, you can set it to anything you like.
+
+=item Man Pages
+
+In versions 5.005_57 and earlier, the default was to store module man
+pages in a version-specific directory, such as
+/usr/local/lib/perl5/$version/man/man3.  The default for 5.005_58 and
+after is /usr/local/man/man3 so that most users can find the man pages
+without resetting MANPATH.
+
+You can continue to use the old default from the command line with
+
+	sh Configure -Dman3dir=/usr/local/lib/perl5/5.6.0/man/man3
 
 Some users also prefer to use a .3pm suffix.  You can do that with
 
 	sh Configure -Dman3ext=3pm
 
-If you specify a prefix that contains the string "perl", then the
-directory structure is simplified.  For example, if you Configure with
--Dprefix=/opt/perl, then the defaults for 5.005 are
+Again, these are just the defaults, and can be changed as you run
+Configure.
 
-    Configure variable		Default value
-	$archlib	/opt/perl/lib/5.005/archname
-	$privlib	/opt/perl/lib/5.005
-	$sitearch	/opt/perl/lib/site_perl/5.005/archname
-	$sitelib	/opt/perl/lib/site_perl/5.005
+=item HTML pages
 
-	$man1dir	/opt/perl/man/man1
-	$man3dir	/opt/perl/man/man3
+As of perl5.005_57, the standard perl installation does not do
+anything with HTML documentation, but that may change in the future.
+Further, some add-on modules may wish to install HTML documents.  The
+html Configure variables listed above are provided if you wish to
+specify where such documents should be placed.  The default is "none",
+but will likely eventually change to something useful based on user
+feedback.
 
-The perl executable will search the libraries in the order given
-above.
+=back
 
-The directories under site_perl are empty, but are intended to be used
-for installing local or site-wide extensions.  Perl will automatically
-look in these directories.
+Some users prefer to append a "/share" to $privlib and $sitelib
+to emphasize that those directories can be shared among different
+architectures.
 
-In order to support using things like #!/usr/local/bin/perl5.005 after
-a later version is released, architecture-dependent libraries are
-stored in a version-specific directory, such as
-/usr/local/lib/perl5/archname/5.005/.
+Note that these are just the defaults.  You can actually structure the
+directories any way you like.  They don't even have to be on the same
+filesystem.
 
 Further details about the installation directories, maintenance and
 development subversions, and about supporting multiple versions are
 discussed in L<"Coexistence with earlier versions of perl5"> below.
 
-Again, these are just the defaults, and can be changed as you run
-Configure.
+If you specify a prefix that contains the string "perl", then the
+library directory structure is slightly simplified.  Instead of
+suggesting $prefix/lib/perl5/, Configure will suggest $prefix/lib.
+
+Thus, for example, if you Configure with
+-Dprefix=/opt/perl, then the default library directories for 5.6.0 are
+
+    Configure variable	Default value
+	$privlib	/opt/perl/lib/5.6.0
+	$archlib	/opt/perl/lib/5.6.0/$archname
+	$sitelib	/opt/perl/lib/site_perl/5.6.0
+	$sitearch	/opt/perl/lib/site_perl/5.6.0/$archname
 
 =head2 Changing the installation directory
 
@@ -453,38 +528,22 @@ associated files) should be installed and the directory in which it
 will eventually reside.  For most sites, these two are the same; for
 sites that use AFS, this distinction is handled automatically.
 However, sites that use software such as depot to manage software
-packages may also wish to install perl into a different directory and
-use that management software to move perl to its final destination.
-This section describes how to do this.  Someday, Configure may support
-an option -Dinstallprefix=/foo to simplify this.
+packages, or users building binary packages for distribution may also
+wish to install perl into a different directory and use that
+management software to move perl to its final destination.  This
+section describes how to do that.
 
 Suppose you want to install perl under the /tmp/perl5 directory.  You
-can edit config.sh and change all the install* variables to point to
-/tmp/perl5 instead of /usr/local/wherever.  Or, you can automate this
-process by placing the following lines in a file config.over before you
-run Configure (replace /tmp/perl5 by a directory of your choice):
+could edit config.sh and change all the install* variables to point to
+/tmp/perl5 instead of /usr/local, or you could simply use the
+following command line:
 
-    installprefix=/tmp/perl5
-    test -d $installprefix || mkdir $installprefix
-    test -d $installprefix/bin || mkdir $installprefix/bin
-    installarchlib=`echo $installarchlib | sed "s!$prefix!$installprefix!"`
-    installbin=`echo $installbin | sed "s!$prefix!$installprefix!"`
-    installman1dir=`echo $installman1dir | sed "s!$prefix!$installprefix!"`
-    installman3dir=`echo $installman3dir | sed "s!$prefix!$installprefix!"`
-    installprivlib=`echo $installprivlib | sed "s!$prefix!$installprefix!"`
-    installscript=`echo $installscript | sed "s!$prefix!$installprefix!"`
-    installsitelib=`echo $installsitelib | sed "s!$prefix!$installprefix!"`
-    installsitearch=`echo $installsitearch | sed "s!$prefix!$installprefix!"`
+	sh Configure -Dinstallprefix=/tmp/perl5
 
-Then, you can Configure and install in the usual way:
-
-    sh Configure -des
-    make
-    make test
-    make install
+(replace /tmp/perl5 by a directory of your choice).
 
 Beware, though, that if you go to try to install new add-on
-extensions, they too will get installed in under '/tmp/perl5' if you
+modules, they too will get installed in under '/tmp/perl5' if you
 follow this example.  The next section shows one way of dealing with
 that problem.
 
@@ -496,9 +555,9 @@ installed on multiple systems.  Suppose, for example, that you want to
 create an archive that can be installed in /opt/perl.
 Here's one way to do that:
 
-    # Set up config.over to install perl into a different directory,
+    # Set up to install perl into a different directory,
     # e.g. /tmp/perl5 (see previous part).
-    sh Configure -Dprefix=/opt/perl -des
+    sh Configure -Dinstallprefix=/tmp/perl5 -Dprefix=/opt/perl -des
     make
     make test
     make install   # This will install everything into /tmp/perl5.
@@ -532,6 +591,15 @@ to ensure that Configure doesn't re-use them.
 
 Further information is in the Policy_sh.SH file itself.
 
+If the generated Policy.sh file is unsuitable, you may freely edit it
+to contain any valid shell commands.  It will be run just after the
+platform-specific hints files.
+
+Note:  Since the directory hierarchy for 5.6.0 contains a number of
+new vendor* and site* entries, your Policy.sh file will probably not
+set them to your desired values.  I encourage you to run Configure
+interactively to be sure it puts things where you want them.
+
 =head2 Configure-time Options
 
 There are several different ways to Configure and build perl for your
@@ -541,9 +609,9 @@ some of the main things you can change.
 
 =head2 Threads
 
-On some platforms, perl5.005 can be compiled with experimental support
-for threads.  To enable this, read the file README.threads, and then
-try:
+On some platforms, perl5.005 and later can be compiled with
+experimental support for threads.  To enable this, read the file
+README.threads, and then try:
 
 	sh Configure -Dusethreads
 
@@ -552,6 +620,20 @@ line so that the hint files can make appropriate adjustments.
 
 The default is to compile without thread support.
 
+As of v5.5.64, perl has two different internal threads implementations.
+The 5.005 version (5005threads) and an interpreter-based implementation
+(ithreads) with one interpreter per thread.  By default, Configure selects
+ithreads if -Dusethreads is specified.  However, you can select the old
+5005threads behavior instead by either
+
+	sh Configure -Dusethreads -Duse5005threads
+
+or by
+	sh Configure -Dusethreads -Uuseithreads
+
+Eventually (by perl v5.6.0) this internal confusion ought to disappear,
+and these options may disappear as well.
+
 =head2 Selecting File IO mechanisms
 
 Previous versions of perl used the standard IO mechanisms as defined in
@@ -593,30 +675,12 @@ If you have already selected -Duseperlio, and if Configure detects
 that you have sfio, then sfio will be the default suggested by
 Configure.
 
-Note:  On some systems, sfio's iffe configuration script fails
-to detect that you have an atexit function (or equivalent).
-Apparently, this is a problem at least for some versions of Linux
-and SunOS 4.
-
-You can test if you have this problem by trying the following shell
-script.  (You may have to add some extra cflags and libraries.  A
-portable version of this may eventually make its way into Configure.)
-
-    #!/bin/sh
-    cat > try.c <<'EOCP'
-    #include 
-    main() { printf("42\n"); }
-    EOCP
-    cc -o try try.c -lsfio
-    val=`./try`
-    if test X$val = X42; then
-	echo "Your sfio looks ok"
-    else
-	echo "Your sfio has the exit problem."
-    fi
-
-If you have this problem, the fix is to go back to your sfio sources
-and correct iffe's guess about atexit.
+Note:  On some systems, sfio's iffe configuration script fails to
+detect that you have an atexit function (or equivalent).  Apparently,
+this is a problem at least for some versions of Linux and SunOS 4.
+Configure should detect this problem and warn you about problems with
+_exit vs. exit.  If you have this problem, the fix is to go back to
+your sfio sources and correct iffe's guess about atexit.
 
 There also might be a more recent release of Sfio that fixes your
 problem.
@@ -639,6 +703,13 @@ detect sfio, then this will be the default suggested by Configure.
 
 =back
 
+=head2 Dynamic Loading
+
+By default, Configure will compile perl to use dynamic loading if
+your system supports it.  If you want to force perl to be compiled
+statically, you can either choose this when Configure prompts you or
+you can use the Configure command line option -Uusedl.
+
 =head2 Building a shared libperl.so Perl library
 
 Currently, for most systems, the main perl executable is built by
@@ -679,9 +750,10 @@ You can elect to build a shared libperl by
 
 To build a shared libperl, the environment variable controlling shared
 library search (LD_LIBRARY_PATH in most systems, DYLD_LIBRARY_PATH for
-NeXTSTEP/OPENSTEP, LIBRARY_PATH for BeOS) must be set up to include
+NeXTSTEP/OPENSTEP/Darwin, LIBRARY_PATH for BeOS, SHLIB_PATH for
+HP-UX, LIBPATH for AIX, PATH for Cygwin) must be set up to include
 the Perl build directory because that's where the shared libperl will
-be created.   Configure arranges Makefile to have the correct shared
+be created.  Configure arranges makefile to have the correct shared
 library search settings.
 
 However, there are some special cases where manually setting the
@@ -703,7 +775,7 @@ for Bourne-style shells, or
    setenv LD_LIBRARY_PATH `pwd`
 
 for Csh-style shells.  (This procedure may also be needed if for some
-unexpected reason Configure fails to set up Makefile correctly.)
+unexpected reason Configure fails to set up makefile correctly.)
 
 You can often recognize failures to build/use a shared libperl from error
 messages complaining about a missing libperl.so (or libperl.sl in HP-UX),
@@ -728,30 +800,25 @@ to point to the perl build directory.
 The only reliable answer is that you should specify a different
 directory for the architecture-dependent library for your -DDEBUGGING
 version of perl.  You can do this by changing all the *archlib*
-variables in config.sh, namely archlib, archlib_exp, and
-installarchlib, to point to your new architecture-dependent library.
+variables in config.sh to point to your new architecture-dependent library.
 
 =head2 Malloc Issues
 
-Perl relies heavily on malloc(3) to grow data structures as needed, so
-perl's performance can be noticeably affected by the performance of
-the malloc function on your system.
+Perl relies heavily on malloc(3) to grow data structures as needed,
+so perl's performance can be noticeably affected by the performance of
+the malloc function on your system.  The perl source is shipped with a
+version of malloc that has been optimized for the typical requests from
+perl, so there's a chance that it may be both faster and use less memory
+than your system malloc.
 
-The perl source is shipped with a version of malloc that is very fast but
-somewhat wasteful of space.  On the other hand, your system's malloc
-function may be a bit slower but also a bit more frugal.  However,
-as of 5.004_68, perl's malloc has been optimized for the typical
-requests from perl, so there's a chance that it may be both faster and
-use less memory.
+However, if your system already has an excellent malloc, or if you are
+experiencing difficulties with extensions that use third-party libraries
+that call malloc, then you should probably use your system's malloc.
+(Or, you might wish to explore the malloc flags discussed below.)
 
-For many uses, speed is probably the most important consideration, so
-the default behavior (for most systems) is to use the malloc supplied
-with perl.  However, if you will be running very large applications
-(e.g. Tk or PDL) or if your system already has an excellent malloc, or
-if you are experiencing difficulties with extensions that use
-third-party libraries that call malloc, then you might wish to use
-your system's malloc.  (Or, you might wish to explore the malloc flags
-discussed below.)
+=over 4
+
+=item Using the system malloc
 
 To build without perl's malloc, you can use the Configure command
 
@@ -759,25 +826,32 @@ To build without perl's malloc, you can use the Configure command
 
 or you can answer 'n' at the appropriate interactive Configure prompt.
 
-=head2 Malloc Performance Flags
+=item -DPERL_POLLUTE_MALLOC
 
-If you are using Perl's malloc, you may add one or more of the following
-items to your ccflags config.sh variable to change its behavior.  You can
-find out more about these and other flags by reading the commentary near
-the top of the malloc.c source.  The defaults should be fine for
-nearly everyone.
+NOTE: This flag is enabled automatically on some platforms if you
+asked for binary compatibility with version 5.005, or if you just
+run Configure to accept all the defaults on those platforms.  You
+can refuse the automatic binary compatibility flags wholesale by
+running:
 
-=over 4
+	sh Configure -Ubincompat5005
 
-=item -DNO_FANCY_MALLOC
+or by answering 'n' at the appropriate prompt.
 
-Undefined by default.  Defining it returns malloc to the version used
-in Perl 5.004.
+Perl's malloc family of functions are called Perl_malloc(),
+Perl_realloc(), Perl_calloc() and Perl_mfree().  When this flag is
+not enabled, the names do not clash with the system versions of
+these functions.
 
-=item -DPLAIN_MALLOC
+If enabled, Perl's malloc family of functions will have the same
+names as the system versions.  This may be sometimes required when you
+have libraries that like to free() data that may have been allocated
+by Perl_malloc() and vice versa.
 
-Undefined by default.  Defining it in addition to NO_FANCY_MALLOC returns
-malloc to the version used in Perl version 5.000.
+Note that enabling this option may sometimes lead to duplicate symbols
+from the linker for malloc et al.  In such cases, the system probably
+does not allow its malloc functions to be fully replaced with custom
+versions.
 
 =back
 
@@ -792,14 +866,14 @@ you probably want to do
 This will do two independent things:  First, it will force compilation
 to use cc -g so that you can use your system's debugger on the
 executable.  (Note:  Your system may actually require something like
-cc -g2.  Check your man pages for cc(1) and also any hint file for your
-system.)  Second, it will add -DDEBUGGING to your ccflags variable in
-config.sh so that you can use B to access perl's internal
-state.  (Note: Configure will only add -DDEBUGGING by
-default if you are not reusing your old config.sh.  If you want to
-reuse your old config.sh, then you can just edit it and change the
-optimize and ccflags variables by hand and then propagate your changes
-as shown in L<"Propagating your changes to config.sh"> below.)
+cc -g2.  Check your man pages for cc(1) and also any hint file for
+your system.)  Second, it will add -DDEBUGGING to your ccflags
+variable in config.sh so that you can use B to access perl's
+internal state.  (Note: Configure will only add -DDEBUGGING by default
+if you are not reusing your old config.sh.  If you want to reuse your
+old config.sh, then you can just edit it and change the optimize and
+ccflags variables by hand and then propagate your changes as shown in
+L<"Propagating your changes to config.sh"> below.)
 
 You can actually specify -g and -DDEBUGGING independently, but usually
 it's convenient to have both.
@@ -807,19 +881,159 @@ it's convenient to have both.
 If you are using a shared libperl, see the warnings about multiple
 versions of perl under L.
 
-=head2 Other Compiler Flags
+=head2 Extensions
 
-For most users, all of the Configure defaults are fine.  However,
-you can change a number of factors in the way perl is built
-by adding appropriate -D directives to your ccflags variable in
-config.sh.
+By default, Configure will offer to build every extension which appears
+to be supported.  For example, Configure will offer to build GDBM_File
+only if it is able to find the gdbm library.  (See examples below.)
+B, DynaLoader, Fcntl, IO, and attrs are always built by default.
+Configure does not contain code to test for POSIX compliance, so POSIX
+is always built by default as well.  If you wish to skip POSIX, you can
+set the Configure variable useposix=false either in a hint file or from
+the Configure command line.  Similarly, the Opcode extension is always
+built by default, but you can skip it by setting the Configure variable
+useopcode=false either in a hint file for from the command line.
 
-You should also run Configure interactively to verify that a hint file
-doesn't inadvertently override your ccflags setting.  (Hints files
-shouldn't do that, but some might.)
+If you unpack any additional extensions in the ext/ directory before
+running Configure, then Configure will offer to build those additional
+extensions as well.  Most users probably shouldn't have to do this --
+it is usually easier to build additional extensions later after perl
+has been installed.  However, if you wish to have those additional
+extensions statically linked into the perl binary, then this offers a
+convenient way to do that in one step.  (It is not necessary, however;
+you can build and install extensions just fine even if you don't have
+dynamic loading.  See lib/ExtUtils/MakeMaker.pm for more details.)
+
+You can learn more about each of the supplied extensions by consulting the
+documentation in the individual .pm modules, located under the
+ext/ subdirectory.
+
+Even if you do not have dynamic loading, you must still build the
+DynaLoader extension; you should just build the stub dl_none.xs
+version.  (Configure will suggest this as the default.)
+
+In summary, here are the Configure command-line variables you can set
+to turn off each extension:
+
+    B			(Always included by default)
+    DB_File		i_db
+    DynaLoader		(Must always be included as a static extension)
+    Fcntl		(Always included by default)
+    GDBM_File		i_gdbm
+    IO			(Always included by default)
+    NDBM_File		i_ndbm
+    ODBM_File		i_dbm
+    POSIX		useposix
+    SDBM_File		(Always included by default)
+    Opcode		useopcode
+    Socket		d_socket
+    Threads		use5005threads
+    attrs		(Always included by default)
+
+Thus to skip the NDBM_File extension, you can use
+
+	sh Configure -Ui_ndbm
+
+Again, this is taken care of automatically if you don't have the ndbm
+library.
+
+Of course, you may always run Configure interactively and select only
+the extensions you want.
+
+Note:  The DB_File module will only work with version 1.x of Berkeley
+DB or newer releases of version 2.  Configure will automatically detect
+this for you and refuse to try to build DB_File with earlier
+releases of version 2.
+
+If you re-use your old config.sh but change your system (e.g. by
+adding libgdbm) Configure will still offer your old choices of extensions
+for the default answer, but it will also point out the discrepancy to
+you.
+
+Finally, if you have dynamic loading (most modern Unix systems do)
+remember that these extensions do not increase the size of your perl
+executable, nor do they impact start-up time, so you probably might as
+well build all the ones that will work on your system.
+
+=head2 Including locally-installed libraries
+
+Perl5 comes with interfaces to number of database extensions, including
+dbm, ndbm, gdbm, and Berkeley db.  For each extension, if
+Configure can find the appropriate header files and libraries, it will
+automatically include that extension.  The gdbm and db libraries
+are not included with perl.  See the library documentation for
+how to obtain the libraries.
+
+If your database header (.h) files are not in a directory normally
+searched by your C compiler, then you will need to include the
+appropriate -I/your/directory option when prompted by Configure.  If
+your database library (.a) files are not in a directory normally
+searched by your C compiler and linker, then you will need to include
+the appropriate -L/your/directory option when prompted by Configure.
+See the examples below.
+
+=head2 Examples
+
+=over 4
+
+=item gdbm in /usr/local
+
+Suppose you have gdbm and want Configure to find it and build the
+GDBM_File extension.  This example assumes you have gdbm.h
+installed in /usr/local/include/gdbm.h and libgdbm.a installed in
+/usr/local/lib/libgdbm.a.  Configure should figure all the
+necessary steps out automatically.
+
+Specifically, when Configure prompts you for flags for
+your C compiler, you should include  -I/usr/local/include.
+
+When Configure prompts you for linker flags, you should include
+-L/usr/local/lib.
+
+If you are using dynamic loading, then when Configure prompts you for
+linker flags for dynamic loading, you should again include
+-L/usr/local/lib.
+
+Again, this should all happen automatically.  This should also work if
+you have gdbm installed in any of (/usr/local, /opt/local, /usr/gnu,
+/opt/gnu, /usr/GNU, or /opt/GNU).
+
+=item gdbm in /usr/you
+
+Suppose you have gdbm installed in some place other than /usr/local/,
+but you still want Configure to find it.  To be specific, assume you
+have /usr/you/include/gdbm.h and /usr/you/lib/libgdbm.a.  You
+still have to add -I/usr/you/include to cc flags, but you have to take
+an extra step to help Configure find libgdbm.a.  Specifically, when
+Configure prompts you for library directories, you have to add
+/usr/you/lib to the list.
+
+It is possible to specify this from the command line too (all on one
+line):
+
+	sh Configure -de \
+		-Dlocincpth="/usr/you/include" \
+		-Dloclibpth="/usr/you/lib"
+
+locincpth is a space-separated list of include directories to search.
+Configure will automatically add the appropriate -I directives.
+
+loclibpth is a space-separated list of library directories to search.
+Configure will automatically add the appropriate -L directives.  If
+you have some libraries under /usr/local/ and others under
+/usr/you, then you have to include both, namely
+
+	sh Configure -de \
+		-Dlocincpth="/usr/you/include /usr/local/include" \
+		-Dloclibpth="/usr/you/lib /usr/local/lib"
+
+=back
 
 =head2 What if it doesn't work?
 
+If you run into problems, try some of the following ideas.
+If none of them help, then see L<"Reporting Problems"> below.
+
 =over 4
 
 =item Running Configure Interactively
@@ -910,8 +1124,7 @@ You will then have to rebuild by running
 You can also supply a shell script config.over to over-ride Configure's
 guesses.  It will get loaded up at the very end, just before config.sh
 is created.  You have to be careful with this, however, as Configure
-does no checking that your changes make sense.  See the section on
-L<"Changing the installation directory"> for an example.
+does no checking that your changes make sense.
 
 =item config.h
 
@@ -943,8 +1156,9 @@ $ccflags or $optimize, and then re-run
 
 =item No sh
 
-If you don't have sh, you'll have to copy the sample file Porting/config_H
-to config.h and edit the config.h to reflect your system's peculiarities.
+If you don't have sh, you'll have to copy the sample file
+Porting/config.sh to config.sh and edit your config.sh to reflect your
+system's peculiarities.  See Porting/pumpkin.pod for more information.
 You'll probably also have to extensively modify the extension building
 mechanism.
 
@@ -957,7 +1171,7 @@ be fixed to avoid polluting the namespace of the environment.
 
 =item Digital UNIX/Tru64 UNIX and BIN_SH
 
-In Digital UNIX/Tru64 UNIX Configure might abort with
+In Digital UNIX/Tru64 UNIX, Configure might abort with
 
 Build a threading Perl? [n]
 Configure[2437]: Syntax error at line 1 : `config.sh' is not expected.
@@ -989,12 +1203,17 @@ libgdbm under HP-UX 11.
 Specific information for the OS/2, Plan9, VMS and Win32 ports is in the
 corresponding README files and subdirectories.  Additional information,
 including a glossary of all those config.sh variables, is in the Porting
-subdirectory.
+subdirectory.  Especially Porting/Glossary should come in handy.
 
 Ports for other systems may also be available.  You should check out
 http://www.perl.com/CPAN/ports for current information on ports to
 various other operating systems.
 
+If you plan to port Perl to a new architecture study carefully the
+section titled "Philosophical Issues in Patching and Porting Perl"
+in the file Porting/pumpkin.pod and the file Porting/patching.pod.
+Study also how other non-UNIX ports have solved problems.
+
 =back
 
 =head1 make depend
@@ -1013,12 +1232,12 @@ explicitly above.
 
 This will attempt to make perl in the current directory.
 
+=head2 What if it doesn't work?
+
 If you can't compile successfully, try some of the following ideas.
 If none of them help, and careful reading of the error message and
-the relevant manual pages on your system doesn't help, you can
-send a message to either the comp.lang.perl.misc newsgroup or to
-perlbug@perl.com with an accurate description of your problem.
-See L<"Reporting Problems"> below.
+the relevant manual pages on your system doesn't help,
+then see L<"Reporting Problems"> below.
 
 =over 4
 
@@ -1054,11 +1273,6 @@ The latter is especially useful if you see something like this
 
 at Perl startup.
 
-=item malloc duplicates
-
-If you get duplicates upon linking for malloc et al, add -DEMBEDMYMALLOC
-to your ccflags variable in config.sh.
-
 =item varargs
 
 If you get varargs problems with gcc, be sure that gcc is installed
@@ -1184,6 +1398,14 @@ updated resolver library provided with BIND 8.1 or rename
 /usr/local/bin/arpa/inet.h during the Perl build and test process to
 avoid the problem.
 
+=item #error "No DATAMODEL_NATIVE specified"
+
+This is a common error when trying to build perl on Solaris 2.6 with a
+gcc installation from Solaris 2.5 or 2.5.1.  The Solaris header files
+changed, so you need to update your gcc installation.  You can either
+rerun the fixincludes script from gcc or take the opportunity to
+update your gcc installation.
+
 =item Optimizer
 
 If you can't compile successfully, try turning off your compiler's
@@ -1200,10 +1422,13 @@ with B.
 
 =item CRIPPLED_CC
 
-If you still can't compile successfully, try adding a -DCRIPPLED_CC
-flag.  (Just because you get no errors doesn't mean it compiled right!)
-This simplifies some complicated expressions for compilers that get
-indigestion easily.
+If you still can't compile successfully, try:
+
+	sh Configure -Accflags=-DCRIPPLED_CC
+
+This flag simplifies some complicated expressions for compilers that get
+indigestion easily.  (Just because you get no errors doesn't mean it
+compiled right!)
 
 =item Missing functions
 
@@ -1316,15 +1541,14 @@ Patch Bundle" has been reported to break the io/fs test #18 which
 tests whether utime() can change timestamps.  The Y2K patch seems to
 break utime() so that over NFS the timestamps do not get changed
 (on local filesystems utime() still works).
- 
+
 =back
 
 =head1 make test
 
-This will run the regression tests on the perl you just made (you
-should run plain 'make' before 'make test' otherwise you won't have a
-complete build).  If 'make test' doesn't say "All tests successful"
-then something went wrong.  See the file t/README in the t subdirectory.
+This will run the regression tests on the perl you just made.  If
+'make test' doesn't say "All tests successful" then something went
+wrong.  See the file t/README in the t subdirectory.
 
 Note that you can't run the tests in background if this disables
 opening of /dev/tty. You can use 'make test-notty' in that case but
@@ -1380,10 +1604,8 @@ external program.
 
 On some systems, particularly those with smaller amounts of RAM, some
 of the tests in t/op/pat.t may fail with an "Out of memory" message.
-Specifically, in perl5.004_64, tests 74 and 78 have been reported to
-fail on some systems.  On my SparcStation IPC with 8 MB of RAM, test 78
-will fail if the system is running any other significant tasks at the
-same time.
+For example, on my SparcStation IPC with 12 MB of RAM, in perl5.5.670,
+test 85 will fail if run under either t/TEST or t/harness.
 
 Try stopping other jobs on the system and then running the test by itself:
 
@@ -1413,6 +1635,15 @@ indicate the alternate name on the "make install" line, such as:
 
     make install PERLNAME=myperl
 
+You can separately change the base used for versioned names (like
+"perl5.005") by setting PERLNAME_VERBASE, like
+
+    make install PERLNAME=perl5 PERLNAME_VERBASE=perl
+
+This can be useful if you have to install perl as "perl5" (due to an
+ancient version in /usr/bin supplied by your vendor, eg).  Without this
+the versioned binary would be called "perl55.005".
+
 =head2 Installed files
 
 If you want to see exactly what will happen without installing
@@ -1444,34 +1675,25 @@ make install will install the following:
 	pod2man, and
 	pod2text
 	splain		Describe Perl warnings and errors
+	dprofpp		Perl code profile post-processor
 
 	library files	in $privlib and $archlib specified to
 			Configure, usually under /usr/local/lib/perl5/.
-	man pages	in the location specified to Configure, usually
-			something like /usr/local/man/man1.
-	module		in the location specified to Configure, usually
-	man pages	under /usr/local/lib/perl5/man/man3.
+	man pages	in $man1dir, usually /usr/local/man/man1.
+	module man
+	pages		in $man3dir, usually /usr/local/man/man3.
 	pod/*.pod	in $privlib/pod/.
 
-Installperl will also create the library directories $siteperl and
-$sitearch listed in config.sh.  Usually, these are something like
-
-	/usr/local/lib/perl5/site_perl/5.005
-	/usr/local/lib/perl5/site_perl/5.005/archname
-
-where archname is something like sun4-sunos.  These directories
-will be used for installing extensions.
+Installperl will also create the directories listed above
+in L<"Installation Directories">.
 
 Perl's *.h header files and the libperl.a library are also installed
-under $archlib so that any user may later build new extensions, run the
+under $archlib so that any user may later build new modules, run the
 optional Perl compiler, or embed the perl interpreter into another
 program even if the Perl source is no longer available.
 
 =head1 Coexistence with earlier versions of perl5
 
-WARNING:  The upgrade from 5.004_0x to 5.005 is going to be a bit
-tricky.  See L<"Upgrading from 5.004 to 5.005">  below.
-
 In general, you can usually safely upgrade from one version of Perl (e.g.
 5.004_04) to another similar version (e.g. 5.004_05) without re-compiling
 all of your add-on extensions.  You can also safely leave the old version
@@ -1485,48 +1707,76 @@ Most extensions will probably not need to be recompiled to use
 with a newer version of perl.   Here is how it is supposed to work.
 (These examples assume you accept all the Configure defaults.)
 
-The directories searched by version 5.005 will be
+Suppose you already have version 5.005_03 installed.  The directories
+searched by 5.005_03 are
 
-    Configure variable		Default value
-	$archlib 	/usr/local/lib/perl5/5.005/archname
-	$privlib	/usr/local/lib/perl5/5.005
-	$sitearch	/usr/local/lib/perl5/site_perl/5.005/archname
-	$sitelib	/usr/local/lib/perl5/site_perl/5.005
+	/usr/local/lib/perl5/5.00503/$archname
+	/usr/local/lib/perl5/5.00503
+	/usr/local/lib/perl5/site_perl/5.005/$archname
+	/usr/local/lib/perl5/site_perl/5.005
 
-while the directories searched by version 5.005_01 will be
+Beginning with 5.6.0 the version number in the site libraries are
+fully versioned.  Now, suppose you install version 5.6.0.  The directories
+searched by version 5.6.0 will be
 
-	$archlib 	/usr/local/lib/perl5/5.00501/archname
-	$privlib	/usr/local/lib/perl5/5.00501
-	$sitearch	/usr/local/lib/perl5/site_perl/5.005/archname
-	$sitelib	/usr/local/lib/perl5/site_perl/5.005
+	/usr/local/lib/perl5/5.6.0/$archname
+	/usr/local/lib/perl5/5.6.0
+	/usr/local/lib/perl5/site_perl/5.6.0/$archname
+	/usr/local/lib/perl5/site_perl/5.6.0
 
-When you install an add-on extension, it gets installed into $sitelib (or
-$sitearch if it is architecture-specific).  This directory deliberately
-does NOT include the sub-version number (01) so that both 5.005 and
-5.005_01 can use the extension.  Only when a perl version changes to
-break backwards compatibility will the default suggestions for the
-$sitearch and $sitelib version numbers be increased.
+	/usr/local/lib/perl5/site_perl/5.005/$archname
+	/usr/local/lib/perl5/site_perl/5.005
+	/usr/local/lib/perl5/site_perl/
 
-However, if you do run into problems, and you want to continue to use the
-old version of perl along with your extension, move those extension files
-to the appropriate version directory, such as $privlib (or $archlib).
-(The extension's .packlist file lists the files installed with that
-extension.  For the Tk extension, for example, the list of files installed
-is in $sitearch/auto/Tk/.packlist.)  Then use your newer version of perl
-to rebuild and re-install the extension into $sitelib.  This way, Perl
-5.005 will find your files in the 5.005 directory, and newer versions
-of perl will find your newer extension in the $sitelib directory.
-(This is also why perl searches the site-specific libraries last.)
+Notice the last three entries -- Perl understands the default structure
+of the $sitelib directories and will look back in older, compatible
+directories.  This way, modules installed under 5.005_03 will continue
+to be usable by 5.005_03 but will also accessible to 5.6.0.  Further,
+suppose that you upgrade a module to one which requires features
+present only in 5.6.0.  That new module will get installed into
+/usr/local/lib/perl5/site_perl/5.6.0 and will be available to 5.6.0,
+but will not interfere with the 5.005_03 version.
 
-Alternatively, if you are willing to reinstall all your extensions
-every time you upgrade perl, then you can include the subversion
-number in $sitearch and $sitelib when you run Configure.
+The last entry, /usr/local/lib/perl5/site_perl/, is there so that
+5.6.0 will look for 5.004-era pure perl modules.
+
+Lastly, suppose you now install version 5.6.1, which we'll assume is
+binary compatible with 5.6.0 and 5.005.  The directories searched
+by 5.6.1 (if you don't change the Configure defaults) will be:
+
+	/usr/local/lib/perl5/5.6.1/$archname
+	/usr/local/lib/perl5/5.6.1
+	/usr/local/lib/perl5/site_perl/5.6.1/$archname
+	/usr/local/lib/perl5/site_perl/5.6.1
+
+	/usr/local/lib/perl5/site_perl/5.6.0/$archname
+	/usr/local/lib/perl5/site_perl/5.6.0
+
+	/usr/local/lib/perl5/site_perl/5.005/$archname
+	/usr/local/lib/perl5/site_perl/5.005
+	/usr/local/lib/perl5/site_perl/
+
+Assuming the users in your site are still actively using perl 5.6.0 and
+5.005 after you installed 5.6.1, you can continue to install add-on
+extensions using any of perl 5.6.1, 5.6.0, or 5.005.  The installations
+of these different versions remain distinct, but remember that the newer
+versions of perl are automatically set up to search the site libraries of
+the older ones.  This means that installing a new extension with 5.005
+will make it visible to all three versions.  Later, if you install the
+same extension using, say, perl 5.6.1, it will override the 5.005-installed
+version, but only for perl 5.6.1.
+
+This way, you can choose to share compatible extensions, but also upgrade
+to a newer version of an extension that may be incompatible with earlier
+versions, without breaking the earlier versions' installations.
 
 =head2 Maintaining completely separate versions
 
 Many users prefer to keep all versions of perl in completely
-separate directories.  One convenient way to do this is by
-using a separate prefix for each version, such as
+separate directories.  This guarantees that an update to one version
+won't interfere with another version.  (The defaults guarantee this for
+libraries after 5.6.0, but not for executables. TODO?)  One convenient
+way to do this is by using a separate prefix for each version, such as
 
 	sh Configure -Dprefix=/opt/perl5.004
 
@@ -1543,14 +1793,17 @@ seriously consider using a separate directory, since development
 subversions may not have all the compatibility wrinkles ironed out
 yet.
 
-=head2 Upgrading from 5.004 to 5.005
+=head2 Upgrading from 5.005 to 5.6.0
 
-Extensions built and installed with versions of perl prior to 5.004_50
-will need to be recompiled to be used with 5.004_50 and later.  You will,
-however, be able to continue using 5.004 even after you install 5.005.
-The 5.004 binary will still be able to find the extensions built under
-5.004; the 5.005 binary will look in the new $sitearch and $sitelib
-directories, and will not find them.
+Most extensions built and installed with versions of perl
+prior to 5.005_50 will not need to be recompiled to be used with
+5.6.0.  If you find you do need to rebuild an extension with 5.6.0,
+you may safely do so without disturbing the 5.005 installation.
+(See L<"Coexistence with earlier versions of perl5"> above.)
+
+See your installed copy of the perllocal.pod file for a (possibly
+incomplete) list of locally installed modules.  Note that you want
+perllocal.pod not perllocale.pod for installed module information.
 
 =head1 Coexistence with perl4
 
@@ -1563,23 +1816,23 @@ In your /usr/local/bin directory, you should have a binary named
 perl4.036.  That will not be touched by the perl5 installation
 process.  Most perl4 scripts should run just fine under perl5.
 However, if you have any scripts that require perl4, you can replace
-the #! line at the top of them by #!/usr/local/bin/perl4.036
-(or whatever the appropriate pathname is).  See pod/perltrap.pod
-for possible problems running perl4 scripts under perl5.
+the #! line at the top of them by #!/usr/local/bin/perl4.036 (or
+whatever the appropriate pathname is).  See pod/perltrap.pod for
+possible problems running perl4 scripts under perl5.
 
 =head1 cd /usr/include; h2ph *.h sys/*.h
 
-Some perl scripts need to be able to obtain information from
-the system header files.  This command will convert the most commonly used
+Some perl scripts need to be able to obtain information from the
+system header files.  This command will convert the most commonly used
 header files in /usr/include into files that can be easily interpreted
-by perl.  These files will be placed in the architecture-dependent library
-($archlib) directory you specified to Configure.
+by perl.  These files will be placed in the architecture-dependent
+library ($archlib) directory you specified to Configure.
 
-Note:  Due to differences in the C and perl languages, the
-conversion of the header files is not perfect.  You will probably have
-to hand-edit some of the converted files to get them to parse
-correctly.  For example, h2ph breaks spectacularly on type casting and
-certain structures.
+Note:  Due to differences in the C and perl languages, the conversion
+of the header files is not perfect.  You will probably have to
+hand-edit some of the converted files to get them to parse correctly.
+For example, h2ph breaks spectacularly on type casting and certain
+structures.
 
 =head1 installhtml --help
 
@@ -1587,6 +1840,9 @@ Some sites may wish to make perl documentation available in HTML
 format.  The installhtml utility can be used to convert pod
 documentation into linked HTML files and install them.
 
+Currently, the supplied ./installhtml script does not make use of the
+html Configure variables.  This should be fixed in a future release.
+
 The following command-line is an example of one used to convert
 perl documentation:
 
@@ -1631,8 +1887,16 @@ comes with the perl distribution, but you need to have perl compiled
 before you can use it.  (If you have not installed it yet, you need to
 run C<./perl -Ilib utils/perlbug> instead of a plain C.)
 
-You might also find helpful information in the Porting directory of the
-perl distribution.
+Please try to make your message brief but clear.  Trim out unnecessary
+information.  Do not include large files (such as config.sh or a complete
+Configure or make log) unless absolutely necessary.  Do not include a
+complete transcript of your build session.  Just include the failing
+commands, the relevant error messages, and whatever preceding commands
+are necessary to give the appropriate context.  Plain text should
+usually be sufficient--fancy attachments or encodings may actually
+reduce the number of people who read your message.  Your message
+will get relayed to over 400 subscribers around the world so please
+try to keep it brief but clear.
 
 =head1 DOCUMENTATION
 
@@ -1669,12 +1933,11 @@ L<"Reporting Problems"> above.
 =head1 REDISTRIBUTION
 
 This document is part of the Perl package and may be distributed under
-the same terms as perl itself.
-
+the same terms as perl itself, with the following additional request:
 If you are distributing a modified version of perl (perhaps as part of
-a larger package) please do modify these installation instructions and
-the contact information to match your distribution.
+a larger package) please B modify these installation instructions
+and the contact information to match your distribution.
 
 =head1 LAST MODIFIED
 
-$Id: INSTALL,v 1.42 1998/07/15 18:04:44 doughera Released $
+$Id: INSTALL,v 1.58 1999/07/23 14:43:00 doughera Exp $
diff --git a/contrib/perl5/INTERN.h b/contrib/perl5/INTERN.h
index 118e47ca1851..286cc46fd8c4 100644
--- a/contrib/perl5/INTERN.h
+++ b/contrib/perl5/INTERN.h
@@ -1,6 +1,6 @@
 /*    INTERN.h
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -27,11 +27,17 @@
 #  define EXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
 #  define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
 #else
-#  ifdef __cplusplus
-#   define EXT
-#   define dEXT
-#   define EXTCONST extern const
-#   define dEXTCONST const
+#if defined(WIN32) && defined(__MINGW32__)
+#  define EXT		__declspec(dllexport)
+#  define dEXT
+#  define EXTCONST	__declspec(dllexport) const
+#  define dEXTCONST	const
+#else
+#ifdef __cplusplus
+#  define EXT
+#  define dEXT
+#  define EXTCONST extern const
+#  define dEXTCONST const
 #else
 #  define EXT
 #  define dEXT
@@ -39,6 +45,7 @@
 #  define dEXTCONST const
 #endif
 #endif
+#endif
 
 #undef INIT
 #define INIT(x) = x
diff --git a/contrib/perl5/MAINTAIN b/contrib/perl5/MAINTAIN
new file mode 100644
index 000000000000..37ef4896637b
--- /dev/null
+++ b/contrib/perl5/MAINTAIN
@@ -0,0 +1,879 @@
+# In addition to actual maintainers this file also lists "interested parties".
+#
+# The maintainer aliases come from AUTHORS.  They may be defined in
+# a layered way: 'doc' expands to tchrist which expands to Tom Christiansen.
+#
+# A file that is in MANIFEST need not be here at all.
+# In any case, if nobody else is listed as maintainer,
+# PUMPKING (from AUTHORS) should be it.
+#
+# Filenames can contain * which means qr(.*) on the filenames found
+# using File::Find (it's _not_ filename glob).
+#
+# Maintainership definitions are of course cumulative: if A maintains
+# X/* and B maintains X/Y/Z, if X/Y/Z is changed, both A and B should
+# be notified.
+#
+# The filename(glob) and the maintainer(s) are separated by one or more tabs.
+
+Artistic	
+Changes	
+Changes5.000	
+Changes5.001	
+Changes5.002	
+Changes5.003	
+Changes5.004	
+Changes5.005	
+Configure			cfg
+Copying	
+EXTERN.h	
+INSTALL	
+INTERN.h	
+MANIFEST	
+Makefile.SH	
+objXSUB.h	
+Policy_sh.SH	
+Porting/*			cfg
+Porting/Contract	
+Porting/Glossary	
+Porting/config.sh	
+Porting/config_H	
+Porting/findvars	
+Porting/fixCORE	
+Porting/fixvars	
+Porting/genlog	
+Porting/makerel	
+Porting/p4d2p	
+Porting/p4desc	
+Porting/patching.pod		dgris
+Porting/patchls	
+Porting/pumpkin.pod	
+README	
+README.amiga			amiga
+README.beos			beos
+README.cygwin			cygwin
+README.dos			dos
+README.hpux			hpux
+README.lexwarn			lexwarn
+README.machten			machten
+README.mpeix			mpeix
+README.os2			os2
+README.os390			mvs
+README.plan9			plan9
+README.posix-bc			posix-bc
+README.qnx			qnx
+README.threads	
+README.vmesa			vmesa
+README.vms			vms
+README.vos			vos
+README.win32			win32
+Todo	
+Todo-5.005	
+XSlock.h	
+XSUB.h	
+av.c	
+av.h	
+beos/*				beos
+bytecode.h	
+bytecode.pl	
+byterun.c	
+byterun.h	
+cc_runtime.h	
+cflags.SH	
+config_h.SH			cfg
+configpm	
+configure.com			vms
+configure.gnu	
+cop.h	
+cv.h	
+cygwin/*			cygwin
+deb.c	
+djgpp/*				dos
+doio.c	
+doop.c	
+dosish.h	
+dump.c	
+ebcdic.c		
+eg/ADB	
+eg/README	
+eg/cgi/*			cgi
+eg/changes	
+eg/client	
+eg/down	
+eg/dus	
+eg/findcp	
+eg/findtar	
+eg/g/gcp	
+eg/g/gcp.man	
+eg/g/ged	
+eg/g/ghosts	
+eg/g/gsh	
+eg/g/gsh.man	
+eg/muck	
+eg/muck.man	
+eg/myrup	
+eg/nih	
+eg/relink	
+eg/rename	
+eg/rmfrom	
+eg/scan/scan_df	
+eg/scan/scan_last	
+eg/scan/scan_messages	
+eg/scan/scan_passwd	
+eg/scan/scan_ps	
+eg/scan/scan_sudo	
+eg/scan/scan_suid	
+eg/scan/scanner	
+eg/server	
+eg/shmkill	
+eg/sysvipc/README	
+eg/sysvipc/ipcmsg	
+eg/sysvipc/ipcsem	
+eg/sysvipc/ipcshm	
+eg/travesty	
+eg/unuc	
+eg/uudecode	
+eg/van/empty	
+eg/van/unvanish	
+eg/van/vanexp	
+eg/van/vanish	
+eg/who	
+eg/wrapsuid	
+emacs/*				ilya
+embed.h	
+embed.pl	
+embedvar.h	
+ext/*/hints*			cfg
+ext/B/*				nik
+ext/B/B/Deparse.pm		smccam
+ext/DB_File*			pmarquess
+ext/DB_File/hints/dynixptx.pl	dynix/ptx
+ext/Data/Dumper/*		gsar
+ext/Devel/DProf/*
+ext/Devel/Peek/*		ilya
+ext/DynaLoader/DynaLoader_pm.PL	
+ext/DynaLoader/Makefile.PL	
+ext/DynaLoader/README	
+ext/DynaLoader/dl_aix.xs	aix
+ext/DynaLoader/dl_dld.xs	rsanders
+ext/DynaLoader/dl_dlopen.xs	timb
+ext/DynaLoader/dl_hpux.xs	hpux
+ext/DynaLoader/dl_mpeix.xs	mpeix
+ext/DynaLoader/dl_next.xs	next
+ext/DynaLoader/dl_none.xs	
+ext/DynaLoader/dl_vms.xs	vms
+ext/DynaLoader/dl_vmesa.xs	vmesa
+ext/DynaLoader/dlutils.c	
+ext/DynaLoader/hints/linux.pl	linux
+ext/Errno/*			gbarr
+ext/Fcntl/*			jhi
+ext/GDBM_File/GDBM_File.pm	
+ext/GDBM_File/GDBM_File.xs	
+ext/GDBM_File/Makefile.PL	
+ext/GDBM_File/typemap	
+ext/IO/*			
+ext/IPC/SysV/*			gbarr
+ext/NDBM_File/Makefile.PL	
+ext/NDBM_File/NDBM_File.pm	
+ext/NDBM_File/NDBM_File.xs	
+ext/NDBM_File/hints/dec_osf.pl	dec_osf
+ext/NDBM_File/hints/dynixptx.pl	dynix/ptx
+ext/NDBM_File/hints/solaris.pl	solaris
+ext/NDBM_File/hints/svr4.pl	svr4
+ext/NDBM_File/typemap	
+ext/ODBM_File/Makefile.PL	
+ext/ODBM_File/ODBM_File.pm	
+ext/ODBM_File/ODBM_File.xs	
+ext/ODBM_File/hints/dec_osf.pl	dec_osf
+ext/ODBM_File/hints/hpux.pl	hpux
+ext/ODBM_File/hints/sco.pl	sco
+ext/ODBM_File/hints/solaris.pl	solaris
+ext/ODBM_File/hints/svr4.pl	svr4
+ext/ODBM_File/hints/ultrix.pl
+ext/ODBM_File/typemap	
+ext/Opcode/Makefile.PL	
+ext/Opcode/Opcode.pm	
+ext/Opcode/Opcode.xs	
+ext/Opcode/Safe.pm	
+ext/Opcode/ops.pm	
+ext/POSIX/Makefile.PL	
+ext/POSIX/POSIX.pm	
+ext/POSIX/POSIX.pod	
+ext/POSIX/POSIX.xs	
+ext/POSIX/hints/bsdos.pl	bsdos
+ext/POSIX/hints/dynixptx.pl	dynix/ptx
+ext/POSIX/hints/freebsd.pl	freebsd
+ext/POSIX/hints/linux.pl	linux
+ext/POSIX/hints/netbsd.pl	netbsd
+ext/POSIX/hints/next_3.pl	next
+ext/POSIX/hints/openbsd.pl	openbsd
+ext/POSIX/hints/sunos_4.pl	sunos4
+ext/POSIX/typemap	
+ext/SDBM_File/Makefile.PL	
+ext/SDBM_File/SDBM_File.pm	
+ext/SDBM_File/SDBM_File.xs	
+ext/SDBM_File/sdbm/CHANGES	
+ext/SDBM_File/sdbm/COMPARE	
+ext/SDBM_File/sdbm/Makefile.PL	
+ext/SDBM_File/sdbm/README	
+ext/SDBM_File/sdbm/README.too	
+ext/SDBM_File/sdbm/biblio	
+ext/SDBM_File/sdbm/dba.c	
+ext/SDBM_File/sdbm/dbd.c	
+ext/SDBM_File/sdbm/dbe.1	
+ext/SDBM_File/sdbm/dbe.c	
+ext/SDBM_File/sdbm/dbm.c	
+ext/SDBM_File/sdbm/dbm.h	
+ext/SDBM_File/sdbm/dbu.c	
+ext/SDBM_File/sdbm/grind	
+ext/SDBM_File/sdbm/hash.c	
+ext/SDBM_File/sdbm/linux.patches	
+ext/SDBM_File/sdbm/makefile.sdbm	
+ext/SDBM_File/sdbm/pair.c	
+ext/SDBM_File/sdbm/pair.h	
+ext/SDBM_File/sdbm/readme.ms	
+ext/SDBM_File/sdbm/sdbm.3	
+ext/SDBM_File/sdbm/sdbm.c	
+ext/SDBM_File/sdbm/sdbm.h	
+ext/SDBM_File/sdbm/tune.h	
+ext/SDBM_File/sdbm/util.c	
+ext/SDBM_File/typemap	
+ext/Socket/Makefile.PL	
+ext/Socket/Socket.pm	
+ext/Socket/Socket.xs	
+ext/Thread/Makefile.PL	
+ext/Thread/Notes	
+ext/Thread/README	
+ext/Thread/Thread.pm	
+ext/Thread/Thread.xs	
+ext/Thread/Thread/Queue.pm	
+ext/Thread/Thread/Semaphore.pm	
+ext/Thread/Thread/Signal.pm	
+ext/Thread/Thread/Specific.pm	
+ext/Thread/create.t	
+ext/Thread/die.t	
+ext/Thread/die2.t	
+ext/Thread/io.t	
+ext/Thread/join.t	
+ext/Thread/join2.t	
+ext/Thread/list.t	
+ext/Thread/lock.t	
+ext/Thread/queue.t	
+ext/Thread/specific.t	
+ext/Thread/sync.t	
+ext/Thread/sync2.t	
+ext/Thread/typemap	
+ext/Thread/unsync.t	
+ext/Thread/unsync2.t	
+ext/Thread/unsync3.t	
+ext/Thread/unsync4.t	
+ext/attrs/Makefile.PL	
+ext/attrs/attrs.pm	
+ext/attrs/attrs.xs	
+ext/re/Makefile.PL	
+ext/re/hints/mpeix.pl		mpeix
+ext/re/re.pm			regex
+ext/re/re.xs			regex
+ext/util/make_ext	
+ext/util/mkbootstrap	
+fakethr.h	
+form.h	
+global.sym	
+globals.c	
+globvar.sym	
+gv.c	
+gv.h	
+h2pl/README	
+h2pl/cbreak.pl	
+h2pl/cbreak2.pl	
+h2pl/eg/sizeof.ph	
+h2pl/eg/sys/errno.pl	
+h2pl/eg/sys/ioctl.pl	
+h2pl/eg/sysexits.pl	
+h2pl/getioctlsizes	
+h2pl/mksizes	
+h2pl/mkvars	
+h2pl/tcbreak	
+h2pl/tcbreak2	
+handy.h	
+hints/*				cfg
+hints/3b1.sh	
+hints/3b1cc	
+hints/README.hints	
+hints/aix.sh			aix
+hints/altos486.sh	
+hints/amigaos.sh		amiga
+hints/apollo.sh	
+hints/aux_3.sh	
+hints/beos.sh			beos
+hints/broken-db.msg	
+hints/bsdos.sh			bsdos
+hints/convexos.sh	
+hints/cxux.sh			cxux
+hints/cygwin.sh			cygwinx
+hints/dcosx.sh	
+hints/dec_osf.sh		dec_osf
+hints/dgux.sh			dgux
+hints/dos_djgpp.sh		dos
+hints/dynix.sh			dynix/ptx
+hints/dynixptx.sh		dynix/ptx
+hints/epix.sh	
+hints/esix4.sh	
+hints/fps.sh	
+hints/freebsd.sh		freebsd
+hints/genix.sh	
+hints/greenhills.sh	
+hints/hpux.sh			hpux
+hints/i386.sh	
+hints/irix*			irix
+hints/isc.sh	
+hints/isc_2.sh	
+hints/linux.sh			linux
+hints/lynxos.sh			lynxos
+hints/machten.sh		machten
+hints/machten_2.sh	
+hints/mips.sh	
+hints/mpc.sh	
+hints/mpeix.sh			mpeix
+hints/ncr_tower.sh	
+hints/netbsd.sh			netbsd
+hints/newsos4.sh	
+hints/next*			step
+hints/openbsd.sh		openbsd
+hints/opus.sh	
+hints/os2.sh			os2
+hints/os390.sh			mvs
+hints/posix-bc.sh		posix-bc
+hints/powerux.sh		powerux
+hints/qnx.sh			qnx
+hints/sco.sh	
+hints/sco_2_3_0.sh	
+hints/sco_2_3_1.sh	
+hints/sco_2_3_2.sh	
+hints/sco_2_3_3.sh	
+hints/sco_2_3_4.sh	
+hints/solaris_2.sh		solaris
+hints/stellar.sh	
+hints/sunos_4*			sunos4
+hints/svr4.sh			svr4
+hints/ti1500.sh	
+hints/titanos.sh	
+hints/ultrix_4.sh		ultrix
+hints/umips.sh	
+hints/unicos*			unicos
+hints/unisysdynix.sh	
+hints/utekv.sh	
+hints/uts.sh	
+hints/uwin.sh			uwin
+hints/vmesa.sh			vmesa
+hv.c	
+hv.h	
+installhtml	
+installman	
+installperl	
+intrpvar.h	
+iperlsys.h	
+jpl/*				jpl
+keywords.h	
+keywords.pl	
+lib/AnyDBM_File.pm	
+lib/AutoLoader.pm	
+lib/AutoSplit.pm	
+lib/Benchmark.pm		jhi,timb
+lib/CGI*			cgi
+lib/CPAN*			cpan
+lib/Carp.pm	
+lib/Class/Struct.pm		tchrist
+lib/Cwd.pm	
+lib/Devel/SelfStubber.pm	
+lib/DirHandle.pm	
+lib/English.pm	
+lib/Env.pm	
+lib/Exporter.pm	
+lib/ExtUtils/*			mm
+lib/ExtUtils/Command.pm		nik
+lib/ExtUtils/Embed.pm		doug
+lib/ExtUtils/Installed.pm	alan.burlison
+lib/ExtUtils/Mksymlists.pm	cbail
+lib/ExtUtils/MM_OS2.pm		os2
+lib/ExtUtils/MM_VMS.pm		vms
+lib/ExtUtils/MM_Win32.pm	win32
+lib/ExtUtils/Packlist.pm	alan.burlison
+lib/Fatal.pm	
+lib/File/Basename.pm	
+lib/File/CheckTree.pm	
+lib/File/Compare.pm		nik
+lib/File/Copy.pm		cbail
+lib/File/DosGlob.pm		gsar
+lib/File/Find.pm	
+lib/File/Path.pm		timb,cbail
+lib/File/Spec*			kjahds
+lib/File/Spec/Mac.pm		schinder
+lib/File/Spec/OS2.pm		ilya
+lib/File/Spec/VMS.pm		vms
+lib/File/Spec/Win32.pm		win32
+lib/File/stat.pm		tchrist
+lib/FileCache.pm	
+lib/FileHandle.pm	
+lib/FindBin.pm	
+lib/Getopt/Long.pm		jvromans
+lib/I18N/Collate.pm		jhi
+lib/IPC/Open2.pm	
+lib/IPC/Open3.pm	
+lib/Math/BigFloat.pm		mbiggar
+lib/Math/BigInt.pm		mbiggar
+lib/Math/Complex.pm		complex
+lib/Math/Trig.pm		complex
+lib/Net/Ping.pm	
+lib/Net/hostent.pm		tchrist
+lib/Net/netent.pm		tchrist
+lib/Net/protoent.pm		tchrist
+lib/Net/servent.pm		tchrist
+lib/Pod/Checker.pm		bradapp
+lib/Pod/Functions.pm	
+lib/Pod/Html.pm			tchrist
+lib/Pod/InputObjects.pm		bradapp
+lib/Pod/Parser.pm		bradapp
+lib/Pod/PlainText.pm		bradapp
+lib/Pod/Select.pm		bradapp
+lib/Pod/Text.pm			tchrist
+lib/Pod/Usage.pm		bradapp
+lib/Search/Dict.pm	
+lib/SelectSaver.pm	
+lib/SelfLoader.pm	
+lib/Shell.pm	
+lib/Symbol.pm	
+lib/Sys/Hostname.pm		sundstrom
+lib/Sys/Syslog.pm		tchrist
+lib/Term/Cap.pm	
+lib/Term/Complete.pm		wayne.thompson
+lib/Term/ReadLine.pm	
+lib/Test.pm	
+lib/Test/Harness.pm		k
+lib/Text/Abbrev.pm	
+lib/Text/ParseWords.pm		pomeranz
+lib/Text/Soundex.pm		stok
+lib/Text/Tabs.pm		muir
+lib/Text/Wrap.pm		muir
+lib/Tie/Array.pm		nik
+lib/Tie/Handle.pm	
+lib/Tie/Hash.pm	
+lib/Tie/RefHash.pm		gsar
+lib/Tie/Scalar.pm	
+lib/Tie/SubstrHash.pm	
+lib/Time/Local.pm		pomeranz
+lib/Time/gmtime.pm		tchrist
+lib/Time/localtime.pm		tchrist
+lib/Time/tm.pm			tchrist
+lib/UNIVERSAL.pm	
+lib/User/grent.pm		tchrist
+lib/User/pwent.pm		tchrist
+lib/abbrev.pl	
+lib/assert.pl	
+lib/autouse.pm	
+lib/base.pm	
+lib/bigfloat.pl	
+lib/bigint.pl	
+lib/bigrat.pl	
+lib/blib.pm	
+lib/cacheout.pl	
+lib/charnames.pm		ilya
+lib/chat2.pl	
+lib/complete.pl	
+lib/constant.pm	
+lib/ctime.pl	
+lib/diagnostics.pm		doc
+lib/dotsh.pl	
+lib/dumpvar.pl	
+lib/exceptions.pl	
+lib/fastcwd.pl	
+lib/fields.pm	
+lib/filetest.pm	
+lib/find.pl	
+lib/finddepth.pl	
+lib/flush.pl	
+lib/ftp.pl	
+lib/getcwd.pl	
+lib/getopt.pl	
+lib/getopts.pl	
+lib/hostname.pl	
+lib/importenv.pl	
+lib/integer.pm	
+lib/less.pm	
+lib/lib.pm	
+lib/locale.pm			locale
+lib/look.pl	
+lib/newgetopt.pl	
+lib/open2.pl	
+lib/open3.pl	
+lib/overload.pm			ilya
+lib/perl5db.pl			ilya
+lib/pwd.pl	
+lib/shellwords.pl	
+lib/sigtrap.pm	
+lib/stat.pl	
+lib/strict.pm	
+lib/subs.pm	
+lib/syslog.pl	
+lib/tainted.pl	
+lib/termcap.pl	
+lib/timelocal.pl	
+lib/unicode/*Ethiopic*		dmulholl
+lib/unicode*			lwall
+lib/utf8*			lwall
+lib/validate.pl	
+lib/vars.pm	
+lib/warning.pm			lexwarn
+makeaperl.SH	
+makedepend.SH	
+makedir.SH	
+malloc.c			ilya
+mg.c	
+mg.h	
+minimod.pl	
+miniperlmain.c	
+mpeix/*				mpeix
+mv-if-diff	
+myconfig	
+nostdio.h	
+op.c	
+op.h	
+opcode.h	
+opcode.pl	
+os2/*				ilya
+patchlevel.h	
+perl.c	
+perl.h	
+perl_exp.SH	
+perlio.c	
+perlio.h	
+perlio.sym	
+perlsdio.h	
+perlsfio.h	
+perlsh	
+perlvars.h	
+perly.c	
+perly_c.diff	
+perly.fixer	
+perly.h	
+perly.y	
+plan9/*				plan9
+pod/pod2usage.PL		bradapp
+pod/podchecker.PL		bradapp
+pod/podselect.PL		bradapp
+pod/*				doc
+pod/buildtoc	
+pod/checkpods.PL	
+pod/perl.pod	
+pod/perlapio.pod	
+pod/perlbook.pod	
+pod/perlbot.pod	
+pod/perlcall.pod		pmarquess
+pod/perldata.pod	
+pod/perldebug.pod	
+pod/perldelta.pod	
+pod/perl5005delta.pod	
+pod/perl5004delta.pod	
+pod/perldiag.pod	
+pod/perldsc.pod			tchrist
+pod/perlembed.pod		doug,jon
+pod/perlfaq*			gnat
+pod/perlform.pod	
+pod/perlfunc.pod	
+pod/perlguts.pod	
+pod/perlhist.pod		jhi
+pod/perlipc.pod			tchrist
+pod/perllocale.pod		locale
+pod/perllol.pod			tchrist
+pod/perlmod.pod	
+pod/perlmodinstall.pod		jon
+pod/perlmodlib.pod	
+pod/perlobj.pod	
+pod/perlop.pod	
+pod/perlpod.pod			lwall
+pod/perlport.pod		pudge
+pod/perlre.pod			regex
+pod/perlref.pod	
+pod/perlreftut.pod		mjd
+pod/perlrun.pod	
+pod/perlsec.pod	
+pod/perlstyle.pod	
+pod/perlsub.pod	
+pod/perlsyn.pod	
+pod/perltie.pod			tchrist
+pod/perltoc.pod	
+pod/perltoot.pod		tchrist
+pod/perltrap.pod	
+pod/perlvar.pod	
+pod/perlxs.pod			roehrich
+pod/perlxstut.pod		okamoto
+pod/pod2html.PL	
+pod/pod2latex.PL	
+pod/pod2man.PL	
+pod/pod2text.PL	
+pod/roffitall	
+pod/rofftoc	
+pod/splitman	
+pod/splitpod	
+pp.c	
+pp.h	
+pp.sym	
+pp_ctl.c	
+pp_hot.c	
+pp_proto.h	
+pp_sys.c	
+proto.h	
+qnx/*				qnx
+regcomp.c			regex
+regcomp.h			regex
+regcomp.pl			regex
+regcomp.sym			regex
+regexec.c			regex
+regexp.h			regex
+regnodes.h			regex
+run.c	
+scope.c	
+scope.h	
+sv.c	
+sv.h	
+t/README	
+t/TEST	
+t/UTEST	
+t/base/cond.t	
+t/base/if.t	
+t/base/lex.t	
+t/base/pat.t	
+t/base/rs.t	
+t/base/term.t	
+t/cmd/elsif.t	
+t/cmd/for.t	
+t/cmd/mod.t	
+t/cmd/subval.t	
+t/cmd/switch.t	
+t/cmd/while.t	
+t/comp/cmdopt.t	
+t/comp/colon.t	
+t/comp/cpp.aux	
+t/comp/cpp.t	
+t/comp/decl.t	
+t/comp/multiline.t	
+t/comp/package.t	
+t/comp/proto.t	
+t/comp/redef.t	
+t/comp/require.t	
+t/comp/script.t	
+t/comp/term.t	
+t/comp/use.t	
+t/harness	
+t/io/argv.t	
+t/io/dup.t	
+t/io/fs.t	
+t/io/inplace.t	
+t/io/iprefix.t	
+t/io/pipe.t	
+t/io/print.t	
+t/io/read.t	
+t/io/tell.t	
+t/lib/abbrev.t	
+t/lib/anydbm.t	
+t/lib/autoloader.t	
+t/lib/basename.t	
+t/lib/bigint.t	
+t/lib/bigintpm.t	
+t/lib/cgi-form.t	
+t/lib/cgi-function.t	
+t/lib/cgi-html.t	
+t/lib/cgi-request.t	
+t/lib/charnames.t		ilya
+t/lib/checktree.t	
+t/lib/complex.t			complex
+t/lib/db-btree.t		pmarquess
+t/lib/db-hash.t			pmarquess
+t/lib/db-recno.t		pmarquess
+t/lib/dirhand.t	
+t/lib/dosglob.t	
+t/lib/dumper-ovl.t		gsar
+t/lib/dumper.t			gsar
+t/lib/english.t	
+t/lib/env.t	
+t/lib/errno.t			gbarr
+t/lib/fields.t	
+t/lib/filecache.t	
+t/lib/filecopy.t	
+t/lib/filefind.t	
+t/lib/filehand.t	
+t/lib/filepath.t	
+t/lib/filespec.t		kjahds
+t/lib/findbin.t	
+t/lib/gdbm.t	
+t/lib/getopt.t			jvromans
+t/lib/h2ph*			kstar
+t/lib/hostname.t	
+t/lib/io_*			gbarr
+t/lib/ipc_sysv.t		gbarr
+t/lib/ndbm.t	
+t/lib/odbm.t	
+t/lib/opcode.t	
+t/lib/open2.t	
+t/lib/open3.t	
+t/lib/ops.t	
+t/lib/parsewords.t	
+t/lib/ph.t			kstar
+t/lib/posix.t	
+t/lib/safe1.t	
+t/lib/safe2.t	
+t/lib/sdbm.t	
+t/lib/searchdict.t	
+t/lib/selectsaver.t	
+t/lib/socket.t	
+t/lib/soundex.t	
+t/lib/symbol.t	
+t/lib/texttabs.t		muir
+t/lib/textfill.t		muir
+t/lib/textwrap.t	
+t/lib/thr5005.t	
+t/lib/tie-push.t	
+t/lib/tie-stdarray.t	
+t/lib/tie-stdpush.t	
+t/lib/timelocal.t	
+t/lib/trig.t	
+t/op/append.t	
+t/op/arith.t	
+t/op/array.t	
+t/op/assignwarn.t	
+t/op/auto.t	
+t/op/avhv.t	
+t/op/bop.t	
+t/op/chop.t	
+t/op/closure.t	
+t/op/cmp.t	
+t/op/cond.t	
+t/op/context.t	
+t/op/defins.t	
+t/op/delete.t	
+t/op/die.t	
+t/op/die_exit.t	
+t/op/do.t	
+t/op/each.t	
+t/op/eval.t	
+t/op/exec.t	
+t/op/exp.t	
+t/op/filetest.t	
+t/op/flip.t	
+t/op/fork.t	
+t/op/glob.t	
+t/op/goto.t	
+t/op/goto_xs.t	
+t/op/grent.t	
+t/op/groups.t	
+t/op/gv.t	
+t/op/hashwarn.t	
+t/op/inc.t	
+t/op/index.t	
+t/op/int.t	
+t/op/join.t	
+t/op/lex_assign.t	
+t/op/list.t	
+t/op/local.t	
+t/op/magic.t	
+t/op/method.t	
+t/op/misc.t	
+t/op/mkdir.t	
+t/op/my.t	
+t/op/nothr5005.t	
+t/op/oct.t	
+t/op/ord.t	
+t/op/pack.t	
+t/op/pat.t	
+t/op/pos.t	
+t/op/push.t	
+t/op/pwent.t	
+t/op/quotemeta.t	
+t/op/rand.t	
+t/op/range.t	
+t/op/re_tests			regex
+t/op/read.t	
+t/op/readdir.t	
+t/op/recurse.t	
+t/op/ref.t	
+t/op/regexp.t			regex
+t/op/regexp_noamp.t		regex
+t/op/repeat.t	
+t/op/runlevel.t	
+t/op/sleep.t	
+t/op/sort.t	
+t/op/splice.t	
+t/op/split.t	
+t/op/sprintf.t	
+t/op/stat.t	
+t/op/study.t	
+t/op/subst.t	
+t/op/substr.t	
+t/op/sysio.t	
+t/op/taint.t	
+t/op/tie.t	
+t/op/tiearray.t	
+t/op/tiehandle.t	
+t/op/time.t	
+t/op/tr.t	
+t/op/undef.t	
+t/op/universal.t	
+t/op/unshift.t	
+t/op/vec.t	
+t/op/wantarray.t	
+t/op/write.t	
+t/pod/*				bradapp
+t/pragma/constant.t	
+t/pragma/locale.t		locale
+t/pragma/overload.t		ilya
+t/pragma/strict-refs	
+t/pragma/strict-subs	
+t/pragma/strict-vars	
+t/pragma/strict.t	
+t/pragma/subs.t	
+t/pragma/warn/*			lexwarn
+t/pragma/warn/regcomp		regex
+t/pragma/warn/regexec		regex
+t/pragma/warning.t		lexwarn
+taint.c	
+thrdvar.h	
+thread.h	
+toke.c	
+universal.c	
+unixish.h	
+utf*				lwall
+utils/Makefile
+utils/c2ph.PL			tchrist
+utils/h2ph.PL			kstar
+utils/h2xs.PL	
+utils/perlbug.PL	
+utils/perlcc.PL	
+utils/perldoc.PL	
+utils/pl2pm.PL	
+utils/splain.PL			doc
+vmesa/*				vmesa
+vms/*				vms
+vos/*				vos
+warning.h			lexwarn
+warning.pl			lexwarn
+win32/*
+writemain.SH	
+x2p/EXTERN.h	
+x2p/INTERN.h	
+x2p/Makefile.SH	
+x2p/a2p.c	
+x2p/a2p.h	
+x2p/a2p.pod	
+x2p/a2p.y	
+x2p/a2py.c	
+x2p/cflags.SH	
+x2p/find2perl.PL	
+x2p/hash.c	
+x2p/hash.h	
+x2p/proto.h	
+x2p/s2p.PL	
+x2p/str.c	
+x2p/str.h	
+x2p/util.c	
+x2p/util.h	
+x2p/walk.c	
diff --git a/contrib/perl5/MANIFEST b/contrib/perl5/MANIFEST
index f42a83232662..0a4ed093a107 100644
--- a/contrib/perl5/MANIFEST
+++ b/contrib/perl5/MANIFEST
@@ -1,3 +1,4 @@
+AUTHORS			Contact info for contributors
 Artistic		The "Artistic License"
 Changes			Differences from previous version
 Changes5.000		Differences between 4.x and 5.000
@@ -5,14 +6,15 @@ Changes5.001		Differences between 5.000 and 5.001
 Changes5.002		Differences between 5.001 and 5.002
 Changes5.003		Differences between 5.002 and 5.003
 Changes5.004		Differences between 5.003 and 5.004
+Changes5.005		Differences between 5.004 and 5.005
 Configure		Portability tool
 Copying			The GNU General Public License
 EXTERN.h		Included before foreign .h files
 INSTALL			Detailed installation instructions
 INTERN.h		Included before domestic .h files
+MAINTAIN		Who maintains which files
 MANIFEST		This list of files
 Makefile.SH		A script that generates Makefile
-objXSUB.h		Scoping macros for Perl Object in extensions
 Policy_sh.SH		Hold site-wide preferences between Configure runs.
 Porting/Contract	Social contract for contributed modules in Perl core
 Porting/Glossary	Glossary of config.sh variables
@@ -24,39 +26,41 @@ Porting/fixvars		Find undeclared variables with C compiler and fix em
 Porting/genlog		Generate formatted changelogs by querying p4d
 Porting/makerel		Release making utility
 Porting/p4d2p		Generate standard patches from p4 diffs
+Porting/p4desc		Smarter 'p4 describe', outputs diffs for new files
 Porting/patching.pod	How to report changes made to Perl
 Porting/patchls		Flexible patch file listing utility
 Porting/pumpkin.pod	Guidelines and hints for Perl maintainers
 README			The Instructions
+README.Y2K		Notes about Year 2000 concerns
 README.amiga		Notes about AmigaOS port
 README.apollo		Notes about Apollo DomainOS port
 README.beos		Notes about BeOS port
-README.cygwin32		Notes about Cygwin32 port
+README.cygwin		Notes about Cygwin port
 README.dos		Notes about dos/djgpp port
+README.epoc		Notes about EPOC port
 README.hpux		Notes about HP-UX port
 README.hurd		Notes about GNU/Hurd port
+README.machten		Notes about Power MachTen port
 README.mint		Notes about Atari MiNT port
 README.mpeix		Notes about MPE/iX port
 README.os2		Notes about OS/2 port
 README.os390		Notes about OS/390 (nee MVS) port
 README.plan9		Notes about Plan9 port
+README.posix-bc		Notes about BS2000 POSIX port
 README.qnx		Notes about QNX port
 README.threads		Notes about multithreading
-README.vms		Notes about VMS port
+README.vmesa		Notes about VM/ESA port
+README.vms		Notes about installing the VMS port
 README.vos		Notes about Stratus VOS port
 README.win32		Notes about Win32 port
 Todo			The Wishlist
-Todo-5.005		What needs doing before 5.005 release
-XSlock.h		Include file for extensions built with PERL_OBJECT defined
+Todo-5.6		What needs doing before/during the 5.6.x release cycle
 XSUB.h			Include file for extension subroutines
 apollo/netinet/in.h	Apollo DomainOS port: C header file frontend
 av.c			Array value code
 av.h			Array value header
 beos/nm.c		BeOS port
-bytecode.h		Bytecode header for compiler
-bytecode.pl		Produces byterun.h, byterun.c and ext/B/Asmdata.pm
-byterun.c		Runtime support for compiler-generated bytecode
-byterun.h		Header for byterun.c
+bytecode.pl		Produces ext/ByteLoader/byterun.h, ext/ByteLoader/byterun.c and ext/B/Asmdata.pm
 cc_runtime.h		Macros need by runtime of compiler-generated code
 cflags.SH		A script that emits C compilation flags per file
 config_h.SH		Produces config.h
@@ -65,14 +69,13 @@ configure.com		Configure-equivalent for VMS
 configure.gnu		Crude emulation of GNU configure
 cop.h			Control operator header
 cv.h			Code value header
-cygwin32/cw32imp.h	Cygwin32 port
-cygwin32/gcc2		Cygwin32 port
-cygwin32/ld2		Cygwin32 port
-cygwin32/perlgcc	Cygwin32 port
-cygwin32/perlld		Cygwin32 port
+cygwin/cygwin.c		Additional code for Cygwin port
+cygwin/Makefile.SHs	Shared library generation for Cygwin port
+cygwin/ld2.in		ld wrapper template for Cygwin port
+cygwin/perlld.in	dll generator template for Cygwin port
 deb.c			Debugging routines
-djgpp/config.over	DOS/DJGPP port
-djgpp/configure.bat	DOS/DJGPP port
+djgpp/config.over       DOS/DJGPP port
+djgpp/configure.bat     DOS/DJGPP port
 djgpp/djgpp.c		DOS/DJGPP port
 djgpp/djgppsed.sh	DOS/DJGPP port
 djgpp/fixpmain		DOS/DJGPP port
@@ -90,7 +93,7 @@ eg/cgi/cookie.cgi		CGI example
 eg/cgi/crash.cgi		CGI example
 eg/cgi/customize.cgi		CGI example
 eg/cgi/diff_upload.cgi		CGI example
-eg/cgi/dna.small.gif.uu		Small image for CGI examples
+eg/cgi/dna_small_gif.uu		Small image for CGI examples
 eg/cgi/file_upload.cgi		CGI example
 eg/cgi/frameset.cgi		CGI example
 eg/cgi/index.html		Index page for CGI examples
@@ -103,7 +106,7 @@ eg/cgi/nph-multipart.cgi	CGI example
 eg/cgi/popup.cgi		CGI example
 eg/cgi/save_state.cgi		CGI example
 eg/cgi/tryit.cgi		CGI example
-eg/cgi/wilogo.gif.uu		Small image for CGI examples
+eg/cgi/wilogo_gif.uu		Small image for CGI examples
 eg/changes		A program to list recently changed files
 eg/client		A sample client
 eg/down			A program to do things to subdirectories
@@ -147,10 +150,18 @@ eg/van/vanish		A program to put files in a trashcan
 eg/who			A sample who program
 eg/wrapsuid		A setuid script wrapper generator
 emacs/cperl-mode.el	An alternate perl-mode
+emacs/e2ctags.pl	etags to ctags converter
 emacs/ptags		Creates smart TAGS file
 embed.h			Maps symbols to safer names
-embed.pl		Produces embed.h
+embed.pl		Produces {embed,embedvar,objXSUB,proto}.h, global.sym
 embedvar.h		C namespace management
+epoc/config.sh		EPOC port config.sh template
+epoc/createpkg.pl	EPOC port generate PKG file
+epoc/epoc.c		EPOC port
+epoc/epoc_stubs.c	EPOC port
+epoc/epocish.c		EPOC port
+epoc/epocish.h		EPOC port
+epoc/link.pl            EPOC port link a exe
 ext/B/B.pm		Compiler backend support functions and methods
 ext/B/B.xs		Compiler backend external subroutines
 ext/B/B/Asmdata.pm	Compiler backend data for assembler
@@ -165,6 +176,7 @@ ext/B/B/Disassembler.pm	Compiler Disassembler backend
 ext/B/B/Lint.pm		Compiler Lint backend
 ext/B/B/Showlex.pm	Compiler Showlex backend
 ext/B/B/Stackobj.pm	Compiler stack objects support functions
+ext/B/B/Stash.pm	Compiler module to identify stashes
 ext/B/B/Terse.pm	Compiler Terse backend
 ext/B/B/Xref.pm		Compiler Xref backend
 ext/B/B/assemble	Assemble compiler bytecode
@@ -177,7 +189,7 @@ ext/B/O.pm		Compiler front-end module (-MO=...)
 ext/B/README		Compiler backend README
 ext/B/TESTS		Compiler backend test data
 ext/B/Todo		Compiler backend Todo list
-ext/B/byteperl.c	Bytecode runner
+ext/B/defsubs_h.PL	Generator for constant subroutines
 ext/B/ramblings/cc.notes	Compiler ramblings: notes on CC backend
 ext/B/ramblings/curcop.runtime	Compiler ramblings: notes on curcop use
 ext/B/ramblings/flip-flop	Compiler ramblings: notes on flip-flop
@@ -185,54 +197,91 @@ ext/B/ramblings/magic		Compiler ramblings: notes on magic
 ext/B/ramblings/reg.alloc	Compiler ramblings: register allocation
 ext/B/ramblings/runtime.porting	Compiler ramblings: porting PP enging
 ext/B/typemap		Compiler backend interface types
+ext/ByteLoader/ByteLoader.pm	Bytecode loader Perl module
+ext/ByteLoader/ByteLoader.xs	Bytecode loader external subroutines
+ext/ByteLoader/Makefile.PL	Bytecode loader makefile writer
+ext/ByteLoader/bytecode.h	Bytecode header for bytecode loader
+ext/ByteLoader/byterun.c	Runtime support for bytecode loader
+ext/ByteLoader/byterun.h	Header for byterun.c
+ext/ByteLoader/hints/sunos.pl	Hints for named architecture
 ext/DB_File/Changes		Berkeley DB extension change log
 ext/DB_File/DB_File.pm		Berkeley DB extension Perl module
 ext/DB_File/DB_File.xs		Berkeley DB extension external subroutines
 ext/DB_File/DB_File_BS		Berkeley DB extension mkbootstrap fodder
 ext/DB_File/Makefile.PL		Berkeley DB extension makefile writer
 ext/DB_File/dbinfo		Berkeley DB database version checker
-ext/DB_File/hints/dynixptx.pl	Hints for DB_File for named architecture
+ext/DB_File/hints/dynixptx.pl	Hint for DB_File for named architecture
+ext/DB_File/hints/sco.pl	Hint for DB_File for named architecture
 ext/DB_File/typemap		Berkeley DB extension interface types
+ext/DB_File/version.c		Berkeley DB extension interface version check
 ext/Data/Dumper/Changes		Data pretty printer, changelog
 ext/Data/Dumper/Dumper.pm	Data pretty printer, module
 ext/Data/Dumper/Dumper.xs	Data pretty printer, externals
 ext/Data/Dumper/Makefile.PL	Data pretty printer, makefile writer
 ext/Data/Dumper/Todo		Data pretty printer, futures
+ext/Devel/DProf/Changes		Perl code profiler changelog
+ext/Devel/DProf/DProf.pm	Perl code profiler
+ext/Devel/DProf/DProf.xs	Perl code profiler
+ext/Devel/DProf/Makefile.PL	Perl code profiler makefile writer
+ext/Devel/DProf/Todo		Perl code profiler todo list
+ext/Devel/Peek/Changes		Data debugging tool, changelog
+ext/Devel/Peek/Makefile.PL	Data debugging tool, makefile writer
+ext/Devel/Peek/Peek.pm		Data debugging tool, module and pod
+ext/Devel/Peek/Peek.xs		Data debugging tool, externals
 ext/DynaLoader/DynaLoader_pm.PL	Dynamic Loader perl module
 ext/DynaLoader/Makefile.PL	Dynamic Loader makefile writer
 ext/DynaLoader/README		Dynamic Loader notes and intro
+ext/DynaLoader/XSLoader_pm.PL	Simple XS Loader perl module
 ext/DynaLoader/dl_aix.xs	AIX implementation
 ext/DynaLoader/dl_beos.xs	BeOS implementation
-ext/DynaLoader/dl_cygwin32.xs	Cygwin32 implementation
 ext/DynaLoader/dl_dld.xs	GNU dld style implementation
 ext/DynaLoader/dl_dlopen.xs	BSD/SunOS4&5 dlopen() style implementation
+ext/DynaLoader/dl_dyld.xs	NeXT/Apple dyld implementation
 ext/DynaLoader/dl_hpux.xs	HP-UX implementation
 ext/DynaLoader/dl_mpeix.xs	MPE/iX implementation
-ext/DynaLoader/dl_next.xs	Next implementation
+ext/DynaLoader/dl_next.xs	NeXT implementation
 ext/DynaLoader/dl_none.xs	Stub implementation
+ext/DynaLoader/dl_vmesa.xs	VM/ESA implementation
 ext/DynaLoader/dl_vms.xs	VMS implementation
 ext/DynaLoader/dlutils.c	Dynamic loader utilities for dl_*.xs files
+ext/DynaLoader/hints/aix.pl	Hint for DynaLoader for named architecture
+ext/DynaLoader/hints/linux.pl	Hint for DynaLoader for named architecture
+ext/DynaLoader/hints/openbsd.pl	Hint for DynaLoader for named architecture
 ext/Errno/ChangeLog		Errno perl module change log
 ext/Errno/Errno_pm.PL		Errno perl module create script
 ext/Errno/Makefile.PL		Errno extension makefile writer
 ext/Fcntl/Fcntl.pm		Fcntl extension Perl module
 ext/Fcntl/Fcntl.xs		Fcntl extension external subroutines
 ext/Fcntl/Makefile.PL		Fcntl extension makefile writer
+ext/File/Glob/Changes		File::Glob extension changelog
+ext/File/Glob/Glob.pm		File::Glob extension module
+ext/File/Glob/Glob.xs		File::Glob extension external subroutines
+ext/File/Glob/Makefile.PL	File::Glob extension makefile writer
+ext/File/Glob/TODO		File::Glob extension todo list
+ext/File/Glob/bsd_glob.c	File::Glob extension run time code
+ext/File/Glob/bsd_glob.h	File::Glob extension header file
 ext/GDBM_File/GDBM_File.pm	GDBM extension Perl module
 ext/GDBM_File/GDBM_File.xs	GDBM extension external subroutines
 ext/GDBM_File/Makefile.PL	GDBM extension makefile writer
 ext/GDBM_File/hints/sco.pl	Hint for GDBM_File for named architecture
 ext/GDBM_File/typemap		GDBM extension interface types
+ext/IO/ChangeLog		IO perl module change log
 ext/IO/IO.pm			Top-level interface to IO::* classes
 ext/IO/IO.xs			IO extension external subroutines
 ext/IO/Makefile.PL		IO extension makefile writer
 ext/IO/README			IO extension maintenance notice
-ext/IO/lib/IO/File.pm		IO::File extension Perl module
-ext/IO/lib/IO/Handle.pm		IO::Handle extension Perl module
-ext/IO/lib/IO/Pipe.pm		IO::Pipe extension Perl module
-ext/IO/lib/IO/Seekable.pm	IO::Seekable extension Perl module
-ext/IO/lib/IO/Select.pm		IO::Select extension Perl module
-ext/IO/lib/IO/Socket.pm		IO::Socket extension Perl module
+ext/IO/lib/IO/Dir.pm		IO directory reading package
+ext/IO/lib/IO/File.pm		IO file handle package
+ext/IO/lib/IO/Handle.pm		IO base handle package
+ext/IO/lib/IO/Pipe.pm		IO pipe package
+ext/IO/lib/IO/Poll.pm		IO system poll() interface
+ext/IO/lib/IO/Seekable.pm	IO methods for seekable handles
+ext/IO/lib/IO/Select.pm		IO system select() interface
+ext/IO/lib/IO/Socket.pm		IO socket handle package
+ext/IO/lib/IO/Socket/INET.pm	IO INET specific socket methods
+ext/IO/lib/IO/Socket/UNIX.pm	IO UNIX specific socket methods
+ext/IO/poll.c			IO poll() emulation using select()
+ext/IO/poll.h			IO poll() emulation using select()
 ext/IPC/SysV/ChangeLog		IPC::SysV extension Perl module
 ext/IPC/SysV/MANIFEST		IPC::SysV extension Perl module
 ext/IPC/SysV/Makefile.PL	IPC::SysV extension Perl module
@@ -241,19 +290,24 @@ ext/IPC/SysV/README		IPC::SysV extension Perl module
 ext/IPC/SysV/Semaphore.pm	IPC::SysV extension Perl module
 ext/IPC/SysV/SysV.pm		IPC::SysV extension Perl module
 ext/IPC/SysV/SysV.xs		IPC::SysV extension Perl module
+ext/IPC/SysV/hints/cygwin.pl	Hint for IPC::SysV for named architecture
+ext/IPC/SysV/hints/next_3.pl	Hint for IPC::SysV for named architecture
 ext/IPC/SysV/t/msg.t		IPC::SysV extension Perl module
 ext/IPC/SysV/t/sem.t		IPC::SysV extension Perl module
 ext/NDBM_File/Makefile.PL	NDBM extension makefile writer
 ext/NDBM_File/NDBM_File.pm	NDBM extension Perl module
 ext/NDBM_File/NDBM_File.xs	NDBM extension external subroutines
+ext/NDBM_File/hints/cygwin.pl	Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/dec_osf.pl	Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/dynixptx.pl	Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/solaris.pl	Hint for NDBM_File for named architecture
+ext/NDBM_File/hints/sco.pl	Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/svr4.pl	Hint for NDBM_File for named architecture
 ext/NDBM_File/typemap		NDBM extension interface types
 ext/ODBM_File/Makefile.PL	ODBM extension makefile writer
 ext/ODBM_File/ODBM_File.pm	ODBM extension Perl module
 ext/ODBM_File/ODBM_File.xs	ODBM extension external subroutines
+ext/ODBM_File/hints/cygwin.pl	Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/dec_osf.pl	Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/hpux.pl	Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/sco.pl	Hint for ODBM_File for named architecture
@@ -272,11 +326,11 @@ ext/POSIX/POSIX.pod		POSIX extension documentation
 ext/POSIX/POSIX.xs		POSIX extension external subroutines
 ext/POSIX/hints/bsdos.pl	Hint for POSIX for named architecture
 ext/POSIX/hints/dynixptx.pl	Hint for POSIX for named architecture
-ext/POSIX/hints/freebsd.pl	Hint for POSIX for named architecture
-ext/POSIX/hints/linux.pl	Hint for POSIX for named architecture
-ext/POSIX/hints/mint.pl		Hint for POSIX for named architecture
-ext/POSIX/hints/netbsd.pl	Hint for POSIX for named architecture
-ext/POSIX/hints/next_3.pl	Hint for POSIX for named architecture
+ext/POSIX/hints/freebsd.pl      Hint for POSIX for named architecture
+ext/POSIX/hints/linux.pl        Hint for POSIX for named architecture
+ext/POSIX/hints/mint.pl         Hint for POSIX for named architecture
+ext/POSIX/hints/netbsd.pl       Hint for POSIX for named architecture
+ext/POSIX/hints/next_3.pl       Hint for POSIX for named architecture
 ext/POSIX/hints/openbsd.pl	Hint for POSIX for named architecture
 ext/POSIX/hints/sunos_4.pl	Hint for POSIX for named architecture
 ext/POSIX/typemap		POSIX extension interface types
@@ -312,6 +366,12 @@ ext/SDBM_File/typemap		SDBM extension interface types
 ext/Socket/Makefile.PL	Socket extension makefile writer
 ext/Socket/Socket.pm	Socket extension Perl module
 ext/Socket/Socket.xs	Socket extension external subroutines
+ext/Sys/Hostname/Makefile.PL	Sys::Hostname extension makefile writer
+ext/Sys/Hostname/Hostname.pm	Sys::Hostname extension Perl module
+ext/Sys/Hostname/Hostname.xs	Sys::Hostname extension external subroutines
+ext/Sys/Syslog/Makefile.PL	Sys::Syslog extension makefile writer
+ext/Sys/Syslog/Syslog.pm	Sys::Syslog extension Perl module
+ext/Sys/Syslog/Syslog.xs	Sys::Syslog extension external subroutines
 ext/Thread/Makefile.PL	Thread extension makefile writer
 ext/Thread/Notes	Thread notes
 ext/Thread/README	Thread README
@@ -351,6 +411,7 @@ fakethr.h		Fake threads header
 form.h			Public declarations for the above
 global.sym		Symbols that need hiding when embedded
 globals.c		File to declare global symbols (for shared library)
+globvar.sym		Global variables that need hiding when embedded
 gv.c			Glob value code
 gv.h			Glob value header
 h2pl/README		How to turn .ph files into .pl files
@@ -379,7 +440,8 @@ hints/broken-db.msg	Warning message for systems with broken DB library
 hints/bsdos.sh		Hints for named architecture
 hints/convexos.sh	Hints for named architecture
 hints/cxux.sh		Hints for named architecture
-hints/cygwin32.sh	Hints for named architecture
+hints/cygwin.sh		Hints for named architecture
+hints/darwin.sh		Hints for named architecture
 hints/dcosx.sh		Hints for named architecture
 hints/dec_osf.sh	Hints for named architecture
 hints/dgux.sh		Hints for named architecture
@@ -420,8 +482,10 @@ hints/openbsd.sh	Hints for named architecture
 hints/opus.sh		Hints for named architecture
 hints/os2.sh		Hints for named architecture
 hints/os390.sh		Hints for named architecture
+hints/posix-bc.sh	Hints for named architecture
 hints/powerux.sh	Hints for named architecture
 hints/qnx.sh		Hints for named architecture
+hints/rhapsody.sh	Hints for named architecture
 hints/sco.sh		Hints for named architecture
 hints/sco_2_3_0.sh	Hints for named architecture
 hints/sco_2_3_1.sh	Hints for named architecture
@@ -433,6 +497,7 @@ hints/stellar.sh	Hints for named architecture
 hints/sunos_4_0.sh	Hints for named architecture
 hints/sunos_4_1.sh	Hints for named architecture
 hints/svr4.sh		Hints for named architecture
+hints/svr5.sh		Hints for named architecture
 hints/ti1500.sh		Hints for named architecture
 hints/titanos.sh	Hints for named architecture
 hints/ultrix_4.sh	Hints for named architecture
@@ -443,6 +508,7 @@ hints/unisysdynix.sh	Hints for named architecture
 hints/utekv.sh		Hints for named architecture
 hints/uts.sh		Hints for named architecture
 hints/uwin.sh		Hints for named architecture
+hints/vmesa.sh		Hints for named architecture
 hv.c			Hash value code
 hv.h			Hash value header
 installhtml		Perl script to install html files for pods
@@ -450,6 +516,43 @@ installman		Perl script to install man pages for pods
 installperl		Perl script to do "make install" dirty work
 intrpvar.h		Variables held in each interpreter instance
 iperlsys.h		Perl's interface to the system
+jpl/JNI/Changes		Java Native Interface changes
+jpl/JNI/Closer.java	Java Native Interface example
+jpl/JNI/JNI.pm		Java Native Interface module
+jpl/JNI/JNI.xs		Java Native Interface module
+jpl/JNI/JNIConfig	Java Native Interface config
+jpl/JNI/JNIConfig.Win32	Java Native Interface config
+jpl/JNI/JNIConfig.kaffe	Java Native Interface config
+jpl/JNI/JNIConfig.noembed	Java Native Interface config
+jpl/JNI/JNIConfig.standard	Java Native Interface config
+jpl/JNI/Makefile.PL	Java Native Interface makefile generator
+jpl/JNI/test.pl		Java Native Interface tests
+jpl/JNI/typemap		Java/Perl interface typemap
+jpl/JNI/typemap.gcc	Java/Perl interface typemap
+jpl/JNI/typemap.win32	Java/Perl interface typemap
+jpl/JPL/AutoLoader.pm	Java/Perl compiler module
+jpl/JPL/Class.pm	Java/Perl compiler module
+jpl/JPL/Compile.pm	Java/Perl compiler module
+jpl/JPL/Makefile.PL	Java/Perl makefile generator
+jpl/JPL_Rolo/JPL_Rolo.jpl			Rolodex sample application
+jpl/JPL_Rolo/Makefile.PL			Makefile generator
+jpl/JPL_Rolo/README				Instructions
+jpl/JPL_Rolo/cardfile				Rolodex sample application
+jpl/PerlInterpreter/Makefile.PL			Makefile generator
+jpl/PerlInterpreter/PerlInterpreter.c		Perl interpreter abstraction
+jpl/PerlInterpreter/PerlInterpreter.h		Perl interpreter abstraction
+jpl/PerlInterpreter/PerlInterpreter.java	Perl interpreter abstraction
+jpl/README					JPL instructions
+jpl/SETVARS.PL					JPL setup
+jpl/Sample/Makefile.PL				JPL sample makefile generator
+jpl/Sample/Sample.jpl				JPL sample
+jpl/Test/Makefile.PL				JPL tests makefile generator
+jpl/Test/Test.jpl				JPL tests
+jpl/bin/jpl					JPL compiler
+jpl/get_jdk/README	Instructions for using get_jdk.pl
+jpl/get_jdk/get_jdk.pl	JDK download tool
+jpl/get_jdk/jdk_hosts	JDK availability list
+jpl/install-jpl		JPL install utility
 keywords.h		The keyword numbers
 keywords.pl		Program to write keywords.h
 lib/AnyDBM_File.pm	Perl module to emulate dbmopen
@@ -461,25 +564,30 @@ lib/CGI/Apache.pm	Support for Apache's Perl module
 lib/CGI/Carp.pm		Log server errors with helpful context
 lib/CGI/Cookie.pm	Interface to Netscape Cookies
 lib/CGI/Fast.pm		Support for FastCGI (persistent server process)
+lib/CGI/Pretty.pm	Output nicely formatted HTML
 lib/CGI/Push.pm		Support for server push
 lib/CGI/Switch.pm	Simple interface for multiple server types
 lib/CPAN.pm		Interface to Comprehensive Perl Archive Network
 lib/CPAN/FirstTime.pm	Utility for creating CPAN config files
 lib/CPAN/Nox.pm		Runs CPAN while avoiding compiled extensions
 lib/Carp.pm		Error message base class
+lib/Carp/Heavy.pm	Error message workhorse
 lib/Class/Struct.pm	Declare struct-like datatypes as Perl classes
 lib/Cwd.pm		Various cwd routines (getcwd, fastcwd, chdir)
-lib/Devel/SelfStubber.pm	Generate stubs for SelfLoader.pm
+lib/DB.pm		Debugger API (draft)
+lib/Devel/SelfStubber.pm Generate stubs for SelfLoader.pm
 lib/DirHandle.pm	like FileHandle only for directories
 lib/Dumpvalue.pm	Screen dump of perl values
 lib/English.pm		Readable aliases for short variables
 lib/Env.pm		Map environment into ordinary variables
 lib/Exporter.pm		Exporter base class
+lib/Exporter/Heavy.pm	Complicated routines for Exporter
 lib/ExtUtils/Command.pm	Utilities for Make on non-UNIX platforms
 lib/ExtUtils/Embed.pm	Utilities for embedding Perl in C programs
 lib/ExtUtils/Install.pm	Handles 'make install' on extensions
 lib/ExtUtils/Installed.pm	Information on installed extensions
 lib/ExtUtils/Liblist.pm	Locates libraries
+lib/ExtUtils/MM_Cygwin.pm	MakeMaker methods for Cygwin
 lib/ExtUtils/MM_OS2.pm		MakeMaker methods for OS/2
 lib/ExtUtils/MM_Unix.pm		MakeMaker base class for Unix
 lib/ExtUtils/MM_VMS.pm		MakeMaker methods for VMS
@@ -502,6 +610,7 @@ lib/File/DosGlob.pm	Win32 DOS-globbing module
 lib/File/Find.pm	Routines to do a find
 lib/File/Path.pm	Do things like `mkdir -p' and `rm -r'
 lib/File/Spec.pm	portable operations on file names
+lib/File/Spec/Functions.pm	Function interface to File::Spec object methods
 lib/File/Spec/Mac.pm	portable operations on Mac file names
 lib/File/Spec/OS2.pm	portable operations on OS2 file names
 lib/File/Spec/Unix.pm	portable operations on Unix file names
@@ -525,16 +634,26 @@ lib/Net/hostent.pm	By-name interface to Perl's builtin gethost*
 lib/Net/netent.pm	By-name interface to Perl's builtin getnet*
 lib/Net/protoent.pm	By-name interface to Perl's builtin getproto*
 lib/Net/servent.pm	By-name interface to Perl's builtin getserv*
+lib/Pod/Checker.pm	Pod-Parser - check POD documents for syntax errors
+lib/Pod/Find.pm		used by pod/splitpod
 lib/Pod/Functions.pm	used by pod/splitpod
 lib/Pod/Html.pm		Convert POD data to HTML
-lib/Pod/Text.pm		Convert POD data to formatted ASCII text
+lib/Pod/InputObjects.pm	Pod-Parser - define objects for input streams
+lib/Pod/Man.pm		Convert POD data to *roff
+lib/Pod/ParseUtils.pm	Pod-Parser - pod utility functions
+lib/Pod/Parser.pm	Pod-Parser - define base class for parsing POD
+lib/Pod/Plainer.pm	Pod migration utility module
+lib/Pod/Select.pm	Pod-Parser - select portions of POD docs
+lib/Pod/Text.pm		Pod-Parser - convert POD data to formatted ASCII text
+lib/Pod/Text/Color.pm	Convert POD data to color ASCII text
+lib/Pod/Text/Termcap.pm	Convert POD data to ASCII text with format escapes
+lib/Pod/Usage.pm	Pod-Parser - print usage messages
 lib/Search/Dict.pm	Perform binary search on dictionaries
 lib/SelectSaver.pm	Enforce proper select scoping
 lib/SelfLoader.pm	Load functions only on demand
 lib/Shell.pm		Make AUTOLOADed system() calls
 lib/Symbol.pm		Symbol table manipulation routines
-lib/Sys/Hostname.pm	Hostname methods
-lib/Sys/Syslog.pm	Perl module supporting syslogging
+lib/Term/ANSIColor.pm	Perl module supporting termcap usage
 lib/Term/Cap.pm		Perl module supporting termcap usage
 lib/Term/Complete.pm	A command completion subroutine
 lib/Term/ReadLine.pm	Stub readline library
@@ -560,14 +679,18 @@ lib/User/grent.pm	By-name interface to Perl's builtin getgr*
 lib/User/pwent.pm	By-name interface to Perl's builtin getpw*
 lib/abbrev.pl		An abbreviation table builder
 lib/assert.pl		assertion and panic with stack trace
+lib/attributes.pm	For "sub foo : attrlist"
 lib/autouse.pm		Load and call a function only when it's used
 lib/base.pm		Establish IS-A relationship at compile time
 lib/bigfloat.pl		An arbitrary precision floating point package
 lib/bigint.pl		An arbitrary precision integer arithmetic package
 lib/bigrat.pl		An arbitrary precision rational arithmetic package
 lib/blib.pm		For "use blib"
+lib/bytes.pm		Pragma to enable byte operations
+lib/bytes_heavy.pl	Support routines for byte pragma
 lib/cacheout.pl		Manages output filehandles when you need too many
-lib/chat2.pl		Obsolete ipc library (use Comm.pm etc instead)
+lib/charnames.pm	Character names
+lib/chat2.pl            Obsolete ipc library (use Comm.pm etc instead)
 lib/complete.pl		A command completion subroutine
 lib/constant.pm		For "use constant"
 lib/ctime.pl		A ctime workalike
@@ -577,6 +700,7 @@ lib/dumpvar.pl		A variable dumper
 lib/exceptions.pl	catch and throw routines
 lib/fastcwd.pl		a faster but more dangerous getcwd
 lib/fields.pm		Set up object field names for pseudo-hash-using classes
+lib/filetest.pm		For "use filetest"
 lib/find.pl		A find emulator--used by find2perl
 lib/finddepth.pl	A depth-first find emulator--used by find2perl
 lib/flush.pl		Routines to do single flush
@@ -592,6 +716,7 @@ lib/lib.pm		For "use lib"
 lib/locale.pm		For "use locale"
 lib/look.pl		A "look" equivalent
 lib/newgetopt.pl	A perl library supporting long option parsing
+lib/open.pm		Pragma to specify default I/O disciplines
 lib/open2.pl		Open a two-ended pipe (uses IPC::Open2)
 lib/open3.pl		Open a three-ended pipe (uses IPC::Open3)
 lib/overload.pm		Module for overloading perl operators
@@ -606,9 +731,218 @@ lib/syslog.pl		Perl library supporting syslogging
 lib/tainted.pl		Old code for tainting
 lib/termcap.pl		Perl library supporting termcap usage
 lib/timelocal.pl	Perl library supporting inverse of localtime, gmtime
+lib/unicode/ArabLink.pl				Unicode character database
+lib/unicode/ArabLnkGrp.pl			Unicode character database
+lib/unicode/ArabShap.txt			Unicode character database
+lib/unicode/Bidirectional.pl			Unicode character database
+lib/unicode/Block.pl				Unicode character database
+lib/unicode/Blocks.txt				Unicode character database
+lib/unicode/Category.pl				Unicode character database
+lib/unicode/CombiningClass.pl			Unicode character database
+lib/unicode/CompExcl.txt			Unicode character database
+lib/unicode/Decomposition.pl			Unicode character database
+lib/unicode/EAWidth.txt				Unicode character database
+lib/unicode/In/AlphabeticPresentationForms.pl	Unicode character database
+lib/unicode/In/Arabic.pl			Unicode character database
+lib/unicode/In/ArabicPresentationForms-A.pl	Unicode character database
+lib/unicode/In/ArabicPresentationForms-B.pl	Unicode character database
+lib/unicode/In/Armenian.pl			Unicode character database
+lib/unicode/In/Arrows.pl			Unicode character database
+lib/unicode/In/BasicLatin.pl			Unicode character database
+lib/unicode/In/Bengali.pl			Unicode character database
+lib/unicode/In/BlockElements.pl			Unicode character database
+lib/unicode/In/Bopomofo.pl			Unicode character database
+lib/unicode/In/BopomofoExtended.pl		Unicode character database
+lib/unicode/In/BoxDrawing.pl			Unicode character database
+lib/unicode/In/BraillePatterns.pl		Unicode character database
+lib/unicode/In/CJKCompatibility.pl		Unicode character database
+lib/unicode/In/CJKCompatibilityForms.pl		Unicode character database
+lib/unicode/In/CJKCompatibilityIdeographs.pl	Unicode character database
+lib/unicode/In/CJKRadicalsSupplement.pl		Unicode character database
+lib/unicode/In/CJKSymbolsandPunctuation.pl	Unicode character database
+lib/unicode/In/CJKUnifiedIdeographs.pl		Unicode character database
+lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl	Unicode character database
+lib/unicode/In/Cherokee.pl			Unicode character database
+lib/unicode/In/CombiningDiacriticalMarks.pl	Unicode character database
+lib/unicode/In/CombiningHalfMarks.pl		Unicode character database
+lib/unicode/In/CombiningMarksforSymbols.pl	Unicode character database
+lib/unicode/In/ControlPictures.pl		Unicode character database
+lib/unicode/In/CurrencySymbols.pl		Unicode character database
+lib/unicode/In/Cyrillic.pl			Unicode character database
+lib/unicode/In/Devanagari.pl			Unicode character database
+lib/unicode/In/Dingbats.pl			Unicode character database
+lib/unicode/In/EnclosedAlphanumerics.pl		Unicode character database
+lib/unicode/In/EnclosedCJKLettersandMonths.pl	Unicode character database
+lib/unicode/In/Ethiopic.pl			Unicode character database
+lib/unicode/In/GeneralPunctuation.pl		Unicode character database
+lib/unicode/In/GeometricShapes.pl		Unicode character database
+lib/unicode/In/Georgian.pl			Unicode character database
+lib/unicode/In/Greek.pl				Unicode character database
+lib/unicode/In/GreekExtended.pl			Unicode character database
+lib/unicode/In/Gujarati.pl			Unicode character database
+lib/unicode/In/Gurmukhi.pl			Unicode character database
+lib/unicode/In/HalfwidthandFullwidthForms.pl	Unicode character database
+lib/unicode/In/HangulCompatibilityJamo.pl	Unicode character database
+lib/unicode/In/HangulJamo.pl			Unicode character database
+lib/unicode/In/HangulSyllables.pl		Unicode character database
+lib/unicode/In/Hebrew.pl			Unicode character database
+lib/unicode/In/HighPrivateUseSurrogates.pl	Unicode character database
+lib/unicode/In/HighSurrogates.pl		Unicode character database
+lib/unicode/In/Hiragana.pl			Unicode character database
+lib/unicode/In/IPAExtensions.pl			Unicode character database
+lib/unicode/In/IdeographicDescriptionCharacters.pl	Unicode character database
+lib/unicode/In/Kanbun.pl			Unicode character database
+lib/unicode/In/KangxiRadicals.pl		Unicode character database
+lib/unicode/In/Kannada.pl			Unicode character database
+lib/unicode/In/Katakana.pl			Unicode character database
+lib/unicode/In/Khmer.pl				Unicode character database
+lib/unicode/In/Lao.pl				Unicode character database
+lib/unicode/In/Latin-1Supplement.pl		Unicode character database
+lib/unicode/In/LatinExtended-A.pl		Unicode character database
+lib/unicode/In/LatinExtended-B.pl		Unicode character database
+lib/unicode/In/LatinExtendedAdditional.pl	Unicode character database
+lib/unicode/In/LetterlikeSymbols.pl		Unicode character database
+lib/unicode/In/LowSurrogates.pl			Unicode character database
+lib/unicode/In/Malayalam.pl			Unicode character database
+lib/unicode/In/MathematicalOperators.pl		Unicode character database
+lib/unicode/In/MiscellaneousSymbols.pl		Unicode character database
+lib/unicode/In/MiscellaneousTechnical.pl	Unicode character database
+lib/unicode/In/Mongolian.pl			Unicode character database
+lib/unicode/In/Myanmar.pl			Unicode character database
+lib/unicode/In/NumberForms.pl			Unicode character database
+lib/unicode/In/Ogham.pl				Unicode character database
+lib/unicode/In/OpticalCharacterRecognition.pl	Unicode character database
+lib/unicode/In/Oriya.pl				Unicode character database
+lib/unicode/In/PrivateUse.pl			Unicode character database
+lib/unicode/In/Runic.pl				Unicode character database
+lib/unicode/In/Sinhala.pl			Unicode character database
+lib/unicode/In/SmallFormVariants.pl		Unicode character database
+lib/unicode/In/SpacingModifierLetters.pl	Unicode character database
+lib/unicode/In/Specials.pl			Unicode character database
+lib/unicode/In/SuperscriptsandSubscripts.pl	Unicode character database
+lib/unicode/In/Syriac.pl			Unicode character database
+lib/unicode/In/Tamil.pl				Unicode character database
+lib/unicode/In/Telugu.pl			Unicode character database
+lib/unicode/In/Thaana.pl			Unicode character database
+lib/unicode/In/Thai.pl				Unicode character database
+lib/unicode/In/Tibetan.pl			Unicode character database
+lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl	Unicode character database
+lib/unicode/In/YiRadicals.pl			Unicode character database
+lib/unicode/In/YiSyllables.pl			Unicode character database
+lib/unicode/Index.txt				Unicode character database
+lib/unicode/Is/ASCII.pl				Unicode character database
+lib/unicode/Is/Alnum.pl				Unicode character database
+lib/unicode/Is/Alpha.pl				Unicode character database
+lib/unicode/Is/BidiAN.pl			Unicode character database
+lib/unicode/Is/BidiB.pl				Unicode character database
+lib/unicode/Is/BidiCS.pl			Unicode character database
+lib/unicode/Is/BidiEN.pl			Unicode character database
+lib/unicode/Is/BidiES.pl			Unicode character database
+lib/unicode/Is/BidiET.pl			Unicode character database
+lib/unicode/Is/BidiL.pl				Unicode character database
+lib/unicode/Is/BidiON.pl			Unicode character database
+lib/unicode/Is/BidiR.pl				Unicode character database
+lib/unicode/Is/BidiS.pl				Unicode character database
+lib/unicode/Is/BidiWS.pl			Unicode character database
+lib/unicode/Is/C.pl				Unicode character database
+lib/unicode/Is/Cc.pl				Unicode character database
+lib/unicode/Is/Cn.pl				Unicode character database
+lib/unicode/Is/Cntrl.pl				Unicode character database
+lib/unicode/Is/Co.pl				Unicode character database
+lib/unicode/Is/DCcircle.pl			Unicode character database
+lib/unicode/Is/DCcompat.pl			Unicode character database
+lib/unicode/Is/DCfinal.pl			Unicode character database
+lib/unicode/Is/DCfont.pl			Unicode character database
+lib/unicode/Is/DCinital.pl			Unicode character database
+lib/unicode/Is/DCinitial.pl			Unicode character database
+lib/unicode/Is/DCisolated.pl			Unicode character database
+lib/unicode/Is/DCnarrow.pl			Unicode character database
+lib/unicode/Is/DCnoBreak.pl			Unicode character database
+lib/unicode/Is/DCsmall.pl			Unicode character database
+lib/unicode/Is/DCsquare.pl			Unicode character database
+lib/unicode/Is/DCsub.pl				Unicode character database
+lib/unicode/Is/DCsuper.pl			Unicode character database
+lib/unicode/Is/DCvertical.pl			Unicode character database
+lib/unicode/Is/DCwide.pl			Unicode character database
+lib/unicode/Is/DecoCanon.pl			Unicode character database
+lib/unicode/Is/DecoCompat.pl			Unicode character database
+lib/unicode/Is/Digit.pl				Unicode character database
+lib/unicode/Is/Graph.pl				Unicode character database
+lib/unicode/Is/L.pl				Unicode character database
+lib/unicode/Is/Ll.pl				Unicode character database
+lib/unicode/Is/Lm.pl				Unicode character database
+lib/unicode/Is/Lo.pl				Unicode character database
+lib/unicode/Is/Lower.pl				Unicode character database
+lib/unicode/Is/Lt.pl				Unicode character database
+lib/unicode/Is/Lu.pl				Unicode character database
+lib/unicode/Is/M.pl				Unicode character database
+lib/unicode/Is/Mc.pl				Unicode character database
+lib/unicode/Is/Mirrored.pl			Unicode character database
+lib/unicode/Is/Mn.pl				Unicode character database
+lib/unicode/Is/N.pl				Unicode character database
+lib/unicode/Is/Nd.pl				Unicode character database
+lib/unicode/Is/No.pl				Unicode character database
+lib/unicode/Is/P.pl				Unicode character database
+lib/unicode/Is/Pd.pl				Unicode character database
+lib/unicode/Is/Pe.pl				Unicode character database
+lib/unicode/Is/Po.pl				Unicode character database
+lib/unicode/Is/Print.pl				Unicode character database
+lib/unicode/Is/Ps.pl				Unicode character database
+lib/unicode/Is/Punct.pl				Unicode character database
+lib/unicode/Is/S.pl				Unicode character database
+lib/unicode/Is/Sc.pl				Unicode character database
+lib/unicode/Is/Sm.pl				Unicode character database
+lib/unicode/Is/So.pl				Unicode character database
+lib/unicode/Is/Space.pl				Unicode character database
+lib/unicode/Is/SylA.pl				Unicode character database
+lib/unicode/Is/SylC.pl				Unicode character database
+lib/unicode/Is/SylE.pl				Unicode character database
+lib/unicode/Is/SylI.pl				Unicode character database
+lib/unicode/Is/SylO.pl				Unicode character database
+lib/unicode/Is/SylU.pl				Unicode character database
+lib/unicode/Is/SylV.pl				Unicode character database
+lib/unicode/Is/SylWA.pl				Unicode character database
+lib/unicode/Is/SylWC.pl				Unicode character database
+lib/unicode/Is/SylWE.pl				Unicode character database
+lib/unicode/Is/SylWI.pl				Unicode character database
+lib/unicode/Is/SylWV.pl				Unicode character database
+lib/unicode/Is/Syllable.pl			Unicode character database
+lib/unicode/Is/Upper.pl				Unicode character database
+lib/unicode/Is/Word.pl				Unicode character database
+lib/unicode/Is/XDigit.pl			Unicode character database
+lib/unicode/Is/Z.pl				Unicode character database
+lib/unicode/Is/Zl.pl				Unicode character database
+lib/unicode/Is/Zp.pl				Unicode character database
+lib/unicode/Is/Zs.pl				Unicode character database
+lib/unicode/Jamo.txt				Unicode character database
+lib/unicode/JamoShort.pl			Unicode character database
+lib/unicode/LineBrk.txt				Unicode character database
+lib/unicode/Makefile				Unicode character database
+lib/unicode/Name.pl				Unicode character database
+lib/unicode/Names.txt				Unicode character database
+lib/unicode/NamesList.html			Unicode character database
+lib/unicode/Number.pl				Unicode character database
+lib/unicode/Props.txt				Unicode character database
+lib/unicode/README.Ethiopic			Unicode character database
+lib/unicode/ReadMe.txt				Unicode character database info
+lib/unicode/SpecCase.txt			Unicode character database
+lib/unicode/To/Digit.pl				Unicode character database
+lib/unicode/To/Lower.pl				Unicode character database
+lib/unicode/To/Title.pl				Unicode character database
+lib/unicode/To/Upper.pl				Unicode character database
+lib/unicode/UCD300.html				Unicode character database
+lib/unicode/Unicode.300				Unicode character database
+lib/unicode/Unicode3.html			Unicode character database
+lib/unicode/mktables.PL				Unicode character database generator
+lib/unicode/syllables.txt			Unicode character database
+lib/utf8.pm					Pragma to control Unicode support
+lib/utf8_heavy.pl				Support routines for utf8 pragma
 lib/validate.pl		Perl library supporting wholesale file mode validation
 lib/vars.pm		Declare pseudo-imported global variables
+lib/warnings.pm		For "use warnings"
+lib/warnings/register.pm	For "use warnings::register"
 makeaperl.SH		perl script that produces a new perl binary
+makedef.pl		Create symbol export lists for linking
 makedepend.SH		Precursor to makedepend
 makedir.SH		Precursor to makedir
 malloc.c		A version of malloc you might not want
@@ -616,10 +950,10 @@ mg.c			Magic code
 mg.h			Magic header
 minimod.pl		Writes lib/ExtUtils/Miniperl.pm
 miniperlmain.c		Basic perl w/o dynamic loading or extensions
-mint/errno.h		MiNT port
 mint/Makefile		MiNT port
-mint/pwd.c		MiNT port
 mint/README		MiNT port
+mint/errno.h		MiNT port
+mint/pwd.c		MiNT port
 mint/stdio.h		MiNT port
 mint/sys/time.h		MiNT port
 mint/time.h		MiNT port
@@ -627,13 +961,14 @@ mpeix/mpeixish.h	MPE/iX port
 mpeix/nm		MPE/iX port
 mpeix/relink		MPE/iX port
 mv-if-diff		Script to mv a file if it changed
-myconfig		Prints summary of the current configuration
+myconfig.SH		Prints summary of the current configuration
 nostdio.h		Cause compile error on stdio calls
-objpp.h			Scoping macros for Perl Object
+objXSUB.h		Scoping macros for Perl Object in extensions
 op.c			Opcode syntax tree code
 op.h			Opcode syntax tree header
 opcode.h		Automatically generated opcode header
 opcode.pl		Opcode header generatore
+opnames.h		Automatically generated opcode header
 os2/Changes		Changelog for OS/2 port
 os2/Makefile.SHs	Shared library generation for OS/2
 os2/OS2/ExtAttr/Changes		EA access module
@@ -657,11 +992,17 @@ os2/OS2/Process/Process.pm	system() constants in a module
 os2/OS2/Process/Process.xs	system() constants in a module
 os2/OS2/REXX/Changes		DLL access module
 os2/OS2/REXX/MANIFEST		DLL access module
+os2/OS2/REXX/DLL/Changes		DLL access module
+os2/OS2/REXX/DLL/DLL.pm		DLL access module
+os2/OS2/REXX/DLL/DLL.xs		DLL access module
+os2/OS2/REXX/DLL/MANIFEST	DLL access module
+os2/OS2/REXX/DLL/Makefile.PL	DLL access module
 os2/OS2/REXX/Makefile.PL	DLL access module
 os2/OS2/REXX/REXX.pm		DLL access module
 os2/OS2/REXX/REXX.xs		DLL access module
 os2/OS2/REXX/t/rx_cmprt.t	DLL access module
 os2/OS2/REXX/t/rx_dllld.t	DLL access module
+os2/OS2/REXX/t/rx_emxrv.t	DLL access module
 os2/OS2/REXX/t/rx_objcall.t	DLL access module
 os2/OS2/REXX/t/rx_sql.test	DLL access module
 os2/OS2/REXX/t/rx_tiesql.test	DLL access module
@@ -669,7 +1010,6 @@ os2/OS2/REXX/t/rx_tievar.t	DLL access module
 os2/OS2/REXX/t/rx_tieydb.t	DLL access module
 os2/OS2/REXX/t/rx_varset.t	DLL access module
 os2/OS2/REXX/t/rx_vrexx.t	DLL access module
-os2/POSIX.mkfifo	POSIX.xs patch
 os2/diff.configure	Patches to Configure
 os2/dl_os2.c		Addon for dl_open
 os2/dlfcn.h		Addon for dl_open
@@ -681,7 +1021,8 @@ os2/perl2cmd.pl		Corrects installed binaries under OS/2
 patchlevel.h		The current patch level of perl
 perl.c			main()
 perl.h			Global declarations
-perl_exp.SH		Creates list of exported symbols for AIX
+perlapi.c		Perl API functions
+perlapi.h		Perl API function declarations
 perlio.c		C code for PerlIO abstraction
 perlio.h		compatibility stub
 perlio.sym		Symbols for PerlIO abstraction
@@ -690,10 +1031,10 @@ perlsfio.h		Prototype sfio mapping for PerlIO
 perlsh			A poor man's perl shell
 perlvars.h		Global variables
 perly.c			A byacc'ed perly.y
-perly_c.diff		Fixup perly.c to allow recursion
 perly.fixer		A program to remove yacc stack limitations
 perly.h			The header file for perly.c
 perly.y			Yacc grammar for perl
+perly_c.diff		Fixup perly.c to allow recursion
 plan9/aperl		Shell to make Perl error messages Acme-friendly
 plan9/arpa/inet.h	Plan9 port: replacement C header file
 plan9/buildinfo		Plan9 port: configuration information
@@ -710,17 +1051,24 @@ plan9/plan9ish.h	Plan9 port: Plan9-specific C header file
 plan9/setup.rc		Plan9 port: script for easy build+install
 plan9/versnum		Plan9 port: script to print version number
 pod/Makefile		Make pods into something else
+pod/Win32.pod		Documentation for Win32 extras
 pod/buildtoc		generate perltoc.pod
 pod/checkpods.PL	Tool to check for common errors in pods
 pod/perl.pod		Top level perl man page
+pod/perl5004delta.pod	Changes from 5.003 to 5.004
+pod/perl5005delta.pod	Changes from 5.004 to 5.005
+pod/perlapi.pod         Perl API documentation (autogenerated)
 pod/perlapio.pod	IO API info
 pod/perlbook.pod	Book info
+pod/perlboot.pod	Beginner's Object-oriented Tutorial
 pod/perlbot.pod		Object-oriented Bag o' Tricks
 pod/perlcall.pod	Callback info
+pod/perlcompile.pod	Info on using the Compiler suite
 pod/perldata.pod	Data structure info
+pod/perldbmfilter.pod	Info about DBM Filters
+pod/perldebguts.pod	Debugger guts info
 pod/perldebug.pod	Debugger info
 pod/perldelta.pod	Changes since last version
-pod/perl5004delta.pod	Changes from 5.003 to 5.004
 pod/perldiag.pod	Diagnostic info
 pod/perldsc.pod		Data Structures Cookbook
 pod/perlembed.pod	Embedding info
@@ -734,16 +1082,22 @@ pod/perlfaq6.pod	Frequently Asked Questions, Part 6
 pod/perlfaq7.pod	Frequently Asked Questions, Part 7
 pod/perlfaq8.pod	Frequently Asked Questions, Part 8
 pod/perlfaq9.pod	Frequently Asked Questions, Part 9
+pod/perlfilter.pod	Source filters info
+pod/perlfork.pod	Info about fork()
 pod/perlform.pod	Format info
 pod/perlfunc.pod	Function info
 pod/perlguts.pod	Internals info
+pod/perlhack.pod	Perl hackers guide
 pod/perlhist.pod	Perl history info
+pod/perlintern.pod      Perl internal function docs (autogenrated)
 pod/perlipc.pod		IPC info
+pod/perllexwarn.pod	Lexical Warnings info
 pod/perllocale.pod	Locale support info
 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
@@ -751,7 +1105,7 @@ pod/perlpod.pod		Pod info
 pod/perlport.pod	Portability guide
 pod/perlre.pod		Regular expression info
 pod/perlref.pod		References info
-pod/perlreftut.pod	References tutorial
+pod/perlreftut.pod	Mark's references tutorial
 pod/perlrun.pod		Execution info
 pod/perlsec.pod		Security info
 pod/perlstyle.pod	Style info
@@ -760,8 +1114,11 @@ pod/perlsyn.pod		Syntax info
 pod/perlthrtut.pod	Threads tutorial
 pod/perltie.pod		Tieing an object class into a simple variable
 pod/perltoc.pod		Table of Contents info
+pod/perltodo.pod	Todo list explained
 pod/perltoot.pod	Tom's object-oriented tutorial
+pod/perltootc.pod	Tom's object-oriented tutorial (more on class data)
 pod/perltrap.pod	Trap info
+pod/perlunicode.pod	Unicode support info
 pod/perlvar.pod		Variable info
 pod/perlxs.pod		XS api info
 pod/perlxstut.pod	XS tutorial
@@ -769,12 +1126,16 @@ pod/pod2html.PL		Precursor for translator to turn pod into HTML
 pod/pod2latex.PL	Precursor for translator to turn pod into LaTeX
 pod/pod2man.PL		Precursor for translator to turn pod into manpage
 pod/pod2text.PL		Precursor for translator to turn pod into text
+pod/pod2usage.PL	Pod-Parser - print usage messages from POD docs
+pod/podchecker.PL	Pod-Parser - Pod::Checker::podchecker() CLI
+pod/podselect.PL	Pod-Parser - Pod::Select::podselect() CLI
 pod/roffitall		troff the whole man page set
 pod/rofftoc		Generate a table of contents in troff format
 pod/splitman		Splits perlfunc into multiple man pages
 pod/splitpod		Splits perlfunc into multiple pod pages
 pp.c			Push/Pop code
 pp.h			Push/Pop code defs
+pp.sym			Push/Pop code symbols
 pp_ctl.c		Push/Pop code for control flow
 pp_hot.c		Push/Pop code for heavily used opcodes
 pp_proto.h		C++ definitions for Push/Pop code
@@ -796,6 +1157,7 @@ sv.c			Scalar value code
 sv.h			Scalar value header
 t/README		Instructions for regression tests
 t/TEST			The regression tester
+t/UTEST			Run regression tests with -Mutf8
 t/base/cond.t		See if conditionals work
 t/base/if.t		See if if works
 t/base/lex.t		See if lexical items work
@@ -808,6 +1170,7 @@ t/cmd/mod.t		See if statement modifiers work
 t/cmd/subval.t		See if subroutine values work
 t/cmd/switch.t		See if switch optimizations work
 t/cmd/while.t		See if while loops work
+t/comp/bproto.t		See if builtins conform to their prototypes
 t/comp/cmdopt.t		See if command optimization works
 t/comp/colon.t		See if colons are parsed correctly
 t/comp/cpp.aux		main file for cpp.t
@@ -827,20 +1190,28 @@ t/io/dup.t		See if >& works right
 t/io/fs.t		See if directory manipulations work
 t/io/inplace.t		See if inplace editing works
 t/io/iprefix.t		See if inplace editing works with prefixes
+t/io/nargv.t		See if nested ARGV stuff works
+t/io/open.t		See if open works
+t/io/openpid.t		See if open works for subprocesses
 t/io/pipe.t		See if secure pipes work
 t/io/print.t		See if print commands work
 t/io/read.t		See if read works
 t/io/tell.t		See if file seeking works
 t/lib/abbrev.t		See if Text::Abbrev works
+t/lib/ansicolor.t	See if Term::ANSIColor works
 t/lib/anydbm.t		See if AnyDBM_File works
+t/lib/attrs.t		See if attrs works with C
 t/lib/autoloader.t	See if AutoLoader works
 t/lib/basename.t	See if File::Basename works
+t/lib/bigfloat.t	See if bigfloat.pl works
+t/lib/bigfltpm.t	See if BigFloat.pm works
 t/lib/bigint.t		See if bigint.pl works
 t/lib/bigintpm.t	See if BigInt.pm works
 t/lib/cgi-form.t	See if CGI.pm works
 t/lib/cgi-function.t	See if CGI.pm works
 t/lib/cgi-html.t	See if CGI.pm works
 t/lib/cgi-request.t	See if CGI.pm works
+t/lib/charnames.t	See if character names work
 t/lib/checktree.t	See if File::CheckTree works
 t/lib/complex.t		See if Math::Complex works
 t/lib/db-btree.t	See if DB_File works
@@ -848,33 +1219,62 @@ t/lib/db-hash.t		See if DB_File works
 t/lib/db-recno.t	See if DB_File works
 t/lib/dirhand.t		See if DirHandle works
 t/lib/dosglob.t		See if File::DosGlob works
+t/lib/dprof.t		Perl code profiler testsuite driver
+t/lib/dprof/V.pm	Perl code profiler tests
+t/lib/dprof/test1_t	Perl code profiler tests
+t/lib/dprof/test1_v	Perl code profiler tests
+t/lib/dprof/test2_t	Perl code profiler tests
+t/lib/dprof/test2_v	Perl code profiler tests
+t/lib/dprof/test3_t	Perl code profiler tests
+t/lib/dprof/test3_v	Perl code profiler tests
+t/lib/dprof/test4_t	Perl code profiler tests
+t/lib/dprof/test4_v	Perl code profiler tests
+t/lib/dprof/test5_t	Perl code profiler tests
+t/lib/dprof/test5_v	Perl code profiler tests
+t/lib/dprof/test6_t	Perl code profiler tests
+t/lib/dprof/test6_v	Perl code profiler tests
 t/lib/dumper-ovl.t	See if Data::Dumper works for overloaded data
 t/lib/dumper.t		See if Data::Dumper works
 t/lib/english.t		See if English works
 t/lib/env.t		See if Env works
+t/lib/env-array.t	See if Env works for arrays
 t/lib/errno.t		See if Errno works
 t/lib/fatal.t           See if Fatal works
 t/lib/fields.t          See if base/fields works
 t/lib/filecache.t	See if FileCache works
 t/lib/filecopy.t	See if File::Copy works
 t/lib/filefind.t	See if File::Find works
+t/lib/filefunc.t	See if File::Spec::Functions works
 t/lib/filehand.t	See if FileHandle works
 t/lib/filepath.t	See if File::Path works
 t/lib/filespec.t	See if File::Spec works
 t/lib/findbin.t		See if FindBin works
 t/lib/gdbm.t		See if GDBM_File works
-t/lib/getopt.t		See if Getopt::Std and Getopt::Long works
+t/lib/getopt.t		See if Getopt::Std and Getopt::Long work
+t/lib/glob-basic.t	See if File::Glob works
+t/lib/glob-case.t	See if File::Glob works
+t/lib/glob-global.t	See if File::Glob works
+t/lib/glob-taint.t	See if File::Glob works
+t/lib/gol-basic.t	See if Getopt::Long works
+t/lib/gol-compat.t	See if Getopt::Long works
+t/lib/gol-linkage.t	See if Getopt::Long works
 t/lib/h2ph.h		Test header file for h2ph
 t/lib/h2ph.pht		Generated output from h2ph.h by h2ph, for comparison
 t/lib/h2ph.t		See if h2ph works like it should
 t/lib/hostname.t	See if Sys::Hostname works
+t/lib/io_const.t	See if constants from IO work
+t/lib/io_dir.t		See if directory-related methods from IO work
 t/lib/io_dup.t		See if dup()-related methods from IO work
+t/lib/io_linenum.t	See if I/O line numbers are tracked correctly
+t/lib/io_multihomed.t	See if INET sockets work with multi-homed hosts
 t/lib/io_pipe.t		See if pipe()-related methods from IO work
+t/lib/io_poll.t		See if poll()-related methods from IO work
 t/lib/io_sel.t		See if select()-related methods from IO work
 t/lib/io_sock.t		See if INET socket-related methods from IO work
 t/lib/io_taint.t	See if the untaint method from IO works
 t/lib/io_tell.t		See if seek()/tell()-related methods from IO work
 t/lib/io_udp.t		See if UDP socket-related methods from IO work
+t/lib/io_unix.t		See if UNIX socket-related methods from IO work
 t/lib/io_xs.t		See if XSUB methods from IO work
 t/lib/ipc_sysv.t	See if IPC::SysV works
 t/lib/ndbm.t		See if NDBM_File works
@@ -894,22 +1294,28 @@ t/lib/selectsaver.t	See if SelectSaver works
 t/lib/socket.t		See if Socket works
 t/lib/soundex.t		See if Soundex works
 t/lib/symbol.t		See if Symbol works
-t/lib/texttabs.t	See if Text::Tabs works
+t/lib/syslfs.t		See if large files work for sysio
 t/lib/textfill.t	See if Text::Wrap::fill works
+t/lib/texttabs.t	See if Text::Tabs works
 t/lib/textwrap.t	See if Text::Wrap::wrap works
-t/lib/thread.t		Basic test of threading (skipped if no threads) 
+t/lib/thr5005.t		Test 5.005-style threading (skipped if no use5005threads) 
 t/lib/tie-push.t	Test for Tie::Array
 t/lib/tie-stdarray.t	Test for Tie::StdArray
+t/lib/tie-stdhandle.t	Test for Tie::StdHandle
 t/lib/tie-stdpush.t	Test for Tie::StdArray
 t/lib/timelocal.t	See if Time::Local works
 t/lib/trig.t		See if Math::Trig works
+t/op/64bitint.t		See if 64 bit integers work
 t/op/append.t		See if . works
+t/op/args.t		See if operations on @_ work
 t/op/arith.t		See if arithmetic works
 t/op/array.t		See if array operations work
 t/op/assignwarn.t	See if OP= operators warn correctly for undef targets
+t/op/attrs.t		See if attributes on declarations work
 t/op/auto.t		See if autoincrement et all work
 t/op/avhv.t		See if pseudo-hashes work
 t/op/bop.t		See if bitops work
+t/op/chars.t		See if character escapes work
 t/op/chop.t		See if chop works
 t/op/closure.t		See if closures work
 t/op/cmp.t		See if the various string and numeric compare work
@@ -923,12 +1329,16 @@ t/op/do.t		See if subroutines work
 t/op/each.t		See if hash iterators work
 t/op/eval.t		See if eval operator works
 t/op/exec.t		See if exec and system work
+t/op/exists_sub.t	See if exists(&sub) works
 t/op/exp.t		See if math functions work
+t/op/fh.t		See if filehandles work
+t/op/filetest.t		See if file tests work
 t/op/flip.t		See if range operator works
 t/op/fork.t		See if fork works
 t/op/glob.t		See if <*> works
 t/op/goto.t		See if goto works
 t/op/goto_xs.t		See if "goto &sub" works on XSUBs
+t/op/grent.t		See if getgr*() functions work
 t/op/grep.t		See if grep() and map() work
 t/op/groups.t		See if $( works
 t/op/gv.t		See if typeglobs work
@@ -937,20 +1347,25 @@ t/op/inc.t		See if inc/dec of integers near 32 bit limit work
 t/op/index.t		See if index works
 t/op/int.t		See if int works
 t/op/join.t		See if join works
+t/op/lex_assign.t	See if ops involving lexicals or pad temps work
+t/op/lfs.t		See if large files work for perlio
 t/op/list.t		See if array lists work
 t/op/local.t		See if local works
+t/op/lop.t		See if logical operators work
 t/op/magic.t		See if magic variables work
 t/op/method.t		See if method calls work
 t/op/misc.t		See if miscellaneous bugs have been fixed
 t/op/mkdir.t		See if mkdir works
 t/op/my.t		See if lexical scoping works
-t/op/nothread.t		local @_ test which does not work threaded 
+t/op/nothr5005.t	local @_ test which does not work under use5005threads
+t/op/numconvert.t	See if accessing fields does not change numeric values
 t/op/oct.t		See if oct and hex work
 t/op/ord.t		See if ord works
 t/op/pack.t		See if pack and unpack work
 t/op/pat.t		See if esoteric patterns work
 t/op/pos.t		See if pos works
 t/op/push.t		See if push and pop work
+t/op/pwent.t		See if getpw*() functions work
 t/op/quotemeta.t	See if quotemeta works
 t/op/rand.t		See if rand works
 t/op/range.t		See if .. works
@@ -965,12 +1380,14 @@ t/op/repeat.t		See if x operator works
 t/op/runlevel.t		See if die() works from perl_call_*()
 t/op/sleep.t		See if sleep works
 t/op/sort.t		See if sort works
-t/op/splice.t		See if splice works
+t/op/splice.t           See if splice works
 t/op/split.t		See if split works
 t/op/sprintf.t		See if sprintf works
 t/op/stat.t		See if stat works
 t/op/study.t		See if study works
 t/op/subst.t		See if substitution works
+t/op/subst_amp.t	See if $&-related substitution works
+t/op/subst_wamp.t	See if substitution works with $& present
 t/op/substr.t		See if substr works
 t/op/sysio.t		See if sysread and syswrite work
 t/op/taint.t		See if tainting works
@@ -983,36 +1400,111 @@ t/op/undef.t		See if undef works
 t/op/universal.t	See if UNIVERSAL class works
 t/op/unshift.t		See if unshift works
 t/op/vec.t		See if vectors work
+t/op/ver.t		See if v-strings and the %v format flag work
 t/op/wantarray.t	See if wantarray works
 t/op/write.t		See if write works
+t/pod/emptycmd.t	Test empty pod directives
+t/pod/emptycmd.xr	Expected results for emptycmd.t
+t/pod/for.t		Test =for directive
+t/pod/for.xr		Expected results for for.t
+t/pod/headings.t	Test =head directives
+t/pod/headings.xr	Expected results for headings.t
+t/pod/include.t		Test =include directive
+t/pod/include.xr	Expected results for include.t
+t/pod/included.t	Test =include directive
+t/pod/included.xr	Expected results for included.t
+t/pod/lref.t		Test L<...> sequences
+t/pod/lref.xr		Expected results for lref.t
+t/pod/multiline_items.t	Test multiline =items
+t/pod/multiline_items.xr	Test multiline =items
+t/pod/nested_items.t	Test nested =items
+t/pod/nested_items.xr	Expected results for nested_items.t
+t/pod/nested_seqs.t	Test nested interior sequences
+t/pod/nested_seqs.xr	Expected results for nested_seqs.t
+t/pod/oneline_cmds.t	Test single paragraph ==cmds
+t/pod/oneline_cmds.xr	Expected results for oneline_cmds.t
+t/pod/pod2usage.t	Test Pod::Usage
+t/pod/pod2usage.xr	Expected results for pod2usage.t
+t/pod/poderrs.t		Test POD errors
+t/pod/poderrs.xr	Expected results for emptycmd.t
+t/pod/podselect.t	Test Pod::Select
+t/pod/podselect.xr	Expected results for podselect.t
+t/pod/special_seqs.t	Test "special" interior sequences
+t/pod/special_seqs.xr	Expected results for emptycmd.t
+t/pod/testcmp.pl	Module to compare output against expected results
+t/pod/testp2pt.pl	Module to test Pod::PlainText for a given file
+t/pod/testpchk.pl	Module to test Pod::Checker for a given file
 t/pragma/constant.t	See if compile-time constants work
-t/pragma/locale.t	See if locale support (i18n and l10n) works
+t/pragma/diagnostics.t	See if diagnostics.pm works
+t/pragma/locale.t	See if locale support works
+t/pragma/locale/latin1	Part of locale.t in Latin 1
+t/pragma/locale/utf8	Part of locale.t in UTF8
 t/pragma/overload.t	See if operator overloading works
 t/pragma/strict-refs	Tests of "use strict 'refs'" for strict.t
 t/pragma/strict-subs	Tests of "use strict 'subs'" for strict.t
 t/pragma/strict-vars	Tests of "use strict 'vars'" for strict.t
 t/pragma/strict.t	See if strictures work
 t/pragma/subs.t		See if subroutine pseudo-importation works
-t/pragma/warn-1global	Tests of global warnings for warning.t
-t/pragma/warning.t	See if warning controls work
+t/pragma/sub_lval.t	See if lvalue subroutines work
+t/pragma/utf8.t		See if utf8 operations work
+t/pragma/warn/1global	Tests of global warnings for warnings.t
+t/pragma/warn/2use	Tests for "use warnings" for warnings.t
+t/pragma/warn/3both	Tests for interaction of $^W and "use warnings"
+t/pragma/warn/4lint	Tests for -W switch
+t/pragma/warn/5nolint	Tests for -X switch
+t/pragma/warn/6default	Tests default warnings
+t/pragma/warn/7fatal	Tests fatal warnings
+t/pragma/warn/8signal	Tests warnings + __WARN__ and __DIE__
+t/pragma/warn/9enabled	Tests warnings
+t/pragma/warn/av	Tests for av.c for warnings.t
+t/pragma/warn/doio	Tests for doio.c for warnings.t
+t/pragma/warn/doop	Tests for doop.c for warnings.t
+t/pragma/warn/gv	Tests for gv.c for warnings.t
+t/pragma/warn/hv	Tests for hv.c for warnings.t
+t/pragma/warn/malloc	Tests for malloc.c for warnings.t
+t/pragma/warn/mg	Tests for mg.c for warnings.t
+t/pragma/warn/op	Tests for op.c for warnings.t
+t/pragma/warn/perl	Tests for perl.c for warnings.t
+t/pragma/warn/perlio	Tests for perlio.c for warnings.t
+t/pragma/warn/perly	Tests for perly.y for warnings.t
+t/pragma/warn/pp	Tests for pp.c for warnings.t
+t/pragma/warn/pp_ctl	Tests for pp_ctl.c for warnings.t
+t/pragma/warn/pp_hot	Tests for pp_hot.c for warnings.t
+t/pragma/warn/pp_sys	Tests for pp_sys.c for warnings.t
+t/pragma/warn/regcomp	Tests for regcomp.c for warnings.t
+t/pragma/warn/regexec	Tests for regexec.c for warnings.t
+t/pragma/warn/run	Tests for run.c for warnings.t
+t/pragma/warn/sv	Tests for sv.c for warnings.t
+t/pragma/warn/taint	Tests for taint.c for warnings.t
+t/pragma/warn/toke	Tests for toke.c for warnings.t
+t/pragma/warn/universal	Tests for universal.c for warnings.t
+t/pragma/warn/utf8	Tests for utf8.c for warnings.t
+t/pragma/warn/util	Tests for util.c for warnings.t
+t/pragma/warnings.t	See if warning controls work
 taint.c			Tainting code
 thrdvar.h		Per-thread variables
 thread.h		Threading header
-thread.sym		Symbols for threads
 toke.c			The tokener
 universal.c		The default UNIVERSAL package methods
 unixish.h		Defines that are assumed on Unix
+utf8.c			Unicode routines
+utf8.h			Unicode header
 util.c			Utility routines
 util.h			Dummy header
 utils/Makefile		Extract the utility scripts
 utils/c2ph.PL		program to translate dbx stabs to perl
+utils/dprofpp.PL	Perl code profile post-processor
 utils/h2ph.PL		A thing to turn C .h files into perl .ph files
 utils/h2xs.PL		Program to make .xs files from C header files
+utils/perlbc.PL		Front-end for byte compiler
 utils/perlbug.PL	A simple tool to submit a bug report
 utils/perlcc.PL		Front-end for compiler
 utils/perldoc.PL	A simple tool to find & display perl's documentation
 utils/pl2pm.PL		A pl to pm translator
 utils/splain.PL		Stand-alone version of diagnostics.pm
+vmesa/Makefile		VM/ESA Makefile
+vmesa/vmesa.c		VM/ESA-specific C code for Perl core
+vmesa/vmesaish.h	VM/ESA-specific C header for Perl core
 vms/descrip_mms.template		Template MM[SK] description file for build
 vms/ext/DCLsym/0README.txt	ReadMe file for VMS::DCLsym
 vms/ext/DCLsym/DCLsym.pm	Perl access to CLI symbols
@@ -1041,33 +1533,31 @@ vms/perly_c.vms		perly.c with fixed declarations for global syms
 vms/perly_h.vms		perly.h with fixed declarations for global syms
 vms/sockadapt.c		glue for SockshShr socket support
 vms/sockadapt.h		glue for SockshShr socket support
-vms/subconfigure.com	performs compiler checks and writes config.sh, config.h, and descrip.mms
+vms/subconfigure.com    performs compiler checks and writes config.sh, config.h, and descrip.mms
 vms/test.com		DCL driver for regression tests
 vms/vms.c		VMS-specific C code for Perl core
 vms/vms_yfix.pl		convert Unix perly.[ch] to VMS perly_[ch].vms
 vms/vmsish.h		VMS-specific C header for Perl core
 vms/writemain.pl	Generate perlmain.c from miniperlmain.c+extensions
-vos/build.cm		VOS command macro to build Perl   
 vos/Changes		Changes made to port Perl to the VOS operating system
-vos/compile_perl.cm	VOS commnad macro to build multiple version of Perl
+vos/build.cm		VOS command macro to build Perl
+vos/compile_perl.cm	VOS command macro to build multiple version of Perl
+vos/config.def		input for config.pl
 vos/config.h		config.h for VOS
+vos/config.pl		script to convert a config_h.SH to a config.h
 vos/config_h.SH_orig	config_h.SH at the time config.h was created
 vos/perl.bind		VOS bind control file
 vos/test_vos_dummies.c	Test program for "vos_dummies.c"
-vos/vos_accept.c	Wrapper to fixup nonstandard VOS _accept function
 vos/vos_dummies.c	Wrappers to soak up undefined functions
-vos/vosish.h		VOS-specific header file                
-win32/GenCAPI.pl	Win32 port for C API with PERL_OBJECT
+vos/vosish.h		VOS-specific header file
+warnings.h		The warning numbers
+warnings.pl		Program to write warnings.h and lib/warnings.pm
 win32/Makefile		Win32 makefile for NMAKE (Visual C++ build)
-win32/TEST		Win32 port
-win32/autosplit.pl	Win32 port
-win32/bin/network.pl	Win32 port
+win32/bin/exetype.pl	Set executable type to CONSOLE or WINDOWS
 win32/bin/perlglob.pl	Win32 globbing
 win32/bin/pl2bat.pl	wrap perl scripts into batch files
 win32/bin/runperl.pl	run perl script via batch file namesake
 win32/bin/search.pl	Win32 port
-win32/bin/webget.pl	Win32 port
-win32/bin/www.pl	Win32 port
 win32/config.bc		Win32 base line config.sh (Borland C++ build)
 win32/config.gc		Win32 base line config.sh (mingw32/gcc build)
 win32/config.vc		Win32 base line config.sh (Visual C++ build)
@@ -1078,21 +1568,20 @@ win32/config_h.PL	Perl code to convert Win32 config.sh to config.h
 win32/config_sh.PL	Perl code to update Win32 config.sh from Makefile 
 win32/des_fcrypt.patch	Win32 port
 win32/dl_win32.xs	Win32 port
-win32/genxsdef.pl	Win32 port
+win32/genmk95.pl        Perl code to generate command.com-usable makefile.95
 win32/include/arpa/inet.h	Win32 port
 win32/include/dirent.h		Win32 port
 win32/include/netdb.h		Win32 port
 win32/include/sys/socket.h	Win32 port
-win32/makedef.pl	Win32 port
-win32/makefile.mk	Win32 makefile for DMAKE (BC++, VC++ builds)
-win32/makemain.pl	Win32 port
-win32/makeperldef.pl	Win32 port
+win32/makefile.mk       Win32 makefile for DMAKE (BC++, VC++ builds)
 win32/perlglob.c	Win32 port
-win32/perlhost.h	Perl host implementation
+win32/perlhost.h	Perl "host" implementation
 win32/perllib.c		Win32 port
 win32/pod.mak		Win32 port
 win32/runperl.c		Win32 port
 win32/splittree.pl	Win32 port
+win32/vdir.h		Perl "host" virtual directory manager
+win32/vmem.h		Perl "host" memory manager
 win32/win32.c		Win32 port
 win32/win32.h		Win32 port
 win32/win32iop.h	Win32 port
@@ -1119,3 +1608,4 @@ x2p/str.h		Public declarations for the above
 x2p/util.c		Utility routines
 x2p/util.h		Public declarations for the above
 x2p/walk.c		Parse tree walker
+xsutils.c		Additional bundled package methods not in UNIVERSAL::
diff --git a/contrib/perl5/Makefile.SH b/contrib/perl5/Makefile.SH
index 61f01b5aee93..285269de442b 100755
--- a/contrib/perl5/Makefile.SH
+++ b/contrib/perl5/Makefile.SH
@@ -1,5 +1,5 @@
 #! /bin/sh
-case $CONFIG in
+case $CONFIGDOTSH in
 '')
 	if test -f config.sh; then TOP=.;
 	elif test -f ../config.sh; then TOP=..;
@@ -29,48 +29,69 @@ ldlibpth=''
 case "$useshrplib" in
 true)
 	# Prefix all runs of 'miniperl' and 'perl' with 
-	# $ldlibpth so that ./perl finds *this* libperl.so.
-	ldlibpth="LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH"
+	# $ldlibpth so that ./perl finds *this* shared libperl.
+	case "$LD_LIBRARY_PATH" in
+	'')
+		ldlibpth="LD_LIBRARY_PATH=`pwd`";;
+	*)
+		ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";;
+	esac
 
 	pldlflags="$cccdlflags"
-	# NeXT-4 specific stuff.  Can't we do this in the hint file?
 	case "${osname}${osvers}" in
 	next4*)
 		ld=libtool
 		lddlflags="-dynamic -undefined warning -framework System \
 		-compatibility_version 1 -current_version $patchlevel \
 		-prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@"
-		# NeXT uses a different name.
-		ldlibpth="DYLD_LIBRARY_PATH=`pwd`:$DYLD_LIBRARY_PATH"
 		;;
-	beos*)	ldlibpth="LIBRARY_PATH=`pwd`:$LIBRARY_PATH"
+	rhapsody*|darwin*)
+		shrpldflags="${ldflags} -dynamiclib \
+			     -compatibility_version 1 \
+			     -current_version \
+				${api_version}.${api_subversion} \
+			     -image_base 0x4be00000 \
+			     -install_name \$(shrpdir)/\$@"
 		;;
-	os2*)	# OS/2 doesn't need anything special for LD_LIBRARY_PATH.
-		ldlibpth=''
+	cygwin*)
+		linklibperl="-lperl"
 		;;
 	sunos*)
 		linklibperl="-lperl"
 		;;
-	netbsd*|freebsd[234]*)
+	netbsd*|freebsd[234]*|openbsd*)
 		linklibperl="-L. -lperl"
 		;;
 	aix*)
 		shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
 		case "$osvers" in
-		3*)
-			shrpldflags="$shrpldflags -e _nostart $ldflags $libs $cryptlib"
+		3*)	shrpldflags="$shrpldflags -e _nostart"
 			;;
-		*)
-			shrpldflags="$shrpldflags -b noentry $ldflags $libs $cryptlib"
+		*)	shrpldflags="$shrpldflags -b noentry"
 			;;
 		esac
-		aixinstdir=`pwd | sed 's/\/UU$//'`
-		linklibperl="-L $archlibexp/CORE -L $aixinstdir -lperl"
+	        shrpldflags="$shrpldflags $ldflags $libs $cryptlib"
+		linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl"
 		;;
-	hpux10*)
-		linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+b$archlibexp/CORE -lperl"
+	hpux*)
+		linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+s -Wl,+b$archlibexp/CORE -lperl"
 		;;
 	esac
+	case "$ldlibpthname" in
+	'') ;;
+	*)
+	    case "$osname" in
+	    os2)
+	        ldlibpth=''
+	        ;;
+	    *)
+		eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\""
+		;;
+	    esac
+	    # Strip off any trailing :'s
+	    ldlibpth=`echo $ldlibpth | sed 's/:*$//'`
+	    ;;
+        esac
 	;;
 *)	pldlflags=''
 	;;
@@ -146,7 +167,7 @@ LLIBPERL= $linklibperl
 SHRPENV = $shrpenv
 
 # The following is used to include the current directory in
-# LD_LIBRARY_PATH if you are building a shared libperl.so.
+# the dynamic loader path you are building a shared libperl.
 LDLIBPTH = $ldlibpth
 
 dynamic_ext = $dynamic_list
@@ -185,6 +206,10 @@ SHELL = $sh
 # how to tr(anslate) newlines
 TRNL = '$trnl'
 
+# not used by Makefile but by installperl;
+# mentioned here so that metaconfig picks it up
+INSTALL_USR_BIN_PERL = $installusrbinperl
+
 !GROK!THIS!
 
 ## In the following dollars and backticks do not need the extra backslash.
@@ -197,36 +222,39 @@ private = preplibrary lib/ExtUtils/Miniperl.pm lib/Config.pm
 # Files to be built with variable substitution before miniperl
 # is available.
 sh = Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH \
-	makedir.SH perl_exp.SH writemain.SH
+	makedir.SH myconfig.SH writemain.SH
 
 shextract = Makefile cflags config.h makeaperl makedepend \
-	makedir perl.exp writemain
+	makedir myconfig writemain
 
 # Files to be built with variable substitution after miniperl is
 # available.  Dependencies handled manually below (for now).
 
-pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL
+pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL \
+	pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL
 
-plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text
+plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text \
+	pod/pod2usage pod/podchecker pod/podselect
 
 addedbyconf = UU $(shextract) $(plextract) pstruct
 
 h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h
 h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h
-h3 = opcode.h patchlevel.h perl.h perly.h pp.h proto.h regcomp.h
+h3 = opcode.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h
 h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h
-h5 = bytecode.h byterun.h
+h5 = utf8.h warnings.h
 h = $(h1) $(h2) $(h3) $(h4) $(h5)
 
-c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c byterun.c
-c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c
-c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c globals.c perlio.c
+c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c
+c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c
+c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c xsutils.c
+c4 = globals.c perlio.c perlapi.c
 
-c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c
+c = $(c1) $(c2) $(c3) $(c4) miniperlmain.c perlmain.c
 
-obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) byterun$(OBJ_EXT)
+obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT)
 obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT)
-obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT)
+obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT)
 
 obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
 
@@ -245,7 +273,7 @@ lintflags = -hbvxac
 .c$(OBJ_EXT):
 	$(CCCMD) $(PLDLFLAGS) $*.c
 
-all: $(FIRSTMAKEFILE) miniperl $(private) $(plextract) $(public) $(dynamic_ext) $(nonxs_ext)
+all: $(FIRSTMAKEFILE) miniperl extra.pods $(private) $(public) $(dynamic_ext) $(nonxs_ext)
 	@echo " ";
 	@echo "	Everything is up to date. 'make test' to run test suite."
 
@@ -258,7 +286,7 @@ compile: all
 translators:	miniperl lib/Config.pm FORCE
 	@echo " "; echo "	Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
 
-utilities:	miniperl lib/Config.pm FORCE
+utilities:	miniperl lib/Config.pm $(plextract) FORCE
 	@echo " "; echo "	Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
 
 
@@ -270,12 +298,18 @@ utilities:	miniperl lib/Config.pm FORCE
 FORCE:
 	@sh -c true
 
+opmini$(OBJ_EXT): op.c
+	$(RMS) opmini.c
+	$(LNS) op.c opmini.c
+	$(CCCMD) $(PLDLFLAGS) -DPERL_EXTERNAL_GLOB opmini.c
+	$(RMS) opmini.c
+
 miniperlmain$(OBJ_EXT): miniperlmain.c
 	$(CCCMD) $(PLDLFLAGS) $*.c
 
 perlmain.c: miniperlmain.c config.sh $(FIRSTMAKEFILE)
-	sh writemain $(DYNALOADER) $(static_ext) > tmp
-	sh mv-if-diff tmp perlmain.c
+	sh writemain $(DYNALOADER) $(static_ext) > writemain.tmp
+	sh mv-if-diff writemain.tmp perlmain.c
 
 perlmain$(OBJ_EXT): perlmain.c
 	$(CCCMD) $(PLDLFLAGS) $*.c
@@ -290,15 +324,81 @@ ext.libs: $(static_ext)
 
 # How to build libperl.  This is still rather convoluted.
 # Load up custom Makefile.SH fragment for shared loading and executables:
-if test -r $osname/Makefile.SHs ; then
-	. $osname/Makefile.SHs
+case "$osname" in
+*)
+	Makefile_s="$osname/Makefile.SHs"
+	;;
+esac
+
+case "$osname" in
+aix)
+	$spitshell >>Makefile <>Makefile <<'!NO!SUBS!'
+
+LIBPERL_NONSHR		= libperl_nonshr$(LIB_EXT)
+MINIPERL_NONSHR		= miniperl_nonshr$(EXE_EXT)
+
+$(LIBPERL_NONSHR): perl$(OBJ_EXT) $(obj)
+	$(RMS) $(LIBPERL_NONSHR)
+	$(AR) rcu $(LIBPERL_NONSHR) perl$(OBJ_EXT) $(obj)
+
+$(MINIPERL_NONSHR): $(LIBPERL_NONSHR) miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT)
+	$(CC) $(LDFLAGS) -o $(MINIPERL_NONSHR) miniperlmain$(OBJ_EXT) \
+	    opmini$(OBJ_EXT) $(LIBPERL_NONSHR) $(LIBS)
+
+MINIPERLEXP		= $(MINIPERL_NONSHR)
+
+LIBPERLEXPORT		= perl.exp
+
+!NO!SUBS!
+		
+		;;
+	*)	
+		$spitshell >>Makefile <<'!NO!SUBS!'
+MINIPERLEXP		= miniperl$(EXE_EXT)
+
+PERLEXPORT		= perl.exp
+
+!NO!SUBS!
+	;;
+	esac
+	$spitshell >>Makefile <<'!NO!SUBS!'
+perl.exp: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH)
+	./$(MINIPERLEXP) makedef.pl PLATFORM=aix | sort -u | sort -f > perl.exp.tmp
+	sh mv-if-diff perl.exp.tmp perl.exp
+
+!NO!SUBS!
+	;;
+os2)
+	$spitshell >>Makefile <<'!NO!SUBS!'
+MINIPERLEXP		= miniperl
+
+perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map
+	./$(MINIPERLEXP) makedef.pl PLATFORM=os2 -DPERL_DLL=$(PERL_DLL) > perl.exp.tmp
+	sh mv-if-diff perl.exp.tmp perl5.def
+
+!NO!SUBS!
+	;;
+esac
+
+if test -r $Makefile_s ; then
+	. $Makefile_s
 	$spitshell >>Makefile <>Makefile <<'!NO!SUBS!'
-$(LIBPERL): $& perl$(OBJ_EXT) $(obj)
+$(LIBPERL): $& perl$(OBJ_EXT) $(obj) $(LIBPERLEXPORT)
 !NO!SUBS!
 	case "$useshrplib" in
 	true)
@@ -335,20 +435,48 @@ $(LIBPERL): $& perl$(OBJ_EXT) $(obj)
 # build problems but that's not obvious to the novice.
 # The Module used here must not depend on Config or any extensions.
 
-miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL)
-	$(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain$(OBJ_EXT) $(LLIBPERL) $(libs)
-	$(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e 0 || $(MAKE) minitest
+!NO!SUBS!
 
-perl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
+	case "${osname}${osvers}" in
+	next4*)
+		$spitshell >>Makefile <<'!NO!SUBS!'
+miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+	$(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+	    miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
+	$(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest
+!NO!SUBS!
+		;;
+	aix*)
+		$spitshell >>Makefile <<'!NO!SUBS!'
+miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+	$(CC) -o miniperl $(CLDFLAGS) \
+	    `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+	    miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
+	$(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest
+!NO!SUBS!
+		;;
+	*)
+		$spitshell >>Makefile <<'!NO!SUBS!'
+miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+	$(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) -o miniperl \
+	    miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+	$(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest
+!NO!SUBS!
+		;;
+	esac
+
+	$spitshell >>Makefile <<'!NO!SUBS!'
+
+perl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT)
 	$(SHRPENV) $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
-pureperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
+pureperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT)
 	$(SHRPENV) $(LDLIBPTH) purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
-purecovperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
+purecovperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT)
 	$(SHRPENV) $(LDLIBPTH) purecov $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o purecovperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
-quantperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
+quantperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT)
 	$(SHRPENV) $(LDLIBPTH) quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
 # This version, if specified in Configure, does ONLY those scripts which need
@@ -356,7 +484,7 @@ quantperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
 # checks as well as the special code to validate that the script in question
 # has been invoked correctly.
 
-suidperl: $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
+suidperl: $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT)
 	$(SHRPENV) $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
 !NO!SUBS!
@@ -374,7 +502,7 @@ sperl$(OBJ_EXT): perl.c perly.h patchlevel.h $(h)
 # We have to call our ./makedir because Ultrix 4.3 make can't handle the line
 #	test -d lib/auto || mkdir lib/auto
 #
-preplibrary: miniperl lib/Config.pm $(plextract)
+preplibrary: miniperl lib/Config.pm
 	@sh ./makedir lib/auto
 	@echo "	AutoSplitting perl library"
 	$(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
@@ -383,21 +511,34 @@ preplibrary: miniperl lib/Config.pm $(plextract)
 # Take care to avoid modifying lib/Config.pm without reason
 # (If trying to create a new port and having problems with the configpm script, 
 # try 'make minitest' and/or commenting out the tests at the end of configpm.)
-lib/Config.pm: config.sh miniperl configpm
-	$(LDLIBPTH) ./miniperl configpm tmp
-	sh mv-if-diff tmp $@
+lib/Config.pm: config.sh miniperl configpm lib/re.pm
+	$(LDLIBPTH) ./miniperl configpm configpm.tmp
+	sh mv-if-diff configpm.tmp $@
 
 lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl minimod.pl lib/Config.pm
-	$(LDLIBPTH) ./miniperl minimod.pl > tmp
-	sh mv-if-diff tmp $@
+	$(LDLIBPTH) ./miniperl minimod.pl > minimod.tmp
+	sh mv-if-diff minimod.tmp $@
 
 lib/re.pm: ext/re/re.pm
 	rm -f $@
 	cat ext/re/re.pm > $@
 
-$(plextract):	miniperl lib/Config.pm lib/re.pm
+$(plextract):	miniperl lib/Config.pm
 	$(LDLIBPTH) ./miniperl -Ilib $@.PL
-	
+
+extra.pods: miniperl
+	-@test -f extra.pods && rm -f `cat extra.pods`
+	-@rm -f extra.pods
+	-@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
+	    nx=`echo $$x | sed -e "s/README\.//"`; \
+	    $(LNS) ../$$x "pod/perl"$$nx".pod" ; \
+	    echo "pod/perl"$$nx".pod" >> extra.pods ; \
+	done
+	-@test -f vms/perlvms.pod && $(LNS) ../vms/perlvms.pod pod/perlvms.pod && echo "pod/perlvms.pod" >> extra.pods
+
+install-strip:
+	$(MAKE) STRIPFLAGS=-s install
+
 install: all install.perl install.man
 
 install.perl:	all installperl
@@ -408,7 +549,7 @@ install.perl:	all installperl
 		cd ../pod; $(MAKE) compile; \
 	else :; \
 	fi
-	$(LDLIBPTH) ./perl installperl
+	$(LDLIBPTH) ./perl installperl $(STRIPFLAGS)
 
 install.man:	all installman
 	$(LDLIBPTH) ./perl installman
@@ -416,6 +557,7 @@ install.man:	all installman
 # XXX Experimental. Hardwired values, but useful for testing.
 # Eventually Configure could ask for some of these values.
 install.html: all installhtml
+	-@test -f README.vms && $(LNS) ../README.vms vms/README_vms.pod
 	$(LDLIBPTH) ./perl installhtml                   \
       --podroot=. --podpath=. --recurse  \
       --htmldir=$(privlib)/html     \
@@ -434,13 +576,12 @@ install.html: all installhtml
 # normally shouldn't remake perly.[ch].
 
 run_byacc:	FORCE
-	@ echo 'Expect' 113 shift/reduce and 1 reduce/reduce conflict
 	$(BYACC) -d perly.y
-	chmod 664 perly.c
+	-chmod 664 perly.c
 	sh $(shellflags) ./perly.fixer y.tab.c perly.c
 	sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
 	    -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c
-	echo 'extern YYSTYPE yylval;' >>y.tab.h
+	sed -e '/^extern YYSTYPE yy/D' y.tab.h >yh.tmp && mv yh.tmp y.tab.h
 	cmp -s y.tab.h perly.h && rm -f y.tab.h || mv y.tab.h perly.h
 	chmod 664 vms/perly_c.vms vms/perly_h.vms
 	perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms
@@ -456,28 +597,43 @@ perly.h: perly.y
 
 # No compat3.sym here since and including the 5.004_50.
 # No interp.sym since 5.005_03.
-SYM  = global.sym perlio.sym thread.sym
+SYM  = global.sym globvar.sym perlio.sym pp.sym
 
-SYMH = perlvars.h thrdvar.h
+SYMH = perlvars.h intrpvar.h thrdvar.h
+
+CHMOD_W = chmod +w
 
 # The following files are generated automatically
-#	keywords.h:	keywords.pl
-#	opcode.h:	opcode.pl
-#	embed.h:  	embed.pl global.sym
-#	byterun.h:	bytecode.pl
-#	byterun.c:	bytecode.pl
-#	lib/B/Asmdata.pm:	bytecode.pl
-#	regnodes.h:	regcomp.pl
+#	keywords.pl:	keywords.h
+#	opcode.pl:	opcode.h opnames.h pp_proto.h pp.sym
+# [* embed.pl needs pp.sym generated by opcode.pl! *]
+#	embed.pl:	proto.h embed.h embedvar.h global.sym objXSUB.h
+#			perlapi.h perlapi.c pod/perlintern.pod
+#			pod/perlapi.pod
+#	bytecode.pl:	ext/ByteLoader/byterun.h ext/ByteLoader/byterun.c
+#			ext/B/B/Asmdata.pm
+#	regcomp.pl:	regnodes.h
+#	warnings.pl:	warnings.h lib/warnings.pm
 # The correct versions should be already supplied with the perl kit,
 # in case you don't have perl available.
-# To force them to run, type
+# To force them to be regenerated, type
 #	make regen_headers
+
+AUTOGEN_FILES = keywords.h opcode.h opnames.h pp_proto.h pp.sym proto.h \
+		embed.h embedvar.h global.sym \
+		pod/perlintern.pod pod/perlapi.pod \
+		objXSUB.h perlapi.h perlapi.c ext/ByteLoader/byterun.h \
+		ext/ByteLoader/byterun.c ext/B/B/Asmdata.pm regnodes.h \
+		warnings.h lib/warnings.pm
+
 regen_headers:	FORCE
-	perl keywords.pl
-	perl opcode.pl
-	perl embed.pl
-	perl bytecode.pl
-	perl regcomp.pl
+	-$(CHMOD_W) $(AUTOGEN_FILES)
+	-perl keywords.pl
+	-perl opcode.pl
+	-perl embed.pl
+	-perl bytecode.pl
+	-perl regcomp.pl
+	-perl warnings.pl
 
 # Extensions:
 # Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will
@@ -514,38 +670,42 @@ distclean:	clobber
 # Do not 'make _mopup' directly.
 _mopup:
 	rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c
-	rm -f perl.exp ext.libs
+	-@test -f extra.pods && rm -f `cat extra.pods`
+	-@test -f vms/README_vms.pod && rm -f vms/README_vms.pod
+	-rm -f perl.exp ext.libs extra.pods
 	-rm -f perl.export perl.dll perl.libexp perl.map perl.def
+	-rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap
 	rm -f perl suidperl miniperl $(LIBPERL)
 
 # Do not 'make _tidy' directly.
 _tidy:
-	-cd pod; $(MAKE) clean
-	-cd utils; $(MAKE) clean
-	-cd x2p; $(MAKE) clean
+	-cd pod; $(LDLIBPTH) $(MAKE) clean
+	-cd utils; $(LDLIBPTH) $(MAKE) clean
+	-cd x2p; $(LDLIBPTH) $(MAKE) clean
 	-@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \
-	sh ext/util/make_ext clean $$x MAKE=$(MAKE) ; \
+	$(LDLIBPTH) sh ext/util/make_ext clean $$x MAKE=$(MAKE) ; \
 	done
 	rm -f testcompile compilelog
 
 # Do not 'make _cleaner' directly.
 _cleaner:
 	-cd os2; rm -f Makefile
-	-cd pod; $(MAKE) realclean
-	-cd utils; $(MAKE) realclean
-	-cd x2p; $(MAKE) realclean
+	-cd pod; $(LDLIBPTH) $(MAKE) realclean
+	-cd utils; $(LDLIBPTH) $(MAKE) realclean
+	-cd x2p; $(LDLIBPTH) $(MAKE) realclean
 	-@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \
-	sh ext/util/make_ext realclean $$x MAKE=$(MAKE) ; \
+	$(LDLIBPTH) sh ext/util/make_ext realclean $$x MAKE=$(MAKE) ; \
 	done
-	rm -f *.orig */*.orig *~ */*~ core t/core t/c t/perl
+	rm -f *.orig */*.orig *~ */*~ core core.*perl.*.? *perl.core t/core t/core.perl.*.? t/*perl.core t/misctmp* t/tmp* t/c t/perl .?*.c so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR)
 	rm -rf $(addedbyconf)
 	rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old
 	rm -f $(private)
 	rm -rf lib/auto
-	rm -f lib/.exists
+	rm -f lib/.exists lib/*/.exists
 	rm -f h2ph.man pstruct
 	rm -rf .config
 	rm -f testcompile compilelog
+	-rmdir lib/B lib/Data lib/IO/Socket lib/IO
 
 # The following lint has practically everything turned on.  Unfortunately,
 # you have to wade through a lot of mumbo jumbo that can't be suppressed.
@@ -567,10 +727,6 @@ $(FIRSTMAKEFILE):	README $(MAKEDEPEND)
 config.h: config_h.SH config.sh
 	$(SHELL) config_h.SH
 
-# This is an AIXism.
-perl.exp: perl_exp.SH config.sh $(SYM) $(SYMH)
-	$(SHELL) perl_exp.SH
-
 # When done, touch perlmain.c so that it doesn't get remade each time.
 depend: makedepend
 	sh ./makedepend MAKE=$(MAKE)
@@ -581,11 +737,26 @@ depend: makedepend
 makedepend: makedepend.SH config.sh
 	sh ./makedepend.SH
 
-test-prep: miniperl perl preplibrary utilities $(dynamic_ext) $(nonxs_ext)
+# Cannot delegate rebuilding of t/perl to make to allow interlaced
+# test and minitest
+test-prep: miniperl perl preplibrary utilities $(dynamic_ext) $(nonxs_ext) $(TEST_PERL_DLL)
 	cd t && (rm -f perl$(EXE_EXT); $(LNS) ../perl$(EXE_EXT) perl$(EXE_EXT))
 
+# Second branch is for testing without a tty or controling terminal.
+# See t/op/stat.t
 test check: test-prep
-	cd t && $(LDLIBPTH) ./perl TEST /dev/null 2>&1; then \
+	  cd t && $(LDLIBPTH) ./perl TEST /dev/null 2>&1; then \
+	  cd t && $(LDLIBPTH) ./perl UTEST .clist
 
@@ -635,9 +809,19 @@ elc:	emacs/cperl-mode.elc
 emacs/cperl-mode.elc: emacs/cperl-mode.el
 	-cd emacs; emacs -batch -q -no-site-file -f batch-byte-compile cperl-mode.el
 
-etags:	emacs/cperl-mode.elc
+etags:	TAGS
+
+TAGS: emacs/cperl-mode.elc
 	sh emacs/ptags
 
+ctags:	tags
+
+# Let's hope make will not go into an infinite loop on case-unsensitive systems
+# This may also fail if . is in the head of the path, since perl will
+# require -Ilib
+tags:	TAGS
+	perl emacs/e2ctags.pl TAGS > tags
+
 # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
 # If this runs make out of memory, delete /usr/include lines.
 !NO!SUBS!
@@ -658,8 +842,9 @@ $define)
     xxx=''
     echo "This is an EBCDIC system, checking if any parser files need regenerating." >&4
 case "$osname" in
-os390)
+os390|posix-bc)
     rm -f y.tab.c y.tab.h
+    # yacc must be a reentrant ("pure") Bison in BS2000 Posix!
     yacc -d perly.y >/dev/null 2>&1
     if cmp -s y.tab.c perly.c; then
         rm -f y.tab.c
@@ -667,8 +852,21 @@ os390)
         echo "perly.y -> perly.c" >&2
         mv -f y.tab.c perly.c
         chmod u+w perly.c
-	sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
-	    -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c
+        sed -e '/^#include "perl\.h"/a\
+\
+#define yydebug    PL_yydebug\
+#define yynerrs    PL_yynerrs\
+#define yyerrflag  PL_yyerrflag\
+#define yychar     PL_yychar\
+#define yyval      PL_yyval\
+#define yylval     PL_yylval'				\
+            -e '/YYSTYPE *yyval;/D'			\
+            -e '/YYSTYPE *yylval;/D'			\
+            -e '/int  yychar,/,/yynerrs;/D'		\
+            -e 's/int yydebug = 0;/yydebug = 0;/'	\
+            -e 's/[^_]realloc(/PerlMem_realloc(/g'	\
+            -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
+            -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c
         xxx="$xxx perly.c"
     fi
     if cmp -s y.tab.h perly.h; then
@@ -681,7 +879,15 @@ os390)
     if cd x2p
     then
         rm -f y.tab.c y.tab.h
-        yacc a2p.y >/dev/null 2>&1
+        case "$osname" in
+        posix-bc)
+           # we are using two different yaccs in BS2000 Posix!
+           byacc a2p.y >/dev/null 2>&1
+           ;;
+        *) # e.g. os390
+           yacc  a2p.y >/dev/null 2>&1
+           ;;
+        esac
         if cmp -s y.tab.c a2p.c
         then
             rm -f y.tab.c
@@ -708,6 +914,9 @@ os390)
         cd ..
     fi
     ;;
+vmesa)
+    # Do nothing in VM/ESA.
+    ;;
 *)
     echo "'$osname' is an EBCDIC system I don't know that well." >&4
     ;;
@@ -717,3 +926,4 @@ esac
     esac
     ;;
 esac
+
diff --git a/contrib/perl5/Policy_sh.SH b/contrib/perl5/Policy_sh.SH
index 52a2c57da5ee..0d9c1dfbc758 100755
--- a/contrib/perl5/Policy_sh.SH
+++ b/contrib/perl5/Policy_sh.SH
@@ -1,4 +1,4 @@
-case $CONFIG in
+case $CONFIGDOTSH in
 '') . ./config.sh ;;
 esac
 echo "Extracting Policy.sh (with variable substitutions)"
@@ -29,12 +29,25 @@ case "\$perladmin" in
 '') perladmin='$perladmin' ;;
 esac
 
-# Installation prefix.  Allow a Configure -D override.  You
+# Installation prefixes.  Allow a Configure -D override.  You
 # may wish to reinstall perl under a different prefix, perhaps
 # in order to test a different configuration.
+# For an explanation of the installation directories, see the
+# INSTALL file section on "Installation Directories".
 case "\$prefix" in
 '') prefix='$prefix' ;;
 esac
+case "\$siteprefix" in
+'') siteprefix='$siteprefix' ;;
+esac
+case "\$vendorprefix" in
+'') vendorprefix='$vendorprefix' ;;
+esac
+
+# Where installperl puts things.
+case "\$installprefix" in
+'') installprefix='$installprefix' ;;
+esac
 
 # Installation directives.  Note that each one comes in three flavors.
 # For example, we have privlib, privlibexp, and installprivlib.
@@ -44,7 +57,22 @@ esac
 #     out automatically by Configure, so you don't have to include it here.
 # installprivlib is for systems (such as those running AFS) that
 #     need to distinguish between the place where things
-#     get installed and where they finally will reside.
+#     get installed and where they finally will reside.  As of 5.005_6x,
+#     this too is handled automatically by Configure based on
+#     $installprefix, so it isn't included here either.
+#
+# Note also that there are three broad hierarchies of installation 
+# directories, as discussed in the INSTALL file under 
+# "Installation Directories":
+#
+#  =item Directories for the perl distribution
+#
+#  =item Directories for site-specific add-on files
+#
+#  =item Directories for vendor-supplied add-on files
+#
+#  See Porting/Glossary for the definitions of these names, and see the
+#  INSTALL file for further explanation and some examples.
 # 
 # In each case, if your previous value was the default, leave it commented
 # out.  That way, if you override prefix, all of these will be
@@ -56,13 +84,17 @@ esac
 
 !GROK!THIS!
 
-for var in bin scriptdir privlib archlib \
-	man1dir man3dir sitelib sitearch \
-	installbin installscript installprivlib installarchlib \
-	installman1dir installman3dir installsitelib installsitearch \
-	man1ext man3ext; do
+for var in \
+	bin scriptdir privlib archlib man1dir man3dir html1dir html3dir \
+	sitebin sitescript sitelib sitearch \
+		siteman1 siteman3 sitehtml1 sitehtml3 \
+	vendorbin vendorscript vendorlib vendorarch \
+		vendorman1 vendorman3 vendorhtml1 vendorhtml3
+do
 	
     case "$var" in
+
+    # Directories for the core perl components
     bin)	dflt=$prefix/bin ;;
     # The scriptdir test is more complex, but this is probably usually ok.
     scriptdir)
@@ -78,47 +110,73 @@ for var in bin scriptdir privlib archlib \
 	*)	dflt=$prefix/lib/$package/$version ;;
 	esac
 	;;
-    archlib)	
-	case "$prefix" in
-	*perl*)	dflt=$prefix/lib/$version/$archname ;;
-	*)	dflt=$prefix/lib/$package/$version/$archname ;;
-	esac
-	;;
-    sitelib)
-	case "$prefix" in
-	*perl*)	dflt=$prefix/lib/site_perl/$apiversion ;;
-	*)	dflt=$prefix/lib/$package/site_perl/$apiversion ;;
-	esac
-	;;
-    sitearch)	
-	case "$prefix" in
-	*perl*)	dflt=$prefix/lib/site_perl/$apiversion/$archname ;;
-	*)	dflt=$prefix/lib/$package/site_perl/$apiversion/$archname ;;
-	esac
-	;;
-    man1dir)	dflt="$prefix/man/man1" ;;
-    man3dir)
-	case "$prefix" in
-	*perl*) dflt=`echo $man1dir |
-		    sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
-	*)	dflt=$privlib/man/man3 ;;
-	esac
-	;;
+    archlib)	dflt="$privlib/$archname" ;;
 
+    man1dir)	dflt="$prefix/man/man1" ;;
+    man3dir)	dflt="$prefix/man/man3" ;;
     # Can we assume all sed's have greedy matching?
     man1ext)	dflt=`echo $man1dir | sed -e 's!.*man!!' -e 's!^\.!!'` ;;
     man3ext)	dflt=`echo $man3dir | sed -e 's!.*man!!' -e 's!^\.!!'` ;;
 
-    # It might be possible to fool these next tests.  Please let
-    # me know if they don't work right for you.
-    installbin)		dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
-    installscript)	dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
-    installprivlib)	dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
-    installarchlib)	dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
-    installsitelib)	dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
-    installsitearch)	dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
-    installman1dir)	dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
-    installman3dir)	dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
+    # We don't know what to do with these yet.
+    html1dir)	dflt='' ;;
+    htm31dir)	dflt='' ;;
+
+    # Directories for site-specific add-on files
+    sitebin)	dflt=$siteprefix/bin ;;
+    sitescript)
+	if $test -d $siteprefix/script; then
+	    dflt=$siteprefix/script
+	else
+	    dflt=$sitebin
+	fi
+	;;
+    sitelib)
+	case "$siteprefix" in
+	*perl*)	dflt=$prefix/lib/site_perl/$version ;;
+	*)	dflt=$prefix/lib/$package/site_perl/$version ;;
+	esac
+	;;
+    sitearch)	dflt="$sitelib/$archname" ;;
+
+    siteman1)	dflt="$siteprefix/man/man1" ;;
+    siteman3)	dflt="$siteprefix/man/man3" ;;
+    # We don't know what to do with these yet.
+    sitehtml1)	dflt='' ;;
+    sitehtm31dir)	dflt='' ;;
+    
+    # Directories for vendor-supplied add-on files
+    # These are all usually empty.
+    vendor*)
+	if test X"$vendorprefix" = X""; then
+	    dflt=''
+	else
+	    case "$var" in
+	    vendorbin)	dflt=$vendorprefix/bin ;;
+	    vendorscript)
+		if $test -d $vendorprefix/script; then
+		    dflt=$vendorprefix/script
+		else
+		    dflt=$vendorbin
+		fi
+		;;
+	    vendorlib)
+		case "$vendorprefix" in
+		*perl*)	dflt=$prefix/lib/vendor_perl/$version ;;
+		*)	dflt=$prefix/lib/$package/vendor_perl/$version ;;
+		esac
+		;;
+	    vendorarch)	dflt="$vendorlib/$archname" ;;
+
+	    vendorman1)	dflt="$vendorprefix/man/man1" ;;
+	    vendorman3)	dflt="$vendorprefix/man/man3" ;;
+	    # We don't know what to do with these yet.
+	    vendorhtml1)	dflt='' ;;
+	    vendorhtm3)	dflt='' ;;
+
+	    esac  # End of vendorprefix != ''
+	fi
+	;;
     esac
     
     eval val="\$$var"
@@ -148,6 +206,5 @@ $spitshell <>Policy.sh
 #   The original design for this Policy.sh file came from Wayne Davison,
 #   maintainer of trn.
 #   This version for Perl5.004_61 originally written by
-#   Andy Dougherty .
+#   Andy Dougherty .
 #   This file may be distributed under the same terms as Perl itself.
-
diff --git a/contrib/perl5/Porting/Glossary b/contrib/perl5/Porting/Glossary
index 52b560e10185..cc66d7041bdd 100644
--- a/contrib/perl5/Porting/Glossary
+++ b/contrib/perl5/Porting/Glossary
@@ -4,11 +4,6 @@ programs (e.g. I_UNISTD) are already described in config_h.SH.  [`configpm'
 generates pod documentation for Config.pm from this file--please try to keep
 the formatting regular.]
 
-Mcc (Loc.U):
-	This variable is used internally by Configure to determine the
-	full pathname (if any) of the Mcc program.  After Configure runs,
-	the value is reset to a plain "Mcc" and is not useful.
-
 _a (Unix.U):
 	This variable defines the extension used for ordinary libraries.
 	For unix, it is '.a'.  The '.' is included.  Other possible
@@ -31,25 +26,61 @@ afs (afs.U):
 
 alignbytes (alignbytes.U):
 	This variable holds the number of bytes required to align a
-	double. Usual values are 2, 4 and 8.
+	double-- or a long double when applicable. Usual values are
+	2, 4 and 8.  The default is eight, for safety.
 
 ansi2knr (ansi2knr.U):
 	This variable is set if the user needs to run ansi2knr.  
 	Currently, this is not supported, so we just abort.
 
 aphostname (d_gethname.U):
-	Thie variable contains the command which can be used to compute the
+	This variable contains the command which can be used to compute the
 	host name. The command is fully qualified by its absolute path, to make
 	it safe when used by a process with super-user privileges.
 
-apiversion (patchlevel.U):
-	This is a number which identifies the lowest version of perl
-	to have an API (for XS extensions) compatible with the present
-	version.  For example, for 5.005_01, the apiversion should be
-	5.005, since 5.005_01 should be binary compatible with 5.005.
-	This should probably be incremented manually somehow, perhaps
-	from patchlevel.h.  For now, we'll guess maintenance subversions
-	will retain binary compatibility.
+api_revision (patchlevel.U):
+	The three variables, api_revision, api_version, and
+	api_subversion, specify the version of the oldest perl binary
+	compatible with the present perl.  In a full version string
+	such as '5.6.1', api_revision is the '5'.
+	Prior to 5.5.640, the format was a floating point number,
+	like 5.00563.
+		perl.c:incpush() and lib/lib.pm will automatically search in
+	$sitelib/.. for older directories back to the limit specified
+	by these api_ variables.  This is only useful if you have a
+	perl library directory tree structured like the default one.
+	See INSTALL for how this works.  The versioned site_perl
+	directory was introduced in 5.005, so that is the lowest
+	possible value.  The version list appropriate for the current
+	system is determined in inc_version_list.U.
+		XXX To do:  Since compatibility can depend on compile time
+	options (such as bincompat, longlong, etc.) it should
+	(perhaps) be set by Configure, but currently it isn't.
+	Currently, we read a hard-wired value from patchlevel.h.
+	Perhaps what we ought to do is take the hard-wired value from
+	patchlevel.h but then modify it if the current Configure
+	options warrant.  patchlevel.h then would use an #ifdef guard.
+
+api_subversion (patchlevel.U):
+	The three variables, api_revision, api_version, and
+	api_subversion, specify the version of the oldest perl binary
+	compatible with the present perl.  In a full version string
+	such as '5.6.1', api_subversion is the '1'.  See api_revision for
+	full details.
+
+api_version (patchlevel.U):
+	The three variables, api_revision, api_version, and
+	api_subversion, specify the version of the oldest perl binary
+	compatible with the present perl.  In a full version string
+	such as '5.6.1', api_version is the '6'.  See api_revision for
+	full details.  As a special case, 5.5.0 is rendered in the
+	old-style as 5.005.  (In the 5.005_0x maintenance series,
+	this was the only versioned directory in $sitelib.)
+
+api_versionstring (patchlevel.U):
+	This variable combines api_revision, api_version, and
+	api_subversion in a format such as 5.6.1 (or 5_6_1) suitable
+	for use as a directory name.  This is filesystem dependent.
 
 ar (Loc.U):
 	This variable is used internally by Configure to determine the
@@ -67,6 +98,9 @@ archlibexp (archlib.U):
 	This variable is the same as the archlib variable, but is
 	filename expanded at configuration time, for convenient use.
 
+archname64 (use64bits.U):
+	This variable is used for the 64-bitness part of $archname.
+
 archname (archname.U):
 	This variable is a short name to characterize the current
 	architecture.  It is used mainly to construct the default archlib.
@@ -96,6 +130,10 @@ bin (bin.U):
 	is most often a local directory such as /usr/local/bin. Programs using
 	this variable must be prepared to deal with ~name substitution.
 
+bincompat5005 (bincompat5005.U):
+	This variable contains y if this version of Perl should be
+	binary-compatible with Perl 5.005.
+
 binexp (bin.U):
 	This is the same as the bin variable, but is filename expanded at
 	configuration time, for use in your makefiles.
@@ -118,15 +156,15 @@ byteorder (byteorder.U):
 c (n.U):
 	This variable contains the \c string if that is what causes the echo
 	command to suppress newline.  Otherwise it is null.  Correct usage is
-	    $echo $n "prompt for a question: $c".
+	$echo $n "prompt for a question: $c".
 
 castflags (d_castneg.U):
 	This variable contains a flag that precise difficulties the
 	compiler has casting odd floating values to unsigned long:
-		0 = ok
-		1 = couldn't cast < 0
-		2 = couldn't cast >= 0x80000000
-		4 = couldn't cast in argument expression list
+	0 = ok
+	1 = couldn't cast < 0
+	2 = couldn't cast >= 0x80000000
+	4 = couldn't cast in argument expression list
 
 cat (Loc.U):
 	This variable is used internally by Configure to determine the
@@ -172,6 +210,10 @@ cf_time (cf_who.U):
 	Holds the output of the "date" command when the configuration file was
 	produced. This is used to tag both config.sh and config_h.SH.
 
+charsize (charsize.U):
+	This variable contains the value of the CHARSIZE symbol, which
+	indicates to the C program how many bytes there are in a character.
+
 chgrp (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
@@ -198,6 +240,10 @@ compress (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
 
+CONFIGDOTSH (Oldsyms.U):
+	This is set to 'true' in config.sh so that a shell script
+	sourcing config.sh can tell if it has been sourced already.
+
 contains (contains.U):
 	This variable holds the command to do a grep with a proper return
 	status.  On most sane systems it is simply "grep".  On insane systems
@@ -222,19 +268,25 @@ cpp_stuff (cpp_stuff.U):
 	This variable contains an identification of the catenation mechanism
 	used by the C preprocessor.
 
+cppccsymbols (Cppsym.U):
+	The variable contains the symbols defined by the C compiler
+	when it calls cpp.  The symbols defined by the cc alone or cpp
+	alone are not in this list, see ccsymbols and cppsymbols.
+	The list is a space-separated list of symbol=value tokens.
+
 cppflags (ccflags.U):
 	This variable holds the flags that will be passed to the C pre-
 	processor. It is up to the Makefile to use it.
 
 cpplast (cppstdin.U):
-	This variable has the same functionality as cppminus, only it applies to
-	cpprun and not cppstdin.
+	This variable has the same functionality as cppminus, only it applies
+	to cpprun and not cppstdin.
 
 cppminus (cppstdin.U):
 	This variable contains the second part of the string which will invoke
 	the C preprocessor on the standard input and produce to standard
-	output.  This variable will have the value "-" if cppstdin needs a minus
-	to specify standard input, otherwise the value is "".
+	output.  This variable will have the value "-" if cppstdin needs
+	a minus to specify standard input, otherwise the value is "".
 
 cpprun (cppstdin.U):
 	This variable contains the command which will invoke a C preprocessor
@@ -256,11 +308,10 @@ cppsymbols (Cppsym.U):
 	not in this list, see ccsymbols and cppccsymbols.
 	The list is a space-separated list of symbol=value tokens.
 
-cppccsymbols (Cppsym.U):
-	The variable contains the symbols defined by the C compiler when
-	when it calls cpp.  The symbols defined by the cc alone or cpp
-	alone are not in this list, see ccsymbols and cppsymbols.
-	The list is a space-separated list of symbol=value tokens.
+crosscompile (crosscompile.U):
+	This variable conditionally defines the CROSSCOMPILE symbol
+	which signifies that the build process is be a cross-compilation.
+	This is normally set by hints files or from Configure command line.
 
 cryptlib (d_crypt.U):
 	This variable holds -lcrypt or the path to a libcrypt.a archive if
@@ -272,15 +323,14 @@ csh (Loc.U):
 	full pathname (if any) of the csh program.  After Configure runs,
 	the value is reset to a plain "csh" and is not useful.
 
-d_Gconvert (d_gconvert.U):
-	This variable holds what Gconvert is defined as to convert
-	floating point numbers into strings. It could be 'gconvert'
-	or a more complex macro emulating gconvert with gcvt() or sprintf.
-
 d_access (d_access.U):
 	This variable conditionally defines HAS_ACCESS if the access() system
 	call is available to check for access permissions using real IDs.
 
+d_accessx (d_accessx.U):
+	This variable conditionally defines the HAS_ACCESSX symbol, which
+	indicates to the C program that the accessx() routine is available.
+
 d_alarm (d_alarm.U):
 	This variable conditionally defines the HAS_ALARM symbol, which
 	indicates to the C program that the alarm() routine is available.
@@ -290,6 +340,14 @@ d_archlib (archlib.U):
 	of architecture-dependent library files for $package.  If
 	$archlib is the same as $privlib, then this is set to undef.
 
+d_atolf (atolf.U):
+	This variable conditionally defines the HAS_ATOLF symbol, which
+	indicates to the C program that the atolf() routine is available.
+
+d_atoll (atoll.U):
+	This variable conditionally defines the HAS_ATOLL symbol, which
+	indicates to the C program that the atoll() routine is available.
+
 d_attribut (d_attribut.U):
 	This variable conditionally defines HASATTRIBUTE, which
 	indicates the C compiler can check for function attributes,
@@ -303,6 +361,13 @@ d_bcopy (d_bcopy.U):
 	This variable conditionally defines the HAS_BCOPY symbol if
 	the bcopy() routine is available to copy strings.
 
+d_bincompat5005 (bincompat5005.U):
+	This variable conditionally defines BINCOMPAT5005 so that embed.h
+	can take special action if this version of Perl should be
+	binary-compatible with Perl 5.005.  This is impossible for builds
+	that use features like threads and multiplicity it is always $undef
+	for those versions.
+
 d_bsd (Guess.U):
 	This symbol conditionally defines the symbol BSD when running on a
 	BSD system.
@@ -401,10 +466,20 @@ d_dosuid (d_dosuid.U):
 	tells the C program that it should insert setuid emulation code
 	on hosts which have setuid #! scripts disabled.
 
+d_drand48proto (d_drand48proto.U):
+	This variable conditionally defines the HAS_DRAND48_PROTO symbol,
+	which indicates to the C program that the system provides
+	a prototype for the drand48() function.  Otherwise, it is
+	up to the program to supply one.
+
 d_dup2 (d_dup2.U):
 	This variable conditionally defines HAS_DUP2 if dup2() is
 	available to duplicate file descriptors.
 
+d_eaccess (d_eaccess.U):
+	This variable conditionally defines the HAS_EACCESS symbol, which
+	indicates to the C program that the eaccess() routine is available.
+
 d_endgrent (d_endgrent.U):
 	This variable conditionally defines the HAS_ENDGRENT symbol, which
 	indicates to the C program that the endgrent() routine is available
@@ -431,6 +506,10 @@ d_endsent (d_endsent.U):
 	This variable conditionally defines HAS_ENDSERVENT if endservent() is
 	available to close whatever was being used for service queries.
 
+d_endspent (d_endspent.U):
+	This variable conditionally defines HAS_ENDSPENT if endspent() is
+	available to finalize the scan of SysV shadow password entries.
+
 d_eofnblk (nblock_io.U):
 	This variable conditionally defines EOF_NONBLOCK if EOF can be seen
 	when reading from a non-blocking I/O source.
@@ -491,11 +570,22 @@ d_fpathconf (d_pathconf.U):
 	to determine file-system related limits and options associated
 	with a given open file descriptor.
 
+d_fpos64_t (d_fpos64_t.U):
+	This symbol will be defined if the C compiler supports fpos64_t.
+
+d_fs_data_s (d_fs_data_s.U):
+	This variable conditionally defines the HAS_STRUCT_FS_DATA symbol,
+	which indicates that the struct fs_data is supported.
+
+d_fseeko (d_fseeko.U):
+	This variable conditionally defines the HAS_FSEEKO symbol, which
+	indicates to the C program that the fseeko() routine is available.
+
 d_fsetpos (d_fsetpos.U):
 	This variable conditionally defines HAS_FSETPOS if fsetpos() is
 	available to set the file position indicator.
 
-d_fstatfs (d_statfs.U):
+d_fstatfs (d_fstatfs.U):
 	This variable conditionally defines the HAS_FSTATFS symbol, which
 	indicates to the C program that the fstatfs() routine is available.
 
@@ -503,11 +593,33 @@ d_fstatvfs (d_statvfs.U):
 	This variable conditionally defines the HAS_FSTATVFS symbol, which
 	indicates to the C program that the fstatvfs() routine is available.
 
+d_ftello (d_ftello.U):
+	This variable conditionally defines the HAS_FTELLO symbol, which
+	indicates to the C program that the ftello() routine is available.
+
 d_ftime (d_ftime.U):
 	This variable conditionally defines the HAS_FTIME symbol, which indicates
 	that the ftime() routine exists.  The ftime() routine is basically
 	a sub-second accuracy clock.
 
+d_Gconvert (d_gconvert.U):
+	This variable holds what Gconvert is defined as to convert
+	floating point numbers into strings. It could be 'gconvert'
+	or a more complex macro emulating gconvert with gcvt() or sprintf.
+	Possible values are:
+	d_Gconvert='gconvert((x),(n),(t),(b))'
+	d_Gconvert='gcvt((x),(n),(b))'
+	d_Gconvert='sprintf((b),"%.*g",(n),(x))'
+
+d_getcwd (d_getcwd.U):
+	This variable conditionally defines the HAS_GETCWD symbol, which
+	indicates to the C program that the getcwd() routine is available
+	to get the current working directory.
+
+d_getfsstat (d_getfsstat.U):
+	This variable conditionally defines the HAS_GETFSSTAT symbol, which
+	indicates to the C program that the getfsstat() routine is available.
+
 d_getgrent (d_getgrent.U):
 	This variable conditionally defines the HAS_GETGRENT symbol, which
 	indicates to the C program that the getgrent() routine is available
@@ -548,10 +660,15 @@ d_getlogin (d_getlogin.U):
 	indicates to the C program that the getlogin() routine is available
 	to get the login name.
 
+d_getmnt (d_getmnt.U):
+	This variable conditionally defines the HAS_GETMNT symbol, which
+	indicates to the C program that the getmnt() routine is available
+	to retrieve one or more mount info blocks by filename.
+
 d_getmntent (d_getmntent.U):
 	This variable conditionally defines the HAS_GETMNTENT symbol, which
 	indicates to the C program that the getmntent() routine is available
-	to iterate through mounted files.
+	to iterate through mounted files to get their mount info.
 
 d_getnbyaddr (d_getnbyad.U):
 	This variable conditionally defines the HAS_GETNETBYADDR symbol, which
@@ -645,6 +762,14 @@ d_getservprotos (d_getservprotos.U):
 	prototypes for the various getserv*() functions.  
 	See also netdbtype.U for probing for various netdb types.
 
+d_getspent (d_getspent.U):
+	This variable conditionally defines HAS_GETSPENT if getspent() is
+	available to retrieve SysV shadow password entries sequentially.
+
+d_getspnam (d_getspnam.U):
+	This variable conditionally defines HAS_GETSPNAM if getspnam() is
+	available to retrieve SysV shadow password entries by name.
+
 d_gettimeod (d_ftime.U):
 	This variable conditionally defines the HAS_GETTIMEOFDAY symbol, which
 	indicates that the gettimeofday() system call exists (to obtain a
@@ -666,6 +791,10 @@ d_htonl (d_htonl.U):
 	This variable conditionally defines HAS_HTONL if htonl() and its
 	friends are available to do network order byte swapping.
 
+d_iconv (d_iconv.U):
+	This variable conditionally defines the HAS_ICONV symbol, which
+	indicates to the C program that the iconv() routine is available.
+
 d_index (d_strchr.U):
 	This variable conditionally defines HAS_INDEX if index() and
 	rindex() are available for string searching.
@@ -675,6 +804,9 @@ d_inetaton (d_inetaton.U):
 	indicates to the C program that the inet_aton() function is available
 	to parse IP address "dotted-quad" strings.
 
+d_int64_t (d_int64_t.U):
+	This symbol will be defined if the C compiler supports int64_t.
+
 d_isascii (d_isascii.U):
 	This variable conditionally defines the HAS_ISASCII constant,
 	which indicates to the C program that isascii() is available.
@@ -689,6 +821,11 @@ d_lchown (d_lchown.U):
 	indicates to the C program that the lchown() routine is available
 	to operate on a symbolic link (instead of following the link).
 
+d_ldbl_dig (d_ldbl_dig.U):
+	This variable conditionally defines d_ldbl_dig if this system's
+	header files provide LDBL_DIG, which is the number of significant
+	digits in a long double precision number.
+
 d_link (d_link.U):
 	This variable conditionally defines HAS_LINK if link() is
 	available to create hard links.
@@ -709,10 +846,20 @@ d_longlong (d_longlong.U):
 	This variable conditionally defines HAS_LONG_LONG if 
 	the long long type is supported.
 
+d_lseekproto (d_lseekproto.U):
+	This variable conditionally defines the HAS_LSEEK_PROTO symbol,
+	which indicates to the C program that the system provides
+	a prototype for the lseek() function.  Otherwise, it is
+	up to the program to supply one.
+
 d_lstat (d_lstat.U):
 	This variable conditionally defines HAS_LSTAT if lstat() is
 	available to do file stats on symbolic links.
 
+d_madvise (d_madvise.U):
+	This variable conditionally defines HAS_MADVISE if madvise() is
+	available to map a file into memory.
+
 d_mblen (d_mblen.U):
 	This variable conditionally defines the HAS_MBLEN symbol, which
 	indicates to the C program that the mblen() routine is available
@@ -728,6 +875,11 @@ d_mbtowc (d_mbtowc.U):
 	indicates to the C program that the mbtowc() routine is available
 	to convert multibyte to a wide character.
 
+d_memchr (d_memchr.U):
+	This variable conditionally defines the HAS_MEMCHR symbol, which
+	indicates to the C program that the memchr() routine is available
+	to locate characters within a C string.
+
 d_memcmp (d_memcmp.U):
 	This variable conditionally defines the HAS_MEMCMP symbol, which
 	indicates to the C program that the memcmp() routine is available
@@ -753,18 +905,67 @@ d_mkdir (d_mkdir.U):
 	indicates to the C program that the mkdir() routine is available
 	to create directories..
 
+d_mkdtemp (d_mkdtemp.U):
+	This variable conditionally defines the HAS_MKDTEMP symbol, which
+	indicates to the C program that the mkdtemp() routine is available
+	to exclusively create a uniquely named temporary directory.
+
 d_mkfifo (d_mkfifo.U):
 	This variable conditionally defines the HAS_MKFIFO symbol, which
 	indicates to the C program that the mkfifo() routine is available.
 
+d_mkstemp (d_mkstemp.U):
+	This variable conditionally defines the HAS_MKSTEMP symbol, which
+	indicates to the C program that the mkstemp() routine is available
+	to exclusively create and open a uniquely named temporary file.
+
+d_mkstemps (d_mkstemps.U):
+	This variable conditionally defines the HAS_MKSTEMPS symbol, which
+	indicates to the C program that the mkstemps() routine is available
+	to exclusively create and open a uniquely named (with a suffix)
+	temporary file.
+
 d_mktime (d_mktime.U):
 	This variable conditionally defines the HAS_MKTIME symbol, which
 	indicates to the C program that the mktime() routine is available.
 
+d_mmap (d_mmap.U):
+	This variable conditionally defines HAS_MMAP if mmap() is
+	available to map a file into memory.
+
+d_mprotect (d_mprotect.U):
+	This variable conditionally defines HAS_MPROTECT if mprotect() is
+	available to modify the access protection of a memory mapped file.
+
 d_msg (d_msg.U):
 	This variable conditionally defines the HAS_MSG symbol, which
 	indicates that the entire msg*(2) library is present.
 
+d_msg_ctrunc (d_socket.U):
+	This variable conditionally defines the HAS_MSG_CTRUNC symbol,
+	which indicates that the MSG_CTRUNC is available.  #ifdef is
+	not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_dontroute (d_socket.U):
+	This variable conditionally defines the HAS_MSG_DONTROUTE symbol,
+	which indicates that the MSG_DONTROUTE is available.  #ifdef is
+	not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_oob (d_socket.U):
+	This variable conditionally defines the HAS_MSG_OOB symbol,
+	which indicates that the MSG_OOB is available.  #ifdef is
+	not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_peek (d_socket.U):
+	This variable conditionally defines the HAS_MSG_PEEK symbol,
+	which indicates that the MSG_PEEK is available.  #ifdef is
+	not enough because it may be an enum, glibc has been known to do this.
+
+d_msg_proxy (d_socket.U):
+	This variable conditionally defines the HAS_MSG_PROXY symbol,
+	which indicates that the MSG_PROXY is available.  #ifdef is
+	not enough because it may be an enum, glibc has been known to do this.
+
 d_msgctl (d_msgctl.U):
 	This variable conditionally defines the HAS_MSGCTL symbol, which
 	indicates to the C program that the msgctl() routine is available.
@@ -781,6 +982,14 @@ d_msgsnd (d_msgsnd.U):
 	This variable conditionally defines the HAS_MSGSND symbol, which
 	indicates to the C program that the msgsnd() routine is available.
 
+d_msync (d_msync.U):
+	This variable conditionally defines HAS_MSYNC if msync() is
+	available to synchronize a mapped file.
+
+d_munmap (d_munmap.U):
+	This variable conditionally defines HAS_MUNMAP if munmap() is
+	available to unmap a region mapped by mmap().
+
 d_mymalloc (mallocsrc.U):
 	This variable conditionally defines MYMALLOC in case other parts
 	of the source want to take special action if MYMALLOC is used.
@@ -790,10 +999,21 @@ d_nice (d_nice.U):
 	This variable conditionally defines the HAS_NICE symbol, which
 	indicates to the C program that the nice() routine is available.
 
+d_nv_preserves_uv (perlxv.U):
+	This variable indicates whether a variable of type nvtype
+	can preserve all the bits a variable of type uvtype.
+
+d_off64_t (d_off64_t.U):
+	This symbol will be defined if the C compiler supports off64_t.
+
+d_old_pthread_create_joinable (d_pthrattrj.U):
+	This variable conditionally defines pthread_create_joinable.
+	undef if pthread.h defines PTHREAD_CREATE_JOINABLE.
+
 d_oldpthreads (usethreads.U):
 	This variable conditionally defines the OLD_PTHREADS_API symbol,
 	and indicates that Perl should be built to use the old
-	draft POSIX threads API.  This is only potneially meaningful if
+	draft POSIX threads API.  This is only potentially meaningful if
 	usethreads is set.
 
 d_oldsock (d_socket.U):
@@ -817,7 +1037,7 @@ d_pause (d_pause.U):
 	to suspend a process until a signal is received.
 
 d_phostname (d_gethname.U):
-	This variable conditionally defines the PHOSTNAME symbol, which
+	This variable conditionally defines the HAS_PHOSTNAME symbol, which
 	contains the shell command which, when fed to popen(), may be
 	used to derive the host name.
 
@@ -836,16 +1056,60 @@ d_portable (d_portable.U):
 	indicates to the C program that it should not assume that it is
 	running on the machine it was compiled on.
 
+d_PRId64 (quadfio.U):
+	This variable conditionally defines the PERL_PRId64 symbol, which
+	indiciates that stdio has a symbol to print 64-bit decimal numbers.
+
+d_PRIeldbl (longdblfio.U):
+	This variable conditionally defines the PERL_PRIfldlbl symbol, which
+	indiciates that stdio has a symbol to print long doubles.
+
+d_PRIEldbl (longdblfio.U):
+	This variable conditionally defines the PERL_PRIfldlbl symbol, which
+	indiciates that stdio has a symbol to print long doubles.
+
+d_PRIfldbl (longdblfio.U):
+	This variable conditionally defines the PERL_PRIfldlbl symbol, which
+	indiciates that stdio has a symbol to print long doubles.
+
+d_PRIFldbl (longdblfio.U):
+	This variable conditionally defines the PERL_PRIfldlbl symbol, which
+	indiciates that stdio has a symbol to print long doubles.
+
+d_PRIgldbl (longdblfio.U):
+	This variable conditionally defines the PERL_PRIfldlbl symbol, which
+	indiciates that stdio has a symbol to print long doubles.
+
+d_PRIGldbl (longdblfio.U):
+	This variable conditionally defines the PERL_PRIfldlbl symbol, which
+	indiciates that stdio has a symbol to print long doubles.
+
+d_PRIi64 (quadfio.U):
+	This variable conditionally defines the PERL_PRIi64 symbol, which
+	indiciates that stdio has a symbol to print 64-bit decimal numbers.
+
+d_PRIo64 (quadfio.U):
+	This variable conditionally defines the PERL_PRIo64 symbol, which
+	indiciates that stdio has a symbol to print 64-bit octal numbers.
+
+d_PRIu64 (quadfio.U):
+	This variable conditionally defines the PERL_PRIu64 symbol, which
+	indiciates that stdio has a symbol to print 64-bit unsigned decimal
+	numbers.
+
+d_PRIx64 (quadfio.U):
+	This variable conditionally defines the PERL_PRIx64 symbol, which
+	indiciates that stdio has a symbol to print 64-bit hexadecimal numbers.
+
+d_PRIX64 (quadfio.U):
+	This variable conditionally defines the PERL_PRIX64 symbol, which
+	indiciates that stdio has a symbol to print 64-bit hExADECimAl numbers.
+
 d_pthread_yield (d_pthread_y.U):
 	This variable conditionally defines the HAS_PTHREAD_YIELD
 	symbol if the pthread_yield routine is available to yield
 	the execution of the current thread.
 
-d_pthreads_created_joinable (d_pthreadj.U):
-	This variable conditionally defines the PTHREADS_CREATED_JOINABLE
-	symbol if pthreads are created in the joinable (aka undetached) 
-	state.
-
 d_pwage (i_pwd.U):
 	This variable conditionally defines PWAGE, which indicates
 	that struct passwd contains pw_age.
@@ -878,6 +1142,14 @@ d_pwquota (i_pwd.U):
 	This variable conditionally defines PWQUOTA, which indicates
 	that struct passwd contains pw_quota.
 
+d_qgcvt (d_qgcvt.U):
+	This variable conditionally defines the HAS_QGCVT symbol, which
+	indicates to the C program that the qgcvt() routine is available.
+
+d_quad (quadtype.U):
+	This variable, if defined, tells that there's a 64-bit integer type,
+	quadtype.
+
 d_readdir (d_readdir.U):
 	This variable conditionally defines HAS_READDIR if readdir() is
 	available to read directory entries.
@@ -918,6 +1190,11 @@ d_sched_yield (d_pthread_y.U):
 	symbol if the sched_yield routine is available to yield
 	the execution of the current thread.
 
+d_scm_rights (d_socket.U):
+	This variable conditionally defines the HAS_SCM_RIGHTS symbol,
+	which indicates that the SCM_RIGHTS is available.  #ifdef is
+	not enough because it may be an enum, glibc has been known to do this.
+
 d_seekdir (d_readdir.U):
 	This variable conditionally defines HAS_SEEKDIR if seekdir() is
 	available.
@@ -935,11 +1212,11 @@ d_semctl (d_semctl.U):
 	This variable conditionally defines the HAS_SEMCTL symbol, which
 	indicates to the C program that the semctl() routine is available.
 
-d_semctl_semid_ds (d_union_senum.U):
+d_semctl_semid_ds (d_union_semun.U):
 	This variable conditionally defines USE_SEMCTL_SEMID_DS, which
 	indicates that struct semid_ds * is to be used for semctl IPC_STAT.
 
-d_semctl_semun (d_union_senum.U):
+d_semctl_semun (d_union_semun.U):
 	This variable conditionally defines USE_SEMCTL_SEMUN, which
 	indicates that union semun is to be used for semctl IPC_STAT.
 
@@ -1053,6 +1330,10 @@ d_setsid (d_setsid.U):
 	This variable conditionally defines HAS_SETSID if setsid() is
 	available to set the process group ID.
 
+d_setspent (d_setspent.U):
+	This variable conditionally defines HAS_SETSPENT if setspent() is
+	available to initialize the scan of SysV shadow password entries.
+
 d_setvbuf (d_setvbuf.U):
 	This variable conditionally defines the HAS_SETVBUF symbol, which
 	indicates to the C program that the setvbuf() routine is available
@@ -1100,20 +1381,32 @@ d_socket (d_socket.U):
 	This variable conditionally defines HAS_SOCKET, which indicates
 	that the BSD socket interface is supported.
 
+d_socklen_t (d_socklen_t.U):
+	This symbol will be defined if the C compiler supports socklen_t.
+
 d_sockpair (d_socket.U):
 	This variable conditionally defines the HAS_SOCKETPAIR symbol, which
 	indicates that the BSD socketpair() is supported.
 
-d_statblks (d_statblks.U):
-	This variable conditionally defines USE_STAT_BLOCKS if this system
-	has a stat structure declaring st_blksize and st_blocks.
+d_sqrtl (d_sqrtl.U):
+	This variable conditionally defines the HAS_SQRTL symbol, which
+	indicates to the C program that the sqrtl() routine is available.
 
-d_statfsflags (d_statfs.U):
-	This variable conditionally defines the HAS_STRUCT_STATFS_FLAGS
+d_statblks (d_statblks.U):
+	This variable conditionally defines USE_STAT_BLOCKS
+	if this system has a stat structure declaring
+	st_blksize and st_blocks.
+
+d_statfs_f_flags (d_statfs_f_flags.U):
+	This variable conditionally defines the HAS_STRUCT_STATFS_F_FLAGS
 	symbol, which indicates to struct statfs from has f_flags member.
 	This kind of struct statfs is coming from sys/mount.h (BSD),
 	not from sys/statfs.h (SYSV).
 
+d_statfs_s (d_statfs_s.U):
+	This variable conditionally defines the HAS_STRUCT_STATFS symbol,
+	which indicates that the struct statfs is supported.
+
 d_statvfs (d_statvfs.U):
 	This variable conditionally defines the HAS_STATVFS symbol, which
 	indicates to the C program that the statvfs() routine is available.
@@ -1126,6 +1419,10 @@ d_stdio_ptr_lval (d_stdstdio.U):
 	This variable conditionally defines STDIO_PTR_LVALUE if the
 	FILE_ptr macro can be used as an lvalue.
 
+d_stdio_stream_array (stdio_streams.U):
+	This variable tells whether there is an array holding
+	the stdio streams.
+
 d_stdiobase (d_stdstdio.U):
 	This variable conditionally defines USE_STDIO_BASE if this system
 	has a FILE structure declaring a usable _base field (or equivalent)
@@ -1169,11 +1466,27 @@ d_strtol (d_strtol.U):
 	indicates to the C program that the strtol() routine is available
 	to provide better numeric string conversion than atoi() and friends.
 
+d_strtold (d_strtold.U):
+	This variable conditionally defines the HAS_STRTOLD symbol, which
+	indicates to the C program that the strtold() routine is available.
+
+d_strtoll (d_strtoll.U):
+	This variable conditionally defines the HAS_STRTOLL symbol, which
+	indicates to the C program that the strtoll() routine is available.
+
 d_strtoul (d_strtoul.U):
 	This variable conditionally defines the HAS_STRTOUL symbol, which
 	indicates to the C program that the strtoul() routine is available
 	to provide conversion of strings to unsigned long.
 
+d_strtoull (d_strtoull.U):
+	This variable conditionally defines the HAS_STRTOULL symbol, which
+	indicates to the C program that the strtoull() routine is available.
+
+d_strtouq (d_strtouq.U):
+	This variable conditionally defines the HAS_STRTOUQ symbol, which
+	indicates to the C program that the strtouq() routine is available.
+
 d_strxfrm (d_strxfrm.U):
 	This variable conditionally defines HAS_STRXFRM if strxfrm() is
 	available to transform strings.
@@ -1222,6 +1535,12 @@ d_telldir (d_readdir.U):
 	This variable conditionally defines HAS_TELLDIR if telldir() is
 	available.
 
+d_telldirproto (d_telldirproto.U):
+	This variable conditionally defines the HAS_TELLDIR_PROTO symbol,
+	which indicates to the C program that the system provides
+	a prototype for the telldir() function.  Otherwise, it is
+	up to the program to supply one.
+
 d_time (d_time.U):
 	This variable conditionally defines the HAS_TIME symbol, which indicates
 	that the time() routine exists.  The time() routine is normaly
@@ -1250,10 +1569,23 @@ d_uname (d_gethname.U):
 	indicates to the C program that the uname() routine may be
 	used to derive the host name.
 
-d_union_semun (d_union_senum.U):
+d_union_semun (d_union_semun.U):
 	This variable conditionally defines HAS_UNION_SEMUN if the
 	union semun is defined by including .
 
+d_ustat (d_ustat.U):
+	This variable conditionally defines HAS_USTAT if ustat() is
+	available to query file system statistics by dev_t.
+
+d_vendorarch (vendorarch.U):
+	This variable conditionally defined PERL_VENDORARCH.
+
+d_vendorbin (vendorbin.U):
+	This variable conditionally defines PERL_VENDORBIN.
+
+d_vendorlib (vendorlib.U):
+	This variable conditionally defines PERL_VENDORLIB.
+
 d_vfork (d_vfork.U):
 	This variable conditionally defines the HAS_VFORK symbol, which
 	indicates the vfork() routine is available.
@@ -1320,6 +1652,9 @@ db_prefixtype (i_db.U):
 	in the  header file.  In older versions of DB, it was
 	int, while in newer ones it is size_t.
 
+defvoidused (voidflags.U):
+	This variable contains the default value of the VOIDUSED symbol (15).
+
 direntrytype (i_dirent.U):
 	This symbol is set to 'struct direct' or 'struct dirent' depending on
 	whether dirent is available or not. You should use this pseudo type to
@@ -1337,6 +1672,13 @@ doublesize (doublesize.U):
 	This variable contains the value of the DOUBLESIZE symbol, which
 	indicates to the C program how many bytes there are in a double.
 
+drand01 (randfunc.U):
+	Indicates the macro to be used to generate normalized
+	random numbers.  Uses randfunc, often divided by
+	(double) (((unsigned long) 1 << randbits)) in order to
+	normalize the result.
+	In C programs, the macro 'Drand01' is mapped to drand01.
+
 dynamic_ext (Extensions.U):
 	This variable holds a list of XS extension files we want to
 	link dynamically into the package.  It is used by Makefile.
@@ -1385,10 +1727,20 @@ extensions (Extensions.U):
 	and is typically used to test whether a particular extesion 
 	is available.
 
+fflushall (fflushall.U):
+	This symbol, if defined, tells that to flush
+	all pending stdio output one must loop through all
+	the stdio file handles stored in an array and fflush them.
+	Note that if fflushNULL is defined, fflushall will not
+	even be probed for and will be left undefined.
+
+fflushNULL (fflushall.U):
+	This symbol, if defined, tells that fflush(NULL) does flush
+	all pending stdio output.
+
 find (Loc.U):
-	This variable is used internally by Configure to determine the
-	full pathname (if any) of the find program.  After Configure runs,
-	the value is reset to a plain "find" and is not useful.
+	This variable is defined but not used by Configure.
+	The value is a plain '' and is not useful.
 
 firstmakefile (Unix.U):
 	This variable defines the first file searched by make.  On unix,
@@ -1400,8 +1752,11 @@ flex (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
 
+fpossize (fpossize.U):
+	This variable contains the size of a fpostype in bytes.
+
 fpostype (fpostype.U):
-	This variable defines Fpos_t to be something like fpost_t, long, 
+	This variable defines Fpos_t to be something like fpos_t, long, 
 	uint, or whatever type is used to declare file positions in libc.
 
 freetype (mallocsrc.U):
@@ -1432,11 +1787,26 @@ gccversion (cc.U):
 	indicate whether the compiler is version 1 or 2.  This is used in
 	setting some of the default cflags.  It is set to '' if not gcc.
 
+gidformat (gidf.U):
+	This variable contains the format string used for printing a Gid_t.
+
+gidsign (gidsign.U):
+	This variable contains the signedness of a gidtype.
+	1 for unsigned, -1 for signed.
+
+gidsize (gidsize.U):
+	This variable contains the size of a gidtype in bytes.
+
 gidtype (gidtype.U):
 	This variable defines Gid_t to be something like gid_t, int,
 	ushort, or whatever type is used to declare the return type
 	of getgid().  Typically, it is the type of group ids in the kernel.
 
+glibpth (libpth.U):
+	This variable holds the general path (space-separated) used to
+	find libraries.  It may contain directories that do not exist on
+	this platform, libpth is the cleaned-up version.
+
 grep (Loc.U):
 	This variable is used internally by Configure to determine the
 	full pathname (if any) of the grep program.  After Configure runs,
@@ -1446,6 +1816,8 @@ groupcat (nis.U):
 	This variable contains a command that produces the text of the
 	/etc/group file.  This is normally "cat /etc/group", but can be
 	"ypcat group" when NIS is used.
+	On some systems, such as os390, there may be no equivalent
+	command, in which case this variable is unset.
 
 groupstype (groupstype.U):
 	This variable defines Groups_t to be something like gid_t, int, 
@@ -1474,6 +1846,8 @@ hostcat (nis.U):
 	This variable contains a command that produces the text of the
 	/etc/hosts file.  This is normally "cat /etc/hosts", but can be
 	"ypcat hosts" when NIS is used.
+	On some systems, such as os390, there may be no equivalent
+	command, in which case this variable is unset.
 
 huge (models.U):
 	This variable contains a flag which will tell the C compiler and loader
@@ -1481,6 +1855,30 @@ huge (models.U):
 	huge model is not supported, contains the flag to produce large
 	model programs.  It is up to the Makefile to use this.
 
+i16size (perlxv.U):
+	This variable is the size of an I16 in bytes.
+
+i16type (perlxv.U):
+	This variable contains the C type used for Perl's I16.
+
+i32size (perlxv.U):
+	This variable is the size of an I32 in bytes.
+
+i32type (perlxv.U):
+	This variable contains the C type used for Perl's I32.
+
+i64size (perlxv.U):
+	This variable is the size of an I64 in bytes.
+
+i64type (perlxv.U):
+	This variable contains the C type used for Perl's I64.
+
+i8size (perlxv.U):
+	This variable is the size of an I8 in bytes.
+
+i8type (perlxv.U):
+	This variable contains the C type used for Perl's I8.
+
 i_arpainet (i_arpainet.U):
 	This variable conditionally defines the I_ARPA_INET symbol,
 	and indicates whether a C program should include .
@@ -1531,6 +1929,18 @@ i_grp (i_grp.U):
 	This variable conditionally defines the I_GRP symbol, and indicates
 	whether a C program should include .
 
+i_iconv (i_iconv.U):
+	This variable conditionally defines the I_ICONV symbol, and indicates
+	whether a C program should include .
+
+i_ieeefp (i_ieeefp.U):
+	This variable conditionally defines the I_IEEEFP symbol, and indicates
+	whether a C program should include .
+
+i_inttypes (i_inttypes.U):
+	This variable conditionally defines the I_INTTYPES symbol,
+	and indicates whether a C program should include .
+
 i_limits (i_limits.U):
 	This variable conditionally defines the I_LIMITS symbol, and indicates
 	whether a C program may include  to get symbols like WORD_BIT
@@ -1574,11 +1984,23 @@ i_neterrno (i_neterrno.U):
 	indicates to the C program that  exists and should
 	be included.
 
+i_netinettcp (i_netinettcp.U):
+	This variable conditionally defines the I_NETINET_TCP symbol,
+	and indicates whether a C program should include .
+
 i_niin (i_niin.U):
 	This variable conditionally defines I_NETINET_IN, which indicates
 	to the C program that it should include . Otherwise,
 	you may try .
 
+i_poll (i_poll.U):
+	This variable conditionally defines the I_POLL symbol, and indicates
+	whether a C program should include .
+
+i_pthread (i_pthread.U):
+	This variable conditionally defines the I_PTHREAD symbol,
+	and indicates whether a C program should include .
+
 i_pwd (i_pwd.U):
 	This variable conditionally defines I_PWD, which indicates
 	to the C program that it should include .
@@ -1597,6 +2019,14 @@ i_sgtty (i_termio.U):
 	indicates to the C program that it should include  rather
 	than .
 
+i_shadow (i_shadow.U):
+	This variable conditionally defines the I_SHADOW symbol, and indicates
+	whether a C program should include .
+
+i_socks (i_socks.U):
+	This variable conditionally defines the I_SOCKS symbol, and indicates
+	whether a C program should include .
+
 i_stdarg (i_varhdr.U):
 	This variable conditionally defines the I_STDARG symbol, which
 	indicates to the C program that  exists and should
@@ -1616,6 +2046,14 @@ i_string (i_string.U):
 	This variable conditionally defines the I_STRING symbol, which
 	indicates that  should be included rather than .
 
+i_sunmath (i_sunmath.U):
+	This variable conditionally defines the I_SUNMATH symbol, and indicates
+	whether a C program should include .
+
+i_sysaccess (i_sysaccess.U):
+	This variable conditionally defines the I_SYS_ACCESS symbol,
+	and indicates whether a C program should include .
+
 i_sysdir (i_sysdir.U):
 	This variable conditionally defines the I_SYS_DIR symbol, and indicates
 	whether a C program should include .
@@ -1639,6 +2077,18 @@ i_sysioctl (i_sysioctl.U):
 	indicates to the C program that  exists and should
 	be included.
 
+i_syslog (i_syslog.U):
+	This variable conditionally defines the I_SYSLOG symbol,
+	and indicates whether a C program should include .
+
+i_sysmman (i_sysmman.U):
+	This variable conditionally defines the I_SYS_MMAN symbol, and
+	indicates whether a C program should include .
+
+i_sysmode (i_sysmode.U):
+	This variable conditionally defines the I_SYSMODE symbol,
+	and indicates whether a C program should include .
+
 i_sysmount (i_sysmount.U):
 	This variable conditionally defines the I_SYSMOUNT symbol,
 	and indicates whether a C program should include .
@@ -1655,6 +2105,10 @@ i_sysresrc (i_sysresrc.U):
 	This variable conditionally defines the I_SYS_RESOURCE symbol,
 	and indicates whether a C program should include .
 
+i_syssecrt (i_syssecrt.U):
+	This variable conditionally defines the I_SYS_SECURITY symbol,
+	and indicates whether a C program should include .
+
 i_sysselct (i_sysselct.U):
 	This variable conditionally defines I_SYS_SELECT, which indicates
 	to the C program that it should include  in order to
@@ -1694,11 +2148,23 @@ i_systypes (i_systypes.U):
 	This variable conditionally defines the I_SYS_TYPES symbol,
 	and indicates whether a C program should include .
 
+i_sysuio (i_sysuio.U):
+	This variable conditionally defines the I_SYSUIO symbol, and indicates
+	whether a C program should include .
+
 i_sysun (i_sysun.U):
 	This variable conditionally defines I_SYS_UN, which indicates
 	to the C program that it should include  to get UNIX
 	domain socket definitions.
 
+i_sysutsname (i_sysutsname.U):
+	This variable conditionally defines the I_SYSUTSNAME symbol,
+	and indicates whether a C program should include .
+
+i_sysvfs (i_sysvfs.U):
+	This variable conditionally defines the I_SYSVFS symbol,
+	and indicates whether a C program should include .
+
 i_syswait (i_syswait.U):
 	This variable conditionally defines I_SYS_WAIT, which indicates
 	to the C program that it should include .
@@ -1721,6 +2187,10 @@ i_unistd (i_unistd.U):
 	This variable conditionally defines the I_UNISTD symbol, and indicates
 	whether a C program should include .
 
+i_ustat (i_ustat.U):
+	This variable conditionally defines the I_USTAT symbol, and indicates
+	whether a C program should include .
+
 i_utime (i_utime.U):
 	This variable conditionally defines the I_UTIME symbol, and indicates
 	whether a C program should include .
@@ -1747,6 +2217,21 @@ ignore_versioned_solibs (libs.U):
 	libraries (libfoo.so.x.y) are to be ignored (because they
 	cannot be linked against).
 
+inc_version_list (inc_version_list.U):
+	This variable specifies the list of subdirectories in over
+	which perl.c:incpush() and lib/lib.pm will automatically
+	search when adding directories to @INC.  The elements in
+	the list are separated by spaces.  This is only useful
+	if you have a perl library directory tree structured like the
+	default one.  See INSTALL for how this works.  The versioned
+	site_perl directory was introduced in 5.005, so that is the
+	lowest possible value.
+
+inc_version_list_init (inc_version_list.U):
+	This variable holds the same list as inc_version_list, but
+	each item is enclosed in double quotes and separated by commas, 
+	suitable for use in the PERL_INC_VERSION_LIST initialization.
+
 incpath (usrinc.U):
 	This variable must preceed the normal include path to get hte
 	right one, as in "$incpath/usr/include" or "$incpath/usr/lib".
@@ -1778,6 +2263,18 @@ installman3dir (man3dir.U):
 	man3direxp only points to the read-only access location. For extra
 	portability, you should only use this variable within your makefiles.
 
+installprefix (installprefix.U):
+	This variable holds the name of the directory below which 
+	"make install" will install the package.  For most users, this
+	is the same as prefix.  However, it is useful for
+	installing the software into a different (usually temporary)
+	location after which it can be bundled up and moved somehow
+	to the final location specified by prefix.
+
+installprefixexp (installprefix.U):
+	This variable holds the full absolute path of installprefix
+	with all ~-expansion done.
+
 installprivlib (privlib.U):
 	This variable is really the same as privlibexp but may differ on
 	those systems using AFS. For extra portability, only this variable
@@ -1793,20 +2290,68 @@ installsitearch (sitearch.U):
 	those systems using AFS. For extra portability, only this variable
 	should be used in makefiles.
 
+installsitebin (sitebin.U):
+	This variable is usually the same as sitebinexp, unless you are on
+	a system running AFS, in which case they may differ slightly. You
+	should always use this variable within your makefiles for portability.
+
 installsitelib (sitelib.U):
 	This variable is really the same as sitelibexp but may differ on
 	those systems using AFS. For extra portability, only this variable
 	should be used in makefiles.
 
+installstyle (installstyle.U):
+	This variable describes the "style" of the perl installation.
+	This is intended to be useful for tools that need to
+	manipulate entire perl distributions.  Perl itself doesn't use
+	this to find its libraries -- the library directories are
+	stored directly in Config.pm.  Currently, there are only two
+	styles:  "lib" and "lib/perl5".  The default library locations
+	(e.g. privlib, sitelib) are either $prefix/lib or
+	$prefix/lib/perl5.  The former is useful if $prefix is a
+	directory dedicated to perl (e.g. /opt/perl), while the latter
+	is useful if $prefix is shared by many packages, e.g. if
+	$prefix=/usr/local.
+		This may later be extended to include other information, so
+	be careful with pattern-matching on the results.
+		For compatibility with perl5.005 and earlier, the default
+	setting is based on whether or not $prefix contains the string
+	"perl".
+
 installusrbinperl (instubperl.U):
 	This variable tells whether Perl should be installed also as
 	/usr/bin/perl in addition to
 	$installbin/perl
 
+installvendorarch (vendorarch.U):
+	This variable is really the same as vendorarchexp but may differ on
+	those systems using AFS. For extra portability, only this variable
+	should be used in makefiles.
+
+installvendorbin (vendorbin.U):
+	This variable is really the same as vendorbinexp but may differ on
+	those systems using AFS. For extra portability, only this variable
+	should be used in makefiles.
+
+installvendorlib (vendorlib.U):
+	This variable is really the same as vendorlibexp but may differ on
+	those systems using AFS. For extra portability, only this variable
+	should be used in makefiles.
+
 intsize (intsize.U):
 	This variable contains the value of the INTSIZE symbol, which
 	indicates to the C program how many bytes there are in an int.
 
+ivdformat (perlxvf.U):
+	This variable contains the format string used for printing
+	a Perl IV as a signed decimal integer. 
+
+ivsize (perlxv.U):
+	This variable is the size of an IV in bytes.
+
+ivtype (perlxv.U):
+	This variable contains the C type used for Perl's IV.
+
 known_extensions (Extensions.U):
 	This variable holds a list of all XS extensions included in 
 	the package.
@@ -1836,6 +2381,11 @@ ldflags (ccflags.U):
 	This variable contains any additional C loader flags desired by
 	the user.  It is up to the Makefile to use this.
 
+ldlibpthname (libperl.U):
+	This variable holds the name of the shared library
+	search path, often LD_LIBRARY_PATH.  To get an empty
+	string, the hints file must set this to 'none'.
+
 less (Loc.U):
 	This variable is used internally by Configure to determine the
 	full pathname (if any) of the less program.  After Configure runs,
@@ -1856,22 +2406,36 @@ libperl (libperl.U):
 	library.
 
 libpth (libpth.U):
-	This variable holds the general path used to find libraries. It is
-	intended to be used by other units.
+	This variable holds the general path (space-separated) used to find
+	libraries. It is intended to be used by other units.
 
 libs (libs.U):
 	This variable holds the additional libraries we want to use.
 	It is up to the Makefile to deal with it.
 
+libsdirs (libs.U):
+	This variable holds the directory names aka dirnames of the libraries
+	we found and accepted, duplicates are removed.
+
+libsfiles (libs.U):
+	This variable holds the filenames aka basenames of the libraries
+	we found and accepted.
+
+libsfound (libs.U):
+	This variable holds the full pathnames of the libraries
+	we found and accepted.
+
+libspath (libs.U):
+	This variable holds the directory names probed for libraries.
+
 libswanted (Myinit.U):
 	This variable holds a list of all the libraries we want to
 	search.  The order is chosen to pick up the c library
 	ahead of ucb or bsd libraries for SVR4.
 
 line (Loc.U):
-	This variable is used internally by Configure to determine the
-	full pathname (if any) of the line program.  After Configure runs,
-	the value is reset to a plain "line" and is not useful.
+	This variable is defined but not used by Configure.
+	The value is a plain '' and is not useful.
 
 lint (Loc.U):
 	This variable is defined but not used by Configure.
@@ -1899,9 +2463,9 @@ locincpth (ccflags.U):
 	It's not much, but it parallels the loclibpth stuff in libpth.U.
 
 loclibpth (libpth.U):
-	This variable holds the paths used to find local libraries.  It is
-	prepended to libpth, and is intended to be easily set from the
-	command line.
+	This variable holds the paths (space-separated) used to find local
+	libraries.  It is prepended to libpth, and is intended to be easily
+	set from the command line.
 
 longdblsize (d_longdbl.U):
 	This variable contains the value of the LONG_DOUBLESIZE symbol, which
@@ -1930,6 +2494,11 @@ ls (Loc.U):
 	full pathname (if any) of the ls program.  After Configure runs,
 	the value is reset to a plain "ls" and is not useful.
 
+lseeksize (lseektype.U):
+	This variable defines lseektype to be something like off_t, long, 
+	or whatever type is used to declare lseek offset's type in the
+	kernel (which also appears to be lseek's return type).
+
 lseektype (lseektype.U):
 	This variable defines lseektype to be something like off_t, long, 
 	or whatever type is used to declare lseek offset's type in the
@@ -2004,6 +2573,11 @@ man3ext (man3dir.U):
 	have: one of 'n', 'l', or '3'.  The Makefile must supply the '.'.
 	See man3dir.
 
+Mcc (Loc.U):
+	This variable is used internally by Configure to determine the
+	full pathname (if any) of the Mcc program.  After Configure runs,
+	the value is reset to a plain "Mcc" and is not useful.
+
 medium (models.U):
 	This variable contains a flag which will tell the C compiler and loader
 	to produce a program running with a medium memory model.  If the
@@ -2019,6 +2593,11 @@ mkdir (Loc.U):
 	full pathname (if any) of the mkdir program.  After Configure runs,
 	the value is reset to a plain "mkdir" and is not useful.
 
+mmaptype (d_mmap.U):
+	This symbol contains the type of pointer returned by mmap()
+	(and simultaneously the type of the first argument).
+	It can be 'void *' or 'caddr_t'.
+
 models (models.U):
 	This variable contains the list of memory models supported by this
 	system.  Possible component values are none, split, unsplit, small,
@@ -2034,6 +2613,11 @@ more (Loc.U):
 	full pathname (if any) of the more program.  After Configure runs,
 	the value is reset to a plain "more" and is not useful.
 
+multiarch (multiarch.U):
+	This variable conditionally defines the MULTIARCH symbol
+	which signifies the presence of multiplatform files.
+	This is normally set by hints files.
+
 mv (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
@@ -2063,7 +2647,7 @@ myuname (Oldconfig.U):
 n (n.U):
 	This variable contains the '-n' flag if that is what causes the echo
 	command to suppress newline.  Otherwise it is null.  Correct usage is
-	    $echo $n "prompt for a question: $c".
+	$echo $n "prompt for a question: $c".
 
 netdb_hlen_type (netdbtype.U):
 	This variable holds the type used for the 2nd argument to
@@ -2111,6 +2695,12 @@ nroff (Loc.U):
 	full pathname (if any) of the nroff program.  After Configure runs,
 	the value is reset to a plain "nroff" and is not useful.
 
+nvsize (perlxv.U):
+	This variable is the size of an NV in bytes.
+
+nvtype (perlxv.U):
+	This variable contains the C type used for Perl's NV.
+
 o_nonblock (nblock_io.U):
 	This variable bears the symbol value to be used during open() or fcntl()
 	to turn on non-blocking I/O for a file descriptor. If you wish to switch
@@ -2120,6 +2710,12 @@ o_nonblock (nblock_io.U):
 obj_ext (Unix.U):
 	This is an old synonym for _o.
 
+old_pthread_create_joinable (d_pthrattrj.U):
+	This variable defines the constant to use for creating joinable
+	(aka undetached) pthreads.  Unused if pthread.h defines
+	PTHREAD_CREATE_JOINABLE.  If used, possible values are
+	PTHREAD_CREATE_UNDETACHED and __UNDETACHED.
+
 optimize (ccflags.U):
 	This variable contains any optimizer/debugger flag that should be used.
 	It is up to the Makefile to use it.
@@ -2157,19 +2753,41 @@ passcat (nis.U):
 	This variable contains a command that produces the text of the
 	/etc/passwd file.  This is normally "cat /etc/passwd", but can be
 	"ypcat passwd" when NIS is used.
+	On some systems, such as os390, there may be no equivalent
+	command, in which case this variable is unset.
 
 patchlevel (patchlevel.U):
 	The patchlevel level of this package.
 	The value of patchlevel comes from the patchlevel.h file.
+	In a version number such as 5.6.1, this is the "6".
+	In patchlevel.h, this is referred to as "PERL_VERSION".
 
 path_sep (Unix.U):
 	This is an old synonym for p_ in Head.U, the character
 	used to separate elements in the command shell search PATH.
 
+perl5 (perl5.U):
+	This variable contains the full path (if any) to a previously
+	installed perl5.005 or later suitable for running the script
+	to determine inc_version_list.
+
 perl (Loc.U):
-	This variable is used internally by Configure to determine the
-	full pathname (if any) of the perl program.  After Configure runs,
-	the value is reset to a plain "perl" and is not useful.
+	This variable is defined but not used by Configure.
+	The value is a plain '' and is not useful.
+
+PERL_REVISION (Oldsyms.U):
+	In a Perl version number such as 5.6.2, this is the 5.
+	This value is manually set in patchlevel.h
+
+PERL_SUBVERSION (Oldsyms.U):
+	In a Perl version number such as 5.6.2, this is the 2.
+	Values greater than 50 represent potentially unstable
+	development subversions.
+	This value is manually set in patchlevel.h
+
+PERL_VERSION (Oldsyms.U):
+	In a Perl version number such as 5.6.2, this is the 6.
+	This value is manually set in patchlevel.h
 
 perladmin (perladmin.U):
 	Electronic mail address of the perl5 administrator.
@@ -2199,6 +2817,21 @@ plibpth (libpth.U):
 	Its value is prepend to libpth. This variable takes care of special
 	machines, like the mips.  Usually, it should be empty.
 
+pm_apiversion (xs_apiversion.U):
+	This variable contains the version of the oldest perl
+	compatible with the present perl.  (That is, pure perl modules
+	written for $pm_apiversion will still work for the current
+	version).  perl.c:incpush() and lib/lib.pm will automatically
+	search in $sitelib for older directories across major versions
+	back to pm_apiversion.  This is only useful if you have a perl
+	library directory tree structured like the default one.  The
+	versioned site_perl library was introduced in 5.005, so that's
+	the default setting for this variable.  It's hard to imagine
+	it changing before Perl6.  It is included here for symmetry
+	with xs_apiveprsion -- the searching algorithms will
+	(presumably) be similar.
+	See the INSTALL file for how this works.
+
 pmake (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
@@ -2236,10 +2869,26 @@ ptrsize (ptrsize.U):
 	This variable contains the value of the PTRSIZE symbol, which
 	indicates to the C program how many bytes there are in a pointer.
 
-randbits (randbits.U):
-	This variable contains the eventual value of the RANDBITS symbol,
-	which indicates to the C program how many bits of random number
-	the rand() function produces.
+quadkind (quadtype.U):
+	This variable, if defined, encodes the type of a quad:
+	1 = int, 2 = long, 3 = long long, 4 = int64_t.
+
+quadtype (quadtype.U):
+	This variable defines Quad_t to be something like long, int, 
+	long long, int64_t, or whatever type is used for 64-bit integers.
+
+randbits (randfunc.U):
+	Indicates how many bits are produced by the function used to
+	generate normalized random numbers.
+
+randfunc (randfunc.U):
+	Indicates the name of the random number function to use.
+	Values include drand48, random, and rand. In C programs,
+	the 'Drand01' macro is defined to generate uniformly distributed
+	random numbers over the range [0., 1.[ (see drand01 and nrand).
+
+randseedtype (randfunc.U):
+	Indicates the type of the argument of the seedfunc.
 
 ranlib (orderlib.U):
 	This variable is set to the pathname of the ranlib program, if it is
@@ -2252,6 +2901,11 @@ rd_nodata (nblock_io.U):
 	used, which is a shame because you cannot make the difference between
 	no data and an EOF.. Sigh!
 
+revision (patchlevel.U):
+	The value of revision comes from the patchlevel.h file.
+	In a version number such as 5.6.1, this is the "5".
+	In patchlevel.h, this is referred to as "PERL_REVISION".
+
 rm (Loc.U):
 	This variable is used internally by Configure to determine the
 	full pathname (if any) of the rm program.  After Configure runs,
@@ -2266,6 +2920,10 @@ runnm (usenm.U):
 	nm extraction should be performed or not, according to the value
 	of usenm and the flags on the Configure command line.
 
+sched_yield (d_pthread_y.U):
+	This variable defines the way to yield the execution
+	of the current thread.
+
 scriptdir (scriptdir.U):
 	This variable holds the name of the directory in which the user wants
 	to put publicly scripts for the package in question.  It is either
@@ -2282,6 +2940,10 @@ sed (Loc.U):
 	full pathname (if any) of the sed program.  After Configure runs,
 	the value is reset to a plain "sed" and is not useful.
 
+seedfunc (randfunc.U):
+	Indicates the random number generating seed function.
+	Values include srand48, srandom, and srand.
+
 selectminbits (selectminbits.U):
 	This variable holds the minimum number of bits operated by select.
 	That is, if you do select(n, ...), how many bits at least will be
@@ -2296,9 +2958,8 @@ selecttype (selecttype.U):
 	have select(), naturally.
 
 sendmail (Loc.U):
-	This variable is used internally by Configure to determine the
-	full pathname (if any) of the sendmail program.  After Configure runs,
-	the value is reset to a plain "sendmail" and is not useful.
+	This variable is defined but not used by Configure.
+	The value is a plain '' and is not useful.
 
 sh (sh.U):
 	This variable contains the full pathname of the shell used
@@ -2332,11 +2993,11 @@ shrpenv (libperl.U):
 	One way to do this on some systems is to set the environment variable
 	LD_RUN_PATH to the directory that will be the final location of the
 	shared libperl.so.  The makefile can use this with something like
-		$shrpenv $(CC) -o perl perlmain.o $libperl $libs
+	$shrpenv $(CC) -o perl perlmain.o $libperl $libs
 	Typical values are
-		shrpenv="env LD_RUN_PATH=$archlibexp/CORE"
+	shrpenv="env LD_RUN_PATH=$archlibexp/CORE"
 	or
-		shrpenv=''
+	shrpenv=''
 	See the main perl Makefile.SH for actual working usage.
 	Alternatively, we might be able to use a command line option such
 	as -R $archlibexp/CORE (Solaris, NetBSD) or -Wl,-rpath
@@ -2346,6 +3007,10 @@ shsharp (spitshell.U):
 	This variable tells further Configure units whether your sh can
 	handle # comments.
 
+sig_count (sig_name.U):
+	This variable holds a number larger than the largest valid
+	signal number.  This is usually the same as the NSIG macro.
+
 sig_name (sig_name.U):
 	This variable holds the signal names, space separated. The leading
 	SIG in signal name is removed.  A ZERO is prepended to the
@@ -2359,7 +3024,7 @@ sig_name_init (sig_name.U):
 	is removed. See sig_num.
 
 sig_num (sig_name.U):
-	This variable holds the signal numbers, comma separated. A 0 is
+	This variable holds the signal numbers, space separated. A ZERO is
 	prepended to the list (corresponding to the fake SIGZERO), and 
 	the list is terminated with a 0.  Those numbers correspond to 
 	the value of the signal listed in the same place within the
@@ -2379,21 +3044,63 @@ sitearch (sitearch.U):
 	which is the name of the private library for this package.  It may
 	have a ~ on the front. It is up to the makefile to eventually create
 	this directory while performing installation (with ~ substitution).
+	The standard distribution will put nothing in this directory.
+	After perl has been installed, users may install their own local
+	architecture-dependent modules in this directory with
+	MakeMaker Makefile.PL
+	or equivalent.  See INSTALL for details.
 
 sitearchexp (sitearch.U):
 	This variable is the ~name expanded version of sitearch, so that you
 	may use it directly in Makefiles or shell scripts.
 
+sitebin (sitebin.U):
+	This variable holds the name of the directory in which the user wants
+	to put add-on publicly executable files for the package in question.  It
+	is most often a local directory such as /usr/local/bin. Programs using
+	this variable must be prepared to deal with ~name substitution.
+	The standard distribution will put nothing in this directory.
+	After perl has been installed, users may install their own local
+	executables in this directory with
+	MakeMaker Makefile.PL
+	or equivalent.  See INSTALL for details.
+
+sitebinexp (sitebin.U):
+	This is the same as the sitebin variable, but is filename expanded at
+	configuration time, for use in your makefiles.
+
 sitelib (sitelib.U):
 	This variable contains the eventual value of the SITELIB symbol,
 	which is the name of the private library for this package.  It may
 	have a ~ on the front. It is up to the makefile to eventually create
 	this directory while performing installation (with ~ substitution).
+	The standard distribution will put nothing in this directory.
+	After perl has been installed, users may install their own local
+	architecture-independent modules in this directory with
+	MakeMaker Makefile.PL
+	or equivalent.  See INSTALL for details.
+
+sitelib_stem (sitelib.U):
+	This variable is $sitelibexp with any trailing version-specific component
+	removed.  The elements in inc_version_list (inc_version_list.U) can
+	be tacked onto this variable to generate a list of directories to search.
 
 sitelibexp (sitelib.U):
 	This variable is the ~name expanded version of sitelib, so that you
 	may use it directly in Makefiles or shell scripts.
 
+siteprefix (siteprefix.U):
+	This variable holds the full absolute path of the directory below
+	which the user will install add-on packages.
+	See INSTALL for usage and examples.
+
+siteprefixexp (siteprefix.U):
+	This variable holds the full absolute path of the directory below
+	which the user will install add-on packages.  Derived from siteprefix.
+
+sizesize (sizesize.U):
+	This variable contains the size of a sizetype in bytes.
+
 sizetype (sizetype.U):
 	This variable defines sizetype to be something like size_t, 
 	unsigned long, or whatever type is used to declare length 
@@ -2422,6 +3129,11 @@ sockethdr (d_socket.U):
 socketlib (d_socket.U):
 	This variable has the names of any libraries needed for socket support.
 
+socksizetype (socksizetype.U):
+	This variable holds the type used for the size argument
+	for various socket calls like accept.  Usual values include
+	socklen_t, size_t, and int.
+
 sort (Loc.U):
 	This variable is used internally by Configure to determine the
 	full pathname (if any) of the sort program.  After Configure runs,
@@ -2442,6 +3154,54 @@ split (models.U):
 	machines that support separation of instruction and data space.  It is
 	up to the Makefile to use this.
 
+sPRId64 (quadfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format 64-bit decimal numbers (format 'd') for output.
+
+sPRIeldbl (longdblfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format long doubles (format 'e') for output.
+
+sPRIEldbl (longdblfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format long doubles (format 'E') for output.
+
+sPRIfldbl (longdblfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format long doubles (format 'f') for output.
+
+sPRIFldbl (longdblfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format long doubles (format 'F') for output.
+
+sPRIgldbl (longdblfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format long doubles (format 'g') for output.
+
+sPRIGldbl (longdblfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format long doubles (format 'G') for output.
+
+sPRIi64 (quadfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format 64-bit decimal numbers (format 'i') for output.
+
+sPRIo64 (quadfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format 64-bit octal numbers (format 'o') for output.
+
+sPRIu64 (quadfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format 64-bit unsigned decimal numbers (format 'u') for output.
+
+sPRIx64 (quadfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format 64-bit hexadecimal numbers (format 'x') for output.
+
+sPRIX64 (quadfio.U):
+	This variable, if defined, contains the string used by stdio to
+	format 64-bit hExADECimAl numbers (format 'X') for output.
+
 src (src.U):
 	This variable holds the path to the package source. It is up to
 	the Makefile to use this variable and set VPATH accordingly to
@@ -2458,8 +3218,8 @@ startperl (startperl.U):
 	script to make sure (hopefully) that it runs with perl and not some
 	shell. Of course, that leading line must be followed by the classical
 	perl idiom:
-		eval 'exec perl -S $0 ${1+"$@"}'
-			if $running_under_some_shell;
+	eval 'exec perl -S $0 ${1+"$@"}'
+	if $running_under_some_shell;
 	to guarantee perl startup should the shell execute the script. Note
 	that this magic incatation is not understood by csh.
 
@@ -2502,6 +3262,10 @@ stdio_ptr (d_stdstdio.U):
 	_ptr field (or equivalent) of stdio.h's FILE structure.  This will
 	be used to define the macro FILE_ptr(fp).
 
+stdio_stream_array (stdio_streams.U):
+	This variable tells the name of the array holding the stdio streams.
+	Usual values include _iob, __iob, and __sF.
+
 strings (i_string.U):
 	This variable holds the full path of the string header that will be
 	used. Typically /usr/include/string.h or /usr/include/strings.h.
@@ -2513,6 +3277,8 @@ submit (Loc.U):
 subversion (patchlevel.U):
 	The subversion level of this package.
 	The value of subversion comes from the patchlevel.h file.
+	In a version number such as 5.6.1, this is the "1".
+	In patchlevel.h, this is referred to as "PERL_SUBVERSION".
 	This is unique to perl.
 
 sysman (sysman.U):
@@ -2534,9 +3300,8 @@ tbl (Loc.U):
 	The value is a plain '' and is not useful.
 
 tee (Loc.U):
-	This variable is used internally by Configure to determine the
-	full pathname (if any) of the tee program.  After Configure runs,
-	the value is reset to a plain "tee" and is not useful.
+	This variable is defined but not used by Configure.
+	The value is a plain '' and is not useful.
 
 test (Loc.U):
 	This variable is used internally by Configure to determine the
@@ -2571,6 +3336,40 @@ troff (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
 
+u16size (perlxv.U):
+	This variable is the size of an U16 in bytes.
+
+u16type (perlxv.U):
+	This variable contains the C type used for Perl's U16.
+
+u32size (perlxv.U):
+	This variable is the size of an U32 in bytes.
+
+u32type (perlxv.U):
+	This variable contains the C type used for Perl's U32.
+
+u64size (perlxv.U):
+	This variable is the size of an U64 in bytes.
+
+u64type (perlxv.U):
+	This variable contains the C type used for Perl's U64.
+
+u8size (perlxv.U):
+	This variable is the size of an U8 in bytes.
+
+u8type (perlxv.U):
+	This variable contains the C type used for Perl's U8.
+
+uidformat (uidf.U):
+	This variable contains the format string used for printing a Uid_t.
+
+uidsign (uidsign.U):
+	This variable contains the signedness of a uidtype.
+	1 for unsigned, -1 for signed.
+
+uidsize (uidsize.U):
+	This variable contains the size of a uidtype in bytes.
+
 uidtype (uidtype.U):
 	This variable defines Uid_t to be something like uid_t, int, 
 	ushort, or whatever type is used to declare user ids in the kernel.
@@ -2585,10 +3384,61 @@ uniq (Loc.U):
 	full pathname (if any) of the uniq program.  After Configure runs,
 	the value is reset to a plain "uniq" and is not useful.
 
+uquadtype (quadtype.U):
+	This variable defines Uquad_t to be something like unsigned long,
+	unsigned int, unsigned long long, uint64_t, or whatever type is
+	used for 64-bit integers.
+
+use5005threads (usethreads.U):
+	This variable conditionally defines the USE_5005THREADS symbol,
+	and indicates that Perl should be built to use the 5.005-based
+	threading implementation.
+
+use64bitall (use64bits.U):
+	This variable conditionally defines the USE_64_BIT_ALL symbol,
+	and indicates that 64-bit integer types should be used
+	when available.  The maximal possible
+	64-bitness is employed: LP64 or ILP64, meaning that you will
+	be able to use more than 2 gigabytes of memory.  This mode is
+	even more binary incompatible than USE_64_BIT_INT. You may not
+	be able to run the resulting executable in a 32-bit CPU at all or
+	you may need at least to reboot your OS to 64-bit mode.
+
+use64bitint (use64bits.U):
+	This variable conditionally defines the USE_64_BIT_INT symbol,
+	and indicates that 64-bit integer types should be used
+	when available.  The minimal possible 64-bitness
+	is employed, just enough to get 64-bit integers into Perl.
+	This may mean using for example "long longs", while your memory
+	may still be limited to 2 gigabytes.
+
 usedl (dlsrc.U):
-	This variable indicates if the the system supports dynamic
+	This variable indicates if the system supports dynamic
 	loading of some sort.  See also dlsrc and dlobj.
 
+useithreads (usethreads.U):
+	This variable conditionally defines the USE_ITHREADS symbol,
+	and indicates that Perl should be built to use the interpreter-based
+	threading implementation.
+
+uselargefiles (uselfs.U):
+	This variable conditionally defines the USE_LARGE_FILES symbol,
+	and indicates that large file interfaces should be used when
+	available.
+
+uselongdouble (uselongdbl.U):
+	This variable conditionally defines the USE_LONG_DOUBLE symbol,
+	and indicates that long doubles should be used when available.
+
+usemorebits (usemorebits.U):
+	This variable conditionally defines the USE_MORE_BITS symbol,
+	and indicates that explicit 64-bit interfaces and long doubles
+	should be used when available.
+
+usemultiplicity (usemultiplicity.U):
+	This variable conditionally defines the MULTIPLICITY symbol,
+	and indicates that Perl should be built to use multiplicity.
+
 usemymalloc (mallocsrc.U):
 	This variable contains y if the malloc that comes with this package
 	is desired over the system's version of malloc.  People often include
@@ -2630,10 +3480,18 @@ useshrplib (libperl.U):
 	This variable is set to 'yes' if the user wishes
 	to build a shared libperl, and 'no' otherwise.
 
+usesocks (usesocks.U):
+	This variable conditionally defines the USE_SOCKS symbol,
+	and indicates that Perl should be built to use SOCKS.
+
 usethreads (usethreads.U):
 	This variable conditionally defines the USE_THREADS symbol,
 	and indicates that Perl should be built to use threads.
 
+usevendorprefix (vendorprefix.U):
+	This variable tells whether the vendorprefix
+	and consequently other vendor* paths are in use.
+
 usevfork (d_vfork.U):
 	This variable is set to true when the user accepts to use vfork.
 	It is set to false when no vfork is available or when the user
@@ -2647,12 +3505,83 @@ uuname (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
 
+uvoformat (perlxvf.U):
+	This variable contains the format string used for printing
+	a Perl UV as an unsigned octal integer. 
+
+uvsize (perlxv.U):
+	This variable is the size of a UV in bytes.
+
+uvtype (perlxv.U):
+	This variable contains the C type used for Perl's UV.
+
+uvuformat (perlxvf.U):
+	This variable contains the format string used for printing
+	a Perl UV as an unsigned decimal integer. 
+
+uvxformat (perlxvf.U):
+	This variable contains the format string used for printing
+	a Perl UV as an unsigned hexadecimal integer. 
+
+vendorarch (vendorarch.U):
+	This variable contains the value of the PERL_VENDORARCH symbol.
+	It may have a ~ on the front. 
+	The standard distribution will put nothing in this directory.
+	Vendors who distribute perl may wish to place their own
+	architecture-dependent modules and extensions in this directory with
+	MakeMaker Makefile.PL INSTALLDIRS=vendor 
+	or equivalent.  See INSTALL for details.
+
+vendorarchexp (vendorarch.U):
+	This variable is the ~name expanded version of vendorarch, so that you
+	may use it directly in Makefiles or shell scripts.
+
+vendorbin (vendorbin.U):
+	This variable contains the eventual value of the VENDORBIN symbol.
+	It may have a ~ on the front.
+	The standard distribution will put nothing in this directory.
+	Vendors who distribute perl may wish to place additional
+	binaries in this directory with
+	MakeMaker Makefile.PL INSTALLDIRS=vendor 
+	or equivalent.  See INSTALL for details.
+
+vendorbinexp (vendorbin.U):
+	This variable is the ~name expanded version of vendorbin, so that you
+	may use it directly in Makefiles or shell scripts.
+
+vendorlib (vendorlib.U):
+	This variable contains the eventual value of the VENDORLIB symbol,
+	which is the name of the private library for this package.
+	The standard distribution will put nothing in this directory.
+	Vendors who distribute perl may wish to place their own
+	modules in this directory with
+	MakeMaker Makefile.PL INSTALLDIRS=vendor 
+	or equivalent.  See INSTALL for details.
+
+vendorlib_stem (vendorlib.U):
+	This variable is $vendorlibexp with any trailing version-specific component
+	removed.  The elements in inc_version_list (inc_version_list.U) can
+	be tacked onto this variable to generate a list of directories to search.
+
+vendorlibexp (vendorlib.U):
+	This variable is the ~name expanded version of vendorlib, so that you
+	may use it directly in Makefiles or shell scripts.
+
+vendorprefix (vendorprefix.U):
+	This variable holds the full absolute path of the directory below
+	which the vendor will install add-on packages.
+	See INSTALL for usage and examples.
+
+vendorprefixexp (vendorprefix.U):
+	This variable holds the full absolute path of the directory below
+	which the vendor will install add-on packages.  Derived from vendorprefix.
+
 version (patchlevel.U):
-	The full version number of this package.  This combines
-	baserev, patchlevel, and subversion to get the full
-	version number, including any possible subversions.  Care
-	is taken to use the C locale in order to get something
-	like 5.004 instead of 5,004.  This is unique to perl.
+	The full version number of this package, such as 5.6.1 (or 5_6_1).
+	This combines revision, patchlevel, and subversion to get the
+	full version number, including any possible subversions.
+	This is suitable for use as a directory name, and hence is
+	filesystem dependent.
 
 vi (Loc.U):
 	This variable is defined but not used by Configure.
@@ -2663,6 +3592,28 @@ voidflags (voidflags.U):
 	which indicates how much support of the void type is given by this
 	compiler.  See VOIDFLAGS for more info.
 
+xlibpth (libpth.U):
+	This variable holds extra path (space-separated) used to find
+	libraries on this platform, for example CPU-specific libraries
+	(on multi-CPU platforms) may be listed here.
+
+xs_apiversion (xs_apiversion.U):
+	This variable contains the version of the oldest perl binary
+	compatible with the present perl.  perl.c:incpush() and
+	lib/lib.pm will automatically search in $sitearch for older
+	directories across major versions back to xs_apiversion.
+	This is only useful if you have a perl library directory tree
+	structured like the default one.
+	See INSTALL for how this works.
+	The versioned site_perl directory was introduced in 5.005,
+	so that is the lowest possible value.
+	Since this can depend on compile time options (such as
+	bincompat) it is set by Configure.  Other non-default sources
+	of potential incompatibility, such as multiplicity, threads,
+	debugging, 64bits, sfio, etc., are not checked for currently,
+	though in principle we could go snooping around in old
+	Config.pm files.
+
 zcat (Loc.U):
 	This variable is defined but not used by Configure.
 	The value is a plain '' and is not useful.
diff --git a/contrib/perl5/Porting/config.sh b/contrib/perl5/Porting/config.sh
index 20e1c4cfd789..3f29888e6c68 100644
--- a/contrib/perl5/Porting/config.sh
+++ b/contrib/perl5/Porting/config.sh
@@ -8,9 +8,9 @@
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Tue Jul 21 10:03:27 EDT 1998
-# Configured by     : doughera
-# Target system     : linux fractal 2.0.34 #1 tue jun 23 10:09:17 edt 1998 i686 unknown 
+# Configuration time: Tue Mar 21 23:22:20 EET 2000
+# Configured by     : jhi
+# Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
 
 Author=''
 Date='$Date'
@@ -27,33 +27,40 @@ _a='.a'
 _exe=''
 _o='.o'
 afs='false'
-alignbytes='4'
+alignbytes='8'
 ansi2knr=''
 aphostname=''
-apiversion='5.005'
+api_revision='5'
+api_subversion='0'
+api_version='5'
+api_versionstring='5.005'
 ar='ar'
-archlib='/opt/perl/lib/5.005/i686-linux-thread'
-archlibexp='/opt/perl/lib/5.005/i686-linux-thread'
-archname='i686-linux-thread'
+archlib='/opt/perl/lib/5.6.0/alpha-dec_osf-thread-multi'
+archlibexp='/opt/perl/lib/5.6.0/alpha-dec_osf-thread-multi'
+archname64=''
+archname='alpha-dec_osf-thread-multi'
 archobjs=''
 awk='awk'
 baserev='5.0'
 bash=''
 bin='/opt/perl/bin'
+bincompat5005='undef'
 binexp='/opt/perl/bin'
 bison=''
 byacc='byacc'
-byteorder='1234'
-c=''
+byteorder='12345678'
+c='\c'
 castflags='0'
 cat='cat'
 cc='cc'
-cccdlflags='-fpic'
-ccdlflags='-rdynamic'
-ccflags='-D_REENTRANT -Dbool=char -DHAS_BOOL -I/usr/local/include'
-cf_by='doughera'
+cccdlflags=' '
+ccdlflags='  -Wl,-rpath,/opt/perl/lib/5.6.0/alpha-dec_osf-thread-multi/CORE'
+ccflags='-pthread -std -DLANGUAGE_C'
+ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_BSD=1 SYSTYPE_BSD=1 unix=1'
+cf_by='jhi'
 cf_email='yourname@yourhost.yourplace.com'
-cf_time='Tue Jul 21 10:03:27 EDT 1998'
+cf_time='Tue Mar 21 23:22:20 EET 2000'
+charsize='1'
 chgrp=''
 chmod=''
 chown=''
@@ -65,23 +72,42 @@ cp='cp'
 cpio=''
 cpp='cpp'
 cpp_stuff='42'
-cppflags='-D_REENTRANT -Dbool=char -DHAS_BOOL -I/usr/local/include'
-cpplast='-'
-cppminus='-'
-cpprun='cc -E'
-cppstdin='cc -E'
+cppccsymbols='LANGUAGE_C=1'
+cppflags='-pthread -std -DLANGUAGE_C'
+cpplast=''
+cppminus=''
+cpprun='/usr/bin/cpp'
+cppstdin='cppstdin'
+cppsymbols='_AES_SOURCE=1 __alpha=1 __ALPHA=1 _ANSI_C_SOURCE=1 __LANGUAGE_C__=1 _LONGLONG=1 __osf__=1 _OSF_SOURCE=1 _POSIX_C_SOURCE=199506 _POSIX_SOURCE=1 _REENTRANT=1 __STDC__=1 _SYSTYPE_BSD=1 __unix__=1 _XOPEN_SOURCE=1'
+crosscompile='undef'
 cryptlib=''
 csh='csh'
 d_Gconvert='gcvt((x),(n),(b))'
+d_PRIEldbl='define'
+d_PRIFldbl='define'
+d_PRIGldbl='define'
+d_PRIX64='define'
+d_PRId64='define'
+d_PRIeldbl='define'
+d_PRIfldbl='define'
+d_PRIgldbl='define'
+d_PRIi64='define'
+d_PRIo64='define'
+d_PRIu64='define'
+d_PRIx64='define'
 d_access='define'
+d_accessx='undef'
 d_alarm='define'
 d_archlib='define'
-d_attribut='define'
+d_atolf='undef'
+d_atoll='undef'
+d_attribut='undef'
 d_bcmp='define'
 d_bcopy='define'
+d_bincompat5005='undef'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
+d_bsdsetpgrp='define'
 d_bzero='define'
 d_casti32='undef'
 d_castneg='define'
@@ -96,18 +122,21 @@ d_csh='define'
 d_cuserid='define'
 d_dbl_dig='define'
 d_difftime='define'
-d_dirnamlen='undef'
+d_dirnamlen='define'
 d_dlerror='define'
 d_dlopen='define'
 d_dlsymun='undef'
 d_dosuid='undef'
+d_drand48proto='define'
 d_dup2='define'
+d_eaccess='undef'
 d_endgrent='define'
 d_endhent='define'
 d_endnent='define'
 d_endpent='define'
 d_endpwent='define'
 d_endsent='define'
+d_endspent='undef'
 d_eofnblk='define'
 d_eunice='undef'
 d_fchmod='define'
@@ -121,16 +150,26 @@ d_flexfnam='define'
 d_flock='define'
 d_fork='define'
 d_fpathconf='define'
+d_fpos64_t='undef'
+d_fs_data_s='undef'
+d_fseeko='undef'
 d_fsetpos='define'
+d_fstatfs='define'
+d_fstatvfs='define'
+d_ftello='undef'
 d_ftime='undef'
+d_getcwd='define'
+d_getfsstat='define'
 d_getgrent='define'
 d_getgrps='define'
 d_gethbyaddr='define'
 d_gethbyname='define'
 d_gethent='define'
-d_gethname='undef'
+d_gethname='define'
 d_gethostprotos='define'
 d_getlogin='define'
+d_getmnt='undef'
+d_getmntent='undef'
 d_getnbyaddr='define'
 d_getnbyname='define'
 d_getnent='define'
@@ -149,38 +188,62 @@ d_getsbyname='define'
 d_getsbyport='define'
 d_getsent='define'
 d_getservprotos='define'
+d_getspent='undef'
+d_getspnam='undef'
 d_gettimeod='define'
-d_gnulibc='define'
+d_gnulibc='undef'
 d_grpasswd='define'
+d_hasmntopt='undef'
 d_htonl='define'
+d_iconv='define'
 d_index='undef'
 d_inetaton='define'
+d_int64_t='undef'
 d_isascii='define'
 d_killpg='define'
-d_lchown='undef'
+d_lchown='define'
+d_ldbl_dig='define'
 d_link='define'
 d_locconv='define'
 d_lockf='define'
 d_longdbl='define'
 d_longlong='define'
+d_lseekproto='define'
 d_lstat='define'
+d_madvise='define'
 d_mblen='define'
 d_mbstowcs='define'
 d_mbtowc='define'
+d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
 d_memmove='define'
 d_memset='define'
 d_mkdir='define'
+d_mkdtemp='undef'
 d_mkfifo='define'
+d_mkstemp='define'
+d_mkstemps='undef'
 d_mktime='define'
+d_mmap='define'
+d_mprotect='define'
 d_msg='define'
+d_msg_ctrunc='define'
+d_msg_dontroute='define'
+d_msg_oob='define'
+d_msg_peek='define'
+d_msg_proxy='undef'
 d_msgctl='define'
 d_msgget='define'
 d_msgrcv='define'
 d_msgsnd='define'
+d_msync='define'
+d_munmap='define'
 d_mymalloc='undef'
 d_nice='define'
+d_nv_preserves_uv='undef'
+d_off64_t='undef'
+d_old_pthread_create_joinable='undef'
 d_oldpthreads='undef'
 d_oldsock='undef'
 d_open3='define'
@@ -191,15 +254,16 @@ d_pipe='define'
 d_poll='define'
 d_portable='define'
 d_pthread_yield='undef'
-d_pthreads_created_joinable='define'
 d_pwage='undef'
 d_pwchange='undef'
 d_pwclass='undef'
-d_pwcomment='undef'
+d_pwcomment='define'
 d_pwexpire='undef'
 d_pwgecos='define'
-d_pwquota='undef'
 d_pwpasswd='define'
+d_pwquota='define'
+d_qgcvt='undef'
+d_quad='define'
 d_readdir='define'
 d_readlink='define'
 d_rename='define'
@@ -209,6 +273,7 @@ d_safebcpy='define'
 d_safemcpy='undef'
 d_sanemcmp='define'
 d_sched_yield='define'
+d_scm_rights='define'
 d_seekdir='define'
 d_select='define'
 d_sem='define'
@@ -235,10 +300,11 @@ d_setregid='define'
 d_setresgid='undef'
 d_setresuid='undef'
 d_setreuid='define'
-d_setrgid='undef'
-d_setruid='undef'
+d_setrgid='define'
+d_setruid='define'
 d_setsent='define'
 d_setsid='define'
+d_setspent='undef'
 d_setvbuf='define'
 d_sfio='undef'
 d_shm='define'
@@ -250,10 +316,16 @@ d_shmget='define'
 d_sigaction='define'
 d_sigsetjmp='define'
 d_socket='define'
+d_socklen_t='undef'
 d_sockpair='define'
-d_statblks='undef'
-d_stdio_cnt_lval='undef'
+d_sqrtl='define'
+d_statblks='define'
+d_statfs_f_flags='define'
+d_statfs_s='define'
+d_statvfs='define'
+d_stdio_cnt_lval='define'
 d_stdio_ptr_lval='define'
+d_stdio_stream_array='define'
 d_stdiobase='define'
 d_stdstdio='define'
 d_strchr='define'
@@ -263,7 +335,11 @@ d_strerrm='strerror(e)'
 d_strerror='define'
 d_strtod='define'
 d_strtol='define'
+d_strtold='undef'
+d_strtoll='undef'
 d_strtoul='define'
+d_strtoull='undef'
+d_strtouq='undef'
 d_strxfrm='define'
 d_suidsafe='undef'
 d_symlink='define'
@@ -275,13 +351,18 @@ d_system='define'
 d_tcgetpgrp='define'
 d_tcsetpgrp='define'
 d_telldir='define'
+d_telldirproto='define'
 d_time='define'
 d_times='define'
 d_truncate='define'
 d_tzname='define'
 d_umask='define'
 d_uname='define'
-d_union_semun='define'
+d_union_semun='undef'
+d_ustat='define'
+d_vendorarch='undef'
+d_vendorbin='undef'
+d_vendorlib='undef'
 d_vfork='undef'
 d_void_closedir='undef'
 d_voidsig='define'
@@ -301,7 +382,8 @@ direntrytype='struct dirent'
 dlext='so'
 dlsrc='dl_dlopen.xs'
 doublesize='8'
-dynamic_ext='B DB_File Data/Dumper Fcntl GDBM_File IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re'
+drand01='drand48()'
+dynamic_ext='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl File/Glob IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Sys/Hostname Sys/Syslog Thread attrs re'
 eagain='EAGAIN'
 ebcdic='undef'
 echo='echo'
@@ -310,17 +392,24 @@ emacs=''
 eunicefix=':'
 exe_ext=''
 expr='expr'
-extensions='B DB_File Data/Dumper Fcntl GDBM_File IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re Errno'
-find='find'
+extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl File/Glob IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Sys/Hostname Sys/Syslog Thread attrs re Errno'
+fflushNULL='define'
+fflushall='undef'
+find=''
 firstmakefile='makefile'
 flex=''
+fpossize='8'
 fpostype='fpos_t'
 freetype='void'
-full_csh='/bin/csh'
-full_sed='/bin/sed'
-gccversion='2.7.2.3'
+full_ar='/usr/bin/ar'
+full_csh='/usr/bin/csh'
+full_sed='/usr/bin/sed'
+gccversion=''
+gidformat='"u"'
+gidsign='1'
+gidsize='4'
 gidtype='gid_t'
-glibpth='/usr/shlib  /shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/local/lib '
+glibpth='/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib'
 grep='grep'
 groupcat='cat /etc/group'
 groupstype='gid_t'
@@ -330,6 +419,14 @@ h_sysfile='true'
 hint='recommended'
 hostcat='cat /etc/hosts'
 huge=''
+i16size='2'
+i16type='short'
+i32size='4'
+i32type='int'
+i64size='8'
+i64type='long'
+i8size='1'
+i8type='char'
 i_arpainet='define'
 i_bsdioctl=''
 i_db='define'
@@ -339,88 +436,131 @@ i_dld='undef'
 i_dlfcn='define'
 i_fcntl='undef'
 i_float='define'
-i_gdbm='define'
+i_gdbm='undef'
 i_grp='define'
+i_iconv='define'
+i_ieeefp='undef'
+i_inttypes='undef'
 i_limits='define'
 i_locale='define'
+i_machcthr='undef'
 i_malloc='define'
 i_math='define'
 i_memory='undef'
+i_mntent='undef'
 i_ndbm='define'
 i_netdb='define'
 i_neterrno='undef'
+i_netinettcp='define'
 i_niin='define'
+i_poll='define'
+i_pthread='define'
 i_pwd='define'
 i_rpcsvcdbm='undef'
 i_sfio='undef'
 i_sgtty='undef'
+i_shadow='undef'
+i_socks='undef'
 i_stdarg='define'
 i_stddef='define'
 i_stdlib='define'
 i_string='define'
+i_sunmath='undef'
+i_sysaccess='define'
 i_sysdir='define'
 i_sysfile='define'
 i_sysfilio='undef'
 i_sysin='undef'
 i_sysioctl='define'
+i_syslog='define'
+i_sysmman='define'
+i_sysmode='define'
+i_sysmount='define'
 i_sysndir='undef'
 i_sysparam='define'
 i_sysresrc='define'
+i_syssecrt='define'
 i_sysselct='define'
 i_syssockio=''
 i_sysstat='define'
+i_sysstatfs='undef'
+i_sysstatvfs='define'
 i_systime='define'
 i_systimek='undef'
 i_systimes='define'
 i_systypes='define'
+i_sysuio='define'
 i_sysun='define'
+i_sysutsname='define'
+i_sysvfs='undef'
 i_syswait='define'
 i_termio='undef'
 i_termios='define'
 i_time='undef'
 i_unistd='define'
+i_ustat='define'
 i_utime='define'
 i_values='define'
 i_varargs='undef'
 i_varhdr='stdarg.h'
 i_vfork='undef'
+ignore_versioned_solibs=''
+inc_version_list=' '
+inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='/opt/perl/lib/5.005/i686-linux-thread'
+installarchlib='/opt/perl/lib/5.6.0/alpha-dec_osf-thread-multi'
 installbin='/opt/perl/bin'
 installman1dir='/opt/perl/man/man1'
 installman3dir='/opt/perl/man/man3'
-installprivlib='/opt/perl/lib/5.005'
-installscript='/opt/perl/script'
-installsitearch='/opt/perl/lib/site_perl/5.005/i686-linux-thread'
-installsitelib='/opt/perl/lib/site_perl/5.005'
+installprefix='/opt/perl'
+installprefixexp='/opt/perl'
+installprivlib='/opt/perl/lib/5.6.0'
+installscript='/opt/perl/bin'
+installsitearch='/opt/perl/lib/site_perl/5.6.0/alpha-dec_osf-thread-multi'
+installsitebin='/opt/perl/bin'
+installsitelib='/opt/perl/lib/site_perl/5.6.0'
+installstyle='lib'
+installusrbinperl='define'
+installvendorarch=''
+installvendorbin=''
+installvendorlib=''
 intsize='4'
-known_extensions='B DB_File Data/Dumper Fcntl GDBM_File IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re'
+ivdformat='"ld"'
+ivsize='8'
+ivtype='long'
+known_extensions='B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl File/Glob GDBM_File IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Sys/Hostname Sys/Syslog Thread attrs re'
 ksh=''
 large=''
-ld='cc'
-lddlflags='-shared -L/usr/local/lib'
-ldflags=' -L/usr/local/lib'
+ld='ld'
+lddlflags='-shared -expect_unresolved "*" -msym -std -s'
+ldflags=''
+ldlibpthname='LD_LIBRARY_PATH'
 less='less'
 lib_ext='.a'
-libc=''
-libperl='libperl.a'
-libpth='/usr/local/lib /lib /usr/lib'
-libs='-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lpthread -lc -lposix -lcrypt'
-libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m pthread c cposix posix ndir dir crypt ucb BSD PW x'
-line='line'
+libc='/usr/shlib/libc.so'
+libperl='libperl.so'
+libpth='/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib'
+libs='-lgdbm -ldbm -ldb -lm -liconv -lpthread -lexc'
+libsdirs=' /usr/shlib /usr/ccs/lib'
+libsfiles=' libgdbm.so libdbm.a libdb.so libm.so libiconv.so libpthread.so libexc.so'
+libsfound=' /usr/shlib/libgdbm.so /usr/ccs/lib/libdbm.a /usr/shlib/libdb.so /usr/shlib/libm.so /usr/shlib/libiconv.so /usr/shlib/libpthread.so /usr/shlib/libexc.so'
+libspath=' /usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib'
+libswanted='sfio socket bind inet nsl nm gdbm dbm db malloc dld ld sun m cposix posix ndir dir crypt sec ucb BSD x iconv pthread exc'
+line=''
 lint=''
 lkflags=''
 ln='ln'
-lns='/bin/ln -s'
+lns='/usr/bin/ln -s'
 locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
 loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblsize='12'
+longdblsize='8'
 longlongsize='8'
-longsize='4'
+longsize='8'
 lp=''
 lpr=''
 ls='ls'
+lseeksize='8'
 lseektype='off_t'
 mail=''
 mailx=''
@@ -436,64 +576,90 @@ man3dir='/opt/perl/man/man3'
 man3direxp='/opt/perl/man/man3'
 man3ext='3'
 medium=''
-mips=''
 mips_type=''
 mkdir='mkdir'
+mmaptype='void *'
 models='none'
 modetype='mode_t'
 more='more'
+multiarch='undef'
 mv=''
-myarchname='i686-linux'
+myarchname='alpha-dec_osf'
 mydomain='.yourplace.com'
 myhostname='yourhost'
-myuname='linux fractal 2.0.34 #1 tue jun 23 10:09:17 edt 1998 i686 unknown '
-n='-n'
+myuname='osf1 alpha.hut.fi v4.0 878 alpha '
+n=''
 netdb_hlen_type='int'
 netdb_host_type='const char *'
 netdb_name_type='const char *'
-netdb_net_type='unsigned long'
+netdb_net_type='int'
 nm='nm'
-nm_opt=''
-nm_so_opt='--dynamic'
+nm_opt='-p'
+nm_so_opt=''
 nonxs_ext='Errno'
 nroff='nroff'
+nvsize='8'
+nvtype='double'
 o_nonblock='O_NONBLOCK'
 obj_ext='.o'
+old_pthread_create_joinable=''
 optimize='-O'
 orderlib='false'
-osname='linux'
-osvers='2.0.34'
+osname='dec_osf'
+osvers='4.0'
 package='perl5'
-pager='/usr/bin/less'
+pager='/c/bin/less'
 passcat='cat /etc/passwd'
-patchlevel='5'
+patchlevel='6'
 path_sep=':'
-perl='perl'
+perl5='/u/vieraat/vieraat/jhi/Perl/bin/perl'
+perl=''
 perladmin='yourname@yourhost.yourplace.com'
 perlpath='/opt/perl/bin/perl'
 pg='pg'
 phostname=''
 pidtype='pid_t'
 plibpth=''
+pm_apiversion='5.005'
 pmake=''
 pr=''
 prefix='/opt/perl'
 prefixexp='/opt/perl'
-privlib='/opt/perl/lib/5.005'
-privlibexp='/opt/perl/lib/5.005'
+privlib='/opt/perl/lib/5.6.0'
+privlibexp='/opt/perl/lib/5.6.0'
 prototype='define'
-ptrsize='4'
-randbits='31'
+ptrsize='8'
+quadkind='2'
+quadtype='long'
+randbits='48'
+randfunc='drand48'
+randseedtype='long'
 ranlib=':'
 rd_nodata='-1'
+revision='5'
 rm='rm'
 rmail=''
-runnm='false'
-scriptdir='/opt/perl/script'
-scriptdirexp='/opt/perl/script'
+runnm='true'
+sPRIEldbl='"E"'
+sPRIFldbl='"F"'
+sPRIGldbl='"G"'
+sPRIX64='"lX"'
+sPRId64='"ld"'
+sPRIeldbl='"e"'
+sPRIfldbl='"f"'
+sPRIgldbl='"g"'
+sPRIi64='"li"'
+sPRIo64='"lo"'
+sPRIu64='"lu"'
+sPRIx64='"lx"'
+sched_yield='sched_yield()'
+scriptdir='/opt/perl/bin'
+scriptdirexp='/opt/perl/bin'
 sed='sed'
+seedfunc='srand48'
+selectminbits='32'
 selecttype='fd_set *'
-sendmail='sendmail'
+sendmail=''
 sh='/bin/sh'
 shar=''
 sharpbang='#!'
@@ -501,14 +667,22 @@ shmattype='void *'
 shortsize='2'
 shrpenv=''
 shsharp='true'
-sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR UNUSED IOT CLD POLL '
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "UNUSED", "IOT", "CLD", "POLL", 0'
-sig_num='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 6, 17, 29, 0'
+sig_count='49'
+sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM IOINT STOP TSTP CONT CHLD TTIN TTOU AIO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 RESV RTMIN NUM34 NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 MAX IOT LOST URG CLD IO POLL PTY PWR RTMAX '
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "IOINT", "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "AIO", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "INFO", "USR1", "USR2", "RESV", "RTMIN", "NUM34", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "MAX", "IOT", "LOST", "URG", "CLD", "IO", "POLL", "PTY", "PWR", "RTMAX", 0'
+sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 6 6 16 20 23 23 23 29 48 '
+sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 6, 16, 20, 23, 23, 23, 29, 48, 0'
 signal_t='void'
-sitearch='/opt/perl/lib/site_perl/5.005/i686-linux-thread'
-sitearchexp='/opt/perl/lib/site_perl/5.005/i686-linux-thread'
-sitelib='/opt/perl/lib/site_perl/5.005'
-sitelibexp='/opt/perl/lib/site_perl/5.005'
+sitearch='/opt/perl/lib/site_perl/5.6.0/alpha-dec_osf-thread-multi'
+sitearchexp='/opt/perl/lib/site_perl/5.6.0/alpha-dec_osf-thread-multi'
+sitebin='/opt/perl/bin'
+sitebinexp='/opt/perl/bin'
+sitelib='/opt/perl/lib/site_perl/5.6.0'
+sitelib_stem='/opt/perl/lib/site_perl'
+sitelibexp='/opt/perl/lib/site_perl/5.6.0'
+siteprefix='/opt/perl'
+siteprefixexp='/opt/perl'
+sizesize='8'
 sizetype='size_t'
 sleep=''
 smail=''
@@ -516,6 +690,7 @@ small=''
 so='so'
 sockethdr=''
 socketlib=''
+socksizetype='int'
 sort='sort'
 spackage='Perl5'
 spitshell='cat'
@@ -525,12 +700,13 @@ ssizetype='ssize_t'
 startperl='#!/opt/perl/bin/perl'
 startsh='#!/bin/sh'
 static_ext=' '
-stdchar='char'
-stdio_base='((fp)->_IO_read_base)'
-stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)'
-stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
+stdchar='unsigned char'
+stdio_base='((fp)->_base)'
+stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
+stdio_cnt='((fp)->_cnt)'
 stdio_filbuf=''
-stdio_ptr='((fp)->_IO_read_ptr)'
+stdio_ptr='((fp)->_ptr)'
+stdio_stream_array='_iob'
 strings='/usr/include/string.h'
 submit=''
 subversion='0'
@@ -538,7 +714,7 @@ sysman='/usr/man/man1'
 tail=''
 tar=''
 tbl=''
-tee='tee'
+tee=''
 test='test'
 timeincl='/usr/include/sys/time.h '
 timetype='time_t'
@@ -546,40 +722,85 @@ touch='touch'
 tr='tr'
 trnl='\n'
 troff=''
+u16size='2'
+u16type='unsigned short'
+u32size='4'
+u32type='unsigned int'
+u64size='8'
+u64type='unsigned long'
+u8size='1'
+u8type='unsigned char'
+uidformat='"u"'
+uidsign='1'
+uidsize='4'
 uidtype='uid_t'
 uname='uname'
 uniq='uniq'
+uquadtype='unsigned long'
+use5005threads='undef'
+use64bitall='define'
+use64bitint='define'
 usedl='define'
+useithreads='define'
+uselargefiles='define'
+uselongdouble='undef'
+usemorebits='undef'
+usemultiplicity='define'
 usemymalloc='n'
-usenm='false'
+usenm='true'
 useopcode='true'
 useperlio='undef'
 useposix='true'
 usesfio='false'
-useshrplib='false'
+useshrplib='true'
+usesocks='undef'
 usethreads='define'
+usevendorprefix='undef'
 usevfork='false'
 usrinc='/usr/include'
 uuname=''
-version='5.005'
+uvoformat='"lo"'
+uvsize='8'
+uvtype='unsigned long'
+uvuformat='"lu"'
+uvxformat='"lx"'
+vendorarch=''
+vendorarchexp=''
+vendorbin=''
+vendorbinexp=''
+vendorlib=''
+vendorlib_stem=''
+vendorlibexp=''
+vendorprefix=''
+vendorprefixexp=''
+version='5.6.0'
 vi=''
 voidflags='15'
 xlibpth='/usr/lib/386 /lib/386'
+xs_apiversion='5.6.0'
 zcat=''
 zip='zip'
 # Configure command line arguments.
 config_arg0='Configure'
-config_args='-Dprefix=/opt/perl -Doptimize=-O -Dusethreads -Dcf_by=yourname -Dcf_email=yourname@yourhost.yourplace.com -Dperladmin=yourname@yourhost.yourplace.com -Dmydomain=.yourplace.com -Dmyhostname=yourhost -dE'
-config_argc=9
+config_args='-Dprefix=/opt/perl -Doptimize=-O -Dusethreads -Duse64bitint -Duselargefiles -Dcf_by=yourname -Dcf_email=yourname@yourhost.yourplace.com -Dperladmin=yourname@yourhost.yourplace.com -Dmydomain=.yourplace.com -Dmyhostname=yourhost -dE'
+config_argc=11
 config_arg1='-Dprefix=/opt/perl'
 config_arg2='-Doptimize=-O'
 config_arg3='-Dusethreads'
-config_arg4='-Dcf_by=yourname'
-config_arg5='-Dcf_email=yourname@yourhost.yourplace.com'
-config_arg6='-Dperladmin=yourname@yourhost.yourplace.com'
-config_arg7='-Dmydomain=.yourplace.com'
-config_arg8='-Dmyhostname=yourhost'
-config_arg9='-dE'
-PATCHLEVEL=5
-SUBVERSION=0
-CONFIG=true
+config_arg4='-Duse64bitint'
+config_arg5='-Duselargefiles'
+config_arg6='-Dcf_by=yourname'
+config_arg7='-Dcf_email=yourname@yourhost.yourplace.com'
+config_arg8='-Dperladmin=yourname@yourhost.yourplace.com'
+config_arg9='-Dmydomain=.yourplace.com'
+config_arg10='-Dmyhostname=yourhost'
+config_arg11='-dE'
+PERL_REVISION=5
+PERL_VERSION=6
+PERL_SUBVERSION=0
+PERL_API_REVISION=5
+PERL_API_VERSION=5
+PERL_API_SUBVERSION=0
+CONFIGDOTSH=true
+# Variables propagated from previous config.sh file.
+pp_sys_cflags='ccflags="$ccflags -DNO_EFF_ONLY_OK"'
diff --git a/contrib/perl5/Porting/config_H b/contrib/perl5/Porting/config_H
index 8cbf3c497b98..c80ebaffe0e3 100644
--- a/contrib/perl5/Porting/config_H
+++ b/contrib/perl5/Porting/config_H
@@ -17,9 +17,9 @@
 /*
  * Package name      : perl5
  * Source directory  : .
- * Configuration time: Tue Jul 21 10:03:27 EDT 1998
- * Configured by     : doughera
- * Target system     : linux fractal 2.0.34 #1 tue jun 23 10:09:17 edt 1998 i686 unknown 
+ * Configuration time: Tue Mar 21 23:22:20 EET 2000
+ * Configured by     : jhi
+ * Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
  */
 
 #ifndef _config_h_
@@ -28,33 +28,7 @@
 /* LOC_SED:
  *	This symbol holds the complete pathname to the sed program.
  */
-#define LOC_SED 	"/bin/sed"	/**/
-
-/* BIN:
- *	This symbol holds the path of the bin directory where the package will
- *	be installed. Program must be prepared to deal with ~name substitution.
- */
-/* BIN_EXP:
- *	This symbol is the filename expanded version of the BIN symbol, for
- *	programs that do not want to deal with that at run-time.
- */
-#define BIN "/opt/perl/bin"	/**/
-#define BIN_EXP "/opt/perl/bin"	/**/
-
-/* CPPSTDIN:
- *	This symbol contains the first part of the string which will invoke
- *	the C preprocessor on the standard input and produce to standard
- *	output.	 Typical value of "cc -E" or "/lib/cpp", but it can also
- *	call a wrapper. See CPPRUN.
- */
-/* CPPMINUS:
- *	This symbol contains the second part of the string which will invoke
- *	the C preprocessor on the standard input and produce to standard
- *	output.  This symbol will have the value "-" if CPPSTDIN needs a minus
- *	to specify standard input, otherwise the value is "".
- */
-#define CPPSTDIN "cc -E"
-#define CPPMINUS "-"
+#define LOC_SED 	"/usr/bin/sed"	/**/
 
 /* HAS_ALARM:
  *	This symbol, if defined, indicates that the alarm routine is
@@ -66,7 +40,7 @@
  *	This symbol indicates the C compiler can check for function attributes,
  *	such as printf formats. This is normally only supported by GNU cc.
  */
-#define HASATTRIBUTE 	/**/
+/*#define HASATTRIBUTE 	/ **/
 #ifndef HASATTRIBUTE
 #define __attribute__(_arg_)
 #endif
@@ -201,12 +175,6 @@
  */
 #define HAS_FGETPOS	/**/
 
-/* FLEXFILENAMES:
- *	This symbol, if defined, indicates that the system supports filenames
- *	longer than 14 characters.
- */
-#define	FLEXFILENAMES		/**/
-
 /* HAS_FLOCK:
  *	This symbol, if defined, indicates that the flock routine is
  *	available to do file locking.
@@ -243,13 +211,6 @@
  */
 #define HAS_GETGROUPS		/**/
 
-/* HAS_UNAME:
- *	This symbol, if defined, indicates that the C program may use the
- *	uname() routine to derive the host name.  See also HAS_GETHOSTNAME
- *	and PHOSTNAME.
- */
-#define HAS_UNAME		/**/
-
 /* HAS_GETLOGIN:
  *	This symbol, if defined, indicates that the getlogin routine is
  *	available to get the login name.
@@ -292,31 +253,6 @@
  */
 #define HAS_GETPRIORITY		/**/
 
-/* HAS_HTONL:
- *	This symbol, if defined, indicates that the htonl() routine (and
- *	friends htons() ntohl() ntohs()) are available to do network
- *	order byte swapping.
- */
-/* HAS_HTONS:
- *	This symbol, if defined, indicates that the htons() routine (and
- *	friends htonl() ntohl() ntohs()) are available to do network
- *	order byte swapping.
- */
-/* HAS_NTOHL:
- *	This symbol, if defined, indicates that the ntohl() routine (and
- *	friends htonl() htons() ntohs()) are available to do network
- *	order byte swapping.
- */
-/* HAS_NTOHS:
- *	This symbol, if defined, indicates that the ntohs() routine (and
- *	friends htonl() htons() ntohl()) are available to do network
- *	order byte swapping.
- */
-#define HAS_HTONL		/**/
-#define HAS_HTONS		/**/
-#define HAS_NTOHL		/**/
-#define HAS_NTOHS		/**/
-
 /* HAS_INET_ATON:
  *	This symbol, if defined, indicates to the C program that the
  *	inet_aton() function is available to parse IP address "dotted-quad"
@@ -420,11 +356,17 @@
  */
 #define HAS_MKTIME		/**/
 
-/* HAS_MSG:
- *	This symbol, if defined, indicates that the entire msg*(2) library is
- *	supported (IPC mechanism based on message queues).
+/* HAS_MSYNC:
+ *	This symbol, if defined, indicates that the msync system call is
+ *	available to synchronize a mapped file.
  */
-#define HAS_MSG		/**/
+#define HAS_MSYNC		/**/
+
+/* HAS_MUNMAP:
+ *	This symbol, if defined, indicates that the munmap system call is
+ *	available to unmap a region, usually mapped by mmap().
+ */
+#define HAS_MUNMAP		/**/
 
 /* HAS_NICE:
  *	This symbol, if defined, indicates that the nice routine is
@@ -516,12 +458,6 @@
  */
 #define HAS_SELECT	/**/
 
-/* HAS_SEM:
- *	This symbol, if defined, indicates that the entire sem*(2) library is
- *	supported.
- */
-#define HAS_SEM		/**/
-
 /* HAS_SETEGID:
  *	This symbol, if defined, indicates that the setegid routine is available
  *	to change the effective gid of the current program.
@@ -563,7 +499,7 @@
  *	for a POSIX interface.
  */
 #define HAS_SETPGRP		/**/
-/*#define USE_BSD_SETPGRP	/ **/
+#define USE_BSD_SETPGRP	/**/
 
 /* HAS_SETPGRP2:
  *	This symbol, if defined, indicates that the setpgrp2() (as in DG/UX)
@@ -607,13 +543,13 @@
  *	This symbol, if defined, indicates that the setrgid routine is available
  *	to change the real gid of the current program.
  */
-/*#define HAS_SETRGID		/ **/
+#define HAS_SETRGID		/**/
 
 /* HAS_SETRUID:
  *	This symbol, if defined, indicates that the setruid routine is available
  *	to change the real uid of the current program.
  */
-/*#define HAS_SETRUID		/ **/
+#define HAS_SETRUID		/**/
 
 /* HAS_SETSID:
  *	This symbol, if defined, indicates that the setsid routine is
@@ -621,12 +557,6 @@
  */
 #define HAS_SETSID	/**/
 
-/* HAS_SHM:
- *	This symbol, if defined, indicates that the entire shm*(2) library is
- *	supported.
- */
-#define HAS_SHM		/**/
-
 /* Shmat_t:
  *	This symbol holds the return type of the shmat() system call.
  *	Usually set to 'void *' or 'char *'.
@@ -641,12 +571,6 @@
 #define Shmat_t void *	/**/
 #define HAS_SHMAT_PROTOTYPE	/**/
 
-/* USE_STAT_BLOCKS:
- *	This symbol is defined if this system has a stat structure declaring
- *	st_blksize and st_blocks.
- */
-/*#define USE_STAT_BLOCKS 	/ **/
-
 /* HAS_STRCHR:
  *	This symbol is defined to indicate that the strchr()/strrchr()
  *	functions are available for string searching. If not, try the
@@ -672,25 +596,6 @@
  */
 #define	USE_STRUCT_COPY	/**/
 
-/* HAS_STRERROR:
- *	This symbol, if defined, indicates that the strerror routine is
- *	available to translate error numbers to strings. See the writeup
- *	of Strerror() in this file before you try to define your own.
- */
-/* HAS_SYS_ERRLIST:
- *	This symbol, if defined, indicates that the sys_errlist array is
- *	available to translate error numbers to strings. The extern int
- *	sys_nerr gives the size of that table.
- */
-/* Strerror:
- *	This preprocessor symbol is defined as a macro if strerror() is
- *	not available to translate error numbers to strings but sys_errlist[]
- *	array is there.
- */
-#define HAS_STRERROR		/**/
-#define HAS_SYS_ERRLIST	/**/
-#define Strerror(e) strerror(e)
-
 /* HAS_STRTOD:
  *	This symbol, if defined, indicates that the strtod routine is
  *	available to provide better numeric string conversion than atof().
@@ -769,11 +674,6 @@
  */
 #define HAS_UMASK		/**/
 
-/* HAS_VFORK:
- *	This symbol, if defined, indicates that vfork() exists.
- */
-/*#define HAS_VFORK	/ **/
-
 /* HASVOLATILE:
  *	This symbol, if defined, indicates that this C compiler knows about
  *	the volatile declaration.
@@ -806,17 +706,11 @@
  */
 #define HAS_WCTOMB		/**/
 
-/* EBCDIC:
- *	This symbol, if defined, indicates that this system uses
- *	EBCDIC encoding.
- */
-/*#define	EBCDIC 		/ **/
-
 /* I_ARPA_INET:
- *	This symbol, if defined, indicates that  exists and should
- *	be included.
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include  to get inet_addr and friends declarations.
  */
-#define I_ARPA_INET	/**/
+#define	I_ARPA_INET		/**/
 
 /* I_DBM:
  *	This symbol, if defined, indicates that  exists and should
@@ -846,7 +740,7 @@
  *	portably declare your directory entries.
  */
 #define I_DIRENT		/**/
-/*#define DIRNAMLEN	/ **/
+#define DIRNAMLEN	/**/
 #define Direntry_t struct dirent
 
 /* I_DLFCN:
@@ -867,32 +761,6 @@
  */
 #define I_FLOAT		/**/
 
-/* I_GRP:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
- */
-/* GRPASSWD:
- *	This symbol, if defined, indicates to the C program that struct group
- *	contains gr_passwd.
- */
-/* HAS_SETGRENT:
- *	This symbol, if defined, indicates that the getgrent routine is
- *	available for initializing sequential access of the group database.
- */
-/* HAS_GETGRENT:
- *	This symbol, if defined, indicates that the getgrent routine is
- *	available for sequential access of the group database.
- */
-/* HAS_ENDGRENT:
- *	This symbol, if defined, indicates that the getgrent routine is
- *	available for finalizing sequential access of the group database.
- */
-#define I_GRP		/**/
-#define GRPASSWD	/**/
-#define HAS_SETGRENT	/**/
-#define HAS_GETGRENT	/**/
-#define HAS_ENDGRENT	/**/
-
 /* I_LIMITS:
  *	This symbol, if defined, indicates to the C program that it should
  *	include  to get definition of symbols like WORD_BIT or
@@ -1120,22 +988,158 @@
  *	This symbol is defined to be the type of char used in stdio.h.
  *	It has the values "unsigned char" or "char".
  */
-#define STDCHAR char	/**/
+#define STDCHAR unsigned char	/**/
+
+/* CROSSCOMPILE:
+ *	This symbol, if defined, signifies that we our
+ *	build process is a cross-compilation.
+ */
+/*#define CROSSCOMPILE		/ **/
+
+/* INTSIZE:
+ *	This symbol contains the value of sizeof(int) so that the C
+ *	preprocessor can make decisions based on it.
+ */
+/* LONGSIZE:
+ *	This symbol contains the value of sizeof(long) so that the C
+ *	preprocessor can make decisions based on it.
+ */
+/* SHORTSIZE:
+ *	This symbol contains the value of sizeof(short) so that the C
+ *	preprocessor can make decisions based on it.
+ */
+#define INTSIZE 4		/**/
+#define LONGSIZE 8		/**/
+#define SHORTSIZE 2		/**/
+
+/* MULTIARCH:
+ *	This symbol, if defined, signifies that the build
+ *	process will produce some binary files that are going to be
+ *	used in a cross-platform environment.  This is the case for
+ *	example with the NeXT "fat" binaries that contain executables
+ *	for several CPUs.
+ */
+/*#define MULTIARCH		/ **/
+
+/* HAS_QUAD:
+ *	This symbol, if defined, tells that there's a 64-bit integer type,
+ *	Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one
+ *	of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T.
+ */
+#define HAS_QUAD	/**/
+#ifdef HAS_QUAD
+#   define Quad_t long	/**/
+#   define Uquad_t unsigned long	/**/
+#   define QUADKIND 2	/**/
+#   define QUAD_IS_INT	1
+#   define QUAD_IS_LONG	2
+#   define QUAD_IS_LONG_LONG	3
+#   define QUAD_IS_INT64_T	4
+#endif
+
+/* HAS_ACCESSX:
+ *	This symbol, if defined, indicates that the accessx routine is
+ *	available to do extended access checks.
+ */
+/*#define HAS_ACCESSX		/ **/
+
+/* HAS_EACCESS:
+ *	This symbol, if defined, indicates that the eaccess routine is
+ *	available to do extended access checks.
+ */
+/*#define HAS_EACCESS		/ **/
+
+/* I_SYS_ACCESS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#define   I_SYS_ACCESS                /**/
+
+/* I_SYS_SECURITY:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#define   I_SYS_SECURITY	/**/
+
+/* OSNAME:
+ *	This symbol contains the name of the operating system, as determined
+ *	by Configure.  You shouldn't rely on it too much; the specific
+ *	feature tests from Configure are generally more reliable.
+ */
+#define OSNAME "dec_osf"		/**/
 
 /* MEM_ALIGNBYTES:
- *	 This symbol contains the number of bytes required to align a
- *	 double. Usual values are 2, 4 and 8.
- *	 On NeXT starting with 3.2, you can build "Fat" Multiple Architecture
- *	 Binaries (MAB) for targets with varying alignment.  This only matters
- *	 for perl, where the config.h can be generated and installed on one
- *	 system, and used by a different architecture to build an extension.
- *	 The default is eight, for safety.
+ *	This symbol contains the number of bytes required to align a
+ *	double, or a long double when applicable. Usual values are 2,
+ *	4 and 8. The default is eight, for safety.
  */
-#define MEM_ALIGNBYTES 4	/**/
+#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+#  define MEM_ALIGNBYTES 8
+#else
+#define MEM_ALIGNBYTES 8
+#endif
+
+/* ARCHLIB:
+ *	This variable, if defined, holds the name of the directory in
+ *	which the user wants to put architecture-dependent public
+ *	library files for perl5.  It is most often a local directory
+ *	such as /usr/local/lib.  Programs using this variable must be
+ *	prepared to deal with filename expansion.  If ARCHLIB is the
+ *	same as PRIVLIB, it is not defined, since presumably the
+ *	program already searches PRIVLIB.
+ */
+/* ARCHLIB_EXP:
+ *	This symbol contains the ~name expanded version of ARCHLIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#define ARCHLIB "/opt/perl/lib/5.6.0/alpha-dec_osf-thread-multi"		/**/
+#define ARCHLIB_EXP "/opt/perl/lib/5.6.0/alpha-dec_osf-thread-multi"		/**/
+
+/* ARCHNAME:
+ *	This symbol holds a string representing the architecture name.
+ *	It may be used to construct an architecture-dependant pathname
+ *	where library files may be held under a private library, for
+ *	instance.
+ */
+#define ARCHNAME "alpha-dec_osf-thread-multi"		/**/
+
+/* HAS_ATOLF:
+ *	This symbol, if defined, indicates that the atolf routine is
+ *	available to convert strings into long doubles.
+ */
+/*#define HAS_ATOLF		/ **/
+
+/* HAS_ATOLL:
+ *	This symbol, if defined, indicates that the atoll routine is
+ *	available to convert strings into long longs.
+ */
+/*#define HAS_ATOLL		/ **/
+
+/* BIN:
+ *	This symbol holds the path of the bin directory where the package will
+ *	be installed. Program must be prepared to deal with ~name substitution.
+ */
+/* BIN_EXP:
+ *	This symbol is the filename expanded version of the BIN symbol, for
+ *	programs that do not want to deal with that at run-time.
+ */
+#define BIN "/opt/perl/bin"	/**/
+#define BIN_EXP "/opt/perl/bin"	/**/
+
+/* PERL_BINCOMPAT_5005:
+ *	This symbol, if defined, indicates that this version of Perl should be
+ *	binary-compatible with Perl 5.005.  This is impossible for builds
+ *	that use features like threads and multiplicity it is always 
+ *	for those versions.
+ */
+/*#define PERL_BINCOMPAT_5005			/ **/
 
 /* BYTEORDER:
  *	This symbol holds the hexadecimal constant defined in byteorder,
  *	i.e. 0x1234 or 0x4321, etc...
+ *	If the compiler supports cross-compiling or multiple-architecture
+ *	binaries (eg. on NeXT systems), use compiler-defined macros to
+ *	determine the byte order.
  *	On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture
  *	Binaries (MAB) on either big endian or little endian machines.
  *	The endian-ness is available at compile-time.  This only matters
@@ -1146,16 +1150,94 @@
  *	so the default case (for NeXT) is big endian to catch them. 
  *	This might matter for NeXT 3.0.
  */
-#ifndef NeXT
-#define BYTEORDER 0x1234	/* large digits for MSB */
-#else  /* NeXT */
-#ifdef __LITTLE_ENDIAN__
-#define BYTEORDER 0x1234
-#else /* __BIG_ENDIAN__ */
-#define BYTEORDER 0x4321
-#endif /* ENDIAN CHECK */
+#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+#  ifdef __LITTLE_ENDIAN__
+#    if LONGSIZE == 4
+#      define BYTEORDER 0x1234
+#    else
+#      if LONGSIZE == 8
+#        define BYTEORDER 0x12345678
+#      endif
+#    endif
+#  else
+#    ifdef __BIG_ENDIAN__
+#      if LONGSIZE == 4
+#        define BYTEORDER 0x4321
+#      else
+#        if LONGSIZE == 8
+#          define BYTEORDER 0x87654321
+#        endif
+#      endif
+#    endif
+#  endif
+#  if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__))
+#    define BYTEORDER 0x4321
+#  endif
+#else
+#define BYTEORDER 0x12345678	/* large digits for MSB */
 #endif /* NeXT */
 
+/* CAT2:
+ *	This macro catenates 2 tokens together.
+ */
+/* STRINGIFY:
+ *	This macro surrounds its token with double quotes.
+ */
+#if 42 == 1
+#  define CAT2(a,b)	a/**/b
+#  define STRINGIFY(a)	"a"
+		/* If you can get stringification with catify, tell me how! */
+#endif
+#if 42 == 42
+#  define PeRl_CaTiFy(a, b)	a ## b	
+#  define PeRl_StGiFy(a)	#a
+/* the additional level of indirection enables these macros to be
+ * used as arguments to other macros.  See K&R 2nd ed., page 231. */
+#  define CAT2(a,b)	PeRl_CaTiFy(a,b)
+#  define StGiFy(a)	PeRl_StGiFy(a)
+#  define STRINGIFY(a)	PeRl_StGiFy(a)
+#endif
+#if 42 != 1 && 42 != 42
+#include "Bletch: How does this C preprocessor catenate tokens?"
+#endif
+
+/* CPPSTDIN:
+ *	This symbol contains the first part of the string which will invoke
+ *	the C preprocessor on the standard input and produce to standard
+ *	output.	 Typical value of "cc -E" or "/lib/cpp", but it can also
+ *	call a wrapper. See CPPRUN.
+ */
+/* CPPMINUS:
+ *	This symbol contains the second part of the string which will invoke
+ *	the C preprocessor on the standard input and produce to standard
+ *	output.  This symbol will have the value "-" if CPPSTDIN needs a minus
+ *	to specify standard input, otherwise the value is "".
+ */
+/* CPPRUN:
+ *	This symbol contains the string which will invoke a C preprocessor on
+ *	the standard input and produce to standard output. It needs to end
+ *	with CPPLAST, after all other preprocessor flags have been specified.
+ *	The main difference with CPPSTDIN is that this program will never be a
+ *	pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
+ *	available directly to the user. Note that it may well be different from
+ *	the preprocessor used to compile the C program.
+ */
+/* CPPLAST:
+ *	This symbol is intended to be used along with CPPRUN in the same manner
+ *	symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
+ */
+#define CPPSTDIN "cppstdin"
+#define CPPMINUS ""
+#define CPPRUN "/usr/bin/cpp"
+#define CPPLAST ""
+
+/* HAS_ACCESS:
+ *	This manifest constant lets the C program know that the access()
+ *	system call is available to check for accessibility using real UID/GID.
+ *	(always present on UNIX.)
+ */
+#define HAS_ACCESS		/**/
+
 /* CASTI32:
  *	This symbol is defined if the C compiler can cast negative
  *	or large floating point numbers to 32-bit ints.
@@ -1183,6 +1265,110 @@
  */
 /*#define VOID_CLOSEDIR		/ **/
 
+/* HAS_CSH:
+ *	This symbol, if defined, indicates that the C-shell exists.
+ */
+/* CSH:
+ *	This symbol, if defined, contains the full pathname of csh.
+ */
+#define HAS_CSH		/**/
+#ifdef HAS_CSH
+#define CSH "/usr/bin/csh"	/**/
+#endif
+
+/* DLSYM_NEEDS_UNDERSCORE:
+ *	This symbol, if defined, indicates that we need to prepend an
+ *	underscore to the symbol name before calling dlsym().  This only
+ *	makes sense if you *have* dlsym, which we will presume is the
+ *	case if you're using dl_dlopen.xs.
+ */
+/*#define 	DLSYM_NEEDS_UNDERSCORE 	/ **/
+
+/* HAS_DRAND48_PROTO:
+ *	This symbol, if defined, indicates that the system provides
+ *	a prototype for the drand48() function.  Otherwise, it is up
+ *	to the program to supply one.  A good guess is
+ *		extern double drand48 _((void));
+ */
+#define	HAS_DRAND48_PROTO	/**/
+
+/* HAS_ENDGRENT:
+ *	This symbol, if defined, indicates that the getgrent routine is
+ *	available for finalizing sequential access of the group database.
+ */
+#define HAS_ENDGRENT		/**/
+
+/* HAS_ENDHOSTENT:
+ *	This symbol, if defined, indicates that the endhostent() routine is
+ *	available to close whatever was being used for host queries.
+ */
+#define HAS_ENDHOSTENT		/**/
+
+/* HAS_ENDNETENT:
+ *	This symbol, if defined, indicates that the endnetent() routine is
+ *	available to close whatever was being used for network queries.
+ */
+#define HAS_ENDNETENT		/**/
+
+/* HAS_ENDPROTOENT:
+ *	This symbol, if defined, indicates that the endprotoent() routine is
+ *	available to close whatever was being used for protocol queries.
+ */
+#define HAS_ENDPROTOENT		/**/
+
+/* HAS_ENDPWENT:
+ *	This symbol, if defined, indicates that the getgrent routine is
+ *	available for finalizing sequential access of the passwd database.
+ */
+#define HAS_ENDPWENT		/**/
+
+/* HAS_ENDSERVENT:
+ *	This symbol, if defined, indicates that the endservent() routine is
+ *	available to close whatever was being used for service queries.
+ */
+#define HAS_ENDSERVENT		/**/
+
+/* HAS_ENDSPENT:
+ *	This symbol, if defined, indicates that the endspent system call is
+ *	available to finalize the scan of SysV shadow password entries.
+ */
+/*#define HAS_ENDSPENT		/ **/
+
+/* HAS_FD_SET:
+ *	This symbol, when defined, indicates presence of the fd_set typedef
+ *	in 
+ */
+#define HAS_FD_SET	/**/
+
+/* HAS_FPOS64_T:
+ *	This symbol will be defined if the C compiler supports fpos64_t.
+ */
+/*#define	HAS_FPOS64_T    	/ **/
+
+/* HAS_STRUCT_FS_DATA:
+ *	This symbol, if defined, indicates that the struct fs_data
+ *	to do statfs() is supported.
+ */
+/*#define HAS_STRUCT_FS_DATA	/ **/
+
+/* HAS_FSEEKO:
+ *	This symbol, if defined, indicates that the fseeko routine is
+ *	available to fseek beyond 32 bits (useful for ILP32 hosts).
+ */
+/*#define HAS_FSEEKO		/ **/
+
+/* HAS_FSTATFS:
+ *	This symbol, if defined, indicates that the fstatfs routine is
+ *	available to stat filesystems by file descriptors.
+ */
+#define HAS_FSTATFS		/**/
+
+/* HAS_FTELLO:
+ *	This symbol, if defined, indicates that the ftello routine is
+ *	available to ftell beyond 32 bits (useful for ILP32 hosts).
+ */
+/*#define HAS_FTELLO		/ **/
+
 /* Gconvert:
  *	This preprocessor macro is defined to convert a floating point
  *	number to a string without a trailing decimal point.  This
@@ -1200,23 +1386,347 @@
  */
 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
 
+/* HAS_GETCWD:
+ *	This symbol, if defined, indicates that the getcwd routine is
+ *	available to get the current working directory.
+ */
+#define HAS_GETCWD		/**/
+
+/* HAS_GETFSSTAT:
+ *	This symbol, if defined, indicates that the getfsstat routine is
+ *	available to stat filesystems in bulk.
+ */
+#define HAS_GETFSSTAT		/**/
+
+/* HAS_GETGRENT:
+ *	This symbol, if defined, indicates that the getgrent routine is
+ *	available for sequential access of the group database.
+ */
+#define HAS_GETGRENT		/**/
+
+/* HAS_GETHOSTBYADDR:
+ *	This symbol, if defined, indicates that the gethostbyaddr() routine is
+ *	available to look up hosts by their IP addresses.
+ */
+#define HAS_GETHOSTBYADDR		/**/
+
+/* HAS_GETHOSTBYNAME:
+ *	This symbol, if defined, indicates that the gethostbyname() routine is
+ *	available to look up host names in some data base or other.
+ */
+#define HAS_GETHOSTBYNAME		/**/
+
+/* HAS_GETHOSTENT:
+ *	This symbol, if defined, indicates that the gethostent() routine is
+ *	available to look up host names in some data base or another.
+ */
+#define HAS_GETHOSTENT		/**/
+
+/* HAS_GETHOSTNAME:
+ *	This symbol, if defined, indicates that the C program may use the
+ *	gethostname() routine to derive the host name.  See also HAS_UNAME
+ *	and PHOSTNAME.
+ */
+/* HAS_UNAME:
+ *	This symbol, if defined, indicates that the C program may use the
+ *	uname() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *	and PHOSTNAME.
+ */
+/* PHOSTNAME:
+ *	This symbol, if defined, indicates the command to feed to the
+ *	popen() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *	and HAS_UNAME.	Note that the command uses a fully qualified path,
+ *	so that it is safe even if used by a process with super-user
+ *	privileges.
+ */
+/* HAS_PHOSTNAME:
+ *	This symbol, if defined, indicates that the C program may use the
+ *	contents of PHOSTNAME as a command to feed to the popen() routine
+ *	to derive the host name.
+ */
+#define HAS_GETHOSTNAME	/**/
+#define HAS_UNAME		/**/
+/*#define HAS_PHOSTNAME	/ **/
+#ifdef HAS_PHOSTNAME
+#define PHOSTNAME ""	/* How to get the host name */
+#endif
+
+/* HAS_GETHOST_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for gethostent(), gethostbyname(), and
+ *	gethostbyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#define	HAS_GETHOST_PROTOS	/**/
+
+/* HAS_GETMNT:
+ *	This symbol, if defined, indicates that the getmnt routine is
+ *	available to get filesystem mount info by filename.
+ */
+/*#define HAS_GETMNT		/ **/
+
+/* HAS_GETMNTENT:
+ *	This symbol, if defined, indicates that the getmntent routine is
+ *	available to iterate through mounted file systems to get their info.
+ */
+/*#define HAS_GETMNTENT		/ **/
+
+/* HAS_GETNETBYADDR:
+ *	This symbol, if defined, indicates that the getnetbyaddr() routine is
+ *	available to look up networks by their IP addresses.
+ */
+#define HAS_GETNETBYADDR		/**/
+
+/* HAS_GETNETBYNAME:
+ *	This symbol, if defined, indicates that the getnetbyname() routine is
+ *	available to look up networks by their names.
+ */
+#define HAS_GETNETBYNAME		/**/
+
+/* HAS_GETNETENT:
+ *	This symbol, if defined, indicates that the getnetent() routine is
+ *	available to look up network names in some data base or another.
+ */
+#define HAS_GETNETENT		/**/
+
+/* HAS_GETNET_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for getnetent(), getnetbyname(), and
+ *	getnetbyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#define	HAS_GETNET_PROTOS	/**/
+
+/* HAS_GETPROTOENT:
+ *	This symbol, if defined, indicates that the getprotoent() routine is
+ *	available to look up protocols in some data base or another.
+ */
+#define HAS_GETPROTOENT		/**/
+
+/* HAS_GETPROTOBYNAME:
+ *	This symbol, if defined, indicates that the getprotobyname()
+ *	routine is available to look up protocols by their name.
+ */
+/* HAS_GETPROTOBYNUMBER:
+ *	This symbol, if defined, indicates that the getprotobynumber()
+ *	routine is available to look up protocols by their number.
+ */
+#define HAS_GETPROTOBYNAME		/**/
+#define HAS_GETPROTOBYNUMBER		/**/
+
+/* HAS_GETPROTO_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for getprotoent(), getprotobyname(), and
+ *	getprotobyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#define	HAS_GETPROTO_PROTOS	/**/
+
+/* HAS_GETPWENT:
+ *	This symbol, if defined, indicates that the getpwent routine is
+ *	available for sequential access of the passwd database.
+ *	If this is not available, the older getpw() function may be available.
+ */
+#define HAS_GETPWENT		/**/
+
+/* HAS_GETSERVENT:
+ *	This symbol, if defined, indicates that the getservent() routine is
+ *	available to look up network services in some data base or another.
+ */
+#define HAS_GETSERVENT		/**/
+
+/* HAS_GETSERV_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for getservent(), getservbyname(), and
+ *	getservbyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#define	HAS_GETSERV_PROTOS	/**/
+
+/* HAS_GETSPENT:
+ *	This symbol, if defined, indicates that the getspent system call is
+ *	available to retrieve SysV shadow password entries sequentially.
+ */
+/*#define HAS_GETSPENT		/ **/
+
+/* HAS_GETSPNAM:
+ *	This symbol, if defined, indicates that the getspnam system call is
+ *	available to retrieve SysV shadow password entries by name.
+ */
+/*#define HAS_GETSPNAM		/ **/
+
+/* HAS_GETSERVBYNAME:
+ *	This symbol, if defined, indicates that the getservbyname()
+ *	routine is available to look up services by their name.
+ */
+/* HAS_GETSERVBYPORT:
+ *	This symbol, if defined, indicates that the getservbyport()
+ *	routine is available to look up services by their port.
+ */
+#define HAS_GETSERVBYNAME		/**/
+#define HAS_GETSERVBYPORT		/**/
+
 /* HAS_GNULIBC:
  *	This symbol, if defined, indicates to the C program that 
  *	the GNU C library is being used.
  */
-#define HAS_GNULIBC  	/**/
+/*#define HAS_GNULIBC  	/ **/
+#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
+#   define _GNU_SOURCE
+#endif
+/* HAS_HASMNTOPT:
+ *	This symbol, if defined, indicates that the hasmntopt routine is
+ *	available to query the mount options of file systems.
+ */
+/*#define HAS_HASMNTOPT		/ **/
+
+/* HAS_HTONL:
+ *	This symbol, if defined, indicates that the htonl() routine (and
+ *	friends htons() ntohl() ntohs()) are available to do network
+ *	order byte swapping.
+ */
+/* HAS_HTONS:
+ *	This symbol, if defined, indicates that the htons() routine (and
+ *	friends htonl() ntohl() ntohs()) are available to do network
+ *	order byte swapping.
+ */
+/* HAS_NTOHL:
+ *	This symbol, if defined, indicates that the ntohl() routine (and
+ *	friends htonl() htons() ntohs()) are available to do network
+ *	order byte swapping.
+ */
+/* HAS_NTOHS:
+ *	This symbol, if defined, indicates that the ntohs() routine (and
+ *	friends htonl() htons() ntohl()) are available to do network
+ *	order byte swapping.
+ */
+#define HAS_HTONL		/**/
+#define HAS_HTONS		/**/
+#define HAS_NTOHL		/**/
+#define HAS_NTOHS		/**/
+
+/* HAS_ICONV:
+ *	This symbol, if defined, indicates that the iconv routine is
+ *	available to do character set conversions.
+ */
+#define HAS_ICONV		/**/
+
+/* HAS_INT64_T:
+ *     This symbol will defined if the C compiler supports int64_t.
+ *     Usually the  needs to be included, but sometimes
+ *	 is enough.
+ */
+/*#define     HAS_INT64_T               / **/
+
 /* HAS_ISASCII:
  *	This manifest constant lets the C program know that isascii 
  *	is available.
  */
 #define HAS_ISASCII		/**/
 
-/* HAS_LCHOWN:
- *	This symbol, if defined, indicates that the lchown routine is
- *	available to operate on a symbolic link (instead of following the
- *	link).
+/* HAS_LDBL_DIG:
+ *	This symbol, if defined, indicates that this system's 
+ *	or  defines the symbol LDBL_DIG, which is the number
+ *	of significant digits in a long double precision number. Unlike
+ *	for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined.
  */
-/*#define HAS_LCHOWN		/ **/
+#define HAS_LDBL_DIG 	/* */
+
+/* HAS_LONG_DOUBLE:
+ *	This symbol will be defined if the C compiler supports long
+ *	doubles.
+ */
+/* LONG_DOUBLESIZE:
+ *	This symbol contains the size of a long double, so that the 
+ *	C preprocessor can make decisions based on it.  It is only
+ *	defined if the system supports long doubles.
+ */
+#define HAS_LONG_DOUBLE		/**/
+#ifdef HAS_LONG_DOUBLE
+#define LONG_DOUBLESIZE 8		/**/
+#endif
+
+/* HAS_LONG_LONG:
+ *	This symbol will be defined if the C compiler supports long long.
+ */
+/* LONGLONGSIZE:
+ *	This symbol contains the size of a long long, so that the 
+ *	C preprocessor can make decisions based on it.  It is only
+ *	defined if the system supports long long.
+ */
+#define HAS_LONG_LONG		/**/
+#ifdef HAS_LONG_LONG
+#define LONGLONGSIZE 8		/**/
+#endif
+
+/* HAS_LSEEK_PROTO:
+ *	This symbol, if defined, indicates that the system provides
+ *	a prototype for the lseek() function.  Otherwise, it is up
+ *	to the program to supply one.  A good guess is
+ *		extern off_t lseek(int, off_t, int);
+ */
+#define	HAS_LSEEK_PROTO	/**/
+
+/* HAS_MADVISE:
+ *	This symbol, if defined, indicates that the madvise system call is
+ *	available to map a file into memory.
+ */
+#define HAS_MADVISE		/**/
+
+/* HAS_MEMCHR:
+ *	This symbol, if defined, indicates that the memchr routine is available
+ *	to locate characters within a C string.
+ */
+#define HAS_MEMCHR	/**/
+
+/* HAS_MKDTEMP:
+ *	This symbol, if defined, indicates that the mkdtemp routine is
+ *	available to exclusively create a uniquely named temporary directory.
+ */
+/*#define HAS_MKDTEMP		/ **/
+
+/* HAS_MKSTEMP:
+ *	This symbol, if defined, indicates that the mkstemp routine is
+ *	available to exclusively create and open a uniquely named
+ *	temporary file.
+ */
+#define HAS_MKSTEMP		/**/
+
+/* HAS_MKSTEMPS:
+ *	This symbol, if defined, indicates that the mkstemps routine is
+ *	available to excluslvely create and open a uniquely named
+ *	(with a suffix) temporary file.
+ */
+/*#define HAS_MKSTEMPS		/ **/
+
+/* HAS_MMAP:
+ *	This symbol, if defined, indicates that the mmap system call is
+ *	available to map a file into memory.
+ */
+/* Mmap_t:
+ *	This symbol holds the return type of the mmap() system call
+ *	(and simultaneously the type of the first argument).
+ *	Usually set to 'void *' or 'cadd_t'.
+ */
+#define HAS_MMAP		/**/
+#define Mmap_t void *	/**/
+
+/* HAS_MPROTECT:
+ *	This symbol, if defined, indicates that the mprotect system call is
+ *	available to modify the access protection of a memory mapped file.
+ */
+#define HAS_MPROTECT		/**/
+
+/* HAS_MSG:
+ *	This symbol, if defined, indicates that the entire msg*(2) library is
+ *	supported (IPC mechanism based on message queues).
+ */
+#define HAS_MSG		/**/
+
+/* HAS_OFF64_T:
+ *	This symbol will be defined if the C compiler supports off64_t.
+ */
+/*#define	HAS_OFF64_T    		/ **/
 
 /* HAS_OPEN3:
  *	This manifest constant lets the C program know that the three
@@ -1224,6 +1734,35 @@
  */
 #define HAS_OPEN3		/**/
 
+/* OLD_PTHREAD_CREATE_JOINABLE:
+ *	This symbol, if defined, indicates how to create pthread
+ *	in joinable (aka undetached) state.  NOTE: not defined
+ *	if pthread.h already has defined PTHREAD_CREATE_JOINABLE
+ *	(the new version of the constant).
+ *	If defined, known values are PTHREAD_CREATE_UNDETACHED
+ *	and __UNDETACHED.
+ */
+/*#define OLD_PTHREAD_CREATE_JOINABLE  / **/
+
+/* HAS_PTHREAD_YIELD:
+ *	This symbol, if defined, indicates that the pthread_yield 
+ *	routine is available to yield the execution of the current
+ *	thread.	 sched_yield is preferable to pthread_yield.
+ */
+/* SCHED_YIELD:
+ *	This symbol defines the way to yield the execution of
+ *	the current thread.  Known ways are sched_yield,
+ *	pthread_yield, and pthread_yield with NULL.
+ */
+/* HAS_SCHED_YIELD:
+ *	This symbol, if defined, indicates that the sched_yield
+ *	routine is available to yield the execution of the current
+ *	thread.	 sched_yield is preferable to pthread_yield.
+ */
+/*#define HAS_PTHREAD_YIELD	/ **/
+#define SCHED_YIELD	sched_yield()	/**/
+#define HAS_SCHED_YIELD	/**/
+
 /* HAS_SAFE_BCOPY:
  *	This symbol, if defined, indicates that the bcopy routine is available
  *	to copy potentially overlapping memory blocks. Otherwise you should
@@ -1247,12 +1786,93 @@
  */
 #define HAS_SANE_MEMCMP	/**/
 
+/* HAS_SEM:
+ *	This symbol, if defined, indicates that the entire sem*(2) library is
+ *	supported.
+ */
+#define HAS_SEM		/**/
+
+/* HAS_SETGRENT:
+ *	This symbol, if defined, indicates that the setgrent routine is
+ *	available for initializing sequential access of the group database.
+ */
+#define HAS_SETGRENT		/**/
+
+/* HAS_SETGROUPS:
+ *	This symbol, if defined, indicates that the setgroups() routine is
+ *	available to set the list of process groups.  If unavailable, multiple
+ *	groups are probably not supported.
+ */
+#define HAS_SETGROUPS		/**/
+
+/* HAS_SETHOSTENT:
+ *	This symbol, if defined, indicates that the sethostent() routine is
+ *	available.
+ */
+#define HAS_SETHOSTENT		/**/
+
+/* HAS_SETNETENT:
+ *	This symbol, if defined, indicates that the setnetent() routine is
+ *	available.
+ */
+#define HAS_SETNETENT		/**/
+
+/* HAS_SETPROTOENT:
+ *	This symbol, if defined, indicates that the setprotoent() routine is
+ *	available.
+ */
+#define HAS_SETPROTOENT		/**/
+
+/* HAS_SETPWENT:
+ *	This symbol, if defined, indicates that the setpwent routine is
+ *	available for initializing sequential access of the passwd database.
+ */
+#define HAS_SETPWENT		/**/
+
+/* HAS_SETSERVENT:
+ *	This symbol, if defined, indicates that the setservent() routine is
+ *	available.
+ */
+#define HAS_SETSERVENT		/**/
+
+/* HAS_SETSPENT:
+ *	This symbol, if defined, indicates that the setspent system call is
+ *	available to initialize the scan of SysV shadow password entries.
+ */
+/*#define HAS_SETSPENT		/ **/
+
+/* HAS_SETVBUF:
+ *	This symbol, if defined, indicates that the setvbuf routine is
+ *	available to change buffering on an open stdio stream.
+ *	to a line-buffered mode.
+ */
+#define HAS_SETVBUF		/**/
+
+/* USE_SFIO:
+ *	This symbol, if defined, indicates that sfio should
+ *	be used.
+ */
+/*#define	USE_SFIO		/ **/
+
+/* HAS_SHM:
+ *	This symbol, if defined, indicates that the entire shm*(2) library is
+ *	supported.
+ */
+#define HAS_SHM		/**/
+
 /* HAS_SIGACTION:
  *	This symbol, if defined, indicates that Vr4's sigaction() routine
  *	is available.
  */
 #define HAS_SIGACTION	/**/
 
+/* HAS_SIGSETJMP:
+ *	This variable indicates to the C program that the sigsetjmp()
+ *	routine is available to save the calling process's registers
+ *	and stack environment for later use by siglongjmp(), and
+ *	to optionally save the process's signal mask.  See
+ *	Sigjmp_buf, Sigsetjmp, and Siglongjmp.
+ */
 /* Sigjmp_buf:
  *	This is the buffer type to be used with Sigsetjmp and Siglongjmp.
  */
@@ -1277,6 +1897,90 @@
 #define Siglongjmp(buf,retval) longjmp((buf),(retval))
 #endif
 
+/* HAS_SOCKET:
+ *	This symbol, if defined, indicates that the BSD socket interface is
+ *	supported.
+ */
+/* HAS_SOCKETPAIR:
+ *	This symbol, if defined, indicates that the BSD socketpair() call is
+ *	supported.
+ */
+/* HAS_MSG_CTRUNC:
+ *	This symbol, if defined, indicates that the MSG_CTRUNC is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_DONTROUTE:
+ *	This symbol, if defined, indicates that the MSG_DONTROUTE is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_OOB:
+ *	This symbol, if defined, indicates that the MSG_OOB is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_PEEK:
+ *	This symbol, if defined, indicates that the MSG_PEEK is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_PROXY:
+ *	This symbol, if defined, indicates that the MSG_PROXY is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_SCM_RIGHTS:
+ *	This symbol, if defined, indicates that the SCM_RIGHTS is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+#define	HAS_SOCKET		/**/
+#define	HAS_SOCKETPAIR	/**/
+#define	HAS_MSG_CTRUNC	/**/
+#define	HAS_MSG_DONTROUTE	/**/
+#define	HAS_MSG_OOB	/**/
+#define	HAS_MSG_PEEK	/**/
+/*#define	HAS_MSG_PROXY	/ **/
+#define	HAS_SCM_RIGHTS	/**/
+
+/* HAS_SQRTL:
+ *	This symbol, if defined, indicates that the sqrtl routine is
+ *	available to do long double square roots.
+ */
+#define HAS_SQRTL		/**/
+
+/* USE_STAT_BLOCKS:
+ *	This symbol is defined if this system has a stat structure declaring
+ *	st_blksize and st_blocks.
+ */
+#ifndef USE_STAT_BLOCKS
+#define USE_STAT_BLOCKS 	/**/
+#endif
+
+/* HAS_STRUCT_STATFS_F_FLAGS:
+ *	This symbol, if defined, indicates that the struct statfs
+ *	does have the f_flags member containing the mount flags of
+ *	the filesystem containing the file.
+ *	This kind of struct statfs is coming from  (BSD 4.3),
+ *	not from  (SYSV).  Older BSDs (like Ultrix) do not
+ *	have statfs() and struct statfs, they have ustat() and getmnt()
+ *	with struct ustat and struct fs_data.
+ */
+#define HAS_STRUCT_STATFS_F_FLAGS		/**/
+
+/* HAS_STRUCT_STATFS:
+ *	This symbol, if defined, indicates that the struct statfs
+ *	to do statfs() is supported.
+ */
+#define HAS_STRUCT_STATFS	/**/
+
+/* HAS_FSTATVFS:
+ *	This symbol, if defined, indicates that the fstatvfs routine is
+ *	available to stat filesystems by file descriptors.
+ */
+#define HAS_FSTATVFS		/**/
+
 /* USE_STDIO_PTR:
  *	This symbol is defined if the _ptr and _cnt fields (or similar)
  *	of the stdio FILE structure can be used to access the stdio buffer
@@ -1304,10 +2008,10 @@
  */
 #define USE_STDIO_PTR 	/**/
 #ifdef USE_STDIO_PTR
-#define FILE_ptr(fp)	((fp)->_IO_read_ptr)
+#define FILE_ptr(fp)	((fp)->_ptr)
 #define STDIO_PTR_LVALUE 		/**/
-#define FILE_cnt(fp)	((fp)->_IO_read_end - (fp)->_IO_read_ptr)
-/*#define STDIO_CNT_LVALUE 		/ **/
+#define FILE_cnt(fp)	((fp)->_cnt)
+#define STDIO_CNT_LVALUE 		/**/
 #endif
 
 /* USE_STDIO_BASE:
@@ -1332,318 +2036,74 @@
  */
 #define USE_STDIO_BASE 	/**/
 #ifdef USE_STDIO_BASE
-#define FILE_base(fp)	((fp)->_IO_read_base)
-#define FILE_bufsiz(fp)	((fp)->_IO_read_end - (fp)->_IO_read_base)
+#define FILE_base(fp)	((fp)->_base)
+#define FILE_bufsiz(fp)	((fp)->_cnt + (fp)->_ptr - (fp)->_base)
 #endif
 
-/* HAS_VPRINTF:
- *	This symbol, if defined, indicates that the vprintf routine is available
- *	to printf with a pointer to an argument list.  If unavailable, you
- *	may need to write your own, probably in terms of _doprnt().
+/* HAS_STRERROR:
+ *	This symbol, if defined, indicates that the strerror routine is
+ *	available to translate error numbers to strings. See the writeup
+ *	of Strerror() in this file before you try to define your own.
  */
-/* USE_CHAR_VSPRINTF:
- *	This symbol is defined if this system has vsprintf() returning type
- *	(char*).  The trend seems to be to declare it as "int vsprintf()".  It
- *	is up to the package author to declare vsprintf correctly based on the
- *	symbol.
+/* HAS_SYS_ERRLIST:
+ *	This symbol, if defined, indicates that the sys_errlist array is
+ *	available to translate error numbers to strings. The extern int
+ *	sys_nerr gives the size of that table.
  */
-#define HAS_VPRINTF	/**/
-/*#define USE_CHAR_VSPRINTF 	/ **/
+/* Strerror:
+ *	This preprocessor symbol is defined as a macro if strerror() is
+ *	not available to translate error numbers to strings but sys_errlist[]
+ *	array is there.
+ */
+#define HAS_STRERROR		/**/
+#define HAS_SYS_ERRLIST	/**/
+#define Strerror(e) strerror(e)
 
-/* DOUBLESIZE:
- *	This symbol contains the size of a double, so that the C preprocessor
- *	can make decisions based on it.
+/* HAS_STRTOLD:
+ *	This symbol, if defined, indicates that the strtold routine is
+ *	available to convert strings to long doubles.
  */
-#define DOUBLESIZE 8		/**/
+/*#define HAS_STRTOLD		/ **/
 
-/* I_TIME:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
+/* HAS_STRTOLL:
+ *	This symbol, if defined, indicates that the strtoll routine is
+ *	available to convert strings to long longs.
  */
-/* I_SYS_TIME:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
- */
-/* I_SYS_TIME_KERNEL:
- *	This symbol, if defined, indicates to the C program that it should
- *	include  with KERNEL defined.
- */
-/*#define I_TIME		/ **/
-#define I_SYS_TIME		/**/
-/*#define I_SYS_TIME_KERNEL		/ **/
+/*#define HAS_STRTOLL		/ **/
 
-/* INTSIZE:
- *	This symbol contains the value of sizeof(int) so that the C
- *	preprocessor can make decisions based on it.
+/* HAS_STRTOULL:
+ *	This symbol, if defined, indicates that the strtoull routine is
+ *	available to convert strings to unsigned long longs.
  */
-/* LONGSIZE:
- *	This symbol contains the value of sizeof(long) so that the C
- *	preprocessor can make decisions based on it.
- */
-/* SHORTSIZE:
- *	This symbol contains the value of sizeof(short) so that the C
- *	preprocessor can make decisions based on it.
- */
-#define INTSIZE 4		/**/
-#define LONGSIZE 4		/**/
-#define SHORTSIZE 2		/**/
+/*#define HAS_STRTOULL		/ **/
 
-/* VAL_O_NONBLOCK:
- *	This symbol is to be used during open() or fcntl(F_SETFL) to turn on
- *	non-blocking I/O for the file descriptor. Note that there is no way
- *	back, i.e. you cannot turn it blocking again this way. If you wish to
- *	alternatively switch between blocking and non-blocking, use the
- *	ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
+/* HAS_STRTOUQ:
+ *	This symbol, if defined, indicates that the strtouq routine is
+ *	available to convert strings to unsigned long longs (quads).
  */
-/* VAL_EAGAIN:
- *	This symbol holds the errno error code set by read() when no data was
- *	present on the non-blocking file descriptor.
- */
-/* RD_NODATA:
- *	This symbol holds the return code from read() when no data is present
- *	on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
- *	not defined, then you can't distinguish between no data and EOF by
- *	issuing a read(). You'll have to find another way to tell for sure!
- */
-/* EOF_NONBLOCK:
- *	This symbol, if defined, indicates to the C program that a read() on
- *	a non-blocking file descriptor will return 0 on EOF, and not the value
- *	held in RD_NODATA (-1 usually, in that case!).
- */
-#define VAL_O_NONBLOCK O_NONBLOCK
-#define VAL_EAGAIN EAGAIN
-#define RD_NODATA -1
-#define EOF_NONBLOCK
+/*#define HAS_STRTOUQ		/ **/
 
-/* PTRSIZE:
- *	This symbol contains the size of a pointer, so that the C preprocessor
- *	can make decisions based on it.  It will be sizeof(void *) if
- *	the compiler supports (void *); otherwise it will be
- *	sizeof(char *).
+/* HAS_TELLDIR_PROTO:
+ *	This symbol, if defined, indicates that the system provides
+ *	a prototype for the telldir() function.  Otherwise, it is up
+ *	to the program to supply one.  A good guess is
+ *		extern long telldir _((DIR*));
  */
-#define PTRSIZE 4		/**/
+#define	HAS_TELLDIR_PROTO	/**/
 
-/* RANDBITS:
- *	This symbol contains the number of bits of random number the rand()
- *	function produces.  Usual values are 15, 16, and 31.
+/* Time_t:
+ *	This symbol holds the type returned by time(). It can be long,
+ *	or time_t on BSD sites (in which case  should be
+ *	included).
  */
-#define RANDBITS 31		/**/
+#define Time_t time_t		/* Time type */
 
-/* SSize_t:
- *	This symbol holds the type used by functions that return
- *	a count of bytes or an error condition.  It must be a signed type.
- *	It is usually ssize_t, but may be long or int, etc.
- *	It may be necessary to include  or 
- *	to get any typedef'ed information.
- *	We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
+/* HAS_TIMES:
+ *	This symbol, if defined, indicates that the times() routine exists.
+ *	Note that this became obsolete on some systems (SUNOS), which now
+ * use getrusage(). It may be necessary to include .
  */
-#define SSize_t ssize_t	 /* signed count of bytes */
-
-/* OSNAME:
- *	This symbol contains the name of the operating system, as determined
- *	by Configure.  You shouldn't rely on it too much; the specific
- *	feature tests from Configure are generally more reliable.
- */
-#define OSNAME "linux"		/**/
-
-/* CAT2:
- *	This macro catenates 2 tokens together.
- */
-/* STRINGIFY:
- *	This macro surrounds its token with double quotes.
- */
-#if 42 == 1
-#define CAT2(a,b)a/**/b
-#define STRINGIFY(a)"a"
-		/* If you can get stringification with catify, tell me how! */
-#endif
-#if 42 == 42
-#define CAT2(a,b)a ## b
-#define StGiFy(a)# a
-#define STRINGIFY(a)StGiFy(a)
-#endif
-#if 42 != 1 && 42 != 42
-#include "Bletch: How does this C preprocessor catenate tokens?"
-#endif
-
-/* CSH:
- *	This symbol, if defined, contains the full pathname of csh.
- */
-#define HAS_CSH		/**/
-#ifdef HAS_CSH
-#define CSH "/bin/csh"	/**/
-#endif
-
-/* HAS_ENDHOSTENT:
- *	This symbol, if defined, indicates that the endhostent() routine is
- *	available to close whatever was being used for host queries.
- */
-#define HAS_ENDHOSTENT		/**/
-
-/* HAS_ENDNETENT:
- *	This symbol, if defined, indicates that the endnetent() routine is
- *	available to close whatever was being used for network queries.
- */
-#define HAS_ENDNETENT		/**/
-
-/* HAS_ENDPROTOENT:
- *	This symbol, if defined, indicates that the endprotoent() routine is
- *	available to close whatever was being used for protocol queries.
- */
-#define HAS_ENDPROTOENT		/**/
-
-/* HAS_ENDSERVENT:
- *	This symbol, if defined, indicates that the endservent() routine is
- *	available to close whatever was being used for service queries.
- */
-#define HAS_ENDSERVENT		/**/
-
-/* HAS_GETHOSTBYADDR:
- *	This symbol, if defined, indicates that the gethostbyaddr() routine is
- *	available to look up hosts by their IP addresses.
- */
-#define HAS_GETHOSTBYADDR		/**/
-
-/* HAS_GETHOSTBYNAME:
- *	This symbol, if defined, indicates that the gethostbyname() routine is
- *	available to look up host names in some data base or other.
- */
-#define HAS_GETHOSTBYNAME		/**/
-
-/* HAS_GETHOSTENT:
- *	This symbol, if defined, indicates that the gethostent() routine is
- *	available to look up host names in some data base or another.
- */
-#define HAS_GETHOSTENT		/**/
-
-/* HAS_GETNETBYADDR:
- *	This symbol, if defined, indicates that the getnetbyaddr() routine is
- *	available to look up networks by their IP addresses.
- */
-#define HAS_GETNETBYADDR		/**/
-
-/* HAS_GETNETBYNAME:
- *	This symbol, if defined, indicates that the getnetbyname() routine is
- *	available to look up networks by their names.
- */
-#define HAS_GETNETBYNAME		/**/
-
-/* HAS_GETNETENT:
- *	This symbol, if defined, indicates that the getnetent() routine is
- *	available to look up network names in some data base or another.
- */
-#define HAS_GETNETENT		/**/
-
-/* HAS_GETPROTOENT:
- *	This symbol, if defined, indicates that the getprotoent() routine is
- *	available to look up protocols in some data base or another.
- */
-#define HAS_GETPROTOENT		/**/
-
-/* HAS_GETPROTOBYNAME:
- *	This symbol, if defined, indicates that the getprotobyname()
- *	routine is available to look up protocols by their name.
- */
-/* HAS_GETPROTOBYNUMBER:
- *	This symbol, if defined, indicates that the getprotobynumber()
- *	routine is available to look up protocols by their number.
- */
-#define HAS_GETPROTOBYNAME		/**/
-#define HAS_GETPROTOBYNUMBER		/**/
-
-/* HAS_GETSERVENT:
- *	This symbol, if defined, indicates that the getservent() routine is
- *	available to look up network services in some data base or another.
- */
-#define HAS_GETSERVENT		/**/
-
-/* HAS_GETSERVBYNAME:
- *	This symbol, if defined, indicates that the getservbyname()
- *	routine is available to look up services by their name.
- */
-/* HAS_GETSERVBYPORT:
- *	This symbol, if defined, indicates that the getservbyport()
- *	routine is available to look up services by their port.
- */
-#define HAS_GETSERVBYNAME		/**/
-#define HAS_GETSERVBYPORT		/**/
-
-/* HAS_LONG_DOUBLE:
- *	This symbol will be defined if the C compiler supports long
- *	doubles.
- */
-/* LONG_DOUBLESIZE:
- *	This symbol contains the size of a long double, so that the 
- *	C preprocessor can make decisions based on it.  It is only
- *	defined if the system supports long doubles.
- */
-#define HAS_LONG_DOUBLE		/**/
-#ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE 12		/**/
-#endif
-
-/* HAS_LONG_LONG:
- *	This symbol will be defined if the C compiler supports
- *	long long.
- */
-/* LONGLONGSIZE:
- *	This symbol contains the size of a long long, so that the 
- *	C preprocessor can make decisions based on it.  It is only
- *	defined if the system supports long long.
- */
-#define HAS_LONG_LONG		/**/
-#ifdef HAS_LONG_LONG
-#define LONGLONGSIZE 8		/**/
-#endif
-
-/* HAS_SETGROUPS:
- *	This symbol, if defined, indicates that the setgroups() routine is
- *	available to set the list of process groups.  If unavailable, multiple
- *	groups are probably not supported.
- */
-#define HAS_SETGROUPS		/**/
-
-/* HAS_SETHOSTENT:
- *	This symbol, if defined, indicates that the sethostent() routine is
- *	available.
- */
-#define HAS_SETHOSTENT		/**/
-
-/* HAS_SETNETENT:
- *	This symbol, if defined, indicates that the setnetent() routine is
- *	available.
- */
-#define HAS_SETNETENT		/**/
-
-/* HAS_SETPROTOENT:
- *	This symbol, if defined, indicates that the setprotoent() routine is
- *	available.
- */
-#define HAS_SETPROTOENT		/**/
-
-/* HAS_SETSERVENT:
- *	This symbol, if defined, indicates that the setservent() routine is
- *	available.
- */
-#define HAS_SETSERVENT		/**/
-
-/* HAS_SETVBUF:
- *	This symbol, if defined, indicates that the setvbuf routine is
- *	available to change buffering on an open stdio stream.
- *	to a line-buffered mode.
- */
-#define HAS_SETVBUF		/**/
-
-/* HAS_SOCKET:
- *	This symbol, if defined, indicates that the BSD socket interface is
- *	supported.
- */
-/* HAS_SOCKETPAIR:
- *	This symbol, if defined, indicates that the BSD socketpair() call is
- *	supported.
- */
-#define HAS_SOCKET		/**/
-#define HAS_SOCKETPAIR	/**/
+#define HAS_TIMES		/**/
 
 /* HAS_UNION_SEMUN:
  *	This symbol, if defined, indicates that the union semun is
@@ -1663,10 +2123,21 @@
  *	This symbol, if defined, indicates that struct semid_ds * is
  *	used for semctl IPC_STAT.
  */
-#define HAS_UNION_SEMUN	/**/
+/*#define HAS_UNION_SEMUN	/ **/
 #define USE_SEMCTL_SEMUN	/**/
 #define USE_SEMCTL_SEMID_DS	/**/
 
+/* HAS_USTAT:
+ *	This symbol, if defined, indicates that the ustat system call is
+ *	available to query file system statistics by dev_t.
+ */
+#define HAS_USTAT		/**/
+
+/* HAS_VFORK:
+ *	This symbol, if defined, indicates that vfork() exists.
+ */
+/*#define HAS_VFORK	/ **/
+
 /* Signal_t:
  *	This symbol's value is either "void" or "int", corresponding to the
  *	appropriate return type of a signal handler.  Thus, you can declare
@@ -1675,25 +2146,175 @@
  */
 #define Signal_t void	/* Signal handler's return type */
 
+/* HAS_VPRINTF:
+ *	This symbol, if defined, indicates that the vprintf routine is available
+ *	to printf with a pointer to an argument list.  If unavailable, you
+ *	may need to write your own, probably in terms of _doprnt().
+ */
+/* USE_CHAR_VSPRINTF:
+ *	This symbol is defined if this system has vsprintf() returning type
+ *	(char*).  The trend seems to be to declare it as "int vsprintf()".  It
+ *	is up to the package author to declare vsprintf correctly based on the
+ *	symbol.
+ */
+#define HAS_VPRINTF	/**/
+/*#define USE_CHAR_VSPRINTF 	/ **/
+
+/* USE_DYNAMIC_LOADING:
+ *	This symbol, if defined, indicates that dynamic loading of
+ *	some sort is available.
+ */
+#define USE_DYNAMIC_LOADING		/**/
+
+/* DOUBLESIZE:
+ *	This symbol contains the size of a double, so that the C preprocessor
+ *	can make decisions based on it.
+ */
+#define DOUBLESIZE 8		/**/
+
+/* EBCDIC:
+ *     This symbol, if defined, indicates that this system uses
+ *	EBCDIC encoding.
+ */
+/*#define	EBCDIC 		/ **/
+
+/* FFLUSH_NULL:
+ *	This symbol, if defined, tells that fflush(NULL) does flush
+ *	all pending stdio output.
+ */
+/* FFLUSH_ALL:
+ *	This symbol, if defined, tells that to flush
+ *	all pending stdio output one must loop through all
+ *	the stdio file handles stored in an array and fflush them.
+ *	Note that if fflushNULL is defined, fflushall will not
+ *	even be probed for and will be left undefined.
+ */
+#define	FFLUSH_NULL 		/**/
+/*#define	FFLUSH_ALL 		/ **/
+
+/* Fpos_t:
+ *	This symbol holds the type used to declare file positions in libc.
+ *	It can be fpos_t, long, uint, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Fpos_t fpos_t		/* File position type */
+
+/* Gid_t_f:
+ *	This symbol defines the format string used for printing a Gid_t.
+ */
+#define	Gid_t_f		"u"		/**/
+
+/* Gid_t_sign:
+ *	This symbol holds the signedess of a Gid_t.
+ *	1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign	1		/* GID sign */
+
+/* Gid_t_size:
+ *	This symbol holds the size of a Gid_t in bytes.
+ */
+#define Gid_t_size 4		/* GID size */
+
+/* Gid_t:
+ *	This symbol holds the return type of getgid() and the type of
+ *	argument to setrgid() and related functions.  Typically,
+ *	it is the type of group ids in the kernel. It can be int, ushort,
+ *	gid_t, etc... It may be necessary to include  to get
+ *	any typedef'ed information.
+ */
+#define Gid_t gid_t		/* Type for getgid(), etc... */
+
 /* Groups_t:
  *	This symbol holds the type used for the second argument to
- *	getgroups() and setgropus().  Usually, this is the same as
+ *	getgroups() and setgroups().  Usually, this is the same as
  *	gidtype (gid_t) , but sometimes it isn't.
- *	It can be int, ushort, uid_t, etc... 
+ *	It can be int, ushort, gid_t, etc... 
  *	It may be necessary to include  to get any 
  *	typedef'ed information.  This is only required if you have
- *	getgroups() or setgropus()..
+ *	getgroups() or setgroups()..
  */
 #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
 #define Groups_t gid_t	/* Type for 2nd arg to [sg]etgroups() */
 #endif
 
+/* DB_Prefix_t:
+ *	This symbol contains the type of the prefix structure element
+ *	in the  header file.  In older versions of DB, it was
+ *	int, while in newer ones it is u_int32_t.
+ */
+/* DB_Hash_t:
+ *	This symbol contains the type of the prefix structure element
+ *	in the  header file.  In older versions of DB, it was
+ *	int, while in newer ones it is size_t.
+ */
+#define DB_Hash_t	u_int32_t		/**/
+#define DB_Prefix_t	size_t  	/**/
+
+/* I_GRP:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include .
+ */
+/* GRPASSWD:
+ *	This symbol, if defined, indicates to the C program that struct group
+ *	in  contains gr_passwd.
+ */
+#define I_GRP		/**/
+#define GRPASSWD	/**/
+
+/* I_ICONV:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_ICONV		/**/
+
+/* I_IEEEFP:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+/*#define	I_IEEEFP		/ **/
+
+/* I_INTTYPES:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+/*#define   I_INTTYPES                / **/
+
+/* I_MACH_CTHREADS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+/*#define   I_MACH_CTHREADS	/ **/
+
+/* I_MNTENT:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+/*#define	I_MNTENT		/ **/
+
 /* I_NETDB:
  *	This symbol, if defined, indicates that  exists and
  *	should be included.
  */
 #define I_NETDB		/**/
 
+/* I_NETINET_TCP:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#define   I_NETINET_TCP                /**/
+
+/* I_POLL:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_POLL		/**/
+
+/* I_PTHREAD:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#define   I_PTHREAD	/**/
+
 /* I_PWD:
  *	This symbol, if defined, indicates to the C program that it should
  *	include .
@@ -1730,30 +2351,143 @@
  *	This symbol, if defined, indicates to the C program that struct passwd
  *	contains pw_passwd.
  */
-/* HAS_SETPWENT:
- *	This symbol, if defined, indicates that the getpwrent routine is
- *	available for initializing sequential access of the passwd database.
- */
-/* HAS_GETPWENT:
- *	This symbol, if defined, indicates that the getpwent routine is
- *	available for sequential access of the password database.
- */
-/* HAS_ENDPWENT:
- *	This symbol, if defined, indicates that the getpwent routine is
- *	available for finalizing sequential access of the passwd database.
- */
 #define I_PWD		/**/
-/*#define PWQUOTA	/ **/
+#define PWQUOTA	/**/
 /*#define PWAGE	/ **/
 /*#define PWCHANGE	/ **/
 /*#define PWCLASS	/ **/
 /*#define PWEXPIRE	/ **/
-/*#define PWCOMMENT	/ **/
+#define PWCOMMENT	/**/
 #define PWGECOS	/**/
 #define PWPASSWD	/**/
-#define HAS_SETPWENT	/**/
-#define HAS_GETPWENT	/**/
-#define HAS_ENDPWENT	/**/
+
+/* I_SHADOW:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+/*#define	I_SHADOW		/ **/
+
+/* I_SOCKS:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+/*#define	I_SOCKS		/ **/
+
+/* I_SUNMATH:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+/*#define	I_SUNMATH		/ **/
+
+/* I_SYSLOG:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_SYSLOG		/**/
+
+/* I_SYSMODE:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_SYSMODE		/**/
+
+/* I_SYS_MOUNT:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_SYS_MOUNT		/**/
+
+/* I_SYS_STATFS:
+ *	This symbol, if defined, indicates that  exists.
+ */
+/*#define	I_SYS_STATFS		/ **/
+
+/* I_SYS_STATVFS:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_SYS_STATVFS		/**/
+
+/* I_SYSUIO:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_SYSUIO		/**/
+
+/* I_SYSUTSNAME:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_SYSUTSNAME		/**/
+
+/* I_SYS_VFS:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+/*#define	I_SYS_VFS		/ **/
+
+/* I_TIME:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include .
+ */
+/* I_SYS_TIME:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include .
+ */
+/* I_SYS_TIME_KERNEL:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include  with KERNEL defined.
+ */
+/*#define I_TIME		/ **/
+#define I_SYS_TIME		/**/
+/*#define I_SYS_TIME_KERNEL		/ **/
+
+/* I_USTAT:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#define	I_USTAT		/**/
+
+/* PERL_INC_VERSION_LIST:
+ *	This variable specifies the list of subdirectories in over
+ *	which perl.c:incpush() and lib/lib.pm will automatically
+ *	search when adding directories to @INC, in a format suitable
+ *	for a C initialization string.  See the inc_version_list entry
+ *	in Porting/Glossary for more details.
+ */
+#define PERL_INC_VERSION_LIST 0		/**/
+
+/* INSTALL_USR_BIN_PERL:
+ *	This symbol, if defined, indicates that Perl is to be installed
+ * 	also as /usr/bin/perl.
+ */
+#define INSTALL_USR_BIN_PERL	/**/
+
+/* PERL_PRIfldbl:
+ *	This symbol, if defined, contains the string used by stdio to
+ *	format long doubles (format 'f') for output.
+ */
+/* PERL_PRIgldbl:
+ *	This symbol, if defined, contains the string used by stdio to
+ *	format long doubles (format 'g') for output.
+ */
+#define PERL_PRIfldbl	"f"	/**/
+#define PERL_PRIgldbl	"g"	/**/
+
+/* Off_t:
+ *	This symbol holds the type used to declare offsets in the kernel.
+ *	It can be int, long, off_t, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+/* LSEEKSIZE:
+ *	This symbol holds the number of bytes used by the Off_t.
+ */
+/* Off_t_size:
+ *	This symbol holds the number of bytes used by the Off_t.
+ */
+#define Off_t off_t		/*  type */
+#define LSEEKSIZE 8		/*  size */
+#define Off_t_size 8	/*  size */
 
 /* Free_t:
  *	This variable contains the return type of free().  It is usually
@@ -1770,6 +2504,247 @@
  */
 /*#define MYMALLOC			/ **/
 
+/* Mode_t:
+ *	This symbol holds the type used to declare file modes 
+ *	for systems calls.  It is usually mode_t, but may be
+ *	int or unsigned short.  It may be necessary to include 
+ *	to get any typedef'ed information.
+ */
+#define Mode_t mode_t	 /* file mode parameter for system calls */
+
+/* VAL_O_NONBLOCK:
+ *	This symbol is to be used during open() or fcntl(F_SETFL) to turn on
+ *	non-blocking I/O for the file descriptor. Note that there is no way
+ *	back, i.e. you cannot turn it blocking again this way. If you wish to
+ *	alternatively switch between blocking and non-blocking, use the
+ *	ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
+ */
+/* VAL_EAGAIN:
+ *	This symbol holds the errno error code set by read() when no data was
+ *	present on the non-blocking file descriptor.
+ */
+/* RD_NODATA:
+ *	This symbol holds the return code from read() when no data is present
+ *	on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
+ *	not defined, then you can't distinguish between no data and EOF by
+ *	issuing a read(). You'll have to find another way to tell for sure!
+ */
+/* EOF_NONBLOCK:
+ *	This symbol, if defined, indicates to the C program that a read() on
+ *	a non-blocking file descriptor will return 0 on EOF, and not the value
+ *	held in RD_NODATA (-1 usually, in that case!).
+ */
+#define VAL_O_NONBLOCK O_NONBLOCK
+#define VAL_EAGAIN EAGAIN
+#define RD_NODATA -1
+#define EOF_NONBLOCK
+
+/* Netdb_host_t:
+ *	This symbol holds the type used for the 1st argument
+ *	to gethostbyaddr().
+ */
+/* Netdb_hlen_t:
+ *	This symbol holds the type used for the 2nd argument
+ *	to gethostbyaddr().
+ */
+/* Netdb_name_t:
+ *	This symbol holds the type used for the argument to
+ *	gethostbyname().
+ */
+/* Netdb_net_t:
+ *	This symbol holds the type used for the 1st argument to
+ *	getnetbyaddr().
+ */
+#define Netdb_host_t		const char * /**/
+#define Netdb_hlen_t		int /**/
+#define Netdb_name_t		const char * /**/
+#define Netdb_net_t		int /**/
+
+/* IVTYPE:
+ *	This symbol defines the C type used for Perl's IV.
+ */
+/* UVTYPE:
+ *	This symbol defines the C type used for Perl's UV.
+ */
+/* I8TYPE:
+ *	This symbol defines the C type used for Perl's I8.
+ */
+/* U8TYPE:
+ *	This symbol defines the C type used for Perl's U8.
+ */
+/* I16TYPE:
+ *	This symbol defines the C type used for Perl's I16.
+ */
+/* U16TYPE:
+ *	This symbol defines the C type used for Perl's U16.
+ */
+/* I32TYPE:
+ *	This symbol defines the C type used for Perl's I32.
+ */
+/* U32TYPE:
+ *	This symbol defines the C type used for Perl's U32.
+ */
+/* I64TYPE:
+ *	This symbol defines the C type used for Perl's I64.
+ */
+/* U64TYPE:
+ *	This symbol defines the C type used for Perl's U64.
+ */
+/* NVTYPE:
+ *	This symbol defines the C type used for Perl's NV.
+ */
+/* IVSIZE:
+ *	This symbol contains the sizeof(IV).
+ */
+/* UVSIZE:
+ *	This symbol contains the sizeof(UV).
+ */
+/* I8SIZE:
+ *	This symbol contains the sizeof(I8).
+ */
+/* U8SIZE:
+ *	This symbol contains the sizeof(U8).
+ */
+/* I16SIZE:
+ *	This symbol contains the sizeof(I16).
+ */
+/* U16SIZE:
+ *	This symbol contains the sizeof(U16).
+ */
+/* I32SIZE:
+ *	This symbol contains the sizeof(I32).
+ */
+/* U32SIZE:
+ *	This symbol contains the sizeof(U32).
+ */
+/* I64SIZE:
+ *	This symbol contains the sizeof(I64).
+ */
+/* U64SIZE:
+ *	This symbol contains the sizeof(U64).
+ */
+/* NV_PRESERVES_UV:
+ *	This symbol, if defined, indicates that a variable of type NVTYPE
+ *	can preserve all the bit of a variable of type UVSIZE.
+ */
+#define	IVTYPE		long		/**/
+#define	UVTYPE		unsigned long		/**/
+#define	I8TYPE		char		/**/
+#define	U8TYPE		unsigned char		/**/
+#define	I16TYPE		short	/**/
+#define	U16TYPE		unsigned short	/**/
+#define	I32TYPE		int	/**/
+#define	U32TYPE		unsigned int	/**/
+#ifdef HAS_QUAD
+#define	I64TYPE		long	/**/
+#define	U64TYPE		unsigned long	/**/
+#endif
+#define	NVTYPE		double		/**/
+#define	IVSIZE		8		/**/
+#define	UVSIZE		8		/**/
+#define	I8SIZE		1		/**/
+#define	U8SIZE		1		/**/
+#define	I16SIZE		2	/**/
+#define	U16SIZE		2	/**/
+#define	I32SIZE		4	/**/
+#define	U32SIZE		4	/**/
+#ifdef HAS_QUAD
+#define	I64SIZE		8	/**/
+#define	U64SIZE		8	/**/
+#endif
+#undef	NV_PRESERVES_UV
+
+/* IVdf:
+ *	This symbol defines the format string used for printing a Perl IV
+ *	as a signed decimal integer.
+ */
+/* UVuf:
+ *	This symbol defines the format string used for printing a Perl UV
+ *	as an unsigned decimal integer.
+ */
+/* UVof:
+ *	This symbol defines the format string used for printing a Perl UV
+ *	as an unsigned octal integer.
+ */
+/* UVxf:
+ *	This symbol defines the format string used for printing a Perl UV
+ *	as an unsigned hexadecimal integer.
+ */
+#define	IVdf		"ld"		/**/
+#define	UVuf		"lu"		/**/
+#define	UVof		"lo"		/**/
+#define	UVxf		"lx"		/**/
+
+/* Pid_t:
+ *	This symbol holds the type used to declare process ids in the kernel.
+ *	It can be int, uint, pid_t, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Pid_t pid_t		/* PID type */
+
+/* PRIVLIB:
+ *	This symbol contains the name of the private library for this package.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.  The program
+ *	should be prepared to do ~ expansion.
+ */
+/* PRIVLIB_EXP:
+ *	This symbol contains the ~name expanded version of PRIVLIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#define PRIVLIB "/opt/perl/lib/5.6.0"		/**/
+#define PRIVLIB_EXP "/opt/perl/lib/5.6.0"		/**/
+
+/* PTRSIZE:
+ *	This symbol contains the size of a pointer, so that the C preprocessor
+ *	can make decisions based on it.  It will be sizeof(void *) if
+ *	the compiler supports (void *); otherwise it will be
+ *	sizeof(char *).
+ */
+#define PTRSIZE 8		/**/
+
+/* Drand01:
+ *	This macro is to be used to generate uniformly distributed
+ *	random numbers over the range [0., 1.[.  You may have to supply
+ *	an 'extern double drand48();' in your program since SunOS 4.1.3
+ *	doesn't provide you with anything relevant in it's headers.
+ *	See HAS_DRAND48_PROTO.
+ */
+/* Rand_seed_t:
+ *	This symbol defines the type of the argument of the
+ *	random seed function.
+ */
+/* seedDrand01:
+ *	This symbol defines the macro to be used in seeding the
+ *	random number generator (see Drand01).
+ */
+/* RANDBITS:
+ *	This symbol indicates how many bits are produced by the
+ *	function used to generate normalized random numbers.
+ *	Values include 15, 16, 31, and 48.
+ */
+#define Drand01()		drand48()		/**/
+#define Rand_seed_t		long		/**/
+#define seedDrand01(x)	srand48((Rand_seed_t)x)	/**/
+#define RANDBITS		48		/**/
+
+/* SELECT_MIN_BITS:
+ *	This symbol holds the minimum number of bits operated by select.
+ *	That is, if you do select(n, ...), how many bits at least will be
+ *	cleared in the masks if some activity is detected.  Usually this
+ *	is either n or 32*ceil(n/32), especially many little-endians do
+ *	the latter.  This is only useful if you have select(), naturally.
+ */
+#define SELECT_MIN_BITS 	32	/**/
+
+/* Select_fd_set_t:
+ *	This symbol holds the type used for the 2nd, 3rd, and 4th
+ *	arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
+ *	is defined, and 'int *' otherwise.  This is only useful if you 
+ *	have select(), of course.
+ */
+#define Select_fd_set_t 	fd_set *	/**/
+
 /* SIG_NAME:
  *	This symbol contains a list of signal names in order of
  *	signal number. This is intended
@@ -1798,8 +2773,244 @@
  *	The last element is 0, corresponding to the 0 at the end of
  *	the sig_name list.
  */
-#define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "UNUSED", "IOT", "CLD", "POLL", 0		/**/
-#define SIG_NUM  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 6, 17, 29, 0			/**/
+#define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "IOINT", "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "AIO", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "INFO", "USR1", "USR2", "RESV", "RTMIN", "NUM34", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "MAX", "IOT", "LOST", "URG", "CLD", "IO", "POLL", "PTY", "PWR", "RTMAX", 0		/**/
+#define SIG_NUM  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 6, 16, 20, 23, 23, 23, 29, 48, 0		/**/
+
+/* SITEARCH:
+ *	This symbol contains the name of the private library for this package.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.  The program
+ *	should be prepared to do ~ expansion.
+ *	The standard distribution will put nothing in this directory.
+ *	After perl has been installed, users may install their own local
+ *	architecture-dependent modules in this directory with
+ *		MakeMaker Makefile.PL
+ *	or equivalent.  See INSTALL for details.
+ */
+/* SITEARCH_EXP:
+ *	This symbol contains the ~name expanded version of SITEARCH, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#define SITEARCH "/opt/perl/lib/site_perl/5.6.0/alpha-dec_osf-thread-multi"		/**/
+#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.6.0/alpha-dec_osf-thread-multi"		/**/
+
+/* SITELIB:
+ *	This symbol contains the name of the private library for this package.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.  The program
+ *	should be prepared to do ~ expansion.
+ *	The standard distribution will put nothing in this directory.
+ *	After perl has been installed, users may install their own local
+ *	architecture-independent modules in this directory with
+ *		MakeMaker Makefile.PL
+ *	or equivalent.  See INSTALL for details.
+ */
+/* SITELIB_EXP:
+ *	This symbol contains the ~name expanded version of SITELIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+/* SITELIB_STEM:
+ *	This define is SITELIB_EXP with any trailing version-specific component
+ *	removed.  The elements in inc_version_list (inc_version_list.U) can
+ *	be tacked onto this variable to generate a list of directories to search.
+ */
+#define SITELIB "/opt/perl/lib/site_perl/5.6.0"		/**/
+#define SITELIB_EXP "/opt/perl/lib/site_perl/5.6.0"		/**/
+#define SITELIB_STEM "/opt/perl/lib/site_perl"		/**/
+
+/* Size_t_size:
+ *	This symbol holds the size of a Size_t in bytes.
+ */
+#define Size_t_size 8		/* */
+
+/* Size_t:
+ *	This symbol holds the type used to declare length parameters
+ *	for string functions.  It is usually size_t, but may be
+ *	unsigned long, int, etc.  It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Size_t size_t	 /* length paramater for string functions */
+
+/* Sock_size_t:
+ *	This symbol holds the type used for the size argument of
+ *	various socket calls (just the base type, not the pointer-to).
+ */
+#define Sock_size_t		int /**/
+
+/* SSize_t:
+ *	This symbol holds the type used by functions that return
+ *	a count of bytes or an error condition.  It must be a signed type.
+ *	It is usually ssize_t, but may be long or int, etc.
+ *	It may be necessary to include  or 
+ *	to get any typedef'ed information.
+ *	We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
+ */
+#define SSize_t ssize_t	 /* signed count of bytes */
+
+/* STARTPERL:
+ *	This variable contains the string to put in front of a perl
+ *	script to make sure (one hopes) that it runs with perl and not
+ *	some shell.
+ */
+#define STARTPERL "#!/opt/perl/bin/perl"		/**/
+
+/* HAS_STDIO_STREAM_ARRAY:
+ *	This symbol, if defined, tells that there is an array
+ *	holding the stdio streams.
+ */
+/* STDIO_STREAM_ARRAY:
+ *	This symbol tells the name of the array holding the stdio streams.
+ *	Usual values include _iob, __iob, and __sF.
+ */
+#define	HAS_STDIO_STREAM_ARRAY	/**/
+#define STDIO_STREAM_ARRAY	_iob
+
+/* Uid_t_f:
+ *	This symbol defines the format string used for printing a Uid_t.
+ */
+#define	Uid_t_f		"u"		/**/
+
+/* Uid_t_sign:
+ *	This symbol holds the signedess of a Uid_t.
+ *	1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign	1		/* UID sign */
+
+/* Uid_t_size:
+ *	This symbol holds the size of a Uid_t in bytes.
+ */
+#define Uid_t_size 4		/* UID size */
+
+/* Uid_t:
+ *	This symbol holds the type used to declare user ids in the kernel.
+ *	It can be int, ushort, uid_t, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Uid_t uid_t		/* UID type */
+
+/* USE_64_BIT_INT:
+ *	This symbol, if defined, indicates that 64-bit integers should
+ *	be used when available.  If not defined, the native integers
+ *	will be employed (be they 32 or 64 bits).  The minimal possible
+ *	64-bitness is used, just enough to get 64-bit integers into Perl.
+ *	This may mean using for example "long longs", while your memory
+ *	may still be limited to 2 gigabytes.
+ */
+/* USE_64_BIT_ALL:
+ *	This symbol, if defined, indicates that 64-bit integers should
+ *	be used when available.  If not defined, the native integers
+ *	will be used (be they 32 or 64 bits).  The maximal possible
+ *	64-bitness is employed: LP64 or ILP64, meaning that you will
+ *	be able to use more than 2 gigabytes of memory.  This mode is
+ *	even more binary incompatible than USE_64_BIT_INT. You may not
+ *	be able to run the resulting executable in a 32-bit CPU at all or
+ *	you may need at least to reboot your OS to 64-bit mode.
+ */
+#ifndef USE_64_BIT_INT
+#define	USE_64_BIT_INT		/**/
+#endif
+
+#ifndef USE_64_BIT_ALL
+#define	USE_64_BIT_ALL		/**/
+#endif
+
+/* USE_LARGE_FILES:
+ *	This symbol, if defined, indicates that large file support
+ *	should be used when available.
+ */
+#ifndef USE_LARGE_FILES
+#define	USE_LARGE_FILES		/**/
+#endif
+
+/* USE_LONG_DOUBLE:
+ *	This symbol, if defined, indicates that long doubles should
+ *	be used when available.
+ */
+#ifndef USE_LONG_DOUBLE
+/*#define	USE_LONG_DOUBLE		/ **/
+#endif
+
+/* USE_MORE_BITS:
+ *	This symbol, if defined, indicates that 64-bit interfaces and
+ *	long doubles should be used when available.
+ */
+#ifndef USE_MORE_BITS
+/*#define	USE_MORE_BITS		/ **/
+#endif
+
+/* MULTIPLICITY:
+ *	This symbol, if defined, indicates that Perl should
+ *	be built to use multiplicity.
+ */
+#ifndef MULTIPLICITY
+#define	MULTIPLICITY		/**/
+#endif
+
+/* USE_PERLIO:
+ *	This symbol, if defined, indicates that the PerlIO abstraction should
+ *	be used throughout.  If not defined, stdio should be
+ *	used in a fully backward compatible manner.
+ */
+#ifndef USE_PERLIO
+/*#define	USE_PERLIO		/ **/
+#endif
+
+/* USE_SOCKS:
+ *	This symbol, if defined, indicates that Perl should
+ *	be built to use socks.
+ */
+#ifndef USE_SOCKS
+/*#define	USE_SOCKS		/ **/
+#endif
+
+/* USE_ITHREADS:
+ *	This symbol, if defined, indicates that Perl should be built to
+ *	use the interpreter-based threading implementation.
+ */
+/* USE_5005THREADS:
+ *	This symbol, if defined, indicates that Perl should be built to
+ *	use the 5.005-based threading implementation.
+ */
+/* OLD_PTHREADS_API:
+ *	This symbol, if defined, indicates that Perl should
+ *	be built to use the old draft POSIX threads API.
+ */
+/*#define	USE_5005THREADS		/ **/
+#define	USE_ITHREADS		/**/
+#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
+#define		USE_THREADS		/* until src is revised*/
+#endif
+/*#define	OLD_PTHREADS_API		/ **/
+
+/* PERL_VENDORARCH:
+ *	If defined, this symbol contains the name of a private library.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.
+ *	It may have a ~ on the front. 
+ *	The standard distribution will put nothing in this directory.
+ *	Vendors who distribute perl may wish to place their own
+ *	architecture-dependent modules and extensions in this directory with
+ *		MakeMaker Makefile.PL INSTALLDIRS=vendor 
+ *	or equivalent.  See INSTALL for details.
+ */
+/* PERL_VENDORARCH_EXP:
+ *	This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+/*#define PERL_VENDORARCH ""		/ **/
+/*#define PERL_VENDORARCH_EXP ""		/ **/
+
+/* PERL_VENDORLIB_EXP:
+ *	This symbol contains the ~name expanded version of VENDORLIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+/* PERL_VENDORLIB_STEM:
+ *	This define is PERL_VENDORLIB_EXP with any trailing version-specific component
+ *	removed.  The elements in inc_version_list (inc_version_list.U) can
+ *	be tacked onto this variable to generate a list of directories to search.
+ */
+/*#define PERL_VENDORLIB_EXP ""		/ **/
+/*#define PERL_VENDORLIB_STEM ""		/ **/
 
 /* VOIDFLAGS:
  *	This symbol indicates how much support of the void type is given by this
@@ -1826,278 +3037,52 @@
 #define M_VOID			/* Xenix strikes again */
 #endif
 
-/* ARCHLIB:
- *	This variable, if defined, holds the name of the directory in
- *	which the user wants to put architecture-dependent public
- *	library files for perl5.  It is most often a local directory
- *	such as /usr/local/lib.  Programs using this variable must be
- *	prepared to deal with filename expansion.  If ARCHLIB is the
- *	same as PRIVLIB, it is not defined, since presumably the
- *	program already searches PRIVLIB.
+/* PERL_XS_APIVERSION:
+ *	This variable contains the version of the oldest perl binary
+ *	compatible with the present perl.  perl.c:incpush() and
+ *	lib/lib.pm will automatically search in /opt/perl/lib/site_perl/5.6.0/alpha-dec_osf-thread-multi for older
+ *	directories across major versions back to xs_apiversion.
+ *	This is only useful if you have a perl library directory tree
+ *	structured like the default one.
+ *	See INSTALL for how this works.
+ *	The versioned site_perl directory was introduced in 5.005,
+ *	so that is the lowest possible value.
+ *	Since this can depend on compile time options (such as
+ *	bincompat) it is set by Configure.  Other non-default sources
+ *	of potential incompatibility, such as multiplicity, threads,
+ *	debugging, 64bits, sfio, etc., are not checked for currently,
+ *	though in principle we could go snooping around in old
+ *	Config.pm files.
  */
-/* ARCHLIB_EXP:
- *	This symbol contains the ~name expanded version of ARCHLIB, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
+/* PERL_PM_APIVERSION:
+ *	This variable contains the version of the oldest perl
+ *	compatible with the present perl.  (That is, pure perl modules
+ *	written for pm_apiversion will still work for the current
+ *	version).  perl.c:incpush() and lib/lib.pm will automatically
+ *	search in /opt/perl/lib/site_perl/5.6.0 for older directories across major versions
+ *	back to pm_apiversion.  This is only useful if you have a perl
+ *	library directory tree structured like the default one.  The
+ *	versioned site_perl library was introduced in 5.005, so that's
+ *	the default setting for this variable.  It's hard to imagine
+ *	it changing before Perl6.  It is included here for symmetry
+ *	with xs_apiveprsion -- the searching algorithms will
+ *	(presumably) be similar.
+ *	See the INSTALL file for how this works.
  */
-#define ARCHLIB "/opt/perl/lib/5.005/i686-linux-thread"		/**/
-#define ARCHLIB_EXP "/opt/perl/lib/5.005/i686-linux-thread"		/**/
+#define PERL_XS_APIVERSION "5.6.0"
+#define PERL_PM_APIVERSION "5.005"
 
-/* DLSYM_NEEDS_UNDERSCORE:
- *	This symbol, if defined, indicates that we need to prepend an
- *	underscore to the symbol name before calling dlsym().  This only
- *	makes sense if you *have* dlsym, which we will presume is the
- *	case if you're using dl_dlopen.xs.
+/* HAS_LCHOWN:
+ *	This symbol, if defined, indicates that the lchown routine is
+ *	available to operate on a symbolic link (instead of following the
+ *	link).
  */
-/*#define 	DLSYM_NEEDS_UNDERSCORE 	/ **/
+#define HAS_LCHOWN		/**/
 
-/* USE_SFIO:
- *	This symbol, if defined, indicates that sfio should
- *	be used.
+/* FLEXFILENAMES:
+ *	This symbol, if defined, indicates that the system supports filenames
+ *	longer than 14 characters.
  */
-/*#define	USE_SFIO		/ **/
-
-/* USE_DYNAMIC_LOADING:
- *	This symbol, if defined, indicates that dynamic loading of
- *	some sort is available.
- */
-#define USE_DYNAMIC_LOADING		/**/
-
-/* DB_Prefix_t:
- *	This symbol contains the type of the prefix structure element
- *	in the  header file.  In older versions of DB, it was
- *	int, while in newer ones it is u_int32_t.
- */
-/* DB_Hash_t:
- *	This symbol contains the type of the prefix structure element
- *	in the  header file.  In older versions of DB, it was
- *	int, while in newer ones it is size_t.
- */
-#define DB_Hash_t	u_int32_t		/**/
-#define DB_Prefix_t	size_t  	/**/
-
-/* PRIVLIB:
- *	This symbol contains the name of the private library for this package.
- *	The library is private in the sense that it needn't be in anyone's
- *	execution path, but it should be accessible by the world.  The program
- *	should be prepared to do ~ expansion.
- */
-/* PRIVLIB_EXP:
- *	This symbol contains the ~name expanded version of PRIVLIB, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define PRIVLIB "/opt/perl/lib/5.005"		/**/
-#define PRIVLIB_EXP "/opt/perl/lib/5.005"		/**/
-
-/* SITEARCH:
- *	This symbol contains the name of the private library for this package.
- *	The library is private in the sense that it needn't be in anyone's
- *	execution path, but it should be accessible by the world.  The program
- *	should be prepared to do ~ expansion.
- *	The standard distribution will put nothing in this directory.
- *	Individual sites may place their own extensions and modules in
- *	this directory.
- */
-/* SITEARCH_EXP:
- *	This symbol contains the ~name expanded version of SITEARCH, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define SITEARCH "/opt/perl/lib/site_perl/5.005/i686-linux-thread"		/**/
-#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.005/i686-linux-thread"		/**/
-
-/* SITELIB:
- *	This symbol contains the name of the private library for this package.
- *	The library is private in the sense that it needn't be in anyone's
- *	execution path, but it should be accessible by the world.  The program
- *	should be prepared to do ~ expansion.
- *	The standard distribution will put nothing in this directory.
- *	Individual sites may place their own extensions and modules in
- *	this directory.
- */
-/* SITELIB_EXP:
- *	This symbol contains the ~name expanded version of SITELIB, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define SITELIB "/opt/perl/lib/site_perl/5.005"		/**/
-#define SITELIB_EXP "/opt/perl/lib/site_perl/5.005"		/**/
-
-/* STARTPERL:
- *	This variable contains the string to put in front of a perl
- *	script to make sure (one hopes) that it runs with perl and not
- *	some shell.
- */
-#define STARTPERL "#!/opt/perl/bin/perl"		/**/
-
-/* USE_PERLIO:
- *	This symbol, if defined, indicates that the PerlIO abstraction should
- *	be used throughout.  If not defined, stdio should be
- *	used in a fully backward compatible manner.
- */
-/*#define	USE_PERLIO		/ **/
-
-/* HAS_GETHOST_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for gethostent(), gethostbyname(), and
- *	gethostbyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#define	HAS_GETHOST_PROTOS	/**/
-
-/* HAS_GETNET_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for getnetent(), getnetbyname(), and
- *	getnetbyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#define	HAS_GETNET_PROTOS	/**/
-
-/* HAS_GETPROTO_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for getprotoent(), getprotobyname(), and
- *	getprotobyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#define	HAS_GETPROTO_PROTOS	/**/
-
-/* HAS_GETSERV_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for getservent(), getservbyname(), and
- *	getservbyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#define	HAS_GETSERV_PROTOS	/**/
-
-/* Netdb_host_t:
- *	This symbol holds the type used for the 1st argument
- *	to gethostbyaddr().
- */
-/* Netdb_hlen_t:
- *	This symbol holds the type used for the 2nd argument
- *	to gethostbyaddr().
- */
-/* Netdb_name_t:
- *	This symbol holds the type used for the argument to
- *	gethostbyname().
- */
-/* Netdb_net_t:
- *	This symbol holds the type used for the 1st argument to
- *	getnetbyaddr().
- */
-#define Netdb_host_t		const char * /**/
-#define Netdb_hlen_t		int /**/
-#define Netdb_name_t		const char * /**/
-#define Netdb_net_t		unsigned long /**/
-
-/* Select_fd_set_t:
- *	This symbol holds the type used for the 2nd, 3rd, and 4th
- *	arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
- *	is defined, and 'int *' otherwise.  This is only useful if you 
- *	have select(), of course.
- */
-#define Select_fd_set_t 	fd_set *	/**/
-
-/* ARCHNAME:
- *	This symbol holds a string representing the architecture name.
- *	It may be used to construct an architecture-dependant pathname
- *	where library files may be held under a private library, for
- *	instance.
- */
-#define ARCHNAME "i686-linux-thread"		/**/
-
-/* HAS_PTHREAD_YIELD:
- *	This symbol, if defined, indicates that the pthread_yield 
- *	routine is available to yield the execution of the current
- *	thread.
- */
-/* HAS_SCHED_YIELD:
- *	This symbol, if defined, indicates that the sched_yield
- *	routine is available to yield the execution of the current
- *	thread.
- */
-/*#define HAS_PTHREAD_YIELD	/ **/
-#define HAS_SCHED_YIELD	/**/
-
-/* PTHREADS_CREATED_JOINABLE:
- *	This symbol, if defined, indicates that pthreads are created
- *	in the joinable (aka undetached) state.
- */
-#define PTHREADS_CREATED_JOINABLE /**/
-
-/* USE_THREADS:
- *	This symbol, if defined, indicates that Perl should
- *	be built to use threads.
- */
-/* OLD_PTHREADS_API:
- *	This symbol, if defined, indicates that Perl should
- *	be built to use the old draft POSIX threads API.
- */
-#define	USE_THREADS		/**/
-/*#define	OLD_PTHREADS_API		/ **/
-
-/* Time_t:
- *	This symbol holds the type returned by time(). It can be long,
- *	or time_t on BSD sites (in which case  should be
- *	included).
- */
-#define Time_t time_t		/* Time type */
-
-/* HAS_TIMES:
- *	This symbol, if defined, indicates that the times() routine exists.
- *	Note that this became obsolete on some systems (SUNOS), which now
- * use getrusage(). It may be necessary to include .
- */
-#define HAS_TIMES		/**/
-
-/* Fpos_t:
- *	This symbol holds the type used to declare file positions in libc.
- *	It can be fpos_t, long, uint, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Fpos_t fpos_t		/* File position type */
-
-/* Gid_t:
- *	This symbol holds the return type of getgid() and the type of
- *	argument to setrgid() and related functions.  Typically,
- *	it is the type of group ids in the kernel. It can be int, ushort,
- *	uid_t, etc... It may be necessary to include  to get
- *	any typedef'ed information.
- */
-#define Gid_t gid_t		/* Type for getgid(), etc... */
-
-/* Off_t:
- *	This symbol holds the type used to declare offsets in the kernel.
- *	It can be int, long, off_t, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Off_t off_t		/*  type */
-
-/* Mode_t:
- *	This symbol holds the type used to declare file modes 
- *	for systems calls.  It is usually mode_t, but may be
- *	int or unsigned short.  It may be necessary to include 
- *	to get any typedef'ed information.
- */
-#define Mode_t mode_t	 /* file mode parameter for system calls */
-
-/* Pid_t:
- *	This symbol holds the type used to declare process ids in the kernel.
- *	It can be int, uint, pid_t, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Pid_t pid_t		/* PID type */
-
-/* Size_t:
- *	This symbol holds the type used to declare length parameters
- *	for string functions.  It is usually size_t, but may be
- *	unsigned long, int, etc.  It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Size_t size_t	 /* length paramater for string functions */
-
-/* Uid_t:
- *	This symbol holds the type used to declare user ids in the kernel.
- *	It can be int, ushort, uid_t, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Uid_t uid_t		/* UID type */
+#define	FLEXFILENAMES		/**/
 
 #endif
diff --git a/contrib/perl5/Porting/findvars b/contrib/perl5/Porting/findvars
index 2e81244ac86c..3cdb854614da 100755
--- a/contrib/perl5/Porting/findvars
+++ b/contrib/perl5/Porting/findvars
@@ -11,15 +11,17 @@ chop $pat if $pat =~ /\|$/;
 
 # grep
 while (<>) {
-    if (/^(.*?)\b($pat)\b(.*)$/o) {
-        my $head = "$1#$2#";
-        $_ = $3;
-        while (/^(.*?)\b($pat)\b(.*)$/o) {
-            $head .= "$1#$2#";
-            $_ = $3;
-        }
-	print "$ARGV\:$.\:$head$_\n";
-    }
+    print "$ARGV\:$.\:$_" if s/\b($pat)\b/#$1#/og;
+# this variant might useful if the transformation is more complicated
+#    if (/^(.*?)\b($pat)\b(.*)$/o) {
+#        my $head = "$1#$2#";
+#        $_ = $3;
+#        while (/^(.*?)\b($pat)\b(.*)$/o) {
+#            $head .= "$1#$2#";
+#            $_ = $3;
+#        }
+#	print "$ARGV\:$.\:$head$_\n";
+#    }
 }
 continue {
     close ARGV if eof;
@@ -238,7 +240,6 @@ osname
 pad_reset_pending
 padix
 padix_floor
-parsehook
 patchlevel
 patleave
 pending_ident
diff --git a/contrib/perl5/Porting/genlog b/contrib/perl5/Porting/genlog
index 5c3e90577e1c..efb7ef8e108d 100755
--- a/contrib/perl5/Porting/genlog
+++ b/contrib/perl5/Porting/genlog
@@ -12,7 +12,7 @@
 #
 # Outputs the changelist to stdout.
 #
-# Gurusamy Sarathy 
+# Gurusamy Sarathy 
 #
 
 use Text::Wrap;
@@ -107,8 +107,9 @@ EOT
 		my $files = $files{$branch}{$kind};
 		# don't show large branches and integrations
 		$files = ["($kind " . scalar(@$files) . ' files)']
-		    if (@$files > 25
-		        && ( $kind eq 'integrate' || $kind eq 'branch'));
+		    if (@$files > 25 && ($kind eq 'integrate'
+		    			 || $kind eq 'branch'))
+		       || @$files > 100;
 	        print wrap(sprintf("%12s ", $editkind{$kind}),
 			   sprintf("%12s ", $editkind{$kind}),
 			   "@$files\n");
diff --git a/contrib/perl5/Porting/makerel b/contrib/perl5/Porting/makerel
index f2e1f9750b22..4b8c277ebd1d 100755
--- a/contrib/perl5/Porting/makerel
+++ b/contrib/perl5/Porting/makerel
@@ -20,19 +20,14 @@ die "Must be in root of the perl source tree.\n"
 open PATCHLEVEL,";
 close PATCHLEVEL;
-my $patchlevel_h = join "", grep { /^#define/ } @patchlevel_h;
+my $patchlevel_h = join "", grep { /^#\s*define/ } @patchlevel_h;
 print $patchlevel_h;
-$patchlevel = $1 if $patchlevel_h =~ /PATCHLEVEL\s+(\d+)/;
-$subversion = $1 if $patchlevel_h =~ /SUBVERSION\s+(\d+)/;
+$revision = $1 if $patchlevel_h =~ /PERL_REVISION\s+(\d+)/;
+$patchlevel = $1 if $patchlevel_h =~ /PERL_VERSION\s+(\d+)/;
+$subversion = $1 if $patchlevel_h =~ /PERL_SUBVERSION\s+(\d+)/;
 die "Unable to parse patchlevel.h" unless $subversion >= 0;
-$vers = sprintf("5.%03d", $patchlevel);
-$vms_vers = sprintf("5_%03d", $patchlevel);
-if ($subversion) {
-    $vers.= sprintf( "_%02d", $subversion);
-    $vms_vers.= sprintf( "%02d", $subversion);
-} else {
-    $vms_vers.= "  ";
-}
+$vers = sprintf("%d.%d.%d", $revision, $patchlevel, $subversion);
+$vms_vers = sprintf("%d_%d_%d", $revision, $patchlevel, $subversion);
 
 # fetch list of local patches
 my (@local_patches, @lpatch_tags, $lpatch_tags);
@@ -41,7 +36,7 @@ my (@local_patches, @lpatch_tags, $lpatch_tags);
 @lpatch_tags   = map  {  /^\s*,"(\w+)/ } @local_patches;
 $lpatch_tags   = join "-", @lpatch_tags;
 
-$perl = "perl$vers";
+$perl = "perl-$vers";
 $reldir = "$perl";
 $reldir .= "-$lpatch_tags" if $lpatch_tags;
 
@@ -93,7 +88,6 @@ my @exe = qw(
     installperl
     installman
     keywords.pl
-    myconfig
     opcode.pl
     perly.fixer
     t/TEST
@@ -107,6 +101,27 @@ my @exe = qw(
 );
 system("chmod +x @exe");
 
+my @writables = qw(
+    embed.h
+    embedvar.h
+    ext/B/B/Asmdata.pm
+    ext/ByteLoader/byterun.c
+    ext/ByteLoader/byterun.h
+    global.sym
+    keywords.h
+    lib/warnings.pm
+    objXSUB.h
+    opcode.h
+    pp.sym
+    pp_proto.h
+    regnodes.h
+    warnings.h
+    win32/config_H.bc
+    win32/config_H.gc
+    win32/config_H.vc
+);
+system("chmod +w @writables");
+
 print "Adding CRs to DOSish files...\n";
 my @crlf = qw(
     djgpp/configure.bat
diff --git a/contrib/perl5/Porting/p4d2p b/contrib/perl5/Porting/p4d2p
index 67780a939339..f645ef807e1e 100755
--- a/contrib/perl5/Porting/p4d2p
+++ b/contrib/perl5/Porting/p4d2p
@@ -4,7 +4,7 @@
 # reads a perforce style diff on stdin and outputs appropriate headers
 # so the diff can be applied with the patch program
 #
-# Gurusamy Sarathy 
+# Gurusamy Sarathy 
 #
 
 BEGIN {
diff --git a/contrib/perl5/Porting/p4desc b/contrib/perl5/Porting/p4desc
new file mode 100755
index 000000000000..0bf79da2e004
--- /dev/null
+++ b/contrib/perl5/Porting/p4desc
@@ -0,0 +1,118 @@
+#!/usr/bin/perl -wpi.bak
+
+#
+# Munge "p4 describe ..." output to include new files.
+#
+# Gurusamy Sarathy 
+#
+
+use vars qw($thisfile $change $file $fnum $h $v $p4port @addfiles);
+
+BEGIN {
+    $0 =~ s|^.*/||;
+    $p4port = $ENV{P4PORT} || 'localhost:1666';
+    for (@ARGV) {
+        if ($p4port =~ /^\s+$/) {
+	   $p4port = $_;
+	}
+        elsif (/^-p(.*)$/) {
+	    $p4port = $1 || ' ';
+	}
+	elsif (/^-v$/) {
+	    $v++;
+	}
+	elsif (/^-h/) {
+	    $h++;
+	}
+	else {
+	    push @files, $_;
+	}
+    }
+    unless (@files) { @files = '-'; undef $^I; }
+    @ARGV = @files;
+    if ($h) {
+	print STDERR < change-123.desc
+	p4 describe -du 123 | $0 | p4d2p > change-123.patch
+
+USAGE
+	exit(0);
+    }
+    $thisfile = "";
+}
+
+
+if ($ARGV ne $thisfile) {
+    warn "processing patchfile [$ARGV]\n" unless $ARGV eq '-';
+    $thisfile = $ARGV;
+}
+
+my $cur = m|^Affected files| ... m|^Differences|;
+
+# while we are within range
+if ($cur) {
+    if (m{^\.\.\. (//depot/.+?#\d+) (add|branch)$}) {
+	my $newfile = $1;
+	push @addfiles, $newfile;
+	warn "$newfile add, revision != 1!\n" unless $newfile =~ /#1$/;
+    }
+    warn "file [$file] line [$cur] file# [$fnum]\n" if $v;
+}
+
+if (/^Change (\d+) by/) {
+    $_ = "\n\n" . $_ if $change;	# start of a new change list
+    $change = $1;
+    my $new = newfiles();
+    if ($new) {
+	$_ = $new . $_;
+    }
+}
+
+if (eof) {
+    $_ .= newfiles();
+}
+
+sub newfiles {
+    my $addfile;
+    my $ret = "";
+    for $addfile (@addfiles) {
+	my $type = `p4 -p $p4port files '$addfile'`;
+	if ($?) {
+	    warn "$0: `p4 -p $p4port print '$addfile'` failed, status[$?]\n";
+	    next;
+	}
+	$type =~ m|^//.*\((.+)\)$| or next;
+	$type = $1;
+	unless ($type =~ /text/) {
+	    $ret .= "\n==== $addfile ($type) ====\n\n";
+	    next;
+	}
+	my @new = `p4 -p $p4port print '$addfile'`;
+	if ($?) {
+	    die "$0: `p4 -p $p4port print '$addfile'` failed, status[$?]\n";
+	}
+	my $desc = shift @new;		# discard initial description
+	$ret .= "\n==== $addfile ($type) ====\n\n";
+	my $lines = "," . @new;
+	$lines = "" if @new < 2;
+	$ret .= "\@\@ -0,0 +1$lines \@\@\n";
+	$ret .= join("+","",@new);
+	$ret .= "\n\\ No newline at end of file\n" if $ret !~ /\n$/;
+    }
+    @addfiles = ();
+    return $ret;
+}
diff --git a/contrib/perl5/Porting/patching.pod b/contrib/perl5/Porting/patching.pod
index caada0c9802f..5659f23c60e1 100644
--- a/contrib/perl5/Porting/patching.pod
+++ b/contrib/perl5/Porting/patching.pod
@@ -30,7 +30,7 @@ attempt to make everybody's life easier.
 
 The most common problems appear to be patches being mangled by certain
 mailers (I won't name names, but most of these seem to be originating on
-boxes running a certain popular commercial operating system). Other problems
+boxes running a certain popular commercial operating system).  Other problems
 include patches not rooted in the appropriate place in the directory structure,
 and patches not produced using standard utilities (such as diff).
 
@@ -52,7 +52,7 @@ First, back up the original files.  This can't be stressed enough,
 back everything up _first_.
 
 Also, please create patches against a clean distribution of the perl source.
-This insures that everyone else can apply your patch without clobbering their
+This ensures that everyone else can apply your patch without clobbering their
 source tree.
 
 =item diff
@@ -63,15 +63,18 @@ respectively, unified diffs (where the changed line appears immediately next
 to the original) and context diffs (where several lines surrounding the changes
 are included).  See the manpage for diff for more details.
 
-Also, the preferred method for patching is -
+The preferred method for creating a unified diff suitable for feeding
+to the patch program is:
 
-C | C<-u>] Eold-fileE Enew-fileE>
+	diff -u old-file new-file > patch-file
 
-Note the order of files.
+Note the order of files.  See below for how to create a patch from
+two directory trees.
 
-Also, if your patch is to the core (rather than to a module) it
-is better to create it as a context diff as some machines have
-broken patch utilities that choke on unified diffs.
+If your patch is for wider consumption, it may be better to create it as
+a context diff as some machines have broken patch utilities that choke on
+unified diffs.  A context diff is made using C rather than
+C.
 
 GNU diff has many desirable features not provided by most vendor-supplied
 diffs.  Some examples using GNU diff:
@@ -94,23 +97,34 @@ diffs.  Some examples using GNU diff:
 
 =item Directories
 
-Patches should be generated from the source root directory, not from the
-directory that the patched file resides in.  This insures that the maintainer
-patches the proper file and avoids name collisions (especially common when trying
-to apply patches to files that appear in both $src_root/ext/* and $src_root/lib/*).
-It is better to diff the file in $src_root/ext than the file in $src_root/lib.
+IMPORTANT: Patches should be generated from the source root directory, not
+from the directory that the patched file resides in.  This ensures that the
+maintainer patches the proper file.
+
+Many files in the distribution are derivative--avoid patching them.
+Patch the originals instead.  Most utilities (like perldoc) are in
+this category, i.e. patch utils/perldoc.PL rather than utils/perldoc.
+Similarly, don't create patches for files under $src_root/ext from
+their copies found in $install_root/lib.  If you are unsure about the
+proper location of a file that may have gotten copied while building
+the source distribution, consult the C.
 
 =item Filenames
 
 The most usual convention when submitting patches for a single file is to make
 your changes to a copy of the file with the same name as the original.  Rename
-the original file in such a way that it is obvious what is being patched ($file~ or
-$file.old seem to be popular).
+the original file in such a way that it is obvious what is being patched
+($file.dist or $file.old seem to be popular).
 
-If you are submitting patches that affect multiple files then you should backup
-the entire directory tree (to $source_root.old/ for example).  This will allow
-C Eold-dirE Enew-dirE> to create all the patches
-at once.
+If you are submitting patches that affect multiple files then you should
+backup the entire directory tree (to $source_root.old/ for example).  This
+will allow C to create all the patches at once.
+
+=item Try it yourself
+
+Just to make sure your patch "works", be sure to apply it to the Perl
+distribution, rebuild everything, and make sure the testsuite runs
+without incident.
 
 =back
 
@@ -125,7 +139,7 @@ the patch corrects.  If it is a code patch (rather than a documentation
 patch) you should also include a small test case that illustrates the
 bug.
 
-=item Direction for application
+=item Directions for application
 
 You should include instructions on how to properly apply your patch.
 These should include the files affected, any shell scripts or commands
@@ -150,15 +164,35 @@ side of adding too many comments than too few.
 
 =item Style
 
-Please follow the indentation style and nesting style in use in the
-block of code that you are patching.
+In general, please follow the particular style of the code you are patching.
+
+In particular, follow these general guidelines for patching Perl sources:
+
+    8-wide tabs (no exceptions!)
+    4-wide indents for code, 2-wide indents for nested CPP #defines
+    try hard not to exceed 79-columns
+    ANSI C prototypes
+    uncuddled elses and "K&R" style for indenting control constructs
+    no C++ style (//) comments, most C compilers will choke on them
+    mark places that need to be revisited with XXX (and revisit often!)
+    opening brace lines up with "if" when conditional spans multiple
+        lines; should be at end-of-line otherwise
+    in function definitions, name starts in column 0 (return value is on
+        previous line)
+    single space after keywords that are followed by parens, no space
+        between function name and following paren
+    avoid assignments in conditionals, but if they're unavoidable, use
+        extra paren, e.g. "if (a && (b = c)) ..."
+    "return foo;" rather than "return(foo);"
+    "if (!foo) ..." rather than "if (foo == FALSE) ..." etc.
+
 
 =item Testsuite
 
 When submitting a patch you should make every effort to also include
 an addition to perl's regression tests to properly exercise your
 patch.  Your testsuite additions should generally follow these
-guidelines (courtesy of Gurusamy Sarathy (gsar@engin.umich.edu))-
+guidelines (courtesy of Gurusamy Sarathy ):
 
 	Know what you're testing.  Read the docs, and the source.
 	Tend to fail, not succeed.
@@ -173,16 +207,16 @@ guidelines (courtesy of Gurusamy Sarathy (gsar@engin.umich.edu))-
 	  do use them, make sure that you cover _all_ perl platforms.
 	Unlink any temporary files you create.
 	Promote unforeseen warnings to errors with $SIG{__WARN__}.
-	Be sure to use the libraries and modules shipped with version 
+	Be sure to use the libraries and modules shipped with the version 
           being tested, not those that were already installed.
 	Add comments to the code explaining what you are testing for.
 	Make updating the '1..42' string unnecessary.  Or make sure that 
           you update it.
-	Test _all_ behaviors of a given operator, library, or function-
-	  All optional arguments
-	  Return values in various contexts (boolean, scalar, list, lvalue)
-	  Use both global and lexical variables
-	  Don't forget the exceptional, pathological cases.
+	Test _all_ behaviors of a given operator, library, or function:
+	  - All optional arguments
+	  - Return values in various contexts (boolean, scalar, list, lvalue)
+	  - Use both global and lexical variables
+	  - Don't forget the exceptional, pathological cases.
 
 =back
 
@@ -196,7 +230,7 @@ patch, didn't you).
 
 =head2 An example patch creation
 
-This should work for most patches-
+This should work for most patches:
 
       cp MANIFEST MANIFEST.old
       emacs MANIFEST
@@ -222,7 +256,7 @@ word wraps your patch or that MIME encodes it.  Both of these leave
 the patch essentially worthless to the maintainer.
 
 If you have no choice in mailers and no way to get your hands on a
-better one there is, of course, a perl solution.  Just do this-
+better one there is, of course, a perl solution.  Just do this:
 
       perl -ne 'print pack("u*",$_)' patch > patch.uue
 
@@ -234,27 +268,37 @@ and post patch.uue with a note saying to unpack it using
 
 The subject line on your patch should read
 
-[PATCH]5.xxx_xx (Area) Description
+    [PATCH 5.xxx_xx AREA] Description
 
-where the x's are replaced by the appropriate version number,
-area is a short keyword identifying what area of perl you are
-patching, and description is a very brief summary of the
+where the x's are replaced by the appropriate version number.
+The description should be a very brief but accurate summary of the
 problem (don't forget this is an email header).
 
-Examples-
+Examples:
 
-[PATCH]5.004_04 (DOC) fix minor typos
+    [PATCH 5.004_04 DOC] fix minor typos
 
-[PATCH]5.004_99 (CORE) New warning for foo() when frobbing
+    [PATCH 5.004_99 CORE] New warning for foo() when frobbing
 
-[PATCH]5.005_42 (CONFIG) Added support for fribnatz 1.5
+    [PATCH 5.005_42 CONFIG] Added support for fribnatz 1.5
+
+The name of the file being patched makes for a poor subject line if
+no other descriptive text accompanies it.
 
 =item Where to send your patch
 
-If your patch is for the perl core it should be sent perlbug@perl.org.
+If your patch is for a specific bug in the Perl core, it should be sent
+using the perlbug utility.  Don't forget to describe the problem and the
+fix adequately.
+
 If it is a patch to a module that you downloaded from CPAN you should
 submit your patch to that module's author.
 
+If your patch addresses one of the items described in perltodo.pod,
+please discuss your approach B you make the patch at
+.  Be sure to browse the archives of past
+discussions (see perltodo.pod for archive locations).
+
 =back
 
 =head2 Applying a patch
@@ -270,19 +314,21 @@ to your perl distribution.
 
 =item patch C<-p>
 
-It is generally easier to apply patches with the C<-p> argument to
-patch.  This helps reconcile differing paths between the machine the
-patch was created on and the machine on which it is being applied.
+It is generally easier to apply patches with the C<-p N> argument to
+patch (where N is the number of path components to skip in the files
+found in the headers).  This helps reconcile differing paths between
+the machine the patch was created on and the machine on which it is
+being applied.
 
 =item Cut and paste
 
-_Never_ cut and paste a patch into your editor.  This usually clobbers
+B cut and paste a patch into your editor.  This usually clobbers
 the tabs and confuses patch.
 
 =item Hand editing patches
 
-Avoid hand editing patches as this frequently screws up the whitespace
-in the patch and confuses the patch program.
+Avoid hand editing patches as this almost always screws up the line
+numbers and offsets in the patch, making it useless.
 
 =back
 
diff --git a/contrib/perl5/Porting/patchls b/contrib/perl5/Porting/patchls
index 38c4dd1f473c..4329f4cebc8a 100755
--- a/contrib/perl5/Porting/patchls
+++ b/contrib/perl5/Porting/patchls
@@ -17,7 +17,7 @@ use Text::Tabs qw(expand unexpand);
 use strict;
 use vars qw($VERSION);
 
-$VERSION = 2.08;
+$VERSION = 2.11;
 
 sub usage {
 die qq{
@@ -35,6 +35,7 @@ die qq{
            (F has \$ appended unless it contains a /).
     -e     Expect patched files to Exist (relative to current directory)
            Will print warnings for files which don't. Also affects -4 option.
+    -      Read patch from STDIN
   other options for special uses:
     -I     just gather and display summary Information about the patches.
     -4     write to stdout the PerForce commands to prepare for patching.
@@ -93,7 +94,7 @@ my %cat_title = (
     'UTIL'	=> 'UTILITIES',
     'OTHER'	=> 'OTHER CHANGES',
     'EXT'	=> 'EXTENSIONS',
-    'UNKNOWN'	=> 'UNKNOWN - NO FILES PATCH',
+    'UNKNOWN'	=> 'UNKNOWN - NO FILES PATCHED',
 );
 
 
@@ -131,7 +132,11 @@ sub get_meta_info {
 # Style 2:
 #	--- perl5.004001/mg.c   Sun Jun 08 12:26:24 1997
 #	+++ perl5.004-bc/mg.c   Sun Jun 08 11:56:08 1997
-#	@@ -656,9 +656,27 @@
+#	@@ .. @@
+# or for deletions
+#	--- perl5.004001/mg.c   Sun Jun 08 12:26:24 1997
+#	+++ /dev/null   Sun Jun 08 11:56:08 1997
+#	@@ ... @@
 # or (rcs, note the different date format)
 #	--- 1.18	1997/05/23 19:22:04
 #	+++ ./pod/perlembed.pod	1997/06/03 21:41:38
@@ -145,13 +150,19 @@ my $in;
 my $ls;
 my $prevline = '';
 my $prevtype = '';
-my (@removed, @added);
+my (%removed, %added);
 my $prologue = 1;	# assume prologue till patch or /^exit\b/ seen
 
 
 foreach my $argv (@ARGV) {
     $in = $argv;
-    unless (open F, "<$in") {
+    if (-d $in) {
+	warn "Ignored directory $in\n";
+	next;
+    }
+    if ($in eq "-") {
+      *F = \*STDIN;
+    } elsif (not open F, "<$in") {
 	warn "Unable to open $in: $!\n";
 	next;
     }
@@ -163,8 +174,8 @@ foreach my $argv (@ARGV) {
 	    # not an interesting patch line
 	    # but possibly meta-information or prologue
 	    if ($prologue) {
-		push @added, $1     if /^touch\s+(\S+)/;
-		push @removed, $1   if /^rm\s+(?:-f)?\s*(\S+)/;
+		$added{$1}   = 1    if /^touch\s+(\S+)/;
+		$removed{$1} = 1    if /^rm\s+(?:-f)?\s*(\S+)/;
 		$prologue = 0       if /^exit\b/;
 	    }
 	    get_meta_info($ls, $_) if $::opt_m;
@@ -182,7 +193,7 @@ foreach my $argv (@ARGV) {
 	# to the file which describes the problem being fixed.
 	if (/^Index:\s+(.*)/) {
 	    my $f;
-	    foreach $f (split(/ /, $1)) { add_file($ls, $f) }
+	    foreach $f (split(/ /, $1)) { add_patched_file($ls, $f) }
 	    next;
 	}
 
@@ -190,7 +201,13 @@ foreach my $argv (@ARGV) {
 	    or	($type eq '+++' and $prevtype eq '---')	# Style 2
 	) {
 	    if (/^[-+*]{3} (\S+)\s*(.*?\d\d:\d\d:\d\d)?/) {	# double check
-		add_file($ls, $1);
+		if ($1 eq "/dev/null") {
+		    $prevline =~ /^[-+*]{3} (\S+)\s*/;
+		    add_deleted_file($ls, $1);
+		}
+		else {
+		    add_patched_file($ls, $1);
+		}
 	    }
 	    else {
 		warn "$in $.: parse error (prev $prevtype, type $type)\n$prevline$_";
@@ -226,7 +243,7 @@ foreach my $argv (@ARGV) {
     }
 
     # if we don't have a title for -m then use the file name
-    $ls->{Title}{$in}=1 if $::opt_m
+    $ls->{Title}{"Untitled: $in"}=1 if $::opt_m
 	and !$ls->{Title} and $ls->{out};
 
     $ls->{category} = $::opt_c
@@ -263,16 +280,18 @@ if ($::opt_f) {		# filter out patches based on -f 
 
 if ($::opt_4) {
     my $tail = ($::opt_5) ? "|| exit 1" : "";
-    print map { "p4 delete $_$tail\n" } @removed if @removed;
-    print map { "p4 add    $_$tail\n" } @added   if @added;
+    print map { "p4 delete $_$tail\n" } sort keys %removed if %removed;
+    print map { "p4 add    $_$tail\n" } sort keys %added   if %added;
     my @patches = sort grep { $_->{is_in} } @ls;
     my @no_outs = grep { keys %{$_->{out}} == 0 } @patches;
     warn "Warning: Some files contain no patches:",
 	join("\n\t", '', map { $_->{in} } @no_outs), "\n" if @no_outs;
+
     my %patched = map { ($_, 1) } map { keys %{$_->{out}} } @patches;
-    delete @patched{@added};
+    delete @patched{keys %added};
     my @patched = sort keys %patched;
     foreach(@patched) {
+	next if $removed{$_};
 	my $edit = ($::opt_e && !-f $_) ? "add " : "edit";
 	print "p4 $edit   $_$tail\n";
     }
@@ -312,8 +331,8 @@ if ($::opt_I) {
 	    print "\n";
 	}
     }
-    print "Added files:   @added\n"   if @added;
-    print "Removed files: @removed\n" if @removed;
+    print "Added files:   ".join(" ",sort keys %added  )."\n" if %added;
+    print "Removed files: ".join(" ",sort keys %removed)."\n" if %removed;
     exit 0+@missing;
 }
 
@@ -353,12 +372,15 @@ exit 0;
 # ---
 
 
-sub add_file {
+sub add_patched_file {
     my $ls = shift;
-	print "add_file '$_[0]'\n" if $::opt_d;
-    my $out = trim_name(shift);
+	my $raw_name = shift;
+    my $action = shift || 1;	# 1==patched, 2==deleted
 
-    $ls->{out}->{$out} = 1;
+    my $out = trim_name($raw_name);
+    print "add_patched_file '$out' ($raw_name, $action)\n" if $::opt_d;
+
+    $ls->{out}->{$out} = $action;
 
     warn "$out patched but not present\n" if $::opt_e && !-f $out;
 
@@ -371,13 +393,24 @@ sub add_file {
     $i->{out}->{$in} = 1;
 }
 
+sub add_deleted_file {
+    my $ls = shift;
+	my $raw_name = shift;
+    my $out = trim_name($raw_name);
+    print "add_deleted_file '$out' ($raw_name)\n" if $::opt_d;
+	$removed{$out} = 1;
+    #add_patched_file(@_[0,1], 2);
+}
+
 
 sub trim_name {		# reduce/tidy file paths from diff lines
     my $name = shift;
-    $name = "$name ($in)" if $name eq "/dev/null";
     $name =~ s:\\:/:g;	# adjust windows paths
     $name =~ s://:/:g;	# simplify (and make win \\share into absolute path)
-    if (defined $::opt_p) {
+    if ($name eq "/dev/null") {
+	# do nothing (XXX but we need a way to record deletions)
+    }
+    elsif (defined $::opt_p) {
 	# strip on -p levels of directory prefix
 	my $dc = $::opt_p;
 	$name =~ s:^[^/]+/(.+)$:$1: while $dc-- > 0;
@@ -385,7 +418,7 @@ sub trim_name {		# reduce/tidy file paths from diff lines
     else {	# try to strip off leading path to perl directory
 	# if absolute path, strip down to any *perl* directory first
 	$name =~ s:^/.*?perl.*?/::i;
-	$name =~ s:.*perl[-_]?5?[._]?[-_a-z0-9.+]*/::i;
+	$name =~ s:.*(perl|maint)[-_]?5?[._]?[-_a-z0-9.+]*/::i;
 	$name =~ s:^\./::;
     }
     return $name;
@@ -436,7 +469,9 @@ sub list_files_by_patch {
     # a twisty maze of little options
     my $cat = ($ls->{category} and !$::opt_m) ? "\t$ls->{category}" : "";
     print "$name$cat: "	unless ($::opt_h and !$::opt_v) or !"$name$cat";
-    print join('',"\n",@meta) if @meta;
+    my $sep = "\n";
+    $sep = "" if @show_meta==1 && $::opt_c && $::opt_h;
+    print join('', $sep, @meta) if @meta;
 
     return if $::opt_m && !$show_meta{Files};
     my @v = sort PATORDER keys %{ $ls->{out} };
@@ -467,7 +502,7 @@ sub categorize_files {
 	$c{UTIL} += 10,next  if m:^(utils|x2p|h2pl)/:;
 	$c{PORT1}+= 15,next  if m:^win32:;
 	$c{PORT2} += 15,next
-	    if m:^(cygwin32|os2|plan9|qnx|vms)/:
+	    if m:^(cygwin|os2|plan9|qnx|vms)/:
 	    or m:^(hints|Porting|ext/DynaLoader)/:
 	    or m:^README\.:;
 	$c{EXT}  += 10,next
diff --git a/contrib/perl5/Porting/pumpkin.pod b/contrib/perl5/Porting/pumpkin.pod
index 335e49f27339..99776b50d2ee 100644
--- a/contrib/perl5/Porting/pumpkin.pod
+++ b/contrib/perl5/Porting/pumpkin.pod
@@ -8,8 +8,8 @@ There is no simple synopsis, yet.
 
 =head1 DESCRIPTION
 
-This document attempts to begin to describe some of the
-considerations involved in patching and maintaining perl.
+This document attempts to begin to describe some of the considerations
+involved in patching, porting, and maintaining perl.
 
 This document is still under construction, and still subject to
 significant changes.  Still, I hope parts of it will be useful,
@@ -47,93 +47,68 @@ Archives of the list are held at:
 
 =head1 How are Perl Releases Numbered?
 
-Perl version numbers are floating point numbers, such as 5.004.
-(Observations about the imprecision of floating point numbers for
-representing reality probably have more relevance than you might
-imagine :-) The major version number is 5 and the '004' is the
-patchlevel.  (Questions such as whether or not '004' is really a minor
-version number can safely be ignored.:)
+Beginning with v5.6.0, even versions will stand for maintenance releases
+and odd versions for development releases, i.e., v5.6.x for maintenance
+releases, and v5.7.x for development releases.  Before v5.6.0, subversions
+_01 through _49 were reserved for bug-fix maintenance releases, and
+subversions _50 through _99 for unstable development versions.
 
-The version number is available as the magic variable $],
-and can be used in comparisons, e.g.
+For example, in v5.6.1, the revision number is 5, the version is 6,
+and 1 is the subversion.
 
-	print "You've got an old perl\n" if $] < 5.002;
+For compatibility with the older numbering scheme the composite floating
+point version number continues to be available as the magic variable $],
+and amounts to C<$revision + $version/1000 + $subversion/1000000>.  This
+can still be used in comparisons.
 
-You can also require particular version (or later) with
+	print "You've got an old perl\n" if $] < 5.005_03;
 
-	use 5.002;
+In addition, the version is also available as a string in $^V.
+
+	print "You've got a new perl\n" if $^V and $^V ge v5.6.0;
+
+You can also require particular version (or later) with:
+
+        use 5.006;
+
+or using the new syntax available only from v5.6 onward:
+
+	use v5.6.0;
 
 At some point in the future, we may need to decide what to call the
 next big revision.  In the .package file used by metaconfig to
 generate Configure, there are two variables that might be relevant:
-$baserev=5.0 and $package=perl5.   At various times, I have suggested
-we might change them to $baserev=5.1 and $package=perl5.1 if want
-to signify a fairly major update.  Or, we might want to jump to perl6.
-Let's worry about that problem when we get there.
+$baserev=5 and $package=perl5.
 
-=head2 Subversions
-
-In addition, there may be "developer" sub-versions available.  These
-are not official releases.  They may contain unstable experimental
-features, and are subject to rapid change.  Such developer
-sub-versions are numbered with sub-version numbers.  For example,
-version 5.003_04 is the 4'th developer version built on top of
-5.003.  It might include the _01, _02, and _03 changes, but it
-also might not.  Sub-versions are allowed to be subversive. (But see
-the next section for recent changes.)
-
-These sub-versions can also be used as floating point numbers, so
-you can do things such as
-
-	print "You've got an unstable perl\n" if $] == 5.00303;
-
-You can also require particular version (or later) with
-
-	use 5.003_03;    # the "_" is optional
-
-Sub-versions produced by the members of perl5-porters are usually
-available on CPAN in the F directory.
+Perl releases produced by the members of perl5-porters are usually
+available on CPAN in the F and F
+directories.
 
 =head2 Maintenance and Development Subversions
 
-As an experiment, starting with version 5.004, subversions _01 through
-_49 will be reserved for bug-fix maintenance releases, and subversions
-_50 through _99 will be available for unstable development versions.
-
-The separate bug-fix track is being established to allow us an easy
-way to distribute important bug fixes without waiting for the
-developers to untangle all the other problems in the current
-developer's release.
+The first rule of maintenance work is "First, do no harm."
 
 Trial releases of bug-fix maintenance releases are announced on
 perl5-porters. Trial releases use the new subversion number (to avoid
 testers installing it over the previous release) and include a 'local
-patch' entry in patchlevel.h.
+patch' entry in patchlevel.h. The distribution file contains the
+string C to make clear that the file is not meant for
+public consumption.
 
-Watch for announcements of maintenance subversions in
-comp.lang.perl.announce.
+In general, the names of official distribution files for the public
+always match the regular expression:
 
-The first rule of maintenance work is "First, do no harm."
+    ^perl\d+\.(\d+)\.\d+(-MAINT_TRIAL_\d+)\.tar\.gz$
 
-=head2 Why such a complicated scheme?
+C<$1> in the pattern is always an even number for maintenance
+versions, and odd for developer releases.
 
-Two reasons, really.  At least.
-
-First, we need some way to identify and release collections of patches
-that are known to have new features that need testing and exploration.  The
-subversion scheme does that nicely while fitting into the
-C mold.
-
-Second, since most of the folks who help maintain perl do so on a
-free-time voluntary basis, perl development does not proceed at a
-precise pace, though it always seems to be moving ahead quickly.
-We needed some way to pass around the "patch pumpkin" to allow
-different people chances to work on different aspects of the
-distribution without getting in each other's way.  It wouldn't be
-constructive to have multiple people working on incompatible
-implementations of the same idea.  Instead what was needed was
-some kind of "baton" or "token" to pass around so everyone knew
-whose turn was next.
+In the past it has been observed that pumkings tend to invent new
+naming conventions on the fly. If you are a pumpking, before you
+invent a new name for any of the three types of perl distributions,
+please inform the guys from the CPAN who are doing indexing and
+provide the trees of symlinks and the like. They will have to know
+I what you decide.
 
 =head2 Why is it called the patch pumpkin?
 
@@ -155,7 +130,7 @@ No one was allowed to make backups unless they had the "backup pumpkin".
 
 The name has stuck.
 
-=head1 Philosophical Issues in Patching Perl
+=head1 Philosophical Issues in Patching and Porting Perl
 
 There are no absolute rules, but there are some general guidelines I
 have tried to follow as I apply patches to the perl sources.
@@ -174,6 +149,16 @@ generalized the process of building libperl so that NeXT and SVR4 users
 could still get their work done, but others could build a shared
 libperl if they wanted to as well.
 
+Contain your changes carefully.  Assume nothing about other operating
+systems, not even closely related ones.  Your changes must not affect
+other platforms.
+
+Spy shamelessly on how similar patching or porting issues have been
+settled elsewhere.
+
+If feasible, try to keep filenames 8.3-compliant to humor those poor
+souls that get joy from running Perl under such dire limitations.
+
 =head2 Seek consensus on major changes
 
 If you are making big changes, don't do it in secret.  Discuss the
@@ -196,6 +181,88 @@ that the machine-specific #ifdef's may not be valid across major
 releases of the operating system.  Further, the feature-specific tests
 may help out folks on another platform who have the same problem.
 
+=head2 Machine-specific files
+
+=over 4
+
+=item source code
+
+If you have many machine-specific #defines or #includes, consider
+creating an "osish.h" (os2ish.h, vmsish.h, and so on) and including
+that in perl.h.  If you have several machine-specific files (function
+emulations, function stubs, build utility wrappers) you may create a
+separate subdirectory (djgpp, win32) and put the files in there.
+Remember to update C when you add files.
+
+If your system supports dynamic loading but none of the existing
+methods at F work for you, you must write
+a new one.  Study the existing ones to see what kind of interface
+you must supply.
+
+=item build hints
+
+There are two kinds of hints: hints for building Perl and hints for
+extensions.   The former live in the C subdirectory, the latter
+in C subdirectories.
+
+The top level hints are Bourne-shell scripts that set, modify and
+unset appropriate Configure variables, based on the Configure command
+line options and possibly existing config.sh and Policy.sh files from
+previous Configure runs.
+
+The extension hints are written Perl (by the time they are used
+miniperl has been built) and control the building of their respective
+extensions.  They can be used to for example manipulate compilation
+and linking flags.
+
+=item build and installation Makefiles, scripts, and so forth
+
+Sometimes you will also need to tweak the Perl build and installation
+procedure itself, like for example F and F.
+Tread very carefully, even more than usual.  Contain your changes
+with utmost care.
+
+=item test suite
+
+Many of the tests in C subdirectory assume machine-specific things
+like existence of certain functions, something about filesystem
+semantics, certain external utilities and their error messages.  Use
+the C<$^O> and the C module (which contains the results of the
+Configure run, in effect the C converted to Perl) to either
+skip (preferably not) or customize (preferable) the tests for your
+platform.
+
+=item modules
+
+Certain standard modules may need updating if your operating system
+sports for example a native filesystem naming.  You may want to update
+some or all of the modules File::Basename, File::Spec, File::Path, and
+File::Copy to become aware of your native filesystem syntax and
+peculiarities.
+
+=item documentation
+
+If your operating system comes from outside UNIX you almost certainly
+will have differences in the available operating system functionality
+(missing system calls, different semantics, whatever).  Please
+document these at F.  If your operating system is
+the first B to have a system call also update the list of
+"portability-bewares" at the beginning of F.
+
+A file called F at the top level that explains things
+like how to install perl at this platform, where to get any possibly
+required additional software, and for example what test suite errors
+to expect, is nice too.
+
+You may also want to write a separate F<.pod> file for your operating
+system to tell about existing mailing lists, os-specific modules,
+documentation, whatever.  Please name these along the lines of
+FI.pod.  [unfinished: where to put this file (the pod/
+subdirectory, of course: but more importantly, which/what index files
+should be updated?)]
+
+=back
+
 =head2 Allow for lots of testing
 
 We should never release a main version without testing it as a
@@ -211,7 +278,7 @@ that some of those things will be just plain broken and need to be fixed,
 but, in general, we ought to try to avoid breaking widely-installed
 things.
 
-=head2 Automate generation of derivative files
+=head2 Automated generation of derivative files
 
 The F, F, F, and F files
 are all automatically generated by perl scripts.  In general, don't
@@ -219,11 +286,14 @@ patch these directly; patch the data files instead.
 
 F and F are also automatically generated by
 B.  In general, you should patch the metaconfig units
-instead of patching these files directly.  However, very minor changes to
-F may be made in between major sync-ups with the metaconfig
-units, which tends to be complicated operations.  But be careful, this
-can quickly spiral out of control.  Running metaconfig is not really
-hard.
+instead of patching these files directly.  However, very minor changes
+to F may be made in between major sync-ups with the
+metaconfig units, which tends to be complicated operations.  But be
+careful, this can quickly spiral out of control.  Running metaconfig
+is not really hard.
+
+Also F is automatically produced from F.
+In general, look out for all F<*.SH> files.
 
 Finally, the sample files in the F subdirectory are
 generated automatically by the script F included 
@@ -411,6 +481,9 @@ output statements mean the patch won't apply cleanly.  Long ago I
 started to fix F to detect this, but I never completed the
 task.
 
+If C changes, make sure you run C to
+update the corresponding VMS files.  See L.
+
 Some additional notes from Larry on this:
 
 Don't forget to regenerate perly_c.diff.
@@ -520,8 +593,8 @@ things that need to be fixed in Configure.
 
 =head2 VMS-specific updates
 
-If you have changed F, then you may want to update
-F by running C.
+If you have changed F or F, then you most probably want
+to update F by running C.
 
 The Perl version number appears in several places under F.
 It is courteous to update these versions.  For example, if you are
@@ -628,6 +701,42 @@ supports dynamic loading, you can also test static loading with
 You can also hand-tweak your config.h to try out different #ifdef
 branches.
 
+=head1 Running Purify
+
+Purify is a commercial tool that is helpful in identifying memory
+overruns, wild pointers, memory leaks and other such badness.  Perl
+must be compiled in a specific way for optimal testing with Purify.
+
+Use the following commands to test perl with Purify:
+
+	sh Configure -des -Doptimize=-g -Uusemymalloc -Dusemultiplicity \
+	    -Accflags=-DPURIFY
+	setenv PURIFYOPTIONS "-chain-length=25"
+	make all pureperl
+	cd t
+	ln -s ../pureperl perl
+	setenv PERL_DESTRUCT_LEVEL 5
+	./perl TEST
+
+Disabling Perl's malloc allows Purify to monitor allocations and leaks
+more closely; using Perl's malloc will make Purify report most leaks
+in the "potential" leaks category.  Enabling the multiplicity option
+allows perl to clean up thoroughly when the interpreter shuts down, which
+reduces the number of bogus leak reports from Purify.  The -DPURIFY
+enables any Purify-specific debugging code in the sources.
+
+Purify outputs messages in "Viewer" windows by default.  If you don't have
+a windowing environment or if you simply want the Purify output to
+unobtrusively go to a log file instead of to the interactive window,
+use the following options instead:
+
+	setenv PURIFYOPTIONS "-chain-length=25 -windows=no -log-file=perl.log \
+	    -append-logfile=yes"
+
+The only currently known leaks happen when there are compile-time errors
+within eval or require.  (Fixing these is non-trivial, unfortunately, but
+they must be fixed eventually.)
+
 =head1 Common Gotcha's
 
 =over 4
@@ -1008,33 +1117,6 @@ may find metaconfig's units clumsy to work with.
 
 =back
 
-=head2 @INC search order
-
-By default, the list of perl library directories in @INC is the
-following:
-
-    $archlib
-    $privlib
-    $sitearch
-    $sitelib
-
-Specifically, on my Solaris/x86 system, I run
-B and I have the following
-directories:
-
-    /opt/perl/lib/i86pc-solaris/5.00307
-    /opt/perl/lib
-    /opt/perl/lib/site_perl/i86pc-solaris
-    /opt/perl/lib/site_perl
-
-That is, perl's directories come first, followed by the site-specific
-directories.
-
-The site libraries come second to support the usage of extensions
-across perl versions.  Read the relevant section in F for
-more information.  If we ever make $sitearch version-specific, this
-topic could be revisited.
-
 =head2 Why isn't there a directory to override Perl's library?
 
 Mainly because no one's gotten around to making one.  Note that
@@ -1158,18 +1240,6 @@ what I came up with off the top of my head.
 
 =over 4
 
-=item installprefix
-
-I think we ought to support
-
-    Configure -Dinstallprefix=/blah/blah
-
-Currently, we support B<-Dprefix=/blah/blah>, but the changing the install
-location has to be handled by something like the F trick
-described in F.  AFS users also are treated specially.
-We should probably duplicate the metaconfig prefix stuff for an
-install prefix.
-
 =item Configure -Dsrc=/blah/blah
 
 We should be able to emulate B.  Tom Tromey
@@ -1178,16 +1248,6 @@ the dist-users mailing list along these lines.  They have been folded
 back into the main distribution, but various parts of the perl
 Configure/build/install process still assume src='.'.
 
-=item Directory for vendor-supplied modules?
-
-If a vendor supplies perl, but wants to leave $siteperl and $sitearch
-for the local user to use, where should the vendor put vendor-supplied
-modules (such as Tk.so?)  If the vendor puts them in $archlib, then
-they need to be updated each time the perl version is updated.
-Perhaps we need a set of libries $vendorperl and $vendorarch that
-track $apiversion (like the $sitexxx directories do) rather than
-just $version (like the main perl directory).
-
 =item Hint file fixes
 
 Various hint files work around Configure problems.  We ought to fix
@@ -1198,47 +1258,6 @@ Configure so that most of them aren't needed.
 Some of the hint file information (particularly dynamic loading stuff)
 ought to be fed back into the main metaconfig distribution.
 
-=item Catch GNU Libc "Stub" functions
-
-Some functions (such as lchown()) are present in libc, but are
-unimplmented.  That is, they always fail and set errno=ENOSYS.
-
-Thomas Bushnell provided the following sample code and the explanation
-that follows:
-
-    /* System header to define __stub macros and hopefully few prototypes,
-	which can conflict with char FOO(); below.  */
-    #include 
-    /* Override any gcc2 internal prototype to avoid an error.  */
-    /* We use char because int might match the return type of a gcc2
-	builtin and then its argument prototype would still apply.  */
-    char FOO();
-
-    int main() {
-
-    /* The GNU C library defines this for functions which it implements
-	to always fail with ENOSYS.  Some functions are actually named
-	something starting with __ and the normal name is an alias.  */
-    #if defined (__stub_FOO) || defined (__stub___FOO)
-    choke me
-    #else
-    FOO();
-    #endif
-
-    ; return 0; }
-
-The choice of  is essentially arbitrary.  The GNU libc
-macros are found in .  You can include that file instead
-of  (which itself includes ) if you test for
-its existence first.   is assumed to exist on every system,
-which is why it's used here.  Any GNU libc header file will include
-the stubs macros.  If either __stub_NAME or __stub___NAME is defined,
-then the function doesn't actually exist.  Tests using  work
-on every system around.
-
-The declaration of FOO is there to override builtin prototypes for
-ANSI C functions.
-
 =back
 
 =head2 Probably good ideas waiting for round tuits
@@ -1320,4 +1339,4 @@ All opinions expressed herein are those of the authorZ<>(s).
 
 =head1 LAST MODIFIED
 
-$Id: pumpkin.pod,v 1.22 1998/07/22 16:33:55 doughera Released $
+$Id: pumpkin.pod,v 1.23 2000/01/13 19:45:13 doughera Released $
diff --git a/contrib/perl5/README b/contrib/perl5/README
index e3ccad49bc08..0925b98018cc 100644
--- a/contrib/perl5/README
+++ b/contrib/perl5/README
@@ -1,7 +1,7 @@
 
 			   Perl Kit, Version 5.0
 
-		       Copyright 1989-1999, Larry Wall
+		       Copyright 1989-2000, Larry Wall
 			    All rights reserved.
 
     This program is free software; you can redistribute it and/or modify
@@ -50,9 +50,9 @@
 --------------------------------------------------------------------------
 
 Perl is a language that combines some of the features of C, sed, awk
-and shell.  See the manual page for more hype.  There are also two Nutshell
-Handbooks published by O'Reilly & Assoc.  See pod/perlbook.pod
-for more information.
+and shell.  See the manual page for more hype.  There are also many Perl
+books available, covering a wide variety of topics, from various publishers.
+See pod/perlbook.pod for more information.
 
 Please read all the directions below before you proceed any further, and
 then follow them carefully.
@@ -62,16 +62,10 @@ in MANIFEST.
 
 Installation
 
-1) Detailed instructions are in the file INSTALL which you should read.
-In brief, the following should work on most systems:
-	rm -f config.sh
-	sh Configure
-	make
-	make test
-	make install
-For most systems, it should be safe to accept all the Configure defaults.
-(It is recommended that you accept the defaults the first time you build
-or if you have any problems building.)
+1) Detailed instructions are in the file "INSTALL", which you should
+read if you are either installing on a system resembling Unix
+or porting perl to another platform.  For non-Unix platforms, see the
+corresponding README.
 
 2) Read the manual entries before running perl.
 
@@ -81,18 +75,16 @@ If you have a problem, there's someone else out there who either has had
 or will have the same problem.  It's usually helpful if you send the
 output of the "myconfig" script in the main perl directory.
 
-If you've succeeded in compiling perl, the perlbug script in the utils/
+If you've succeeded in compiling perl, the perlbug script in the "utils"
 subdirectory can be used to help mail in a bug report.
 
 If possible, send in patches such that the patch program will apply them.
 Context diffs are the best, then normal diffs.  Don't send ed scripts--
 I've probably changed my copy since the version you have.
 
-Watch for perl patches in comp.lang.perl.announce.  Patches will generally
-be in a form usable by the patch program.  If you are just now bringing
-up perl and aren't sure how many patches there are, write to me and I'll
-send any you don't have.  Your current patch level is shown in
-patchlevel.h.
+The latest versions of perl are always available on the various CPAN
+(Comprehensive Perl Archive Network) sites around the world.
+See .
 
 
 Just a personal note:  I want you to know that I create nice things like this
diff --git a/contrib/perl5/README.Y2K b/contrib/perl5/README.Y2K
new file mode 100644
index 000000000000..378db15c11a0
--- /dev/null
+++ b/contrib/perl5/README.Y2K
@@ -0,0 +1,47 @@
+The following information about Perl and the year 2000 is a modified
+version of the information that can be found in the Frequently Asked
+Question (FAQ) documents.
+
+Does Perl have a year 2000 problem?  Is Perl Y2K compliant?
+
+Short answer: No, Perl does not have a year 2000 problem.  Yes,
+       Perl is Y2K compliant (whatever that means).  The
+       programmers you've hired to use it, however, probably are
+       not.  If you want perl to complain when your programmers
+       create programs with certain types of possible year 2000
+       problems, a build option allows you to turn on warnings.
+
+Long answer: The question belies a true understanding of the
+       issue.  Perl is just as Y2K compliant as your pencil
+       --no more, and no less.  Can you use your pencil to write
+       a non-Y2K-compliant memo?  Of course you can.  Is that
+       the pencil's fault?  Of course it isn't.
+
+       The date and time functions supplied with perl (gmtime and
+       localtime) supply adequate information to determine the
+       year well beyond 2000 (2038 is when trouble strikes for
+       32-bit machines).  The year returned by these functions
+       when used in an array context is the year minus 1900.  For
+       years between 1910 and 1999 this happens to be a 2-digit
+       decimal number. To avoid the year 2000 problem simply do
+       not treat the year as a 2-digit number.  It isn't.
+
+       When gmtime() and localtime() are used in scalar context
+       they return a timestamp string that contains a fully-
+       expanded year.  For example, $timestamp =
+       gmtime(1005613200) sets $timestamp to "Tue Nov 13 01:00:00
+       2001".  There's no year 2000 problem here.
+
+       That doesn't mean that Perl can't be used to create non-
+       Y2K compliant programs.  It can.  But so can your pencil.
+       It's the fault of the user, not the language.  At the risk
+       of inflaming the NRA: ``Perl doesn't break Y2K, people
+       do.''  See http://language.perl.com/news/y2k.html for a
+       longer exposition.
+
+       If you want perl to warn you when it sees a program which
+       catenates a number with the string "19" -- a common
+       indication of a year 2000 problem -- build perl using the
+       Configure option  "-Accflags=-DPERL_Y2KWARN".
+       (See the file INSTALL for more information about building
+       perl.)
diff --git a/contrib/perl5/README.posix-bc b/contrib/perl5/README.posix-bc
new file mode 100644
index 000000000000..34bcad75230f
--- /dev/null
+++ b/contrib/perl5/README.posix-bc
@@ -0,0 +1,131 @@
+This is a first ported perl for the POSIX subsystem in BS2000 VERSION
+'V121', OSD V3.1, POSIX Shell V03.1A55.  It may work on other
+versions, but that's the one we've tested it on.
+
+You may need the following GNU programs in order to install perl:
+
+gzip:
+
+We used version 1.2.4, which could be installed out of the box with
+one failure during 'make check'.
+
+bison:
+
+The yacc coming with BS2000 POSIX didn't work for us.  So we had to
+use bison.  We had to make a few changes to perl in order to use the
+pure (reentrant) parser of bison.  We used version 1.25, but we had to
+add a few changes due to EBCDIC.
+
+
+UNPACKING:
+==========
+
+To extract an ASCII tar archive on BS2000 POSIX you need an ASCII
+filesystem (we used the mountpoint /usr/local/ascii for this).  Now
+you extract the archive in the ASCII filesystem without I/O-conversion:
+
+cd /usr/local/ascii
+export IO_CONVERSION=NO
+gunzip < /usr/local/src/perl.tar.gz | pax -r
+
+You may ignore the error message for the first element of the archive
+(this doesn't look like a tar archive / skipping to next file...),
+it's only the directory which will be made anyway.
+
+After extracting the archive you copy the whole directory tree to your
+EBCDIC filesystem.  This time you use I/O-conversion:
+
+cd /usr/local/src
+IO_CONVERSION=YES
+cp -r /usr/local/ascii/perl5.005_02 ./
+
+
+COMPILING:
+==========
+
+There is a "hints" file for posix-bc that specifies the correct values
+for most things.  The major problem is (of course) the EBCDIC character
+set.
+
+Configure did everything except the perl parser.
+
+Because of our problems with the native yacc we used GNU bison to
+generate a pure (=reentrant) parser for perly.y.  So our yacc is
+really the following script:
+
+-----8<-----/usr/local/bin/yacc-----8<-----
+#! /usr/bin/sh
+
+# Bison as a reentrant yacc:
+
+# save parameters:
+params=""
+while [[ $# -gt 1 ]]; do
+    params="$params $1"
+    shift
+done
+
+# add flag %pure_parser:
+
+tmpfile=/tmp/bison.$$.y
+echo %pure_parser > $tmpfile
+cat $1 >> $tmpfile
+
+# call bison:
+
+echo "/usr/local/bin/bison --yacc $params $1\t\t\t(Pure Parser)"
+/usr/local/bin/bison --yacc $params $tmpfile
+
+# cleanup:
+
+rm -f $tmpfile
+-----8<----------8<-----
+
+We still use the normal yacc for a2p.y though!!!  We made a softlink
+called byacc to distinguish between the two versions:
+
+ln -s /usr/bin/yacc /usr/local/bin/byacc
+ 
+We build perl using both GNU make and the native make.
+
+
+TESTING:
+========
+
+We still got a few errors during 'make test'.  Most of them are the
+result of using bison.  Bison prints 'parser error' instead of 'syntax
+error', so we may ignore them.  One error in the test op/regexp (and
+op/regexp_noamp) seems a bit critical, the result was an 'Out of
+memory' (core dump with op/regexp_noamp).  The following list shows
+our errors, your results may differ:
+
+op/misc.............FAILED tests 45-46
+op/pack.............FAILED tests 58-60
+op/regexp...........FAILED tests 405-492      (core dump)
+op/regexp_noamp.....FAILED tests 405-492      (core dump)
+pragma/overload.....FAILED tests 152-153, 170-171
+pragma/subs.........FAILED tests 1-2
+pragma/warning......FAILED tests 121, 127, 130, 142
+lib/cgi-html........dubious, FAILED tests 1-17 (ALL)
+lib/complex.........FAILED tests 264, 484
+lib/dumper..........FAILED tests MANY
+Failed 7/190 test scripts, 96.32% okay. 234/6549 subtests failed, 96.43% okay.
+
+
+INSTALLING:
+===========
+
+We have no nroff on BS2000 POSIX (yet), so we ignored any errors while
+installing the documentation.
+
+
+USING PERL:
+===========
+
+BS2000 POSIX doesn't support the shebang notation
+('#!/usr/local/bin/perl'), so you have to use the following lines
+instead:
+
+: # use perl
+    eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
+        if $running_under_some_shell;
diff --git a/contrib/perl5/README.threads b/contrib/perl5/README.threads
index 136b156e7ff8..15d36de6446c 100644
--- a/contrib/perl5/README.threads
+++ b/contrib/perl5/README.threads
@@ -1,53 +1,89 @@
-NOTE
+NOTE: This documentation describes the style of threading that was
+available in 5.005.  Perl v5.6 also has the early beginnings of
+interpreter-based threads support (which is what will be enabled by
+default when you simply ask for -Dusethreads).  However, be advised
+that interpreter threads cannot as yet be created from the Perl level
+yet.  If you're looking to create threads from within Perl, chances
+are you _don't_ want interpreter threads, but want the older support
+for threads described below, enabled with:
 
-Threading is a highly experimental feature.  There are still a 
-few race conditions that show up under high contention on SMP
+    sh Configure -Dusethreads -Duse5005threads
+
+The rest of this document only applies to the use5005threads style of
+threads.
+---------------------------------------------------------------------------
+
+Support for threading is still in the highly experimental stages.  There
+are known race conditions that show up under high contention on SMP
 machines.  Internal implementation is still subject to changes.
 It is not recommended for production use at this time.
 
+---------------------------------------------------------------------------
+
 Building
 
-If you want to build with multi-threading support and you are
-running one of the following:
+If your system is in the following list you should be able to just:
 
-  * Linux 2.x (with the LinuxThreads library installed: that's
-    the linuxthreads and linuxthreads-devel RPMs for RedHat)
-
-  * Digital UNIX 4.x
-
-  * Digital UNIX 3.x (Formerly DEC OSF/1), see additional note below
-
-  * Solaris 2.x for recentish x (2.5 is OK)
-
-  * IRIX 6.2 or newer. 6.2 will require a few os patches.
-    IMPORTANT: Without patch 2401, a kernel bug in IRIX 6.2 will
-    cause your machine to panic and crash when running threaded perl.
-    IRIX 6.3 and up should be OK. See lower down for patch details.
-
-then you should be able to use
-
-    ./Configure -Dusethreads -des
+    ./Configure -Dusethreads -Duse5005threads -des
     make
 
-and ignore the rest of this "Building" section. If it doesn't
-work or you are using another platform which you believe supports
-POSIX.1c threads then read on.  Additional information may be in
-a platform-specific "hints" file in the hints/ subdirectory.
+and ignore the rest of this "Building" section.  If not, continue
+from the "Problems" section.
 
-On other platforms that use Configure to build perl, omit the -d
-from your ./Configure arguments. For example, use:
+	* Linux 2.* (with the LinuxThreads library installed:
+	  that's the linuxthreads and linuxthreads-devel RPMs
+	  for RedHat)
 
-    ./Configure -Dusethreads
+	* Tru64 UNIX (formerly Digital UNIX formerly DEC OSF/1)
+	  (see additional note below)
+
+	* Solaris 2.* for recentish x (2.5 is OK)
+
+	* IRIX 6.2 or newer. 6.2 will require a few OS patches.
+	  IMPORTANT: Without patch 2401 (or its replacement),
+	  a kernel bug in IRIX 6.2 will cause your machine to
+	  panic and crash when running threaded perl.
+	  IRIX 6.3 and up should be OK. See lower down for patch details.
+
+	* AIX 4.1.5 or newer.
+
+	* FreeBSD 2.2.8 or newer.
+
+	* OpenBSD
+
+	* NeXTstep, OpenStep
+
+	* OS/2
+
+	* DOS DJGPP
+
+	* VM/ESA
+
+---------------------------------------------------------------------------
+
+Problems
+
+If the simple way doesn't work or you are using another platform which
+you believe supports POSIX.1c threads then read on.  Additional
+information may be in a platform-specific "hints" file in the hints/
+subdirectory.
+
+On platforms that use Configure to build perl, omit the -d from your
+./Configure arguments. For example, use:
+
+    ./Configure -Dusethreads -Duse5005threads
 
 When Configure prompts you for ccflags, insert any other arguments in
-there that your compiler needs to use POSIX threads. When Configure
-prompts you for linking flags, include any flags required for
-threading (usually nothing special is required here).  Finally, when
-COnfigure prompts you for libraries, include any necessary libraries
-(e.g. -lpthread).  Pay attention to the order of libraries.  It is
-probably necessary to specify your threading library *before* your
-standard C library, e.g.  it might be necessary to have -lpthread -lc,
-instead of -lc -lpthread.
+there that your compiler needs to use POSIX threads (-D_REENTRANT,
+-pthreads, -threads, -pthread, -thread, are good guesses). When
+Configure prompts you for linking flags, include any flags required
+for threading (usually nothing special is required here).  Finally,
+when Configure prompts you for libraries, include any necessary
+libraries (e.g. -lpthread).  Pay attention to the order of libraries.
+It is probably necessary to specify your threading library *before*
+your standard C library, e.g.  it might be necessary to have -lpthread
+-lc, instead of -lc -lpthread.  You may also need to use -lc_r instead
+of -lc.
 
 Once you have specified all your compiler flags, you can have Configure
 accept all the defaults for the remainder of the session by typing  &-d
@@ -71,7 +107,7 @@ For Digital Unix 4.x:
 
 For Digital Unix 3.x (Formerly DEC OSF/1):
     Add -DOLD_PTHREADS_API to ccflags
-    If compiling with the GNU cc compiler, remove -thread from ccflags
+    If compiling with the GNU cc compiler, remove -threads from ccflags
 
     (The following should be done automatically if you call Configure
       with the -Dusethreads option).
@@ -93,6 +129,7 @@ For IRIX:
     For IRIX 6.3 and 6.4 the pthreads should work out of the box.
     Thanks to Hannu Napari  for the IRIX
     pthreads patches information.
+
 For AIX:
     (This should all be done automatically by the hint file).
     Change cc to xlc_r or cc_r.
@@ -107,6 +144,12 @@ For Win32:
 Now you can do a
     make
 
+When you succeed in compiling and testing ("make test" after your
+build) a threaded Perl in a platform previosuly unknown to support
+threaded perl, please let perlbug@perl.com know about your victory.
+Explain what you did in painful detail.
+
+---------------------------------------------------------------------------
 
 O/S specific bugs
 
@@ -138,8 +181,8 @@ has this fixed but the following patch can be applied to 0.5 for now:
 Building the Thread extension
 
 The Thread extension is now part of the main perl distribution tree.
-If you did Configure -Dusethreads then it will have been added to
-the list of extensions automatically.
+If you did Configure -Dusethreads -Duse5005threads then it will have been
+added to the list of extensions automatically.
 
 You can try some of the tests with
     cd ext/Thread
@@ -155,6 +198,7 @@ Try running the main perl test suite too. There are known
 failures for some of the DBM/DB extensions (if their underlying
 libraries were not compiled to be thread-aware).
 
+---------------------------------------------------------------------------
 
 Bugs
 
@@ -164,8 +208,7 @@ tested at all in recent times.)
 
 * There may still be races where bugs show up under contention.
 
-* Need to document "lock", Thread.pm, Queue.pm, ...
-
+---------------------------------------------------------------------------
 
 Debugging
 
@@ -178,6 +221,7 @@ have to delete the lines in perl.c which say
         DEBUG_S(signal(SIGSEGV, (void(*)(int))catch_sigsegv););
     #endif
 
+---------------------------------------------------------------------------
 
 Background
 
@@ -287,3 +331,6 @@ Andy Dougherty 
 
 Other minor updates 10 Feb 1999 by
 Gurusamy Sarathy
+
+More platforms added 26 Jul 1999 by
+Jarkko Hietaniemi
diff --git a/contrib/perl5/Todo b/contrib/perl5/Todo
index 5867c4068055..ba01d33db6f2 100644
--- a/contrib/perl5/Todo
+++ b/contrib/perl5/Todo
@@ -1,3 +1,11 @@
+Always check out the latest perl5-porters discussions on these subjects
+before embarking on an implementation tour.
+
+Bugs
+	remove recursion in regular expression engine
+	fix memory leaks during compile failures
+	make signal handling safe
+
 Tie Modules
 	VecArray		Implement array using vec()
 	SubstrArray		Implement array using substr()
@@ -5,54 +13,80 @@ Tie Modules
 	ShiftSplice		Defines shift et al in terms of splice method
 
 Would be nice to have
-	pack "(stuff)*"
-	Contiguous bitfields in pack/unpack
+	pack "(stuff)*", "(stuff)?", "(stuff)+", "(stuff)4", ...
+	contiguous bitfields in pack/unpack
 	lexperl
-	Bundled perl preprocessor
-	Use posix calls internally where possible
+	bundled perl preprocessor/macro facility
+	    this would solve many of the syntactic nice-to-haves
+	use posix calls internally where possible
 	gettimeofday (possibly best left for a module?)
 	format BOTTOM
 	-i rename file only when successfully changed
-	All ARGV input should act like <>
+	all ARGV input should act like <>
 	report HANDLE [formats].
 	support in perlmain to rerun debugger
 	regression tests using __DIE__ hook
-	reference to compiled regexp
 	lexically scoped functions: my sub foo { ... }
-	lvalue functions
+		the basic concept is easy and sound,
+		the difficulties begin with self-referential
+		and mutually referential lexical subs: how to
+		declare the subs?
+	lexically scoped typeglobs? (lexical I/O handles work now)
+        wantlvalue?  more generalized want()/caller()?
+	named prototypes: sub foo ($foo, @bar) { ... } ?
 	regression/sanity tests for suidperl
-	Full 64 bit support (i.e. "long long")
-	Generalise Errno way of extracting cpp symbols and use that in
-	    Errno and Fcntl (ExtUtils::CppSymbol?)
+	iterators/lazy evaluation/continuations/first/
+	    first_defined/short-circuiting grep/??
+	    This is a very thorny and hotly debated subject,
+	    tread carefully and do your homework first
+	generalise Errno way of extracting cpp symbols and use that in
+	    Errno, Fcntl, POSIX (ExtUtils::CppSymbol?)
+	the _r-problem: for all the {set,get,end}*() system database
+	     calls (and a couple more: readdir, *rand*, crypt, *time,
+	     tmpnam) there are in many systems the _r versions
+	     to be used in re-entrant (=multithreaded) code
+	     Icky things: the _r API is not standardized and
+	     the _r-forms require per-thread data to store their state
+	memory profiler: turn malloc.c:Perl_get_mstats() into
+	    an extension (Devel::MProf?) that would return the malloc
+	    stats in a nice Perl datastructure (also a simple interface
+	    to return just the grand total would be good)
+	cross-compilation support
+	    host vs target: compile in the host, get the executable to
+	    the target, get the possible input files to the target,
+	    execute in the target (and do not assume a UNIXish shell
+	    in the target! e.g. no command redirection can be assumed),
+	    get possible output files back to to host.  this needs to work
+	    both during Configure and during the build.  You cannot assume
+	    shared filesystems between the host and the target (you may need
+	    e.g. ftp), executing the target executable may involve e.g. rsh
+	a way to make << and >> to shift bitvectors instead of numbers
 
 Possible pragmas
 	debugger
-	optimize (use less memory, CPU)
+	optimize (use less qw[memory cpu])
 
 Optimizations
 	constant function cache
 	switch structures
-	eval qw() at compile time
 	foreach(reverse...)
-	Set KEEP on constant split
-	Cache eval tree (unless lexical outer scope used (mark in &compiling?))
+	cache eval tree (unless lexical outer scope used (mark in &compiling?))
 	rcatmaybe
-	Shrink opcode tables via multiple implementations selected in peep
-	Cache hash value?  (Not a win, according to Guido)
-	Optimize away @_ where possible
+	shrink opcode tables via multiple implementations selected in peep
+	cache hash value?  (Not a win, according to Guido)
+	optimize away @_ where possible
+	tail recursion removal
 	"one pass" global destruction
-	Optimize sort by { $a <=> $b }
-	Rewrite regexp parser for better integrated optimization
+	rewrite regexp parser for better integrated optimization
 	LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
 
 Vague possibilities
-	ref function in list context
+	ref function in list context?
 	make tr/// return histogram in list context?
-	Loop control on do{} et al
-	Explicit switch statements
+	loop control on do{} et al
+	explicit switch statements
 	built-in globbing
 	compile to real threaded code
 	structured types
 	autocroak?
-	Modifiable $1 et al
-
+	modifiable $1 et al
diff --git a/contrib/perl5/Todo-5.6 b/contrib/perl5/Todo-5.6
new file mode 100644
index 000000000000..9abeb55ebb7a
--- /dev/null
+++ b/contrib/perl5/Todo-5.6
@@ -0,0 +1,156 @@
+Unicode support
+    finish byte <-> utf8 and localencoding <-> utf8 conversions
+    make substr($bytestr,0,0,$charstr) do the right conversion
+    add Unicode::Map equivivalent to core
+    add support for I/O disciplines
+        - a way to specify disciplines when opening things:
+	    open(F, "<:crlf :utf16", $file)
+        - a way to specify disciplines for an already opened handle:
+	    binmode(STDIN, ":slurp :raw")
+	- a way to set default disciplines for all handle constructors:
+	    use open IN => ":any", OUT => ":utf8", SYS => ":utf16"
+    eliminate need for "use utf8;"
+    autoload byte.pm when byte:: is seen by the parser
+    check uv_to_utf8() calls for buffer overflow
+    (see also "Locales", "Regexen", and "Miscellaneous")
+
+Multi-threading
+    support "use Thread;" under useithreads
+    add mechanism to:
+      - create new interpreter in a different thread
+      - exchange data between interpreters/threads
+      - share namespaces between interpreters/threads
+    work out consistent semantics for exit/die in threads
+    support for externally created threads?
+    Thread::Pool?
+
+Compiler
+    auto-produce executable
+    typed lexicals should affect B::CC::load_pad
+    workarounds to help Win32
+    END blocks need saving in compiled output
+    _AUTOLOAD prodding
+    fix comppadlist (names in comppad_name can have fake SvCUR
+	from where newASSIGNOP steals the field)
+
+Namespace cleanup
+    CPP-space:	  restrict what we export from headers when !PERL_CORE
+    header-space: move into CORE/perl/?
+    API-space:    complete the list of things that constitute public api
+
+Configure
+    fix the vicious cyclic multidependency of cc <-> libpth <-> loclibpth
+	libswanted <-> usethreads <-> use64bitint <-> use64bitall <->
+  	uselargefiles <-> ...  
+    make configuring+building away from source directory work (VPATH et al)
+	this is related to: cross-compilation configuring (see Todo)
+    _r support (see Todo for mode detailed description)
+    POSIX 1003.1 1996 Edition support--realtime stuff:
+	POSIX semaphores, message queues, shared memory, realtime clocks,
+	timers, signals (the metaconfig units mostly already exist for these)
+    UNIX98 support: reader-writer locks, realtime/asynchronous IO
+    IPv6 support: see RFC2292, RFC2553
+
+Long doubles
+    figure out where the PV->NV->PV conversion gets it wrong at least
+    in AIX and Tru64 (V5.0 and onwards) when using long doubles: see the
+    regexp tricks we had to insert to t/comp/use.t and t/lib/bigfltpm.t,
+     (?:9|8999\d+) and the like.
+
+64-bit support
+    Configure probe for quad_t, uquad_t, and (argh) u_quad_t, they might
+    be in some systems the only thing working as quadtype and uquadtype.
+
+Locales
+    deprecate traditional/legacy locales?
+    How do locales work across packages?
+    figure out how to support Unicode locales
+	suggestion: integrate the IBM Classes for Unicode (ICU)
+	http://oss.software.ibm.com/developerworks/opensource/icu/project/
+	and check out also the Locale Converter:
+	http://alphaworks.ibm.com/tech/localeconverter
+    ICU is "portable, open-source Unicode library with:
+    charset-independent locales (with multiple locales simultaneously
+    supported in same thread; character conversions; formatting/parsing
+    for numbers, currencies, date/time and messages; message catalogs
+    (resources) ; transliteration, collation, normalization, and text
+    boundaries (grapheme, word, line-break))".
+    There is also 'iconv', either from XPG4 or GNU (glibc).
+    iconv is about character set conversions.
+    Either ICU or iconv would be valuable to get integrated
+    into Perl, Configure already probes for libiconv and . 
+
+Regexen
+   make RE engine thread-safe
+   a way to do full character set arithmetics: now one can do
+	addition, negate a whole class, and negate certain subclasses
+	(e.g. \D, [:^digit:]), but a more generic way to add/subtract/
+	intersect characters/classes, like described in the Unicode technical
+	report on Regular Expression Guidelines,
+	http://www.unicode.org/unicode/reports/tr18/
+	(amusingly, the TR notes that difference and intersection
+	 can be done using "Perl-style look-ahead")
+	difference syntax?  maybe [[:alpha:][^abc]] meaning
+	"all alphabetic expect a, b, and c"? or [[:alpha:]-[abc]]?
+	(maybe bad, as we explicitly disallow such 'ranges')
+	intersection syntax? maybe [[..]&[...]]?
+   POSIX [=bar=] and [.zap.] would nice too but there's no API for them
+   	=bar= could be done with Unicode, though, see the Unicode TR #15 about
+	normalization forms:
+	http://www.unicode.org/unicode/reports/tr15/
+	this is also a part of the Unicode 3.0:
+	http://www.unicode.org/unicode/uni2book/u2.html
+	executive summary: there are several different levels of 'equivalence'
+   approximate matching
+
+Security
+    use fchown, fchmod (and futimes?) internally when possible
+    use fchdir(how portable?)
+    create secure reliable portable temporary file modules
+    audit the standard utilities for security problems and fix them
+
+Reliable Signals
+    custom opcodes
+    alternate runops() for signal despatch
+    figure out how to die() in delayed sighandler
+    make Thread::Signal work under useithreads
+
+Win32 stuff
+    sort out the spawnvp() mess for system('a','b','c') compatibility
+    work out DLL versioning
+
+Miscellaneous
+    add new modules (Archive::Tar, Compress::Zlib, CPAN::FTP?)
+    sub-second sleep()? alarm()? time()? (integrate Time::HiRes?
+	Configure doesn't yet probe for usleep/nanosleep/ualarm but
+	the units exist)
+    floating point handling: nans, infinities, fp exception masks, etc.
+	at least the following interfaces exist: fp_classify(), fp_class(),
+	class(), isnan(), isinf(), isfinite(), finite(), isnormal(),
+	ordered(), fp_setmask(), fp_getmask(), fp_setround(), fp_getround(), 
+	ieeefp.h, fp_class.h.  There are metaconfig units for most of these.
+        Search for ifdef __osf__ in pp.c to find a temporary fix that
+	needs to be done right.
+    fix the basic arithmetics (+ - * / %) to preserve IVness/UVness if
+	both arguments are IVs/UVs
+    replace pod2html with new PodtoHtml? (requires other modules from CPAN)
+    automate testing with large parts of CPAN
+    Unicode collation? http://www.unicode.org/unicode/reports/tr10/
+    turn Cwd into an XS module?  (Configure already probes for getcwd())
+    mmap for speeding up input? (Configure already probes for the mmap family)
+    sendmsg, recvmsg? (Configure doesn't probe for these but the units exist)
+    setitimer, getitimer? (the metaconfig units exist)
+
+Ongoing
+    keep filenames 8.3 friendly, where feasible
+    upgrade to newer versions of all independently maintained modules
+    comprehensive perldelta.pod
+
+Documentation
+    describe new age patterns
+    update perl{guts,call,embed,xs} with additions, changes to API
+    convert more examples to use autovivified filehandles
+    document Win32 choices
+    spot-check all new modules for completeness
+    better docs for pack()/unpack()
+    reorg tutorials vs. reference sections
diff --git a/contrib/perl5/XSUB.h b/contrib/perl5/XSUB.h
index a6577d8fdcff..cfcad5d595a1 100644
--- a/contrib/perl5/XSUB.h
+++ b/contrib/perl5/XSUB.h
@@ -1,13 +1,56 @@
+#ifndef _INC_PERL_XSUB_H
+#define _INC_PERL_XSUB_H 1
+
+/* first, some documentation for xsubpp-generated items */
+
+/*
+=for apidoc Amn|char*|CLASS
+Variable which is setup by C to indicate the 
+class name for a C++ XS constructor.  This is always a C.  See C.
+
+=for apidoc Amn|(whatever)|RETVAL
+Variable which is setup by C to hold the return value for an 
+XSUB. This is always the proper type for the XSUB. See 
+L.
+
+=for apidoc Amn|(whatever)|THIS
+Variable which is setup by C to designate the object in a C++ 
+XSUB.  This is always the proper type for the C++ object.  See C and 
+L.
+
+=for apidoc Amn|I32|items
+Variable which is setup by C to indicate the number of 
+items on the stack.  See L.
+
+=for apidoc Amn|I32|ix
+Variable which is setup by C to indicate which of an 
+XSUB's aliases was used to invoke it.  See L.
+
+=for apidoc Am|SV*|ST|int ix
+Used to access elements on the XSUB's stack.
+
+=for apidoc AmU||XS
+Macro to declare an XSUB and its C parameter list.  This is handled by
+C.
+
+=for apidoc Ams||dXSARGS
+Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.  This
+is usually handled automatically by C.  Declares the C
+variable to indicate the number of items on the stack.
+
+=for apidoc Ams||dXSI32
+Sets up the C variable for an XSUB which has aliases.  This is usually
+handled automatically by C.
+
+=cut
+*/
+
 #define ST(off) PL_stack_base[ax + (off)]
 
-#ifdef CAN_PROTOTYPE
-#ifdef PERL_OBJECT
-#define XS(name) void name(CV* cv, CPerlObj* pPerl)
+#if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
+#  define XS(name) __declspec(dllexport) void name(pTHXo_ CV* cv)
 #else
-#define XS(name) void name(CV* cv)
-#endif
-#else
-#define XS(name) void name(cv) CV* cv;
+#  define XS(name) void name(pTHXo_ CV* cv)
 #endif
 
 #define dXSARGS				\
@@ -15,6 +58,12 @@
 	I32 ax = mark - PL_stack_base + 1;	\
 	I32 items = sp - mark
 
+#define dXSTARG SV * targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
+			     ? PAD_SV(PL_op->op_targ) : sv_newmortal())
+
+/* Should be used before final PUSHi etc. if not in PPCODE section. */
+#define XSprePUSH (sp = PL_stack_base + ax - 1)
+
 #define XSANY CvXSUBANY(cv)
 
 #define dXSI32 I32 ix = XSANY.any_i32
@@ -25,9 +74,86 @@
 #  define XSINTERFACE_CVT(ret,name) ret (*name)()
 #endif
 #define dXSFUNCTION(ret)		XSINTERFACE_CVT(ret,XSFUNCTION)
-#define XSINTERFACE_FUNC(ret,cv,f)	((XSINTERFACE_CVT(ret,))(f))
+#define XSINTERFACE_FUNC(ret,cv,f)	((XSINTERFACE_CVT(ret,cv))(f))
 #define XSINTERFACE_FUNC_SET(cv,f)	\
-		CvXSUBANY(cv).any_dptr = (void (*) _((void*)))(f)
+		CvXSUBANY(cv).any_dptr = (void (*) (pTHXo_ void*))(f)
+
+/* Simple macros to put new mortal values onto the stack.   */
+/* Typically used to return values from XS functions.       */
+
+/*
+=for apidoc Am|void|XST_mIV|int pos|IV iv
+Place an integer into the specified position C on the stack.  The
+value is stored in a new mortal SV.
+
+=for apidoc Am|void|XST_mNV|int pos|NV nv
+Place a double into the specified position C on the stack.  The value
+is stored in a new mortal SV.
+
+=for apidoc Am|void|XST_mPV|int pos|char* str
+Place a copy of a string into the specified position C on the stack. 
+The value is stored in a new mortal SV.
+
+=for apidoc Am|void|XST_mNO|int pos
+Place C<&PL_sv_no> into the specified position C on the
+stack.
+
+=for apidoc Am|void|XST_mYES|int pos
+Place C<&PL_sv_yes> into the specified position C on the
+stack.
+
+=for apidoc Am|void|XST_mUNDEF|int pos
+Place C<&PL_sv_undef> into the specified position C on the
+stack.
+
+=for apidoc Am|void|XSRETURN|int nitems
+Return from XSUB, indicating number of items on the stack.  This is usually
+handled by C.
+
+=for apidoc Am|void|XSRETURN_IV|IV iv
+Return an integer from an XSUB immediately.  Uses C.
+
+=for apidoc Am|void|XSRETURN_NV|NV nv
+Return an double from an XSUB immediately.  Uses C.
+
+=for apidoc Am|void|XSRETURN_PV|char* str
+Return a copy of a string from an XSUB immediately.  Uses C.
+
+=for apidoc Ams||XSRETURN_NO
+Return C<&PL_sv_no> from an XSUB immediately.  Uses C.
+
+=for apidoc Ams||XSRETURN_YES
+Return C<&PL_sv_yes> from an XSUB immediately.  Uses C.
+
+=for apidoc Ams||XSRETURN_UNDEF
+Return C<&PL_sv_undef> from an XSUB immediately.  Uses C.
+
+=for apidoc Ams||XSRETURN_EMPTY
+Return an empty list from an XSUB immediately.
+
+=for apidoc AmU||newXSproto
+Used by C to hook up XSUBs as Perl subs.  Adds Perl prototypes to
+the subs.
+
+=for apidoc AmU||XS_VERSION
+The version identifier for an XS module.  This is usually
+handled automatically by C.  See C.
+
+=for apidoc Ams||XS_VERSION_BOOTCHECK
+Macro to verify that a PM module's $VERSION variable matches the XS
+module's C variable.  This is usually handled automatically by
+C.  See L.
+
+=cut
+*/
+
+#define XST_mIV(i,v)  (ST(i) = sv_2mortal(newSViv(v))  )
+#define XST_mNV(i,v)  (ST(i) = sv_2mortal(newSVnv(v))  )
+#define XST_mPV(i,v)  (ST(i) = sv_2mortal(newSVpv(v,0)))
+#define XST_mPVN(i,v,n)  (ST(i) = sv_2mortal(newSVpvn(v,n)))
+#define XST_mNO(i)    (ST(i) = &PL_sv_no   )
+#define XST_mYES(i)   (ST(i) = &PL_sv_yes  )
+#define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
 
 #define XSRETURN(off)					\
     STMT_START {					\
@@ -35,18 +161,10 @@
 	return;						\
     } STMT_END
 
-/* Simple macros to put new mortal values onto the stack.   */
-/* Typically used to return values from XS functions.       */
-#define XST_mIV(i,v)  (ST(i) = sv_2mortal(newSViv(v))  )
-#define XST_mNV(i,v)  (ST(i) = sv_2mortal(newSVnv(v))  )
-#define XST_mPV(i,v)  (ST(i) = sv_2mortal(newSVpv(v,0)))
-#define XST_mNO(i)    (ST(i) = &PL_sv_no   )
-#define XST_mYES(i)   (ST(i) = &PL_sv_yes  )
-#define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
- 
 #define XSRETURN_IV(v) STMT_START { XST_mIV(0,v);  XSRETURN(1); } STMT_END
 #define XSRETURN_NV(v) STMT_START { XST_mNV(0,v);  XSRETURN(1); } STMT_END
 #define XSRETURN_PV(v) STMT_START { XST_mPV(0,v);  XSRETURN(1); } STMT_END
+#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n);  XSRETURN(1); } STMT_END
 #define XSRETURN_NO    STMT_START { XST_mNO(0);    XSRETURN(1); } STMT_END
 #define XSRETURN_YES   STMT_START { XST_mYES(0);   XSRETURN(1); } STMT_END
 #define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
@@ -55,7 +173,7 @@
 #define newXSproto(a,b,c,d)	sv_setpv((SV*)newXS(a,b,c), d)
 
 #ifdef XS_VERSION
-# define XS_VERSION_BOOTCHECK \
+#  define XS_VERSION_BOOTCHECK \
     STMT_START {							\
 	SV *tmpsv; STRLEN n_a;						\
 	char *vn = Nullch, *module = SvPV(ST(0),n_a);			\
@@ -63,95 +181,220 @@
 	    tmpsv = ST(1);						\
 	else {								\
 	    /* XXX GV_ADDWARN */					\
-	    tmpsv = perl_get_sv(form("%s::%s", module,			\
-				  vn = "XS_VERSION"), FALSE);		\
+	    tmpsv = get_sv(Perl_form(aTHX_ "%s::%s", module,		\
+				vn = "XS_VERSION"), FALSE);		\
 	    if (!tmpsv || !SvOK(tmpsv))					\
-		tmpsv = perl_get_sv(form("%s::%s", module,		\
-				      vn = "VERSION"), FALSE);		\
+		tmpsv = get_sv(Perl_form(aTHX_ "%s::%s", module,	\
+				    vn = "VERSION"), FALSE);		\
 	}								\
 	if (tmpsv && (!SvOK(tmpsv) || strNE(XS_VERSION, SvPV(tmpsv, n_a))))	\
-	    croak("%s object version %s does not match %s%s%s%s %_",	\
+	    Perl_croak(aTHX_ "%s object version %s does not match %s%s%s%s %"SVf,\
 		  module, XS_VERSION,					\
 		  vn ? "$" : "", vn ? module : "", vn ? "::" : "",	\
 		  vn ? vn : "bootstrap parameter", tmpsv);		\
     } STMT_END
 #else
-# define XS_VERSION_BOOTCHECK
+#  define XS_VERSION_BOOTCHECK
 #endif
 
-#ifdef PERL_CAPI
-#  define VTBL_sv		get_vtbl(want_vtbl_sv)
-#  define VTBL_env		get_vtbl(want_vtbl_env)
-#  define VTBL_envelem		get_vtbl(want_vtbl_envelem)
-#  define VTBL_sig		get_vtbl(want_vtbl_sig)
-#  define VTBL_sigelem		get_vtbl(want_vtbl_sigelem)
-#  define VTBL_pack		get_vtbl(want_vtbl_pack)
-#  define VTBL_packelem		get_vtbl(want_vtbl_packelem)
-#  define VTBL_dbline		get_vtbl(want_vtbl_dbline)
-#  define VTBL_isa		get_vtbl(want_vtbl_isa)
-#  define VTBL_isaelem		get_vtbl(want_vtbl_isaelem)
-#  define VTBL_arylen		get_vtbl(want_vtbl_arylen)
-#  define VTBL_glob		get_vtbl(want_vtbl_glob)
-#  define VTBL_mglob		get_vtbl(want_vtbl_mglob)
-#  define VTBL_nkeys		get_vtbl(want_vtbl_nkeys)
-#  define VTBL_taint		get_vtbl(want_vtbl_taint)
-#  define VTBL_substr		get_vtbl(want_vtbl_substr)
-#  define VTBL_vec		get_vtbl(want_vtbl_vec)
-#  define VTBL_pos		get_vtbl(want_vtbl_pos)
-#  define VTBL_bm		get_vtbl(want_vtbl_bm)
-#  define VTBL_fm		get_vtbl(want_vtbl_fm)
-#  define VTBL_uvar		get_vtbl(want_vtbl_uvar)
-#  define VTBL_defelem		get_vtbl(want_vtbl_defelem)
-#  define VTBL_regexp		get_vtbl(want_vtbl_regexp)
+#if 1		/* for compatibility */
+#  define VTBL_sv		&PL_vtbl_sv
+#  define VTBL_env		&PL_vtbl_env
+#  define VTBL_envelem		&PL_vtbl_envelem
+#  define VTBL_sig		&PL_vtbl_sig
+#  define VTBL_sigelem		&PL_vtbl_sigelem
+#  define VTBL_pack		&PL_vtbl_pack
+#  define VTBL_packelem		&PL_vtbl_packelem
+#  define VTBL_dbline		&PL_vtbl_dbline
+#  define VTBL_isa		&PL_vtbl_isa
+#  define VTBL_isaelem		&PL_vtbl_isaelem
+#  define VTBL_arylen		&PL_vtbl_arylen
+#  define VTBL_glob		&PL_vtbl_glob
+#  define VTBL_mglob		&PL_vtbl_mglob
+#  define VTBL_nkeys		&PL_vtbl_nkeys
+#  define VTBL_taint		&PL_vtbl_taint
+#  define VTBL_substr		&PL_vtbl_substr
+#  define VTBL_vec		&PL_vtbl_vec
+#  define VTBL_pos		&PL_vtbl_pos
+#  define VTBL_bm		&PL_vtbl_bm
+#  define VTBL_fm		&PL_vtbl_fm
+#  define VTBL_uvar		&PL_vtbl_uvar
+#  define VTBL_defelem		&PL_vtbl_defelem
+#  define VTBL_regexp		&PL_vtbl_regexp
+#  define VTBL_regdata		&PL_vtbl_regdata
+#  define VTBL_regdatum		&PL_vtbl_regdatum
 #  ifdef USE_LOCALE_COLLATE
-#    define VTBL_collxfrm	get_vtbl(want_vtbl_collxfrm)
-#  endif
-#  ifdef OVERLOAD
-#    define VTBL_amagic		get_vtbl(want_vtbl_amagic)
-#    define VTBL_amagicelem	get_vtbl(want_vtbl_amagicelem)
-#  endif
-#else
-#  define VTBL_sv		&vtbl_sv
-#  define VTBL_env		&vtbl_env
-#  define VTBL_envelem		&vtbl_envelem
-#  define VTBL_sig		&vtbl_sig
-#  define VTBL_sigelem		&vtbl_sigelem
-#  define VTBL_pack		&vtbl_pack
-#  define VTBL_packelem		&vtbl_packelem
-#  define VTBL_dbline		&vtbl_dbline
-#  define VTBL_isa		&vtbl_isa
-#  define VTBL_isaelem		&vtbl_isaelem
-#  define VTBL_arylen		&vtbl_arylen
-#  define VTBL_glob		&vtbl_glob
-#  define VTBL_mglob		&vtbl_mglob
-#  define VTBL_nkeys		&vtbl_nkeys
-#  define VTBL_taint		&vtbl_taint
-#  define VTBL_substr		&vtbl_substr
-#  define VTBL_vec		&vtbl_vec
-#  define VTBL_pos		&vtbl_pos
-#  define VTBL_bm		&vtbl_bm
-#  define VTBL_fm		&vtbl_fm
-#  define VTBL_uvar		&vtbl_uvar
-#  define VTBL_defelem		&vtbl_defelem
-#  define VTBL_regexp		&vtbl_regexp
-#  ifdef USE_LOCALE_COLLATE
-#    define VTBL_collxfrm	&vtbl_collxfrm
-#  endif
-#  ifdef OVERLOAD
-#    define VTBL_amagic		&vtbl_amagic
-#    define VTBL_amagicelem	&vtbl_amagicelem
+#    define VTBL_collxfrm	&PL_vtbl_collxfrm
 #  endif
+#  define VTBL_amagic		&PL_vtbl_amagic
+#  define VTBL_amagicelem	&PL_vtbl_amagicelem
 #endif
 
-#ifdef PERL_OBJECT
+#include "perlapi.h"
 #include "objXSUB.h"
-#ifndef NO_XSLOCKS
-#ifdef WIN32
-#include "XSlock.h"
-#endif  /* WIN32 */
-#endif  /* NO_XSLOCKS */
-#else
-#ifdef PERL_CAPI
-#include "perlCAPI.h"
+
+#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE)
+#  undef aTHX
+#  undef aTHX_
+#  define aTHX		PERL_GET_THX
+#  define aTHX_		aTHX,
 #endif
-#endif	/* PERL_OBJECT */
+
+#if (defined(PERL_CAPI) || defined(PERL_IMPLICIT_SYS)) && !defined(PERL_CORE)
+#  ifndef NO_XSLOCKS
+#    undef closedir
+#    undef opendir
+#    undef stdin
+#    undef stdout
+#    undef stderr
+#    undef feof
+#    undef ferror
+#    undef fgetpos
+#    undef ioctl
+#    undef getlogin
+#    undef setjmp
+#    undef getc
+#    undef ungetc
+#    undef fileno
+
+#    define mkdir		PerlDir_mkdir
+#    define chdir		PerlDir_chdir
+#    define rmdir		PerlDir_rmdir
+#    define closedir		PerlDir_close
+#    define opendir		PerlDir_open
+#    define readdir		PerlDir_read
+#    define rewinddir		PerlDir_rewind
+#    define seekdir		PerlDir_seek
+#    define telldir		PerlDir_tell
+#    define putenv		PerlEnv_putenv
+#    define getenv		PerlEnv_getenv
+#    define uname		PerlEnv_uname
+#    define stdin		PerlIO_stdin()
+#    define stdout		PerlIO_stdout()
+#    define stderr		PerlIO_stderr()
+#    define fopen		PerlIO_open
+#    define fclose		PerlIO_close
+#    define feof		PerlIO_eof
+#    define ferror		PerlIO_error
+#    define fclearerr		PerlIO_clearerr
+#    define getc		PerlIO_getc
+#    define fputc(c, f)		PerlIO_putc(f,c)
+#    define fputs(s, f)		PerlIO_puts(f,s)
+#    define fflush		PerlIO_flush
+#    define ungetc(c, f)	PerlIO_ungetc((f),(c))
+#    define fileno		PerlIO_fileno
+#    define fdopen		PerlIO_fdopen
+#    define freopen		PerlIO_reopen
+#    define fread(b,s,c,f)	PerlIO_read((f),(b),(s*c))
+#    define fwrite(b,s,c,f)	PerlIO_write((f),(b),(s*c))
+#    define setbuf		PerlIO_setbuf
+#    define setvbuf		PerlIO_setvbuf
+#    define setlinebuf		PerlIO_setlinebuf
+#    define stdoutf		PerlIO_stdoutf
+#    define vfprintf		PerlIO_vprintf
+#    define ftell		PerlIO_tell
+#    define fseek		PerlIO_seek
+#    define fgetpos		PerlIO_getpos
+#    define fsetpos		PerlIO_setpos
+#    define frewind		PerlIO_rewind
+#    define tmpfile		PerlIO_tmpfile
+#    define access		PerlLIO_access
+#    define chmod		PerlLIO_chmod
+#    define chsize		PerlLIO_chsize
+#    define close		PerlLIO_close
+#    define dup			PerlLIO_dup
+#    define dup2		PerlLIO_dup2
+#    define flock		PerlLIO_flock
+#    define fstat		PerlLIO_fstat
+#    define ioctl		PerlLIO_ioctl
+#    define isatty		PerlLIO_isatty
+#    define link                PerlLIO_link
+#    define lseek		PerlLIO_lseek
+#    define lstat		PerlLIO_lstat
+#    define mktemp		PerlLIO_mktemp
+#    define open		PerlLIO_open
+#    define read		PerlLIO_read
+#    define rename		PerlLIO_rename
+#    define setmode		PerlLIO_setmode
+#    define stat(buf,sb)	PerlLIO_stat(buf,sb)
+#    define tmpnam		PerlLIO_tmpnam
+#    define umask		PerlLIO_umask
+#    define unlink		PerlLIO_unlink
+#    define utime		PerlLIO_utime
+#    define write		PerlLIO_write
+#    define malloc		PerlMem_malloc
+#    define realloc		PerlMem_realloc
+#    define free		PerlMem_free
+#    define abort		PerlProc_abort
+#    define exit		PerlProc_exit
+#    define _exit		PerlProc__exit
+#    define execl		PerlProc_execl
+#    define execv		PerlProc_execv
+#    define execvp		PerlProc_execvp
+#    define getuid		PerlProc_getuid
+#    define geteuid		PerlProc_geteuid
+#    define getgid		PerlProc_getgid
+#    define getegid		PerlProc_getegid
+#    define getlogin		PerlProc_getlogin
+#    define kill		PerlProc_kill
+#    define killpg		PerlProc_killpg
+#    define pause		PerlProc_pause
+#    define popen		PerlProc_popen
+#    define pclose		PerlProc_pclose
+#    define pipe		PerlProc_pipe
+#    define setuid		PerlProc_setuid
+#    define setgid		PerlProc_setgid
+#    define sleep		PerlProc_sleep
+#    define times		PerlProc_times
+#    define wait		PerlProc_wait
+#    define setjmp		PerlProc_setjmp
+#    define longjmp		PerlProc_longjmp
+#    define signal		PerlProc_signal
+#    define getpid		PerlProc_getpid
+#    define htonl		PerlSock_htonl
+#    define htons		PerlSock_htons
+#    define ntohl		PerlSock_ntohl
+#    define ntohs		PerlSock_ntohs
+#    define accept		PerlSock_accept
+#    define bind		PerlSock_bind
+#    define connect		PerlSock_connect
+#    define endhostent		PerlSock_endhostent
+#    define endnetent		PerlSock_endnetent
+#    define endprotoent		PerlSock_endprotoent
+#    define endservent		PerlSock_endservent
+#    define gethostbyaddr	PerlSock_gethostbyaddr
+#    define gethostbyname	PerlSock_gethostbyname
+#    define gethostent		PerlSock_gethostent
+#    define gethostname		PerlSock_gethostname
+#    define getnetbyaddr	PerlSock_getnetbyaddr
+#    define getnetbyname	PerlSock_getnetbyname
+#    define getnetent		PerlSock_getnetent
+#    define getpeername		PerlSock_getpeername
+#    define getprotobyname	PerlSock_getprotobyname
+#    define getprotobynumber	PerlSock_getprotobynumber
+#    define getprotoent		PerlSock_getprotoent
+#    define getservbyname	PerlSock_getservbyname
+#    define getservbyport	PerlSock_getservbyport
+#    define getservent		PerlSock_getservent
+#    define getsockname		PerlSock_getsockname
+#    define getsockopt		PerlSock_getsockopt
+#    define inet_addr		PerlSock_inet_addr
+#    define inet_ntoa		PerlSock_inet_ntoa
+#    define listen		PerlSock_listen
+#    define recv		PerlSock_recv
+#    define recvfrom		PerlSock_recvfrom
+#    define select		PerlSock_select
+#    define send		PerlSock_send
+#    define sendto		PerlSock_sendto
+#    define sethostent		PerlSock_sethostent
+#    define setnetent		PerlSock_setnetent
+#    define setprotoent		PerlSock_setprotoent
+#    define setservent		PerlSock_setservent
+#    define setsockopt		PerlSock_setsockopt
+#    define shutdown		PerlSock_shutdown
+#    define socket		PerlSock_socket
+#    define socketpair		PerlSock_socketpair
+#  endif  /* NO_XSLOCKS */
+#endif  /* PERL_CAPI */
+
+#endif /* _INC_PERL_XSUB_H */		/* include guard */
diff --git a/contrib/perl5/av.c b/contrib/perl5/av.c
index 76527579030e..819887e2ad59 100644
--- a/contrib/perl5/av.c
+++ b/contrib/perl5/av.c
@@ -1,6 +1,6 @@
 /*    av.c
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -13,10 +13,11 @@
  */
 
 #include "EXTERN.h"
+#define PERL_IN_AV_C
 #include "perl.h"
 
 void
-av_reify(AV *av)
+Perl_av_reify(pTHX_ AV *av)
 {
     I32 key;
     SV* sv;
@@ -24,8 +25,8 @@ av_reify(AV *av)
     if (AvREAL(av))
 	return;
 #ifdef DEBUGGING
-    if (SvTIED_mg((SV*)av, 'P'))
-	warn("av_reify called on tied array");
+    if (SvTIED_mg((SV*)av, 'P') && ckWARN_d(WARN_DEBUGGING))
+	Perl_warner(aTHX_ WARN_DEBUGGING, "av_reify called on tied array");
 #endif
     key = AvMAX(av) + 1;
     while (key > AvFILLp(av) + 1)
@@ -45,12 +46,21 @@ av_reify(AV *av)
     AvREAL_on(av);
 }
 
+/*
+=for apidoc av_extend
+
+Pre-extend an array.  The C is the index to which the array should be
+extended.
+
+=cut
+*/
+
 void
-av_extend(AV *av, I32 key)
+Perl_av_extend(pTHX_ AV *av, I32 key)
 {
     dTHR;			/* only necessary if we have to extend stack */
     MAGIC *mg;
-    if (mg = SvTIED_mg((SV*)av, 'P')) {
+    if ((mg = SvTIED_mg((SV*)av, 'P'))) {
 	dSP;
 	ENTER;
 	SAVETMPS;
@@ -60,7 +70,7 @@ av_extend(AV *av, I32 key)
 	PUSHs(SvTIED_obj((SV*)av, mg));
 	PUSHs(sv_2mortal(newSViv(key+1)));
         PUTBACK;
-	perl_call_method("EXTEND", G_SCALAR|G_DISCARD);
+	call_method("EXTEND", G_SCALAR|G_DISCARD);
 	POPSTACK;
 	FREETMPS;
 	LEAVE;
@@ -90,10 +100,11 @@ av_extend(AV *av, I32 key)
 	else {
 	    if (AvALLOC(av)) {
 #ifndef STRANGE_MALLOC
-		U32 bytes;
+		MEM_SIZE bytes;
+		IV itmp;
 #endif
 
-#if defined(MYMALLOC) && !defined(PURIFY) && !defined(LEAKTEST)
+#if defined(MYMALLOC) && !defined(LEAKTEST)
 		newmax = malloced_size((void*)AvALLOC(av))/sizeof(SV*) - 1;
 
 		if (key <= newmax) 
@@ -106,13 +117,14 @@ av_extend(AV *av, I32 key)
 #else
 		bytes = (newmax + 1) * sizeof(SV*);
 #define MALLOC_OVERHEAD 16
-		tmp = MALLOC_OVERHEAD;
-		while (tmp - MALLOC_OVERHEAD < bytes)
-		    tmp += tmp;
-		tmp -= MALLOC_OVERHEAD;
-		tmp /= sizeof(SV*);
-		assert(tmp > newmax);
-		newmax = tmp - 1;
+		itmp = MALLOC_OVERHEAD;
+		while (itmp - MALLOC_OVERHEAD < bytes)
+		    itmp += itmp;
+		itmp -= MALLOC_OVERHEAD;
+		itmp /= sizeof(SV*);
+		assert(itmp > newmax);
+		newmax = itmp - 1;
+		assert(newmax >= AvMAX(av));
 		New(2,ary, newmax+1, SV*);
 		Copy(AvALLOC(av), ary, AvMAX(av)+1, SV*);
 		if (AvMAX(av) > 64)
@@ -148,8 +160,21 @@ av_extend(AV *av, I32 key)
     }
 }
 
+/*
+=for apidoc av_fetch
+
+Returns the SV at the specified index in the array.  The C is the
+index.  If C is set then the fetch will be part of a store.  Check
+that the return value is non-null before dereferencing it to a C.
+
+See L for
+more information on how to use this function on tied arrays. 
+
+=cut
+*/
+
 SV**
-av_fetch(register AV *av, I32 key, I32 lval)
+Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
 {
     SV *sv;
 
@@ -163,7 +188,7 @@ av_fetch(register AV *av, I32 key, I32 lval)
     }
 
     if (SvRMAGICAL(av)) {
-	if (mg_find((SV*)av,'P')) {
+	if (mg_find((SV*)av,'P') || mg_find((SV*)av,'D')) {
 	    dTHR;
 	    sv = sv_newmortal();
 	    mg_copy((SV*)av, sv, 0, key);
@@ -195,12 +220,27 @@ av_fetch(register AV *av, I32 key, I32 lval)
     return &AvARRAY(av)[key];
 }
 
+/*
+=for apidoc av_store
+
+Stores an SV in an array.  The array index is specified as C.  The
+return value will be NULL if the operation failed or if the value did not
+need to be actually stored within the array (as in the case of tied
+arrays). Otherwise it can be dereferenced to get the original C.  Note
+that the caller is responsible for suitably incrementing the reference
+count of C before the call, and decrementing it if the function
+returned NULL.
+
+See L for
+more information on how to use this function on tied arrays.
+
+=cut
+*/
+
 SV**
-av_store(register AV *av, I32 key, SV *val)
+Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
 {
     SV** ary;
-    U32  fill;
-
 
     if (!av)
 	return 0;
@@ -214,7 +254,7 @@ av_store(register AV *av, I32 key, SV *val)
     }
 
     if (SvREADONLY(av) && key >= AvFILL(av))
-	croak(no_modify);
+	Perl_croak(aTHX_ PL_no_modify);
 
     if (SvRMAGICAL(av)) {
 	if (mg_find((SV*)av,'P')) {
@@ -254,8 +294,16 @@ av_store(register AV *av, I32 key, SV *val)
     return &ary[key];
 }
 
+/*
+=for apidoc newAV
+
+Creates a new AV.  The reference count is set to 1.
+
+=cut
+*/
+
 AV *
-newAV(void)
+Perl_newAV(pTHX)
 {
     register AV *av;
 
@@ -268,8 +316,18 @@ newAV(void)
     return av;
 }
 
+/*
+=for apidoc av_make
+
+Creates a new AV and populates it with a list of SVs.  The SVs are copied
+into the array, so they may be freed after the call to av_make.  The new AV
+will have a reference count of 1.
+
+=cut
+*/
+
 AV *
-av_make(register I32 size, register SV **strp)
+Perl_av_make(pTHX_ register I32 size, register SV **strp)
 {
     register AV *av;
     register I32 i;
@@ -295,7 +353,7 @@ av_make(register I32 size, register SV **strp)
 }
 
 AV *
-av_fake(register I32 size, register SV **strp)
+Perl_av_fake(pTHX_ register I32 size, register SV **strp)
 {
     register AV *av;
     register SV** ary;
@@ -317,15 +375,24 @@ av_fake(register I32 size, register SV **strp)
     return av;
 }
 
+/*
+=for apidoc av_clear
+
+Clears an array, making it empty.  Does not free the memory used by the
+array itself.
+
+=cut
+*/
+
 void
-av_clear(register AV *av)
+Perl_av_clear(pTHX_ register AV *av)
 {
     register I32 key;
     SV** ary;
 
 #ifdef DEBUGGING
-    if (SvREFCNT(av) <= 0) {
-	warn("Attempt to clear deleted array");
+    if (SvREFCNT(av) == 0 && ckWARN_d(WARN_DEBUGGING)) {
+	Perl_warner(aTHX_ WARN_DEBUGGING, "Attempt to clear deleted array");
     }
 #endif
     if (!av)
@@ -333,7 +400,7 @@ av_clear(register AV *av)
     /*SUPPRESS 560*/
 
     if (SvREADONLY(av))
-	croak(no_modify);
+	Perl_croak(aTHX_ PL_no_modify);
 
     /* Give any tie a chance to cleanup first */
     if (SvRMAGICAL(av))
@@ -350,7 +417,7 @@ av_clear(register AV *av)
 	    ary[key] = &PL_sv_undef;
 	}
     }
-    if (key = AvARRAY(av) - AvALLOC(av)) {
+    if ((key = AvARRAY(av) - AvALLOC(av))) {
 	AvMAX(av) += key;
 	SvPVX(av) = (char*)AvALLOC(av);
     }
@@ -358,8 +425,16 @@ av_clear(register AV *av)
 
 }
 
+/*
+=for apidoc av_undef
+
+Undefines the array.  Frees the memory used by the array itself.
+
+=cut
+*/
+
 void
-av_undef(register AV *av)
+Perl_av_undef(pTHX_ register AV *av)
 {
     register I32 key;
 
@@ -386,16 +461,25 @@ av_undef(register AV *av)
     }
 }
 
+/*
+=for apidoc av_push
+
+Pushes an SV onto the end of the array.  The array will grow automatically
+to accommodate the addition.
+
+=cut
+*/
+
 void
-av_push(register AV *av, SV *val)
+Perl_av_push(pTHX_ register AV *av, SV *val)
 {             
     MAGIC *mg;
     if (!av)
 	return;
     if (SvREADONLY(av))
-	croak(no_modify);
+	Perl_croak(aTHX_ PL_no_modify);
 
-    if (mg = SvTIED_mg((SV*)av, 'P')) {
+    if ((mg = SvTIED_mg((SV*)av, 'P'))) {
 	dSP;
 	PUSHSTACKi(PERLSI_MAGIC);
 	PUSHMARK(SP);
@@ -404,7 +488,7 @@ av_push(register AV *av, SV *val)
 	PUSHs(val);
 	PUTBACK;
 	ENTER;
-	perl_call_method("PUSH", G_SCALAR|G_DISCARD);
+	call_method("PUSH", G_SCALAR|G_DISCARD);
 	LEAVE;
 	POPSTACK;
 	return;
@@ -412,8 +496,17 @@ av_push(register AV *av, SV *val)
     av_store(av,AvFILLp(av)+1,val);
 }
 
+/*
+=for apidoc av_pop
+
+Pops an SV off the end of the array.  Returns C<&PL_sv_undef> if the array
+is empty.
+
+=cut
+*/
+
 SV *
-av_pop(register AV *av)
+Perl_av_pop(pTHX_ register AV *av)
 {
     SV *retval;
     MAGIC* mg;
@@ -421,15 +514,15 @@ av_pop(register AV *av)
     if (!av || AvFILL(av) < 0)
 	return &PL_sv_undef;
     if (SvREADONLY(av))
-	croak(no_modify);
-    if (mg = SvTIED_mg((SV*)av, 'P')) {
+	Perl_croak(aTHX_ PL_no_modify);
+    if ((mg = SvTIED_mg((SV*)av, 'P'))) {
 	dSP;    
 	PUSHSTACKi(PERLSI_MAGIC);
 	PUSHMARK(SP);
 	XPUSHs(SvTIED_obj((SV*)av, mg));
 	PUTBACK;
 	ENTER;
-	if (perl_call_method("POP", G_SCALAR)) {
+	if (call_method("POP", G_SCALAR)) {
 	    retval = newSVsv(*PL_stack_sp--);    
 	} else {    
 	    retval = &PL_sv_undef;
@@ -445,8 +538,18 @@ av_pop(register AV *av)
     return retval;
 }
 
+/*
+=for apidoc av_unshift
+
+Unshift the given number of C values onto the beginning of the
+array.  The array will grow automatically to accommodate the addition.  You
+must then use C to assign values to these new elements.
+
+=cut
+*/
+
 void
-av_unshift(register AV *av, register I32 num)
+Perl_av_unshift(pTHX_ register AV *av, register I32 num)
 {
     register I32 i;
     register SV **ary;
@@ -455,9 +558,9 @@ av_unshift(register AV *av, register I32 num)
     if (!av || num <= 0)
 	return;
     if (SvREADONLY(av))
-	croak(no_modify);
+	Perl_croak(aTHX_ PL_no_modify);
 
-    if (mg = SvTIED_mg((SV*)av, 'P')) {
+    if ((mg = SvTIED_mg((SV*)av, 'P'))) {
 	dSP;
 	PUSHSTACKi(PERLSI_MAGIC);
 	PUSHMARK(SP);
@@ -468,7 +571,7 @@ av_unshift(register AV *av, register I32 num)
 	}
 	PUTBACK;
 	ENTER;
-	perl_call_method("UNSHIFT", G_SCALAR|G_DISCARD);
+	call_method("UNSHIFT", G_SCALAR|G_DISCARD);
 	LEAVE;
 	POPSTACK;
 	return;
@@ -498,8 +601,16 @@ av_unshift(register AV *av, register I32 num)
     }
 }
 
+/*
+=for apidoc av_shift
+
+Shifts an SV off the beginning of the array.
+
+=cut
+*/
+
 SV *
-av_shift(register AV *av)
+Perl_av_shift(pTHX_ register AV *av)
 {
     SV *retval;
     MAGIC* mg;
@@ -507,15 +618,15 @@ av_shift(register AV *av)
     if (!av || AvFILL(av) < 0)
 	return &PL_sv_undef;
     if (SvREADONLY(av))
-	croak(no_modify);
-    if (mg = SvTIED_mg((SV*)av, 'P')) {
+	Perl_croak(aTHX_ PL_no_modify);
+    if ((mg = SvTIED_mg((SV*)av, 'P'))) {
 	dSP;
 	PUSHSTACKi(PERLSI_MAGIC);
 	PUSHMARK(SP);
 	XPUSHs(SvTIED_obj((SV*)av, mg));
 	PUTBACK;
 	ENTER;
-	if (perl_call_method("SHIFT", G_SCALAR)) {
+	if (call_method("SHIFT", G_SCALAR)) {
 	    retval = newSVsv(*PL_stack_sp--);            
 	} else {    
 	    retval = &PL_sv_undef;
@@ -535,21 +646,30 @@ av_shift(register AV *av)
     return retval;
 }
 
+/*
+=for apidoc av_len
+
+Returns the highest index in the array.  Returns -1 if the array is
+empty.
+
+=cut
+*/
+
 I32
-av_len(register AV *av)
+Perl_av_len(pTHX_ register AV *av)
 {
     return AvFILL(av);
 }
 
 void
-av_fill(register AV *av, I32 fill)
+Perl_av_fill(pTHX_ register AV *av, I32 fill)
 {
     MAGIC *mg;
     if (!av)
-	croak("panic: null array");
+	Perl_croak(aTHX_ "panic: null array");
     if (fill < 0)
 	fill = -1;
-    if (mg = SvTIED_mg((SV*)av, 'P')) {
+    if ((mg = SvTIED_mg((SV*)av, 'P'))) {
 	dSP;            
 	ENTER;
 	SAVETMPS;
@@ -559,7 +679,7 @@ av_fill(register AV *av, I32 fill)
 	PUSHs(SvTIED_obj((SV*)av, mg));
 	PUSHs(sv_2mortal(newSViv(fill+1)));
 	PUTBACK;
-	perl_call_method("STORESIZE", G_SCALAR|G_DISCARD);
+	call_method("STORESIZE", G_SCALAR|G_DISCARD);
 	POPSTACK;
 	FREETMPS;
 	LEAVE;
@@ -588,6 +708,86 @@ av_fill(register AV *av, I32 fill)
 	(void)av_store(av,fill,&PL_sv_undef);
 }
 
+SV *
+Perl_av_delete(pTHX_ AV *av, I32 key, I32 flags)
+{
+    SV *sv;
+
+    if (!av)
+	return Nullsv;
+    if (SvREADONLY(av))
+	Perl_croak(aTHX_ PL_no_modify);
+    if (key < 0) {
+	key += AvFILL(av) + 1;
+	if (key < 0)
+	    return Nullsv;
+    }
+    if (SvRMAGICAL(av)) {
+	SV **svp;
+	if ((mg_find((SV*)av,'P') || mg_find((SV*)av,'D'))
+	    && (svp = av_fetch(av, key, TRUE)))
+	{
+	    sv = *svp;
+	    mg_clear(sv);
+	    if (mg_find(sv, 'p')) {
+		sv_unmagic(sv, 'p');		/* No longer an element */
+		return sv;
+	    }
+	    return Nullsv;			/* element cannot be deleted */
+	}
+    }
+    if (key > AvFILLp(av))
+	return Nullsv;
+    else {
+	sv = AvARRAY(av)[key];
+	if (key == AvFILLp(av)) {
+	    do {
+		AvFILLp(av)--;
+	    } while (--key >= 0 && AvARRAY(av)[key] == &PL_sv_undef);
+	}
+	else
+	    AvARRAY(av)[key] = &PL_sv_undef;
+	if (SvSMAGICAL(av))
+	    mg_set((SV*)av);
+    }
+    if (flags & G_DISCARD) {
+	SvREFCNT_dec(sv);
+	sv = Nullsv;
+    }
+    return sv;
+}
+
+/*
+ * This relies on the fact that uninitialized array elements
+ * are set to &PL_sv_undef.
+ */
+
+bool
+Perl_av_exists(pTHX_ AV *av, I32 key)
+{
+    if (!av)
+	return FALSE;
+    if (key < 0) {
+	key += AvFILL(av) + 1;
+	if (key < 0)
+	    return FALSE;
+    }
+    if (SvRMAGICAL(av)) {
+	if (mg_find((SV*)av,'P') || mg_find((SV*)av,'D')) {
+	    SV *sv = sv_newmortal();
+	    mg_copy((SV*)av, sv, 0, key);
+	    magic_existspack(sv, mg_find(sv, 'p'));
+	    return SvTRUE(sv);
+	}
+    }
+    if (key <= AvFILLp(av) && AvARRAY(av)[key] != &PL_sv_undef
+	&& AvARRAY(av)[key])
+    {
+	return TRUE;
+    }
+    else
+	return FALSE;
+}
 
 /* AVHV: Support for treating arrays as if they were hashes.  The
  * first element of the array should be a hash reference that maps
@@ -595,16 +795,30 @@ av_fill(register AV *av, I32 fill)
  */
 
 STATIC I32
-avhv_index_sv(SV* sv)
+S_avhv_index_sv(pTHX_ SV* sv)
 {
     I32 index = SvIV(sv);
     if (index < 1)
-	croak("Bad index while coercing array into hash");
+	Perl_croak(aTHX_ "Bad index while coercing array into hash");
     return index;    
 }
 
+STATIC I32
+S_avhv_index(pTHX_ AV *av, SV *keysv, U32 hash)
+{
+    HV *keys;
+    HE *he;
+    STRLEN n_a;
+
+    keys = avhv_keys(av);
+    he = hv_fetch_ent(keys, keysv, FALSE, hash);
+    if (!he)
+        Perl_croak(aTHX_ "No such pseudo-hash field \"%s\"", SvPV(keysv,n_a));
+    return avhv_index_sv(HeVAL(he));
+}
+
 HV*
-avhv_keys(AV *av)
+Perl_avhv_keys(pTHX_ AV *av)
 {
     SV **keysp = av_fetch(av, 0, FALSE);
     if (keysp) {
@@ -617,39 +831,60 @@ avhv_keys(AV *av)
 		return (HV*)sv;
 	}
     }
-    croak("Can't coerce array into hash");
+    Perl_croak(aTHX_ "Can't coerce array into hash");
     return Nullhv;
 }
 
 SV**
-avhv_fetch_ent(AV *av, SV *keysv, I32 lval, U32 hash)
+Perl_avhv_store_ent(pTHX_ AV *av, SV *keysv, SV *val, U32 hash)
 {
-    SV **indsvp;
-    HV *keys = avhv_keys(av);
-    HE *he;
-    
-    he = hv_fetch_ent(keys, keysv, FALSE, hash);
-    if (!he)
-        croak("No such array field");
-    return av_fetch(av, avhv_index_sv(HeVAL(he)), lval);
+    return av_store(av, avhv_index(av, keysv, hash), val);
 }
 
-bool
-avhv_exists_ent(AV *av, SV *keysv, U32 hash)
+SV**
+Perl_avhv_fetch_ent(pTHX_ AV *av, SV *keysv, I32 lval, U32 hash)
+{
+    return av_fetch(av, avhv_index(av, keysv, hash), lval);
+}
+
+SV *
+Perl_avhv_delete_ent(pTHX_ AV *av, SV *keysv, I32 flags, U32 hash)
 {
     HV *keys = avhv_keys(av);
-    return hv_exists_ent(keys, keysv, hash);
+    HE *he;
+	
+    he = hv_fetch_ent(keys, keysv, FALSE, hash);
+    if (!he || !SvOK(HeVAL(he)))
+	return Nullsv;
+
+    return av_delete(av, avhv_index_sv(HeVAL(he)), flags);
+}
+
+/* Check for the existence of an element named by a given key.
+ *
+ */
+bool
+Perl_avhv_exists_ent(pTHX_ AV *av, SV *keysv, U32 hash)
+{
+    HV *keys = avhv_keys(av);
+    HE *he;
+	
+    he = hv_fetch_ent(keys, keysv, FALSE, hash);
+    if (!he || !SvOK(HeVAL(he)))
+	return FALSE;
+
+    return av_exists(av, avhv_index_sv(HeVAL(he)));
 }
 
 HE *
-avhv_iternext(AV *av)
+Perl_avhv_iternext(pTHX_ AV *av)
 {
     HV *keys = avhv_keys(av);
     return hv_iternext(keys);
 }
 
 SV *
-avhv_iterval(AV *av, register HE *entry)
+Perl_avhv_iterval(pTHX_ AV *av, register HE *entry)
 {
     SV *sv = hv_iterval(avhv_keys(av), entry);
     return *av_fetch(av, avhv_index_sv(sv), TRUE);
diff --git a/contrib/perl5/av.h b/contrib/perl5/av.h
index bef763d3b174..6b66bfd1b1de 100644
--- a/contrib/perl5/av.h
+++ b/contrib/perl5/av.h
@@ -1,6 +1,6 @@
 /*    av.h
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -10,9 +10,9 @@
 struct xpvav {
     char*	xav_array;      /* pointer to first array element */
     SSize_t	xav_fill;       /* Index of last element present */
-    SSize_t	xav_max;        /* Number of elements for which array has space */
+    SSize_t	xav_max;        /* max index for which array has space */
     IV		xof_off;	/* ptr is incremented by offset */
-    double	xnv_nv;		/* numeric value, if any */
+    NV		xnv_nv;		/* numeric value, if any */
     MAGIC*	xmg_magic;	/* magic for scalar array */
     HV*		xmg_stash;	/* class package */
 
@@ -21,10 +21,40 @@ struct xpvav {
     U8		xav_flags;
 };
 
+
+/* AVf_REAL is set for all AVs whose xav_array contents are refcounted.
+ * Some things like "@_" and the scratchpad list do not set this, to
+ * indicate that they are cheating (for efficiency) by not refcounting
+ * the AV's contents.
+ * 
+ * AVf_REIFY is only meaningful on such "fake" AVs (i.e. where AVf_REAL
+ * is not set).  It indicates that the fake AV is capable of becoming
+ * real if the array needs to be modified in some way.  Functions that
+ * modify fake AVs check both flags to call av_reify() as appropriate.
+ *
+ * Note that the Perl stack has neither flag set. (Thus, items that go
+ * on the stack are never refcounted.)
+ *
+ * These internal details are subject to change any time.  AV
+ * manipulations external to perl should not care about any of this.
+ * GSAR 1999-09-10
+ */
 #define AVf_REAL 1	/* free old entries */
 #define AVf_REIFY 2	/* can become real */
+
+/* XXX this is not used anywhere */
 #define AVf_REUSED 4	/* got undeffed--don't turn old memory into SVs now */
 
+/*
+=for apidoc AmU||Nullav
+Null AV pointer.
+
+=for apidoc Am|int|AvFILL|AV* av
+Same as C.  Deprecated, use C instead.
+
+=cut
+*/
+
 #define Nullav Null(AV*)
 
 #define AvARRAY(av)	((SV**)((XPVAV*)  SvANY(av))->xav_array)
diff --git a/contrib/perl5/bytecode.pl b/contrib/perl5/bytecode.pl
index cc096ac1bcfe..d1e1c708c0dc 100644
--- a/contrib/perl5/bytecode.pl
+++ b/contrib/perl5/bytecode.pl
@@ -1,3 +1,6 @@
+BEGIN {
+  push @INC, './lib';
+}
 use strict;
 my %alias_to = (
     U32 => [qw(PADOFFSET STRLEN)],
@@ -6,7 +9,7 @@ my %alias_to = (
     U8 => [qw(char)],
 );
 
-my @optype= qw(OP UNOP BINOP LOGOP CONDOP LISTOP PMOP SVOP GVOP PVOP LOOP COP);
+my @optype= qw(OP UNOP BINOP LOGOP LISTOP PMOP SVOP PADOP PVOP LOOP COP);
 
 # Nullsv *must* come first in the following so that the condition
 # ($$sv == 0) can continue to be used to test (sv == Nullsv).
@@ -19,7 +22,7 @@ while (($from, $tos) = each %alias_to) {
 
 my $c_header = <<'EOT';
 /*
- *      Copyright (c) 1996-1998 Malcolm Beattie
+ *      Copyright (c) 1996-1999 Malcolm Beattie
  *
  *      You may distribute under the terms of either the GNU General Public
  *      License or the Artistic License, as specified in the README file.
@@ -33,7 +36,7 @@ EOT
 my $perl_header;
 ($perl_header = $c_header) =~ s{[/ ]?\*/?}{#}g;
 
-unlink "byterun.c", "byterun.h", "ext/B/B/Asmdata.pm";
+unlink "ext/ByteLoader/byterun.c", "ext/ByteLoader/byterun.h", "ext/B/B/Asmdata.pm";
 
 #
 # Start with boilerplate for Asmdata.pm
@@ -44,7 +47,7 @@ package B::Asmdata;
 use Exporter;
 @ISA = qw(Exporter);
 @EXPORT_OK = qw(%insn_data @insn_name @optype @specialsv_name);
-use vars qw(%insn_data @insn_name @optype @specialsv_name);
+our(%insn_data, @insn_name, @optype, @specialsv_name);
 
 EOT
 print ASMDATA_PM <<"EOT";
@@ -59,34 +62,72 @@ EOT
 #
 # Boilerplate for byterun.c
 #
-open(BYTERUN_C, ">byterun.c") or die "byterun.c: $!";
+open(BYTERUN_C, ">ext/ByteLoader/byterun.c") or die "ext/ByteLoader/byterun.c: $!";
 print BYTERUN_C $c_header, <<'EOT';
 
+#define PERL_NO_GET_CONTEXT
 #include "EXTERN.h"
 #include "perl.h"
+#define NO_XSLOCKS
+#include "XSUB.h"
+
+#ifdef PERL_OBJECT
+#undef CALL_FPTR
+#define CALL_FPTR(fptr) (pPerl->*fptr)
+#undef PL_ppaddr
+#define PL_ppaddr (*get_ppaddr())
+#endif
+
+#include "byterun.h"
+#include "bytecode.h"
+
+
+static int optype_size[] = {
+EOT
+my $i = 0;
+for ($i = 0; $i < @optype - 1; $i++) {
+    printf BYTERUN_C "    sizeof(%s),\n", $optype[$i], $i;
+}
+printf BYTERUN_C "    sizeof(%s)\n", $optype[$i], $i;
+print BYTERUN_C <<'EOT';
+};
+
+static SV *specialsv_list[4];
+
+static int bytecode_iv_overflows = 0;
+static SV *bytecode_sv;
+static XPV bytecode_pv;
+static void **bytecode_obj_list;
+static I32 bytecode_obj_list_fill = -1;
 
 void *
-bset_obj_store(void *obj, I32 ix)
+bset_obj_store(pTHXo_ void *obj, I32 ix)
 {
-    if (ix > PL_bytecode_obj_list_fill) {
-	if (PL_bytecode_obj_list_fill == -1)
-	    New(666, PL_bytecode_obj_list, ix + 1, void*);
+    if (ix > bytecode_obj_list_fill) {
+	if (bytecode_obj_list_fill == -1)
+	    New(666, bytecode_obj_list, ix + 1, void*);
 	else
-	    Renew(PL_bytecode_obj_list, ix + 1, void*);
-	PL_bytecode_obj_list_fill = ix;
+	    Renew(bytecode_obj_list, ix + 1, void*);
+	bytecode_obj_list_fill = ix;
     }
-    PL_bytecode_obj_list[ix] = obj;
+    bytecode_obj_list[ix] = obj;
     return obj;
 }
 
-#ifdef INDIRECT_BGET_MACROS
-void byterun(struct bytestream bs)
-#else
-void byterun(PerlIO *fp)
-#endif /* INDIRECT_BGET_MACROS */
+void
+byterun(pTHXo_ struct bytestream bs)
 {
     dTHR;
     int insn;
+
+EOT
+
+for (my $i = 0; $i < @specialsv; $i++) {
+    print BYTERUN_C "    specialsv_list[$i] = $specialsv[$i];\n";
+}
+
+print BYTERUN_C <<'EOT';
+
     while ((insn = BGET_FGETC()) != EOF) {
 	switch (insn) {
 EOT
@@ -121,7 +162,7 @@ while () {
     if ($flags =~ /x/) {
 	print BYTERUN_C "\t\tBSET_$insn($lvalue$optarg);\n";
     } elsif ($flags =~ /s/) {
-	# Store instructions store to PL_bytecode_obj_list[arg]. "lvalue" field is rvalue.
+	# Store instructions store to bytecode_obj_list[arg]. "lvalue" field is rvalue.
 	print BYTERUN_C "\t\tBSET_OBJ_STORE($lvalue$optarg);\n";
     }
     elsif ($optarg && $lvalue ne "none") {
@@ -145,7 +186,7 @@ EOT
 #
 print BYTERUN_C <<'EOT';
 	  default:
-	    croak("Illegal bytecode instruction %d\n", insn);
+	    Perl_croak(aTHX_ "Illegal bytecode instruction %d\n", insn);
 	    /* NOTREACHED */
 	}
     }
@@ -155,23 +196,18 @@ EOT
 #
 # Write the instruction and optype enum constants into byterun.h
 #
-open(BYTERUN_H, ">byterun.h") or die "byterun.h: $!";
+open(BYTERUN_H, ">ext/ByteLoader/byterun.h") or die "ext/ByteLoader/byterun.h: $!";
 print BYTERUN_H $c_header, <<'EOT';
-#ifdef INDIRECT_BGET_MACROS
 struct bytestream {
     void *data;
-    int (*fgetc)(void *);
-    int (*fread)(char *, size_t, size_t, void*);
-    void (*freadpv)(U32, void*);
+    int (*pfgetc)(void *);
+    int (*pfread)(char *, size_t, size_t, void *);
+    void (*pfreadpv)(U32, void *, XPV *);
 };
-#endif /* INDIRECT_BGET_MACROS */
-
-void *bset_obj_store _((void *, I32));
 
 enum {
 EOT
 
-my $i = 0;
 my $add_enum_value = 0;
 my $max_insn;
 for ($i = 0; $i < @insn_name; $i++) {
@@ -196,22 +232,10 @@ for ($i = 0; $i < @optype - 1; $i++) {
     printf BYTERUN_H "    OPt_%s,\t\t/* %d */\n", $optype[$i], $i;
 }
 printf BYTERUN_H "    OPt_%s\t\t/* %d */\n};\n\n", $optype[$i], $i;
-print BYTERUN_H <<'EOT';
-EXT int optype_size[]
-#ifdef DOINIT
-= {
-EOT
-for ($i = 0; $i < @optype - 1; $i++) {
-    printf BYTERUN_H "    sizeof(%s),\n", $optype[$i], $i;
-}
-printf BYTERUN_H "    sizeof(%s)\n}\n", $optype[$i], $i;
-print BYTERUN_H <<'EOT';
-#endif /* DOINIT */
-;
-
-EOT
 
 print BYTERUN_H <<'EOT';
+extern void byterun(pTHXo_ struct bytestream bs);
+
 #define INIT_SPECIALSV_LIST STMT_START { \
 EOT
 for ($i = 0; $i < @specialsv; $i++) {
@@ -270,85 +294,85 @@ nop		none			none
 #opcode		lvalue					argtype		flags	
 #
 ret		none					none		x
-ldsv		PL_bytecode_sv				svindex
+ldsv		bytecode_sv				svindex
 ldop		PL_op					opindex
-stsv		PL_bytecode_sv				U32		s
+stsv		bytecode_sv				U32		s
 stop		PL_op					U32		s
-ldspecsv	PL_bytecode_sv				U8		x
-newsv		PL_bytecode_sv				U8		x
+ldspecsv	bytecode_sv				U8		x
+newsv		bytecode_sv				U8		x
 newop		PL_op					U8		x
 newopn		PL_op					U8		x
 newpv		none					PV
-pv_cur		PL_bytecode_pv.xpv_cur			STRLEN
-pv_free		PL_bytecode_pv				none		x
-sv_upgrade	PL_bytecode_sv				char		x
-sv_refcnt	SvREFCNT(PL_bytecode_sv)		U32
-sv_refcnt_add	SvREFCNT(PL_bytecode_sv)		I32		x
-sv_flags	SvFLAGS(PL_bytecode_sv)			U32
-xrv		SvRV(PL_bytecode_sv)			svindex
-xpv		PL_bytecode_sv				none		x
-xiv32		SvIVX(PL_bytecode_sv)			I32
-xiv64		SvIVX(PL_bytecode_sv)			IV64
-xnv		SvNVX(PL_bytecode_sv)			double
-xlv_targoff	LvTARGOFF(PL_bytecode_sv)		STRLEN
-xlv_targlen	LvTARGLEN(PL_bytecode_sv)		STRLEN
-xlv_targ	LvTARG(PL_bytecode_sv)			svindex
-xlv_type	LvTYPE(PL_bytecode_sv)			char
-xbm_useful	BmUSEFUL(PL_bytecode_sv)		I32
-xbm_previous	BmPREVIOUS(PL_bytecode_sv)		U16
-xbm_rare	BmRARE(PL_bytecode_sv)			U8
-xfm_lines	FmLINES(PL_bytecode_sv)			I32
-xio_lines	IoLINES(PL_bytecode_sv)			long
-xio_page	IoPAGE(PL_bytecode_sv)			long
-xio_page_len	IoPAGE_LEN(PL_bytecode_sv)		long
-xio_lines_left	IoLINES_LEFT(PL_bytecode_sv)		long
-xio_top_name	IoTOP_NAME(PL_bytecode_sv)		pvcontents
-xio_top_gv	*(SV**)&IoTOP_GV(PL_bytecode_sv)	svindex
-xio_fmt_name	IoFMT_NAME(PL_bytecode_sv)		pvcontents
-xio_fmt_gv	*(SV**)&IoFMT_GV(PL_bytecode_sv)	svindex
-xio_bottom_name	IoBOTTOM_NAME(PL_bytecode_sv)		pvcontents
-xio_bottom_gv	*(SV**)&IoBOTTOM_GV(PL_bytecode_sv)	svindex
-xio_subprocess	IoSUBPROCESS(PL_bytecode_sv)		short
-xio_type	IoTYPE(PL_bytecode_sv)			char
-xio_flags	IoFLAGS(PL_bytecode_sv)			char
-xcv_stash	*(SV**)&CvSTASH(PL_bytecode_sv)		svindex
-xcv_start	CvSTART(PL_bytecode_sv)			opindex
-xcv_root	CvROOT(PL_bytecode_sv)			opindex
-xcv_gv		*(SV**)&CvGV(PL_bytecode_sv)		svindex
-xcv_filegv	*(SV**)&CvFILEGV(PL_bytecode_sv)	svindex
-xcv_depth	CvDEPTH(PL_bytecode_sv)			long
-xcv_padlist	*(SV**)&CvPADLIST(PL_bytecode_sv)	svindex
-xcv_outside	*(SV**)&CvOUTSIDE(PL_bytecode_sv)	svindex
-xcv_flags	CvFLAGS(PL_bytecode_sv)			U8
-av_extend	PL_bytecode_sv				SSize_t		x
-av_push		PL_bytecode_sv				svindex		x
-xav_fill	AvFILLp(PL_bytecode_sv)			SSize_t
-xav_max		AvMAX(PL_bytecode_sv)			SSize_t
-xav_flags	AvFLAGS(PL_bytecode_sv)			U8
-xhv_riter	HvRITER(PL_bytecode_sv)			I32
-xhv_name	HvNAME(PL_bytecode_sv)			pvcontents
-hv_store	PL_bytecode_sv				svindex		x
-sv_magic	PL_bytecode_sv				char		x
-mg_obj		SvMAGIC(PL_bytecode_sv)->mg_obj		svindex
-mg_private	SvMAGIC(PL_bytecode_sv)->mg_private	U16
-mg_flags	SvMAGIC(PL_bytecode_sv)->mg_flags	U8
-mg_pv		SvMAGIC(PL_bytecode_sv)			pvcontents	x
-xmg_stash	*(SV**)&SvSTASH(PL_bytecode_sv)		svindex
-gv_fetchpv	PL_bytecode_sv				strconst	x
-gv_stashpv	PL_bytecode_sv				strconst	x
-gp_sv		GvSV(PL_bytecode_sv)			svindex
-gp_refcnt	GvREFCNT(PL_bytecode_sv)		U32
-gp_refcnt_add	GvREFCNT(PL_bytecode_sv)		I32		x
-gp_av		*(SV**)&GvAV(PL_bytecode_sv)		svindex
-gp_hv		*(SV**)&GvHV(PL_bytecode_sv)		svindex
-gp_cv		*(SV**)&GvCV(PL_bytecode_sv)		svindex
-gp_filegv	*(SV**)&GvFILEGV(PL_bytecode_sv)	svindex
-gp_io		*(SV**)&GvIOp(PL_bytecode_sv)		svindex
-gp_form		*(SV**)&GvFORM(PL_bytecode_sv)		svindex
-gp_cvgen	GvCVGEN(PL_bytecode_sv)			U32
-gp_line		GvLINE(PL_bytecode_sv)			line_t
-gp_share	PL_bytecode_sv				svindex		x
-xgv_flags	GvFLAGS(PL_bytecode_sv)			U8
+pv_cur		bytecode_pv.xpv_cur			STRLEN
+pv_free		bytecode_pv				none		x
+sv_upgrade	bytecode_sv				char		x
+sv_refcnt	SvREFCNT(bytecode_sv)			U32
+sv_refcnt_add	SvREFCNT(bytecode_sv)			I32		x
+sv_flags	SvFLAGS(bytecode_sv)			U32
+xrv		SvRV(bytecode_sv)			svindex
+xpv		bytecode_sv				none		x
+xiv32		SvIVX(bytecode_sv)			I32
+xiv64		SvIVX(bytecode_sv)			IV64
+xnv		SvNVX(bytecode_sv)			NV
+xlv_targoff	LvTARGOFF(bytecode_sv)			STRLEN
+xlv_targlen	LvTARGLEN(bytecode_sv)			STRLEN
+xlv_targ	LvTARG(bytecode_sv)			svindex
+xlv_type	LvTYPE(bytecode_sv)			char
+xbm_useful	BmUSEFUL(bytecode_sv)			I32
+xbm_previous	BmPREVIOUS(bytecode_sv)			U16
+xbm_rare	BmRARE(bytecode_sv)			U8
+xfm_lines	FmLINES(bytecode_sv)			I32
+xio_lines	IoLINES(bytecode_sv)			long
+xio_page	IoPAGE(bytecode_sv)			long
+xio_page_len	IoPAGE_LEN(bytecode_sv)			long
+xio_lines_left	IoLINES_LEFT(bytecode_sv)	       	long
+xio_top_name	IoTOP_NAME(bytecode_sv)			pvcontents
+xio_top_gv	*(SV**)&IoTOP_GV(bytecode_sv)		svindex
+xio_fmt_name	IoFMT_NAME(bytecode_sv)			pvcontents
+xio_fmt_gv	*(SV**)&IoFMT_GV(bytecode_sv)		svindex
+xio_bottom_name	IoBOTTOM_NAME(bytecode_sv)		pvcontents
+xio_bottom_gv	*(SV**)&IoBOTTOM_GV(bytecode_sv)	svindex
+xio_subprocess	IoSUBPROCESS(bytecode_sv)		short
+xio_type	IoTYPE(bytecode_sv)			char
+xio_flags	IoFLAGS(bytecode_sv)			char
+xcv_stash	*(SV**)&CvSTASH(bytecode_sv)		svindex
+xcv_start	CvSTART(bytecode_sv)			opindex
+xcv_root	CvROOT(bytecode_sv)			opindex
+xcv_gv		*(SV**)&CvGV(bytecode_sv)		svindex
+xcv_file	CvFILE(bytecode_sv)			pvcontents
+xcv_depth	CvDEPTH(bytecode_sv)			long
+xcv_padlist	*(SV**)&CvPADLIST(bytecode_sv)		svindex
+xcv_outside	*(SV**)&CvOUTSIDE(bytecode_sv)		svindex
+xcv_flags	CvFLAGS(bytecode_sv)			U16
+av_extend	bytecode_sv				SSize_t		x
+av_push		bytecode_sv				svindex		x
+xav_fill	AvFILLp(bytecode_sv)			SSize_t
+xav_max		AvMAX(bytecode_sv)			SSize_t
+xav_flags	AvFLAGS(bytecode_sv)			U8
+xhv_riter	HvRITER(bytecode_sv)			I32
+xhv_name	HvNAME(bytecode_sv)			pvcontents
+hv_store	bytecode_sv				svindex		x
+sv_magic	bytecode_sv				char		x
+mg_obj		SvMAGIC(bytecode_sv)->mg_obj		svindex
+mg_private	SvMAGIC(bytecode_sv)->mg_private	U16
+mg_flags	SvMAGIC(bytecode_sv)->mg_flags		U8
+mg_pv		SvMAGIC(bytecode_sv)			pvcontents	x
+xmg_stash	*(SV**)&SvSTASH(bytecode_sv)		svindex
+gv_fetchpv	bytecode_sv				strconst	x
+gv_stashpv	bytecode_sv				strconst	x
+gp_sv		GvSV(bytecode_sv)			svindex
+gp_refcnt	GvREFCNT(bytecode_sv)			U32
+gp_refcnt_add	GvREFCNT(bytecode_sv)			I32		x
+gp_av		*(SV**)&GvAV(bytecode_sv)		svindex
+gp_hv		*(SV**)&GvHV(bytecode_sv)		svindex
+gp_cv		*(SV**)&GvCV(bytecode_sv)		svindex
+gp_file		GvFILE(bytecode_sv)			pvcontents
+gp_io		*(SV**)&GvIOp(bytecode_sv)		svindex
+gp_form		*(SV**)&GvFORM(bytecode_sv)		svindex
+gp_cvgen	GvCVGEN(bytecode_sv)			U32
+gp_line		GvLINE(bytecode_sv)			line_t
+gp_share	bytecode_sv				svindex		x
+xgv_flags	GvFLAGS(bytecode_sv)			U8
 op_next		PL_op->op_next				opindex
 op_sibling	PL_op->op_sibling			opindex
 op_ppaddr	PL_op->op_ppaddr			strconst	x
@@ -360,8 +384,6 @@ op_private	PL_op->op_private			U8
 op_first	cUNOP->op_first				opindex
 op_last		cBINOP->op_last				opindex
 op_other	cLOGOP->op_other			opindex
-op_true		cCONDOP->op_true			opindex
-op_false	cCONDOP->op_false			opindex
 op_children	cLISTOP->op_children			U32
 op_pmreplroot	cPMOP->op_pmreplroot			opindex
 op_pmreplrootgv	*(SV**)&cPMOP->op_pmreplroot		svindex
@@ -371,18 +393,19 @@ pregcomp	PL_op					pvcontents	x
 op_pmflags	cPMOP->op_pmflags			U16
 op_pmpermflags	cPMOP->op_pmpermflags			U16
 op_sv		cSVOP->op_sv				svindex
-op_gv		*(SV**)&cGVOP->op_gv			svindex
+op_padix	cPADOP->op_padix			PADOFFSET
 op_pv		cPVOP->op_pv				pvcontents
 op_pv_tr	cPVOP->op_pv				op_tr_array
 op_redoop	cLOOP->op_redoop			opindex
 op_nextop	cLOOP->op_nextop			opindex
 op_lastop	cLOOP->op_lastop			opindex
 cop_label	cCOP->cop_label				pvcontents
-cop_stash	*(SV**)&cCOP->cop_stash			svindex
-cop_filegv	*(SV**)&cCOP->cop_filegv		svindex
+cop_stashpv	cCOP					pvcontents	x
+cop_file	cCOP					pvcontents	x
 cop_seq		cCOP->cop_seq				U32
 cop_arybase	cCOP->cop_arybase			I32
-cop_line	cCOP->cop_line				line_t
+cop_line	cCOP					line_t		x
+cop_warnings	cCOP->cop_warnings			svindex
 main_start	PL_main_start				opindex
 main_root	PL_main_root				opindex
 curpad		PL_curpad				svindex		x
diff --git a/contrib/perl5/cc_runtime.h b/contrib/perl5/cc_runtime.h
index 9a01ff83359d..dbc747577494 100644
--- a/contrib/perl5/cc_runtime.h
+++ b/contrib/perl5/cc_runtime.h
@@ -1,4 +1,5 @@
-#define DOOP(ppname) PUTBACK; PL_op = ppname(ARGS); SPAGAIN
+#define DOOP(ppname) PUTBACK; PL_op = ppname(aTHX); SPAGAIN
+#define CCPP(s)   OP * s(pTHX)
 
 #define PP_LIST(g) do {			\
 	dMARK;				\
@@ -43,7 +44,7 @@
 	JMPENV_PUSH(ret);			\
 	switch (ret) {				\
 	case 0:					\
-	    PL_op = ppaddr(ARGS);			\
+	    PL_op = ppaddr(aTHX);		\
 	    PL_retstack[PL_retstack_ix - 1] = Nullop;	\
 	    if (PL_op != nxt) CALLRUNOPS();		\
 	    JMPENV_POP;				\
@@ -52,20 +53,23 @@
 	case 2: JMPENV_POP; JMPENV_JUMP(2);	\
 	case 3:					\
 	    JMPENV_POP;				\
-	    if (PL_restartop != nxt)		\
+	    if (PL_restartop && PL_restartop != nxt)		\
 		JMPENV_JUMP(3);			\
 	}					\
 	PL_op = nxt;				\
 	SPAGAIN;				\
     } while (0)
 
-#define PP_ENTERTRY(jmpbuf,label) do {		\
-	dJMPENV;				\
-	int ret;				\
-	JMPENV_PUSH(ret);			\
-	switch (ret) {				\
-	case 1: JMPENV_POP; JMPENV_JUMP(1);	\
-	case 2: JMPENV_POP; JMPENV_JUMP(2);	\
-	case 3: JMPENV_POP; SPAGAIN; goto label;\
-	}					\
-    } while (0)
+
+#define PP_ENTERTRY(jmpbuf,label)  \
+	STMT_START {                    \
+		int ret;		\
+		JMPENV_PUSH_ENV(jmpbuf,ret);			\
+		switch (ret) {				\
+			case 1: JMPENV_POP_ENV(jmpbuf); JMPENV_JUMP(1);\
+			case 2: JMPENV_POP_ENV(jmpbuf); JMPENV_JUMP(2);\
+			case 3: JMPENV_POP_ENV(jmpbuf); SPAGAIN; goto label;\
+		}                                       \
+	} STMT_END
+#define PP_LEAVETRY \
+	STMT_START{ PL_top_env=PL_top_env->je_prev; }STMT_END
diff --git a/contrib/perl5/cflags.SH b/contrib/perl5/cflags.SH
index 8a1ba8295c89..ec6dc3570e48 100755
--- a/contrib/perl5/cflags.SH
+++ b/contrib/perl5/cflags.SH
@@ -28,7 +28,7 @@ $startsh
 
 : In the following dollars and backticks do not need the extra backslash.
 $spitshell >>cflags <<'!NO!SUBS!'
-case $CONFIG in
+case $CONFIGDOTSH in
 '')
 	if test -f config.sh; then TOP=.;
 	elif test -f ../config.sh; then TOP=..;
@@ -65,7 +65,7 @@ case $# in
 0) set *.c; echo "The current C flags are:" ;;
 esac
 
-set `echo "$* " | sed -e 's/\.[oc] / /g' -e 's/\.obj / /g'`
+set `echo "$* " | sed -e 's/\.[oc] / /g' -e 's/\.obj / /g' -e "s/\\$obj_ext / /g"`
 
 for file do
 
@@ -76,7 +76,10 @@ for file do
 
     : allow variables like toke_cflags to be evaluated
 
-    eval 'eval ${'"${file}_cflags"'-""}'
+    if echo $file | grep -v / >/dev/null
+    then
+      eval 'eval ${'"${file}_cflags"'-""}'
+    fi
 
     : or customize here
 
@@ -102,6 +105,7 @@ for file do
     miniperlmain) ;;
     op) ;;
     perl) ;;
+    perlapi) ;;
     perlmain) ;;
     perly) ;;
     pp) ;;
diff --git a/contrib/perl5/config_h.SH b/contrib/perl5/config_h.SH
index 0b42d2928d3e..0f6f19acf76a 100755
--- a/contrib/perl5/config_h.SH
+++ b/contrib/perl5/config_h.SH
@@ -44,32 +44,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define LOC_SED 	"$full_sed"	/**/
 
-/* BIN:
- *	This symbol holds the path of the bin directory where the package will
- *	be installed. Program must be prepared to deal with ~name substitution.
- */
-/* BIN_EXP:
- *	This symbol is the filename expanded version of the BIN symbol, for
- *	programs that do not want to deal with that at run-time.
- */
-#define BIN "$bin"	/**/
-#define BIN_EXP "$binexp"	/**/
-
-/* CPPSTDIN:
- *	This symbol contains the first part of the string which will invoke
- *	the C preprocessor on the standard input and produce to standard
- *	output.	 Typical value of "cc -E" or "/lib/cpp", but it can also
- *	call a wrapper. See CPPRUN.
- */
-/* CPPMINUS:
- *	This symbol contains the second part of the string which will invoke
- *	the C preprocessor on the standard input and produce to standard
- *	output.  This symbol will have the value "-" if CPPSTDIN needs a minus
- *	to specify standard input, otherwise the value is "".
- */
-#define CPPSTDIN "$cppstdin"
-#define CPPMINUS "$cppminus"
-
 /* HAS_ALARM:
  *	This symbol, if defined, indicates that the alarm routine is
  *	available.
@@ -215,12 +189,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_fgetpos HAS_FGETPOS	/**/
 
-/* FLEXFILENAMES:
- *	This symbol, if defined, indicates that the system supports filenames
- *	longer than 14 characters.
- */
-#$d_flexfnam	FLEXFILENAMES		/**/
-
 /* HAS_FLOCK:
  *	This symbol, if defined, indicates that the flock routine is
  *	available to do file locking.
@@ -239,54 +207,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_fsetpos HAS_FSETPOS	/**/
 
-/* I_SYS_MOUNT:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
- */
-#$i_sysmount I_SYS_MOUNT		/**/
-
-/* HAS_FSTATFS:
- *	This symbol, if defined, indicates that the fstatfs routine is
- *	available to stat the filesystem of a file descriptor.
- */
-#$d_fstatfs HAS_FSTATFS	/**/
-
-/* HAS_STRUCT_STATFS_FLAGS:
- *	This symbol, if defined, indicates that the struct statfs has
- *	the f_flags member for mount flags.
- */
-#$d_statfsflags HAS_STRUCT_STATFS_FLAGS	/**/
-
-/* I_SYS_STATVFS:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
- */
-#$i_sysstatvfs I_SYS_STATVFS		/**/
-
-/* HAS_FSTATVFS:
- *	This symbol, if defined, indicates that the fstatvfs routine is
- *	available to stat the filesystem of a file descriptor.
- */
-#$d_fstatvfs HAS_FSTATVFS	/**/
-
-/* I_MNTENT:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
- */
-#$i_mntent I_MNTENT		/**/
-
-/* HAS_GETMNTENT:
- *	This symbol, if defined, indicates that the getmntent routine is
- *	available to lookup mount entries in some data base or other.
- */
-#$d_getmntent HAS_GETMNTENT	/**/
-
-/* HAS_HASMNTOPT:
- *	This symbol, if defined, indicates that the hasmntopt routine is
- *	available to query mount entries returned by getmntent.
- */
-#$d_hasmntopt HAS_HASMNTOPT	/**/
-
 /* HAS_GETTIMEOFDAY:
  *	This symbol, if defined, indicates that the gettimeofday() system
  *	call is available for a sub-second accuracy clock. Usually, the file
@@ -305,13 +225,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_getgrps HAS_GETGROUPS		/**/
 
-/* HAS_UNAME:
- *	This symbol, if defined, indicates that the C program may use the
- *	uname() routine to derive the host name.  See also HAS_GETHOSTNAME
- *	and PHOSTNAME.
- */
-#$d_uname HAS_UNAME		/**/
-
 /* HAS_GETLOGIN:
  *	This symbol, if defined, indicates that the getlogin routine is
  *	available to get the login name.
@@ -354,31 +267,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_getprior HAS_GETPRIORITY		/**/
 
-/* HAS_HTONL:
- *	This symbol, if defined, indicates that the htonl() routine (and
- *	friends htons() ntohl() ntohs()) are available to do network
- *	order byte swapping.
- */
-/* HAS_HTONS:
- *	This symbol, if defined, indicates that the htons() routine (and
- *	friends htonl() ntohl() ntohs()) are available to do network
- *	order byte swapping.
- */
-/* HAS_NTOHL:
- *	This symbol, if defined, indicates that the ntohl() routine (and
- *	friends htonl() htons() ntohs()) are available to do network
- *	order byte swapping.
- */
-/* HAS_NTOHS:
- *	This symbol, if defined, indicates that the ntohs() routine (and
- *	friends htonl() htons() ntohl()) are available to do network
- *	order byte swapping.
- */
-#$d_htonl HAS_HTONL		/**/
-#$d_htonl HAS_HTONS		/**/
-#$d_htonl HAS_NTOHL		/**/
-#$d_htonl HAS_NTOHS		/**/
-
 /* HAS_INET_ATON:
  *	This symbol, if defined, indicates to the C program that the
  *	inet_aton() function is available to parse IP address "dotted-quad"
@@ -482,11 +370,17 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_mktime HAS_MKTIME		/**/
 
-/* HAS_MSG:
- *	This symbol, if defined, indicates that the entire msg*(2) library is
- *	supported (IPC mechanism based on message queues).
+/* HAS_MSYNC:
+ *	This symbol, if defined, indicates that the msync system call is
+ *	available to synchronize a mapped file.
  */
-#$d_msg HAS_MSG		/**/
+#$d_msync HAS_MSYNC		/**/
+
+/* HAS_MUNMAP:
+ *	This symbol, if defined, indicates that the munmap system call is
+ *	available to unmap a region, usually mapped by mmap().
+ */
+#$d_munmap HAS_MUNMAP		/**/
 
 /* HAS_NICE:
  *	This symbol, if defined, indicates that the nice routine is
@@ -578,12 +472,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_select HAS_SELECT	/**/
 
-/* HAS_SEM:
- *	This symbol, if defined, indicates that the entire sem*(2) library is
- *	supported.
- */
-#$d_sem HAS_SEM		/**/
-
 /* HAS_SETEGID:
  *	This symbol, if defined, indicates that the setegid routine is available
  *	to change the effective gid of the current program.
@@ -683,12 +571,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_setsid HAS_SETSID	/**/
 
-/* HAS_SHM:
- *	This symbol, if defined, indicates that the entire shm*(2) library is
- *	supported.
- */
-#$d_shm HAS_SHM		/**/
-
 /* Shmat_t:
  *	This symbol holds the return type of the shmat() system call.
  *	Usually set to 'void *' or 'char *'.
@@ -703,12 +585,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #define Shmat_t $shmattype	/**/
 #$d_shmatprototype HAS_SHMAT_PROTOTYPE	/**/
 
-/* USE_STAT_BLOCKS:
- *	This symbol is defined if this system has a stat structure declaring
- *	st_blksize and st_blocks.
- */
-#$d_statblks USE_STAT_BLOCKS 	/**/
-
 /* HAS_STRCHR:
  *	This symbol is defined to indicate that the strchr()/strrchr()
  *	functions are available for string searching. If not, try the
@@ -734,25 +610,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_strctcpy	USE_STRUCT_COPY	/**/
 
-/* HAS_STRERROR:
- *	This symbol, if defined, indicates that the strerror routine is
- *	available to translate error numbers to strings. See the writeup
- *	of Strerror() in this file before you try to define your own.
- */
-/* HAS_SYS_ERRLIST:
- *	This symbol, if defined, indicates that the sys_errlist array is
- *	available to translate error numbers to strings. The extern int
- *	sys_nerr gives the size of that table.
- */
-/* Strerror:
- *	This preprocessor symbol is defined as a macro if strerror() is
- *	not available to translate error numbers to strings but sys_errlist[]
- *	array is there.
- */
-#$d_strerror HAS_STRERROR		/**/
-#$d_syserrlst HAS_SYS_ERRLIST	/**/
-#define Strerror(e) $d_strerrm
-
 /* HAS_STRTOD:
  *	This symbol, if defined, indicates that the strtod routine is
  *	available to provide better numeric string conversion than atof().
@@ -831,11 +688,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_umask HAS_UMASK		/**/
 
-/* HAS_VFORK:
- *	This symbol, if defined, indicates that vfork() exists.
- */
-#$d_vfork HAS_VFORK	/**/
-
 /* HASVOLATILE:
  *	This symbol, if defined, indicates that this C compiler knows about
  *	the volatile declaration.
@@ -868,17 +720,11 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_wctomb HAS_WCTOMB		/**/
 
-/* EBCDIC:
- *	This symbol, if defined, indicates that this system uses
- *	EBCDIC encoding.
- */
-#$ebcdic	EBCDIC 		/**/
-
 /* I_ARPA_INET:
- *	This symbol, if defined, indicates that  exists and should
- *	be included.
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include  to get inet_addr and friends declarations.
  */
-#$i_arpainet I_ARPA_INET	/**/
+#$i_arpainet	I_ARPA_INET		/**/
 
 /* I_DBM:
  *	This symbol, if defined, indicates that  exists and should
@@ -929,32 +775,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$i_float I_FLOAT		/**/
 
-/* I_GRP:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
- */
-/* GRPASSWD:
- *	This symbol, if defined, indicates to the C program that struct group
- *	contains gr_passwd.
- */
-/* HAS_SETGRENT:
- *	This symbol, if defined, indicates that the getgrent routine is
- *	available for initializing sequential access of the group database.
- */
-/* HAS_GETGRENT:
- *	This symbol, if defined, indicates that the getgrent routine is
- *	available for sequential access of the group database.
- */
-/* HAS_ENDGRENT:
- *	This symbol, if defined, indicates that the getgrent routine is
- *	available for finalizing sequential access of the group database.
- */
-#$i_grp I_GRP		/**/
-#$d_grpasswd GRPASSWD	/**/
-#$d_setgrent HAS_SETGRENT	/**/
-#$d_getgrent HAS_GETGRENT	/**/
-#$d_endgrent HAS_ENDGRENT	/**/
-
 /* I_LIMITS:
  *	This symbol, if defined, indicates to the C program that it should
  *	include  to get definition of symbols like WORD_BIT or
@@ -1184,20 +1004,156 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define STDCHAR $stdchar	/**/
 
-/* MEM_ALIGNBYTES:
- *	 This symbol contains the number of bytes required to align a
- *	 double. Usual values are 2, 4 and 8.
- *	 On NeXT starting with 3.2, you can build "Fat" Multiple Architecture
- *	 Binaries (MAB) for targets with varying alignment.  This only matters
- *	 for perl, where the config.h can be generated and installed on one
- *	 system, and used by a different architecture to build an extension.
- *	 The default is eight, for safety.
+/* CROSSCOMPILE:
+ *	This symbol, if defined, signifies that we our
+ *	build process is a cross-compilation.
  */
-#define MEM_ALIGNBYTES $alignbytes	/**/
+#$crosscompile CROSSCOMPILE		/**/
+
+/* INTSIZE:
+ *	This symbol contains the value of sizeof(int) so that the C
+ *	preprocessor can make decisions based on it.
+ */
+/* LONGSIZE:
+ *	This symbol contains the value of sizeof(long) so that the C
+ *	preprocessor can make decisions based on it.
+ */
+/* SHORTSIZE:
+ *	This symbol contains the value of sizeof(short) so that the C
+ *	preprocessor can make decisions based on it.
+ */
+#define INTSIZE $intsize		/**/
+#define LONGSIZE $longsize		/**/
+#define SHORTSIZE $shortsize		/**/
+
+/* MULTIARCH:
+ *	This symbol, if defined, signifies that the build
+ *	process will produce some binary files that are going to be
+ *	used in a cross-platform environment.  This is the case for
+ *	example with the NeXT "fat" binaries that contain executables
+ *	for several CPUs.
+ */
+#$multiarch MULTIARCH		/**/
+
+/* HAS_QUAD:
+ *	This symbol, if defined, tells that there's a 64-bit integer type,
+ *	Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one
+ *	of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T.
+ */
+#$d_quad HAS_QUAD	/**/
+#ifdef HAS_QUAD
+#   define Quad_t $quadtype	/**/
+#   define Uquad_t $uquadtype	/**/
+#   define QUADKIND $quadkind	/**/
+#   define QUAD_IS_INT	1
+#   define QUAD_IS_LONG	2
+#   define QUAD_IS_LONG_LONG	3
+#   define QUAD_IS_INT64_T	4
+#endif
+
+/* HAS_ACCESSX:
+ *	This symbol, if defined, indicates that the accessx routine is
+ *	available to do extended access checks.
+ */
+#$d_accessx HAS_ACCESSX		/**/
+
+/* HAS_EACCESS:
+ *	This symbol, if defined, indicates that the eaccess routine is
+ *	available to do extended access checks.
+ */
+#$d_eaccess HAS_EACCESS		/**/
+
+/* I_SYS_ACCESS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#$i_sysaccess   I_SYS_ACCESS                /**/
+
+/* I_SYS_SECURITY:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#$i_syssecrt   I_SYS_SECURITY	/**/
+
+/* OSNAME:
+ *	This symbol contains the name of the operating system, as determined
+ *	by Configure.  You shouldn't rely on it too much; the specific
+ *	feature tests from Configure are generally more reliable.
+ */
+#define OSNAME "$osname"		/**/
+
+/* MEM_ALIGNBYTES:
+ *	This symbol contains the number of bytes required to align a
+ *	double, or a long double when applicable. Usual values are 2,
+ *	4 and 8. The default is eight, for safety.
+ */
+#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+#  define MEM_ALIGNBYTES 8
+#else
+#define MEM_ALIGNBYTES $alignbytes
+#endif
+
+/* ARCHLIB:
+ *	This variable, if defined, holds the name of the directory in
+ *	which the user wants to put architecture-dependent public
+ *	library files for $package.  It is most often a local directory
+ *	such as /usr/local/lib.  Programs using this variable must be
+ *	prepared to deal with filename expansion.  If ARCHLIB is the
+ *	same as PRIVLIB, it is not defined, since presumably the
+ *	program already searches PRIVLIB.
+ */
+/* ARCHLIB_EXP:
+ *	This symbol contains the ~name expanded version of ARCHLIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#$d_archlib ARCHLIB "$archlib"		/**/
+#$d_archlib ARCHLIB_EXP "$archlibexp"		/**/
+
+/* ARCHNAME:
+ *	This symbol holds a string representing the architecture name.
+ *	It may be used to construct an architecture-dependant pathname
+ *	where library files may be held under a private library, for
+ *	instance.
+ */
+#define ARCHNAME "$archname"		/**/
+
+/* HAS_ATOLF:
+ *	This symbol, if defined, indicates that the atolf routine is
+ *	available to convert strings into long doubles.
+ */
+#$d_atolf HAS_ATOLF		/**/
+
+/* HAS_ATOLL:
+ *	This symbol, if defined, indicates that the atoll routine is
+ *	available to convert strings into long longs.
+ */
+#$d_atoll HAS_ATOLL		/**/
+
+/* BIN:
+ *	This symbol holds the path of the bin directory where the package will
+ *	be installed. Program must be prepared to deal with ~name substitution.
+ */
+/* BIN_EXP:
+ *	This symbol is the filename expanded version of the BIN symbol, for
+ *	programs that do not want to deal with that at run-time.
+ */
+#define BIN "$bin"	/**/
+#define BIN_EXP "$binexp"	/**/
+
+/* PERL_BINCOMPAT_5005:
+ *	This symbol, if defined, indicates that this version of Perl should be
+ *	binary-compatible with Perl 5.005.  This is impossible for builds
+ *	that use features like threads and multiplicity it is always $undef
+ *	for those versions.
+ */
+#$d_bincompat5005 PERL_BINCOMPAT_5005			/**/
 
 /* BYTEORDER:
  *	This symbol holds the hexadecimal constant defined in byteorder,
  *	i.e. 0x1234 or 0x4321, etc...
+ *	If the compiler supports cross-compiling or multiple-architecture
+ *	binaries (eg. on NeXT systems), use compiler-defined macros to
+ *	determine the byte order.
  *	On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture
  *	Binaries (MAB) on either big endian or little endian machines.
  *	The endian-ness is available at compile-time.  This only matters
@@ -1208,16 +1164,94 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  *	so the default case (for NeXT) is big endian to catch them. 
  *	This might matter for NeXT 3.0.
  */
-#ifndef NeXT
+#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+#  ifdef __LITTLE_ENDIAN__
+#    if LONGSIZE == 4
+#      define BYTEORDER 0x1234
+#    else
+#      if LONGSIZE == 8
+#        define BYTEORDER 0x12345678
+#      endif
+#    endif
+#  else
+#    ifdef __BIG_ENDIAN__
+#      if LONGSIZE == 4
+#        define BYTEORDER 0x4321
+#      else
+#        if LONGSIZE == 8
+#          define BYTEORDER 0x87654321
+#        endif
+#      endif
+#    endif
+#  endif
+#  if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__))
+#    define BYTEORDER 0x4321
+#  endif
+#else
 #define BYTEORDER 0x$byteorder	/* large digits for MSB */
-#else  /* NeXT */
-#ifdef __LITTLE_ENDIAN__
-#define BYTEORDER 0x1234
-#else /* __BIG_ENDIAN__ */
-#define BYTEORDER 0x4321
-#endif /* ENDIAN CHECK */
 #endif /* NeXT */
 
+/* CAT2:
+ *	This macro catenates 2 tokens together.
+ */
+/* STRINGIFY:
+ *	This macro surrounds its token with double quotes.
+ */
+#if $cpp_stuff == 1
+#  define CAT2(a,b)	a/**/b
+#  define STRINGIFY(a)	"a"
+		/* If you can get stringification with catify, tell me how! */
+#endif
+#if $cpp_stuff == 42
+#  define PeRl_CaTiFy(a, b)	a ## b	
+#  define PeRl_StGiFy(a)	#a
+/* the additional level of indirection enables these macros to be
+ * used as arguments to other macros.  See K&R 2nd ed., page 231. */
+#  define CAT2(a,b)	PeRl_CaTiFy(a,b)
+#  define StGiFy(a)	PeRl_StGiFy(a)
+#  define STRINGIFY(a)	PeRl_StGiFy(a)
+#endif
+#if $cpp_stuff != 1 && $cpp_stuff != 42
+#include "Bletch: How does this C preprocessor catenate tokens?"
+#endif
+
+/* CPPSTDIN:
+ *	This symbol contains the first part of the string which will invoke
+ *	the C preprocessor on the standard input and produce to standard
+ *	output.	 Typical value of "cc -E" or "/lib/cpp", but it can also
+ *	call a wrapper. See CPPRUN.
+ */
+/* CPPMINUS:
+ *	This symbol contains the second part of the string which will invoke
+ *	the C preprocessor on the standard input and produce to standard
+ *	output.  This symbol will have the value "-" if CPPSTDIN needs a minus
+ *	to specify standard input, otherwise the value is "".
+ */
+/* CPPRUN:
+ *	This symbol contains the string which will invoke a C preprocessor on
+ *	the standard input and produce to standard output. It needs to end
+ *	with CPPLAST, after all other preprocessor flags have been specified.
+ *	The main difference with CPPSTDIN is that this program will never be a
+ *	pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
+ *	available directly to the user. Note that it may well be different from
+ *	the preprocessor used to compile the C program.
+ */
+/* CPPLAST:
+ *	This symbol is intended to be used along with CPPRUN in the same manner
+ *	symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
+ */
+#define CPPSTDIN "$cppstdin"
+#define CPPMINUS "$cppminus"
+#define CPPRUN "$cpprun"
+#define CPPLAST "$cpplast"
+
+/* HAS_ACCESS:
+ *	This manifest constant lets the C program know that the access()
+ *	system call is available to check for accessibility using real UID/GID.
+ *	(always present on UNIX.)
+ */
+#$d_access HAS_ACCESS		/**/
+
 /* CASTI32:
  *	This symbol is defined if the C compiler can cast negative
  *	or large floating point numbers to 32-bit ints.
@@ -1245,6 +1279,110 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_void_closedir VOID_CLOSEDIR		/**/
 
+/* HAS_CSH:
+ *	This symbol, if defined, indicates that the C-shell exists.
+ */
+/* CSH:
+ *	This symbol, if defined, contains the full pathname of csh.
+ */
+#$d_csh HAS_CSH		/**/
+#ifdef HAS_CSH
+#define CSH "$full_csh"	/**/
+#endif
+
+/* DLSYM_NEEDS_UNDERSCORE:
+ *	This symbol, if defined, indicates that we need to prepend an
+ *	underscore to the symbol name before calling dlsym().  This only
+ *	makes sense if you *have* dlsym, which we will presume is the
+ *	case if you're using dl_dlopen.xs.
+ */
+#$d_dlsymun 	DLSYM_NEEDS_UNDERSCORE 	/**/
+
+/* HAS_DRAND48_PROTO:
+ *	This symbol, if defined, indicates that the system provides
+ *	a prototype for the drand48() function.  Otherwise, it is up
+ *	to the program to supply one.  A good guess is
+ *		extern double drand48 _((void));
+ */
+#$d_drand48proto	HAS_DRAND48_PROTO	/**/
+
+/* HAS_ENDGRENT:
+ *	This symbol, if defined, indicates that the getgrent routine is
+ *	available for finalizing sequential access of the group database.
+ */
+#$d_endgrent HAS_ENDGRENT		/**/
+
+/* HAS_ENDHOSTENT:
+ *	This symbol, if defined, indicates that the endhostent() routine is
+ *	available to close whatever was being used for host queries.
+ */
+#$d_endhent HAS_ENDHOSTENT		/**/
+
+/* HAS_ENDNETENT:
+ *	This symbol, if defined, indicates that the endnetent() routine is
+ *	available to close whatever was being used for network queries.
+ */
+#$d_endnent HAS_ENDNETENT		/**/
+
+/* HAS_ENDPROTOENT:
+ *	This symbol, if defined, indicates that the endprotoent() routine is
+ *	available to close whatever was being used for protocol queries.
+ */
+#$d_endpent HAS_ENDPROTOENT		/**/
+
+/* HAS_ENDPWENT:
+ *	This symbol, if defined, indicates that the getgrent routine is
+ *	available for finalizing sequential access of the passwd database.
+ */
+#$d_endpwent HAS_ENDPWENT		/**/
+
+/* HAS_ENDSERVENT:
+ *	This symbol, if defined, indicates that the endservent() routine is
+ *	available to close whatever was being used for service queries.
+ */
+#$d_endsent HAS_ENDSERVENT		/**/
+
+/* HAS_ENDSPENT:
+ *	This symbol, if defined, indicates that the endspent system call is
+ *	available to finalize the scan of SysV shadow password entries.
+ */
+#$d_endspent HAS_ENDSPENT		/**/
+
+/* HAS_FD_SET:
+ *	This symbol, when defined, indicates presence of the fd_set typedef
+ *	in 
+ */
+#$d_fd_set HAS_FD_SET	/**/
+
+/* HAS_FPOS64_T:
+ *	This symbol will be defined if the C compiler supports fpos64_t.
+ */
+#$d_fpos64_t	HAS_FPOS64_T    	/**/
+
+/* HAS_STRUCT_FS_DATA:
+ *	This symbol, if defined, indicates that the struct fs_data
+ *	to do statfs() is supported.
+ */
+#$d_fs_data_s HAS_STRUCT_FS_DATA	/**/
+
+/* HAS_FSEEKO:
+ *	This symbol, if defined, indicates that the fseeko routine is
+ *	available to fseek beyond 32 bits (useful for ILP32 hosts).
+ */
+#$d_fseeko HAS_FSEEKO		/**/
+
+/* HAS_FSTATFS:
+ *	This symbol, if defined, indicates that the fstatfs routine is
+ *	available to stat filesystems by file descriptors.
+ */
+#$d_fstatfs HAS_FSTATFS		/**/
+
+/* HAS_FTELLO:
+ *	This symbol, if defined, indicates that the ftello routine is
+ *	available to ftell beyond 32 bits (useful for ILP32 hosts).
+ */
+#$d_ftello HAS_FTELLO		/**/
+
 /* Gconvert:
  *	This preprocessor macro is defined to convert a floating point
  *	number to a string without a trailing decimal point.  This
@@ -1262,23 +1400,347 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define Gconvert(x,n,t,b) $d_Gconvert
 
+/* HAS_GETCWD:
+ *	This symbol, if defined, indicates that the getcwd routine is
+ *	available to get the current working directory.
+ */
+#$d_getcwd HAS_GETCWD		/**/
+
+/* HAS_GETFSSTAT:
+ *	This symbol, if defined, indicates that the getfsstat routine is
+ *	available to stat filesystems in bulk.
+ */
+#$d_getfsstat HAS_GETFSSTAT		/**/
+
+/* HAS_GETGRENT:
+ *	This symbol, if defined, indicates that the getgrent routine is
+ *	available for sequential access of the group database.
+ */
+#$d_getgrent HAS_GETGRENT		/**/
+
+/* HAS_GETHOSTBYADDR:
+ *	This symbol, if defined, indicates that the gethostbyaddr() routine is
+ *	available to look up hosts by their IP addresses.
+ */
+#$d_gethbyaddr HAS_GETHOSTBYADDR		/**/
+
+/* HAS_GETHOSTBYNAME:
+ *	This symbol, if defined, indicates that the gethostbyname() routine is
+ *	available to look up host names in some data base or other.
+ */
+#$d_gethbyname HAS_GETHOSTBYNAME		/**/
+
+/* HAS_GETHOSTENT:
+ *	This symbol, if defined, indicates that the gethostent() routine is
+ *	available to look up host names in some data base or another.
+ */
+#$d_gethent HAS_GETHOSTENT		/**/
+
+/* HAS_GETHOSTNAME:
+ *	This symbol, if defined, indicates that the C program may use the
+ *	gethostname() routine to derive the host name.  See also HAS_UNAME
+ *	and PHOSTNAME.
+ */
+/* HAS_UNAME:
+ *	This symbol, if defined, indicates that the C program may use the
+ *	uname() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *	and PHOSTNAME.
+ */
+/* PHOSTNAME:
+ *	This symbol, if defined, indicates the command to feed to the
+ *	popen() routine to derive the host name.  See also HAS_GETHOSTNAME
+ *	and HAS_UNAME.	Note that the command uses a fully qualified path,
+ *	so that it is safe even if used by a process with super-user
+ *	privileges.
+ */
+/* HAS_PHOSTNAME:
+ *	This symbol, if defined, indicates that the C program may use the
+ *	contents of PHOSTNAME as a command to feed to the popen() routine
+ *	to derive the host name.
+ */
+#$d_gethname HAS_GETHOSTNAME	/**/
+#$d_uname HAS_UNAME		/**/
+#$d_phostname HAS_PHOSTNAME	/**/
+#ifdef HAS_PHOSTNAME
+#define PHOSTNAME "$aphostname"	/* How to get the host name */
+#endif
+
+/* HAS_GETHOST_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for gethostent(), gethostbyname(), and
+ *	gethostbyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_gethostprotos	HAS_GETHOST_PROTOS	/**/
+
+/* HAS_GETMNT:
+ *	This symbol, if defined, indicates that the getmnt routine is
+ *	available to get filesystem mount info by filename.
+ */
+#$d_getmnt HAS_GETMNT		/**/
+
+/* HAS_GETMNTENT:
+ *	This symbol, if defined, indicates that the getmntent routine is
+ *	available to iterate through mounted file systems to get their info.
+ */
+#$d_getmntent HAS_GETMNTENT		/**/
+
+/* HAS_GETNETBYADDR:
+ *	This symbol, if defined, indicates that the getnetbyaddr() routine is
+ *	available to look up networks by their IP addresses.
+ */
+#$d_getnbyaddr HAS_GETNETBYADDR		/**/
+
+/* HAS_GETNETBYNAME:
+ *	This symbol, if defined, indicates that the getnetbyname() routine is
+ *	available to look up networks by their names.
+ */
+#$d_getnbyname HAS_GETNETBYNAME		/**/
+
+/* HAS_GETNETENT:
+ *	This symbol, if defined, indicates that the getnetent() routine is
+ *	available to look up network names in some data base or another.
+ */
+#$d_getnent HAS_GETNETENT		/**/
+
+/* HAS_GETNET_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for getnetent(), getnetbyname(), and
+ *	getnetbyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_getnetprotos	HAS_GETNET_PROTOS	/**/
+
+/* HAS_GETPROTOENT:
+ *	This symbol, if defined, indicates that the getprotoent() routine is
+ *	available to look up protocols in some data base or another.
+ */
+#$d_getpent HAS_GETPROTOENT		/**/
+
+/* HAS_GETPROTOBYNAME:
+ *	This symbol, if defined, indicates that the getprotobyname()
+ *	routine is available to look up protocols by their name.
+ */
+/* HAS_GETPROTOBYNUMBER:
+ *	This symbol, if defined, indicates that the getprotobynumber()
+ *	routine is available to look up protocols by their number.
+ */
+#$d_getpbyname HAS_GETPROTOBYNAME		/**/
+#$d_getpbynumber HAS_GETPROTOBYNUMBER		/**/
+
+/* HAS_GETPROTO_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for getprotoent(), getprotobyname(), and
+ *	getprotobyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_getprotoprotos	HAS_GETPROTO_PROTOS	/**/
+
+/* HAS_GETPWENT:
+ *	This symbol, if defined, indicates that the getpwent routine is
+ *	available for sequential access of the passwd database.
+ *	If this is not available, the older getpw() function may be available.
+ */
+#$d_getpwent HAS_GETPWENT		/**/
+
+/* HAS_GETSERVENT:
+ *	This symbol, if defined, indicates that the getservent() routine is
+ *	available to look up network services in some data base or another.
+ */
+#$d_getsent HAS_GETSERVENT		/**/
+
+/* HAS_GETSERV_PROTOS:
+ *	This symbol, if defined, indicates that  includes
+ *	prototypes for getservent(), getservbyname(), and
+ *	getservbyaddr().  Otherwise, it is up to the program to guess
+ *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#$d_getservprotos	HAS_GETSERV_PROTOS	/**/
+
+/* HAS_GETSPENT:
+ *	This symbol, if defined, indicates that the getspent system call is
+ *	available to retrieve SysV shadow password entries sequentially.
+ */
+#$d_getspent HAS_GETSPENT		/**/
+
+/* HAS_GETSPNAM:
+ *	This symbol, if defined, indicates that the getspnam system call is
+ *	available to retrieve SysV shadow password entries by name.
+ */
+#$d_getspnam HAS_GETSPNAM		/**/
+
+/* HAS_GETSERVBYNAME:
+ *	This symbol, if defined, indicates that the getservbyname()
+ *	routine is available to look up services by their name.
+ */
+/* HAS_GETSERVBYPORT:
+ *	This symbol, if defined, indicates that the getservbyport()
+ *	routine is available to look up services by their port.
+ */
+#$d_getsbyname HAS_GETSERVBYNAME		/**/
+#$d_getsbyport HAS_GETSERVBYPORT		/**/
+
 /* HAS_GNULIBC:
  *	This symbol, if defined, indicates to the C program that 
  *	the GNU C library is being used.
  */
 #$d_gnulibc HAS_GNULIBC  	/**/
+#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
+#   define _GNU_SOURCE
+#endif
+/* HAS_HASMNTOPT:
+ *	This symbol, if defined, indicates that the hasmntopt routine is
+ *	available to query the mount options of file systems.
+ */
+#$d_hasmntopt HAS_HASMNTOPT		/**/
+
+/* HAS_HTONL:
+ *	This symbol, if defined, indicates that the htonl() routine (and
+ *	friends htons() ntohl() ntohs()) are available to do network
+ *	order byte swapping.
+ */
+/* HAS_HTONS:
+ *	This symbol, if defined, indicates that the htons() routine (and
+ *	friends htonl() ntohl() ntohs()) are available to do network
+ *	order byte swapping.
+ */
+/* HAS_NTOHL:
+ *	This symbol, if defined, indicates that the ntohl() routine (and
+ *	friends htonl() htons() ntohs()) are available to do network
+ *	order byte swapping.
+ */
+/* HAS_NTOHS:
+ *	This symbol, if defined, indicates that the ntohs() routine (and
+ *	friends htonl() htons() ntohl()) are available to do network
+ *	order byte swapping.
+ */
+#$d_htonl HAS_HTONL		/**/
+#$d_htonl HAS_HTONS		/**/
+#$d_htonl HAS_NTOHL		/**/
+#$d_htonl HAS_NTOHS		/**/
+
+/* HAS_ICONV:
+ *	This symbol, if defined, indicates that the iconv routine is
+ *	available to do character set conversions.
+ */
+#$d_iconv HAS_ICONV		/**/
+
+/* HAS_INT64_T:
+ *     This symbol will defined if the C compiler supports int64_t.
+ *     Usually the  needs to be included, but sometimes
+ *	 is enough.
+ */
+#$d_int64_t     HAS_INT64_T               /**/
+
 /* HAS_ISASCII:
  *	This manifest constant lets the C program know that isascii 
  *	is available.
  */
 #$d_isascii HAS_ISASCII		/**/
 
-/* HAS_LCHOWN:
- *	This symbol, if defined, indicates that the lchown routine is
- *	available to operate on a symbolic link (instead of following the
- *	link).
+/* HAS_LDBL_DIG:
+ *	This symbol, if defined, indicates that this system's 
+ *	or  defines the symbol LDBL_DIG, which is the number
+ *	of significant digits in a long double precision number. Unlike
+ *	for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined.
  */
-#$d_lchown HAS_LCHOWN		/**/
+#$d_ldbl_dig HAS_LDBL_DIG 	/* */
+
+/* HAS_LONG_DOUBLE:
+ *	This symbol will be defined if the C compiler supports long
+ *	doubles.
+ */
+/* LONG_DOUBLESIZE:
+ *	This symbol contains the size of a long double, so that the 
+ *	C preprocessor can make decisions based on it.  It is only
+ *	defined if the system supports long doubles.
+ */
+#$d_longdbl HAS_LONG_DOUBLE		/**/
+#ifdef HAS_LONG_DOUBLE
+#define LONG_DOUBLESIZE $longdblsize		/**/
+#endif
+
+/* HAS_LONG_LONG:
+ *	This symbol will be defined if the C compiler supports long long.
+ */
+/* LONGLONGSIZE:
+ *	This symbol contains the size of a long long, so that the 
+ *	C preprocessor can make decisions based on it.  It is only
+ *	defined if the system supports long long.
+ */
+#$d_longlong HAS_LONG_LONG		/**/
+#ifdef HAS_LONG_LONG
+#define LONGLONGSIZE $longlongsize		/**/
+#endif
+
+/* HAS_LSEEK_PROTO:
+ *	This symbol, if defined, indicates that the system provides
+ *	a prototype for the lseek() function.  Otherwise, it is up
+ *	to the program to supply one.  A good guess is
+ *		extern off_t lseek(int, off_t, int);
+ */
+#$d_lseekproto	HAS_LSEEK_PROTO	/**/
+
+/* HAS_MADVISE:
+ *	This symbol, if defined, indicates that the madvise system call is
+ *	available to map a file into memory.
+ */
+#$d_madvise HAS_MADVISE		/**/
+
+/* HAS_MEMCHR:
+ *	This symbol, if defined, indicates that the memchr routine is available
+ *	to locate characters within a C string.
+ */
+#$d_memchr HAS_MEMCHR	/**/
+
+/* HAS_MKDTEMP:
+ *	This symbol, if defined, indicates that the mkdtemp routine is
+ *	available to exclusively create a uniquely named temporary directory.
+ */
+#$d_mkdtemp HAS_MKDTEMP		/**/
+
+/* HAS_MKSTEMP:
+ *	This symbol, if defined, indicates that the mkstemp routine is
+ *	available to exclusively create and open a uniquely named
+ *	temporary file.
+ */
+#$d_mkstemp HAS_MKSTEMP		/**/
+
+/* HAS_MKSTEMPS:
+ *	This symbol, if defined, indicates that the mkstemps routine is
+ *	available to excluslvely create and open a uniquely named
+ *	(with a suffix) temporary file.
+ */
+#$d_mkstemps HAS_MKSTEMPS		/**/
+
+/* HAS_MMAP:
+ *	This symbol, if defined, indicates that the mmap system call is
+ *	available to map a file into memory.
+ */
+/* Mmap_t:
+ *	This symbol holds the return type of the mmap() system call
+ *	(and simultaneously the type of the first argument).
+ *	Usually set to 'void *' or 'cadd_t'.
+ */
+#$d_mmap HAS_MMAP		/**/
+#define Mmap_t $mmaptype	/**/
+
+/* HAS_MPROTECT:
+ *	This symbol, if defined, indicates that the mprotect system call is
+ *	available to modify the access protection of a memory mapped file.
+ */
+#$d_mprotect HAS_MPROTECT		/**/
+
+/* HAS_MSG:
+ *	This symbol, if defined, indicates that the entire msg*(2) library is
+ *	supported (IPC mechanism based on message queues).
+ */
+#$d_msg HAS_MSG		/**/
+
+/* HAS_OFF64_T:
+ *	This symbol will be defined if the C compiler supports off64_t.
+ */
+#$d_off64_t	HAS_OFF64_T    		/**/
 
 /* HAS_OPEN3:
  *	This manifest constant lets the C program know that the three
@@ -1286,6 +1748,35 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_open3 HAS_OPEN3		/**/
 
+/* OLD_PTHREAD_CREATE_JOINABLE:
+ *	This symbol, if defined, indicates how to create pthread
+ *	in joinable (aka undetached) state.  NOTE: not defined
+ *	if pthread.h already has defined PTHREAD_CREATE_JOINABLE
+ *	(the new version of the constant).
+ *	If defined, known values are PTHREAD_CREATE_UNDETACHED
+ *	and __UNDETACHED.
+ */
+#$d_old_pthread_create_joinable OLD_PTHREAD_CREATE_JOINABLE $old_pthread_create_joinable /**/
+
+/* HAS_PTHREAD_YIELD:
+ *	This symbol, if defined, indicates that the pthread_yield 
+ *	routine is available to yield the execution of the current
+ *	thread.	 sched_yield is preferable to pthread_yield.
+ */
+/* SCHED_YIELD:
+ *	This symbol defines the way to yield the execution of
+ *	the current thread.  Known ways are sched_yield,
+ *	pthread_yield, and pthread_yield with NULL.
+ */
+/* HAS_SCHED_YIELD:
+ *	This symbol, if defined, indicates that the sched_yield
+ *	routine is available to yield the execution of the current
+ *	thread.	 sched_yield is preferable to pthread_yield.
+ */
+#$d_pthread_yield HAS_PTHREAD_YIELD	/**/
+#define SCHED_YIELD	$sched_yield	/**/
+#$d_sched_yield HAS_SCHED_YIELD	/**/
+
 /* HAS_SAFE_BCOPY:
  *	This symbol, if defined, indicates that the bcopy routine is available
  *	to copy potentially overlapping memory blocks. Otherwise you should
@@ -1309,12 +1800,93 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_sanemcmp HAS_SANE_MEMCMP	/**/
 
+/* HAS_SEM:
+ *	This symbol, if defined, indicates that the entire sem*(2) library is
+ *	supported.
+ */
+#$d_sem HAS_SEM		/**/
+
+/* HAS_SETGRENT:
+ *	This symbol, if defined, indicates that the setgrent routine is
+ *	available for initializing sequential access of the group database.
+ */
+#$d_setgrent HAS_SETGRENT		/**/
+
+/* HAS_SETGROUPS:
+ *	This symbol, if defined, indicates that the setgroups() routine is
+ *	available to set the list of process groups.  If unavailable, multiple
+ *	groups are probably not supported.
+ */
+#$d_setgrps HAS_SETGROUPS		/**/
+
+/* HAS_SETHOSTENT:
+ *	This symbol, if defined, indicates that the sethostent() routine is
+ *	available.
+ */
+#$d_sethent HAS_SETHOSTENT		/**/
+
+/* HAS_SETNETENT:
+ *	This symbol, if defined, indicates that the setnetent() routine is
+ *	available.
+ */
+#$d_setnent HAS_SETNETENT		/**/
+
+/* HAS_SETPROTOENT:
+ *	This symbol, if defined, indicates that the setprotoent() routine is
+ *	available.
+ */
+#$d_setpent HAS_SETPROTOENT		/**/
+
+/* HAS_SETPWENT:
+ *	This symbol, if defined, indicates that the setpwent routine is
+ *	available for initializing sequential access of the passwd database.
+ */
+#$d_setpwent HAS_SETPWENT		/**/
+
+/* HAS_SETSERVENT:
+ *	This symbol, if defined, indicates that the setservent() routine is
+ *	available.
+ */
+#$d_setsent HAS_SETSERVENT		/**/
+
+/* HAS_SETSPENT:
+ *	This symbol, if defined, indicates that the setspent system call is
+ *	available to initialize the scan of SysV shadow password entries.
+ */
+#$d_setspent HAS_SETSPENT		/**/
+
+/* HAS_SETVBUF:
+ *	This symbol, if defined, indicates that the setvbuf routine is
+ *	available to change buffering on an open stdio stream.
+ *	to a line-buffered mode.
+ */
+#$d_setvbuf HAS_SETVBUF		/**/
+
+/* USE_SFIO:
+ *	This symbol, if defined, indicates that sfio should
+ *	be used.
+ */
+#$d_sfio	USE_SFIO		/**/
+
+/* HAS_SHM:
+ *	This symbol, if defined, indicates that the entire shm*(2) library is
+ *	supported.
+ */
+#$d_shm HAS_SHM		/**/
+
 /* HAS_SIGACTION:
  *	This symbol, if defined, indicates that Vr4's sigaction() routine
  *	is available.
  */
 #$d_sigaction HAS_SIGACTION	/**/
 
+/* HAS_SIGSETJMP:
+ *	This variable indicates to the C program that the sigsetjmp()
+ *	routine is available to save the calling process's registers
+ *	and stack environment for later use by siglongjmp(), and
+ *	to optionally save the process's signal mask.  See
+ *	Sigjmp_buf, Sigsetjmp, and Siglongjmp.
+ */
 /* Sigjmp_buf:
  *	This is the buffer type to be used with Sigsetjmp and Siglongjmp.
  */
@@ -1339,6 +1911,90 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #define Siglongjmp(buf,retval) longjmp((buf),(retval))
 #endif
 
+/* HAS_SOCKET:
+ *	This symbol, if defined, indicates that the BSD socket interface is
+ *	supported.
+ */
+/* HAS_SOCKETPAIR:
+ *	This symbol, if defined, indicates that the BSD socketpair() call is
+ *	supported.
+ */
+/* HAS_MSG_CTRUNC:
+ *	This symbol, if defined, indicates that the MSG_CTRUNC is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_DONTROUTE:
+ *	This symbol, if defined, indicates that the MSG_DONTROUTE is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_OOB:
+ *	This symbol, if defined, indicates that the MSG_OOB is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_PEEK:
+ *	This symbol, if defined, indicates that the MSG_PEEK is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_MSG_PROXY:
+ *	This symbol, if defined, indicates that the MSG_PROXY is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+/* HAS_SCM_RIGHTS:
+ *	This symbol, if defined, indicates that the SCM_RIGHTS is supported.
+ *	Checking just with #ifdef might not be enough because this symbol
+ *	has been known to be an enum.
+ */
+#$d_socket	HAS_SOCKET		/**/
+#$d_sockpair	HAS_SOCKETPAIR	/**/
+#$d_msg_ctrunc	HAS_MSG_CTRUNC	/**/
+#$d_msg_dontroute	HAS_MSG_DONTROUTE	/**/
+#$d_msg_oob	HAS_MSG_OOB	/**/
+#$d_msg_peek	HAS_MSG_PEEK	/**/
+#$d_msg_proxy	HAS_MSG_PROXY	/**/
+#$d_scm_rights	HAS_SCM_RIGHTS	/**/
+
+/* HAS_SQRTL:
+ *	This symbol, if defined, indicates that the sqrtl routine is
+ *	available to do long double square roots.
+ */
+#$d_sqrtl HAS_SQRTL		/**/
+
+/* USE_STAT_BLOCKS:
+ *	This symbol is defined if this system has a stat structure declaring
+ *	st_blksize and st_blocks.
+ */
+#ifndef USE_STAT_BLOCKS
+#$d_statblks USE_STAT_BLOCKS 	/**/
+#endif
+
+/* HAS_STRUCT_STATFS_F_FLAGS:
+ *	This symbol, if defined, indicates that the struct statfs
+ *	does have the f_flags member containing the mount flags of
+ *	the filesystem containing the file.
+ *	This kind of struct statfs is coming from  (BSD 4.3),
+ *	not from  (SYSV).  Older BSDs (like Ultrix) do not
+ *	have statfs() and struct statfs, they have ustat() and getmnt()
+ *	with struct ustat and struct fs_data.
+ */
+#$d_statfs_f_flags HAS_STRUCT_STATFS_F_FLAGS		/**/
+
+/* HAS_STRUCT_STATFS:
+ *	This symbol, if defined, indicates that the struct statfs
+ *	to do statfs() is supported.
+ */
+#$d_statfs_s HAS_STRUCT_STATFS	/**/
+
+/* HAS_FSTATVFS:
+ *	This symbol, if defined, indicates that the fstatvfs routine is
+ *	available to stat filesystems by file descriptors.
+ */
+#$d_fstatvfs HAS_FSTATVFS		/**/
+
 /* USE_STDIO_PTR:
  *	This symbol is defined if the _ptr and _cnt fields (or similar)
  *	of the stdio FILE structure can be used to access the stdio buffer
@@ -1398,314 +2054,70 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #define FILE_bufsiz(fp)	$stdio_bufsiz
 #endif
 
-/* HAS_VPRINTF:
- *	This symbol, if defined, indicates that the vprintf routine is available
- *	to printf with a pointer to an argument list.  If unavailable, you
- *	may need to write your own, probably in terms of _doprnt().
+/* HAS_STRERROR:
+ *	This symbol, if defined, indicates that the strerror routine is
+ *	available to translate error numbers to strings. See the writeup
+ *	of Strerror() in this file before you try to define your own.
  */
-/* USE_CHAR_VSPRINTF:
- *	This symbol is defined if this system has vsprintf() returning type
- *	(char*).  The trend seems to be to declare it as "int vsprintf()".  It
- *	is up to the package author to declare vsprintf correctly based on the
- *	symbol.
+/* HAS_SYS_ERRLIST:
+ *	This symbol, if defined, indicates that the sys_errlist array is
+ *	available to translate error numbers to strings. The extern int
+ *	sys_nerr gives the size of that table.
  */
-#$d_vprintf HAS_VPRINTF	/**/
-#$d_charvspr USE_CHAR_VSPRINTF 	/**/
+/* Strerror:
+ *	This preprocessor symbol is defined as a macro if strerror() is
+ *	not available to translate error numbers to strings but sys_errlist[]
+ *	array is there.
+ */
+#$d_strerror HAS_STRERROR		/**/
+#$d_syserrlst HAS_SYS_ERRLIST	/**/
+#define Strerror(e) $d_strerrm
 
-/* DOUBLESIZE:
- *	This symbol contains the size of a double, so that the C preprocessor
- *	can make decisions based on it.
+/* HAS_STRTOLD:
+ *	This symbol, if defined, indicates that the strtold routine is
+ *	available to convert strings to long doubles.
  */
-#define DOUBLESIZE $doublesize		/**/
+#$d_strtold HAS_STRTOLD		/**/
 
-/* I_TIME:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
+/* HAS_STRTOLL:
+ *	This symbol, if defined, indicates that the strtoll routine is
+ *	available to convert strings to long longs.
  */
-/* I_SYS_TIME:
- *	This symbol, if defined, indicates to the C program that it should
- *	include .
- */
-/* I_SYS_TIME_KERNEL:
- *	This symbol, if defined, indicates to the C program that it should
- *	include  with KERNEL defined.
- */
-#$i_time I_TIME		/**/
-#$i_systime I_SYS_TIME		/**/
-#$i_systimek I_SYS_TIME_KERNEL		/**/
+#$d_strtoll HAS_STRTOLL		/**/
 
-/* INTSIZE:
- *	This symbol contains the value of sizeof(int) so that the C
- *	preprocessor can make decisions based on it.
+/* HAS_STRTOULL:
+ *	This symbol, if defined, indicates that the strtoull routine is
+ *	available to convert strings to unsigned long longs.
  */
-/* LONGSIZE:
- *	This symbol contains the value of sizeof(long) so that the C
- *	preprocessor can make decisions based on it.
- */
-/* SHORTSIZE:
- *	This symbol contains the value of sizeof(short) so that the C
- *	preprocessor can make decisions based on it.
- */
-#define INTSIZE $intsize		/**/
-#define LONGSIZE $longsize		/**/
-#define SHORTSIZE $shortsize		/**/
+#$d_strtoull HAS_STRTOULL		/**/
 
-/* VAL_O_NONBLOCK:
- *	This symbol is to be used during open() or fcntl(F_SETFL) to turn on
- *	non-blocking I/O for the file descriptor. Note that there is no way
- *	back, i.e. you cannot turn it blocking again this way. If you wish to
- *	alternatively switch between blocking and non-blocking, use the
- *	ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
+/* HAS_STRTOUQ:
+ *	This symbol, if defined, indicates that the strtouq routine is
+ *	available to convert strings to unsigned long longs (quads).
  */
-/* VAL_EAGAIN:
- *	This symbol holds the errno error code set by read() when no data was
- *	present on the non-blocking file descriptor.
- */
-/* RD_NODATA:
- *	This symbol holds the return code from read() when no data is present
- *	on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
- *	not defined, then you can't distinguish between no data and EOF by
- *	issuing a read(). You'll have to find another way to tell for sure!
- */
-/* EOF_NONBLOCK:
- *	This symbol, if defined, indicates to the C program that a read() on
- *	a non-blocking file descriptor will return 0 on EOF, and not the value
- *	held in RD_NODATA (-1 usually, in that case!).
- */
-#define VAL_O_NONBLOCK $o_nonblock
-#define VAL_EAGAIN $eagain
-#define RD_NODATA $rd_nodata
-#$d_eofnblk EOF_NONBLOCK
+#$d_strtouq HAS_STRTOUQ		/**/
 
-/* PTRSIZE:
- *	This symbol contains the size of a pointer, so that the C preprocessor
- *	can make decisions based on it.  It will be sizeof(void *) if
- *	the compiler supports (void *); otherwise it will be
- *	sizeof(char *).
+/* HAS_TELLDIR_PROTO:
+ *	This symbol, if defined, indicates that the system provides
+ *	a prototype for the telldir() function.  Otherwise, it is up
+ *	to the program to supply one.  A good guess is
+ *		extern long telldir _((DIR*));
  */
-#define PTRSIZE $ptrsize		/**/
+#$d_telldirproto	HAS_TELLDIR_PROTO	/**/
 
-/* RANDBITS:
- *	This symbol contains the number of bits of random number the rand()
- *	function produces.  Usual values are 15, 16, and 31.
+/* Time_t:
+ *	This symbol holds the type returned by time(). It can be long,
+ *	or time_t on BSD sites (in which case  should be
+ *	included).
  */
-#define RANDBITS $randbits		/**/
+#define Time_t $timetype		/* Time type */
 
-/* SSize_t:
- *	This symbol holds the type used by functions that return
- *	a count of bytes or an error condition.  It must be a signed type.
- *	It is usually ssize_t, but may be long or int, etc.
- *	It may be necessary to include  or 
- *	to get any typedef'ed information.
- *	We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
+/* HAS_TIMES:
+ *	This symbol, if defined, indicates that the times() routine exists.
+ *	Note that this became obsolete on some systems (SUNOS), which now
+ * use getrusage(). It may be necessary to include .
  */
-#define SSize_t $ssizetype	 /* signed count of bytes */
-
-/* OSNAME:
- *	This symbol contains the name of the operating system, as determined
- *	by Configure.  You shouldn't rely on it too much; the specific
- *	feature tests from Configure are generally more reliable.
- */
-#define OSNAME "$osname"		/**/
-
-/* CAT2:
- *	This macro catenates 2 tokens together.
- */
-/* STRINGIFY:
- *	This macro surrounds its token with double quotes.
- */
-#if $cpp_stuff == 1
-#define CAT2(a,b)a/**/b
-#define STRINGIFY(a)"a"
-		/* If you can get stringification with catify, tell me how! */
-#endif
-#if $cpp_stuff == 42
-#define CAT2(a,b)a ## b
-#define StGiFy(a)# a
-#define STRINGIFY(a)StGiFy(a)
-#endif
-#if $cpp_stuff != 1 && $cpp_stuff != 42
-#include "Bletch: How does this C preprocessor catenate tokens?"
-#endif
-
-/* CSH:
- *	This symbol, if defined, contains the full pathname of csh.
- */
-#$d_csh HAS_CSH		/**/
-#ifdef HAS_CSH
-#define CSH "$full_csh"	/**/
-#endif
-
-/* HAS_ENDHOSTENT:
- *	This symbol, if defined, indicates that the endhostent() routine is
- *	available to close whatever was being used for host queries.
- */
-#$d_endhent HAS_ENDHOSTENT		/**/
-
-/* HAS_ENDNETENT:
- *	This symbol, if defined, indicates that the endnetent() routine is
- *	available to close whatever was being used for network queries.
- */
-#$d_endnent HAS_ENDNETENT		/**/
-
-/* HAS_ENDPROTOENT:
- *	This symbol, if defined, indicates that the endprotoent() routine is
- *	available to close whatever was being used for protocol queries.
- */
-#$d_endpent HAS_ENDPROTOENT		/**/
-
-/* HAS_ENDSERVENT:
- *	This symbol, if defined, indicates that the endservent() routine is
- *	available to close whatever was being used for service queries.
- */
-#$d_endsent HAS_ENDSERVENT		/**/
-
-/* HAS_GETHOSTBYADDR:
- *	This symbol, if defined, indicates that the gethostbyaddr() routine is
- *	available to look up hosts by their IP addresses.
- */
-#$d_gethbyaddr HAS_GETHOSTBYADDR		/**/
-
-/* HAS_GETHOSTBYNAME:
- *	This symbol, if defined, indicates that the gethostbyname() routine is
- *	available to look up host names in some data base or other.
- */
-#$d_gethbyname HAS_GETHOSTBYNAME		/**/
-
-/* HAS_GETHOSTENT:
- *	This symbol, if defined, indicates that the gethostent() routine is
- *	available to look up host names in some data base or another.
- */
-#$d_gethent HAS_GETHOSTENT		/**/
-
-/* HAS_GETNETBYADDR:
- *	This symbol, if defined, indicates that the getnetbyaddr() routine is
- *	available to look up networks by their IP addresses.
- */
-#$d_getnbyaddr HAS_GETNETBYADDR		/**/
-
-/* HAS_GETNETBYNAME:
- *	This symbol, if defined, indicates that the getnetbyname() routine is
- *	available to look up networks by their names.
- */
-#$d_getnbyname HAS_GETNETBYNAME		/**/
-
-/* HAS_GETNETENT:
- *	This symbol, if defined, indicates that the getnetent() routine is
- *	available to look up network names in some data base or another.
- */
-#$d_getnent HAS_GETNETENT		/**/
-
-/* HAS_GETPROTOENT:
- *	This symbol, if defined, indicates that the getprotoent() routine is
- *	available to look up protocols in some data base or another.
- */
-#$d_getpent HAS_GETPROTOENT		/**/
-
-/* HAS_GETPROTOBYNAME:
- *	This symbol, if defined, indicates that the getprotobyname()
- *	routine is available to look up protocols by their name.
- */
-/* HAS_GETPROTOBYNUMBER:
- *	This symbol, if defined, indicates that the getprotobynumber()
- *	routine is available to look up protocols by their number.
- */
-#$d_getpbyname HAS_GETPROTOBYNAME		/**/
-#$d_getpbynumber HAS_GETPROTOBYNUMBER		/**/
-
-/* HAS_GETSERVENT:
- *	This symbol, if defined, indicates that the getservent() routine is
- *	available to look up network services in some data base or another.
- */
-#$d_getsent HAS_GETSERVENT		/**/
-
-/* HAS_GETSERVBYNAME:
- *	This symbol, if defined, indicates that the getservbyname()
- *	routine is available to look up services by their name.
- */
-/* HAS_GETSERVBYPORT:
- *	This symbol, if defined, indicates that the getservbyport()
- *	routine is available to look up services by their port.
- */
-#$d_getsbyname HAS_GETSERVBYNAME		/**/
-#$d_getsbyport HAS_GETSERVBYPORT		/**/
-
-/* HAS_LONG_DOUBLE:
- *	This symbol will be defined if the C compiler supports long
- *	doubles.
- */
-/* LONG_DOUBLESIZE:
- *	This symbol contains the size of a long double, so that the 
- *	C preprocessor can make decisions based on it.  It is only
- *	defined if the system supports long doubles.
- */
-#$d_longdbl HAS_LONG_DOUBLE		/**/
-#ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE $longdblsize		/**/
-#endif
-
-/* HAS_LONG_LONG:
- *	This symbol will be defined if the C compiler supports
- *	long long.
- */
-/* LONGLONGSIZE:
- *	This symbol contains the size of a long long, so that the 
- *	C preprocessor can make decisions based on it.  It is only
- *	defined if the system supports long long.
- */
-#$d_longlong HAS_LONG_LONG		/**/
-#ifdef HAS_LONG_LONG
-#define LONGLONGSIZE $longlongsize		/**/
-#endif
-
-/* HAS_SETGROUPS:
- *	This symbol, if defined, indicates that the setgroups() routine is
- *	available to set the list of process groups.  If unavailable, multiple
- *	groups are probably not supported.
- */
-#$d_setgrps HAS_SETGROUPS		/**/
-
-/* HAS_SETHOSTENT:
- *	This symbol, if defined, indicates that the sethostent() routine is
- *	available.
- */
-#$d_sethent HAS_SETHOSTENT		/**/
-
-/* HAS_SETNETENT:
- *	This symbol, if defined, indicates that the setnetent() routine is
- *	available.
- */
-#$d_setnent HAS_SETNETENT		/**/
-
-/* HAS_SETPROTOENT:
- *	This symbol, if defined, indicates that the setprotoent() routine is
- *	available.
- */
-#$d_setpent HAS_SETPROTOENT		/**/
-
-/* HAS_SETSERVENT:
- *	This symbol, if defined, indicates that the setservent() routine is
- *	available.
- */
-#$d_setsent HAS_SETSERVENT		/**/
-
-/* HAS_SETVBUF:
- *	This symbol, if defined, indicates that the setvbuf routine is
- *	available to change buffering on an open stdio stream.
- *	to a line-buffered mode.
- */
-#$d_setvbuf HAS_SETVBUF		/**/
-
-/* HAS_SOCKET:
- *	This symbol, if defined, indicates that the BSD socket interface is
- *	supported.
- */
-/* HAS_SOCKETPAIR:
- *	This symbol, if defined, indicates that the BSD socketpair() call is
- *	supported.
- */
-#$d_socket HAS_SOCKET		/**/
-#$d_sockpair HAS_SOCKETPAIR	/**/
+#$d_times HAS_TIMES		/**/
 
 /* HAS_UNION_SEMUN:
  *	This symbol, if defined, indicates that the union semun is
@@ -1729,6 +2141,17 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #$d_semctl_semun USE_SEMCTL_SEMUN	/**/
 #$d_semctl_semid_ds USE_SEMCTL_SEMID_DS	/**/
 
+/* HAS_USTAT:
+ *	This symbol, if defined, indicates that the ustat system call is
+ *	available to query file system statistics by dev_t.
+ */
+#$d_ustat HAS_USTAT		/**/
+
+/* HAS_VFORK:
+ *	This symbol, if defined, indicates that vfork() exists.
+ */
+#$d_vfork HAS_VFORK	/**/
+
 /* Signal_t:
  *	This symbol's value is either "void" or "int", corresponding to the
  *	appropriate return type of a signal handler.  Thus, you can declare
@@ -1737,25 +2160,175 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define Signal_t $signal_t	/* Signal handler's return type */
 
+/* HAS_VPRINTF:
+ *	This symbol, if defined, indicates that the vprintf routine is available
+ *	to printf with a pointer to an argument list.  If unavailable, you
+ *	may need to write your own, probably in terms of _doprnt().
+ */
+/* USE_CHAR_VSPRINTF:
+ *	This symbol is defined if this system has vsprintf() returning type
+ *	(char*).  The trend seems to be to declare it as "int vsprintf()".  It
+ *	is up to the package author to declare vsprintf correctly based on the
+ *	symbol.
+ */
+#$d_vprintf HAS_VPRINTF	/**/
+#$d_charvspr USE_CHAR_VSPRINTF 	/**/
+
+/* USE_DYNAMIC_LOADING:
+ *	This symbol, if defined, indicates that dynamic loading of
+ *	some sort is available.
+ */
+#$usedl USE_DYNAMIC_LOADING		/**/
+
+/* DOUBLESIZE:
+ *	This symbol contains the size of a double, so that the C preprocessor
+ *	can make decisions based on it.
+ */
+#define DOUBLESIZE $doublesize		/**/
+
+/* EBCDIC:
+ *     This symbol, if defined, indicates that this system uses
+ *	EBCDIC encoding.
+ */
+#$ebcdic	EBCDIC 		/**/
+
+/* FFLUSH_NULL:
+ *	This symbol, if defined, tells that fflush(NULL) does flush
+ *	all pending stdio output.
+ */
+/* FFLUSH_ALL:
+ *	This symbol, if defined, tells that to flush
+ *	all pending stdio output one must loop through all
+ *	the stdio file handles stored in an array and fflush them.
+ *	Note that if fflushNULL is defined, fflushall will not
+ *	even be probed for and will be left undefined.
+ */
+#$fflushNULL	FFLUSH_NULL 		/**/
+#$fflushall	FFLUSH_ALL 		/**/
+
+/* Fpos_t:
+ *	This symbol holds the type used to declare file positions in libc.
+ *	It can be fpos_t, long, uint, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Fpos_t $fpostype		/* File position type */
+
+/* Gid_t_f:
+ *	This symbol defines the format string used for printing a Gid_t.
+ */
+#define	Gid_t_f		$gidformat		/**/
+
+/* Gid_t_sign:
+ *	This symbol holds the signedess of a Gid_t.
+ *	1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign	$gidsign		/* GID sign */
+
+/* Gid_t_size:
+ *	This symbol holds the size of a Gid_t in bytes.
+ */
+#define Gid_t_size $gidsize		/* GID size */
+
+/* Gid_t:
+ *	This symbol holds the return type of getgid() and the type of
+ *	argument to setrgid() and related functions.  Typically,
+ *	it is the type of group ids in the kernel. It can be int, ushort,
+ *	gid_t, etc... It may be necessary to include  to get
+ *	any typedef'ed information.
+ */
+#define Gid_t $gidtype		/* Type for getgid(), etc... */
+
 /* Groups_t:
  *	This symbol holds the type used for the second argument to
- *	getgroups() and setgropus().  Usually, this is the same as
+ *	getgroups() and setgroups().  Usually, this is the same as
  *	gidtype (gid_t) , but sometimes it isn't.
- *	It can be int, ushort, uid_t, etc... 
+ *	It can be int, ushort, gid_t, etc... 
  *	It may be necessary to include  to get any 
  *	typedef'ed information.  This is only required if you have
- *	getgroups() or setgropus()..
+ *	getgroups() or setgroups()..
  */
 #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
 #define Groups_t $groupstype	/* Type for 2nd arg to [sg]etgroups() */
 #endif
 
+/* DB_Prefix_t:
+ *	This symbol contains the type of the prefix structure element
+ *	in the  header file.  In older versions of DB, it was
+ *	int, while in newer ones it is u_int32_t.
+ */
+/* DB_Hash_t:
+ *	This symbol contains the type of the prefix structure element
+ *	in the  header file.  In older versions of DB, it was
+ *	int, while in newer ones it is size_t.
+ */
+#define DB_Hash_t	$db_hashtype		/**/
+#define DB_Prefix_t	$db_prefixtype  	/**/
+
+/* I_GRP:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include .
+ */
+/* GRPASSWD:
+ *	This symbol, if defined, indicates to the C program that struct group
+ *	in  contains gr_passwd.
+ */
+#$i_grp I_GRP		/**/
+#$d_grpasswd GRPASSWD	/**/
+
+/* I_ICONV:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_iconv	I_ICONV		/**/
+
+/* I_IEEEFP:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_ieeefp	I_IEEEFP		/**/
+
+/* I_INTTYPES:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#$i_inttypes   I_INTTYPES                /**/
+
+/* I_MACH_CTHREADS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#$i_machcthr   I_MACH_CTHREADS	/**/
+
+/* I_MNTENT:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_mntent	I_MNTENT		/**/
+
 /* I_NETDB:
  *	This symbol, if defined, indicates that  exists and
  *	should be included.
  */
 #$i_netdb I_NETDB		/**/
 
+/* I_NETINET_TCP:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#$i_netinettcp   I_NETINET_TCP                /**/
+
+/* I_POLL:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_poll	I_POLL		/**/
+
+/* I_PTHREAD:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include .
+ */
+#$i_pthread   I_PTHREAD	/**/
+
 /* I_PWD:
  *	This symbol, if defined, indicates to the C program that it should
  *	include .
@@ -1792,18 +2365,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  *	This symbol, if defined, indicates to the C program that struct passwd
  *	contains pw_passwd.
  */
-/* HAS_SETPWENT:
- *	This symbol, if defined, indicates that the getpwrent routine is
- *	available for initializing sequential access of the passwd database.
- */
-/* HAS_GETPWENT:
- *	This symbol, if defined, indicates that the getpwent routine is
- *	available for sequential access of the password database.
- */
-/* HAS_ENDPWENT:
- *	This symbol, if defined, indicates that the getpwent routine is
- *	available for finalizing sequential access of the passwd database.
- */
 #$i_pwd I_PWD		/**/
 #$d_pwquota PWQUOTA	/**/
 #$d_pwage PWAGE	/**/
@@ -1813,9 +2374,134 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #$d_pwcomment PWCOMMENT	/**/
 #$d_pwgecos PWGECOS	/**/
 #$d_pwpasswd PWPASSWD	/**/
-#$d_setpwent HAS_SETPWENT	/**/
-#$d_getpwent HAS_GETPWENT	/**/
-#$d_endpwent HAS_ENDPWENT	/**/
+
+/* I_SHADOW:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_shadow	I_SHADOW		/**/
+
+/* I_SOCKS:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_socks	I_SOCKS		/**/
+
+/* I_SUNMATH:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_sunmath	I_SUNMATH		/**/
+
+/* I_SYSLOG:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_syslog	I_SYSLOG		/**/
+
+/* I_SYSMODE:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_sysmode	I_SYSMODE		/**/
+
+/* I_SYS_MOUNT:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_sysmount	I_SYS_MOUNT		/**/
+
+/* I_SYS_STATFS:
+ *	This symbol, if defined, indicates that  exists.
+ */
+#$i_sysstatfs	I_SYS_STATFS		/**/
+
+/* I_SYS_STATVFS:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_sysstatvfs	I_SYS_STATVFS		/**/
+
+/* I_SYSUIO:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_sysuio	I_SYSUIO		/**/
+
+/* I_SYSUTSNAME:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_sysutsname	I_SYSUTSNAME		/**/
+
+/* I_SYS_VFS:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_sysvfs	I_SYS_VFS		/**/
+
+/* I_TIME:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include .
+ */
+/* I_SYS_TIME:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include .
+ */
+/* I_SYS_TIME_KERNEL:
+ *	This symbol, if defined, indicates to the C program that it should
+ *	include  with KERNEL defined.
+ */
+#$i_time I_TIME		/**/
+#$i_systime I_SYS_TIME		/**/
+#$i_systimek I_SYS_TIME_KERNEL		/**/
+
+/* I_USTAT:
+ *	This symbol, if defined, indicates that  exists and
+ *	should be included.
+ */
+#$i_ustat	I_USTAT		/**/
+
+/* PERL_INC_VERSION_LIST:
+ *	This variable specifies the list of subdirectories in over
+ *	which perl.c:incpush() and lib/lib.pm will automatically
+ *	search when adding directories to @INC, in a format suitable
+ *	for a C initialization string.  See the inc_version_list entry
+ *	in Porting/Glossary for more details.
+ */
+#define PERL_INC_VERSION_LIST $inc_version_list_init		/**/
+
+/* INSTALL_USR_BIN_PERL:
+ *	This symbol, if defined, indicates that Perl is to be installed
+ * 	also as /usr/bin/perl.
+ */
+#$installusrbinperl INSTALL_USR_BIN_PERL	/**/
+
+/* PERL_PRIfldbl:
+ *	This symbol, if defined, contains the string used by stdio to
+ *	format long doubles (format 'f') for output.
+ */
+/* PERL_PRIgldbl:
+ *	This symbol, if defined, contains the string used by stdio to
+ *	format long doubles (format 'g') for output.
+ */
+#$d_PRIfldbl PERL_PRIfldbl	$sPRIfldbl	/**/
+#$d_PRIgldbl PERL_PRIgldbl	$sPRIgldbl	/**/
+
+/* Off_t:
+ *	This symbol holds the type used to declare offsets in the kernel.
+ *	It can be int, long, off_t, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+/* LSEEKSIZE:
+ *	This symbol holds the number of bytes used by the Off_t.
+ */
+/* Off_t_size:
+ *	This symbol holds the number of bytes used by the Off_t.
+ */
+#define Off_t $lseektype		/*  type */
+#define LSEEKSIZE $lseeksize		/*  size */
+#define Off_t_size $lseeksize	/*  size */
 
 /* Free_t:
  *	This variable contains the return type of free().  It is usually
@@ -1832,6 +2518,247 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_mymalloc MYMALLOC			/**/
 
+/* Mode_t:
+ *	This symbol holds the type used to declare file modes 
+ *	for systems calls.  It is usually mode_t, but may be
+ *	int or unsigned short.  It may be necessary to include 
+ *	to get any typedef'ed information.
+ */
+#define Mode_t $modetype	 /* file mode parameter for system calls */
+
+/* VAL_O_NONBLOCK:
+ *	This symbol is to be used during open() or fcntl(F_SETFL) to turn on
+ *	non-blocking I/O for the file descriptor. Note that there is no way
+ *	back, i.e. you cannot turn it blocking again this way. If you wish to
+ *	alternatively switch between blocking and non-blocking, use the
+ *	ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
+ */
+/* VAL_EAGAIN:
+ *	This symbol holds the errno error code set by read() when no data was
+ *	present on the non-blocking file descriptor.
+ */
+/* RD_NODATA:
+ *	This symbol holds the return code from read() when no data is present
+ *	on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
+ *	not defined, then you can't distinguish between no data and EOF by
+ *	issuing a read(). You'll have to find another way to tell for sure!
+ */
+/* EOF_NONBLOCK:
+ *	This symbol, if defined, indicates to the C program that a read() on
+ *	a non-blocking file descriptor will return 0 on EOF, and not the value
+ *	held in RD_NODATA (-1 usually, in that case!).
+ */
+#define VAL_O_NONBLOCK $o_nonblock
+#define VAL_EAGAIN $eagain
+#define RD_NODATA $rd_nodata
+#$d_eofnblk EOF_NONBLOCK
+
+/* Netdb_host_t:
+ *	This symbol holds the type used for the 1st argument
+ *	to gethostbyaddr().
+ */
+/* Netdb_hlen_t:
+ *	This symbol holds the type used for the 2nd argument
+ *	to gethostbyaddr().
+ */
+/* Netdb_name_t:
+ *	This symbol holds the type used for the argument to
+ *	gethostbyname().
+ */
+/* Netdb_net_t:
+ *	This symbol holds the type used for the 1st argument to
+ *	getnetbyaddr().
+ */
+#define Netdb_host_t		$netdb_host_type /**/
+#define Netdb_hlen_t		$netdb_hlen_type /**/
+#define Netdb_name_t		$netdb_name_type /**/
+#define Netdb_net_t		$netdb_net_type /**/
+
+/* IVTYPE:
+ *	This symbol defines the C type used for Perl's IV.
+ */
+/* UVTYPE:
+ *	This symbol defines the C type used for Perl's UV.
+ */
+/* I8TYPE:
+ *	This symbol defines the C type used for Perl's I8.
+ */
+/* U8TYPE:
+ *	This symbol defines the C type used for Perl's U8.
+ */
+/* I16TYPE:
+ *	This symbol defines the C type used for Perl's I16.
+ */
+/* U16TYPE:
+ *	This symbol defines the C type used for Perl's U16.
+ */
+/* I32TYPE:
+ *	This symbol defines the C type used for Perl's I32.
+ */
+/* U32TYPE:
+ *	This symbol defines the C type used for Perl's U32.
+ */
+/* I64TYPE:
+ *	This symbol defines the C type used for Perl's I64.
+ */
+/* U64TYPE:
+ *	This symbol defines the C type used for Perl's U64.
+ */
+/* NVTYPE:
+ *	This symbol defines the C type used for Perl's NV.
+ */
+/* IVSIZE:
+ *	This symbol contains the sizeof(IV).
+ */
+/* UVSIZE:
+ *	This symbol contains the sizeof(UV).
+ */
+/* I8SIZE:
+ *	This symbol contains the sizeof(I8).
+ */
+/* U8SIZE:
+ *	This symbol contains the sizeof(U8).
+ */
+/* I16SIZE:
+ *	This symbol contains the sizeof(I16).
+ */
+/* U16SIZE:
+ *	This symbol contains the sizeof(U16).
+ */
+/* I32SIZE:
+ *	This symbol contains the sizeof(I32).
+ */
+/* U32SIZE:
+ *	This symbol contains the sizeof(U32).
+ */
+/* I64SIZE:
+ *	This symbol contains the sizeof(I64).
+ */
+/* U64SIZE:
+ *	This symbol contains the sizeof(U64).
+ */
+/* NV_PRESERVES_UV:
+ *	This symbol, if defined, indicates that a variable of type NVTYPE
+ *	can preserve all the bit of a variable of type UVSIZE.
+ */
+#define	IVTYPE		$ivtype		/**/
+#define	UVTYPE		$uvtype		/**/
+#define	I8TYPE		$i8type		/**/
+#define	U8TYPE		$u8type		/**/
+#define	I16TYPE		$i16type	/**/
+#define	U16TYPE		$u16type	/**/
+#define	I32TYPE		$i32type	/**/
+#define	U32TYPE		$u32type	/**/
+#ifdef HAS_QUAD
+#define	I64TYPE		$i64type	/**/
+#define	U64TYPE		$u64type	/**/
+#endif
+#define	NVTYPE		$nvtype		/**/
+#define	IVSIZE		$ivsize		/**/
+#define	UVSIZE		$uvsize		/**/
+#define	I8SIZE		$i8size		/**/
+#define	U8SIZE		$u8size		/**/
+#define	I16SIZE		$i16size	/**/
+#define	U16SIZE		$u16size	/**/
+#define	I32SIZE		$i32size	/**/
+#define	U32SIZE		$u32size	/**/
+#ifdef HAS_QUAD
+#define	I64SIZE		$i64size	/**/
+#define	U64SIZE		$u64size	/**/
+#endif
+#$d_nv_preserves_uv	NV_PRESERVES_UV
+
+/* IVdf:
+ *	This symbol defines the format string used for printing a Perl IV
+ *	as a signed decimal integer.
+ */
+/* UVuf:
+ *	This symbol defines the format string used for printing a Perl UV
+ *	as an unsigned decimal integer.
+ */
+/* UVof:
+ *	This symbol defines the format string used for printing a Perl UV
+ *	as an unsigned octal integer.
+ */
+/* UVxf:
+ *	This symbol defines the format string used for printing a Perl UV
+ *	as an unsigned hexadecimal integer.
+ */
+#define	IVdf		$ivdformat		/**/
+#define	UVuf		$uvuformat		/**/
+#define	UVof		$uvoformat		/**/
+#define	UVxf		$uvxformat		/**/
+
+/* Pid_t:
+ *	This symbol holds the type used to declare process ids in the kernel.
+ *	It can be int, uint, pid_t, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Pid_t $pidtype		/* PID type */
+
+/* PRIVLIB:
+ *	This symbol contains the name of the private library for this package.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.  The program
+ *	should be prepared to do ~ expansion.
+ */
+/* PRIVLIB_EXP:
+ *	This symbol contains the ~name expanded version of PRIVLIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#define PRIVLIB "$privlib"		/**/
+#define PRIVLIB_EXP "$privlibexp"		/**/
+
+/* PTRSIZE:
+ *	This symbol contains the size of a pointer, so that the C preprocessor
+ *	can make decisions based on it.  It will be sizeof(void *) if
+ *	the compiler supports (void *); otherwise it will be
+ *	sizeof(char *).
+ */
+#define PTRSIZE $ptrsize		/**/
+
+/* Drand01:
+ *	This macro is to be used to generate uniformly distributed
+ *	random numbers over the range [0., 1.[.  You may have to supply
+ *	an 'extern double drand48();' in your program since SunOS 4.1.3
+ *	doesn't provide you with anything relevant in it's headers.
+ *	See HAS_DRAND48_PROTO.
+ */
+/* Rand_seed_t:
+ *	This symbol defines the type of the argument of the
+ *	random seed function.
+ */
+/* seedDrand01:
+ *	This symbol defines the macro to be used in seeding the
+ *	random number generator (see Drand01).
+ */
+/* RANDBITS:
+ *	This symbol indicates how many bits are produced by the
+ *	function used to generate normalized random numbers.
+ *	Values include 15, 16, 31, and 48.
+ */
+#define Drand01()		$drand01		/**/
+#define Rand_seed_t		$randseedtype		/**/
+#define seedDrand01(x)	$seedfunc((Rand_seed_t)x)	/**/
+#define RANDBITS		$randbits		/**/
+
+/* SELECT_MIN_BITS:
+ *	This symbol holds the minimum number of bits operated by select.
+ *	That is, if you do select(n, ...), how many bits at least will be
+ *	cleared in the masks if some activity is detected.  Usually this
+ *	is either n or 32*ceil(n/32), especially many little-endians do
+ *	the latter.  This is only useful if you have select(), naturally.
+ */
+#define SELECT_MIN_BITS 	$selectminbits	/**/
+
+/* Select_fd_set_t:
+ *	This symbol holds the type used for the 2nd, 3rd, and 4th
+ *	arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
+ *	is defined, and 'int *' otherwise.  This is only useful if you 
+ *	have select(), of course.
+ */
+#define Select_fd_set_t 	$selecttype	/**/
+
 /* SIG_NAME:
  *	This symbol contains a list of signal names in order of
  *	signal number. This is intended
@@ -1863,6 +2790,242 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #define SIG_NAME $sig_name_init		/**/
 #define SIG_NUM  $sig_num_init		/**/
 
+/* SITEARCH:
+ *	This symbol contains the name of the private library for this package.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.  The program
+ *	should be prepared to do ~ expansion.
+ *	The standard distribution will put nothing in this directory.
+ *	After perl has been installed, users may install their own local
+ *	architecture-dependent modules in this directory with
+ *		MakeMaker Makefile.PL
+ *	or equivalent.  See INSTALL for details.
+ */
+/* SITEARCH_EXP:
+ *	This symbol contains the ~name expanded version of SITEARCH, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#define SITEARCH "$sitearch"		/**/
+#define SITEARCH_EXP "$sitearchexp"		/**/
+
+/* SITELIB:
+ *	This symbol contains the name of the private library for this package.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.  The program
+ *	should be prepared to do ~ expansion.
+ *	The standard distribution will put nothing in this directory.
+ *	After perl has been installed, users may install their own local
+ *	architecture-independent modules in this directory with
+ *		MakeMaker Makefile.PL
+ *	or equivalent.  See INSTALL for details.
+ */
+/* SITELIB_EXP:
+ *	This symbol contains the ~name expanded version of SITELIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+/* SITELIB_STEM:
+ *	This define is SITELIB_EXP with any trailing version-specific component
+ *	removed.  The elements in inc_version_list (inc_version_list.U) can
+ *	be tacked onto this variable to generate a list of directories to search.
+ */
+#define SITELIB "$sitelib"		/**/
+#define SITELIB_EXP "$sitelibexp"		/**/
+#define SITELIB_STEM "$sitelib_stem"		/**/
+
+/* Size_t_size:
+ *	This symbol holds the size of a Size_t in bytes.
+ */
+#define Size_t_size $sizesize		/* */
+
+/* Size_t:
+ *	This symbol holds the type used to declare length parameters
+ *	for string functions.  It is usually size_t, but may be
+ *	unsigned long, int, etc.  It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Size_t $sizetype	 /* length paramater for string functions */
+
+/* Sock_size_t:
+ *	This symbol holds the type used for the size argument of
+ *	various socket calls (just the base type, not the pointer-to).
+ */
+#define Sock_size_t		$socksizetype /**/
+
+/* SSize_t:
+ *	This symbol holds the type used by functions that return
+ *	a count of bytes or an error condition.  It must be a signed type.
+ *	It is usually ssize_t, but may be long or int, etc.
+ *	It may be necessary to include  or 
+ *	to get any typedef'ed information.
+ *	We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
+ */
+#define SSize_t $ssizetype	 /* signed count of bytes */
+
+/* STARTPERL:
+ *	This variable contains the string to put in front of a perl
+ *	script to make sure (one hopes) that it runs with perl and not
+ *	some shell.
+ */
+#define STARTPERL "$startperl"		/**/
+
+/* HAS_STDIO_STREAM_ARRAY:
+ *	This symbol, if defined, tells that there is an array
+ *	holding the stdio streams.
+ */
+/* STDIO_STREAM_ARRAY:
+ *	This symbol tells the name of the array holding the stdio streams.
+ *	Usual values include _iob, __iob, and __sF.
+ */
+#$d_stdio_stream_array	HAS_STDIO_STREAM_ARRAY	/**/
+#define STDIO_STREAM_ARRAY	$stdio_stream_array
+
+/* Uid_t_f:
+ *	This symbol defines the format string used for printing a Uid_t.
+ */
+#define	Uid_t_f		$uidformat		/**/
+
+/* Uid_t_sign:
+ *	This symbol holds the signedess of a Uid_t.
+ *	1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign	$uidsign		/* UID sign */
+
+/* Uid_t_size:
+ *	This symbol holds the size of a Uid_t in bytes.
+ */
+#define Uid_t_size $uidsize		/* UID size */
+
+/* Uid_t:
+ *	This symbol holds the type used to declare user ids in the kernel.
+ *	It can be int, ushort, uid_t, etc... It may be necessary to include
+ *	 to get any typedef'ed information.
+ */
+#define Uid_t $uidtype		/* UID type */
+
+/* USE_64_BIT_INT:
+ *	This symbol, if defined, indicates that 64-bit integers should
+ *	be used when available.  If not defined, the native integers
+ *	will be employed (be they 32 or 64 bits).  The minimal possible
+ *	64-bitness is used, just enough to get 64-bit integers into Perl.
+ *	This may mean using for example "long longs", while your memory
+ *	may still be limited to 2 gigabytes.
+ */
+/* USE_64_BIT_ALL:
+ *	This symbol, if defined, indicates that 64-bit integers should
+ *	be used when available.  If not defined, the native integers
+ *	will be used (be they 32 or 64 bits).  The maximal possible
+ *	64-bitness is employed: LP64 or ILP64, meaning that you will
+ *	be able to use more than 2 gigabytes of memory.  This mode is
+ *	even more binary incompatible than USE_64_BIT_INT. You may not
+ *	be able to run the resulting executable in a 32-bit CPU at all or
+ *	you may need at least to reboot your OS to 64-bit mode.
+ */
+#ifndef USE_64_BIT_INT
+#$use64bitint	USE_64_BIT_INT		/**/
+#endif
+
+#ifndef USE_64_BIT_ALL
+#$use64bitall	USE_64_BIT_ALL		/**/
+#endif
+
+/* USE_LARGE_FILES:
+ *	This symbol, if defined, indicates that large file support
+ *	should be used when available.
+ */
+#ifndef USE_LARGE_FILES
+#$uselargefiles	USE_LARGE_FILES		/**/
+#endif
+
+/* USE_LONG_DOUBLE:
+ *	This symbol, if defined, indicates that long doubles should
+ *	be used when available.
+ */
+#ifndef USE_LONG_DOUBLE
+#$uselongdouble	USE_LONG_DOUBLE		/**/
+#endif
+
+/* USE_MORE_BITS:
+ *	This symbol, if defined, indicates that 64-bit interfaces and
+ *	long doubles should be used when available.
+ */
+#ifndef USE_MORE_BITS
+#$usemorebits	USE_MORE_BITS		/**/
+#endif
+
+/* MULTIPLICITY:
+ *	This symbol, if defined, indicates that Perl should
+ *	be built to use multiplicity.
+ */
+#ifndef MULTIPLICITY
+#$usemultiplicity	MULTIPLICITY		/**/
+#endif
+
+/* USE_PERLIO:
+ *	This symbol, if defined, indicates that the PerlIO abstraction should
+ *	be used throughout.  If not defined, stdio should be
+ *	used in a fully backward compatible manner.
+ */
+#ifndef USE_PERLIO
+#$useperlio	USE_PERLIO		/**/
+#endif
+
+/* USE_SOCKS:
+ *	This symbol, if defined, indicates that Perl should
+ *	be built to use socks.
+ */
+#ifndef USE_SOCKS
+#$usesocks	USE_SOCKS		/**/
+#endif
+
+/* USE_ITHREADS:
+ *	This symbol, if defined, indicates that Perl should be built to
+ *	use the interpreter-based threading implementation.
+ */
+/* USE_5005THREADS:
+ *	This symbol, if defined, indicates that Perl should be built to
+ *	use the 5.005-based threading implementation.
+ */
+/* OLD_PTHREADS_API:
+ *	This symbol, if defined, indicates that Perl should
+ *	be built to use the old draft POSIX threads API.
+ */
+#$use5005threads	USE_5005THREADS		/**/
+#$useithreads	USE_ITHREADS		/**/
+#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
+#define		USE_THREADS		/* until src is revised*/
+#endif
+#$d_oldpthreads	OLD_PTHREADS_API		/**/
+
+/* PERL_VENDORARCH:
+ *	If defined, this symbol contains the name of a private library.
+ *	The library is private in the sense that it needn't be in anyone's
+ *	execution path, but it should be accessible by the world.
+ *	It may have a ~ on the front. 
+ *	The standard distribution will put nothing in this directory.
+ *	Vendors who distribute perl may wish to place their own
+ *	architecture-dependent modules and extensions in this directory with
+ *		MakeMaker Makefile.PL INSTALLDIRS=vendor 
+ *	or equivalent.  See INSTALL for details.
+ */
+/* PERL_VENDORARCH_EXP:
+ *	This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#$d_vendorarch PERL_VENDORARCH "$vendorarch"		/**/
+#$d_vendorarch PERL_VENDORARCH_EXP "$vendorarchexp"		/**/
+
+/* PERL_VENDORLIB_EXP:
+ *	This symbol contains the ~name expanded version of VENDORLIB, to be used
+ *	in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+/* PERL_VENDORLIB_STEM:
+ *	This define is PERL_VENDORLIB_EXP with any trailing version-specific component
+ *	removed.  The elements in inc_version_list (inc_version_list.U) can
+ *	be tacked onto this variable to generate a list of directories to search.
+ */
+#$d_vendorlib PERL_VENDORLIB_EXP "$vendorlibexp"		/**/
+#$d_vendorlib PERL_VENDORLIB_STEM "$vendorlib_stem"		/**/
+
 /* VOIDFLAGS:
  *	This symbol indicates how much support of the void type is given by this
  *	compiler.  What various bits mean:
@@ -1888,300 +3051,53 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
 #define M_VOID			/* Xenix strikes again */
 #endif
 
-/* ARCHLIB:
- *	This variable, if defined, holds the name of the directory in
- *	which the user wants to put architecture-dependent public
- *	library files for $package.  It is most often a local directory
- *	such as /usr/local/lib.  Programs using this variable must be
- *	prepared to deal with filename expansion.  If ARCHLIB is the
- *	same as PRIVLIB, it is not defined, since presumably the
- *	program already searches PRIVLIB.
+/* PERL_XS_APIVERSION:
+ *	This variable contains the version of the oldest perl binary
+ *	compatible with the present perl.  perl.c:incpush() and
+ *	lib/lib.pm will automatically search in $sitearch for older
+ *	directories across major versions back to xs_apiversion.
+ *	This is only useful if you have a perl library directory tree
+ *	structured like the default one.
+ *	See INSTALL for how this works.
+ *	The versioned site_perl directory was introduced in 5.005,
+ *	so that is the lowest possible value.
+ *	Since this can depend on compile time options (such as
+ *	bincompat) it is set by Configure.  Other non-default sources
+ *	of potential incompatibility, such as multiplicity, threads,
+ *	debugging, 64bits, sfio, etc., are not checked for currently,
+ *	though in principle we could go snooping around in old
+ *	Config.pm files.
  */
-/* ARCHLIB_EXP:
- *	This symbol contains the ~name expanded version of ARCHLIB, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
+/* PERL_PM_APIVERSION:
+ *	This variable contains the version of the oldest perl
+ *	compatible with the present perl.  (That is, pure perl modules
+ *	written for pm_apiversion will still work for the current
+ *	version).  perl.c:incpush() and lib/lib.pm will automatically
+ *	search in $sitelib for older directories across major versions
+ *	back to pm_apiversion.  This is only useful if you have a perl
+ *	library directory tree structured like the default one.  The
+ *	versioned site_perl library was introduced in 5.005, so that's
+ *	the default setting for this variable.  It's hard to imagine
+ *	it changing before Perl6.  It is included here for symmetry
+ *	with xs_apiveprsion -- the searching algorithms will
+ *	(presumably) be similar.
+ *	See the INSTALL file for how this works.
  */
-#$d_archlib ARCHLIB "$archlib"		/**/
-#$d_archlib ARCHLIB_EXP "$archlibexp"		/**/
+#define PERL_XS_APIVERSION "$xs_apiversion"
+#define PERL_PM_APIVERSION "$pm_apiversion"
 
-/* DLSYM_NEEDS_UNDERSCORE:
- *	This symbol, if defined, indicates that we need to prepend an
- *	underscore to the symbol name before calling dlsym().  This only
- *	makes sense if you *have* dlsym, which we will presume is the
- *	case if you're using dl_dlopen.xs.
+/* HAS_LCHOWN:
+ *	This symbol, if defined, indicates that the lchown routine is
+ *	available to operate on a symbolic link (instead of following the
+ *	link).
  */
-#$d_dlsymun 	DLSYM_NEEDS_UNDERSCORE 	/**/
+#$d_lchown HAS_LCHOWN		/**/
 
-/* USE_SFIO:
- *	This symbol, if defined, indicates that sfio should
- *	be used.
+/* FLEXFILENAMES:
+ *	This symbol, if defined, indicates that the system supports filenames
+ *	longer than 14 characters.
  */
-#$d_sfio	USE_SFIO		/**/
-
-/* USE_DYNAMIC_LOADING:
- *	This symbol, if defined, indicates that dynamic loading of
- *	some sort is available.
- */
-#$usedl USE_DYNAMIC_LOADING		/**/
-
-/* DB_Prefix_t:
- *	This symbol contains the type of the prefix structure element
- *	in the  header file.  In older versions of DB, it was
- *	int, while in newer ones it is u_int32_t.
- */
-/* DB_Hash_t:
- *	This symbol contains the type of the prefix structure element
- *	in the  header file.  In older versions of DB, it was
- *	int, while in newer ones it is size_t.
- */
-#define DB_Hash_t	$db_hashtype		/**/
-#define DB_Prefix_t	$db_prefixtype  	/**/
-
-/* PRIVLIB:
- *	This symbol contains the name of the private library for this package.
- *	The library is private in the sense that it needn't be in anyone's
- *	execution path, but it should be accessible by the world.  The program
- *	should be prepared to do ~ expansion.
- */
-/* PRIVLIB_EXP:
- *	This symbol contains the ~name expanded version of PRIVLIB, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define PRIVLIB "$privlib"		/**/
-#define PRIVLIB_EXP "$privlibexp"		/**/
-
-/* SELECT_MIN_BITS:
- *	This symbol holds the minimum number of bits operated by select.
- *	That is, if you do select(n, ...), how many bits at least will be
- *	cleared in the masks if some activity is detected.  Usually this
- *	is either n or 32*ceil(n/32), especially many little-endians do
- *	the latter.  This is only useful if you have select(), naturally.
- */
-#define SELECT_MIN_BITS 	$selectminbits	/**/
-
-/* SITEARCH:
- *	This symbol contains the name of the private library for this package.
- *	The library is private in the sense that it needn't be in anyone's
- *	execution path, but it should be accessible by the world.  The program
- *	should be prepared to do ~ expansion.
- *	The standard distribution will put nothing in this directory.
- *	Individual sites may place their own extensions and modules in
- *	this directory.
- */
-/* SITEARCH_EXP:
- *	This symbol contains the ~name expanded version of SITEARCH, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define SITEARCH "$sitearch"		/**/
-#define SITEARCH_EXP "$sitearchexp"		/**/
-
-/* SITELIB:
- *	This symbol contains the name of the private library for this package.
- *	The library is private in the sense that it needn't be in anyone's
- *	execution path, but it should be accessible by the world.  The program
- *	should be prepared to do ~ expansion.
- *	The standard distribution will put nothing in this directory.
- *	Individual sites may place their own extensions and modules in
- *	this directory.
- */
-/* SITELIB_EXP:
- *	This symbol contains the ~name expanded version of SITELIB, to be used
- *	in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define SITELIB "$sitelib"		/**/
-#define SITELIB_EXP "$sitelibexp"		/**/
-
-/* STARTPERL:
- *	This variable contains the string to put in front of a perl
- *	script to make sure (one hopes) that it runs with perl and not
- *	some shell.
- */
-#define STARTPERL "$startperl"		/**/
-
-/* USE_PERLIO:
- *	This symbol, if defined, indicates that the PerlIO abstraction should
- *	be used throughout.  If not defined, stdio should be
- *	used in a fully backward compatible manner.
- */
-#$useperlio	USE_PERLIO		/**/
-
-/* HAS_GETHOST_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for gethostent(), gethostbyname(), and
- *	gethostbyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#$d_gethostprotos	HAS_GETHOST_PROTOS	/**/
-
-/* HAS_GETNET_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for getnetent(), getnetbyname(), and
- *	getnetbyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#$d_getnetprotos	HAS_GETNET_PROTOS	/**/
-
-/* HAS_GETPROTO_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for getprotoent(), getprotobyname(), and
- *	getprotobyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#$d_getprotoprotos	HAS_GETPROTO_PROTOS	/**/
-
-/* HAS_GETSERV_PROTOS:
- *	This symbol, if defined, indicates that  includes
- *	prototypes for getservent(), getservbyname(), and
- *	getservbyaddr().  Otherwise, it is up to the program to guess
- *	them.  See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#$d_getservprotos	HAS_GETSERV_PROTOS	/**/
-
-/* Netdb_host_t:
- *	This symbol holds the type used for the 1st argument
- *	to gethostbyaddr().
- */
-/* Netdb_hlen_t:
- *	This symbol holds the type used for the 2nd argument
- *	to gethostbyaddr().
- */
-/* Netdb_name_t:
- *	This symbol holds the type used for the argument to
- *	gethostbyname().
- */
-/* Netdb_net_t:
- *	This symbol holds the type used for the 1st argument to
- *	getnetbyaddr().
- */
-#define Netdb_host_t		$netdb_host_type /**/
-#define Netdb_hlen_t		$netdb_hlen_type /**/
-#define Netdb_name_t		$netdb_name_type /**/
-#define Netdb_net_t		$netdb_net_type /**/
-
-/* Select_fd_set_t:
- *	This symbol holds the type used for the 2nd, 3rd, and 4th
- *	arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
- *	is defined, and 'int *' otherwise.  This is only useful if you 
- *	have select(), of course.
- */
-#define Select_fd_set_t 	$selecttype	/**/
-
-/* ARCHNAME:
- *	This symbol holds a string representing the architecture name.
- *	It may be used to construct an architecture-dependant pathname
- *	where library files may be held under a private library, for
- *	instance.
- */
-#define ARCHNAME "$archname"		/**/
-
-/* I_MACH_CTHREADS:
- *    This symbol, if defined, indicates to the C program that it should
- *    include .
- */
-#$i_machcthreads	I_MACH_CTHREADS         /**/
-
-/* I_PTHREAD:
- *    This symbol, if defined, indicates to the C program that it should
- *    include .
- */
-#$i_pthread   I_PTHREAD               /**/
-
-/* HAS_PTHREAD_YIELD:
- *	This symbol, if defined, indicates that the pthread_yield 
- *	routine is available to yield the execution of the current
- *	thread.
- */
-/* HAS_SCHED_YIELD:
- *	This symbol, if defined, indicates that the sched_yield
- *	routine is available to yield the execution of the current
- *	thread.
- */
-#$d_pthread_yield HAS_PTHREAD_YIELD	/**/
-#$d_sched_yield HAS_SCHED_YIELD	/**/
-
-/* PTHREADS_CREATED_JOINABLE:
- *	This symbol, if defined, indicates that pthreads are created
- *	in the joinable (aka undetached) state.
- */
-#$d_pthreads_created_joinable PTHREADS_CREATED_JOINABLE /**/
-
-/* USE_THREADS:
- *	This symbol, if defined, indicates that Perl should
- *	be built to use threads.
- */
-/* OLD_PTHREADS_API:
- *	This symbol, if defined, indicates that Perl should
- *	be built to use the old draft POSIX threads API.
- */
-#$usethreads	USE_THREADS		/**/
-#$d_oldpthreads	OLD_PTHREADS_API		/**/
-
-/* Time_t:
- *	This symbol holds the type returned by time(). It can be long,
- *	or time_t on BSD sites (in which case  should be
- *	included).
- */
-#define Time_t $timetype		/* Time type */
-
-/* HAS_TIMES:
- *	This symbol, if defined, indicates that the times() routine exists.
- *	Note that this became obsolete on some systems (SUNOS), which now
- * use getrusage(). It may be necessary to include .
- */
-#$d_times HAS_TIMES		/**/
-
-/* Fpos_t:
- *	This symbol holds the type used to declare file positions in libc.
- *	It can be fpos_t, long, uint, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Fpos_t $fpostype		/* File position type */
-
-/* Gid_t:
- *	This symbol holds the return type of getgid() and the type of
- *	argument to setrgid() and related functions.  Typically,
- *	it is the type of group ids in the kernel. It can be int, ushort,
- *	uid_t, etc... It may be necessary to include  to get
- *	any typedef'ed information.
- */
-#define Gid_t $gidtype		/* Type for getgid(), etc... */
-
-/* Off_t:
- *	This symbol holds the type used to declare offsets in the kernel.
- *	It can be int, long, off_t, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Off_t $lseektype		/*  type */
-
-/* Mode_t:
- *	This symbol holds the type used to declare file modes 
- *	for systems calls.  It is usually mode_t, but may be
- *	int or unsigned short.  It may be necessary to include 
- *	to get any typedef'ed information.
- */
-#define Mode_t $modetype	 /* file mode parameter for system calls */
-
-/* Pid_t:
- *	This symbol holds the type used to declare process ids in the kernel.
- *	It can be int, uint, pid_t, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Pid_t $pidtype		/* PID type */
-
-/* Size_t:
- *	This symbol holds the type used to declare length parameters
- *	for string functions.  It is usually size_t, but may be
- *	unsigned long, int, etc.  It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Size_t $sizetype	 /* length paramater for string functions */
-
-/* Uid_t:
- *	This symbol holds the type used to declare user ids in the kernel.
- *	It can be int, ushort, uid_t, etc... It may be necessary to include
- *	 to get any typedef'ed information.
- */
-#define Uid_t $uidtype		/* UID type */
+#$d_flexfnam	FLEXFILENAMES		/**/
 
 #endif
 !GROK!THIS!
diff --git a/contrib/perl5/configpm b/contrib/perl5/configpm
index ba07f14a878b..c64af8a13b97 100755
--- a/contrib/perl5/configpm
+++ b/contrib/perl5/configpm
@@ -17,17 +17,33 @@ my $glossary = $ARGV[1] || 'Porting/Glossary';
 
 
 open CONFIG, ">$config_pm" or die "Can't open $config_pm: $!\n";
-$myver = $];
+$myver = sprintf "v%vd", $^V;
 
-print CONFIG <<"ENDOFBEG";
+print CONFIG <<'ENDOFBEG_NOQ', <<"ENDOFBEG";
 package Config;
 use Exporter ();
-\@ISA = (Exporter);
-\@EXPORT = qw(%Config);
-\@EXPORT_OK = qw(myconfig config_sh config_vars);
+@EXPORT = qw(%Config);
+@EXPORT_OK = qw(myconfig config_sh config_vars);
 
-\$] == $myver
-  or die "Perl lib version ($myver) doesn't match executable version (\$])";
+# Define our own import method to avoid pulling in the full Exporter:
+sub import {
+  my $pkg = shift;
+  @_ = @EXPORT unless @_;
+  my @func = grep {$_ ne '%Config'} @_;
+  local $Exporter::ExportLevel = 1;
+  Exporter::import('Config', @func) if @func;
+  return if @func == @_;
+  my $callpkg = caller(0);
+  *{"$callpkg\::Config"} = \%Config;
+}
+
+ENDOFBEG_NOQ
+die "Perl lib version ($myver) doesn't match executable version (\$])"
+    unless \$^V;
+
+\$^V eq $myver
+  or die "Perl lib version ($myver) doesn't match executable version (" .
+    (sprintf "v%vd",\$^V) . ")";
 
 # This file was created by configpm when Perl was built. Any changes
 # made to this file will be lost the next time perl is built.
@@ -44,8 +60,21 @@ $in_v = 0;
 
 while (<>) {
     next if m:^#!/bin/sh:;
-    # Catch CONFIG=true and PATCHLEVEL=n line from Configure.
+    # Catch CONFIGDOTSH=true and PERL_VERSION=n line from Configure.
     s/^(\w+)=(true|\d+)\s*$/$1='$2'\n/;
+    my ($k,$v) = ($1,$2);
+    # grandfather PATCHLEVEL and SUBVERSION and CONFIG
+    if ($k) {
+	if ($k eq 'PERL_VERSION') {
+	    push @v_others, "PATCHLEVEL='$v'\n";
+	}
+	elsif ($k eq 'PERL_SUBVERSION') {
+	    push @v_others, "SUBVERSION='$v'\n";
+	}
+	elsif ($k eq 'CONFIGDOTSH') {
+	    push @v_others, "CONFIG='$v'\n";
+	}
+    }
     # We can delimit things in config.sh with either ' or ". 
     unless ($in_v or m/^(\w+)=(['"])(.*\n)/){
 	push(@non_v, "#$_"); # not a name='value' line
@@ -68,11 +97,11 @@ print CONFIG "\n",
     join("", @v_fast, sort @v_others),
     "!END!\n\n";
 
-# copy config summary format from the myconfig script
+# copy config summary format from the myconfig.SH script
 
 print CONFIG "my \$summary = <<'!END!';\n";
 
-open(MYCONFIG,") && !/^Summary of/;
 do { print CONFIG $_ } until !defined($_ = ) || /^\s*$/;
 close(MYCONFIG);
@@ -401,11 +430,11 @@ require $config_pm;
 import Config;
 
 die "$0: $config_pm not valid"
-	unless $Config{'CONFIG'} eq 'true';
+	unless $Config{'CONFIGDOTSH'} eq 'true';
 
 die "$0: error processing $config_pm"
 	if defined($Config{'an impossible name'})
-	or $Config{'CONFIG'} ne 'true' # test cache
+	or $Config{'CONFIGDOTSH'} ne 'true' # test cache
 	;
 
 die "$0: error processing $config_pm"
diff --git a/contrib/perl5/configure.com b/contrib/perl5/configure.com
index d51793abe803..003a047bbe87 100644
--- a/contrib/perl5/configure.com
+++ b/contrib/perl5/configure.com
@@ -4,34 +4,33 @@ $!
 $! For example, if you unpacked perl into: [USER.PERL5_00n...] then you will 
 $! want to cd into the tree and execute Configure:
 $!
-$! $ SET DEFAULT [USER.PERL5_00n]
+$! $ SET DEFAULT [USER.PERL5_xxx]
 $! $ @Configure 
 $!
 $! or
 $!
-$! $ SET DEFAULT [USER.PERL5_00n]
+$! $ SET DEFAULT [USER.PERL5_xxx]
 $! $ @Configure "-des"
 $!
 $! That's it. If you get into a bind trying to build perl on VMS then 
 $! definitely read through the README.VMS file.
-$! Beyond that send email to VMSPerl@cor.newman.upenn.edu 
+$! Beyond that send email to vmsperl@perl.org
 $!
 $! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 $!
 $! send suggestions to: 
-$!  Dan Sugalski 
+$!  Dan Sugalski 
 $! Thank you!!!!
 $!
 $! Adapted and converted from Larry Wall & Andy Dougherty's
 $! "Configure generated by metaconfig 3.0 PL60." by Peter Prymmer
-$! (a Bourne sh[ell] script for configuring the installation of perl on VMS)
-$! in the perl5.002|3 epoch (spring/summer 1996)
+$! (a Bourne sh[ell] script for configuring the installation of perl 
+$! on non-VMS systems) in the perl5.002|3 epoch (spring/summer 1996)
 $! with much valuable help from Charles Bailey & 
 $! the whole VMSPerl crew.
 $! Extended and messed about with by Dan Sugalski
 $!
-$! SET NOVERIFY
-$ sav_ver = F$VERIFY(sav_ver)
+$ sav_ver = F$VERIFY(0)
 $!
 $! VMS-isms we will need:
 $ echo = "write sys$output "
@@ -39,16 +38,24 @@ $ cat  = "type"
 $ gcc_symbol = "gcc"
 $ ans = ""
 $ macros = ""
-$ use_debugging_perl = "Y"
+$ extra_flags = ""
+$ user_c_flags = ""
+$ use_ieee_math = "n"
+$ be_case_sensitive = "n"
+$ use_vmsdebug_perl = "n"
+$ use64bitall = "n"
+$ use64bitint = "n"
 $ C_Compiler_Replace = "CC="
 $ Thread_Live_Dangerously = "MT="
 $ use_two_pot_malloc = "N"
 $ use_pack_malloc = "N"
 $ use_debugmalloc = "N"
-$ preload_env = "N"
+$ d_secintgenv = "N"
+$ cc_flags = ""
+$ use_multiplicity = "N"
 $ vms_default_directory_name = F$ENVIRONMENT("DEFAULT")
-$! max_allowed_dir_depth = 3  ! e.g. [A.B.PERL5_00n] not [A.B.C.PERL5_00n]
-$ max_allowed_dir_depth = 2  ! e.g. [FOO.PERL5_00n] not [FOO.BAR.PERL5_00n]
+$ max_allowed_dir_depth = 3  ! e.g. [A.B.PERL5_xxx] not [A.B.C.PERL5_xxx]
+$! max_allowed_dir_depth = 2  ! e.g. [A.PERL5_xxx] not [A.B.PERL5_xxx]
 $!
 $ vms_filcnt = F$GETJPI ("","FILCNT")
 $!
@@ -110,6 +117,7 @@ $!
 $!: set up default values
 $ fastread=""
 $ reuseval="false"
+$ maniskip = "false"
 $ config_sh=""
 $ alldone=""
 $ error=""
@@ -118,18 +126,24 @@ $ extractsh=""
 $ override=""
 $ knowitall=""
 $ Using_Dec_C = ""
-$ Using_Vax_C = ""
 $ Using_Gnu_C = ""
 $ Dec_C_Version = ""
 $ use_threads = "F"
+$ use_5005_threads = "N"
+$ use_ithreads = "N"
 $!
 $!: option parsing
+$ config_args = ""
 $ IF (P1 .NES. "")
 $ THEN            !one or more switches was thrown
 $   i = 1
 $   bang = 0
 $Param_loop:
-$   IF (P'i'.NES."") THEN bang = bang + 1
+$   IF (P'i'.NES."") 
+$   THEN
+$     bang = bang + 1
+$     config_args = config_args + F$FAO(" !AS",P'i')
+$   ENDIF
 $   i = i + 1
 $   IF (i.LT.9) THEN GOTO Param_loop !DCL allows P1..P8
 $!
@@ -162,8 +176,8 @@ $     P'i' = P'i' - "f"
 $     config_sh = P'i'
 $     IF (F$SEARCH(config_sh).NES."")
 $     THEN
-$       test = F$FILE_ATTRIBUTES(config_sh,"PRO")
-$       IF (F$LOCATE("R",test).NE.F$LENGTH(test)) 
+$       test_config_sh = F$FILE_ATTRIBUTES(config_sh,"PRO")
+$       IF (F$LOCATE("R",test_config_sh).NE.F$LENGTH(test_config_sh)) 
 $       THEN
 $         CONTINUE !at this point check UIC && if test allows...
 $                  !to be continued ?
@@ -184,6 +198,13 @@ $     gotopt = "t"
 $     P'i' = P'i' - "h"
 $     gotshortopt = "t"
 $   ENDIF
+$   IF (F$EXTRACT(0,1,P'i') .EQS. "m")
+$   THEN
+$     maniskip = "true"
+$     gotopt = "t"
+$     P'i' = P'i' - "m"
+$     gotshortopt = "t"
+$   ENDIF
 $   IF (F$EXTRACT(0,1,P'i') .EQS. "r")
 $   THEN
 $     reuseval = "true"
@@ -283,17 +304,19 @@ $   i = i + 1
 $   IF (i .LT. (bang + 1)) THEN GOTO Opt_loop
 $!
 $ ENDIF  ! (P1 .NES. "")
+$ config_args = F$EDIT(config_args,"TRIM")
 $!
 $ IF (error)
 $ THEN
 $   me = F$PARSE(me,,,"DIRECTORY")+ F$PARSE(me,,,"NAME")
-$   echo "Usage: @''me' [-dehrEKOSV] [-fconfig.sh] [-Dsymbol] [-Dsymbol=value]"
-$   echo "                [-Usymbol] [-Usymbol=]"
+$   echo "Usage: @''me' [-dehmrEKOSV] [-fconfig.sh] [-Dsymbol] [-Dsymbol=value]"
+$   echo "                [-Usymbol]  [-Usymbol=]"
 $   TYPE SYS$INPUT
  "-d" : use defaults for all answers.
  "-e" : go on without questioning past the production of config.sh.    *
  "-f" : specify an alternate default configuration file.
  "-h" : print this help message and exit (with an error status).
+ "-m" : skip the MANIFEST check to see that all files are present
  "-r" : reuse C symbols value if possible (skips costly nm extraction).*
  "-s" : silent mode, only echoes questions and essential information.
  -"D" : define symbol to have some value:                              *
@@ -319,11 +342,19 @@ $!
 $ GOTO Check_silence
 $!
 $Shut_up:
-$ STDOUT = F$TRNLNM("SYS$OUTPUT")
+$ IF F$Mode() .eqs. "BATCH"
+$ THEN
+$   STDOUT = F$GetQuI("DISPLAY_JOB","LOG_SPECIFICATION",,"THIS_JOB")
+$   WRITE SYS$OUTPUT "Warning: Executing in batch mode.  To avoid file locking conflicts,"
+$   WRITE SYS$OUTPUT "output intended for SYS$OUTPUT will be sent to a new version"
+$   WRITE SYS$OUTPUT STDOUT
+$ ELSE
+$   STDOUT = F$TRNLNM("SYS$OUTPUT")
+$ ENDIF
 $ DEFINE SYS$OUTPUT "_NLA0:"
 $ echo4 = "write STDOUT "
 $ cat4 = "TYPE/OUTPUT=''STDOUT'"
-$ open/write STDOUT 'STDOUT'
+$ open/write/share=read STDOUT 'STDOUT'
 $ RETURN
 $!
 $Check_silence:
@@ -341,6 +372,7 @@ $! maybe someday
 $!
 $!: set package name
 $ package = "perl5"
+$ packageup = F$EDIT((package - "5"),"UPCASE")
 $!
 $!: Eunice requires " " instead of "", can you believe it
 $ echo ""
@@ -382,7 +414,7 @@ $ ELSE
 $! MANIFEST. has been found and we have set def'ed there - 
 $! time to bail out before it's too late.
 $ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
-$ IF tmp .GES. "7.2" THEN GOTO Beyond_depth_check
+$ IF (tmp .GES. "7.2") .AND. (F$GETSYI("HW_MODEL") .GE. 1024) THEN GOTO Beyond_depth_check
 $   IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("Default")).nes.".")
 $   THEN
 $     TYPE SYS$INPUT:
@@ -417,8 +449,11 @@ $!
 $     OPEN/WRITE MISSING MISSING.
 $!change to "FALSE" if you wish to skip the manifest search 
 $!(which after all is rather slow in DCL :-)
-$     IF ("TRUE")	
+$     IF (maniskip)
 $     THEN
+$       echo "Skipping MANIFEST check as requested"
+$     ELSE
+$!
 $       OPEN/READ CONFIG 'manifestfound'
 $Read_loop_manifest:
 $       READ/END_OF_FILE = Done_manifest CONFIG line
@@ -466,6 +501,19 @@ $       IF (((f$length(file_2_find)+1) .eq. f$length(basename)) .and. -
 $       file_2_find = dirname + basename
 $!
 $       found = F$SEARCH(file_2_find)
+$       IF (found .EQS. "" .AND. dots .GT. 2)
+$       THEN
+$! 17-DEC-1999 Improved to turn "[.foo.bar]baz.c_buz" into
+$! "[.foo.bar]baz_c.buz" to cover unzipped archives and put
+$! "[.foo.bar]baz.c_buz,baz_c.buz" into missing list if neither is found.
+$         basename[f$locate(".",basename),1] := _
+$         dot_ele = F$ELEMENT(dots - 1,"_",basename)
+$         basename = -
+            f$extract(0,f$length(basename)-(f$length(dot_ele)+1),basename) -
+              + "." + dot_ele
+$         found = F$SEARCH(dirname + basename)
+$         file_2_find = file_2_find + "," + basename
+$       ENDIF
 $       IF (found .EQS. "")
 $       THEN
 $         WRITE MISSING file_2_find
@@ -495,7 +543,7 @@ THIS PACKAGE SEEMS TO BE INCOMPLETE.
 You have the option of continuing the configuration process, despite the
 distinct possibility that your kit is damaged, by typing 'y'es.  If you
 do, don't blame me if something goes wrong.  I advise you to type 'n'o
-and contact the author (sugalskd@ous.edu).
+and contact the author (dan@sidhe.org)
 
 $     READ SYS$COMMAND/PROMPT="Continue? [n] " ans
 $     IF ans
@@ -561,7 +609,7 @@ $ user = F$EDIT(F$GETJPI("","USERNAME"),"TRIM,COLLAPSE")
 $ IF .NOT.(F$SEARCH("[-.CONFIG]INSTRUCT.").EQS."")
 $ THEN
 $   messages = F$ENVIRONMENT("MESSAGE")
-$   SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT !sorry :-(
+$   SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT
 $   contains /NOOUTPUT [-.CONFIG]INSTRUCT. 'user'
 $   IF .NOT.($status.EQ.%X08D78053)
 $   THEN
@@ -571,7 +619,7 @@ $     rp = "Would you like to see the instructions? [''dflt'] "
 $     GOSUB myread
 $     if .NOT.ans THEN needman=""
 $   ENDIF
-$   SET MESSAGE 'messages'                 !hope you made it here :-)
+$   SET MESSAGE 'messages'
 $ ENDIF
 $ if (fastread.AND.silent.AND.(alldone.eqs."cont")) THEN needman=""
 $!
@@ -589,9 +637,9 @@ brackets; typing carriage return will give you the default.
 $   READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
 $   TYPE SYS$INPUT:
 
-In a hurry? You may run '@Configure -d'.  This will bypass nearly all
+In a hurry? You may run '@Configure "-d"'.  This will bypass nearly all
 the questions and use the computed defaults (or the previous answers provided 
-there was already a config.sh file). Type '@Configure -h' for a list of 
+there was already a config.sh file). Type '@Configure "-h"' for a list of 
 options.
 
 $   READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
@@ -600,7 +648,7 @@ $   TYPE SYS$INPUT:
 Much effort has been expended to ensure that this shell script will
 run on any VMS system.  If despite that it blows up on yours, your
 best bet is to edit Configure.com and @ it again.  Whatever problems
-you have with Configure.com, let me (sugalskd@ous.edu) know how I blew
+you have with Configure.com, let me (dan@sidhe.org) know how I blew
 it.
 
 $!This installation script affects things in two ways:
@@ -687,7 +735,7 @@ $   TYPE SYS$INPUT:
 %Config-E-VMS, ERROR:
 
            Err, you do not appear to be running VMS!
- This package is intended to Configure the building of Perl for VMS.
+ This procedure is intended to Configure the building of Perl for VMS.
 
 $   READ SYS$COMMAND/PROMPT="Continue anyway? [n] " ans
 $   IF ans
@@ -723,7 +771,7 @@ $!: who configured the system
 $! see 'user' above.
 $ cf_by = F$EDIT(user,"LOWERCASE")
 $! cf_time = F$CVTIME()                 !superceded by procedure below
-$ osvers = F$GETSYI("VERSION")
+$ osvers = F$EDIT(F$GETSYI("VERSION"),"TRIM")
 $!
 $! Peter Prymmer has seen:
 $!  "SYS$TIMEZONE_DIFFERENTIAL" = "-46800"  (sic)
@@ -811,7 +859,7 @@ $!
 $TZSet:
 $ echo ""
 $ echo "Please tell me in hh:mm form what time offset from GMT/UTC in England"
-$ echo "you are. As an example Eastern (US) Standard Time is -5:00 offset, but"
+$ echo "you are.  As an example Eastern (US) Standard Time is -5:00 offset, but"
 $ echo "Eastern Daylight Time (summer) is -4:00 offset."
 $ dflt = "0:00"
 $ rp = "Enter the Time Zone offset: [''dflt'] "
@@ -855,8 +903,14 @@ $!
 $ IF (F$GETSYI("HW_MODEL") .LT. 1024)
 $ THEN 
 $   archname = "VMS_VAX"
+$   otherarch = "an Alpha"
+$   alignbytes="8"
+$   arch_type = "ARCH-TYPE=__VAX__"
 $ ELSE
 $   archname = "VMS_AXP"
+$   otherarch = "a VAX"
+$   alignbytes="8"
+$   arch_type = "ARCH-TYPE=__AXP__"
 $ ENDIF
 $ rp = "What is your architecture name? [''archname'] "
 $ GOSUB myread
@@ -868,24 +922,22 @@ $   THEN
 $     echo4 "I'll go with ''archname' anyway..."
 $   ENDIF
 $ ENDIF
-$ IF (archname.EQS."VMS_AXP")
+$ dflt = "n"
+$ rp = "Will you be sharing your PERL_ROOT with ''otherarch'? [''dflt'] "
+$ GOSUB myread
+$ if ans.NES.""
 $ THEN
-$   dflt = "n"
-$   rp = "Are you sharing your PERL_ROOT with a VAX? [''dflt'] "
-$   GOSUB myread
-$   if ans.NES.""
+$   ans = F$EXTRACT(0,1,F$EDIT(ans,"COLLAPSE, UPCASE"))
+$ ENDIF
+$ IF (ans.NES."Y")
+$ THEN
+$   sharedperl = "N"
+$ ELSE
+$   sharedperl = "Y"
+$   IF (archname.EQS."VMS_AXP")
 $   THEN
-$     ans = F$EDIT(ans,"COLLAPSE, UPCASE")
-$   ENDIF
-$   IF (ans.NES."Y")
-$   THEN
-$     sharedperl = "N"
-$   ELSE
-$     sharedperl = "Y"
 $     macros = macros + """AXE=1"","
 $   ENDIF
-$ ELSE
-$   sharedperl = "N"
 $ ENDIF
 $!
 $!: is AFS running?                       !sfn
@@ -894,44 +946,44 @@ $!: set up shell script to do ~ expansion !sfn
 $!: expand filename                       !sfn
 $!: now set up to get a file name         !sfn
 $!
+$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]"
+$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - ".;"
+$ prefixbase = prefix - "]"
+$ prefix = prefixbase + ".]"
+$!: determine root of directory hierarchy where package will be installed.
+$ dflt = prefix
+$ IF .NOT.silent 
+$ THEN 
+$   echo ""
+$   echo "By default, ''package' will be installed in ''dflt', pod"
+$   echo "pages under ''prefixbase'LIB.POD], etc..., i.e. with ''dflt' as prefix for"
+$   echo "all installation directories."
+$   echo "On ''osname' the ''prefix' is used to DEFINE the ''packageup'_ROOT prior to installation"
+$   echo "as well as during subsequent use of ''package' via ''packageup'_SETUP.COM."
+$ ENDIF
+$ rp = "Installation prefix to use (for ''packageup'_ROOT)? [ ''dflt' ] "
+$ GOSUB myread
+$ IF ans.NES.""
+$ THEN 
+$   prefix = ans
+$   IF F$LOCATE(".]",ans) .EQ. F$LENGTH(ans) THEN prefix = prefix - "]" + ".]"
+$ ELSE 
+$   prefix = dflt
+$ ENDIF
+$!
+$! Check here for pre-existing PERL_ROOT.
+$!  -> ask if removal desired.
+$! Check here for writability of requested PERL_ROOT if it is not the default (cwd).
+$!  -> recommend letting PERL_ROOT be PERL_SRC if requested PERL_ROOT is not writable.
+$!
 $ vms_skip_install = "true"
 $ dflt = "y"
 $! echo ""
-$ rp = "%Config-I-VMS, Do you wish to skip the """"where install"""" questions? [''dflt'] "
+$ rp = "%Config-I-VMS, Skip the remaining """"where install"""" questions? [''dflt'] "
 $ GOSUB myread
 $ IF (.NOT.ans).AND.(ans.NES."") THEN vms_skip_install = "false"
-$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]"
-$ prefix = f$parse(prefix,,,,"NO_CONCEAL") - "][" - ".;"
-$ prefix = prefix - "]" + ".]"
 $ IF (.NOT.vms_skip_install)
 $ THEN
-$!: determine root of directory hierarchy where package will be installed.
-$   dflt = "default"
-$   IF .NOT.silent 
-$   THEN 
-$     echo ""
-$     echo "By default, ''package' will be installed in ''dflt'/bin, manual"
-$     echo "pages under ''dflt'/man, etc..., i.e. with ''dflt' as prefix for"
-$     echo "all installation directories. Typically set to /usr/local, but you"
-$     echo "may choose /usr if you wish to install ''package' among your system
-$   ENDIF
-$   IF .NOT.silent 
-$   THEN TYPE SYS$INPUT:
-binaries. If you wish to have binaries under /bin but manual pages
-under /usr/local/man, that's ok: you will be prompted separately
-for each of the installation directories, the prefix being only used
-to set the defaults.
-$   ENDIF
-$   dflt = prefix
-$   rp = "Installation prefix to use? [ ''dflt' ] "
-$   GOSUB myread
-$   IF ans.NES.""
-$   THEN 
-$     prefix = ans
-$     IF F$LOCATE(".]",ans) .EQ. F$LENGTH(ans) THEN prefix = prefix - "]" + ".]"
-$   ELSE 
-$     prefix = dflt
-$   ENDIF
 $!
 $!: set the prefixit variable, to compute a suitable default value
 $!
@@ -953,10 +1005,44 @@ $   THEN privlib = ans
 $   ELSE privlib = dflt
 $   ENDIF
 $!
-$ ENDIF !%Config-I-VMS, skip "where install" questions
+$ ENDIF !%Config-I-VMS, skip remaining "where install" questions
+$!
+$ perl_symbol = "true"
+$ perl_verb = ""
+$ dflt = "y"
+$ IF .NOT.silent 
+$ THEN 
+$   echo ""
+$   echo "%Config-I-VMS, You may choose to write ''packageup'_SETUP.COM to assign a foreign"
+$   echo "-Config-I-VMS, symbol to invoke ''package', which is the usual method."
+$   echO "-Config-I-VMS, If you do not do so then you would need a DCL command verb at the"
+$   echo "-Config-I-VMS, process or the system wide level."
+$ ENDIF
+$ rp = "Invoke perl as a global symbol foreign command [''dflt'] "
+$ GOSUB myread
+$ IF (.NOT.ans).AND.(ans.NES."") THEN perl_symbol = "false"
+$!
+$ IF (.NOT.perl_symbol)
+$ THEN
+$   dflt = "y"
+$   IF .NOT.silent 
+$   THEN 
+$     echo ""
+$     echo "%Config-I-VMS, Since you won't be using a symbol you must choose to put the ''packageup'"
+$     echo "-Config-I-VMS, verb in a per-process table or in the system wide DCLTABLES (which"
+$     echo "-Config-I-VMS, would require write privilege)."
+$   ENDIF
+$   rp = "Invoke perl as a per process command verb [ ''dflt' ] "
+$   GOSUB myread
+$   IF (.NOT.ans).AND.(ans.NES."")
+$   THEN perl_verb = "DCLTABLES"
+$   ELSE perl_verb = "PROCESS"
+$   ENDIF
+$ ENDIF ! (.NOT.perl_symbol)
 $!
 $!: set the base revision
 $ baserev="5.0"
+$ revision = baserev - ".0"
 $!: get the patchlevel
 $ echo ""
 $ echo4 "Getting the current patchlevel..." !>&4
@@ -965,21 +1051,42 @@ $ IF (patchlevel_h.NES."")
 $ THEN
 $   got_patch = "false"
 $   got_sub   = "false"
+$   got_api_revision   = "false"
+$   got_api_version    = "false"
+$   got_api_subversion = "false"
 $   OPEN/READONLY CONFIG 'patchlevel_h' 
 $Patchlevel_h_loop:
 $   READ/END_Of_File=Close_patch CONFIG line
-$   IF ((F$LOCATE("#define PATCHLEVEL",line).NE.F$LENGTH(line)).AND.(.NOT.got_patch))
+$   IF ((F$LOCATE("#define PERL_VERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_patch))
 $   THEN
 $     line = F$EDIT(line,"COMPRESS, TRIM")
-$     patchlevel = F$EXTRACT(18,F$LENGTH(line)-18,line)
+$     patchlevel = F$ELEMENT(2," ",line)
 $     got_patch = "true"
 $   ENDIF
-$   IF ((F$LOCATE("#define SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_sub))
+$   IF ((F$LOCATE("#define PERL_SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_sub))
 $   THEN
 $     line = F$EDIT(line,"COMPRESS, TRIM")
-$     subversion = F$EXTRACT(18,F$LENGTH(line)-18,line)
+$     subversion = F$ELEMENT(2," ",line)
 $     got_sub = "true"
 $   ENDIF
+$   IF ((F$LOCATE("#define PERL_API_REVISION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_revision))
+$   THEN
+$     line = F$EDIT(line,"COMPRESS, TRIM")
+$     api_revision = F$ELEMENT(2," ",line)
+$     got_api_revision = "true"
+$   ENDIF
+$   IF ((F$LOCATE("#define PERL_API_VERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_version))
+$   THEN
+$     line = F$EDIT(line,"COMPRESS, TRIM")
+$     api_version = F$ELEMENT(2," ",line)
+$     got_api_version = "true"
+$   ENDIF
+$   IF ((F$LOCATE("#define PERL_API_SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_subversion))
+$   THEN
+$     line = F$EDIT(line,"COMPRESS, TRIM")
+$     api_subversion = F$ELEMENT(2," ",line)
+$     got_api_subversion = "true"
+$   ENDIF
 $   IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop
 $Close_patch:
 $   CLOSE CONFIG
@@ -987,24 +1094,14 @@ $   ELSE
 $     patchlevel="0"
 $     subversion="0"
 $ ENDIF
-$ echo "(You have ''package' ''baserev' PL''patchlevel' sub''subversion'.)"
-$! This whole thing needs replacing w/ F$FAO() calls:
-$ patchlevel = F$INTEGER(patchlevel)
-$ IF patchlevel.LT.10
-$ THEN patchlevel = "00" + F$STRING(patchlevel)
-$ ELSE patchlevel = "0" + F$STRING(patchlevel)
-$ ENDIF
-$ subversion = F$INTEGER(subversion)
-$ IF subversion.GT.0
+$ IF (F$STRING(subversion) .NES. "0")
 $ THEN
-$   IF subversion.LT.10
-$   THEN subversion = "0" + F$STRING(subversion)
-$   ELSE subversion = F$STRING(subversion)
-$   ENDIF
-$ ELSE subversion = ""
+$   echo "(You have ''package' revision ''revision' patchlevel ''patchlevel' subversion ''subversion'.)"
+$ ELSE
+$   echo "(You have ''package' revision ''revision' patchlevel ''patchlevel'.)"
 $ ENDIF
 $!
-$ version = F$EXTRACT(0,1,baserev) + "_" + patchlevel + subversion
+$ version = revision + "_" + patchlevel + "_" + subversion
 $!
 $ IF (.NOT.vms_skip_install)
 $ THEN
@@ -1105,7 +1202,7 @@ $!
 $ ENDIF !%Config-I-VMS, skip "where install" questions
 $!
 $!: see if we need a special compiler
-$! cc_list = "cc/vaxc|cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands
+$! cc_list = "cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands
 $!
 $ nocc = "f"
 $ vms_cc_dflt = ""
@@ -1124,12 +1221,12 @@ $ WRITE CONFIG "        exit(0);"
 $ WRITE CONFIG "}"
 $ CLOSE CONFIG
 $!
-$ DEFINE SYS$ERROR _NLA0:
-$ DEFINE SYS$OUTPUT _NLA0:
+$! DEFINE SYS$ERROR _NLA0:
+$! DEFINE SYS$OUTPUT _NLA0:
 $ cc/NoObj/list=ccvms.lis ccvms.c
 $ tmp = $status
-$ DEASSIGN SYS$OUTPUT
-$ DEASSIGN SYS$ERROR
+$! DEASSIGN SYS$OUTPUT
+$! DEASSIGN SYS$ERROR
 $ IF (silent) THEN GOSUB Shut_up
 $! echo "%Config-I-VMS, After cc compile $status = >''tmp'<" !diagnostic
 $!
@@ -1147,8 +1244,6 @@ $ IF .NOT.silent THEN echo ""
 $ echo "%Config-I-VMS, Default ""cc"" is ''line' ''archsufx' ''F$GETSYI("VERSION")'" 
 $ IF F$LOCATE("VAX",line).NE.F$LENGTH(line) 
 $ THEN 
-$   vms_cc_dflt = "/vaxc"
-$   vms_cc_available = vms_cc_available + "cc/vaxc "
 $   IF .NOT.silent
 $   THEN 
 $     echo "%Config-I-VMS, Will try cc/decc..."
@@ -1171,28 +1266,10 @@ $     echo "%Config-I-VMS, You also have: ''line' ''archsufx' ''F$GETSYI("VERSIO
 $     vms_cc_available = vms_cc_available + "cc/decc "
 $   ENDIF
 $ ELSE
-$   IF F$LOCATE("DEC",line).NE.F$LENGTH(line) 
+$   IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line))
 $   THEN 
 $     vms_cc_dflt = "/decc"
 $     vms_cc_available = vms_cc_available + "cc/decc "
-$     echo "%Config-I-VMS, Will try cc/vaxc..."
-$     DEFINE SYS$ERROR _NLA0:
-$     DEFINE SYS$OUTPUT _NLA0:
-$     SET NOON
-$     cc/vaxc/NoObj/list=ccvms.lis ccvms.c
-$     tmp = $status
-$     DEASSIGN SYS$OUTPUT
-$     DEASSIGN SYS$ERROR
-$     SET ON
-$     IF (silent) THEN GOSUB Shut_up
-$     IF tmp.NE.%X10B90001
-$     THEN
-$       echo "%Config-I-VMS, Apparently you don't have that one."
-$     ELSE
-$       GOSUB List_parse
-$       echo "%Config-I-VMS, You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'"
-$       vms_cc_available = vms_cc_available + "cc/vaxc "
-$     ENDIF
 $   ENDIF
 $ ENDIF
 $!
@@ -1241,29 +1318,19 @@ $ IF ans.NES.""
 $ THEN
 $   ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE")
 $   Mcc = ans
-$   IF F$LOCATE("dec",ans).NE.F$LENGTH(ans)
+$   IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans))
 $   THEN
 $     Mcc = "cc/decc"
 $     Using_Dec_C = "Yes"
 $     C_COMPILER_Replace = "CC=cc=''Mcc'"
 $   ENDIF
-$   IF F$LOCATE("vax",ans).NE.F$LENGTH(ans)
-$   THEN
-$     Mcc = "cc/vaxc"
-$     Using_Vax_C = "Yes"
-$     C_COMPILER_Replace = "CC=cc=''Mcc'"
-$   ENDIF
 $   IF Mcc.NES.dflt
 $   THEN
-$     IF F$LOCATE("dec",dflt).NE.F$LENGTH(dflt) 
+$     IF (F$LOCATE("dec",dflt).NE.F$LENGTH(dflt)).or(F$LOCATE("compaq",dflt).NE.F$LENGTH(dflt))
 $     THEN 
 $       C_COMPILER_Replace = "CC=cc=''Mcc'"
 $     ELSE
 $       Using_Dec_C = "Yes"
-$       IF F$LOCATE("vax",dflt).NE.F$LENGTH(dflt) 
-$       THEN
-$         C_COMPILER_Replace = "CC=cc=''Mcc'"
-$       ENDIF
 $     ENDIF
 $   ELSE
 $     IF Mcc .EQS. "cc/decc"
@@ -1279,11 +1346,6 @@ $   THEN
 $     Using_Dec_C = "Yes"
 $     C_COMPILER_Replace = "CC=cc=''Mcc'"
 $   ENDIF
-$   IF Mcc .EQS. "cc/vaxc"
-$   THEN
-$     Using_Vax_C = "Yes"
-$     C_COMPILER_Replace = "CC=cc=''Mcc'"
-$   ENDIF
 $   IF Mcc .EQS. "gcc"
 $   THEN
 $     Using_Gnu_C = "Yes"
@@ -1339,36 +1401,8 @@ $   CLOSE CONFIG
 $!   DELETE/NOLOG/NOCONFIRM deccvers.*;
 $   echo "You are using Dec C ''line'"
 $   Dec_C_Version = line
-$ ENDIF
-$Vaxc_Invoke_check:
-$ IF "''Using_Vax_C'".EQS."Yes"
-$ THEN
-$   echo ""
-$   echo4 "Checking to see how to invoke Vax C..."
-$   OPEN/WRITE CONFIG vaxcchk.c
-$   WRITE CONFIG "#include "
-$   WRITE CONFIG "int main() {"
-$   WRITE CONFIG "        printf(""%i\n"", ""1"");"
-$   WRITE CONFIG "        exit(0);"
-$   WRITE CONFIG "}"
-$   CLOSE CONFIG
-$   DEFINE SYS$ERROR _NLA0:
-$   DEFINE SYS$OUTPUT _NLA0:
-$   SET NOON
-$   cc/vaxc/NoObj vaxcchk.c
-$   tmp = $status
-$   DEASSIGN SYS$OUTPUT
-$   DEASSIGN SYS$ERROR
-$   SET ON
-$   IF (silent) THEN GOSUB Shut_up
-$   IF tmp.NE.%X10B90001
-$   THEN
-$     Mcc = "cc"
-$   ELSE
-$     Mcc = "cc/vaxc"
-$   ENDIF
-$Vax_c_cleanup:
-$   DELETE/NOLOG/NOCONFIRM vaxcchk.*;
+$   Dec_C_Version = Dec_C_Version + 0
+$   if Dec_C_Version.ge.60200000 THEN CC_FLAGS = CC_FLAGS + "/NOANSI_ALIAS"
 $ ENDIF
 $Gcc_check:
 $ if "''using_gnu_c'" .eqs. "Yes"
@@ -1561,7 +1595,7 @@ $ IF mydomain.NES.""  !no periods in DECnet names like "MYDECNODE::"
 $ THEN
 $   rp = "What is your domain name? [''mydomain'] "
 $   GOSUB myread
-$   IF ans THEN mydomain = ans
+$   IF ans .nes. "" THEN mydomain = ans
 $!: translate upper to lower if necessary
 $   mydomain = F$EDIT(mydomain,"COLLAPSE")
 $   mylowdomain = F$EDIT(mydomain," LOWERCASE")
@@ -1582,10 +1616,10 @@ no easy means to double check it. The default value provided below
 is most probably close to the reality but may not be valid from outside
 your organization...
 $ ENDIF
-$ dflt = "''cf_by@''myhostname'"+"''mydomain'"
+$ dflt = "''cf_by'@''myhostname'"+"''mydomain'"
 $ rp = "What is your e-mail address? [''dflt'] "
 $ GOSUB myread
-$ IF ans
+$ IF ans .nes. ""
 $ THEN cf_email = ans
 $ ELSE cf_email = dflt
 $ ENDIF
@@ -1602,7 +1636,7 @@ $ ENDIF
 $ dflt = "''cf_email'"
 $ rp = "Perl administrator e-mail address [''dflt'] "
 $ GOSUB myread
-$ IF ans
+$ IF ans .nes. ""
 $ THEN perladmin = ans
 $ ELSE perladmin = dflt
 $ ENDIF
@@ -1669,13 +1703,115 @@ $   IF ans.eqs."socketshr" then has_socketshr = "T"
 $ endif
 $!
 $!
+$! Ask if they want to build with VMS_DEBUG perl
+$ echo ""
+$ echo "Perl can be built to run under the VMS debugger."
+$ echo "You should only select this option if you are debugging"
+$ echo "perl itself.  This can be a useful feature if you are "
+$ echo "embedding perl in a program."
+$ dflt = "n"
+$ rp = "Build a VMS-DEBUG version of Perl? [''dflt'] "
+$ GOSUB myread
+$ IF ans.eqs."" then ans = dflt
+$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y"
+$ THEN
+$   use_vmsdebug_perl = "Y"
+$   macros = macros + """__DEBUG__=1"","
+$ ELSE
+$   use_vmsdebug_perl = "N"
+$ ENDIF
+$!
+$! Ask if they want to build with DEBUGGING
+$ echo ""
+$ echo "Perl can be built with extra runtime debugging enabled. This
+$ echo "enables the -D switch, at the cost of some performance. It
+$ echo "was mandatory on perl 5.005 and before on VMS, but is now
+$ echo "optional. If you don't generally use it you should probably
+$ echo "leave this off and gain a bit of extra speed.
+$ dflt = "y"
+$ rp = "Build a DEBUGGING version of Perl? [''dflt'] "
+$ GOSUB myread
+$ IF ans.eqs."" then ans = dflt
+$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y"
+$ THEN
+$   use_debugging_perl = "Y"
+$ ELSE
+$   use_debugging_perl = "N"
+$ ENDIF
+$!
+$! Ask if they want to build with MULTIPLICITY
+$ echo ""
+$ echo "The perl interpreter engine can be built in a way that makes it
+$ echo "possible for a program that embeds perl into it (and yes, you can
+$ echo "do that--it's pretty keen) to have multiple perl interpreters active
+$ echo "at once. There is some performance overhead, however, so you
+$ echo "probably don't want to choose this unless you're going to be doing
+$ echo "funky perl embedding."
+$ dflt = "n"
+$ rp = "Build with MULTIPLICITY? [''dflt'] "
+$ GOSUB myread
+$ if ans.eqs."" then ans = dflt
+$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y"
+$ THEN
+$   use_multiplicity="Y"
+$ ELSE
+$   use_multiplicity="N"
+$ ENDIF
+$!
+$! Ask if they want to build with 64-bit support
+$ IF (Archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
+$ THEN
+$   dflt = use64bitint
+$   echo ""
+$   echo "You can have native 64-bit long integers.
+$   echo ""
+$   echo "Perl can be built to take advantage of 64-bit integer types
+$   echo "on some systems, which provide a much larger range for perl's 
+$   echo "mathematical operations.  (Note that does *not* enable 64-bit 
+$   echo "fileops at the moment, as Dec C doesn't do that yet)."
+$   echo "Choosing this option will most probably introduce binary incompatibilities.
+$   echo ""
+$   echo "If this doesn't make any sense to you, just accept the default ''dflt'.
+$   rp = "Try to use 64-bit integers, if available? [''dflt'] "
+$   GOSUB myread
+$   IF ans .EQS. "" THEN ans = dflt
+$   IF (f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE")) .EQS. "Y")
+$   THEN
+$     use64bitint="Y"
+$   ELSE
+$     use64bitint="N"
+$   ENDIF
+$   IF (use64bitint)
+$   THEN
+$     dflt = use64bitall
+$     echo ""
+$     echo "Since you chose 64-bitness you may want to try maximal 64-bitness.
+$     echo "What you have chosen is minimal 64-bitness which means just enough
+$     echo "to get 64-bit integers.  The maximal means using as much 64-bitness
+$     echo "as is possible on the platform.  This in turn means even more binary
+$     echo "incompatibilities.  On the other hand, your platform may not have
+$     echo "any more maximal 64-bitness than what you already have chosen.
+$     echo ""
+$     echo "If this doesn't make any sense to you, just accept the default ''dflt'.
+$     rp = "Try to use full 64-bit support, if available? [''dflt'] "
+$     GOSUB myread
+$     IF ans .EQS. "" THEN ans = dflt
+$     IF (f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE")) .EQS. "Y")
+$     THEN
+$       use64bitall="Y"
+$     ELSE
+$       use64bitall="N"
+$     ENDIF
+$   ENDIF
+$ ENDIF ! AXP && >= 7.1
+$!
 $! Ask about threads, if appropriate
 $ if (Using_Dec_C.eqs."Yes")
 $ THEN
+$   echo ""
 $   echo "This version of Perl can be built with threads. While really nifty,
 $   echo "they are a beta feature, and there is a speed penalty for perl
 $   echo "programs if you build with threads *even if you don't use them*
-$   echo ""
 $   dflt = "n"
 $   rp = "Build with threads? [''dflt'] "
 $   GOSUB myread
@@ -1683,6 +1819,32 @@ $   if ans.eqs."" then ans = dflt
 $   if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y")
 $   THEN
 $     use_threads="T"
+$!
+$     ! Shall we do the 5.005-stype threads, or IThreads?
+$     echo "As of 5.5.640, Perl has two different internal threading
+$     echo "implementations, the 5.005 version (5005threads) and an
+$     echo "interpreter-based version (ithreads) that has one
+$     echo "interpreter per thread.  Both are very experimental.  This
+$     echo "arrangement exists to help developers work out which one
+$     echo "is better.
+$     echo "
+$     echo "If you're a casual user, you probably don't want
+$     echo "interpreter-threads at this time.  There doesn't yet exist
+$     echo "a way to create threads from within Perl in this model,
+$     echo "i.e., ""use Thread;"" will NOT work.
+$     echo "
+$     dflt = "n"
+$     rp = "Build with Interpreter threads? [''dflt']
+$     GOSUB myread
+$     if ans.eqs."" then ans = dflt
+$     if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y")
+$     THEN
+$       use_ithreads="Y"
+$       use_5005_threads="N"
+$     ELSE
+$       use_ithreads="N"
+$       use_5005_threads="Y"
+$     ENDIF
 $     ! Are they on VMS 7.1 on an alpha?
 $     if (Archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
 $     THEN
@@ -1695,7 +1857,6 @@ $       echo "all the threads in a program, even on a single-processor
 $       echo "machine. Unfortunately this feature isn't safe on an
 $       echo "unpatched 7.1 system. (Several OS patches were required when
 $       echo "this procedure was written)
-$       echo ""
 $       dflt = "n"
 $       rp = "Enable multiple kernel threads and upcalls? [''dflt'] "
 $       gosub myread
@@ -1707,27 +1868,87 @@ $       ENDIF
 $     ENDIF
 $   ENDIF
 $ ENDIF
+$ if archname .eqs. "VMS_AXP"
+$ then
 $!
-$! Pre-load %ENV?
+$! Case sensitive?
 $ echo ""
-$ echo "Because of the way perl fetches the list of logical names
-$ echo "for the %ENV hash (we spawn a subprocess that does a
-$ echo "SHOW LOGICALS *, which is expensive), we defer fetching it
-$ echo "until the first time a program iterates over the %ENV hash.
-$ echo "This means things like 'exists($ENV{'SYS$MANAGER'})' will
-$ echo "return false unless you've already accessed $ENV{SYS$MANAGER}
-$ echo "or done something like a keys %ENV."
+$ echo "By default, perl (and pretty much everything else on VMS) uses
+$ echo "case-insensitive linker symbols. Which is to say, when the
+$ echo "underlying C code makes a call to a routine called Perl_foo in
+$ echo "the source, the name in the object modules or shareable images
+$ echo "is really PERL_FOO. There are some packages that use an
+$ echo "embedded perl interpreter that instead require case-sensitive
+$ echo "linker symbols.
 $ echo ""
-$ echo "If you choose, perl can populate the %ENV hash at startup.
-$ echo "This will exact both a memory penalty (to store the keys) and
-$ echo "a time penalty (to spawn the subprocess) every time you invoke
-$ echo "perl. Depending on your system, this might not be a big deal.
+$ echo "If you have no idea what this means, and don't have
+$ echo "any program requiring anything, choose the default.
+$ dflt = be_case_sensitive
+$ rp = "Case-sensitive symbols [''dflt'] "
+$ gosub myread
+$ if ans.eqs."" then ans="''dflt'"
+$ be_case_sensitive = "''ans'"
+$!
+$! IEEE math?
 $ echo ""
-$ dflt = "n"
-$ rp = "Populate %ENV at startup time? [''dflt'] "
+$ echo "Perl normally uses G_FLOAT format floating point numbers
+$ echo "internally, as do most things on VMS. You can, however, build
+$ echo "with IEEE floating point numbers instead if you need to.
+$ dflt = use_ieee_math
+$ rp = "Use IEEE math [''dflt'] "
+$ gosub myread
+$ if ans.eqs."" then ans="''dflt'"
+$ use_ieee_math = "''ans'"
+$ endif
+$! CC Flags
+$ echo ""
+$ echo "You can, if you need to, pass extra flags on to the C
+$ echo "compiler. In general you should only do this if you really,
+$ echo "really know what you're doing.
+$ dflt = user_c_flags
+$ rp = "Extra C flags [''dflt'] "
+$ gosub myread
+$ if ans.eqs."" then ans="''dflt'"
+$ user_c_flags = "''ans'"
+$!
+$! Ask whether they want to use secure logical translation when tainting
+$ echo ""
+$ echo "As Perl starts up, it checks several logical names, such as"
+$ echo "PERL5LIB and PERL_ENV_TABLES, which allow you to modify aspects"
+$ echo "of its behavior.  For additional security, you may limit this"
+$ echo "process to executive- and kernel-mode translation when tainting"
+$ echo "is enabled.  In this case, logical names normally skipped when"
+$ echo "tainting is enabled (e.g. PERL5OPTS) are translated as well."
+$ echo "If you do not choose to do this, the usual order of access modes"
+$ echo "is used for logical name translation."
+$ echo ""
+$ echo "This restriction does not apply to the %ENV hash or to implicit"
+$ echo "logical name translation during parsing of file specifications;"
+$ echo "these always use the normal sequence of access modes for logical"
+$ echo "name translation."
+$ dflt = "y"
+$ rp = "Use secure logical name translation? [''dflt'] "
 $ GOSUB myread
 $ if ans.eqs."" then ans="''dflt'"
-$ preload_env = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE"))
+$ d_secintgenv = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE"))
+$!
+$! Ask whether they want to default filetypes
+$ echo ""
+$ echo "When you pass the name of a program to Perl on the command line,"
+$ echo "it generally doesn't supply any defaults unless the -S command"
+$ echo "line switch is specified.  In keeping with the VMS tradition of"
+$ echo "default file types, however, you can configure Perl to try default"
+$ echo "file types of nothing, .pl, and .com, in that order (e.g. typing"
+$ echo """$ perl foo"" would cause Perl to look for foo., then foo.pl, and"
+$ echo "finally foo.com)."
+$ echo ""
+$ echo "This is currently broken in some configurations. Only enable it if
+$ echo "you know what you're doing. "
+$ dflt = "N"
+$ rp = "Always use default file types? [''dflt'] "
+$ GOSUB myread
+$ if ans.eqs."" then ans="''dflt'"
+$ d_alwdeftype = f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE"))
 $!
 $! Ask if they want to use perl's memory allocator
 $ echo ""
@@ -1735,12 +1956,11 @@ $ echo "Perl has a built-in memory allocator that's tuned for perl's
 $ echo "normal memory usage. It's oftentimes better than the standard
 $ echo "system memory allocator. It also has the advantage of providing
 $ echo "memory allocation statistics, if you choose to enable them.
-$ echo ""
 $ dflt = "n"
 $ rp = "Build with perl's memory allocator? [''dflt'] "
 $ GOSUB myread
 $ if ans.eqs."" then ans="''dflt'"
-$ mymalloc = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE"))
+$ mymalloc = f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE"))
 $ if mymalloc.eqs."Y"
 $ THEN
 $   if use_debugging_perl.eqs."Y"
@@ -1749,12 +1969,11 @@ $     echo ""
 $     echo "Perl can keep statistics on memory usage if you choose to use
 $     echo "them. This is useful for debugging, but does have some
 $     echo "performance overhead.
-$     echo ""
 $     dflt = "n"
 $     rp = "Do you want the debugging memory allocator? [''dflt'] "
 $     gosub myread
 $     if ans.eqs."" then ans="''dflt'"
-$     use_debugmalloc = f$extract(0, 1, f$edit(ans, "TRIM,COMPRESS,UPCASE"))
+$     use_debugmalloc = f$extract(0, 1, f$edit(ans, "COLLAPSE,UPCASE"))
 $   ENDIF
 $   ! Check which memory allocator we want
 $   echo ""
@@ -1765,7 +1984,6 @@ $   echo "larger allocations), and PACK_MALLOC (which is optimized to save
 $   echo "memory for smaller allocations). They're all good, but if your
 $   echo "usage tends towards larger chunks use TWO_POT, otherwise use
 $   echo "PACK_MALLOC."
-$   echo ""
 $   dflt = "DEFAULT"
 $   rp = "Memory allocator (DEFAULT, TWO_POT, PACK_MALLOC) [''dflt'] "
 $   GOSUB myread
@@ -1779,22 +1997,56 @@ $ echo ""
 $ echo "It's time to specify which modules you want to build into
 $ echo "perl. Most of these are standard and should be chosen, though
 $ echo "you might, for example, want to build GDBM_File instead of
-$ echo "SDBM_File if you have the GDBM library built on your machine
+$ echo "SDBM_File if you have the GDBM library built on your machine.
+$ echo "Whatever you do, make sure the re module is first or things will
+$ echo "break badly"
 $ echo "
 $ echo "Which modules do you want to build into perl?"
-$ dflt = "Fcntl Errno IO Opcode Dumper attrs re Stdio DCLsym B SDBM_File"
+$! dflt = "Fcntl Errno File::Glob IO Opcode Byteloader Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File"
+$ dflt = "re Fcntl Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs VMS::Stdio VMS::DCLsym B SDBM_File Thread Sys::Hostname"
 $ if Using_Dec_C.eqs."Yes"
 $ THEN
 $   dflt = dflt + " POSIX"
-$   if Use_Threads.eqs."T"
-$   THEN
-$     dflt = dflt + " Thread"
-$   ENDIF
 $ ENDIF
 $ rp = "[''dflt'] "
 $ GOSUB myread
 $ if ans.eqs."" then ans = "''dflt'"
+$ a = ""
+$ j = 0
+$ xloop1:
+$   x = f$elem(j," ",ans)
+$   j = j + 1
+$   if x .eqs. " " then goto exloop1
+$   xloop2:
+$       k = f$locate("::",x)
+$       if k .ge. f$len(x) then goto exloop2
+$       x = f$extract(0,k,x) + "/" + f$extract(k+2,f$len(x)-2,x)
+$   goto xloop2
+$   exloop2:
+$   a = a + " " + x
+$ goto xloop1
+$ exloop1:
+$ ans = f$edit(a,"trim")
+$!
+$ a = ""
+$ j = 0
+$ xloop3:
+$   x = f$elem(j," ",dflt)
+$   j = j + 1
+$   if x .eqs. " " then goto exloop3
+$   xloop4:
+$       k = f$locate("::",x)
+$       if k .ge. f$len(x) then goto exloop4
+$       x = f$extract(0,k,x) + "/" + f$extract(k+2,f$len(x)-2,x)
+$   goto xloop4
+$   exloop4:
+$   a = a + " " + x
+$ goto xloop3
+$ exloop3:
+$ dflt = f$edit(a,"trim")
+$!
 $ extensions = "''ans'"
+$ perl_known_extensions = "''dflt'"
 $!
 $! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
 $ echo ""
@@ -1821,9 +2073,9 @@ $Build_probe:
 $ build = F$ELEMENT(n,"/",builders)
 $ probe  = F$ELEMENT(n,"!",probers)
 $ echo "Testing whether you have ''build' on your system..."
-$ SET NOON                                        !sorry :-(
-$ ON CONTROL_Y THEN GOTO Reenable_messages_build  !sorry :-(
-$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT          !sorry :-(
+$ SET NOON
+$ ON CONTROL_Y THEN GOTO Reenable_messages_build
+$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT
 $ 'build' 'probe'
 $ IF ($SEVERITY .EQ. 1)
 $ THEN 
@@ -1838,9 +2090,9 @@ $   IF (.NOT. default_set) THEN dflt = build
 $ ELSE 
 $   echo "Nope."
 $ ENDIF
-$Reenable_messages_build:                         !hope you made it here :-)
-$ SET MESSAGE 'messages'                          !hope you made it here :-)
-$ SET ON                                          !hope you made it here :-)
+$Reenable_messages_build:
+$ SET MESSAGE 'messages'
+$ SET ON
 $ n = n + 1
 $ IF (n .LT. max_build) THEN GOTO Build_probe
 $!
@@ -1912,13 +2164,13 @@ $! echo4 "Updating makefile..."
 $!
 $ IF (make .EQS. "MMS").OR.(make .EQS. "MMK")
 $ THEN 
-$   makefile    = "" 		 !wrt MANIFEST dir
-$   UUmakefile  = "DESCRIP.MMS"  !wrt CWD dir
-$   DEFmakefile = "DESCRIP.MMS"  !wrt DEF dir (?)
+$   makefile    = "" 		   !wrt MANIFEST dir
+$   UUmakefile  = "[-]DESCRIP.MMS" !wrt CWD dir
+$   DEFmakefile = "DESCRIP.MMS"    !wrt DEF dir (?)
 $ ELSE
-$   makefile    = " -f [.VMS]Makefile." !wrt MANIFEST dir
-$   UUmakefile  = "[-.VMS]Makefile."    !wrt CWD dir
-$   DEFmakefile = "[-.VMS]Makefile."    !wrt DEF dir (?)
+$   makefile    = " -f Makefile."  !wrt MANIFEST dir
+$   UUmakefile  = "[-]Makefile."   !wrt CWD dir
+$   DEFmakefile = "Makefile."      !wrt DEF dir (?)
 $ ENDIF
 $!
 $ IF macros.NES."" 
@@ -1927,21 +2179,108 @@ $   tmp = F$LENGTH(macros)
 $   macros = F$EXTRACT(0,(tmp-1),macros) !miss trailing comma
 $   macros = "/macro=(" + macros  + ")"
 $ ENDIF
+$! Build up the extra C flags
+$!
+$ if use_ieee_math
+$ then
+$   extra_flags = "''extra_flags'" + "/float=ieee/ieee=denorm_results"
+$ endif
+$ if be_case_sensitive
+$ then
+$   extra_flags = "''extra_flags'" + "/Names=As_Is"
+$ endif
+$ extra_flags = "''extra_flags'" + "''user_c_flags'"
 $!
 $! Invoke the subconfig piece
 $!
 $ echo ""
-$ echo4 "Checking the C Run time library"
+$ echo4 "Checking the C run-time library"
 $ dflt = F$ENVIRONMENT("DEFAULT")
 $ SET DEFAULT [-.vms]
 $ @subconfigure
 $ SET DEFAULT 'dflt
 $!
+$!  Warn of dangerous symbols or logical names
+$!
+$Bad_environment: SUBROUTINE
+$   Bad_env = ""
+$   IF p2 .eqs. "SYMBOL"
+$   THEN
+$     IF f$type('p1) .nes. "" THEN  Bad_env := SYMBOL
+$   ELSE
+$     IF f$trnlnm(p1) .nes. "" THEN Bad_env := LOGICAL
+$   ENDIF
+$   IF Bad_env .eqs. "SYMBOL" .or. Bad_env .eqs. "LOGICAL"
+$   THEN
+$     IF f$search("config.msg") .nes. ""
+$     THEN
+$       OPEN/APPEND CONFIG config.msg
+$     ELSE
+$       OPEN/WRITE CONFIG config.msg
+$     ENDIF
+$     IF Bad_env .eqs. "SYMBOL"
+$     THEN
+$       WRITE CONFIG ""
+$       WRITE CONFIG "Symbol name ''p1' found in environment as " + &p1
+$       WRITE CONFIG " delete before building ''package' via:"
+$       WRITE CONFIG "     $ DELETE/SYMBOL/GLOBAL ''p1'"
+$       IF f$locate("""",&p1) .ge. f$length(&p1)
+$       THEN
+$       WRITE CONFIG " after building, testing, and installing ''package'
+$       WRITE CONFIG " restore the symbol with:"
+$       WRITE CONFIG "     $ ''p1' == """ + &p1 + """"
+$       ENDIF
+$     ENDIF
+$     IF Bad_env .eqs. "LOGICAL"
+$     THEN
+$       WRITE CONFIG ""
+$       WRITE CONFIG "Logical name ''p1' found in environment as " + f$trnlnm(p1)
+$       WRITE CONFIG " deassign before building ''package'"
+$     ENDIF
+$     CLOSE CONFIG
+$     Bad_env = ""
+$   ENDIF
+$ EXIT
+$ ENDSUBROUTINE ! Bad_environment
+$ echo ""
+$ echo4 "%Config-I-VMS, Checking for dangerous pre-existing global symbols and logical names."
+$ CALL Bad_environment "TMP"
+$ CALL Bad_environment "LIB"
+$ CALL Bad_environment "T"
+$ CALL Bad_environment "FOO"
+$ CALL Bad_environment "EXT"
+$ CALL Bad_environment "TEST" "SYMBOL"
+$ IF f$search("config.msg") .eqs. "" THEN echo "OK."
+$!
 $! %Config-I-VMS, write perl_setup.com here
 $!
+$ IF (.NOT.perl_symbol)
+$ THEN
+$   file_2_find = "[-]''packageup'.cld"
+$   echo ""
+$   echo4 "%Config-I-VMS, The perl.cld file is now being written..."
+$   OPEN/WRITE CONFIG 'file_2_find'
+$   ext = ".exe"
+$   IF ((sharedperl) .AND. (f$getsyi("ARCH_NAME") .NES. "VAX")) THEN ext := .AXE
+$   IF (use_vmsdebug_perl)
+$   THEN
+$     WRITE CONFIG "define verb dbgperl"
+$     WRITE CONFIG F$FAO("!_!AS","image ''packageup'_root:[000000]dbgperl''ext'")
+$     WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
+$     WRITE CONFIG ""
+$     WRITE CONFIG "define verb perl"
+$     WRITE CONFIG F$FAO("!_!AS","image ''packageup'_root:[000000]ndbgPerl''ext'")
+$     WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
+$   ELSE
+$     WRITE CONFIG "define verb perl"
+$     WRITE CONFIG F$FAO("!_!AS","image ''packageup'_root:[000000]perl''ext'")
+$     WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
+$   ENDIF
+$   CLOSE CONFIG
+$ ENDIF ! (.NOT.perl_symbol)
 $ echo ""
 $ echo4 "%Config-I-VMS, The perl_setup.com file is now being written..."
-$ file_2_find = "[-.vms]perl_setup.com"
+$ file_2_find = "[-]perl_setup.com"
 $ OPEN/WRITE CONFIG 'file_2_find'
 $ WRITE CONFIG "$!"
 $ WRITE CONFIG "$! Perl_Setup.com    ''cf_time'"
@@ -1952,11 +2291,42 @@ $ ELSE
 $ WRITE CONFIG "$! This perl configured & administered by ''perladmin'"
 $ ENDIF
 $ WRITE CONFIG "$!"
+$ prefix = prefix - "000000."
 $ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN -
     prefix = prefix - "]" + ".]" 
 $ WRITE CONFIG "$ define/translation=concealed Perl_Root ''prefix'"
-$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]Perl"
-$ WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr.Exe"
+$ WRITE CONFIG "$ ext = "".exe"""
+$ IF sharedperl .EQS. "Y"
+$ THEN
+$   write config "$ if f$getsyi(""ARCH_NAME"") .nes. ""VAX"" then ext = "".AXE"""
+$ ENDIF
+$ IF (perl_symbol)
+$ THEN
+$   IF (use_vmsdebug_perl)
+$   THEN
+$     WRITE CONFIG "$ dbgperl :== $Perl_Root:[000000]dbgPerl'ext'"
+$     WRITE CONFIG "$ perl    :== $Perl_Root:[000000]ndbgPerl'ext'"
+$     WRITE CONFIG "$ define dbgPerlShr Perl_Root:[000000]dbgPerlShr'ext'"
+$   ELSE
+$     WRITE CONFIG "$ perl :== $Perl_Root:[000000]Perl'ext'"
+$     WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr'ext'"
+$   ENDIF
+$ ELSE ! .NOT.perl_symbol
+$   IF (use_vmsdebug_perl)
+$   THEN
+$     WRITE CONFIG "$ define dbgPerlShr Perl_Root:[000000]dbgPerlShr'ext'"
+$   ELSE
+$     WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr'ext'"
+$   ENDIF
+$   IF perl_verb .EQS. "PROCESS"
+$   THEN
+$     WRITE CONFIG "$ set command ''packagup'_ROOT:[000000]''packageup'.CLD"
+$   ENDIF
+$ ENDIF !  perl_symbol
+$ WRITE CONFIG "$ define/nolog pod2text Perl_Root:[lib.pod]pod2text.com"
+$ WRITE CONFIG "$ define/nolog pod2html Perl_Root:[lib.pod]pod2html.com"
+$ WRITE CONFIG "$ define/nolog pod2man  Perl_Root:[lib.pod]pod2man.com"
+$!
 $ IF (tzneedset)
 $ THEN
 $ WRITE CONFIG "$ define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"
@@ -1966,7 +2336,40 @@ $ ENDIF
 $ WRITE CONFIG "$!"
 $ WRITE CONFIG "$! Symbols for commonly used scripts:"
 $ WRITE CONFIG "$!"
-$ WRITE CONFIG "$ Perldoc == ""'"+"'Perl' Perl_Root:[lib.pod]Perldoc.com -t"""
+$ IF (perl_symbol)
+$ THEN
+$   WRITE CONFIG "$ Perldoc  == ""'"+"'Perl' Perl_Root:[lib.pod]Perldoc.com -t"""
+$   WRITE CONFIG "$ pod2text == ""'"+"'Perl' pod2text"""
+$   WRITE CONFIG "$ pod2html == ""'"+"'Perl' pod2html"""
+$   WRITE CONFIG "$ pod2latex == ""'"+"'Perl' Perl_Root:[lib.pod]pod2latex.com"""
+$   WRITE CONFIG "$!pod2man  == ""'"+"'Perl' pod2man"""
+$   WRITE CONFIG "$!Perlbug  == ""'"+"'Perl' Perl_Root:[lib]Perlbug.com"""
+$   WRITE CONFIG "$ c2ph     == ""'"+"'Perl' Perl_Root:[utils]c2ph.com"""
+$   IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
+$   THEN
+$     WRITE CONFIG "$ dprofpp     == ""'"+"'Perl' Perl_Root:[utils]dprofpp.com"""
+$   ENDIF 
+$   WRITE CONFIG "$ h2ph     == ""'"+"'Perl' Perl_Root:[utils]h2ph.com"""
+$   WRITE CONFIG "$ h2xs     == ""'"+"'Perl' Perl_Root:[utils]h2xs.com"""
+$   WRITE CONFIG "$!perlcc   == ""'"+"'Perl' Perl_Root:[utils]perlcc.com"""
+$   WRITE CONFIG "$ splain   == ""'"+"'Perl' Perl_Root:[utils]splain.com"""
+$ ELSE
+$   WRITE CONFIG "$ Perldoc  == ""Perl Perl_Root:[lib.pod]Perldoc.com -t"""
+$   WRITE CONFIG "$ pod2text == ""Perl pod2text"""
+$   WRITE CONFIG "$ pod2html == ""Perl pod2html"""
+$   WRITE CONFIG "$ pod2latex == ""Perl Perl_Root:[lib.pod]pod2latex.com"""
+$   WRITE CONFIG "$!pod2man  == ""Perl pod2man"""
+$   WRITE CONFIG "$!Perlbug  == ""Perl Perl_Root:[lib]Perlbug.com"""
+$   WRITE CONFIG "$ c2ph     == ""Perl Perl_Root:[utils]c2ph.com"""
+$   IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
+$   THEN
+$     WRITE CONFIG "$ dprofpp     == ""Perl Perl_Root:[utils]dprofpp.com"""
+$   ENDIF 
+$   WRITE CONFIG "$ h2ph     == ""Perl Perl_Root:[utils]h2ph.com"""
+$   WRITE CONFIG "$ h2xs     == ""Perl Perl_Root:[utils]h2xs.com"""
+$   WRITE CONFIG "$!perlcc   == ""Perl Perl_Root:[utils]perlcc.com"""
+$   WRITE CONFIG "$ splain   == ""Perl Perl_Root:[utils]splain.com"""
+$ ENDIF
 $ CLOSE CONFIG
 $!
 $ echo  ""
@@ -1976,6 +2379,20 @@ $ echo  "-Config-I-VMS, Add that file (or an @ call to it) to your [SY]LOGIN.COM
 $ echo  "-Config-I-VMS, when you are satisfied with a successful compilation,"
 $ echo  "-Config-I-VMS, testing, and installation of your perl."
 $ echo  ""
+$ IF ((.NOT.perl_symbol) .AND. (perl_verb .EQS. "DCLTABLES"))
+$ THEN
+$   file_2_find = "[-]''packageup'_install.com"
+$   OPEN/WRITE CONFIG 'file_2_find
+$   WRITE CONFIG "$ set command perl /table=sys$common:[syslib]dcltables.exe -"
+$   WRITE CONFIG "    /output=sys$common:[syslib]dcltables.exe"
+$   WRITE CONFIG "$ install replace sys$common:[syslib]dcltables.exe"
+$   CLOSE CONFIG
+$   echo4 ""
+$   echo4 "%Config-I-VMS, In order to install the ''packageup' verb into DCLTABLES run:"
+$   echo4 "-Config-I-VMS, @ ''F$SEARCH(file_2_find)'"
+$   echo4 "-Config-I-VMS, after a successful build, test, and install.  Do so with CMKRNL privilege."
+$   echo4 ""
+$ ENDIF
 $!
 $!figure out where we "are" by parsing 'vms_default_directory_name' 
 $!
@@ -2009,6 +2426,15 @@ $ ENDIF
 $ echo4 " ''make'''makefile'", macros
 $ echo4 ""
 $!
+$ IF ( F$SEARCH("config.msg").NES."" ) 
+$ THEN
+$   echo "Hmm.  I also noted the following information while running:"
+$   echo ""
+$   type config.msg
+$   SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) config.msg
+$   DELETE/NOLOG/NOCONFIRM config.msg;
+$ ENDIF
+$!
 $Clean_up:
 $ IF (silent)
 $ THEN
diff --git a/contrib/perl5/configure.gnu b/contrib/perl5/configure.gnu
index fa465320940d..2ef8331833db 100755
--- a/contrib/perl5/configure.gnu
+++ b/contrib/perl5/configure.gnu
@@ -111,6 +111,14 @@ case "$ccflags" in
 '') ;;
 *) opts="$opts -Dccflags='$ccflags'";;
 esac
+case "$LDFLAGS" in
+'') ;;
+*) ldflags="$ldflags $LDFLAGS";;
+esac
+case "$ldflags" in
+'') ;;
+*) opts="$opts -Dldflags='$ldflags'";;
+esac
 
 # Don't use -s if they want verbose mode
 case "$verbose" in
diff --git a/contrib/perl5/cop.h b/contrib/perl5/cop.h
index 7d6730fb9660..e588675012ab 100644
--- a/contrib/perl5/cop.h
+++ b/contrib/perl5/cop.h
@@ -1,6 +1,6 @@
 /*    cop.h
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -10,15 +10,59 @@
 struct cop {
     BASEOP
     char *	cop_label;	/* label for this construct */
+#ifdef USE_ITHREADS
+    char *	cop_stashpv;	/* package line was compiled in */
+    char *	cop_file;	/* file name the following line # is from */
+#else
     HV *	cop_stash;	/* package line was compiled in */
     GV *	cop_filegv;	/* file the following line # is from */
+#endif
     U32		cop_seq;	/* parse sequence number */
     I32		cop_arybase;	/* array base this line was compiled with */
     line_t      cop_line;       /* line # of this command */
+    SV *	cop_warnings;	/* lexical warnings bitmask */
 };
 
 #define Nullcop Null(COP*)
 
+#ifdef USE_ITHREADS
+#  define CopFILE(c)		((c)->cop_file)
+#  define CopFILEGV(c)		(CopFILE(c) \
+				 ? gv_fetchfile(CopFILE(c)) : Nullgv)
+#  define CopFILE_set(c,pv)	((c)->cop_file = savepv(pv))	/* XXX */
+#  define CopFILESV(c)		(CopFILE(c) \
+				 ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv)
+#  define CopFILEAV(c)		(CopFILE(c) \
+				 ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav)
+#  define CopSTASHPV(c)		((c)->cop_stashpv)
+#  define CopSTASHPV_set(c,pv)	((c)->cop_stashpv = savepv(pv))	/* XXX */
+#  define CopSTASH(c)		(CopSTASHPV(c) \
+				 ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv)
+#  define CopSTASH_set(c,hv)	CopSTASHPV_set(c, HvNAME(hv))
+#  define CopSTASH_eq(c,hv)	(hv 					\
+				 && (CopSTASHPV(c) == HvNAME(hv)	\
+				     || (CopSTASHPV(c) && HvNAME(hv)	\
+					 && strEQ(CopSTASHPV(c), HvNAME(hv)))))
+#else
+#  define CopFILEGV(c)		((c)->cop_filegv)
+#  define CopFILEGV_set(c,gv)	((c)->cop_filegv = gv)
+#  define CopFILE_set(c,pv)	((c)->cop_filegv = gv_fetchfile(pv))
+#  define CopFILESV(c)		(CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv)
+#  define CopFILEAV(c)		(CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav)
+#  define CopFILE(c)		(CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch)
+#  define CopSTASH(c)		((c)->cop_stash)
+#  define CopSTASH_set(c,hv)	((c)->cop_stash = hv)
+#  define CopSTASHPV(c)		(CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch)
+#  define CopSTASHPV_set(c,pv)	CopSTASH_set(c, gv_stashpv(pv,GV_ADD))
+#  define CopSTASH_eq(c,hv)	(CopSTASH(c) == hv)
+#endif /* USE_ITHREADS */
+
+#define CopSTASH_ne(c,hv)	(!CopSTASH_eq(c,hv))
+#define CopLINE(c)		((c)->cop_line)
+#define CopLINE_inc(c)		(++CopLINE(c))
+#define CopLINE_dec(c)		(--CopLINE(c))
+#define CopLINE_set(c,l)	(CopLINE(c) = (l))
+
 /*
  * Here we have some enormously heavy (or at least ponderous) wizardry.
  */
@@ -34,12 +78,15 @@ struct block_sub {
     AV *	argarray;
     U16		olddepth;
     U8		hasargs;
+    U8		lval;		/* XXX merge lval and hasargs? */
 };
 
 #define PUSHSUB(cx)							\
 	cx->blk_sub.cv = cv;						\
 	cx->blk_sub.olddepth = CvDEPTH(cv);				\
-	cx->blk_sub.hasargs = hasargs;
+	cx->blk_sub.hasargs = hasargs;					\
+	cx->blk_sub.lval = PL_op->op_private &                          \
+	                      (OPpLVAL_INTRO|OPpENTERSUB_INARGS);
 
 #define PUSHFORMAT(cx)							\
 	cx->blk_sub.cv = cv;						\
@@ -48,35 +95,51 @@ struct block_sub {
 	cx->blk_sub.dfoutgv = PL_defoutgv;				\
 	(void)SvREFCNT_inc(cx->blk_sub.dfoutgv)
 
-#define POPSUB(cx)							\
-	{ struct block_sub cxsub;					\
-	  POPSUB1(cx);							\
-	  POPSUB2(); }
-
-#define POPSUB1(cx)							\
-	cxsub = cx->blk_sub;	/* because DESTROY may clobber *cx */
-
 #ifdef USE_THREADS
-#define POPSAVEARRAY() NOOP
+#  define POP_SAVEARRAY() NOOP
 #else
-#define POPSAVEARRAY()							\
+#  define POP_SAVEARRAY()						\
     STMT_START {							\
 	SvREFCNT_dec(GvAV(PL_defgv));					\
-	GvAV(PL_defgv) = cxsub.savearray;					\
+	GvAV(PL_defgv) = cx->blk_sub.savearray;				\
     } STMT_END
 #endif /* USE_THREADS */
 
-#define POPSUB2()							\
-	if (cxsub.hasargs) {						\
-	    POPSAVEARRAY();						\
-	    /* destroy arg array */					\
-	    av_clear(cxsub.argarray);					\
-	    AvREAL_off(cxsub.argarray);					\
+#ifdef USE_ITHREADS
+   /* junk in @_ spells trouble when cloning CVs, so don't leave any */
+#  define CLEAR_ARGARRAY()	av_clear(cx->blk_sub.argarray)
+#else
+#  define CLEAR_ARGARRAY()	NOOP
+#endif /* USE_ITHREADS */
+
+
+#define POPSUB(cx,sv)							\
+    STMT_START {							\
+	if (cx->blk_sub.hasargs) {					\
+	    POP_SAVEARRAY();						\
+	    /* abandon @_ if it got reified */				\
+	    if (AvREAL(cx->blk_sub.argarray)) {				\
+		SSize_t fill = AvFILLp(cx->blk_sub.argarray);		\
+		SvREFCNT_dec(cx->blk_sub.argarray);			\
+		cx->blk_sub.argarray = newAV();				\
+		av_extend(cx->blk_sub.argarray, fill);			\
+		AvFLAGS(cx->blk_sub.argarray) = AVf_REIFY;		\
+		PL_curpad[0] = (SV*)cx->blk_sub.argarray;		\
+	    }								\
+	    else {							\
+		CLEAR_ARGARRAY();					\
+	    }								\
 	}								\
-	if (cxsub.cv) {							\
-	    if (!(CvDEPTH(cxsub.cv) = cxsub.olddepth))			\
-		SvREFCNT_dec(cxsub.cv);					\
-	}
+	sv = (SV*)cx->blk_sub.cv;					\
+	if (sv && (CvDEPTH((CV*)sv) = cx->blk_sub.olddepth))		\
+	    sv = Nullsv;						\
+    } STMT_END
+
+#define LEAVESUB(sv)							\
+    STMT_START {							\
+	if (sv)								\
+	    SvREFCNT_dec(sv);						\
+    } STMT_END
 
 #define POPFORMAT(cx)							\
 	setdefout(cx->blk_sub.dfoutgv);					\
@@ -86,22 +149,28 @@ struct block_sub {
 struct block_eval {
     I32		old_in_eval;
     I32		old_op_type;
-    char *	old_name;
+    SV *	old_namesv;
     OP *	old_eval_root;
     SV *	cur_text;
 };
 
 #define PUSHEVAL(cx,n,fgv)						\
+    STMT_START {							\
 	cx->blk_eval.old_in_eval = PL_in_eval;				\
-	cx->blk_eval.old_op_type = PL_op->op_type;				\
-	cx->blk_eval.old_name = n;					\
-	cx->blk_eval.old_eval_root = PL_eval_root;				\
-	cx->blk_eval.cur_text = PL_linestr;
+	cx->blk_eval.old_op_type = PL_op->op_type;			\
+	cx->blk_eval.old_namesv = (n ? newSVpv(n,0) : Nullsv);		\
+	cx->blk_eval.old_eval_root = PL_eval_root;			\
+	cx->blk_eval.cur_text = PL_linestr;				\
+    } STMT_END
 
 #define POPEVAL(cx)							\
+    STMT_START {							\
 	PL_in_eval = cx->blk_eval.old_in_eval;				\
 	optype = cx->blk_eval.old_op_type;				\
-	PL_eval_root = cx->blk_eval.old_eval_root;
+	PL_eval_root = cx->blk_eval.old_eval_root;			\
+	if (cx->blk_eval.old_namesv)					\
+	    sv_2mortal(cx->blk_eval.old_namesv);			\
+    } STMT_END
 
 /* loop context */
 struct block_loop {
@@ -110,7 +179,12 @@ struct block_loop {
     OP *	redo_op;
     OP *	next_op;
     OP *	last_op;
+#ifdef USE_ITHREADS
+    void *	iterdata;
+    SV **	oldcurpad;
+#else
     SV **	itervar;
+#endif
     SV *	itersave;
     SV *	iterlval;
     AV *	iterary;
@@ -118,35 +192,44 @@ struct block_loop {
     IV		itermax;
 };
 
-#define PUSHLOOP(cx, ivar, s)						\
-	cx->blk_loop.label = PL_curcop->cop_label;				\
-	cx->blk_loop.resetsp = s - PL_stack_base;				\
+#ifdef USE_ITHREADS
+#  define CxITERVAR(c)							\
+	((c)->blk_loop.iterdata						\
+	 ? (CxPADLOOP(cx) 						\
+	    ? &((c)->blk_loop.oldcurpad)[(PADOFFSET)(c)->blk_loop.iterdata]	\
+	    : &GvSV((GV*)(c)->blk_loop.iterdata))			\
+	 : (SV**)NULL)
+#  define CX_ITERDATA_SET(cx,idata)					\
+	cx->blk_loop.oldcurpad = PL_curpad;				\
+	if ((cx->blk_loop.iterdata = (idata)))				\
+	    cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx));
+#else
+#  define CxITERVAR(c)		((c)->blk_loop.itervar)
+#  define CX_ITERDATA_SET(cx,ivar)					\
+	if ((cx->blk_loop.itervar = (SV**)(ivar)))			\
+	    cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx));
+#endif
+
+#define PUSHLOOP(cx, dat, s)						\
+	cx->blk_loop.label = PL_curcop->cop_label;			\
+	cx->blk_loop.resetsp = s - PL_stack_base;			\
 	cx->blk_loop.redo_op = cLOOP->op_redoop;			\
 	cx->blk_loop.next_op = cLOOP->op_nextop;			\
 	cx->blk_loop.last_op = cLOOP->op_lastop;			\
-	if (cx->blk_loop.itervar = (ivar))				\
-	    cx->blk_loop.itersave = SvREFCNT_inc(*cx->blk_loop.itervar);\
 	cx->blk_loop.iterlval = Nullsv;					\
 	cx->blk_loop.iterary = Nullav;					\
-	cx->blk_loop.iterix = -1;
+	cx->blk_loop.iterix = -1;					\
+	CX_ITERDATA_SET(cx,dat);
 
 #define POPLOOP(cx)							\
-	{ struct block_loop cxloop;					\
-	  POPLOOP1(cx);							\
-	  POPLOOP2(); }
-
-#define POPLOOP1(cx)							\
-	cxloop = cx->blk_loop;	/* because DESTROY may clobber *cx */	\
-	newsp = PL_stack_base + cxloop.resetsp;
-
-#define POPLOOP2()							\
-	SvREFCNT_dec(cxloop.iterlval);					\
-	if (cxloop.itervar) {						\
-	    sv_2mortal(*cxloop.itervar);				\
-	    *cxloop.itervar = cxloop.itersave;				\
+	SvREFCNT_dec(cx->blk_loop.iterlval);				\
+	if (CxITERVAR(cx)) {						\
+	    SV **s_v_p = CxITERVAR(cx);					\
+	    sv_2mortal(*s_v_p);						\
+	    *s_v_p = cx->blk_loop.itersave;				\
 	}								\
-	if (cxloop.iterary && cxloop.iterary != PL_curstack)		\
-	    SvREFCNT_dec(cxloop.iterary);
+	if (cx->blk_loop.iterary && cx->blk_loop.iterary != PL_curstack)\
+	    SvREFCNT_dec(cx->blk_loop.iterary);
 
 /* context common to subroutines, evals and loops */
 struct block {
@@ -185,8 +268,8 @@ struct block {
 	cx->blk_oldretsp	= PL_retstack_ix,			\
 	cx->blk_oldpm		= PL_curpm,				\
 	cx->blk_gimme		= gimme;				\
-	DEBUG_l( PerlIO_printf(PerlIO_stderr(), "Entering block %ld, type %s\n",	\
-		    (long)cxstack_ix, block_type[CxTYPE(cx)]); )
+	DEBUG_l( PerlIO_printf(Perl_debug_log, "Entering block %ld, type %s\n",	\
+		    (long)cxstack_ix, PL_block_type[CxTYPE(cx)]); )
 
 /* Exit a block (RETURN and LAST). */
 #define POPBLOCK(cx,pm) cx = &cxstack[cxstack_ix--],			\
@@ -197,8 +280,8 @@ struct block {
 	PL_retstack_ix	 = cx->blk_oldretsp,				\
 	pm		 = cx->blk_oldpm,				\
 	gimme		 = cx->blk_gimme;				\
-	DEBUG_l( PerlIO_printf(PerlIO_stderr(), "Leaving block %ld, type %s\n",		\
-		    (long)cxstack_ix+1,block_type[CxTYPE(cx)]); )
+	DEBUG_l( PerlIO_printf(Perl_debug_log, "Leaving block %ld, type %s\n",		\
+		    (long)cxstack_ix+1,PL_block_type[CxTYPE(cx)]); )
 
 /* Continue a block elsewhere (NEXT and REDO). */
 #define TOPBLOCK(cx) cx  = &cxstack[cxstack_ix],			\
@@ -212,7 +295,7 @@ struct block {
 struct subst {
     I32		sbu_iters;
     I32		sbu_maxiters;
-    I32		sbu_safebase;
+    I32		sbu_rflags;
     I32		sbu_oldsave;
     bool	sbu_once;
     bool	sbu_rxtainted;
@@ -227,7 +310,7 @@ struct subst {
 };
 #define sb_iters	cx_u.cx_subst.sbu_iters
 #define sb_maxiters	cx_u.cx_subst.sbu_maxiters
-#define sb_safebase	cx_u.cx_subst.sbu_safebase
+#define sb_rflags	cx_u.cx_subst.sbu_rflags
 #define sb_oldsave	cx_u.cx_subst.sbu_oldsave
 #define sb_once		cx_u.cx_subst.sbu_once
 #define sb_rxtainted	cx_u.cx_subst.sbu_rxtainted
@@ -243,7 +326,7 @@ struct subst {
 #define PUSHSUBST(cx) CXINC, cx = &cxstack[cxstack_ix],			\
 	cx->sb_iters		= iters,				\
 	cx->sb_maxiters		= maxiters,				\
-	cx->sb_safebase		= safebase,				\
+	cx->sb_rflags		= r_flags,				\
 	cx->sb_oldsave		= oldsave,				\
 	cx->sb_once		= once,					\
 	cx->sb_rxtainted	= rxtainted,				\
@@ -276,27 +359,77 @@ struct context {
 #define CXt_LOOP	3
 #define CXt_SUBST	4
 #define CXt_BLOCK	5
+#define CXt_FORMAT	6
 
 /* private flags for CXt_EVAL */
 #define CXp_REAL	0x00000100	/* truly eval'', not a lookalike */
+#define CXp_TRYBLOCK	0x00000200	/* eval{}, not eval'' or similar */
+
+#ifdef USE_ITHREADS
+/* private flags for CXt_LOOP */
+#  define CXp_PADVAR	0x00000100	/* itervar lives on pad, iterdata
+					   has pad offset; if not set,
+					   iterdata holds GV* */
+#  define CxPADLOOP(c)	(((c)->cx_type & (CXt_LOOP|CXp_PADVAR))		\
+			 == (CXt_LOOP|CXp_PADVAR))
+#endif
 
 #define CxTYPE(c)	((c)->cx_type & CXTYPEMASK)
-#define CxREALEVAL(c)	(((c)->cx_type & (CXt_EVAL|CXp_REAL)) == (CXt_EVAL|CXp_REAL))
+#define CxREALEVAL(c)	(((c)->cx_type & (CXt_EVAL|CXp_REAL))		\
+			 == (CXt_EVAL|CXp_REAL))
+#define CxTRYBLOCK(c)	(((c)->cx_type & (CXt_EVAL|CXp_TRYBLOCK))	\
+			 == (CXt_EVAL|CXp_TRYBLOCK))
 
 #define CXINC (cxstack_ix < cxstack_max ? ++cxstack_ix : (cxstack_ix = cxinc()))
 
 /* "gimme" values */
+
+/*
+=for apidoc AmU||G_SCALAR
+Used to indicate scalar context.  See C, C, and
+L.
+
+=for apidoc AmU||G_ARRAY
+Used to indicate array context.  See C, C and
+L.
+
+=for apidoc AmU||G_VOID
+Used to indicate void context.  See C and L.
+
+=for apidoc AmU||G_DISCARD
+Indicates that arguments returned from a callback should be discarded.  See
+L.
+
+=for apidoc AmU||G_EVAL
+
+Used to force a Perl C wrapper around a callback.  See
+L.
+
+=for apidoc AmU||G_NOARGS
+
+Indicates that no arguments are being sent to a callback.  See
+L.
+
+=cut
+*/
+
 #define G_SCALAR	0
 #define G_ARRAY		1
 #define G_VOID		128	/* skip this bit when adding flags below */
 
-/* extra flags for perl_call_* routines */
+/* extra flags for Perl_call_* routines */
 #define G_DISCARD	2	/* Call FREETMPS. */
 #define G_EVAL		4	/* Assume eval {} around subroutine call. */
 #define G_NOARGS	8	/* Don't construct a @_ array. */
 #define G_KEEPERR      16	/* Append errors to $@, don't overwrite it */
 #define G_NODEBUG      32	/* Disable debugging at toplevel.  */
 
+/* flag bits for PL_in_eval */
+#define EVAL_NULL	0	/* not in an eval */
+#define EVAL_INEVAL	1	/* some enclosing scope is an eval */
+#define EVAL_WARNONLY	2	/* used by yywarn() when calling yyerror() */
+#define EVAL_KEEPERR	4	/* set by Perl_call_sv if G_KEEPERR */
+
 /* Support for switching (stack and block) contexts.
  * This ensures magic doesn't invalidate local stack and cx pointers.
  */
@@ -321,7 +454,7 @@ struct stackinfo {
     I32			si_type;	/* type of runlevel */
     struct stackinfo *	si_prev;
     struct stackinfo *	si_next;
-    I32 *		si_markbase;	/* where markstack begins for us.
+    I32			si_markoff;	/* offset where markstack begins for us.
 					 * currently used only with DEBUGGING,
 					 * but not #ifdef-ed for bincompat */
 };
@@ -333,9 +466,10 @@ typedef struct stackinfo PERL_SI;
 #define cxstack_max	(PL_curstackinfo->si_cxmax)
 
 #ifdef DEBUGGING
-#  define	SET_MARKBASE PL_curstackinfo->si_markbase = PL_markstack_ptr
+#  define	SET_MARK_OFFSET \
+    PL_curstackinfo->si_markoff = PL_markstack_ptr - PL_markstack
 #else
-#  define	SET_MARKBASE NOOP
+#  define	SET_MARK_OFFSET NOOP
 #endif
 
 #define PUSHSTACKi(type) \
@@ -351,16 +485,19 @@ typedef struct stackinfo PERL_SI;
 	AvFILLp(next->si_stack) = 0;					\
 	SWITCHSTACK(PL_curstack,next->si_stack);			\
 	PL_curstackinfo = next;						\
-	SET_MARKBASE;							\
+	SET_MARK_OFFSET;						\
     } STMT_END
 
 #define PUSHSTACK PUSHSTACKi(PERLSI_UNKNOWN)
 
+/* POPSTACK works with PL_stack_sp, so it may need to be bracketed by
+ * PUTBACK/SPAGAIN to flush/refresh any local SP that may be active */
 #define POPSTACK \
     STMT_START {							\
+	djSP;								\
 	PERL_SI *prev = PL_curstackinfo->si_prev;			\
 	if (!prev) {							\
-	    PerlIO_printf(PerlIO_stderr(), "panic: POPSTACK\n");	\
+	    PerlIO_printf(Perl_error_log, "panic: POPSTACK\n");		\
 	    my_exit(1);							\
 	}								\
 	SWITCHSTACK(PL_curstack,prev->si_stack);			\
diff --git a/contrib/perl5/cv.h b/contrib/perl5/cv.h
index 9605135ffc0d..adb424e8eaac 100644
--- a/contrib/perl5/cv.h
+++ b/contrib/perl5/cv.h
@@ -1,31 +1,32 @@
 /*    cv.h
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
  *
  */
 
-/* This structure much match the beginning of XPVFM */
+/* This structure much match XPVCV in B/C.pm and the beginning of XPVFM
+ * in sv.h  */
 
 struct xpvcv {
     char *	xpv_pv;		/* pointer to malloced string */
     STRLEN	xpv_cur;	/* length of xp_pv as a C string */
     STRLEN	xpv_len;	/* allocated size */
     IV		xof_off;	/* integer value */
-    double	xnv_nv;		/* numeric value, if any */
+    NV		xnv_nv;		/* numeric value, if any */
     MAGIC*	xmg_magic;	/* magic for scalar array */
     HV*		xmg_stash;	/* class package */
 
     HV *	xcv_stash;
     OP *	xcv_start;
     OP *	xcv_root;
-    void      (*xcv_xsub) _((CV* _CPERLproto));
+    void	(*xcv_xsub) (pTHXo_ CV*);
     ANY		xcv_xsubany;
     GV *	xcv_gv;
-    GV *	xcv_filegv;
-    long	xcv_depth;		/* >= 2 indicates recursive call */
+    char *	xcv_file;
+    long	xcv_depth;	/* >= 2 indicates recursive call */
     AV *	xcv_padlist;
     CV *	xcv_outside;
 #ifdef USE_THREADS
@@ -35,6 +36,16 @@ struct xpvcv {
     cv_flags_t	xcv_flags;
 };
 
+/*
+=for apidoc AmU||Nullcv
+Null CV pointer.
+
+=for apidoc Am|HV*|CvSTASH|CV* cv
+Returns the stash of the CV.
+
+=cut
+*/
+
 #define Nullcv Null(CV*)
 
 #define CvSTASH(sv)	((XPVCV*)SvANY(sv))->xcv_stash
@@ -43,7 +54,8 @@ struct xpvcv {
 #define CvXSUB(sv)	((XPVCV*)SvANY(sv))->xcv_xsub
 #define CvXSUBANY(sv)	((XPVCV*)SvANY(sv))->xcv_xsubany
 #define CvGV(sv)	((XPVCV*)SvANY(sv))->xcv_gv
-#define CvFILEGV(sv)	((XPVCV*)SvANY(sv))->xcv_filegv
+#define CvFILE(sv)	((XPVCV*)SvANY(sv))->xcv_file
+#define CvFILEGV(sv)	(gv_fetchfile(CvFILE(sv))
 #define CvDEPTH(sv)	((XPVCV*)SvANY(sv))->xcv_depth
 #define CvPADLIST(sv)	((XPVCV*)SvANY(sv))->xcv_padlist
 #define CvOUTSIDE(sv)	((XPVCV*)SvANY(sv))->xcv_outside
@@ -62,6 +74,7 @@ struct xpvcv {
 				   (esp. useful for special XSUBs) */
 #define CVf_METHOD	0x0040	/* CV is explicitly marked as a method */
 #define CVf_LOCKED	0x0080	/* CV locks itself or first arg on entry */
+#define CVf_LVALUE	0x0100  /* CV return value can be used as lvalue */
 
 #define CvCLONE(cv)		(CvFLAGS(cv) & CVf_CLONE)
 #define CvCLONE_on(cv)		(CvFLAGS(cv) |= CVf_CLONE)
@@ -75,9 +88,11 @@ struct xpvcv {
 #define CvANON_on(cv)		(CvFLAGS(cv) |= CVf_ANON)
 #define CvANON_off(cv)		(CvFLAGS(cv) &= ~CVf_ANON)
 
+#ifdef PERL_XSUB_OLDSTYLE
 #define CvOLDSTYLE(cv)		(CvFLAGS(cv) & CVf_OLDSTYLE)
 #define CvOLDSTYLE_on(cv)	(CvFLAGS(cv) |= CVf_OLDSTYLE)
 #define CvOLDSTYLE_off(cv)	(CvFLAGS(cv) &= ~CVf_OLDSTYLE)
+#endif
 
 #define CvUNIQUE(cv)		(CvFLAGS(cv) & CVf_UNIQUE)
 #define CvUNIQUE_on(cv)		(CvFLAGS(cv) |= CVf_UNIQUE)
@@ -95,6 +110,10 @@ struct xpvcv {
 #define CvLOCKED_on(cv)		(CvFLAGS(cv) |= CVf_LOCKED)
 #define CvLOCKED_off(cv)	(CvFLAGS(cv) &= ~CVf_LOCKED)
 
+#define CvLVALUE(cv)		(CvFLAGS(cv) & CVf_LVALUE)
+#define CvLVALUE_on(cv)		(CvFLAGS(cv) |= CVf_LVALUE)
+#define CvLVALUE_off(cv)	(CvFLAGS(cv) &= ~CVf_LVALUE)
+
 #define CvEVAL(cv)		(CvUNIQUE(cv) && !SvFAKE(cv))
 #define CvEVAL_on(cv)		(CvUNIQUE_on(cv),SvFAKE_off(cv))
 #define CvEVAL_off(cv)		CvUNIQUE_off(cv)
diff --git a/contrib/perl5/deb.c b/contrib/perl5/deb.c
index ad26cd6e18f8..441487f88eff 100644
--- a/contrib/perl5/deb.c
+++ b/contrib/perl5/deb.c
@@ -1,6 +1,6 @@
 /*    deb.c
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -13,70 +13,81 @@
  */
 
 #include "EXTERN.h"
+#define PERL_IN_DEB_C
 #include "perl.h"
 
+#if defined(PERL_IMPLICIT_CONTEXT)
 void
-deb(const char *pat, ...)
+Perl_deb_nocontext(const char *pat, ...)
 {
 #ifdef DEBUGGING
-    dTHR;
+    dTHX;
     va_list args;
-    register I32 i;
-    GV* gv = PL_curcop->cop_filegv;
-
-#ifdef USE_THREADS
-    PerlIO_printf(Perl_debug_log, "0x%lx (%s:%ld)\t",
-		  (unsigned long) thr,
-		  SvTYPE(gv) == SVt_PVGV ? SvPVX(GvSV(gv)) : "",
-		  (long)PL_curcop->cop_line);
-#else
-    PerlIO_printf(Perl_debug_log, "(%s:%ld)\t",
-	SvTYPE(gv) == SVt_PVGV ? SvPVX(GvSV(gv)) : "",
-	(long)PL_curcop->cop_line);
-#endif /* USE_THREADS */
-    for (i=0; i"),
+		  (long)CopLINE(PL_curcop));
+#else
+    PerlIO_printf(Perl_debug_log, "(%s:%ld)\t", (file ? file : ""),
+		  (long)CopLINE(PL_curcop));
+#endif /* USE_THREADS */
+    (void) PerlIO_vprintf(Perl_debug_log, pat, *args);
 #endif /* DEBUGGING */
 }
 
 I32
-debstackptrs(void)
+Perl_debstackptrs(pTHX)
 {
 #ifdef DEBUGGING
     dTHR;
-    PerlIO_printf(Perl_debug_log, "%8lx %8lx %8ld %8ld %8ld\n",
-	(unsigned long)PL_curstack, (unsigned long)PL_stack_base,
-	(long)*PL_markstack_ptr, (long)(PL_stack_sp-PL_stack_base),
-	(long)(PL_stack_max-PL_stack_base));
-    PerlIO_printf(Perl_debug_log, "%8lx %8lx %8ld %8ld %8ld\n",
-	(unsigned long)PL_mainstack, (unsigned long)AvARRAY(PL_curstack),
-	(long)PL_mainstack, (long)AvFILLp(PL_curstack), (long)AvMAX(PL_curstack));
+    PerlIO_printf(Perl_debug_log,
+		  "%8"UVxf" %8"UVxf" %8"IVdf" %8"IVdf" %8"IVdf"\n",
+		  PTR2UV(PL_curstack), PTR2UV(PL_stack_base),
+		  (IV)*PL_markstack_ptr, (IV)(PL_stack_sp-PL_stack_base),
+		  (IV)(PL_stack_max-PL_stack_base));
+    PerlIO_printf(Perl_debug_log,
+		  "%8"UVxf" %8"UVxf" %8"UVuf" %8"UVuf" %8"UVuf"\n",
+		  PTR2UV(PL_mainstack), PTR2UV(AvARRAY(PL_curstack)),
+		  PTR2UV(PL_mainstack), PTR2UV(AvFILLp(PL_curstack)),
+		  PTR2UV(AvMAX(PL_curstack)));
 #endif /* DEBUGGING */
     return 0;
 }
 
 I32
-debstack(void)
+Perl_debstack(pTHX)
 {
 #ifdef DEBUGGING
     dTHR;
     I32 top = PL_stack_sp - PL_stack_base;
     register I32 i = top - 30;
-    I32 *markscan = PL_curstackinfo->si_markbase;
+    I32 *markscan = PL_markstack + PL_curstackinfo->si_markoff;
 
     if (i < 0)
 	i = 0;
@@ -86,8 +97,9 @@ debstack(void)
 	    break;
 
 #ifdef USE_THREADS
-    PerlIO_printf(Perl_debug_log, i ? "0x%lx    =>  ...  " : "0x%lx    =>  ",
-		  (unsigned long) thr);
+    PerlIO_printf(Perl_debug_log,
+		  i ? "0x%"UVxf"    =>  ...  " : "0x%lx    =>  ",
+		  PTR2UV(thr));
 #else
     PerlIO_printf(Perl_debug_log, i ? "    =>  ...  " : "    =>  ");
 #endif /* USE_THREADS */
diff --git a/contrib/perl5/doio.c b/contrib/perl5/doio.c
index 74544c950022..0121633c84bd 100644
--- a/contrib/perl5/doio.c
+++ b/contrib/perl5/doio.c
@@ -1,6 +1,6 @@
 /*    doio.c
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -15,6 +15,7 @@
  */
 
 #include "EXTERN.h"
+#define PERL_IN_DOIO_C
 #include "perl.h"
 
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
@@ -27,7 +28,7 @@
 #ifdef HAS_SHM
 #include 
 # ifndef HAS_SHMAT_PROTOTYPE
-    extern Shmat_t shmat _((int, char *, int));
+    extern Shmat_t shmat (int, char *, int);
 # endif
 #endif
 #endif
@@ -40,12 +41,6 @@
 #  endif
 #endif
 
-#ifdef I_FCNTL
-#include 
-#endif
-#ifdef I_SYS_FILE
-#include 
-#endif
 #ifdef O_EXCL
 #  define OPEN_EXCL O_EXCL
 #else
@@ -63,7 +58,12 @@
 
 #if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */
 # include 
-# include 
+# if defined(USE_SOCKS) && defined(I_SOCKS)
+#   include 
+# endif 
+# ifdef I_NETBSD
+#  include 
+# endif
 # ifndef ENOTSOCK
 #  ifdef I_NET_ERRNO
 #   include 
@@ -71,17 +71,18 @@
 # endif
 #endif
 
-/* Put this after #includes because  defines _XOPEN_*. */
-#ifndef Sock_size_t
-#  if _XOPEN_VERSION >= 5 || defined(_XOPEN_SOURCE_EXTENDED) || defined(__GLIBC__)
-#    define Sock_size_t Size_t
-#  else
-#    define Sock_size_t int
-#  endif
-#endif
+bool
+Perl_do_open(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
+	     int rawmode, int rawperm, PerlIO *supplied_fp)
+{
+    return do_open9(gv, name, len, as_raw, rawmode, rawperm,
+		    supplied_fp, Nullsv, 0);
+}
 
 bool
-do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp)
+Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
+	      int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs,
+	      I32 num_svs)
 {
     register IO *io = GvIOn(gv);
     PerlIO *saveifp = Nullfp;
@@ -92,9 +93,19 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
     int fd;
     int result;
     bool was_fdopen = FALSE;
+    bool in_raw = 0, in_crlf = 0, out_raw = 0, out_crlf = 0;
 
     PL_forkprocess = 1;		/* assume true if no fork */
 
+    if (PL_op && PL_op->op_type == OP_OPEN) {
+	/* set up disciplines */
+	U8 flags = PL_op->op_private;
+	in_raw = (flags & OPpOPEN_IN_RAW);
+	in_crlf = (flags & OPpOPEN_IN_CRLF);
+	out_raw = (flags & OPpOPEN_OUT_RAW);
+	out_crlf = (flags & OPpOPEN_OUT_CRLF);
+    }
+
     if (IoIFP(io)) {
 	fd = PerlIO_fileno(IoIFP(io));
 	if (IoTYPE(io) == '-')
@@ -110,7 +121,7 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 	else if (IoIFP(io) != IoOFP(io)) {
 	    if (IoOFP(io)) {
 		result = PerlIO_close(IoOFP(io));
-		PerlIO_close(IoIFP(io));	/* clear stdio, fd already closed */
+		PerlIO_close(IoIFP(io)); /* clear stdio, fd already closed */
 	    }
 	    else
 		result = PerlIO_close(IoIFP(io));
@@ -118,15 +129,21 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 	else
 	    result = PerlIO_close(IoIFP(io));
 	if (result == EOF && fd > PL_maxsysfd)
-	    PerlIO_printf(PerlIO_stderr(), "Warning: unable to close filehandle %s properly.\n",
-	      GvENAME(gv));
+	    PerlIO_printf(Perl_error_log,
+			  "Warning: unable to close filehandle %s properly.\n",
+			  GvENAME(gv));
 	IoOFP(io) = IoIFP(io) = Nullfp;
     }
 
     if (as_raw) {
+#if defined(USE_64_BIT_RAWIO) && defined(O_LARGEFILE)
+	rawmode |= O_LARGEFILE;
+#endif
+
 #ifndef O_ACCMODE
 #define O_ACCMODE 3		/* Assume traditional implementation */
 #endif
+
 	switch (result = rawmode & O_ACCMODE) {
 	case O_RDONLY:
 	     IoTYPE(io) = '<';
@@ -146,65 +163,125 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 	if (fd == -1)
 	    fp = NULL;
 	else {
-	    char *fpmode;
+	    char fpmode[4];
+	    STRLEN ix = 0;
 	    if (result == O_RDONLY)
-		fpmode = "r";
+		fpmode[ix++] = 'r';
 #ifdef O_APPEND
-	    else if (rawmode & O_APPEND)
-		fpmode = (result == O_WRONLY) ? "a" : "a+";
+	    else if (rawmode & O_APPEND) {
+		fpmode[ix++] = 'a';
+		if (result != O_WRONLY)
+		    fpmode[ix++] = '+';
+	    }
 #endif
-	    else
-		fpmode = (result == O_WRONLY) ? "w" : "r+";
+	    else {
+		if (result == O_WRONLY)
+		    fpmode[ix++] = 'w';
+		else {
+		    fpmode[ix++] = 'r';
+		    fpmode[ix++] = '+';
+		}
+	    }
+	    if (rawmode & O_BINARY)
+		fpmode[ix++] = 'b';
+	    fpmode[ix] = '\0';
 	    fp = PerlIO_fdopen(fd, fpmode);
 	    if (!fp)
 		PerlLIO_close(fd);
 	}
     }
     else {
-	char *myname;
-	char mode[3];		/* stdio file mode ("r\0" or "r+\0") */
+	char *type;
+	char *oname = name;
+	STRLEN tlen;
+	STRLEN olen = len;
+	char mode[4];		/* stdio file mode ("r\0", "rb\0", "r+b\0" etc.) */
 	int dodup;
 
-	myname = savepvn(name, len);
-	SAVEFREEPV(myname);
-	name = myname;
-	while (len && isSPACE(name[len-1]))
-	    name[--len] = '\0';
-
-	mode[0] = mode[1] = mode[2] = '\0';
-	IoTYPE(io) = *name;
-	if (*name == '+' && len > 1 && name[len-1] != '|') { /* scary */
-	    mode[1] = *name++;
-	    --len;
+	type = savepvn(name, len);
+	tlen = len;
+	SAVEFREEPV(type);
+	if (num_svs) {
+	    STRLEN l;
+	    name = SvPV(svs, l) ;
+	    len = (I32)l;
+	    name = savepvn(name, len);
+	    SAVEFREEPV(name);
+	}
+	else {
+	    while (tlen && isSPACE(type[tlen-1]))
+		type[--tlen] = '\0';
+	    name = type;
+	    len = tlen;
+	}
+	mode[0] = mode[1] = mode[2] = mode[3] = '\0';
+	IoTYPE(io) = *type;
+	if (*type == '+' && tlen > 1 && type[tlen-1] != '|') { /* scary */
+	    mode[1] = *type++;
+	    --tlen;
 	    writing = 1;
 	}
 
-	if (*name == '|') {
+	if (*type == '|') {
+	    if (num_svs && (tlen != 2 || type[1] != '-')) {
+	      unknown_desr:
+		Perl_croak(aTHX_ "Unknown open() mode '%.*s'", (int)olen, oname);
+	    }
 	    /*SUPPRESS 530*/
-	    for (name++; isSPACE(*name); name++) ;
-	    if (strNE(name,"-"))
+	    for (type++, tlen--; isSPACE(*type); type++, tlen--) ;
+	    if (!num_svs) {
+		name = type;
+		len = tlen;
+	    }
+	    if (*name == '\0') { /* command is missing 19990114 */
+		dTHR;
+		if (ckWARN(WARN_PIPE))
+		    Perl_warner(aTHX_ WARN_PIPE, "Missing command in piped open");
+		errno = EPIPE;
+		goto say_false;
+	    }
+	    if (strNE(name,"-") || num_svs)
 		TAINT_ENV();
 	    TAINT_PROPER("piped open");
-	    if (name[strlen(name)-1] == '|') {
-		name[strlen(name)-1] = '\0' ;
-		if (PL_dowarn)
-		    warn("Can't do bidirectional pipe");
+	    if (name[len-1] == '|') {
+		dTHR;
+		name[--len] = '\0' ;
+		if (ckWARN(WARN_PIPE))
+		    Perl_warner(aTHX_ WARN_PIPE, "Can't open bidirectional pipe");
+	    }
+	    {
+		char *mode;
+		if (out_raw)
+		    mode = "wb";
+		else if (out_crlf)
+		    mode = "wt";
+		else
+		    mode = "w";
+		fp = PerlProc_popen(name,mode);
 	    }
-	    fp = PerlProc_popen(name,"w");
 	    writing = 1;
 	}
-	else if (*name == '>') {
+	else if (*type == '>') {
 	    TAINT_PROPER("open");
-	    name++;
-	    if (*name == '>') {
+	    type++;
+	    if (*type == '>') {
 		mode[0] = IoTYPE(io) = 'a';
-		name++;
+		type++;
+		tlen--;
 	    }
 	    else
 		mode[0] = 'w';
 	    writing = 1;
 
-	    if (*name == '&') {
+	    if (out_raw)
+		strcat(mode, "b");
+	    else if (out_crlf)
+		strcat(mode, "t");
+
+	    if (num_svs && tlen != 1)
+	        goto unknown_desr;
+	    if (*type == '&') {
+		name = type;
 	      duplicity:
 		dodup = 1;
 		name++;
@@ -230,7 +307,19 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 			    goto say_false;
 			}
 			if (IoIFP(thatio)) {
-			    fd = PerlIO_fileno(IoIFP(thatio));
+			    PerlIO *fp = IoIFP(thatio);
+			    /* Flush stdio buffer before dup. --mjd
+			     * Unfortunately SEEK_CURing 0 seems to
+			     * be optimized away on most platforms;
+			     * only Solaris and Linux seem to flush
+			     * on that. --jhi */
+			    PerlIO_seek(fp, 0, SEEK_CUR);
+			    /* On the other hand, do all platforms
+			     * take gracefully to flushing a read-only
+			     * filehandle?  Perhaps we should do
+			     * fsetpos(src)+fgetpos(dst)?  --nik */
+			    PerlIO_flush(fp);
+			    fd = PerlIO_fileno(fp);
 			    if (IoTYPE(thatio) == 's')
 				IoTYPE(io) = 's';
 			}
@@ -244,47 +333,82 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 		    if (!(fp = PerlIO_fdopen(fd,mode))) {
 			if (dodup)
 			    PerlLIO_close(fd);
-			}
+		    }
 		}
 	    }
 	    else {
 		/*SUPPRESS 530*/
-		for (; isSPACE(*name); name++) ;
-		if (strEQ(name,"-")) {
+		for (; isSPACE(*type); type++) ;
+		if (strEQ(type,"-")) {
 		    fp = PerlIO_stdout();
 		    IoTYPE(io) = '-';
 		}
 		else  {
-		    fp = PerlIO_open(name,mode);
+		    fp = PerlIO_open((num_svs ? name : type), mode);
 		}
 	    }
 	}
-	else if (*name == '<') {
+	else if (*type == '<') {
+	    if (num_svs && tlen != 1)
+	        goto unknown_desr;
 	    /*SUPPRESS 530*/
-	    for (name++; isSPACE(*name); name++) ;
+	    for (type++; isSPACE(*type); type++) ;
 	    mode[0] = 'r';
-	    if (*name == '&')
+	    if (in_raw)
+		strcat(mode, "b");
+	    else if (in_crlf)
+		strcat(mode, "t");
+
+	    if (*type == '&') {
+		name = type;
 		goto duplicity;
-	    if (strEQ(name,"-")) {
+	    }
+	    if (strEQ(type,"-")) {
 		fp = PerlIO_stdin();
 		IoTYPE(io) = '-';
 	    }
 	    else
-		fp = PerlIO_open(name,mode);
+		fp = PerlIO_open((num_svs ? name : type), mode);
 	}
-	else if (len > 1 && name[len-1] == '|') {
-	    name[--len] = '\0';
-	    while (len && isSPACE(name[len-1]))
-		name[--len] = '\0';
-	    /*SUPPRESS 530*/
-	    for (; isSPACE(*name); name++) ;
-	    if (strNE(name,"-"))
+	else if (tlen > 1 && type[tlen-1] == '|') {
+	    if (num_svs) {
+		if (tlen != 2 || type[0] != '-')
+		    goto unknown_desr;
+	    }
+	    else {
+		type[--tlen] = '\0';
+		while (tlen && isSPACE(type[tlen-1]))
+		    type[--tlen] = '\0';
+		/*SUPPRESS 530*/
+		for (; isSPACE(*type); type++) ;
+		name = type;
+	    }
+	    if (*name == '\0') { /* command is missing 19990114 */
+		dTHR;
+		if (ckWARN(WARN_PIPE))
+		    Perl_warner(aTHX_ WARN_PIPE, "Missing command in piped open");
+		errno = EPIPE;
+		goto say_false;
+	    }
+	    if (strNE(name,"-") || num_svs)
 		TAINT_ENV();
 	    TAINT_PROPER("piped open");
-	    fp = PerlProc_popen(name,"r");
+	    {
+		char *mode;
+		if (in_raw)
+		    mode = "rb";
+		else if (in_crlf)
+		    mode = "rt";
+		else
+		    mode = "r";
+		fp = PerlProc_popen(name,mode);
+	    }
 	    IoTYPE(io) = '|';
 	}
 	else {
+	    if (num_svs)
+		goto unknown_desr;
+	    name = type;
 	    IoTYPE(io) = '<';
 	    /*SUPPRESS 530*/
 	    for (; isSPACE(*name); name++) ;
@@ -292,13 +416,22 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 		fp = PerlIO_stdin();
 		IoTYPE(io) = '-';
 	    }
-	    else
-		fp = PerlIO_open(name,"r");
+	    else {
+		char *mode;
+		if (in_raw)
+		    mode = "rb";
+		else if (in_crlf)
+		    mode = "rt";
+		else
+		    mode = "r";
+		fp = PerlIO_open(name,mode);
+	    }
 	}
     }
     if (!fp) {
-	if (PL_dowarn && IoTYPE(io) == '<' && strchr(name, '\n'))
-	    warn(warn_nl, "open");
+	dTHR;
+	if (ckWARN(WARN_NEWLINE) && IoTYPE(io) == '<' && strchr(name, '\n'))
+	    Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "open");
 	goto say_false;
     }
     if (IoTYPE(io) &&
@@ -339,7 +472,7 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 	    }
 	}
 	if (fd != PerlIO_fileno(fp)) {
-	    int pid;
+	    Pid_t pid;
 	    SV *sv;
 
 	    PerlLIO_dup2(PerlIO_fileno(fp), fd);
@@ -366,11 +499,21 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
     }
 #endif
     IoIFP(io) = fp;
+    IoFLAGS(io) &= ~IOf_NOLINE;
     if (writing) {
 	dTHR;
 	if (IoTYPE(io) == 's'
-	  || (IoTYPE(io) == '>' && S_ISCHR(PL_statbuf.st_mode)) ) {
-	    if (!(IoOFP(io) = PerlIO_fdopen(PerlIO_fileno(fp),"w"))) {
+	    || (IoTYPE(io) == '>' && S_ISCHR(PL_statbuf.st_mode)) )
+	{
+	    char *mode;
+	    if (out_raw)
+		mode = "wb";
+	    else if (out_crlf)
+		mode = "wt";
+	    else
+		mode = "w";
+
+	    if (!(IoOFP(io) = PerlIO_fdopen(PerlIO_fileno(fp),mode))) {
 		PerlIO_close(fp);
 		IoIFP(io) = Nullfp;
 		goto say_false;
@@ -389,18 +532,27 @@ do_open(GV *gv, register char *name, I32 len, int as_raw, int rawmode, int rawpe
 }
 
 PerlIO *
-nextargv(register GV *gv)
+Perl_nextargv(pTHX_ register GV *gv)
 {
     register SV *sv;
 #ifndef FLEXFILENAMES
     int filedev;
     int fileino;
 #endif
-    int fileuid;
-    int filegid;
+    Uid_t fileuid;
+    Gid_t filegid;
+    IO *io = GvIOp(gv);
 
     if (!PL_argvoutgv)
 	PL_argvoutgv = gv_fetchpv("ARGVOUT",TRUE,SVt_PVIO);
+    if (io && (IoFLAGS(io) & IOf_ARGV) && (IoFLAGS(io) & IOf_START)) {
+	IoFLAGS(io) &= ~IOf_START;
+	if (PL_inplace) {
+	    if (!PL_argvout_stack)
+		PL_argvout_stack = newAV();
+	    av_push(PL_argvout_stack, SvREFCNT_inc(PL_defoutgv));
+	}
+    }
     if (PL_filemode & (S_ISUID|S_ISGID)) {
 	PerlIO_flush(IoIFP(GvIOn(PL_argvoutgv)));  /* chmod must follow last write */
 #ifdef HAS_FCHMOD
@@ -433,8 +585,10 @@ nextargv(register GV *gv)
 		fileuid = PL_statbuf.st_uid;
 		filegid = PL_statbuf.st_gid;
 		if (!S_ISREG(PL_filemode)) {
-		    warn("Can't do inplace edit: %s is not a regular file",
-		      PL_oldname );
+		    if (ckWARN_d(WARN_INPLACE))	
+		        Perl_warner(aTHX_ WARN_INPLACE,
+			    "Can't do inplace edit: %s is not a regular file",
+		            PL_oldname );
 		    do_close(gv,FALSE);
 		    continue;
 		}
@@ -461,18 +615,23 @@ nextargv(register GV *gv)
 #ifdef DJGPP
                       || (_djstat_fail_bits & _STFAIL_TRUENAME)!=0
 #endif
-                      ) {
-			warn("Can't do inplace edit: %s would not be uniq",
-			  SvPVX(sv) );
+                      )
+		    {
+			if (ckWARN_d(WARN_INPLACE))	
+			    Perl_warner(aTHX_ WARN_INPLACE,
+			      "Can't do inplace edit: %s would not be unique",
+			      SvPVX(sv));
 			do_close(gv,FALSE);
 			continue;
 		    }
 #endif
 #ifdef HAS_RENAME
-#ifndef DOSISH
+#if !defined(DOSISH) && !defined(__CYGWIN__)
 		    if (PerlLIO_rename(PL_oldname,SvPVX(sv)) < 0) {
-			warn("Can't rename %s to %s: %s, skipping file",
-			  PL_oldname, SvPVX(sv), Strerror(errno) );
+		        if (ckWARN_d(WARN_INPLACE))	
+			    Perl_warner(aTHX_ WARN_INPLACE, 
+			      "Can't rename %s to %s: %s, skipping file",
+			      PL_oldname, SvPVX(sv), Strerror(errno) );
 			do_close(gv,FALSE);
 			continue;
 		    }
@@ -485,8 +644,10 @@ nextargv(register GV *gv)
 #else
 		    (void)UNLINK(SvPVX(sv));
 		    if (link(PL_oldname,SvPVX(sv)) < 0) {
-			warn("Can't rename %s to %s: %s, skipping file",
-			  PL_oldname, SvPVX(sv), Strerror(errno) );
+		        if (ckWARN_d(WARN_INPLACE))	
+			    Perl_warner(aTHX_ WARN_INPLACE,
+			      "Can't rename %s to %s: %s, skipping file",
+			      PL_oldname, SvPVX(sv), Strerror(errno) );
 			do_close(gv,FALSE);
 			continue;
 		    }
@@ -497,14 +658,16 @@ nextargv(register GV *gv)
 #if !defined(DOSISH) && !defined(AMIGAOS)
 #  ifndef VMS  /* Don't delete; use automatic file versioning */
 		    if (UNLINK(PL_oldname) < 0) {
-			warn("Can't remove %s: %s, skipping file",
-			  PL_oldname, Strerror(errno) );
+		        if (ckWARN_d(WARN_INPLACE))	
+			    Perl_warner(aTHX_ WARN_INPLACE,
+			      "Can't remove %s: %s, skipping file",
+			      PL_oldname, Strerror(errno) );
 			do_close(gv,FALSE);
 			continue;
 		    }
 #  endif
 #else
-		    croak("Can't do inplace edit without backup");
+		    Perl_croak(aTHX_ "Can't do inplace edit without backup");
 #endif
 		}
 
@@ -513,13 +676,15 @@ nextargv(register GV *gv)
 		SETERRNO(0,0);		/* in case sprintf set errno */
 #ifdef VMS
 		if (!do_open(PL_argvoutgv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,
-                 O_WRONLY|O_CREAT|O_TRUNC,0,Nullfp)) { 
+                 O_WRONLY|O_CREAT|O_TRUNC,0,Nullfp))
 #else
 		if (!do_open(PL_argvoutgv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,
-			     O_WRONLY|O_CREAT|OPEN_EXCL,0666,Nullfp)) {
+			     O_WRONLY|O_CREAT|OPEN_EXCL,0666,Nullfp))
 #endif
-		    warn("Can't do inplace edit on %s: %s",
-		      PL_oldname, Strerror(errno) );
+		{
+		    if (ckWARN_d(WARN_INPLACE))	
+		        Perl_warner(aTHX_ WARN_INPLACE, "Can't do inplace edit on %s: %s",
+		          PL_oldname, Strerror(errno) );
 		    do_close(gv,FALSE);
 		    continue;
 		}
@@ -546,12 +711,35 @@ nextargv(register GV *gv)
 	    }
 	    return IoIFP(GvIOp(gv));
 	}
-	else
-	    PerlIO_printf(PerlIO_stderr(), "Can't open %s: %s\n",
-	      SvPV(sv, oldlen), Strerror(errno));
+	else {
+	    dTHR;
+	    if (ckWARN_d(WARN_INPLACE)) {
+		int eno = errno;
+		if (PerlLIO_stat(PL_oldname, &PL_statbuf) >= 0
+		    && !S_ISREG(PL_statbuf.st_mode))	
+		{
+		    Perl_warner(aTHX_ WARN_INPLACE,
+				"Can't do inplace edit: %s is not a regular file",
+				PL_oldname);
+		}
+		else
+		    Perl_warner(aTHX_ WARN_INPLACE, "Can't open %s: %s",
+				PL_oldname, Strerror(eno));
+	    }
+	}
     }
+    if (io && (IoFLAGS(io) & IOf_ARGV))
+	IoFLAGS(io) |= IOf_START;
     if (PL_inplace) {
 	(void)do_close(PL_argvoutgv,FALSE);
+	if (io && (IoFLAGS(io) & IOf_ARGV)
+	    && PL_argvout_stack && AvFILLp(PL_argvout_stack) >= 0)
+	{
+	    GV *oldout = (GV*)av_pop(PL_argvout_stack);
+	    setdefout(oldout);
+	    SvREFCNT_dec(oldout);
+	    return Nullfp;
+	}
 	setdefout(gv_fetchpv("STDOUT",TRUE,SVt_PVIO));
     }
     return Nullfp;
@@ -559,7 +747,7 @@ nextargv(register GV *gv)
 
 #ifdef HAS_PIPE
 void
-do_pipe(SV *sv, GV *rgv, GV *wgv)
+Perl_do_pipe(pTHX_ SV *sv, GV *rgv, GV *wgv)
 {
     register IO *rstio;
     register IO *wstio;
@@ -604,7 +792,7 @@ do_pipe(SV *sv, GV *rgv, GV *wgv)
 
 /* explicit renamed to avoid C++ conflict    -- kja */
 bool
-do_close(GV *gv, bool not_implicit)
+Perl_do_close(pTHX_ GV *gv, bool not_implicit)
 {
     bool retval;
     IO *io;
@@ -619,13 +807,15 @@ do_close(GV *gv, bool not_implicit)
     io = GvIO(gv);
     if (!io) {		/* never opened */
 	if (not_implicit) {
-	    if (PL_dowarn)
-		warn("Close on unopened file <%s>",GvENAME(gv));
+	    dTHR;
+	    if (ckWARN(WARN_UNOPENED))
+		Perl_warner(aTHX_ WARN_UNOPENED, 
+		       "Close on unopened file <%s>",GvENAME(gv));
 	    SETERRNO(EBADF,SS$_IVCHAN);
 	}
 	return FALSE;
     }
-    retval = io_close(io);
+    retval = io_close(io, not_implicit);
     if (not_implicit) {
 	IoLINES(io) = 0;
 	IoPAGE(io) = 0;
@@ -636,7 +826,7 @@ do_close(GV *gv, bool not_implicit)
 }
 
 bool
-io_close(IO *io)
+Perl_io_close(pTHX_ IO *io, bool not_implicit)
 {
     bool retval = FALSE;
     int status;
@@ -644,8 +834,13 @@ io_close(IO *io)
     if (IoIFP(io)) {
 	if (IoTYPE(io) == '|') {
 	    status = PerlProc_pclose(IoIFP(io));
-	    STATUS_NATIVE_SET(status);
-	    retval = (STATUS_POSIX == 0);
+	    if (not_implicit) {
+		STATUS_NATIVE_SET(status);
+		retval = (STATUS_POSIX == 0);
+	    }
+	    else {
+		retval = (status != -1);
+	    }
 	}
 	else if (IoTYPE(io) == '-')
 	    retval = TRUE;
@@ -659,7 +854,7 @@ io_close(IO *io)
 	}
 	IoOFP(io) = IoIFP(io) = Nullfp;
     }
-    else {
+    else if (not_implicit) {
 	SETERRNO(EBADF,SS$_IVCHAN);
     }
 
@@ -667,7 +862,7 @@ io_close(IO *io)
 }
 
 bool
-do_eof(GV *gv)
+Perl_do_eof(pTHX_ GV *gv)
 {
     dTHR;
     register IO *io;
@@ -677,6 +872,15 @@ do_eof(GV *gv)
 
     if (!io)
 	return TRUE;
+    else if (ckWARN(WARN_IO)
+	     && (IoTYPE(io) == '>' || IoIFP(io) == PerlIO_stdout()
+		 || IoIFP(io) == PerlIO_stderr()))
+    {
+	SV* sv = sv_newmortal();
+	gv_efullname3(sv, gv, Nullch);
+	Perl_warner(aTHX_ WARN_IO, "Filehandle %s opened only for output",
+		    SvPV_nolen(sv));
+    }
 
     while (IoIFP(io)) {
 
@@ -704,8 +908,8 @@ do_eof(GV *gv)
     return TRUE;
 }
 
-long
-do_tell(GV *gv)
+Off_t
+Perl_do_tell(pTHX_ GV *gv)
 {
     register IO *io;
     register PerlIO *fp;
@@ -717,14 +921,17 @@ do_tell(GV *gv)
 #endif
 	return PerlIO_tell(fp);
     }
-    if (PL_dowarn)
-	warn("tell() on unopened file");
+    {
+	dTHR;
+	if (ckWARN(WARN_UNOPENED))
+	    Perl_warner(aTHX_ WARN_UNOPENED, "tell() on unopened file");
+    }
     SETERRNO(EBADF,RMS$_IFI);
-    return -1L;
+    return (Off_t)-1;
 }
 
 bool
-do_seek(GV *gv, long int pos, int whence)
+Perl_do_seek(pTHX_ GV *gv, Off_t pos, int whence)
 {
     register IO *io;
     register PerlIO *fp;
@@ -736,40 +943,99 @@ do_seek(GV *gv, long int pos, int whence)
 #endif
 	return PerlIO_seek(fp, pos, whence) >= 0;
     }
-    if (PL_dowarn)
-	warn("seek() on unopened file");
+    {
+	dTHR;
+	if (ckWARN(WARN_UNOPENED))
+	    Perl_warner(aTHX_ WARN_UNOPENED, "seek() on unopened file");
+    }
     SETERRNO(EBADF,RMS$_IFI);
     return FALSE;
 }
 
-long
-do_sysseek(GV *gv, long int pos, int whence)
+Off_t
+Perl_do_sysseek(pTHX_ GV *gv, Off_t pos, int whence)
 {
     register IO *io;
     register PerlIO *fp;
 
     if (gv && (io = GvIO(gv)) && (fp = IoIFP(io)))
 	return PerlLIO_lseek(PerlIO_fileno(fp), pos, whence);
-    if (PL_dowarn)
-	warn("sysseek() on unopened file");
+    {
+	dTHR;
+	if (ckWARN(WARN_UNOPENED))
+	    Perl_warner(aTHX_ WARN_UNOPENED, "sysseek() on unopened file");
+    }
     SETERRNO(EBADF,RMS$_IFI);
-    return -1L;
+    return (Off_t)-1;
 }
 
 int
-do_binmode(PerlIO *fp, int iotype, int flag)
+Perl_mode_from_discipline(pTHX_ SV *discp)
+{
+    int mode = O_BINARY;
+    if (discp) {
+	STRLEN len;
+	char *s = SvPV(discp,len);
+	while (*s) {
+	    if (*s == ':') {
+		switch (s[1]) {
+		case 'r':
+		    if (len > 3 && strnEQ(s+1, "raw", 3)
+			&& (!s[4] || s[4] == ':' || isSPACE(s[4])))
+		    {
+			mode = O_BINARY;
+			s += 4;
+			len -= 4;
+			break;
+		    }
+		    /* FALL THROUGH */
+		case 'c':
+		    if (len > 4 && strnEQ(s+1, "crlf", 4)
+			&& (!s[5] || s[5] == ':' || isSPACE(s[5])))
+		    {
+			mode = O_TEXT;
+			s += 5;
+			len -= 5;
+			break;
+		    }
+		    /* FALL THROUGH */
+		default:
+		    goto fail_discipline;
+		}
+	    }
+	    else if (isSPACE(*s)) {
+		++s;
+		--len;
+	    }
+	    else {
+		char *end;
+fail_discipline:
+		end = strchr(s+1, ':');
+		if (!end)
+		    end = s+len;
+		Perl_croak(aTHX_ "Unknown discipline '%.*s'", end-s, s);
+	    }
+	}
+    }
+    return mode;
+}
+
+int
+Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
 {
-    if (flag != TRUE)
-	croak("panic: unsetting binmode"); /* Not implemented yet */
 #ifdef DOSISH
-#if defined(atarist) || defined(__MINT__)
-    if (!PerlIO_flush(fp) && (fp->_flag |= _IOBIN))
+#  if defined(atarist) || defined(__MINT__)
+    if (!PerlIO_flush(fp)) {
+	if (mode & O_BINARY)
+	    ((FILE*)fp)->_flag |= _IOBIN;
+	else
+	    ((FILE*)fp)->_flag &= ~ _IOBIN;
 	return 1;
-    else
-	return 0;
-#else
-    if (PerlLIO_setmode(PerlIO_fileno(fp), OP_BINARY) != -1) {
-#if defined(WIN32) && defined(__BORLANDC__)
+    }
+    return 0;
+#  else
+    if (PerlLIO_setmode(PerlIO_fileno(fp), mode) != -1) {
+#    if defined(WIN32) && defined(__BORLANDC__)
 	/* The translation mode of the stream is maintained independent
 	 * of the translation mode of the fd in the Borland RTL (heavy
 	 * digging through their runtime sources reveal).  User has to
@@ -777,22 +1043,25 @@ do_binmode(PerlIO *fp, int iotype, int flag)
 	 * document this anywhere). GSAR 97-5-24
 	 */
 	PerlIO_seek(fp,0L,0);
-	((FILE*)fp)->flags |= _F_BIN;
-#endif
+	if (mode & O_BINARY)
+	    ((FILE*)fp)->flags |= _F_BIN;
+	else
+	    ((FILE*)fp)->flags &= ~ _F_BIN;
+#    endif
 	return 1;
     }
     else
 	return 0;
-#endif
+#  endif
 #else
-#if defined(USEMYBINMODE)
-    if (my_binmode(fp,iotype) != NULL)
+#  if defined(USEMYBINMODE)
+    if (my_binmode(fp, iotype, mode) != FALSE)
 	return 1;
     else
 	return 0;
-#else
+#  else
     return 1;
-#endif
+#  endif
 #endif
 }
 
@@ -848,7 +1117,7 @@ Off_t length;		/* length to set file to */
 #endif /* F_FREESP */
 
 bool
-do_print(register SV *sv, PerlIO *fp)
+Perl_do_print(pTHX_ register SV *sv, PerlIO *fp)
 {
     register char *tmps;
     STRLEN len;
@@ -860,7 +1129,7 @@ do_print(register SV *sv, PerlIO *fp)
 	if (SvGMAGICAL(sv))
 	    mg_get(sv);
         if (SvIOK(sv) && SvIVX(sv) != 0) {
-	    PerlIO_printf(fp, PL_ofmt, (double)SvIVX(sv));
+	    PerlIO_printf(fp, PL_ofmt, (NV)SvIVX(sv));
 	    return !PerlIO_error(fp);
 	}
 	if (  (SvNOK(sv) && SvNVX(sv) != 0.0)
@@ -871,14 +1140,20 @@ do_print(register SV *sv, PerlIO *fp)
     }
     switch (SvTYPE(sv)) {
     case SVt_NULL:
-	if (PL_dowarn)
-	    warn(warn_uninit);
+	{
+	    dTHR;
+	    if (ckWARN(WARN_UNINITIALIZED))
+		report_uninit();
+	}
 	return TRUE;
     case SVt_IV:
 	if (SvIOK(sv)) {
 	    if (SvGMAGICAL(sv))
 		mg_get(sv);
-	    PerlIO_printf(fp, "%ld", (long)SvIVX(sv));
+	    if (SvIsUV(sv))
+		PerlIO_printf(fp, "%"UVuf, (UV)SvUVX(sv));
+	    else
+		PerlIO_printf(fp, "%"IVdf, (IV)SvIVX(sv));
 	    return !PerlIO_error(fp);
 	}
 	/* FALL THROUGH */
@@ -886,13 +1161,19 @@ do_print(register SV *sv, PerlIO *fp)
 	tmps = SvPV(sv, len);
 	break;
     }
+    /* To detect whether the process is about to overstep its
+     * filesize limit we would need getrlimit().  We could then
+     * also transparently raise the limit with setrlimit() --
+     * but only until the system hard limit/the filesystem limit,
+     * at which we would get EPERM.  Note that when using buffered
+     * io the write failure can be delayed until the flush/close. --jhi */
     if (len && (PerlIO_write(fp,tmps,len) == 0 || PerlIO_error(fp)))
 	return FALSE;
     return !PerlIO_error(fp);
 }
 
 I32
-my_stat(ARGSproto)
+Perl_my_stat(pTHX)
 {
     djSP;
     IO *io;
@@ -900,7 +1181,7 @@ my_stat(ARGSproto)
 
     if (PL_op->op_flags & OPf_REF) {
 	EXTEND(SP,1);
-	tmpgv = cGVOP->op_gv;
+	tmpgv = cGVOP_gv;
       do_fstat:
 	io = GvIO(tmpgv);
 	if (io && IoIFP(io)) {
@@ -912,8 +1193,8 @@ my_stat(ARGSproto)
 	else {
 	    if (tmpgv == PL_defgv)
 		return PL_laststatval;
-	    if (PL_dowarn)
-		warn("Stat on unopened file <%s>",
+	    if (ckWARN(WARN_UNOPENED))
+		Perl_warner(aTHX_ WARN_UNOPENED, "Stat on unopened file <%s>",
 		  GvENAME(tmpgv));
 	    PL_statgv = Nullgv;
 	    sv_setpv(PL_statname,"");
@@ -939,26 +1220,26 @@ my_stat(ARGSproto)
 	sv_setpv(PL_statname, s);
 	PL_laststype = OP_STAT;
 	PL_laststatval = PerlLIO_stat(s, &PL_statcache);
-	if (PL_laststatval < 0 && PL_dowarn && strchr(s, '\n'))
-	    warn(warn_nl, "stat");
+	if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(s, '\n'))
+	    Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "stat");
 	return PL_laststatval;
     }
 }
 
 I32
-my_lstat(ARGSproto)
+Perl_my_lstat(pTHX)
 {
     djSP;
     SV *sv;
     STRLEN n_a;
     if (PL_op->op_flags & OPf_REF) {
 	EXTEND(SP,1);
-	if (cGVOP->op_gv == PL_defgv) {
+	if (cGVOP_gv == PL_defgv) {
 	    if (PL_laststype != OP_LSTAT)
-		croak("The stat preceding -l _ wasn't an lstat");
+		Perl_croak(aTHX_ "The stat preceding -l _ wasn't an lstat");
 	    return PL_laststatval;
 	}
-	croak("You can't use -l on a filehandle");
+	Perl_croak(aTHX_ "You can't use -l on a filehandle");
     }
 
     PL_laststype = OP_LSTAT;
@@ -966,19 +1247,25 @@ my_lstat(ARGSproto)
     sv = POPs;
     PUTBACK;
     sv_setpv(PL_statname,SvPV(sv, n_a));
-#ifdef HAS_LSTAT
     PL_laststatval = PerlLIO_lstat(SvPV(sv, n_a),&PL_statcache);
-#else
-    PL_laststatval = PerlLIO_stat(SvPV(sv, n_a),&PL_statcache);
-#endif
-    if (PL_laststatval < 0 && PL_dowarn && strchr(SvPV(sv, n_a), '\n'))
-	warn(warn_nl, "lstat");
+    if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(SvPV(sv, n_a), '\n'))
+	Perl_warner(aTHX_ WARN_NEWLINE, PL_warn_nl, "lstat");
     return PL_laststatval;
 }
 
 bool
-do_aexec(SV *really, register SV **mark, register SV **sp)
+Perl_do_aexec(pTHX_ SV *really, register SV **mark, register SV **sp)
 {
+    return do_aexec5(really, mark, sp, 0, 0);
+}
+
+bool
+Perl_do_aexec5(pTHX_ SV *really, register SV **mark, register SV **sp,
+	       int fd, int do_report)
+{
+#ifdef MACOS_TRADITIONAL
+    Perl_croak(aTHX_ "exec? I'm not *that* kind of operating system");
+#else
     register char **a;
     char *tmps;
     STRLEN n_a;
@@ -1000,15 +1287,23 @@ do_aexec(SV *really, register SV **mark, register SV **sp)
 	    PerlProc_execvp(tmps,PL_Argv);
 	else
 	    PerlProc_execvp(PL_Argv[0],PL_Argv);
-	if (PL_dowarn)
-	    warn("Can't exec \"%s\": %s", PL_Argv[0], Strerror(errno));
+	if (ckWARN(WARN_EXEC))
+	    Perl_warner(aTHX_ WARN_EXEC, "Can't exec \"%s\": %s", 
+		PL_Argv[0], Strerror(errno));
+	if (do_report) {
+	    int e = errno;
+
+	    PerlLIO_write(fd, (void*)&e, sizeof(int));
+	    PerlLIO_close(fd);
+	}
     }
     do_execfree();
+#endif
     return FALSE;
 }
 
 void
-do_execfree(void)
+Perl_do_execfree(pTHX)
 {
     if (PL_Argv) {
 	Safefree(PL_Argv);
@@ -1020,10 +1315,16 @@ do_execfree(void)
     }
 }
 
-#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP)
+#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(EPOC) && !defined(MACOS_TRADITIONAL)
 
 bool
-do_exec(char *cmd)
+Perl_do_exec(pTHX_ char *cmd)
+{
+    return do_exec3(cmd,0,0);
+}
+
+bool
+Perl_do_exec3(pTHX_ char *cmd, int fd, int do_report)
 {
     register char **a;
     register char *s;
@@ -1069,7 +1370,7 @@ do_exec(char *cmd)
     if (strnEQ(cmd,"exec",4) && isSPACE(cmd[4]))
 	goto doshell;
 
-    for (s = cmd; *s && isALPHA(*s); s++) ;	/* catch VAR=val gizmo */
+    for (s = cmd; *s && isALNUM(*s); s++) ;	/* catch VAR=val gizmo */
     if (*s == '=')
 	goto doshell;
 
@@ -1079,6 +1380,20 @@ do_exec(char *cmd)
 		*s = '\0';
 		break;
 	    }
+	    /* handle the 2>&1 construct at the end */
+	    if (*s == '>' && s[1] == '&' && s[2] == '1'
+		&& s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2])
+		&& (!s[3] || isSPACE(s[3])))
+	    {
+		char *t = s + 3;
+
+		while (*t && isSPACE(*t))
+		    ++t;
+		if (!*t && (dup2(1,2) != -1)) {
+		    s[-2] = '\0';
+		    break;
+		}
+	    }
 	  doshell:
 	    PerlProc_execl(PL_sh_path, "sh", "-c", cmd, (char*)0);
 	    return FALSE;
@@ -1103,8 +1418,18 @@ do_exec(char *cmd)
 	    do_execfree();
 	    goto doshell;
 	}
-	if (PL_dowarn)
-	    warn("Can't exec \"%s\": %s", PL_Argv[0], Strerror(errno));
+	{
+	    dTHR;
+	    int e = errno;
+
+	    if (ckWARN(WARN_EXEC))
+		Perl_warner(aTHX_ WARN_EXEC, "Can't exec \"%s\": %s", 
+		    PL_Argv[0], Strerror(errno));
+	    if (do_report) {
+		PerlLIO_write(fd, (void*)&e, sizeof(int));
+		PerlLIO_close(fd);
+	    }
+	}
     }
     do_execfree();
     return FALSE;
@@ -1113,7 +1438,7 @@ do_exec(char *cmd)
 #endif /* OS2 || WIN32 */
 
 I32
-apply(I32 type, register SV **mark, register SV **sp)
+Perl_apply(pTHX_ I32 type, register SV **mark, register SV **sp)
 {
     dTHR;
     register I32 val;
@@ -1190,7 +1515,7 @@ nothing in the core.
 	    if (*s == 'S' && s[1] == 'I' && s[2] == 'G')
 		s += 3;
 	    if (!(val = whichsig(s)))
-		croak("Unrecognized signal name \"%s\"",s);
+		Perl_croak(aTHX_ "Unrecognized signal name \"%s\"",s);
 	}
 	else
 	    val = SvIVx(*mark);
@@ -1262,11 +1587,7 @@ nothing in the core.
 		    tot--;
 	    }
 	    else {	/* don't let root wipe out directories without -U */
-#ifdef HAS_LSTAT
 		if (PerlLIO_lstat(s,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))
-#else
-		if (PerlLIO_stat(s,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))
-#endif
 		    tot--;
 		else {
 		    if (UNLINK(s))
@@ -1318,8 +1639,10 @@ nothing in the core.
 
 /* Do the permissions allow some operation?  Assumes statcache already set. */
 #ifndef VMS /* VMS' cando is in vms.c */
-I32
-cando(I32 bit, I32 effective, register struct stat *statbufp)
+bool
+Perl_cando(pTHX_ Mode_t mode, Uid_t effective, register Stat_t *statbufp)
+/* Note: we use `effective' both for uids and gids.
+ * Here we are betting on Uid_t being equal or wider than Gid_t.  */
 {
 #ifdef DOSISH
     /* [Comments and code from Len Reed]
@@ -1343,11 +1666,11 @@ cando(I32 bit, I32 effective, register struct stat *statbufp)
      /* Atari stat() does pretty much the same thing. we set x_bit_set_in_stat
       * too so it will actually look into the files for magic numbers
       */
-     return (bit & statbufp->st_mode) ? TRUE : FALSE;
+     return (mode & statbufp->st_mode) ? TRUE : FALSE;
 
 #else /* ! DOSISH */
     if ((effective ? PL_euid : PL_uid) == 0) {	/* root is special */
-	if (bit == S_IXUSR) {
+	if (mode == S_IXUSR) {
 	    if (statbufp->st_mode & 0111 || S_ISDIR(statbufp->st_mode))
 		return TRUE;
 	}
@@ -1356,23 +1679,27 @@ cando(I32 bit, I32 effective, register struct stat *statbufp)
 	return FALSE;
     }
     if (statbufp->st_uid == (effective ? PL_euid : PL_uid) ) {
-	if (statbufp->st_mode & bit)
+	if (statbufp->st_mode & mode)
 	    return TRUE;	/* ok as "user" */
     }
-    else if (ingroup((I32)statbufp->st_gid,effective)) {
-	if (statbufp->st_mode & bit >> 3)
+    else if (ingroup(statbufp->st_gid,effective)) {
+	if (statbufp->st_mode & mode >> 3)
 	    return TRUE;	/* ok as "group" */
     }
-    else if (statbufp->st_mode & bit >> 6)
+    else if (statbufp->st_mode & mode >> 6)
 	return TRUE;	/* ok as "other" */
     return FALSE;
 #endif /* ! DOSISH */
 }
 #endif /* ! VMS */
 
-I32
-ingroup(I32 testgid, I32 effective)
+bool
+Perl_ingroup(pTHX_ Gid_t testgid, Uid_t effective)
 {
+#ifdef MACOS_TRADITIONAL
+    /* This is simply not correct for AppleShare, but fix it yerself. */
+    return TRUE;
+#else
     if (testgid == (effective ? PL_egid : PL_gid))
 	return TRUE;
 #ifdef HAS_GETGROUPS
@@ -1390,12 +1717,13 @@ ingroup(I32 testgid, I32 effective)
     }
 #endif
     return FALSE;
+#endif
 }
 
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 
 I32
-do_ipcget(I32 optype, SV **mark, SV **sp)
+Perl_do_ipcget(pTHX_ I32 optype, SV **mark, SV **sp)
 {
     dTHR;
     key_t key;
@@ -1421,14 +1749,14 @@ do_ipcget(I32 optype, SV **mark, SV **sp)
 #endif
 #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM)
     default:
-	croak("%s not implemented", op_desc[optype]);
+	Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
 #endif
     }
     return -1;			/* should never happen */
 }
 
 I32
-do_ipcctl(I32 optype, SV **mark, SV **sp)
+Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp)
 {
     dTHR;
     SV *astr;
@@ -1459,14 +1787,18 @@ do_ipcctl(I32 optype, SV **mark, SV **sp)
 #endif
 #ifdef HAS_SEM
     case OP_SEMCTL:
+#ifdef Semctl
 	if (cmd == IPC_STAT || cmd == IPC_SET)
 	    infosize = sizeof(struct semid_ds);
 	else if (cmd == GETALL || cmd == SETALL)
 	{
 	    struct semid_ds semds;
 	    union semun semun;
-
+#ifdef EXTRA_F_IN_SEMUN_BUF
+            semun.buff = &semds;
+#else
             semun.buf = &semds;
+#endif
 	    getinfo = (cmd == GETALL);
 	    if (Semctl(id, 0, IPC_STAT, semun) == -1)
 		return -1;
@@ -1474,11 +1806,14 @@ do_ipcctl(I32 optype, SV **mark, SV **sp)
 		/* "short" is technically wrong but much more portable
 		   than guessing about u_?short(_t)? */
 	}
+#else
+	Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
+#endif
 	break;
 #endif
 #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM)
     default:
-	croak("%s not implemented", op_desc[optype]);
+	Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
 #endif
     }
 
@@ -1494,14 +1829,16 @@ do_ipcctl(I32 optype, SV **mark, SV **sp)
 	{
 	    a = SvPV(astr, len);
 	    if (len != infosize)
-		croak("Bad arg length for %s, is %lu, should be %ld",
-			op_desc[optype], (unsigned long)len, (long)infosize);
+		Perl_croak(aTHX_ "Bad arg length for %s, is %lu, should be %ld",
+		      PL_op_desc[optype],
+		      (unsigned long)len,
+		      (long)infosize);
 	}
     }
     else
     {
 	IV i = SvIV(astr);
-	a = (char *)i;		/* ouch */
+	a = INT2PTR(char *,i);		/* ouch */
     }
     SETERRNO(0,0);
     switch (optype)
@@ -1513,10 +1850,18 @@ do_ipcctl(I32 optype, SV **mark, SV **sp)
 #endif
 #ifdef HAS_SEM
     case OP_SEMCTL: {
+#ifdef Semctl
             union semun unsemds;
 
+#ifdef EXTRA_F_IN_SEMUN_BUF
+            unsemds.buff = (struct semid_ds *)a;
+#else
             unsemds.buf = (struct semid_ds *)a;
+#endif
 	    ret = Semctl(id, n, cmd, unsemds);
+#else
+	    Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]);
+#endif
         }
 	break;
 #endif
@@ -1535,7 +1880,7 @@ do_ipcctl(I32 optype, SV **mark, SV **sp)
 }
 
 I32
-do_msgsnd(SV **mark, SV **sp)
+Perl_do_msgsnd(pTHX_ SV **mark, SV **sp)
 {
 #ifdef HAS_MSG
     dTHR;
@@ -1549,16 +1894,16 @@ do_msgsnd(SV **mark, SV **sp)
     flags = SvIVx(*++mark);
     mbuf = SvPV(mstr, len);
     if ((msize = len - sizeof(long)) < 0)
-	croak("Arg too short for msgsnd");
+	Perl_croak(aTHX_ "Arg too short for msgsnd");
     SETERRNO(0,0);
     return msgsnd(id, (struct msgbuf *)mbuf, msize, flags);
 #else
-    croak("msgsnd not implemented");
+    Perl_croak(aTHX_ "msgsnd not implemented");
 #endif
 }
 
 I32
-do_msgrcv(SV **mark, SV **sp)
+Perl_do_msgrcv(pTHX_ SV **mark, SV **sp)
 {
 #ifdef HAS_MSG
     dTHR;
@@ -1573,12 +1918,6 @@ do_msgrcv(SV **mark, SV **sp)
     msize = SvIVx(*++mark);
     mtype = (long)SvIVx(*++mark);
     flags = SvIVx(*++mark);
-    if (SvTHINKFIRST(mstr)) {
-	if (SvREADONLY(mstr))
-	    croak("Can't msgrcv to readonly var");
-	if (SvROK(mstr))
-	    sv_unref(mstr);
-    }
     SvPV_force(mstr, len);
     mbuf = SvGROW(mstr, sizeof(long)+msize+1);
     
@@ -1587,15 +1926,19 @@ do_msgrcv(SV **mark, SV **sp)
     if (ret >= 0) {
 	SvCUR_set(mstr, sizeof(long)+ret);
 	*SvEND(mstr) = '\0';
+#ifndef INCOMPLETE_TAINTS
+	/* who knows who has been playing with this message? */
+	SvTAINTED_on(mstr);
+#endif
     }
     return ret;
 #else
-    croak("msgrcv not implemented");
+    Perl_croak(aTHX_ "msgrcv not implemented");
 #endif
 }
 
 I32
-do_semop(SV **mark, SV **sp)
+Perl_do_semop(pTHX_ SV **mark, SV **sp)
 {
 #ifdef HAS_SEM
     dTHR;
@@ -1615,12 +1958,12 @@ do_semop(SV **mark, SV **sp)
     SETERRNO(0,0);
     return semop(id, (struct sembuf *)opbuf, opsize/sizeof(struct sembuf));
 #else
-    croak("semop not implemented");
+    Perl_croak(aTHX_ "semop not implemented");
 #endif
 }
 
 I32
-do_shmio(I32 optype, SV **mark, SV **sp)
+Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp)
 {
 #ifdef HAS_SHM
     dTHR;
@@ -1645,6 +1988,9 @@ do_shmio(I32 optype, SV **mark, SV **sp)
     if (shm == (char *)-1)	/* I hate System V IPC, I really do */
 	return -1;
     if (optype == OP_SHMREAD) {
+	/* suppress warning when reading into undef var (tchrist 3/Mar/00) */
+	if (! SvOK(mstr))
+	    sv_setpvn(mstr, "", 0);
 	SvPV_force(mstr, len);
 	mbuf = SvGROW(mstr, msize+1);
 
@@ -1652,6 +1998,10 @@ do_shmio(I32 optype, SV **mark, SV **sp)
 	SvCUR_set(mstr, msize);
 	*SvEND(mstr) = '\0';
 	SvSETMAGIC(mstr);
+#ifndef INCOMPLETE_TAINTS
+	/* who knows who has been playing with this shared memory? */
+	SvTAINTED_on(mstr);
+#endif
     }
     else {
 	I32 n;
@@ -1665,7 +2015,7 @@ do_shmio(I32 optype, SV **mark, SV **sp)
     }
     return shmdt(shm);
 #else
-    croak("shm I/O not implemented");
+    Perl_croak(aTHX_ "shm I/O not implemented");
 #endif
 }
 
diff --git a/contrib/perl5/doop.c b/contrib/perl5/doop.c
index 85d7b9eb9ce8..06b1b38d5c85 100644
--- a/contrib/perl5/doop.c
+++ b/contrib/perl5/doop.c
@@ -1,6 +1,6 @@
 /*    doop.c
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -12,86 +12,625 @@
  */
 
 #include "EXTERN.h"
+#define PERL_IN_DOOP_C
 #include "perl.h"
 
 #if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX)
 #include 
 #endif
 
-I32
-do_trans(SV *sv, OP *arg)
+STATIC I32
+S_do_trans_CC_simple(pTHX_ SV *sv)
 {
     dTHR;
-    register short *tbl;
-    register U8 *s;
-    register U8 *send;
-    register U8 *d;
-    register I32 ch;
-    register I32 matches = 0;
-    register I32 squash = PL_op->op_private & OPpTRANS_SQUASH;
-    register U8 *p;
+    U8 *s;
+    U8 *send;
+    I32 matches = 0;
     STRLEN len;
+    short *tbl;
+    I32 ch;
 
-    if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_COUNTONLY))
-	croak(no_modify);
     tbl = (short*)cPVOP->op_pv;
+    if (!tbl)
+	Perl_croak(aTHX_ "panic: do_trans");
+
     s = (U8*)SvPV(sv, len);
-    if (!len)
-	return 0;
-    if (!SvPOKp(sv))
-	s = (U8*)SvPV_force(sv, len);
-    (void)SvPOK_only(sv);
     send = s + len;
-    if (!tbl || !s)
-	croak("panic: do_trans");
-    DEBUG_t( deb("2.TBL\n"));
-    if (!PL_op->op_private) {
-	while (s < send) {
-	    if ((ch = tbl[*s]) >= 0) {
-		matches++;
-		*s = ch;
-	    }
-	    s++;
+
+    while (s < send) {
+	if ((ch = tbl[*s]) >= 0) {
+	    matches++;
+	    *s = ch;
 	}
-	SvSETMAGIC(sv);
+	s++;
     }
-    else if (PL_op->op_private & OPpTRANS_COUNTONLY) {
-	while (s < send) {
-	    if (tbl[*s] >= 0)
-		matches++;
-	    s++;
-	}
+    SvSETMAGIC(sv);
+
+    return matches;
+}
+
+STATIC I32
+S_do_trans_CC_count(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    I32 matches = 0;
+    STRLEN len;
+    short *tbl;
+
+    tbl = (short*)cPVOP->op_pv;
+    if (!tbl)
+	Perl_croak(aTHX_ "panic: do_trans");
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    while (s < send) {
+	if (tbl[*s] >= 0)
+	    matches++;
+	s++;
     }
-    else {
-	d = s;
-	p = send;
+
+    return matches;
+}
+
+STATIC I32
+S_do_trans_CC_complex(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    U8 *d;
+    I32 matches = 0;
+    STRLEN len;
+    short *tbl;
+    I32 ch;
+
+    tbl = (short*)cPVOP->op_pv;
+    if (!tbl)
+	Perl_croak(aTHX_ "panic: do_trans");
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    d = s;
+    if (PL_op->op_private & OPpTRANS_SQUASH) {
+	U8* p = send;
+
 	while (s < send) {
 	    if ((ch = tbl[*s]) >= 0) {
 		*d = ch;
 		matches++;
-		if (squash) {
-		    if (p == d - 1 && *p == *d)
-			matches--;
-		    else
-		        p = d++;
-		}
+		if (p == d - 1 && *p == *d)
+		    matches--;
 		else
-		    d++;
+		    p = d++;
 	    }
 	    else if (ch == -1)		/* -1 is unmapped character */
 		*d++ = *s;		/* -2 is delete character */
 	    s++;
 	}
-	matches += send - d;	/* account for disappeared chars */
-	*d = '\0';
-	SvCUR_set(sv, d - (U8*)SvPVX(sv));
-	SvSETMAGIC(sv);
     }
+    else {
+	while (s < send) {
+	    if ((ch = tbl[*s]) >= 0) {
+		*d = ch;
+		matches++;
+		d++;
+	    }
+	    else if (ch == -1)		/* -1 is unmapped character */
+		*d++ = *s;		/* -2 is delete character */
+	    s++;
+	}
+    }
+    matches += send - d;	/* account for disappeared chars */
+    *d = '\0';
+    SvCUR_set(sv, d - (U8*)SvPVX(sv));
+    SvSETMAGIC(sv);
+
     return matches;
 }
 
+STATIC I32
+S_do_trans_UU_simple(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    U8 *d;
+    I32 matches = 0;
+    STRLEN len;
+
+    SV* rv = (SV*)cSVOP->op_sv;
+    HV* hv = (HV*)SvRV(rv);
+    SV** svp = hv_fetch(hv, "NONE", 4, FALSE);
+    UV none = svp ? SvUV(*svp) : 0x7fffffff;
+    UV extra = none + 1;
+    UV final;
+    UV uv;
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    svp = hv_fetch(hv, "FINAL", 5, FALSE);
+    if (svp)
+	final = SvUV(*svp);
+
+    d = s;
+    while (s < send) {
+	if ((uv = swash_fetch(rv, s)) < none) {
+	    s += UTF8SKIP(s);
+	    matches++;
+	    d = uv_to_utf8(d, uv);
+	}
+	else if (uv == none) {
+	    int i;
+	    for (i = UTF8SKIP(s); i; i--)
+		*d++ = *s++;
+	}
+	else if (uv == extra) {
+	    s += UTF8SKIP(s);
+	    matches++;
+	    d = uv_to_utf8(d, final);
+	}
+	else
+	    s += UTF8SKIP(s);
+    }
+    *d = '\0';
+    SvCUR_set(sv, d - (U8*)SvPVX(sv));
+    SvSETMAGIC(sv);
+
+    return matches;
+}
+
+STATIC I32
+S_do_trans_UU_count(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    I32 matches = 0;
+    STRLEN len;
+
+    SV* rv = (SV*)cSVOP->op_sv;
+    HV* hv = (HV*)SvRV(rv);
+    SV** svp = hv_fetch(hv, "NONE", 4, FALSE);
+    UV none = svp ? SvUV(*svp) : 0x7fffffff;
+    UV uv;
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    while (s < send) {
+	if ((uv = swash_fetch(rv, s)) < none)
+	    matches++;
+	s += UTF8SKIP(s);
+    }
+
+    return matches;
+}
+
+STATIC I32
+S_do_trans_UC_simple(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    U8 *d;
+    I32 matches = 0;
+    STRLEN len;
+
+    SV* rv = (SV*)cSVOP->op_sv;
+    HV* hv = (HV*)SvRV(rv);
+    SV** svp = hv_fetch(hv, "NONE", 4, FALSE);
+    UV none = svp ? SvUV(*svp) : 0x7fffffff;
+    UV extra = none + 1;
+    UV final;
+    UV uv;
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    svp = hv_fetch(hv, "FINAL", 5, FALSE);
+    if (svp)
+	final = SvUV(*svp);
+
+    d = s;
+    while (s < send) {
+	if ((uv = swash_fetch(rv, s)) < none) {
+	    s += UTF8SKIP(s);
+	    matches++;
+	    *d++ = (U8)uv;
+	}
+	else if (uv == none) {
+	    I32 ulen;
+	    uv = utf8_to_uv(s, &ulen);
+	    s += ulen;
+	    *d++ = (U8)uv;
+	}
+	else if (uv == extra) {
+	    s += UTF8SKIP(s);
+	    matches++;
+	    *d++ = (U8)final;
+	}
+	else
+	    s += UTF8SKIP(s);
+    }
+    *d = '\0';
+    SvCUR_set(sv, d - (U8*)SvPVX(sv));
+    SvSETMAGIC(sv);
+
+    return matches;
+}
+
+STATIC I32
+S_do_trans_CU_simple(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    U8 *d;
+    U8 *dst;
+    I32 matches = 0;
+    STRLEN len;
+
+    SV* rv = (SV*)cSVOP->op_sv;
+    HV* hv = (HV*)SvRV(rv);
+    SV** svp = hv_fetch(hv, "NONE", 4, FALSE);
+    UV none = svp ? SvUV(*svp) : 0x7fffffff;
+    UV extra = none + 1;
+    UV final;
+    UV uv;
+    U8 tmpbuf[UTF8_MAXLEN];
+    I32 bits = 16;
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    svp = hv_fetch(hv, "BITS", 4, FALSE);
+    if (svp)
+	bits = (I32)SvIV(*svp);
+
+    svp = hv_fetch(hv, "FINAL", 5, FALSE);
+    if (svp)
+	final = SvUV(*svp);
+
+    Newz(801, d, len * (bits >> 3) + 1, U8);
+    dst = d;
+
+    while (s < send) {
+	uv = *s++;
+	if (uv < 0x80)
+	    tmpbuf[0] = uv;
+	else {
+	    tmpbuf[0] = (( uv >>  6)         | 0xc0);
+	    tmpbuf[1] = (( uv        & 0x3f) | 0x80);
+	}
+
+	if ((uv = swash_fetch(rv, tmpbuf)) < none) {
+	    matches++;
+	    d = uv_to_utf8(d, uv);
+	}
+	else if (uv == none)
+	    d = uv_to_utf8(d, s[-1]);
+	else if (uv == extra) {
+	    matches++;
+	    d = uv_to_utf8(d, final);
+	}
+    }
+    *d = '\0';
+    sv_usepvn_mg(sv, (char*)dst, d - dst);
+
+    return matches;
+}
+
+/* utf-8 to latin-1 */
+
+STATIC I32
+S_do_trans_UC_trivial(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    U8 *d;
+    STRLEN len;
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    d = s;
+    while (s < send) {
+	if (*s < 0x80)
+	    *d++ = *s++;
+	else {
+	    I32 ulen;
+	    UV uv = utf8_to_uv(s, &ulen);
+	    s += ulen;
+	    *d++ = (U8)uv;
+	}
+    }
+    *d = '\0';
+    SvCUR_set(sv, d - (U8*)SvPVX(sv));
+    SvSETMAGIC(sv);
+
+    return SvCUR(sv);
+}
+
+/* latin-1 to utf-8 */
+
+STATIC I32
+S_do_trans_CU_trivial(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    U8 *d;
+    U8 *dst;
+    I32 matches;
+    STRLEN len;
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    Newz(801, d, len * 2 + 1, U8);
+    dst = d;
+
+    matches = send - s;
+
+    while (s < send) {
+	if (*s < 0x80)
+	    *d++ = *s++;
+	else {
+	    UV uv = *s++;
+	    *d++ = (( uv >>  6)         | 0xc0);
+	    *d++ = (( uv        & 0x3f) | 0x80);
+	}
+    }
+    *d = '\0';
+    sv_usepvn_mg(sv, (char*)dst, d - dst);
+
+    return matches;
+}
+
+STATIC I32
+S_do_trans_UU_complex(pTHX_ SV *sv)
+{
+    dTHR;
+    U8 *s;
+    U8 *send;
+    U8 *d;
+    I32 matches = 0;
+    I32 squash   = PL_op->op_private & OPpTRANS_SQUASH;
+    I32 from_utf = PL_op->op_private & OPpTRANS_FROM_UTF;
+    I32 to_utf   = PL_op->op_private & OPpTRANS_TO_UTF;
+    I32 del      = PL_op->op_private & OPpTRANS_DELETE;
+    SV* rv = (SV*)cSVOP->op_sv;
+    HV* hv = (HV*)SvRV(rv);
+    SV** svp = hv_fetch(hv, "NONE", 4, FALSE);
+    UV none = svp ? SvUV(*svp) : 0x7fffffff;
+    UV extra = none + 1;
+    UV final;
+    UV uv;
+    STRLEN len;
+    U8 *dst;
+
+    s = (U8*)SvPV(sv, len);
+    send = s + len;
+
+    svp = hv_fetch(hv, "FINAL", 5, FALSE);
+    if (svp)
+	final = SvUV(*svp);
+
+    if (PL_op->op_private & OPpTRANS_GROWS) {
+	I32 bits = 16;
+
+	svp = hv_fetch(hv, "BITS", 4, FALSE);
+	if (svp)
+	    bits = (I32)SvIV(*svp);
+
+	Newz(801, d, len * (bits >> 3) + 1, U8);
+	dst = d;
+    }
+    else {
+	d = s;
+	dst = 0;
+    }
+
+    if (squash) {
+	UV puv = 0xfeedface;
+	while (s < send) {
+	    if (from_utf) {
+		uv = swash_fetch(rv, s);
+	    }
+	    else {
+		U8 tmpbuf[2];
+		uv = *s++;
+		if (uv < 0x80)
+		    tmpbuf[0] = uv;
+		else {
+		    tmpbuf[0] = (( uv >>  6)         | 0xc0);
+		    tmpbuf[1] = (( uv        & 0x3f) | 0x80);
+		}
+		uv = swash_fetch(rv, tmpbuf);
+	    }
+	    if (uv < none) {
+		matches++;
+		if (uv != puv) {
+		    if (uv >= 0x80 && to_utf)
+			d = uv_to_utf8(d, uv);
+		    else
+			*d++ = (U8)uv;
+		    puv = uv;
+		}
+		if (from_utf)
+		    s += UTF8SKIP(s);
+		continue;
+	    }
+	    else if (uv == none) {	/* "none" is unmapped character */
+		if (from_utf) {
+		    if (*s < 0x80)
+			*d++ = *s++;
+		    else if (to_utf) {
+			int i;
+			for (i = UTF8SKIP(s); i; --i)
+			    *d++ = *s++;
+		    }
+		    else {
+			I32 ulen;
+			*d++ = (U8)utf8_to_uv(s, &ulen);
+			s += ulen;
+		    }
+		}
+		else {	/* must be to_utf only */
+		    d = uv_to_utf8(d, s[-1]);
+		}
+		puv = 0xfeedface;
+		continue;
+	    }
+	    else if (uv == extra && !del) {
+		matches++;
+		if (uv != puv) {
+		    if (final >= 0x80 && to_utf)
+			d = uv_to_utf8(d, final);
+		    else
+			*d++ = (U8)final;
+		    puv = final;
+		}
+		if (from_utf)
+		    s += UTF8SKIP(s);
+		continue;
+	    }
+	    matches++;		/* "none+1" is delete character */
+	    if (from_utf)
+		s += UTF8SKIP(s);
+	}
+    }
+    else {
+	while (s < send) {
+	    if (from_utf) {
+		uv = swash_fetch(rv, s);
+	    }
+	    else {
+		U8 tmpbuf[2];
+		uv = *s++;
+		if (uv < 0x80)
+		    tmpbuf[0] = uv;
+		else {
+		    tmpbuf[0] = (( uv >>  6)         | 0xc0);
+		    tmpbuf[1] = (( uv        & 0x3f) | 0x80);
+		}
+		uv = swash_fetch(rv, tmpbuf);
+	    }
+	    if (uv < none) {
+		matches++;
+		if (uv >= 0x80 && to_utf)
+		    d = uv_to_utf8(d, uv);
+		else
+		    *d++ = (U8)uv;
+		if (from_utf)
+		    s += UTF8SKIP(s);
+		continue;
+	    }
+	    else if (uv == none) {	/* "none" is unmapped character */
+		if (from_utf) {
+		    if (*s < 0x80)
+			*d++ = *s++;
+		    else if (to_utf) {
+			int i;
+			for (i = UTF8SKIP(s); i; --i)
+			    *d++ = *s++;
+		    }
+		    else {
+			I32 ulen;
+			*d++ = (U8)utf8_to_uv(s, &ulen);
+			s += ulen;
+		    }
+		}
+		else {	/* must be to_utf only */
+		    d = uv_to_utf8(d, s[-1]);
+		}
+		continue;
+	    }
+	    else if (uv == extra && !del) {
+		matches++;
+		if (final >= 0x80 && to_utf)
+		    d = uv_to_utf8(d, final);
+		else
+		    *d++ = (U8)final;
+		if (from_utf)
+		    s += UTF8SKIP(s);
+		continue;
+	    }
+	    matches++;		/* "none+1" is delete character */
+	    if (from_utf)
+		s += UTF8SKIP(s);
+	}
+    }
+    if (dst)
+	sv_usepvn(sv, (char*)dst, d - dst);
+    else {
+	*d = '\0';
+	SvCUR_set(sv, d - (U8*)SvPVX(sv));
+    }
+    SvSETMAGIC(sv);
+
+    return matches;
+}
+
+I32
+Perl_do_trans(pTHX_ SV *sv)
+{
+    dTHR;
+    STRLEN len;
+
+    if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_IDENTICAL))
+	Perl_croak(aTHX_ PL_no_modify);
+
+    (void)SvPV(sv, len);
+    if (!len)
+	return 0;
+    if (!SvPOKp(sv))
+	(void)SvPV_force(sv, len);
+    (void)SvPOK_only(sv);
+
+    DEBUG_t( Perl_deb(aTHX_ "2.TBL\n"));
+
+    switch (PL_op->op_private & 63) {
+    case 0:
+	return do_trans_CC_simple(sv);
+
+    case OPpTRANS_FROM_UTF:
+	return do_trans_UC_simple(sv);
+
+    case OPpTRANS_TO_UTF:
+	return do_trans_CU_simple(sv);
+
+    case OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF:
+	return do_trans_UU_simple(sv);
+
+    case OPpTRANS_IDENTICAL:
+	return do_trans_CC_count(sv);
+
+    case OPpTRANS_FROM_UTF|OPpTRANS_IDENTICAL:
+	return do_trans_UC_trivial(sv);
+
+    case OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL:
+	return do_trans_CU_trivial(sv);
+
+    case OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL:
+	return do_trans_UU_count(sv);
+
+    default:
+	if (PL_op->op_private & (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF))
+	    return do_trans_UU_complex(sv); /* could be UC or CU too */
+	else
+	    return do_trans_CC_complex(sv);
+    }
+}
+
 void
-do_join(register SV *sv, SV *del, register SV **mark, register SV **sp)
+Perl_do_join(pTHX_ register SV *sv, SV *del, register SV **mark, register SV **sp)
 {
     SV **oldmark = mark;
     register I32 items = sp - mark;
@@ -102,8 +641,7 @@ do_join(register SV *sv, SV *del, register SV **mark, register SV **sp)
 
     mark++;
     len = (items > 0 ? (delimlen * (items - 1) ) : 0);
-    if (SvTYPE(sv) < SVt_PV)
-	sv_upgrade(sv, SVt_PV);
+    (void)SvUPGRADE(sv, SVt_PV);
     if (SvLEN(sv) < len + items) {	/* current length is way too short */
 	while (items-- > 0) {
 	    if (*mark && !SvGMAGICAL(*mark) && SvOK(*mark)) {
@@ -115,7 +653,7 @@ do_join(register SV *sv, SV *del, register SV **mark, register SV **sp)
 	SvGROW(sv, len + 1);		/* so try to pre-extend */
 
 	mark = oldmark;
-	items = sp - mark;;
+	items = sp - mark;
 	++mark;
     }
 
@@ -147,7 +685,7 @@ do_join(register SV *sv, SV *del, register SV **mark, register SV **sp)
 }
 
 void
-do_sprintf(SV *sv, I32 len, SV **sarg)
+Perl_do_sprintf(pTHX_ SV *sv, I32 len, SV **sarg)
 {
     STRLEN patlen;
     char *pat = SvPV(*sarg, patlen);
@@ -159,14 +697,146 @@ do_sprintf(SV *sv, I32 len, SV **sarg)
 	SvTAINTED_on(sv);
 }
 
+UV
+Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size)
+{
+    STRLEN srclen, len;
+    unsigned char *s = (unsigned char *) SvPV(sv, srclen);
+    UV retnum = 0;
+
+    if (offset < 0)
+	return retnum;
+    if (size < 1 || (size & (size-1))) /* size < 1 or not a power of two */ 
+	Perl_croak(aTHX_ "Illegal number of bits in vec");
+    offset *= size;	/* turn into bit offset */
+    len = (offset + size + 7) / 8;	/* required number of bytes */
+    if (len > srclen) {
+	if (size <= 8)
+	    retnum = 0;
+	else {
+	    offset >>= 3;	/* turn into byte offset */
+	    if (size == 16) {
+		if (offset >= srclen)
+		    retnum = 0;
+		else
+		    retnum = (UV) s[offset] <<  8;
+	    }
+	    else if (size == 32) {
+		if (offset >= srclen)
+		    retnum = 0;
+		else if (offset + 1 >= srclen)
+		    retnum =
+			((UV) s[offset    ] << 24);
+		else if (offset + 2 >= srclen)
+		    retnum =
+			((UV) s[offset    ] << 24) +
+			((UV) s[offset + 1] << 16);
+		else
+		    retnum =
+			((UV) s[offset    ] << 24) +
+			((UV) s[offset + 1] << 16) +
+			(     s[offset + 2] <<  8);
+	    }
+#ifdef UV_IS_QUAD
+	    else if (size == 64) {
+		dTHR;
+		if (ckWARN(WARN_PORTABLE))
+		    Perl_warner(aTHX_ WARN_PORTABLE,
+				"Bit vector size > 32 non-portable");
+		if (offset >= srclen)
+		    retnum = 0;
+		else if (offset + 1 >= srclen)
+		    retnum =
+			(UV) s[offset     ] << 56;
+		else if (offset + 2 >= srclen)
+		    retnum =
+			((UV) s[offset    ] << 56) +
+			((UV) s[offset + 1] << 48);
+		else if (offset + 3 >= srclen)
+		    retnum =
+			((UV) s[offset    ] << 56) +
+			((UV) s[offset + 1] << 48) +
+			((UV) s[offset + 2] << 40);
+		else if (offset + 4 >= srclen)
+		    retnum =
+			((UV) s[offset    ] << 56) +
+			((UV) s[offset + 1] << 48) +
+			((UV) s[offset + 2] << 40) +
+			((UV) s[offset + 3] << 32);
+		else if (offset + 5 >= srclen)
+		    retnum =
+			((UV) s[offset    ] << 56) +
+			((UV) s[offset + 1] << 48) +
+			((UV) s[offset + 2] << 40) +
+			((UV) s[offset + 3] << 32) +
+			(     s[offset + 4] << 24);
+		else if (offset + 6 >= srclen)
+		    retnum =
+			((UV) s[offset    ] << 56) +
+			((UV) s[offset + 1] << 48) +
+			((UV) s[offset + 2] << 40) +
+			((UV) s[offset + 3] << 32) +
+			((UV) s[offset + 4] << 24) +
+			((UV) s[offset + 5] << 16);
+		else
+		    retnum = 
+			((UV) s[offset    ] << 56) +
+			((UV) s[offset + 1] << 48) +
+			((UV) s[offset + 2] << 40) +
+			((UV) s[offset + 3] << 32) +
+			((UV) s[offset + 4] << 24) +
+			((UV) s[offset + 5] << 16) +
+			(     s[offset + 6] <<  8);
+	    }
+#endif
+	}
+    }
+    else if (size < 8)
+	retnum = (s[offset >> 3] >> (offset & 7)) & ((1 << size) - 1);
+    else {
+	offset >>= 3;	/* turn into byte offset */
+	if (size == 8)
+	    retnum = s[offset];
+	else if (size == 16)
+	    retnum =
+		((UV) s[offset] <<      8) +
+		      s[offset + 1];
+	else if (size == 32)
+	    retnum =
+		((UV) s[offset    ] << 24) +
+		((UV) s[offset + 1] << 16) +
+		(     s[offset + 2] <<  8) +
+		      s[offset + 3];
+#ifdef UV_IS_QUAD
+	else if (size == 64) {
+	    dTHR;
+	    if (ckWARN(WARN_PORTABLE))
+		Perl_warner(aTHX_ WARN_PORTABLE,
+			    "Bit vector size > 32 non-portable");
+	    retnum =
+		((UV) s[offset    ] << 56) +
+		((UV) s[offset + 1] << 48) +
+		((UV) s[offset + 2] << 40) +
+		((UV) s[offset + 3] << 32) +
+		((UV) s[offset + 4] << 24) +
+		((UV) s[offset + 5] << 16) +
+		(     s[offset + 6] <<  8) +
+		      s[offset + 7];
+	}
+#endif
+    }
+
+    return retnum;
+}
+
 void
-do_vecset(SV *sv)
+Perl_do_vecset(pTHX_ SV *sv)
 {
     SV *targ = LvTARG(sv);
     register I32 offset;
     register I32 size;
     register unsigned char *s;
-    register unsigned long lval;
+    register UV lval;
     I32 mask;
     STRLEN targlen;
     STRLEN len;
@@ -174,11 +844,14 @@ do_vecset(SV *sv)
     if (!targ)
 	return;
     s = (unsigned char*)SvPV_force(targ, targlen);
-    lval = U_L(SvNV(sv));
+    lval = SvUV(sv);
     offset = LvTARGOFF(sv);
     size = LvTARGLEN(sv);
+    if (size < 1 || (size & (size-1))) /* size < 1 or not a power of two */ 
+	Perl_croak(aTHX_ "Illegal number of bits in vec");
     
-    len = (offset + size + 7) / 8;
+    offset *= size;			/* turn into bit offset */
+    len = (offset + size + 7) / 8;	/* required number of bytes */
     if (len > targlen) {
 	s = (unsigned char*)SvGROW(targ, len + 1);
 	(void)memzero(s + targlen, len - targlen + 1);
@@ -189,32 +862,50 @@ do_vecset(SV *sv)
 	mask = (1 << size) - 1;
 	size = offset & 7;
 	lval &= mask;
-	offset >>= 3;
+	offset >>= 3;			/* turn into byte offset */
 	s[offset] &= ~(mask << size);
 	s[offset] |= lval << size;
     }
     else {
-	offset >>= 3;
+	offset >>= 3;			/* turn into byte offset */
 	if (size == 8)
-	    s[offset] = lval & 255;
+	    s[offset  ] = lval         & 0xff;
 	else if (size == 16) {
-	    s[offset] = (lval >> 8) & 255;
-	    s[offset+1] = lval & 255;
+	    s[offset  ] = (lval >>  8) & 0xff;
+	    s[offset+1] = lval         & 0xff;
 	}
 	else if (size == 32) {
-	    s[offset] = (lval >> 24) & 255;
-	    s[offset+1] = (lval >> 16) & 255;
-	    s[offset+2] = (lval >> 8) & 255;
-	    s[offset+3] = lval & 255;
+	    s[offset  ] = (lval >> 24) & 0xff;
+	    s[offset+1] = (lval >> 16) & 0xff;
+	    s[offset+2] = (lval >>  8) & 0xff;
+	    s[offset+3] =  lval        & 0xff;
 	}
+#ifdef UV_IS_QUAD
+	else if (size == 64) {
+	    dTHR;
+	    if (ckWARN(WARN_PORTABLE))
+		Perl_warner(aTHX_ WARN_PORTABLE,
+			    "Bit vector size > 32 non-portable");
+	    s[offset  ] = (lval >> 56) & 0xff;
+	    s[offset+1] = (lval >> 48) & 0xff;
+	    s[offset+2] = (lval >> 40) & 0xff;
+	    s[offset+3] = (lval >> 32) & 0xff;
+	    s[offset+4] = (lval >> 24) & 0xff;
+	    s[offset+5] = (lval >> 16) & 0xff;
+	    s[offset+6] = (lval >>  8) & 0xff;
+	    s[offset+7] =  lval        & 0xff;
+	}
+#endif
     }
+    SvSETMAGIC(targ);
 }
 
 void
-do_chop(register SV *astr, register SV *sv)
+Perl_do_chop(pTHX_ register SV *astr, register SV *sv)
 {
     STRLEN len;
     char *s;
+    dTHR;
     
     if (SvTYPE(sv) == SVt_PVAV) {
 	register I32 i;
@@ -228,32 +919,53 @@ do_chop(register SV *astr, register SV *sv)
 	}
         return;
     }
-    if (SvTYPE(sv) == SVt_PVHV) {
+    else if (SvTYPE(sv) == SVt_PVHV) {
         HV* hv = (HV*)sv;
 	HE* entry;
         (void)hv_iterinit(hv);
         /*SUPPRESS 560*/
-        while (entry = hv_iternext(hv))
+        while ((entry = hv_iternext(hv)))
             do_chop(astr,hv_iterval(hv,entry));
         return;
     }
+    else if (SvREADONLY(sv))
+	Perl_croak(aTHX_ PL_no_modify);
     s = SvPV(sv, len);
     if (len && !SvPOK(sv))
 	s = SvPV_force(sv, len);
-    if (s && len) {
+    if (DO_UTF8(sv)) {
+	if (s && len) {
+	    char *send = s + len;
+	    char *start = s;
+	    s = send - 1;
+	    while ((*s & 0xc0) == 0x80)
+		--s;
+	    if (UTF8SKIP(s) != send - s && ckWARN_d(WARN_UTF8))
+		Perl_warner(aTHX_ WARN_UTF8, "Malformed UTF-8 character");
+	    sv_setpvn(astr, s, send - s);
+	    *s = '\0';
+	    SvCUR_set(sv, s - start);
+	    SvNIOK_off(sv);
+	    SvUTF8_on(astr);
+	}
+	else
+	    sv_setpvn(astr, "", 0);
+    }
+    else if (s && len) {
 	s += --len;
 	sv_setpvn(astr, s, 1);
 	*s = '\0';
 	SvCUR_set(sv, len);
+	SvUTF8_off(sv);
 	SvNIOK_off(sv);
     }
     else
 	sv_setpvn(astr, "", 0);
     SvSETMAGIC(sv);
-} 
+}
 
 I32
-do_chomp(register SV *sv)
+Perl_do_chomp(pTHX_ register SV *sv)
 {
     dTHR;
     register I32 count;
@@ -262,6 +974,8 @@ do_chomp(register SV *sv)
 
     if (RsSNARF(PL_rs))
 	return 0;
+    if (RsRECORD(PL_rs))
+      return 0;
     count = 0;
     if (SvTYPE(sv) == SVt_PVAV) {
 	register I32 i;
@@ -275,15 +989,17 @@ do_chomp(register SV *sv)
 	}
         return count;
     }
-    if (SvTYPE(sv) == SVt_PVHV) {
+    else if (SvTYPE(sv) == SVt_PVHV) {
         HV* hv = (HV*)sv;
 	HE* entry;
         (void)hv_iterinit(hv);
         /*SUPPRESS 560*/
-        while (entry = hv_iternext(hv))
+        while ((entry = hv_iternext(hv)))
             count += do_chomp(hv_iterval(hv,entry));
         return count;
     }
+    else if (SvREADONLY(sv))
+	Perl_croak(aTHX_ PL_no_modify);
     s = SvPV(sv, len);
     if (len && !SvPOKp(sv))
 	s = SvPV_force(sv, len);
@@ -327,7 +1043,7 @@ do_chomp(register SV *sv)
 } 
 
 void
-do_vop(I32 optype, SV *sv, SV *left, SV *right)
+Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
 {
     dTHR;	/* just for taint */
 #ifdef LIBERAL
@@ -344,6 +1060,13 @@ do_vop(I32 optype, SV *sv, SV *left, SV *right)
     I32 lensave;
     char *lsave;
     char *rsave;
+    bool left_utf = DO_UTF8(left);
+    bool right_utf = DO_UTF8(right);
+
+    if (left_utf && !right_utf)
+	sv_utf8_upgrade(right);
+    if (!left_utf && right_utf)
+	sv_utf8_upgrade(left);
 
     if (sv != left || (optype != OP_BIT_AND && !SvOK(sv) && !SvGMAGICAL(sv)))
 	sv_setpvn(sv, "", 0);	/* avoid undef warning on |= and ^= */
@@ -368,6 +1091,69 @@ do_vop(I32 optype, SV *sv, SV *left, SV *right)
     }
     SvCUR_set(sv, len);
     (void)SvPOK_only(sv);
+    if (left_utf || right_utf) {
+	UV duc, luc, ruc;
+	STRLEN lulen = leftlen;
+	STRLEN rulen = rightlen;
+	STRLEN dulen = 0;
+	I32 ulen;
+
+	if (optype != OP_BIT_AND)
+	    dc = SvGROW(sv, leftlen+rightlen+1);
+
+	switch (optype) {
+	case OP_BIT_AND:
+	    while (lulen && rulen) {
+		luc = utf8_to_uv((U8*)lc, &ulen);
+		lc += ulen;
+		lulen -= ulen;
+		ruc = utf8_to_uv((U8*)rc, &ulen);
+		rc += ulen;
+		rulen -= ulen;
+		duc = luc & ruc;
+		dc = (char*)uv_to_utf8((U8*)dc, duc);
+	    }
+	    dulen = dc - SvPVX(sv);
+	    SvCUR_set(sv, dulen);
+	    break;
+	case OP_BIT_XOR:
+	    while (lulen && rulen) {
+		luc = utf8_to_uv((U8*)lc, &ulen);
+		lc += ulen;
+		lulen -= ulen;
+		ruc = utf8_to_uv((U8*)rc, &ulen);
+		rc += ulen;
+		rulen -= ulen;
+		duc = luc ^ ruc;
+		dc = (char*)uv_to_utf8((U8*)dc, duc);
+	    }
+	    goto mop_up_utf;
+	case OP_BIT_OR:
+	    while (lulen && rulen) {
+		luc = utf8_to_uv((U8*)lc, &ulen);
+		lc += ulen;
+		lulen -= ulen;
+		ruc = utf8_to_uv((U8*)rc, &ulen);
+		rc += ulen;
+		rulen -= ulen;
+		duc = luc | ruc;
+		dc = (char*)uv_to_utf8((U8*)dc, duc);
+	    }
+	  mop_up_utf:
+	    dulen = dc - SvPVX(sv);
+	    SvCUR_set(sv, dulen);
+	    if (rulen)
+		sv_catpvn(sv, rc, rulen);
+	    else if (lulen)
+		sv_catpvn(sv, lc, lulen);
+	    else
+		*SvEND(sv) = '\0';
+	    break;
+	}
+	SvUTF8_on(sv);
+	goto finish;
+    }
+    else
 #ifdef LIBERAL
     if (len >= sizeof(long)*4 &&
 	!((long)dc % sizeof(long)) &&
@@ -438,11 +1224,12 @@ do_vop(I32 optype, SV *sv, SV *left, SV *right)
 	    break;
 	}
     }
+finish:
     SvTAINT(sv);
 }
 
 OP *
-do_kv(ARGSproto)
+Perl_do_kv(pTHX)
 {
     djSP;
     HV *hv = (HV*)POPs;
@@ -506,16 +1293,15 @@ do_kv(ARGSproto)
     EXTEND(SP, HvKEYS(keys) * (dokeys + dovalues));
 
     PUTBACK;	/* hv_iternext and hv_iterval might clobber stack_sp */
-    while (entry = hv_iternext(keys)) {
+    while ((entry = hv_iternext(keys))) {
 	SPAGAIN;
 	if (dokeys)
 	    XPUSHs(hv_iterkeysv(entry));	/* won't clobber stack_sp */
 	if (dovalues) {
-	    tmpstr = sv_newmortal();
 	    PUTBACK;
-	    sv_setsv(tmpstr,realhv ?
-		     hv_iterval(hv,entry) : avhv_iterval((AV*)hv,entry));
-	    DEBUG_H(sv_setpvf(tmpstr, "%lu%%%d=%lu",
+	    tmpstr = realhv ?
+		     hv_iterval(hv,entry) : avhv_iterval((AV*)hv,entry);
+	    DEBUG_H(Perl_sv_setpvf(aTHX_ tmpstr, "%lu%%%d=%lu",
 			    (unsigned long)HeHASH(entry),
 			    HvMAX(keys)+1,
 			    (unsigned long)(HeHASH(entry) & HvMAX(keys))));
diff --git a/contrib/perl5/dosish.h b/contrib/perl5/dosish.h
index 1d52d0c0cdd4..08b48fa0fe80 100644
--- a/contrib/perl5/dosish.h
+++ b/contrib/perl5/dosish.h
@@ -8,6 +8,7 @@
 #  define BIT_BUCKET "nul"
 #  define OP_BINARY O_BINARY
 #  define PERL_SYS_INIT(c,v) Perl_DJGPP_init(c,v)
+#  define init_os_extras Perl_init_os_extras
 #  include 
 #  define HAS_UTIME
 #  define HAS_KILL
@@ -16,21 +17,9 @@
 #    define NO_LOCALECONV_MON_THOUSANDS_SEP
 #  endif
 #  ifdef USE_THREADS
-#    define NEED_PTHREAD_INIT
 #    define OLD_PTHREADS_API
-#    define YIELD pthread_yield(NULL)
-#    define DETACH(t)				\
-       STMT_START {				\
-         if (pthread_detach(&(t)->self)) {	\
-             MUTEX_UNLOCK(&(t)->mutex);		\
-             croak("panic: DETACH");		\
-         }					\
-       } STMT_END
-#    define pthread_mutexattr_default NULL
-#    define pthread_condattr_default NULL
-#    define pthread_addr_t any_t
-#    define PTHREAD_CREATE_JOINABLE (&err)
 #  endif
+#  define PERL_FS_VER_FMT	"%d_%d_%d"
 #else	/* DJGPP */
 #  ifdef WIN32
 #    define PERL_SYS_INIT(c,v)	Perl_win32_init(c,v)
@@ -41,9 +30,8 @@
 #  endif
 #endif	/* DJGPP */
 
-#define PERL_SYS_TERM() MALLOC_TERM
+#define PERL_SYS_TERM() OP_REFCNT_TERM; MALLOC_TERM
 #define dXSUB_SYS
-#define TMPPATH "plXXXXXX"
 
 /*
  * 5.003_07 and earlier keyed on #ifdef MSDOS for determining if we were 
@@ -64,7 +52,7 @@
 
 /* USEMYBINMODE
  *	This symbol, if defined, indicates that the program should
- *	use the routine my_binmode(FILE *fp, char iotype) to insure
+ *	use the routine my_binmode(FILE *fp, char iotype, int mode) to insure
  *	that a file is in "binary" mode -- that is, that no translation
  *	of bytes occurs on read or write operations.
  */
@@ -123,13 +111,4 @@
 #  define HAS_KILL
 #  define HAS_WAIT
 #  define HAS_CHOWN
-/*
- * This provides a layer of functions and macros to ensure extensions will
- * get to use the same RTL functions as the core.
- */
-#  ifndef HASATTRIBUTE
-#    ifndef PERL_OBJECT
-#      include 
-#    endif
-#  endif
 #endif	/* WIN32 */
diff --git a/contrib/perl5/dump.c b/contrib/perl5/dump.c
index 782c62d2b3a1..86c56ce8c88f 100644
--- a/contrib/perl5/dump.c
+++ b/contrib/perl5/dump.c
@@ -1,6 +1,6 @@
 /*    dump.c
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2000, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -13,28 +13,40 @@
  */
 
 #include "EXTERN.h"
+#define PERL_IN_DUMP_C
 #include "perl.h"
-
-#ifndef PERL_OBJECT
-static void dump(char *pat, ...);
-#endif /* PERL_OBJECT */
+#include "regcomp.h"
 
 void
-dump_all(void)
+Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...)
 {
-#ifdef DEBUGGING
-    dTHR;
-    PerlIO_setlinebuf(Perl_debug_log);
-    if (PL_main_root)
-	dump_op(PL_main_root);
-    dump_packsubs(PL_defstash);
-#endif	/* DEBUGGING */
+    va_list args;
+    va_start(args, pat);
+    dump_vindent(level, file, pat, &args);
+    va_end(args);
 }
 
 void
-dump_packsubs(HV *stash)
+Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args)
+{
+    dTHR;
+    PerlIO_printf(file, "%*s", (int)(level*PL_dumpindent), "");
+    PerlIO_vprintf(file, pat, *args);
+}
+
+void
+Perl_dump_all(pTHX)
+{
+    dTHR;
+    PerlIO_setlinebuf(Perl_debug_log);
+    if (PL_main_root)
+	op_dump(PL_main_root);
+    dump_packsubs(PL_defstash);
+}
+
+void
+Perl_dump_packsubs(pTHX_ HV *stash)
 {
-#ifdef DEBUGGING
     dTHR;
     I32	i;
     HE	*entry;
@@ -56,81 +68,336 @@ dump_packsubs(HV *stash)
 		dump_packsubs(hv);		/* nested package */
 	}
     }
-#endif	/* DEBUGGING */
 }
 
 void
-dump_sub(GV *gv)
+Perl_dump_sub(pTHX_ GV *gv)
 {
-#ifdef DEBUGGING
     SV *sv = sv_newmortal();
 
     gv_fullname3(sv, gv, Nullch);
-    dump("\nSUB %s = ", SvPVX(sv));
+    Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nSUB %s = ", SvPVX(sv));
     if (CvXSUB(GvCV(gv)))
-	dump("(xsub 0x%x %d)\n",
+	Perl_dump_indent(aTHX_ 0, Perl_debug_log, "(xsub 0x%lx %d)\n",
 	    (long)CvXSUB(GvCV(gv)),
-	    CvXSUBANY(GvCV(gv)).any_i32);
+	    (int)CvXSUBANY(GvCV(gv)).any_i32);
     else if (CvROOT(GvCV(gv)))
-	dump_op(CvROOT(GvCV(gv)));
+	op_dump(CvROOT(GvCV(gv)));
     else
-	dump("\n");
-#endif	/* DEBUGGING */
+	Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\n");
 }
 
 void
-dump_form(GV *gv)
+Perl_dump_form(pTHX_ GV *gv)
 {
-#ifdef DEBUGGING
     SV *sv = sv_newmortal();
 
     gv_fullname3(sv, gv, Nullch);
-    dump("\nFORMAT %s = ", SvPVX(sv));
+    Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nFORMAT %s = ", SvPVX(sv));
     if (CvROOT(GvFORM(gv)))
-	dump_op(CvROOT(GvFORM(gv)));
+	op_dump(CvROOT(GvFORM(gv)));
     else
-	dump("\n");
-#endif	/* DEBUGGING */
+	Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\n");
 }
 
 void
-dump_eval(void)
+Perl_dump_eval(pTHX)
 {
-#ifdef DEBUGGING
-    dump_op(PL_eval_root);
-#endif	/* DEBUGGING */
+    op_dump(PL_eval_root);
+}
+
+char *
+Perl_pv_display(pTHX_ SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)
+{
+    int truncated = 0;
+    int nul_terminated = len > cur && pv[cur] == '\0';
+
+    sv_setpvn(sv, "\"", 1);
+    for (; cur--; pv++) {
+	if (pvlim && SvCUR(sv) >= pvlim) {
+            truncated++;
+	    break;
+        }
+        if (isPRINT(*pv)) {
+            switch (*pv) {
+	    case '\t': sv_catpvn(sv, "\\t", 2);  break;
+	    case '\n': sv_catpvn(sv, "\\n", 2);  break;
+	    case '\r': sv_catpvn(sv, "\\r", 2);  break;
+	    case '\f': sv_catpvn(sv, "\\f", 2);  break;
+	    case '"':  sv_catpvn(sv, "\\\"", 2); break;
+	    case '\\': sv_catpvn(sv, "\\\\", 2); break;
+	    default:   sv_catpvn(sv, pv, 1);     break;
+            }
+        }
+	else {
+	    if (cur && isDIGIT(*(pv+1)))
+		Perl_sv_catpvf(aTHX_ sv, "\\%03o", (U8)*pv);
+	    else
+		Perl_sv_catpvf(aTHX_ sv, "\\%o", (U8)*pv);
+        }
+    }
+    sv_catpvn(sv, "\"", 1);
+    if (truncated)
+	sv_catpvn(sv, "...", 3);
+    if (nul_terminated)
+	sv_catpvn(sv, "\\0", 2);
+
+    return SvPVX(sv);
+}
+
+char *
+Perl_sv_peek(pTHX_ SV *sv)
+{
+    SV *t = sv_newmortal();
+    STRLEN n_a;
+    int unref = 0;
+
+    sv_setpvn(t, "", 0);
+  retry:
+    if (!sv) {
+	sv_catpv(t, "VOID");
+	goto finish;
+    }
+    else if (sv == (SV*)0x55555555 || SvTYPE(sv) == 'U') {
+	sv_catpv(t, "WILD");
+	goto finish;
+    }
+    else if (sv == &PL_sv_undef || sv == &PL_sv_no || sv == &PL_sv_yes) {
+	if (sv == &PL_sv_undef) {
+	    sv_catpv(t, "SV_UNDEF");
+	    if (!(SvFLAGS(sv) & (SVf_OK|SVf_OOK|SVs_OBJECT|
+				 SVs_GMG|SVs_SMG|SVs_RMG)) &&
+		SvREADONLY(sv))
+		goto finish;
+	}
+	else if (sv == &PL_sv_no) {
+	    sv_catpv(t, "SV_NO");
+	    if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT|
+				 SVs_GMG|SVs_SMG|SVs_RMG)) &&
+		!(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY|
+				  SVp_POK|SVp_NOK)) &&
+		SvCUR(sv) == 0 &&
+		SvNVX(sv) == 0.0)
+		goto finish;
+	}
+	else {
+	    sv_catpv(t, "SV_YES");
+	    if (!(SvFLAGS(sv) & (SVf_ROK|SVf_OOK|SVs_OBJECT|
+				 SVs_GMG|SVs_SMG|SVs_RMG)) &&
+		!(~SvFLAGS(sv) & (SVf_POK|SVf_NOK|SVf_READONLY|
+				  SVp_POK|SVp_NOK)) &&
+		SvCUR(sv) == 1 &&
+		SvPVX(sv) && *SvPVX(sv) == '1' &&
+		SvNVX(sv) == 1.0)
+		goto finish;
+	}
+	sv_catpv(t, ":");
+    }
+    else if (SvREFCNT(sv) == 0) {
+	sv_catpv(t, "(");
+	unref++;
+    }
+    if (SvROK(sv)) {
+	sv_catpv(t, "\\");
+	if (SvCUR(t) + unref > 10) {
+	    SvCUR(t) = unref + 3;
+	    *SvEND(t) = '\0';
+	    sv_catpv(t, "...");
+	    goto finish;
+	}
+	sv = (SV*)SvRV(sv);
+	goto retry;
+    }
+    switch (SvTYPE(sv)) {
+    default:
+	sv_catpv(t, "FREED");
+	goto finish;
+
+    case SVt_NULL:
+	sv_catpv(t, "UNDEF");
+	goto finish;
+    case SVt_IV:
+	sv_catpv(t, "IV");
+	break;
+    case SVt_NV:
+	sv_catpv(t, "NV");
+	break;
+    case SVt_RV:
+	sv_catpv(t, "RV");
+	break;
+    case SVt_PV:
+	sv_catpv(t, "PV");
+	break;
+    case SVt_PVIV:
+	sv_catpv(t, "PVIV");
+	break;
+    case SVt_PVNV:
+	sv_catpv(t, "PVNV");
+	break;
+    case SVt_PVMG:
+	sv_catpv(t, "PVMG");
+	break;
+    case SVt_PVLV:
+	sv_catpv(t, "PVLV");
+	break;
+    case SVt_PVAV:
+	sv_catpv(t, "AV");
+	break;
+    case SVt_PVHV:
+	sv_catpv(t, "HV");
+	break;
+    case SVt_PVCV:
+	if (CvGV(sv))
+	    Perl_sv_catpvf(aTHX_ t, "CV(%s)", GvNAME(CvGV(sv)));
+	else
+	    sv_catpv(t, "CV()");
+	goto finish;
+    case SVt_PVGV:
+	sv_catpv(t, "GV");
+	break;
+    case SVt_PVBM:
+	sv_catpv(t, "BM");
+	break;
+    case SVt_PVFM:
+	sv_catpv(t, "FM");
+	break;
+    case SVt_PVIO:
+	sv_catpv(t, "IO");
+	break;
+    }
+
+    if (SvPOKp(sv)) {
+	if (!SvPVX(sv))
+	    sv_catpv(t, "(null)");
+	else {
+	    SV *tmp = newSVpvn("", 0);
+	    sv_catpv(t, "(");
+	    if (SvOOK(sv))
+		Perl_sv_catpvf(aTHX_ t, "[%s]", pv_display(tmp, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, 127));
+	    Perl_sv_catpvf(aTHX_ t, "%s)", pv_display(tmp, SvPVX(sv), SvCUR(sv), SvLEN(sv), 127));
+	    SvREFCNT_dec(tmp);
+	}
+    }
+    else if (SvNOKp(sv)) {
+ 	RESTORE_NUMERIC_STANDARD();
+	Perl_sv_catpvf(aTHX_ t, "(%g)",SvNVX(sv));
+ 	RESTORE_NUMERIC_LOCAL();
+    }
+    else if (SvIOKp(sv)) {
+	if (SvIsUV(sv))
+	    Perl_sv_catpvf(aTHX_ t, "(%"UVuf")", (UV)SvUVX(sv));
+	else
+            Perl_sv_catpvf(aTHX_ t, "(%"IVdf")", (IV)SvIVX(sv));
+    }
+    else
+	sv_catpv(t, "()");
+    
+  finish:
+    if (unref) {
+	while (unref--)
+	    sv_catpv(t, ")");
+    }
+    return SvPV(t, n_a);
 }
 
 void
-dump_op(OP *o)
+Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm)
 {
-#ifdef DEBUGGING
-    dump("{\n");
+    char ch;
+
+    if (!pm) {
+	Perl_dump_indent(aTHX_ level, file, "{}\n");
+	return;
+    }
+    Perl_dump_indent(aTHX_ level, file, "{\n");
+    level++;
+    if (pm->op_pmflags & PMf_ONCE)
+	ch = '?';
+    else
+	ch = '/';
+    if (pm->op_pmregexp)
+	Perl_dump_indent(aTHX_ level, file, "PMf_PRE %c%s%c%s\n",
+	     ch, pm->op_pmregexp->precomp, ch,
+	     (pm->op_private & OPpRUNTIME) ? " (RUNTIME)" : "");
+    else
+	Perl_dump_indent(aTHX_ level, file, "PMf_PRE (RUNTIME)\n");
+    if (pm->op_type != OP_PUSHRE && pm->op_pmreplroot) {
+	Perl_dump_indent(aTHX_ level, file, "PMf_REPL = ");
+	op_dump(pm->op_pmreplroot);
+    }
+    if (pm->op_pmflags || (pm->op_pmregexp && pm->op_pmregexp->check_substr)) {
+	SV *tmpsv = newSVpvn("", 0);
+	if (pm->op_pmdynflags & PMdf_USED)
+	    sv_catpv(tmpsv, ",USED");
+	if (pm->op_pmdynflags & PMdf_TAINTED)
+	    sv_catpv(tmpsv, ",TAINTED");
+	if (pm->op_pmflags & PMf_ONCE)
+	    sv_catpv(tmpsv, ",ONCE");
+	if (pm->op_pmregexp && pm->op_pmregexp->check_substr
+	    && !(pm->op_pmregexp->reganch & ROPT_NOSCAN))
+	    sv_catpv(tmpsv, ",SCANFIRST");
+	if (pm->op_pmregexp && pm->op_pmregexp->check_substr
+	    && pm->op_pmregexp->reganch & ROPT_CHECK_ALL)
+	    sv_catpv(tmpsv, ",ALL");
+	if (pm->op_pmflags & PMf_SKIPWHITE)
+	    sv_catpv(tmpsv, ",SKIPWHITE");
+	if (pm->op_pmflags & PMf_CONST)
+	    sv_catpv(tmpsv, ",CONST");
+	if (pm->op_pmflags & PMf_KEEP)
+	    sv_catpv(tmpsv, ",KEEP");
+	if (pm->op_pmflags & PMf_GLOBAL)
+	    sv_catpv(tmpsv, ",GLOBAL");
+	if (pm->op_pmflags & PMf_CONTINUE)
+	    sv_catpv(tmpsv, ",CONTINUE");
+	if (pm->op_pmflags & PMf_RETAINT)
+	    sv_catpv(tmpsv, ",RETAINT");
+	if (pm->op_pmflags & PMf_EVAL)
+	    sv_catpv(tmpsv, ",EVAL");
+	Perl_dump_indent(aTHX_ level, file, "PMFLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
+	SvREFCNT_dec(tmpsv);
+    }
+
+    Perl_dump_indent(aTHX_ level-1, file, "}\n");
+}
+
+void
+Perl_pmop_dump(pTHX_ PMOP *pm)
+{
+    do_pmop_dump(0, Perl_debug_log, pm);
+}
+
+void
+Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
+{
+    dTHR;
+    Perl_dump_indent(aTHX_ level, file, "{\n");
+    level++;
     if (o->op_seq)
-	PerlIO_printf(Perl_debug_log, "%-4d", o->op_seq);
+	PerlIO_printf(file, "%-4d", o->op_seq);
     else
-	PerlIO_printf(Perl_debug_log, "    ");
-    dump("TYPE = %s  ===> ", op_name[o->op_type]);
+	PerlIO_printf(file, "    ");
+    PerlIO_printf(file,
+		  "%*sTYPE = %s  ===> ",
+		  (int)(PL_dumpindent*level-4), "", PL_op_name[o->op_type]);
     if (o->op_next) {
 	if (o->op_seq)
-	    PerlIO_printf(Perl_debug_log, "%d\n", o->op_next->op_seq);
+	    PerlIO_printf(file, "%d\n", o->op_next->op_seq);
 	else
-	    PerlIO_printf(Perl_debug_log, "(%d)\n", o->op_next->op_seq);
+	    PerlIO_printf(file, "(%d)\n", o->op_next->op_seq);
     }
     else
-	PerlIO_printf(Perl_debug_log, "DONE\n");
-    PL_dumplvl++;
+	PerlIO_printf(file, "DONE\n");
     if (o->op_targ) {
 	if (o->op_type == OP_NULL)
-	    dump("  (was %s)\n", op_name[o->op_targ]);
+	    Perl_dump_indent(aTHX_ level, file, "  (was %s)\n", PL_op_name[o->op_targ]);
 	else
-	    dump("TARG = %d\n", o->op_targ);
+	    Perl_dump_indent(aTHX_ level, file, "TARG = %ld\n", (long)o->op_targ);
     }
 #ifdef DUMPADDR
-    dump("ADDR = 0x%lx => 0x%lx\n",o, o->op_next);
+    Perl_dump_indent(aTHX_ level, file, "ADDR = 0x%"UVxf" => 0x%"UVxf"\n", (UV)o, (UV)o->op_next);
 #endif
     if (o->op_flags) {
-	SV *tmpsv = newSVpv("", 0);
+	SV *tmpsv = newSVpvn("", 0);
 	switch (o->op_flags & OPf_WANT) {
 	case OPf_WANT_VOID:
 	    sv_catpv(tmpsv, ",VOID");
@@ -157,14 +424,20 @@ dump_op(OP *o)
 	    sv_catpv(tmpsv, ",MOD");
 	if (o->op_flags & OPf_SPECIAL)
 	    sv_catpv(tmpsv, ",SPECIAL");
-	dump("FLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
+	Perl_dump_indent(aTHX_ level, file, "FLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
 	SvREFCNT_dec(tmpsv);
     }
     if (o->op_private) {
-	SV *tmpsv = newSVpv("", 0);
+	SV *tmpsv = newSVpvn("", 0);
+	if (PL_opargs[o->op_type] & OA_TARGLEX) {
+	    if (o->op_private & OPpTARGET_MY)
+		sv_catpv(tmpsv, ",TARGET_MY");
+	}
 	if (o->op_type == OP_AASSIGN) {
 	    if (o->op_private & OPpASSIGN_COMMON)
 		sv_catpv(tmpsv, ",COMMON");
+	    if (o->op_private & OPpASSIGN_HASH)
+		sv_catpv(tmpsv, ",HASH");
 	}
 	else if (o->op_type == OP_SASSIGN) {
 	    if (o->op_private & OPpASSIGN_BACKWARDS)
@@ -195,8 +468,11 @@ dump_op(OP *o)
 		    sv_catpv(tmpsv, ",AMPER");
 		if (o->op_private & OPpENTERSUB_DB)
 		    sv_catpv(tmpsv, ",DB");
+		if (o->op_private & OPpENTERSUB_HASTARG)
+		    sv_catpv(tmpsv, ",HASTARG");
 	    }
-	    switch (o->op_private & OPpDEREF) {
+	    else 
+		switch (o->op_private & OPpDEREF) {
 	    case OPpDEREF_SV:
 		sv_catpv(tmpsv, ",SV");
 		break;
@@ -214,11 +490,15 @@ dump_op(OP *o)
 	    else {
 		if (o->op_private & HINT_STRICT_REFS)
 		    sv_catpv(tmpsv, ",STRICT_REFS");
+		if (o->op_private & OPpOUR_INTRO)
+		    sv_catpv(tmpsv, ",OUR_INTRO");
 	    }
 	}
 	else if (o->op_type == OP_CONST) {
 	    if (o->op_private & OPpCONST_BARE)
 		sv_catpv(tmpsv, ",BARE");
+	    if (o->op_private & OPpCONST_STRICT)
+		sv_catpv(tmpsv, ",STRICT");
 	}
 	else if (o->op_type == OP_FLIP) {
 	    if (o->op_private & OPpFLIP_LINENUM)
@@ -227,83 +507,96 @@ dump_op(OP *o)
 	else if (o->op_type == OP_FLOP) {
 	    if (o->op_private & OPpFLIP_LINENUM)
 		sv_catpv(tmpsv, ",LINENUM");
+	} else if (o->op_type == OP_RV2CV) {
+	    if (o->op_private & OPpLVAL_INTRO)
+		sv_catpv(tmpsv, ",INTRO");
 	}
 	if (o->op_flags & OPf_MOD && o->op_private & OPpLVAL_INTRO)
 	    sv_catpv(tmpsv, ",INTRO");
 	if (SvCUR(tmpsv))
-	    dump("PRIVATE = (%s)\n", SvPVX(tmpsv) + 1);
+	    Perl_dump_indent(aTHX_ level, file, "PRIVATE = (%s)\n", SvPVX(tmpsv) + 1);
 	SvREFCNT_dec(tmpsv);
     }
 
     switch (o->op_type) {
+    case OP_AELEMFAST:
     case OP_GVSV:
     case OP_GV:
-	if (cGVOPo->op_gv) {
-	    STRLEN n_a;
+#ifdef USE_ITHREADS
+	Perl_dump_indent(aTHX_ level, file, "PADIX = %d\n", cPADOPo->op_padix);
+#else
+	if (cSVOPo->op_sv) {
 	    SV *tmpsv = NEWSV(0,0);
+	    STRLEN n_a;
 	    ENTER;
 	    SAVEFREESV(tmpsv);
-	    gv_fullname3(tmpsv, cGVOPo->op_gv, Nullch);
-	    dump("GV = %s\n", SvPV(tmpsv, n_a));
+	    gv_fullname3(tmpsv, (GV*)cSVOPo->op_sv, Nullch);
+	    Perl_dump_indent(aTHX_ level, file, "GV = %s\n", SvPV(tmpsv, n_a));
 	    LEAVE;
 	}
 	else
-	    dump("GV = NULL\n");
+	    Perl_dump_indent(aTHX_ level, file, "GV = NULL\n");
+#endif
 	break;
     case OP_CONST:
-	dump("SV = %s\n", SvPEEK(cSVOPo->op_sv));
+    case OP_METHOD_NAMED:
+	Perl_dump_indent(aTHX_ level, file, "SV = %s\n", SvPEEK(cSVOPo->op_sv));
 	break;
+    case OP_SETSTATE:
     case OP_NEXTSTATE:
     case OP_DBSTATE:
-	if (cCOPo->cop_line)
-	    dump("LINE = %d\n",cCOPo->cop_line);
+	if (CopLINE(cCOPo))
+	    Perl_dump_indent(aTHX_ level, file, "LINE = %d\n",CopLINE(cCOPo));
+	if (CopSTASHPV(cCOPo))
+	    Perl_dump_indent(aTHX_ level, file, "PACKAGE = \"%s\"\n",
+			     CopSTASHPV(cCOPo));
 	if (cCOPo->cop_label)
-	    dump("LABEL = \"%s\"\n",cCOPo->cop_label);
+	    Perl_dump_indent(aTHX_ level, file, "LABEL = \"%s\"\n",
+			     cCOPo->cop_label);
 	break;
     case OP_ENTERLOOP:
-	dump("REDO ===> ");
+	Perl_dump_indent(aTHX_ level, file, "REDO ===> ");
 	if (cLOOPo->op_redoop)
-	    PerlIO_printf(Perl_debug_log, "%d\n", cLOOPo->op_redoop->op_seq);
+	    PerlIO_printf(file, "%d\n", cLOOPo->op_redoop->op_seq);
 	else
-	    PerlIO_printf(Perl_debug_log, "DONE\n");
-	dump("NEXT ===> ");
+	    PerlIO_printf(file, "DONE\n");
+	Perl_dump_indent(aTHX_ level, file, "NEXT ===> ");
 	if (cLOOPo->op_nextop)
-	    PerlIO_printf(Perl_debug_log, "%d\n", cLOOPo->op_nextop->op_seq);
+	    PerlIO_printf(file, "%d\n", cLOOPo->op_nextop->op_seq);
 	else
-	    PerlIO_printf(Perl_debug_log, "DONE\n");
-	dump("LAST ===> ");
+	    PerlIO_printf(file, "DONE\n");
+	Perl_dump_indent(aTHX_ level, file, "LAST ===> ");
 	if (cLOOPo->op_lastop)
-	    PerlIO_printf(Perl_debug_log, "%d\n", cLOOPo->op_lastop->op_seq);
+	    PerlIO_printf(file, "%d\n", cLOOPo->op_lastop->op_seq);
 	else
-	    PerlIO_printf(Perl_debug_log, "DONE\n");
+	    PerlIO_printf(file, "DONE\n");
 	break;
     case OP_COND_EXPR:
-	dump("TRUE ===> ");
-	if (cCONDOPo->op_true)
-	    PerlIO_printf(Perl_debug_log, "%d\n", cCONDOPo->op_true->op_seq);
-	else
-	    PerlIO_printf(Perl_debug_log, "DONE\n");
-	dump("FALSE ===> ");
-	if (cCONDOPo->op_false)
-	    PerlIO_printf(Perl_debug_log, "%d\n", cCONDOPo->op_false->op_seq);
-	else
-	    PerlIO_printf(Perl_debug_log, "DONE\n");
-	break;
+    case OP_RANGE:
     case OP_MAPWHILE:
     case OP_GREPWHILE:
     case OP_OR:
     case OP_AND:
-	dump("OTHER ===> ");
+	Perl_dump_indent(aTHX_ level, file, "OTHER ===> ");
 	if (cLOGOPo->op_other)
-	    PerlIO_printf(Perl_debug_log, "%d\n", cLOGOPo->op_other->op_seq);
+	    PerlIO_printf(file, "%d\n", cLOGOPo->op_other->op_seq);
 	else
-	    PerlIO_printf(Perl_debug_log, "DONE\n");
+	    PerlIO_printf(file, "DONE\n");
 	break;
     case OP_PUSHRE:
     case OP_MATCH:
     case OP_QR:
     case OP_SUBST:
-	dump_pm(cPMOPo);
+	do_pmop_dump(level, file, cPMOPo);
+	break;
+    case OP_LEAVE:
+    case OP_LEAVEEVAL:
+    case OP_LEAVESUB:
+    case OP_LEAVESUBLV:
+    case OP_LEAVEWRITE:
+    case OP_SCOPE:
+	if (o->op_private & OPpREFCOUNTED)
+	    Perl_dump_indent(aTHX_ level, file, "REFCNT = %"UVuf"\n", (UV)o->op_targ);
 	break;
     default:
 	break;
@@ -311,17 +604,20 @@ dump_op(OP *o)
     if (o->op_flags & OPf_KIDS) {
 	OP *kid;
 	for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling)
-	    dump_op(kid);
+	    do_op_dump(level, file, kid);
     }
-    PL_dumplvl--;
-    dump("}\n");
-#endif	/* DEBUGGING */
+    Perl_dump_indent(aTHX_ level-1, file, "}\n");
 }
 
 void
-dump_gv(GV *gv)
+Perl_op_dump(pTHX_ OP *o)
+{
+    do_op_dump(0, Perl_debug_log, o);
+}
+
+void
+Perl_gv_dump(pTHX_ GV *gv)
 {
-#ifdef DEBUGGING
     SV *sv;
 
     if (!gv) {
@@ -329,95 +625,563 @@ dump_gv(GV *gv)
 	return;
     }
     sv = sv_newmortal();
-    PL_dumplvl++;
     PerlIO_printf(Perl_debug_log, "{\n");
     gv_fullname3(sv, gv, Nullch);
-    dump("GV_NAME = %s", SvPVX(sv));
+    Perl_dump_indent(aTHX_ 1, Perl_debug_log, "GV_NAME = %s", SvPVX(sv));
     if (gv != GvEGV(gv)) {
 	gv_efullname3(sv, GvEGV(gv), Nullch);
-	dump("-> %s", SvPVX(sv));
+	Perl_dump_indent(aTHX_ 1, Perl_debug_log, "-> %s", SvPVX(sv));
     }
-    dump("\n");
-    PL_dumplvl--;
-    dump("}\n");
-#endif	/* DEBUGGING */
+    PerlIO_putc(Perl_debug_log, '\n');
+    Perl_dump_indent(aTHX_ 0, Perl_debug_log, "}\n");
 }
 
 void
-dump_pm(PMOP *pm)
+Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim)
 {
-#ifdef DEBUGGING
-    char ch;
+    for (; mg; mg = mg->mg_moremagic) {
+ 	Perl_dump_indent(aTHX_ level, file,
+			 "  MAGIC = 0x%"UVxf"\n", PTR2UV(mg));
+ 	if (mg->mg_virtual) {
+            MGVTBL *v = mg->mg_virtual;
+ 	    char *s = 0;
+ 	    if      (v == &PL_vtbl_sv)         s = "sv";
+            else if (v == &PL_vtbl_env)        s = "env";
+            else if (v == &PL_vtbl_envelem)    s = "envelem";
+            else if (v == &PL_vtbl_sig)        s = "sig";
+            else if (v == &PL_vtbl_sigelem)    s = "sigelem";
+            else if (v == &PL_vtbl_pack)       s = "pack";
+            else if (v == &PL_vtbl_packelem)   s = "packelem";
+            else if (v == &PL_vtbl_dbline)     s = "dbline";
+            else if (v == &PL_vtbl_isa)        s = "isa";
+            else if (v == &PL_vtbl_arylen)     s = "arylen";
+            else if (v == &PL_vtbl_glob)       s = "glob";
+            else if (v == &PL_vtbl_mglob)      s = "mglob";
+            else if (v == &PL_vtbl_nkeys)      s = "nkeys";
+            else if (v == &PL_vtbl_taint)      s = "taint";
+            else if (v == &PL_vtbl_substr)     s = "substr";
+            else if (v == &PL_vtbl_vec)        s = "vec";
+            else if (v == &PL_vtbl_pos)        s = "pos";
+            else if (v == &PL_vtbl_bm)         s = "bm";
+            else if (v == &PL_vtbl_fm)         s = "fm";
+            else if (v == &PL_vtbl_uvar)       s = "uvar";
+            else if (v == &PL_vtbl_defelem)    s = "defelem";
+#ifdef USE_LOCALE_COLLATE
+	    else if (v == &PL_vtbl_collxfrm)   s = "collxfrm";
+#endif
+	    else if (v == &PL_vtbl_amagic)     s = "amagic";
+	    else if (v == &PL_vtbl_amagicelem) s = "amagicelem";
+	    else if (v == &PL_vtbl_backref)    s = "backref";
+	    if (s)
+	        Perl_dump_indent(aTHX_ level, file, "    MG_VIRTUAL = &PL_vtbl_%s\n", s);
+	    else
+	        Perl_dump_indent(aTHX_ level, file, "    MG_VIRTUAL = 0x%"UVxf"\n", PTR2UV(v));
+        }
+	else
+	    Perl_dump_indent(aTHX_ level, file, "    MG_VIRTUAL = 0\n");
 
-    if (!pm) {
-	dump("{}\n");
+	if (mg->mg_private)
+	    Perl_dump_indent(aTHX_ level, file, "    MG_PRIVATE = %d\n", mg->mg_private);
+
+	if (isPRINT(mg->mg_type))
+	    Perl_dump_indent(aTHX_ level, file, "    MG_TYPE = '%c'\n", mg->mg_type);
+	else
+	    Perl_dump_indent(aTHX_ level, file, "    MG_TYPE = '\\%o'\n", mg->mg_type);
+
+        if (mg->mg_flags) {
+            Perl_dump_indent(aTHX_ level, file, "    MG_FLAGS = 0x%02X\n", mg->mg_flags);
+	    if (mg->mg_flags & MGf_TAINTEDDIR)
+	        Perl_dump_indent(aTHX_ level, file, "      TAINTEDDIR\n");
+	    if (mg->mg_flags & MGf_REFCOUNTED)
+	        Perl_dump_indent(aTHX_ level, file, "      REFCOUNTED\n");
+            if (mg->mg_flags & MGf_GSKIP)
+	        Perl_dump_indent(aTHX_ level, file, "      GSKIP\n");
+	    if (mg->mg_flags & MGf_MINMATCH)
+	        Perl_dump_indent(aTHX_ level, file, "      MINMATCH\n");
+        }
+	if (mg->mg_obj) {
+	    Perl_dump_indent(aTHX_ level, file, "    MG_OBJ = 0x%"UVxf"\n", PTR2UV(mg->mg_obj));
+	    if (mg->mg_flags & MGf_REFCOUNTED)
+		do_sv_dump(level+2, file, mg->mg_obj, nest+1, maxnest, dumpops, pvlim); /* MG is already +1 */
+	}
+        if (mg->mg_len)
+	    Perl_dump_indent(aTHX_ level, file, "    MG_LEN = %ld\n", (long)mg->mg_len);
+        if (mg->mg_ptr) {
+	    Perl_dump_indent(aTHX_ level, file, "    MG_PTR = 0x%"UVxf, PTR2UV(mg->mg_ptr));
+	    if (mg->mg_len >= 0) {
+		SV *sv = newSVpvn("", 0);
+                PerlIO_printf(file, " %s", pv_display(sv, mg->mg_ptr, mg->mg_len, 0, pvlim));
+		SvREFCNT_dec(sv);
+            }
+	    else if (mg->mg_len == HEf_SVKEY) {
+		PerlIO_puts(file, " => HEf_SVKEY\n");
+		do_sv_dump(level+2, file, (SV*)((mg)->mg_ptr), nest+1, maxnest, dumpops, pvlim); /* MG is already +1 */
+		continue;
+	    }
+	    else
+		PerlIO_puts(file, " ???? - please notify IZ");
+            PerlIO_putc(file, '\n');
+        }
+    }
+}
+
+void
+Perl_magic_dump(pTHX_ MAGIC *mg)
+{
+    do_magic_dump(0, Perl_debug_log, mg, 0, 0, 0, 0);
+}
+
+void
+Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, char *name, HV *sv)
+{
+    Perl_dump_indent(aTHX_ level, file, "%s = 0x%"UVxf, name, PTR2UV(sv));
+    if (sv && HvNAME(sv))
+	PerlIO_printf(file, "\t\"%s\"\n", HvNAME(sv));
+    else
+	PerlIO_putc(file, '\n');
+}
+
+void
+Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv)
+{
+    Perl_dump_indent(aTHX_ level, file, "%s = 0x%"UVxf, name, PTR2UV(sv));
+    if (sv && GvNAME(sv))
+	PerlIO_printf(file, "\t\"%s\"\n", GvNAME(sv));
+    else
+	PerlIO_putc(file, '\n');
+}
+
+void
+Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, char *name, GV *sv)
+{
+    Perl_dump_indent(aTHX_ level, file, "%s = 0x%"UVxf, name, PTR2UV(sv));
+    if (sv && GvNAME(sv)) {
+	PerlIO_printf(file, "\t\"");
+	if (GvSTASH(sv) && HvNAME(GvSTASH(sv)))
+	    PerlIO_printf(file, "%s\" :: \"", HvNAME(GvSTASH(sv)));
+	PerlIO_printf(file, "%s\"\n", GvNAME(sv));
+    }
+    else
+	PerlIO_putc(file, '\n');
+}
+
+void
+Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim)
+{
+    dTHR;
+    SV *d = sv_newmortal();
+    char *s;
+    U32 flags;
+    U32 type;
+    STRLEN n_a;
+
+    if (!sv) {
+	Perl_dump_indent(aTHX_ level, file, "SV = 0\n");
 	return;
     }
-    dump("{\n");
-    PL_dumplvl++;
-    if (pm->op_pmflags & PMf_ONCE)
-	ch = '?';
-    else
-	ch = '/';
-    if (pm->op_pmregexp)
-	dump("PMf_PRE %c%s%c%s\n",
-	     ch, pm->op_pmregexp->precomp, ch,
-	     (pm->op_private & OPpRUNTIME) ? " (RUNTIME)" : "");
-    else
-	dump("PMf_PRE (RUNTIME)\n");
-    if (pm->op_type != OP_PUSHRE && pm->op_pmreplroot) {
-	dump("PMf_REPL = ");
-	dump_op(pm->op_pmreplroot);
+    
+    flags = SvFLAGS(sv);
+    type = SvTYPE(sv);
+
+    Perl_sv_setpvf(aTHX_ d,
+		   "(0x%"UVxf") at 0x%"UVxf"\n%*s  REFCNT = %"IVdf"\n%*s  FLAGS = (",
+		   PTR2UV(SvANY(sv)), PTR2UV(sv),
+		   (int)(PL_dumpindent*level), "", (IV)SvREFCNT(sv),
+		   (int)(PL_dumpindent*level), "");
+
+    if (flags & SVs_PADBUSY)	sv_catpv(d, "PADBUSY,");
+    if (flags & SVs_PADTMP)	sv_catpv(d, "PADTMP,");
+    if (flags & SVs_PADMY)	sv_catpv(d, "PADMY,");
+    if (flags & SVs_TEMP)	sv_catpv(d, "TEMP,");
+    if (flags & SVs_OBJECT)	sv_catpv(d, "OBJECT,");
+    if (flags & SVs_GMG)	sv_catpv(d, "GMG,");
+    if (flags & SVs_SMG)	sv_catpv(d, "SMG,");
+    if (flags & SVs_RMG)	sv_catpv(d, "RMG,");
+
+    if (flags & SVf_IOK)	sv_catpv(d, "IOK,");
+    if (flags & SVf_NOK)	sv_catpv(d, "NOK,");
+    if (flags & SVf_POK)	sv_catpv(d, "POK,");
+    if (flags & SVf_ROK)  {	
+    				sv_catpv(d, "ROK,");
+	if (SvWEAKREF(sv))	sv_catpv(d, "WEAKREF,");
     }
-    if (pm->op_pmflags || (pm->op_pmregexp && pm->op_pmregexp->check_substr)) {
-	SV *tmpsv = newSVpv("", 0);
-	if (pm->op_pmdynflags & PMdf_USED)
-	    sv_catpv(tmpsv, ",USED");
-	if (pm->op_pmdynflags & PMdf_TAINTED)
-	    sv_catpv(tmpsv, ",TAINTED");
-	if (pm->op_pmflags & PMf_ONCE)
-	    sv_catpv(tmpsv, ",ONCE");
-	if (pm->op_pmregexp && pm->op_pmregexp->check_substr
-	    && !(pm->op_pmregexp->reganch & ROPT_NOSCAN))
-	    sv_catpv(tmpsv, ",SCANFIRST");
-	if (pm->op_pmregexp && pm->op_pmregexp->check_substr
-	    && pm->op_pmregexp->reganch & ROPT_CHECK_ALL)
-	    sv_catpv(tmpsv, ",ALL");
-	if (pm->op_pmflags & PMf_SKIPWHITE)
-	    sv_catpv(tmpsv, ",SKIPWHITE");
-	if (pm->op_pmflags & PMf_CONST)
-	    sv_catpv(tmpsv, ",CONST");
-	if (pm->op_pmflags & PMf_KEEP)
-	    sv_catpv(tmpsv, ",KEEP");
-	if (pm->op_pmflags & PMf_GLOBAL)
-	    sv_catpv(tmpsv, ",GLOBAL");
-	if (pm->op_pmflags & PMf_CONTINUE)
-	    sv_catpv(tmpsv, ",CONTINUE");
-	if (pm->op_pmflags & PMf_RETAINT)
-	    sv_catpv(tmpsv, ",RETAINT");
-	if (pm->op_pmflags & PMf_EVAL)
-	    sv_catpv(tmpsv, ",EVAL");
-	dump("PMFLAGS = (%s)\n", SvCUR(tmpsv) ? SvPVX(tmpsv) + 1 : "");
-	SvREFCNT_dec(tmpsv);
+    if (flags & SVf_OOK)	sv_catpv(d, "OOK,");
+    if (flags & SVf_FAKE)	sv_catpv(d, "FAKE,");
+    if (flags & SVf_READONLY)	sv_catpv(d, "READONLY,");
+
+    if (flags & SVf_AMAGIC)	sv_catpv(d, "OVERLOAD,");
+    if (flags & SVp_IOK)	sv_catpv(d, "pIOK,");
+    if (flags & SVp_NOK)	sv_catpv(d, "pNOK,");
+    if (flags & SVp_POK)	sv_catpv(d, "pPOK,");
+    if (flags & SVp_SCREAM)	sv_catpv(d, "SCREAM,");
+
+    switch (type) {
+    case SVt_PVCV:
+    case SVt_PVFM:
+	if (CvANON(sv))		sv_catpv(d, "ANON,");
+	if (CvUNIQUE(sv))	sv_catpv(d, "UNIQUE,");
+	if (CvCLONE(sv))	sv_catpv(d, "CLONE,");
+	if (CvCLONED(sv))	sv_catpv(d, "CLONED,");
+	if (CvNODEBUG(sv))	sv_catpv(d, "NODEBUG,");
+	if (SvCOMPILED(sv))	sv_catpv(d, "COMPILED,");
+	break;
+    case SVt_PVHV:
+	if (HvSHAREKEYS(sv))	sv_catpv(d, "SHAREKEYS,");
+	if (HvLAZYDEL(sv))	sv_catpv(d, "LAZYDEL,");
+	break;
+    case SVt_PVGV:
+	if (GvINTRO(sv))	sv_catpv(d, "INTRO,");
+	if (GvMULTI(sv))	sv_catpv(d, "MULTI,");
+	if (GvASSUMECV(sv))	sv_catpv(d, "ASSUMECV,");
+	if (GvIMPORTED(sv)) {
+	    sv_catpv(d, "IMPORT");
+	    if (GvIMPORTED(sv) == GVf_IMPORTED)
+		sv_catpv(d, "ALL,");
+	    else {
+		sv_catpv(d, "(");
+		if (GvIMPORTED_SV(sv))	sv_catpv(d, " SV");
+		if (GvIMPORTED_AV(sv))	sv_catpv(d, " AV");
+		if (GvIMPORTED_HV(sv))	sv_catpv(d, " HV");
+		if (GvIMPORTED_CV(sv))	sv_catpv(d, " CV");
+		sv_catpv(d, " ),");
+	    }
+	}
+	/* FALL THROGH */
+    default:
+	if (SvEVALED(sv))	sv_catpv(d, "EVALED,");
+	if (SvIsUV(sv))		sv_catpv(d, "IsUV,");
+	if (SvUTF8(sv))         sv_catpv(d, "UTF8");
+	break;
+    case SVt_PVBM:
+	if (SvTAIL(sv))		sv_catpv(d, "TAIL,");
+	if (SvVALID(sv))	sv_catpv(d, "VALID,");
+	break;
     }
 
-    PL_dumplvl--;
-    dump("}\n");
-#endif	/* DEBUGGING */
+    if (*(SvEND(d) - 1) == ',')
+	SvPVX(d)[--SvCUR(d)] = '\0';
+    sv_catpv(d, ")");
+    s = SvPVX(d);
+
+    Perl_dump_indent(aTHX_ level, file, "SV = ");
+    switch (type) {
+    case SVt_NULL:
+	PerlIO_printf(file, "NULL%s\n", s);
+	return;
+    case SVt_IV:
+	PerlIO_printf(file, "IV%s\n", s);
+	break;
+    case SVt_NV:
+	PerlIO_printf(file, "NV%s\n", s);
+	break;
+    case SVt_RV:
+	PerlIO_printf(file, "RV%s\n", s);
+	break;
+    case SVt_PV:
+	PerlIO_printf(file, "PV%s\n", s);
+	break;
+    case SVt_PVIV:
+	PerlIO_printf(file, "PVIV%s\n", s);
+	break;
+    case SVt_PVNV:
+	PerlIO_printf(file, "PVNV%s\n", s);
+	break;
+    case SVt_PVBM:
+	PerlIO_printf(file, "PVBM%s\n", s);
+	break;
+    case SVt_PVMG:
+	PerlIO_printf(file, "PVMG%s\n", s);
+	break;
+    case SVt_PVLV:
+	PerlIO_printf(file, "PVLV%s\n", s);
+	break;
+    case SVt_PVAV:
+	PerlIO_printf(file, "PVAV%s\n", s);
+	break;
+    case SVt_PVHV:
+	PerlIO_printf(file, "PVHV%s\n", s);
+	break;
+    case SVt_PVCV:
+	PerlIO_printf(file, "PVCV%s\n", s);
+	break;
+    case SVt_PVGV:
+	PerlIO_printf(file, "PVGV%s\n", s);
+	break;
+    case SVt_PVFM:
+	PerlIO_printf(file, "PVFM%s\n", s);
+	break;
+    case SVt_PVIO:
+	PerlIO_printf(file, "PVIO%s\n", s);
+	break;
+    default:
+	PerlIO_printf(file, "UNKNOWN(0x%"UVxf") %s\n", (UV)type, s);
+	return;
+    }
+    if (type >= SVt_PVIV || type == SVt_IV) {
+	if (SvIsUV(sv))
+	    Perl_dump_indent(aTHX_ level, file, "  UV = %"UVuf, (UV)SvUVX(sv));
+	else
+	    Perl_dump_indent(aTHX_ level, file, "  IV = %"IVdf, (IV)SvIVX(sv));
+	if (SvOOK(sv))
+	    PerlIO_printf(file, "  (OFFSET)");
+	PerlIO_putc(file, '\n');
+    }
+    if (type >= SVt_PVNV || type == SVt_NV) {
+	RESTORE_NUMERIC_STANDARD();
+	/* %Vg doesn't work? --jhi */
+#ifdef USE_LONG_DOUBLE
+	Perl_dump_indent(aTHX_ level, file, "  NV = %.*" PERL_PRIgldbl "\n", LDBL_DIG, SvNVX(sv));
+#else
+	Perl_dump_indent(aTHX_ level, file, "  NV = %.*g\n", DBL_DIG, SvNVX(sv));
+#endif
+	RESTORE_NUMERIC_LOCAL();
+    }
+    if (SvROK(sv)) {
+	Perl_dump_indent(aTHX_ level, file, "  RV = 0x%"UVxf"\n", PTR2UV(SvRV(sv)));
+	if (nest < maxnest)
+	    do_sv_dump(level+1, file, SvRV(sv), nest+1, maxnest, dumpops, pvlim);
+	return;
+    }
+    if (type < SVt_PV)
+	return;
+    if (type <= SVt_PVLV) {
+	if (SvPVX(sv)) {
+	    Perl_dump_indent(aTHX_ level, file,"  PV = 0x%"UVxf" ", PTR2UV(SvPVX(sv)));
+	    if (SvOOK(sv))
+		PerlIO_printf(file, "( %s . ) ", pv_display(d, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, pvlim));
+	    PerlIO_printf(file, "%s\n", pv_display(d, SvPVX(sv), SvCUR(sv), SvLEN(sv), pvlim));
+	    Perl_dump_indent(aTHX_ level, file, "  CUR = %"IVdf"\n", (IV)SvCUR(sv));
+	    Perl_dump_indent(aTHX_ level, file, "  LEN = %"IVdf"\n", (IV)SvLEN(sv));
+	}
+	else
+	    Perl_dump_indent(aTHX_ level, file, "  PV = 0\n");
+    }
+    if (type >= SVt_PVMG) {
+	if (SvMAGIC(sv))
+            do_magic_dump(level, file, SvMAGIC(sv), nest, maxnest, dumpops, pvlim);
+	if (SvSTASH(sv))
+	    do_hv_dump(level, file, "  STASH", SvSTASH(sv));
+    }
+    switch (type) {
+    case SVt_PVLV:
+	Perl_dump_indent(aTHX_ level, file, "  TYPE = %c\n", LvTYPE(sv));
+	Perl_dump_indent(aTHX_ level, file, "  TARGOFF = %"IVdf"\n", (IV)LvTARGOFF(sv));
+	Perl_dump_indent(aTHX_ level, file, "  TARGLEN = %"IVdf"\n", (IV)LvTARGLEN(sv));
+	Perl_dump_indent(aTHX_ level, file, "  TARG = 0x%"UVxf"\n", PTR2UV(LvTARG(sv)));
+	/* XXX level+1 ??? */
+	do_sv_dump(level, file, LvTARG(sv), nest+1, maxnest, dumpops, pvlim);
+	break;
+    case SVt_PVAV:
+	Perl_dump_indent(aTHX_ level, file, "  ARRAY = 0x%"UVxf, PTR2UV(AvARRAY(sv)));
+	if (AvARRAY(sv) != AvALLOC(sv)) {
+	    PerlIO_printf(file, " (offset=%"IVdf")\n", (IV)(AvARRAY(sv) - AvALLOC(sv)));
+	    Perl_dump_indent(aTHX_ level, file, "  ALLOC = 0x%"UVxf"\n", PTR2UV(AvALLOC(sv)));
+	}
+	else
+	    PerlIO_putc(file, '\n');
+	Perl_dump_indent(aTHX_ level, file, "  FILL = %"IVdf"\n", (IV)AvFILLp(sv));
+	Perl_dump_indent(aTHX_ level, file, "  MAX = %"IVdf"\n", (IV)AvMAX(sv));
+	Perl_dump_indent(aTHX_ level, file, "  ARYLEN = 0x%"UVxf"\n", PTR2UV(AvARYLEN(sv)));
+	flags = AvFLAGS(sv);
+	sv_setpv(d, "");
+	if (flags & AVf_REAL)	sv_catpv(d, ",REAL");
+	if (flags & AVf_REIFY)	sv_catpv(d, ",REIFY");
+	if (flags & AVf_REUSED)	sv_catpv(d, ",REUSED");
+	Perl_dump_indent(aTHX_ level, file, "  FLAGS = (%s)\n", SvCUR(d) ? SvPVX(d) + 1 : "");
+	if (nest < maxnest && av_len((AV*)sv) >= 0) {
+	    int count;
+	    for (count = 0; count <=  av_len((AV*)sv) && count < maxnest; count++) {
+		SV** elt = av_fetch((AV*)sv,count,0);
+
+		Perl_dump_indent(aTHX_ level + 1, file, "Elt No. %"IVdf"\n", (IV)count);
+		if (elt) 
+		    do_sv_dump(level+1, file, *elt, nest+1, maxnest, dumpops, pvlim);
+	    }
+	}
+	break;
+    case SVt_PVHV:
+	Perl_dump_indent(aTHX_ level, file, "  ARRAY = 0x%"UVxf, PTR2UV(HvARRAY(sv)));
+	if (HvARRAY(sv) && HvKEYS(sv)) {
+	    /* Show distribution of HEs in the ARRAY */
+	    int freq[200];
+#define FREQ_MAX (sizeof freq / sizeof freq[0] - 1)
+	    int i;
+	    int max = 0;
+	    U32 pow2 = 2, keys = HvKEYS(sv);
+	    NV theoret, sum = 0;
+
+	    PerlIO_printf(file, "  (");
+	    Zero(freq, FREQ_MAX + 1, int);
+	    for (i = 0; i <= HvMAX(sv); i++) {
+		HE* h; int count = 0;
+                for (h = HvARRAY(sv)[i]; h; h = HeNEXT(h))
+		    count++;
+		if (count > FREQ_MAX)
+		    count = FREQ_MAX;
+	        freq[count]++;
+	        if (max < count)
+		    max = count;
+	    }
+	    for (i = 0; i <= max; i++) {
+		if (freq[i]) {
+		    PerlIO_printf(file, "%d%s:%d", i,
+				  (i == FREQ_MAX) ? "+" : "",
+				  freq[i]);
+		    if (i != max)
+			PerlIO_printf(file, ", ");
+		}
+            }
+	    PerlIO_putc(file, ')');
+	    /* Now calculate quality wrt theoretical value */
+	    for (i = max; i > 0; i--) { /* Precision: count down. */
+		sum += freq[i] * i * i;
+            }
+	    while ((keys = keys >> 1))
+		pow2 = pow2 << 1;
+	    /* Approximate by Poisson distribution */
+	    theoret = HvKEYS(sv);
+	    theoret += theoret * theoret/pow2;
+	    PerlIO_putc(file, '\n');
+	    Perl_dump_indent(aTHX_ level, file, "  hash quality = %.1f%%", theoret/sum*100);
+	}
+	PerlIO_putc(file, '\n');
+	Perl_dump_indent(aTHX_ level, file, "  KEYS = %"IVdf"\n", (IV)HvKEYS(sv));
+	Perl_dump_indent(aTHX_ level, file, "  FILL = %"IVdf"\n", (IV)HvFILL(sv));
+	Perl_dump_indent(aTHX_ level, file, "  MAX = %"IVdf"\n", (IV)HvMAX(sv));
+	Perl_dump_indent(aTHX_ level, file, "  RITER = %"IVdf"\n", (IV)HvRITER(sv));
+	Perl_dump_indent(aTHX_ level, file, "  EITER = 0x%"UVxf"\n", PTR2UV(HvEITER(sv)));
+	if (HvPMROOT(sv))
+	    Perl_dump_indent(aTHX_ level, file, "  PMROOT = 0x%"UVxf"\n", PTR2UV(HvPMROOT(sv)));
+	if (HvNAME(sv))
+	    Perl_dump_indent(aTHX_ level, file, "  NAME = \"%s\"\n", HvNAME(sv));
+	if (nest < maxnest && !HvEITER(sv)) { /* Try to preserve iterator */
+	    HE *he;
+	    HV *hv = (HV*)sv;
+	    int count = maxnest - nest;
+
+	    hv_iterinit(hv);
+	    while ((he = hv_iternext(hv)) && count--) {
+		SV *elt;
+		char *key;
+		I32 len;
+		U32 hash = HeHASH(he);
+
+		key = hv_iterkey(he, &len);
+		elt = hv_iterval(hv, he);
+		Perl_dump_indent(aTHX_ level+1, file, "Elt %s HASH = 0x%"UVxf"\n", pv_display(d, key, len, 0, pvlim), (UV)hash);
+		do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim);
+	    }
+	    hv_iterinit(hv);		/* Return to status quo */
+	}
+	break;
+    case SVt_PVCV:
+	if (SvPOK(sv))
+	    Perl_dump_indent(aTHX_ level, file, "  PROTOTYPE = \"%s\"\n", SvPV(sv,n_a));
+	/* FALL THROUGH */
+    case SVt_PVFM:
+	do_hv_dump(level, file, "  COMP_STASH", CvSTASH(sv));
+	if (CvSTART(sv))
+	    Perl_dump_indent(aTHX_ level, file, "  START = 0x%"UVxf" ===> %"IVdf"\n", PTR2UV(CvSTART(sv)), (IV)CvSTART(sv)->op_seq);
+	Perl_dump_indent(aTHX_ level, file, "  ROOT = 0x%"UVxf"\n", PTR2UV(CvROOT(sv)));
+        if (CvROOT(sv) && dumpops)
+	    do_op_dump(level+1, file, CvROOT(sv));
+	Perl_dump_indent(aTHX_ level, file, "  XSUB = 0x%"UVxf"\n", PTR2UV(CvXSUB(sv)));
+	Perl_dump_indent(aTHX_ level, file, "  XSUBANY = %"IVdf"\n", (IV)CvXSUBANY(sv).any_i32);
+ 	do_gvgv_dump(level, file, "  GVGV::GV", CvGV(sv));
+	Perl_dump_indent(aTHX_ level, file, "  FILE = \"%s\"\n", CvFILE(sv));
+	Perl_dump_indent(aTHX_ level, file, "  DEPTH = %"IVdf"\n", (IV)CvDEPTH(sv));
+#ifdef USE_THREADS
+	Perl_dump_indent(aTHX_ level, file, "  MUTEXP = 0x%"UVxf"\n", PTR2UV(CvMUTEXP(sv)));
+	Perl_dump_indent(aTHX_ level, file, "  OWNER = 0x%"UVxf"\n",  PTR2UV(CvOWNER(sv)));
+#endif /* USE_THREADS */
+	Perl_dump_indent(aTHX_ level, file, "  FLAGS = 0x%"UVxf"\n", (UV)CvFLAGS(sv));
+	if (type == SVt_PVFM)
+	    Perl_dump_indent(aTHX_ level, file, "  LINES = %"IVdf"\n", (IV)FmLINES(sv));
+	Perl_dump_indent(aTHX_ level, file, "  PADLIST = 0x%"UVxf"\n", PTR2UV(CvPADLIST(sv)));
+	if (nest < maxnest && CvPADLIST(sv)) {
+	    AV* padlist = CvPADLIST(sv);
+	    AV* pad_name = (AV*)*av_fetch(padlist, 0, FALSE);
+	    AV* pad = (AV*)*av_fetch(padlist, 1, FALSE);
+	    SV** pname = AvARRAY(pad_name);
+	    SV** ppad = AvARRAY(pad);
+	    I32 ix;
+
+	    for (ix = 1; ix <= AvFILL(pad_name); ix++) {
+		if (SvPOK(pname[ix]))
+		    Perl_dump_indent(aTHX_ level,
+				/* %5d below is enough whitespace. */
+				file, 
+				"%5d. 0x%"UVxf" (%s\"%s\" %"IVdf"-%"IVdf")\n",
+				(int)ix, PTR2UV(ppad[ix]),
+				SvFAKE(pname[ix]) ? "FAKE " : "",
+				SvPVX(pname[ix]),
+				(IV)SvNVX(pname[ix]),
+				(IV)SvIVX(pname[ix]));
+	    }
+	}
+	{
+	    CV *outside = CvOUTSIDE(sv);
+	    Perl_dump_indent(aTHX_ level, file, "  OUTSIDE = 0x%"UVxf" (%s)\n", 
+			PTR2UV(outside),
+			(!outside ? "null"
+			 : CvANON(outside) ? "ANON"
+			 : (outside == PL_main_cv) ? "MAIN"
+			 : CvUNIQUE(outside) ? "UNIQUE"
+			 : CvGV(outside) ? GvNAME(CvGV(outside)) : "UNDEFINED"));
+	}
+	if (nest < maxnest && (CvCLONE(sv) || CvCLONED(sv)))
+	    do_sv_dump(level+1, file, (SV*)CvOUTSIDE(sv), nest+1, maxnest, dumpops, pvlim);
+	break;
+    case SVt_PVGV:
+	Perl_dump_indent(aTHX_ level, file, "  NAME = \"%s\"\n", GvNAME(sv));
+	Perl_dump_indent(aTHX_ level, file, "  NAMELEN = %"IVdf"\n", (IV)GvNAMELEN(sv));
+	do_hv_dump (level, file, "  GvSTASH", GvSTASH(sv));
+	Perl_dump_indent(aTHX_ level, file, "  GP = 0x%"UVxf"\n", PTR2UV(GvGP(sv)));
+	if (!GvGP(sv))
+	    break;
+	Perl_dump_indent(aTHX_ level, file, "    SV = 0x%"UVxf"\n", PTR2UV(GvSV(sv)));
+	Perl_dump_indent(aTHX_ level, file, "    REFCNT = %"IVdf"\n", (IV)GvREFCNT(sv));
+	Perl_dump_indent(aTHX_ level, file, "    IO = 0x%"UVxf"\n", PTR2UV(GvIOp(sv)));
+	Perl_dump_indent(aTHX_ level, file, "    FORM = 0x%"UVxf"  \n", PTR2UV(GvFORM(sv)));
+	Perl_dump_indent(aTHX_ level, file, "    AV = 0x%"UVxf"\n", PTR2UV(GvAV(sv)));
+	Perl_dump_indent(aTHX_ level, file, "    HV = 0x%"UVxf"\n", PTR2UV(GvHV(sv)));
+	Perl_dump_indent(aTHX_ level, file, "    CV = 0x%"UVxf"\n", PTR2UV(GvCV(sv)));
+	Perl_dump_indent(aTHX_ level, file, "    CVGEN = 0x%"UVxf"\n", (UV)GvCVGEN(sv));
+	Perl_dump_indent(aTHX_ level, file, "    GPFLAGS = 0x%"UVxf"\n", (UV)GvGPFLAGS(sv));
+	Perl_dump_indent(aTHX_ level, file, "    LINE = %"IVdf"\n", (IV)GvLINE(sv));
+	Perl_dump_indent(aTHX_ level, file, "    FILE = \"%s\"\n", GvFILE(sv));
+	Perl_dump_indent(aTHX_ level, file, "    FLAGS = 0x%"UVxf"\n", (UV)GvFLAGS(sv));
+	do_gv_dump (level, file, "    EGV", GvEGV(sv));
+	break;
+    case SVt_PVIO:
+	Perl_dump_indent(aTHX_ level, file, "  IFP = 0x%"UVxf"\n", PTR2UV(IoIFP(sv)));
+	Perl_dump_indent(aTHX_ level, file, "  OFP = 0x%"UVxf"\n", PTR2UV(IoOFP(sv)));
+	Perl_dump_indent(aTHX_ level, file, "  DIRP = 0x%"UVxf"\n", PTR2UV(IoDIRP(sv)));
+	Perl_dump_indent(aTHX_ level, file, "  LINES = %"IVdf"\n", (IV)IoLINES(sv));
+	Perl_dump_indent(aTHX_ level, file, "  PAGE = %"IVdf"\n", (IV)IoPAGE(sv));
+	Perl_dump_indent(aTHX_ level, file, "  PAGE_LEN = %"IVdf"\n", (IV)IoPAGE_LEN(sv));
+	Perl_dump_indent(aTHX_ level, file, "  LINES_LEFT = %"IVdf"\n", (IV)IoLINES_LEFT(sv));
+        if (IoTOP_NAME(sv))
+            Perl_dump_indent(aTHX_ level, file, "  TOP_NAME = \"%s\"\n", IoTOP_NAME(sv));
+	do_gv_dump (level, file, "  TOP_GV", IoTOP_GV(sv));
+        if (IoFMT_NAME(sv))
+            Perl_dump_indent(aTHX_ level, file, "  FMT_NAME = \"%s\"\n", IoFMT_NAME(sv));
+	do_gv_dump (level, file, "  FMT_GV", IoFMT_GV(sv));
+        if (IoBOTTOM_NAME(sv))
+            Perl_dump_indent(aTHX_ level, file, "  BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv));
+	do_gv_dump (level, file, "  BOTTOM_GV", IoBOTTOM_GV(sv));
+	Perl_dump_indent(aTHX_ level, file, "  SUBPROCESS = %"IVdf"\n", (IV)IoSUBPROCESS(sv));
+	if (isPRINT(IoTYPE(sv)))
+            Perl_dump_indent(aTHX_ level, file, "  TYPE = '%c'\n", IoTYPE(sv));
+	else
+            Perl_dump_indent(aTHX_ level, file, "  TYPE = '\\%o'\n", IoTYPE(sv));
+	Perl_dump_indent(aTHX_ level, file, "  FLAGS = 0x%"UVxf"\n", (UV)IoFLAGS(sv));
+	break;
+    }
 }
 
-
-STATIC void
-dump(char *pat,...)
+void
+Perl_sv_dump(pTHX_ SV *sv)
 {
-#ifdef DEBUGGING
-    I32 i;
-    va_list args;
-
-    va_start(args, pat);
-    for (i = PL_dumplvl*4; i; i--)
-	(void)PerlIO_putc(Perl_debug_log,' ');
-    PerlIO_vprintf(Perl_debug_log,pat,args);
-    va_end(args);
-#endif	/* DEBUGGING */
+    do_sv_dump(0, Perl_debug_log, sv, 0, 0, 0, 0);
 }
diff --git a/contrib/perl5/ebcdic.c b/contrib/perl5/ebcdic.c
index 890bd086d2b1..d86d50bd327e 100644
--- a/contrib/perl5/ebcdic.c
+++ b/contrib/perl5/ebcdic.c
@@ -1,4 +1,5 @@
 #include "EXTERN.h"
+#define PERL_IN_EBCDIC_C
 #include "perl.h"
 
 /* in ASCII order, not that it matters */
@@ -14,7 +15,7 @@ ebcdic_control(int ch)
   	              ch = toupper(ch);
  
  	       if ((ctlp = strchr(controllablechars, ch)) == 0) {
-  	              die("unrecognised control character '%c'\n", ch);
+  	              Perl_die(aTHX_ "unrecognised control character '%c'\n", ch);
      	       }
  
         	if (ctlp == controllablechars)
@@ -24,9 +25,17 @@ ebcdic_control(int ch)
 	} else { /* Want uncontrol */
         	if (ch == '\177' || ch == -1)
                 	return('?');
+        	else if (ch == '\157')
+                	return('\177');
+        	else if (ch == '\174')
+                	return('\000');
+        	else if (ch == '^')    /* '\137' in 1047, '\260' in 819 */
+                	return('\036');
+        	else if (ch == '\155')
+                	return('\037');
         	else if (0 < ch && ch < (sizeof(controllablechars) - 1))
                 	return(controllablechars[ch+1]);
         	else
-                	die("invalid control request: '\\%03o'\n", ch & 0xFF);
+                	Perl_die(aTHX_ "invalid control request: '\\%03o'\n", ch & 0xFF);
 	}
 }
diff --git a/contrib/perl5/eg/cgi/dna_small_gif.uu b/contrib/perl5/eg/cgi/dna_small_gif.uu
new file mode 100644
index 000000000000..1745c7376126
--- /dev/null
+++ b/contrib/perl5/eg/cgi/dna_small_gif.uu
@@ -0,0 +1,63 @@
+begin 444 dna_small.gif
+M1TE&.#=A)0`J`.<``+9%&Y@_&A$_5`Y#3$=2"=#59M((H88,GP\/]X^&+$R
+M$"(79"DF33(93"$86=%;&"T4/=Y"&\\A$Q4Z4!`62*T4-Q4B9+X1*BH96SP?
+M1<0D/3(F<-TM$!`=5:H.(!<64C$W?#8J3*`S(S<@3=8V%K$](QT.6Q`43AL4
+M1:$D,;<0,\X9&,8])\@=$A(U244S5U,D6Q=/#YH>
+M08$I1B,09S$35R(:4C0?<19$75!()-;4702M`=;56)A`25,0K%"X<
+M83`N>K`H'HDS*1`40,M&%!<@7M,_$AE+#%0>0S0/:4PJ9I,F-6DG420Y<"@09R,0
+M-V$R/R4M<:\H0!(H410Z:AT27&4Q9"L@;=1%(MA-$M5+#RL4+M8Z&AT<7[<:
+M(-QA&2,36R$++B(84!0:5ALO:K$A.]X?&!$84V@;/SX<6Q`;2$(B2QD21W4J
+M1=TW&@```````````````"P`````)0`J```(_@!]:(N'18\W%15T$1N'C)V?
+M0_HH,<$G9YBX!C6<3;+T@AZ-)K@\O*"!KP^$>"KVA`L3*8P3)^5ZA)@B:AH+
+M9];F7.$Q+!`!0=*.%",&P7J"9XB82L5,48F5K,:"
+M'94FU='6;!*R3T->E"%&95DR"`/6P,I0PDF)0SG8($$RJN0R`FI(H7$A2]VD
+M*^^L_6(T3U*V%XH"_AB:HDS8H$AO5@R:P,8.I%^.:*AC(>Z!'":6RC`1L@W-
+M%1Q/,%(.'5+1``/"*]=90`PD.F'3SR@-AG)`&_A=3'"**#[J(P<0^C0&S/#1""(ZI)'&*6,,$842N%Q!@3NK
+M"R'%%4KP0D(Q?"`S!3)BVE(/$+)#-80
+M<+,`-[QH$LP+0_P!1C>=S("!,N>8XP<8H6131!B;3`#&#)"DTH(L5#P0S#W+
+MQ)*`$K1HHD4^;E!2QP%:B``&4H$,/Y2C$Y*(1%0(00A)@```77B"*$0@#3>P
+MP&PU4`,^H!","P!!$')0P^H6((I5L"$'.;``';[Q!@-\PP"$0?)M$`<92!%OG8Q3#@(`U2C*)%9-!`&`K`!!EP0@80
+M2,0M;I$.:"C#"D.@P#UJ``]GT"*,K%B&*0+!@TFH8VV*0$(:_/`)?7@#'.'0
+M@R[H8``\:&`,=NC"*"B@!2TTHP5]N((TEH&`<)B"!PU`0RQ(P8MNS``9K6@%
+M'W31AG%$(BZ2&((PA-&#'I"A&`F8!DD\\`H6-,.,X'B'%,+R#FX4`PS&_L!$
+M.4R0#7W<0@%O2,07$($#9@C3"%C8P!5H88\]J$,"-E!;(.X@C5T<`!65V,40
+M,'&(0C!"`1JP@"3TH`T9=&,5JRC$-]+1`U%TP@@[^,$>Z$&*0%1A%XFK`BFD
+MX0L6Y"(#A_A$#[JPC@%\@1@02`(SJ#&&.`A@'\&$!AALX(4Y="`/TA"",UA!
+M@%W<8!*\$`$@C%""+G1A"9AP!"<>9@ME*)$0F\C!$I8`B3\TP@%'@$(QH$`"
+M)8@#'(B0ACB`P`,@%&,'9"##)S`1!&)\`0)^&,,^+$`("QC"#D\X!":HX0!<
+ML(`&-O!%,&H@BS#F0AI'`!LO^"`,/OS!%KJ0_H0HEA`E27Q#%T%X0"%"@`1E
+M2,`!:F!%+Q#A!G)40A!HP`4OFK`#-13#`?I(QCW38(Q/9&``%0#!);01BE>$
+M@!TZNL81$G`!-]2!&&5@A1N&T0Q<,$$$%*!``BR1A5$PPPH<74$%]*`#$.RA
+M`(VP@#`X$(`7``(%T=@`.5Q`C@:0`P[)D$4'$H`."MB#"908Q=X@,01B9$(7
+MG'A%`#8!"QSL@PUAL,0==M"")CQCP4)0QQUDP806H&,!T]A!`EH@AC2P`P,^
+MT`,*NN%-&&T!&L@X!!Y^<(4.D(,%E>A`,T20C#IXL`6-:,`5F+"#!W"@'%OH
+MA`IJ$5(#;`(;AV/'FA103(EV+(,>GHB&&ZJ`!D'P!57`X1F9D`4<0!]FB({'Content-Type'} || '';
+if (my $file = param('filename')) {
+    my %stats;
+    my $tmpfile=tmpFileName($file);
+    my $mimetype = uploadInfo($file)->{'Content-Type'} || '';
     print hr(),
           h2($file),
           h3($tmpfile),
diff --git a/contrib/perl5/eg/cgi/index.html b/contrib/perl5/eg/cgi/index.html
index 75e2d3013996..133ecc4a161e 100644
--- a/contrib/perl5/eg/cgi/index.html
+++ b/contrib/perl5/eg/cgi/index.html
@@ -54,7 +54,8 @@
   
  • Look at its source code -The Following Scripts only Work with Netscape 2.0 & Internet Explorer only! +The Following Scripts Work with Netscape Navigator 2.0 and higher, +or Internet Explorer 3.0 and higher

    Prompt for a file to upload and process it

      @@ -107,12 +108,12 @@
    • CGI.pm documentation -
    • Download the CGI.pm distribution +
    • Download the CGI.pm distribution

    • Lincoln D. Stein, lstein@genome.wi.mit.edu
      Whitehead Institute/MIT Center for Genome Research
      -Last modified: Tue May 19 22:16:43 EDT 1998 +Last modified: Wed Jun 23 15:31:47 EDT 1999 diff --git a/contrib/perl5/eg/cgi/wilogo_gif.uu b/contrib/perl5/eg/cgi/wilogo_gif.uu new file mode 100644 index 000000000000..c5d10423b49f --- /dev/null +++ b/contrib/perl5/eg/cgi/wilogo_gif.uu @@ -0,0 +1,13 @@ +begin 444 wilogo.gif +M1TE&.#=A7@!$`(```'X2F?___RP`````7@!$```"_D2.J<#MKF)ZU,A3,[OO +M(IUY']A%9"6AW$F)+#2]Y:BNLF6_\;WMHF*(A55\BX%UEI^;OJ8N%(*Z^4G +M.OJJ>8HZ.(>;JRMD>X" +M%A1XSM]!A?T8/C0T$1XMJG\B&G+,"-&C/(VS0(842;`)M'S>_OE8F#"=2S#* +M8LHLAS'D1Y,42UGY9O,F-T:X@@JEE@D1RW>/D@8R.DZ-+*E0CQ:9JJ5JU!SQ +MR&BU2D.;E*4'ER0TNY%G2A/Y.G[=VG%81+5K_UG$21-GQW55;$8L\RW6J8-9>QM7<^A/SMZK!ESY$,+ +(KPA.EJ```#L` +end diff --git a/contrib/perl5/embed.h b/contrib/perl5/embed.h index e7deb3257501..d372b2068728 100644 --- a/contrib/perl5/embed.h +++ b/contrib/perl5/embed.h @@ -1,38 +1,86 @@ /* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by embed.pl from global.sym, intrpvar.h, - and thrdvar.h. Any changes made here will be lost! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! */ /* (Doing namespace management portably in C is really gross.) */ -/* EMBED has no run-time penalty, but helps keep the Perl namespace - from colliding with that used by other libraries pulled in - by extensions or by embedding perl. Allow a cc -DNO_EMBED - override, however, to keep binary compatability with previous - versions of perl. -*/ -#ifndef NO_EMBED -# define EMBED 1 +/* NO_EMBED is no longer supported. i.e. EMBED is always active. */ + +/* provide binary compatible (but inconsistent) names */ +#if defined(PERL_BINCOMPAT_5005) +# define Perl_call_atexit perl_atexit +# define Perl_eval_sv perl_eval_sv +# define Perl_eval_pv perl_eval_pv +# define Perl_call_argv perl_call_argv +# define Perl_call_method perl_call_method +# define Perl_call_pv perl_call_pv +# define Perl_call_sv perl_call_sv +# define Perl_get_av perl_get_av +# define Perl_get_cv perl_get_cv +# define Perl_get_hv perl_get_hv +# define Perl_get_sv perl_get_sv +# define Perl_init_i18nl10n perl_init_i18nl10n +# define Perl_init_i18nl14n perl_init_i18nl14n +# define Perl_new_collate perl_new_collate +# define Perl_new_ctype perl_new_ctype +# define Perl_new_numeric perl_new_numeric +# define Perl_require_pv perl_require_pv +# define Perl_safesyscalloc Perl_safecalloc +# define Perl_safesysfree Perl_safefree +# define Perl_safesysmalloc Perl_safemalloc +# define Perl_safesysrealloc Perl_saferealloc +# define Perl_set_numeric_local perl_set_numeric_local +# define Perl_set_numeric_standard perl_set_numeric_standard +/* malloc() pollution was the default in earlier versions, so enable + * it for bincompat; but not for systems that used to do prevent that, + * or when they ask for {HIDE,EMBED}MYMALLOC */ +# if !defined(EMBEDMYMALLOC) && !defined(HIDEMYMALLOC) +# if !defined(NeXT) && !defined(__NeXT) && !defined(__MACHTEN__) && \ + !defined(__QNX__) +# define PERL_POLLUTE_MALLOC +# endif +# endif #endif -/* Hide global symbols? */ +/* Hide global symbols */ -#ifdef EMBED +#if !defined(PERL_OBJECT) +#if !defined(PERL_IMPLICIT_CONTEXT) -#define AMG_names Perl_AMG_names -#define Error Perl_Error -#define Gv_AMupdate Perl_Gv_AMupdate -#define abs_amg Perl_abs_amg -#define add_amg Perl_add_amg -#define add_ass_amg Perl_add_ass_amg -#define additem Perl_additem +#if defined(PERL_IMPLICIT_SYS) +#endif +#if defined(USE_ITHREADS) +# if defined(PERL_IMPLICIT_SYS) +# endif +#endif +#if defined(MYMALLOC) +#define malloced_size Perl_malloced_size +#endif +#define get_context Perl_get_context +#define set_context Perl_set_context +#if defined(PERL_OBJECT) +#ifndef __BORLANDC__ +#endif +#endif +#if defined(PERL_OBJECT) +#else +#endif #define amagic_call Perl_amagic_call +#define Gv_AMupdate Perl_Gv_AMupdate #define append_elem Perl_append_elem #define append_list Perl_append_list #define apply Perl_apply -#define assertref Perl_assertref -#define atan2_amg Perl_atan2_amg +#define avhv_delete_ent Perl_avhv_delete_ent +#define avhv_exists_ent Perl_avhv_exists_ent +#define avhv_fetch_ent Perl_avhv_fetch_ent +#define avhv_store_ent Perl_avhv_store_ent +#define avhv_iternext Perl_avhv_iternext +#define avhv_iterval Perl_avhv_iterval +#define avhv_keys Perl_avhv_keys #define av_clear Perl_av_clear +#define av_delete Perl_av_delete +#define av_exists Perl_av_exists #define av_extend Perl_av_extend #define av_fake Perl_av_fake #define av_fetch Perl_av_fetch @@ -46,169 +94,134 @@ #define av_store Perl_av_store #define av_undef Perl_av_undef #define av_unshift Perl_av_unshift -#define avhv_exists_ent Perl_avhv_exists_ent -#define avhv_fetch_ent Perl_avhv_fetch_ent -#define avhv_iternext Perl_avhv_iternext -#define avhv_iterval Perl_avhv_iterval -#define avhv_keys Perl_avhv_keys -#define band_amg Perl_band_amg #define bind_match Perl_bind_match #define block_end Perl_block_end #define block_gimme Perl_block_gimme #define block_start Perl_block_start -#define block_type Perl_block_type -#define bool__amg Perl_bool__amg #define boot_core_UNIVERSAL Perl_boot_core_UNIVERSAL -#define bor_amg Perl_bor_amg -#define bset_obj_store Perl_bset_obj_store -#define bxor_amg Perl_bxor_amg -#define byterun Perl_byterun #define call_list Perl_call_list #define cando Perl_cando #define cast_ulong Perl_cast_ulong -#define check Perl_check -#define check_uni Perl_check_uni -#define checkcomma Perl_checkcomma -#define ck_aelem Perl_ck_aelem -#define ck_anoncode Perl_ck_anoncode -#define ck_bitop Perl_ck_bitop -#define ck_concat Perl_ck_concat -#define ck_delete Perl_ck_delete -#define ck_eof Perl_ck_eof -#define ck_eval Perl_ck_eval -#define ck_exec Perl_ck_exec -#define ck_exists Perl_ck_exists -#define ck_ftst Perl_ck_ftst -#define ck_fun Perl_ck_fun -#define ck_fun_locale Perl_ck_fun_locale -#define ck_glob Perl_ck_glob -#define ck_grep Perl_ck_grep -#define ck_gvconst Perl_ck_gvconst -#define ck_index Perl_ck_index -#define ck_lengthconst Perl_ck_lengthconst -#define ck_lfun Perl_ck_lfun -#define ck_listiob Perl_ck_listiob -#define ck_match Perl_ck_match -#define ck_null Perl_ck_null -#define ck_repeat Perl_ck_repeat -#define ck_require Perl_ck_require -#define ck_retarget Perl_ck_retarget -#define ck_rfun Perl_ck_rfun -#define ck_rvconst Perl_ck_rvconst -#define ck_scmp Perl_ck_scmp -#define ck_select Perl_ck_select -#define ck_shift Perl_ck_shift -#define ck_sort Perl_ck_sort -#define ck_spair Perl_ck_spair -#define ck_split Perl_ck_split -#define ck_subr Perl_ck_subr -#define ck_svconst Perl_ck_svconst -#define ck_trunc Perl_ck_trunc -#define compl_amg Perl_compl_amg -#define concat_amg Perl_concat_amg -#define concat_ass_amg Perl_concat_ass_amg +#define cast_i32 Perl_cast_i32 +#define cast_iv Perl_cast_iv +#define cast_uv Perl_cast_uv +#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) +#define my_chsize Perl_my_chsize +#endif +#if defined(USE_THREADS) #define condpair_magic Perl_condpair_magic +#endif #define convert Perl_convert -#define cos_amg Perl_cos_amg #define croak Perl_croak +#define vcroak Perl_vcroak +#if defined(PERL_IMPLICIT_CONTEXT) +#define croak_nocontext Perl_croak_nocontext +#define die_nocontext Perl_die_nocontext +#define deb_nocontext Perl_deb_nocontext +#define form_nocontext Perl_form_nocontext +#define load_module_nocontext Perl_load_module_nocontext +#define mess_nocontext Perl_mess_nocontext +#define warn_nocontext Perl_warn_nocontext +#define warner_nocontext Perl_warner_nocontext +#define newSVpvf_nocontext Perl_newSVpvf_nocontext +#define sv_catpvf_nocontext Perl_sv_catpvf_nocontext +#define sv_setpvf_nocontext Perl_sv_setpvf_nocontext +#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext +#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext +#define fprintf_nocontext Perl_fprintf_nocontext +#endif #define cv_ckproto Perl_cv_ckproto #define cv_clone Perl_cv_clone #define cv_const_sv Perl_cv_const_sv +#define op_const_sv Perl_op_const_sv #define cv_undef Perl_cv_undef #define cx_dump Perl_cx_dump +#define filter_add Perl_filter_add +#define filter_del Perl_filter_del +#define filter_read Perl_filter_read +#define get_op_descs Perl_get_op_descs +#define get_op_names Perl_get_op_names +#define get_no_modify Perl_get_no_modify +#define get_opargs Perl_get_opargs +#define get_ppaddr Perl_get_ppaddr #define cxinc Perl_cxinc -#define dc Perl_dc #define deb Perl_deb -#define deb_growlevel Perl_deb_growlevel -#define debop Perl_debop +#define vdeb Perl_vdeb #define debprofdump Perl_debprofdump +#define debop Perl_debop #define debstack Perl_debstack #define debstackptrs Perl_debstackptrs -#define dec_amg Perl_dec_amg #define delimcpy Perl_delimcpy #define deprecate Perl_deprecate -#define di Perl_di #define die Perl_die +#define vdie Perl_vdie #define die_where Perl_die_where -#define div_amg Perl_div_amg -#define div_ass_amg Perl_div_ass_amg +#define dounwind Perl_dounwind #define do_aexec Perl_do_aexec +#define do_aexec5 Perl_do_aexec5 #define do_binmode Perl_do_binmode -#define do_chomp Perl_do_chomp #define do_chop Perl_do_chop #define do_close Perl_do_close #define do_eof Perl_do_eof #define do_exec Perl_do_exec +#if !defined(WIN32) +#define do_exec3 Perl_do_exec3 +#endif #define do_execfree Perl_do_execfree +#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) #define do_ipcctl Perl_do_ipcctl #define do_ipcget Perl_do_ipcget -#define do_join Perl_do_join -#define do_kv Perl_do_kv #define do_msgrcv Perl_do_msgrcv #define do_msgsnd Perl_do_msgsnd +#define do_semop Perl_do_semop +#define do_shmio Perl_do_shmio +#endif +#define do_join Perl_do_join +#define do_kv Perl_do_kv #define do_open Perl_do_open +#define do_open9 Perl_do_open9 #define do_pipe Perl_do_pipe #define do_print Perl_do_print #define do_readline Perl_do_readline +#define do_chomp Perl_do_chomp #define do_seek Perl_do_seek -#define do_semop Perl_do_semop -#define do_shmio Perl_do_shmio #define do_sprintf Perl_do_sprintf #define do_sysseek Perl_do_sysseek #define do_tell Perl_do_tell #define do_trans Perl_do_trans +#define do_vecget Perl_do_vecget #define do_vecset Perl_do_vecset #define do_vop Perl_do_vop #define dofile Perl_dofile -#define dofindlabel Perl_dofindlabel -#define dopoptoeval Perl_dopoptoeval -#define dounwind Perl_dounwind #define dowantarray Perl_dowantarray -#define ds Perl_ds #define dump_all Perl_dump_all #define dump_eval Perl_dump_eval +#if defined(DUMP_FDS) #define dump_fds Perl_dump_fds +#endif #define dump_form Perl_dump_form -#define dump_gv Perl_dump_gv -#define dump_mstats Perl_dump_mstats -#define dump_op Perl_dump_op +#define gv_dump Perl_gv_dump +#define op_dump Perl_op_dump +#define pmop_dump Perl_pmop_dump #define dump_packsubs Perl_dump_packsubs -#define dump_pm Perl_dump_pm #define dump_sub Perl_dump_sub -#define eq_amg Perl_eq_amg -#define exp_amg Perl_exp_amg -#define expectterm Perl_expectterm -#define fallback_amg Perl_fallback_amg #define fbm_compile Perl_fbm_compile #define fbm_instr Perl_fbm_instr -#define fetch_gv Perl_fetch_gv -#define fetch_io Perl_fetch_io -#define filter_add Perl_filter_add -#define filter_del Perl_filter_del -#define filter_read Perl_filter_read #define find_script Perl_find_script +#if defined(USE_THREADS) #define find_threadsv Perl_find_threadsv -#define fold Perl_fold -#define fold_constants Perl_fold_constants -#define fold_locale Perl_fold_locale -#define force_ident Perl_force_ident +#endif #define force_list Perl_force_list -#define force_next Perl_force_next -#define force_word Perl_force_word +#define fold_constants Perl_fold_constants #define form Perl_form +#define vform Perl_vform #define free_tmps Perl_free_tmps -#define freq Perl_freq -#define ge_amg Perl_ge_amg #define gen_constant_list Perl_gen_constant_list -#define get_no_modify Perl_get_no_modify -#define get_op_descs Perl_get_op_descs -#define get_op_names Perl_get_op_names -#define get_opargs Perl_get_opargs -#define get_specialsv_list Perl_get_specialsv_list -#define get_vtbl Perl_get_vtbl +#if !defined(HAS_GETENV_LEN) +#define getenv_len Perl_getenv_len +#endif #define gp_free Perl_gp_free #define gp_ref Perl_gp_ref -#define gt_amg Perl_gt_amg #define gv_AVadd Perl_gv_AVadd #define gv_HVadd Perl_gv_HVadd #define gv_IOadd Perl_gv_IOadd @@ -244,39 +257,82 @@ #define hv_iterval Perl_hv_iterval #define hv_ksplit Perl_hv_ksplit #define hv_magic Perl_hv_magic -#define hv_stashpv Perl_hv_stashpv #define hv_store Perl_hv_store #define hv_store_ent Perl_hv_store_ent #define hv_undef Perl_hv_undef #define ibcmp Perl_ibcmp #define ibcmp_locale Perl_ibcmp_locale -#define inc_amg Perl_inc_amg #define ingroup Perl_ingroup +#define init_debugger Perl_init_debugger #define init_stacks Perl_init_stacks -#define init_thread_intern Perl_init_thread_intern -#define instr Perl_instr #define intro_my Perl_intro_my -#define intuit_more Perl_intuit_more -#define invert Perl_invert +#define instr Perl_instr #define io_close Perl_io_close +#define invert Perl_invert +#define is_uni_alnum Perl_is_uni_alnum +#define is_uni_alnumc Perl_is_uni_alnumc +#define is_uni_idfirst Perl_is_uni_idfirst +#define is_uni_alpha Perl_is_uni_alpha +#define is_uni_ascii Perl_is_uni_ascii +#define is_uni_space Perl_is_uni_space +#define is_uni_cntrl Perl_is_uni_cntrl +#define is_uni_graph Perl_is_uni_graph +#define is_uni_digit Perl_is_uni_digit +#define is_uni_upper Perl_is_uni_upper +#define is_uni_lower Perl_is_uni_lower +#define is_uni_print Perl_is_uni_print +#define is_uni_punct Perl_is_uni_punct +#define is_uni_xdigit Perl_is_uni_xdigit +#define to_uni_upper Perl_to_uni_upper +#define to_uni_title Perl_to_uni_title +#define to_uni_lower Perl_to_uni_lower +#define is_uni_alnum_lc Perl_is_uni_alnum_lc +#define is_uni_alnumc_lc Perl_is_uni_alnumc_lc +#define is_uni_idfirst_lc Perl_is_uni_idfirst_lc +#define is_uni_alpha_lc Perl_is_uni_alpha_lc +#define is_uni_ascii_lc Perl_is_uni_ascii_lc +#define is_uni_space_lc Perl_is_uni_space_lc +#define is_uni_cntrl_lc Perl_is_uni_cntrl_lc +#define is_uni_graph_lc Perl_is_uni_graph_lc +#define is_uni_digit_lc Perl_is_uni_digit_lc +#define is_uni_upper_lc Perl_is_uni_upper_lc +#define is_uni_lower_lc Perl_is_uni_lower_lc +#define is_uni_print_lc Perl_is_uni_print_lc +#define is_uni_punct_lc Perl_is_uni_punct_lc +#define is_uni_xdigit_lc Perl_is_uni_xdigit_lc +#define to_uni_upper_lc Perl_to_uni_upper_lc +#define to_uni_title_lc Perl_to_uni_title_lc +#define to_uni_lower_lc Perl_to_uni_lower_lc +#define is_utf8_char Perl_is_utf8_char +#define is_utf8_alnum Perl_is_utf8_alnum +#define is_utf8_alnumc Perl_is_utf8_alnumc +#define is_utf8_idfirst Perl_is_utf8_idfirst +#define is_utf8_alpha Perl_is_utf8_alpha +#define is_utf8_ascii Perl_is_utf8_ascii +#define is_utf8_space Perl_is_utf8_space +#define is_utf8_cntrl Perl_is_utf8_cntrl +#define is_utf8_digit Perl_is_utf8_digit +#define is_utf8_graph Perl_is_utf8_graph +#define is_utf8_upper Perl_is_utf8_upper +#define is_utf8_lower Perl_is_utf8_lower +#define is_utf8_print Perl_is_utf8_print +#define is_utf8_punct Perl_is_utf8_punct +#define is_utf8_xdigit Perl_is_utf8_xdigit +#define is_utf8_mark Perl_is_utf8_mark #define jmaybe Perl_jmaybe #define keyword Perl_keyword -#define know_next Perl_know_next -#define le_amg Perl_le_amg #define leave_scope Perl_leave_scope #define lex_end Perl_lex_end #define lex_start Perl_lex_start #define linklist Perl_linklist #define list Perl_list #define listkids Perl_listkids +#define load_module Perl_load_module +#define vload_module Perl_vload_module #define localize Perl_localize -#define log_amg Perl_log_amg #define looks_like_number Perl_looks_like_number -#define lshift_amg Perl_lshift_amg -#define lshift_ass_amg Perl_lshift_ass_amg -#define lt_amg Perl_lt_amg -#define magic_clear_all_env Perl_magic_clear_all_env #define magic_clearenv Perl_magic_clearenv +#define magic_clear_all_env Perl_magic_clear_all_env #define magic_clearpack Perl_magic_clearpack #define magic_clearsig Perl_magic_clearsig #define magic_existspack Perl_magic_existspack @@ -294,20 +350,25 @@ #define magic_getuvar Perl_magic_getuvar #define magic_getvec Perl_magic_getvec #define magic_len Perl_magic_len +#if defined(USE_THREADS) #define magic_mutexfree Perl_magic_mutexfree +#endif #define magic_nextpack Perl_magic_nextpack +#define magic_regdata_cnt Perl_magic_regdata_cnt +#define magic_regdatum_get Perl_magic_regdatum_get #define magic_set Perl_magic_set -#define magic_set_all_env Perl_magic_set_all_env #define magic_setamagic Perl_magic_setamagic #define magic_setarylen Perl_magic_setarylen #define magic_setbm Perl_magic_setbm -#define magic_setcollxfrm Perl_magic_setcollxfrm #define magic_setdbline Perl_magic_setdbline +#if defined(USE_LOCALE_COLLATE) +#define magic_setcollxfrm Perl_magic_setcollxfrm +#endif #define magic_setdefelem Perl_magic_setdefelem #define magic_setenv Perl_magic_setenv #define magic_setfm Perl_magic_setfm -#define magic_setglob Perl_magic_setglob #define magic_setisa Perl_magic_setisa +#define magic_setglob Perl_magic_setglob #define magic_setmglob Perl_magic_setmglob #define magic_setnkeys Perl_magic_setnkeys #define magic_setpack Perl_magic_setpack @@ -317,13 +378,17 @@ #define magic_settaint Perl_magic_settaint #define magic_setuvar Perl_magic_setuvar #define magic_setvec Perl_magic_setvec +#define magic_set_all_env Perl_magic_set_all_env #define magic_sizepack Perl_magic_sizepack #define magic_wipepack Perl_magic_wipepack #define magicname Perl_magicname -#define malloced_size Perl_malloced_size #define markstack_grow Perl_markstack_grow +#if defined(USE_LOCALE_COLLATE) #define mem_collxfrm Perl_mem_collxfrm +#endif #define mess Perl_mess +#define vmess Perl_vmess +#define qerror Perl_qerror #define mg_clear Perl_mg_clear #define mg_copy Perl_mg_copy #define mg_find Perl_mg_find @@ -334,130 +399,770 @@ #define mg_set Perl_mg_set #define mg_size Perl_mg_size #define mod Perl_mod -#define mod_amg Perl_mod_amg -#define mod_ass_amg Perl_mod_ass_amg -#define modkids Perl_modkids +#define mode_from_discipline Perl_mode_from_discipline #define moreswitches Perl_moreswitches -#define mstats Perl_mstats -#define mult_amg Perl_mult_amg -#define mult_ass_amg Perl_mult_ass_amg #define my Perl_my +#define my_atof Perl_my_atof +#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY) #define my_bcopy Perl_my_bcopy +#endif +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) #define my_bzero Perl_my_bzero -#define my_chsize Perl_my_chsize +#endif #define my_exit Perl_my_exit #define my_failure_exit Perl_my_failure_exit -#define my_htonl Perl_my_htonl +#define my_fflush_all Perl_my_fflush_all #define my_lstat Perl_my_lstat +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) #define my_memcmp Perl_my_memcmp +#endif +#if !defined(HAS_MEMSET) #define my_memset Perl_my_memset -#define my_ntohl Perl_my_ntohl +#endif +#if !defined(PERL_OBJECT) #define my_pclose Perl_my_pclose #define my_popen Perl_my_popen +#endif #define my_setenv Perl_my_setenv #define my_stat Perl_my_stat +#if defined(MYSWAP) #define my_swap Perl_my_swap +#define my_htonl Perl_my_htonl +#define my_ntohl Perl_my_ntohl +#endif #define my_unexec Perl_my_unexec -#define ncmp_amg Perl_ncmp_amg -#define ne_amg Perl_ne_amg -#define neg_amg Perl_neg_amg -#define newANONHASH Perl_newANONHASH #define newANONLIST Perl_newANONLIST +#define newANONHASH Perl_newANONHASH #define newANONSUB Perl_newANONSUB #define newASSIGNOP Perl_newASSIGNOP -#define newAV Perl_newAV -#define newAVREF Perl_newAVREF -#define newBINOP Perl_newBINOP #define newCONDOP Perl_newCONDOP #define newCONSTSUB Perl_newCONSTSUB -#define newCVREF Perl_newCVREF #define newFORM Perl_newFORM #define newFOROP Perl_newFOROP -#define newGVOP Perl_newGVOP -#define newGVREF Perl_newGVREF -#define newGVgen Perl_newGVgen -#define newHV Perl_newHV -#define newHVREF Perl_newHVREF -#define newHVhv Perl_newHVhv -#define newIO Perl_newIO -#define newLISTOP Perl_newLISTOP #define newLOGOP Perl_newLOGOP #define newLOOPEX Perl_newLOOPEX #define newLOOPOP Perl_newLOOPOP #define newNULLLIST Perl_newNULLLIST #define newOP Perl_newOP -#define newPMOP Perl_newPMOP #define newPROG Perl_newPROG -#define newPVOP Perl_newPVOP #define newRANGE Perl_newRANGE -#define newRV Perl_newRV -#define newRV_noinc Perl_newRV_noinc #define newSLICEOP Perl_newSLICEOP #define newSTATEOP Perl_newSTATEOP #define newSUB Perl_newSUB +#define newXS Perl_newXS +#define newAV Perl_newAV +#define newAVREF Perl_newAVREF +#define newBINOP Perl_newBINOP +#define newCVREF Perl_newCVREF +#define newGVOP Perl_newGVOP +#define newGVgen Perl_newGVgen +#define newGVREF Perl_newGVREF +#define newHVREF Perl_newHVREF +#define newHV Perl_newHV +#define newHVhv Perl_newHVhv +#define newIO Perl_newIO +#define newLISTOP Perl_newLISTOP +#define newPADOP Perl_newPADOP +#define newPMOP Perl_newPMOP +#define newPVOP Perl_newPVOP +#define newRV Perl_newRV +#define newRV_noinc Perl_newRV_noinc #define newSV Perl_newSV -#define newSVOP Perl_newSVOP #define newSVREF Perl_newSVREF +#define newSVOP Perl_newSVOP #define newSViv Perl_newSViv +#define newSVuv Perl_newSVuv #define newSVnv Perl_newSVnv #define newSVpv Perl_newSVpv -#define newSVpvf Perl_newSVpvf #define newSVpvn Perl_newSVpvn +#define newSVpvf Perl_newSVpvf +#define vnewSVpvf Perl_vnewSVpvf #define newSVrv Perl_newSVrv #define newSVsv Perl_newSVsv #define newUNOP Perl_newUNOP #define newWHILEOP Perl_newWHILEOP -#define newXS Perl_newXS -#define newXSUB Perl_newXSUB #define new_stackinfo Perl_new_stackinfo -#define new_struct_thread Perl_new_struct_thread #define nextargv Perl_nextargv #define ninstr Perl_ninstr -#define no_aelem Perl_no_aelem -#define no_dir_func Perl_no_dir_func -#define no_fh_allowed Perl_no_fh_allowed -#define no_func Perl_no_func -#define no_helem Perl_no_helem -#define no_mem Perl_no_mem -#define no_modify Perl_no_modify -#define no_myglob Perl_no_myglob -#define no_op Perl_no_op -#define no_security Perl_no_security -#define no_sock_func Perl_no_sock_func -#define no_symref Perl_no_symref -#define no_usym Perl_no_usym -#define no_wrongref Perl_no_wrongref -#define nointrp Perl_nointrp -#define nomem Perl_nomem -#define nomethod_amg Perl_nomethod_amg -#define not_amg Perl_not_amg -#define numer_amg Perl_numer_amg -#define oopsAV Perl_oopsAV #define oopsCV Perl_oopsCV -#define oopsHV Perl_oopsHV -#define op_const_sv Perl_op_const_sv -#define op_desc Perl_op_desc #define op_free Perl_op_free -#define op_name Perl_op_name -#define opargs Perl_opargs #define package Perl_package #define pad_alloc Perl_pad_alloc #define pad_allocmy Perl_pad_allocmy #define pad_findmy Perl_pad_findmy -#define pad_free Perl_pad_free +#define oopsAV Perl_oopsAV +#define oopsHV Perl_oopsHV #define pad_leavemy Perl_pad_leavemy -#define pad_reset Perl_pad_reset #define pad_sv Perl_pad_sv +#define pad_free Perl_pad_free +#define pad_reset Perl_pad_reset #define pad_swipe Perl_pad_swipe #define peep Perl_peep +#if defined(PERL_OBJECT) +#endif +#if defined(USE_THREADS) +#define new_struct_thread Perl_new_struct_thread +#endif +#define call_atexit Perl_call_atexit +#define call_argv Perl_call_argv +#define call_method Perl_call_method +#define call_pv Perl_call_pv +#define call_sv Perl_call_sv +#define eval_pv Perl_eval_pv +#define eval_sv Perl_eval_sv +#define get_sv Perl_get_sv +#define get_av Perl_get_av +#define get_hv Perl_get_hv +#define get_cv Perl_get_cv +#define init_i18nl10n Perl_init_i18nl10n +#define init_i18nl14n Perl_init_i18nl14n +#define new_collate Perl_new_collate +#define new_ctype Perl_new_ctype +#define new_numeric Perl_new_numeric +#define set_numeric_local Perl_set_numeric_local +#define set_numeric_radix Perl_set_numeric_radix +#define set_numeric_standard Perl_set_numeric_standard +#define require_pv Perl_require_pv #define pidgone Perl_pidgone #define pmflag Perl_pmflag #define pmruntime Perl_pmruntime #define pmtrans Perl_pmtrans #define pop_return Perl_pop_return #define pop_scope Perl_pop_scope -#define pow_amg Perl_pow_amg -#define pow_ass_amg Perl_pow_ass_amg +#define prepend_elem Perl_prepend_elem +#define push_return Perl_push_return +#define push_scope Perl_push_scope +#define ref Perl_ref +#define refkids Perl_refkids +#define regdump Perl_regdump +#define pregexec Perl_pregexec +#define pregfree Perl_pregfree +#define pregcomp Perl_pregcomp +#define re_intuit_start Perl_re_intuit_start +#define re_intuit_string Perl_re_intuit_string +#define regexec_flags Perl_regexec_flags +#define regnext Perl_regnext +#define regprop Perl_regprop +#define repeatcpy Perl_repeatcpy +#define rninstr Perl_rninstr +#define rsignal Perl_rsignal +#define rsignal_restore Perl_rsignal_restore +#define rsignal_save Perl_rsignal_save +#define rsignal_state Perl_rsignal_state +#define rxres_free Perl_rxres_free +#define rxres_restore Perl_rxres_restore +#define rxres_save Perl_rxres_save +#if !defined(HAS_RENAME) +#define same_dirent Perl_same_dirent +#endif +#define savepv Perl_savepv +#define savepvn Perl_savepvn +#define savestack_grow Perl_savestack_grow +#define save_aelem Perl_save_aelem +#define save_alloc Perl_save_alloc +#define save_aptr Perl_save_aptr +#define save_ary Perl_save_ary +#define save_clearsv Perl_save_clearsv +#define save_delete Perl_save_delete +#define save_destructor Perl_save_destructor +#define save_destructor_x Perl_save_destructor_x +#define save_freesv Perl_save_freesv +#define save_freeop Perl_save_freeop +#define save_freepv Perl_save_freepv +#define save_generic_svref Perl_save_generic_svref +#define save_gp Perl_save_gp +#define save_hash Perl_save_hash +#define save_helem Perl_save_helem +#define save_hints Perl_save_hints +#define save_hptr Perl_save_hptr +#define save_I16 Perl_save_I16 +#define save_I32 Perl_save_I32 +#define save_I8 Perl_save_I8 +#define save_int Perl_save_int +#define save_item Perl_save_item +#define save_iv Perl_save_iv +#define save_list Perl_save_list +#define save_long Perl_save_long +#define save_nogv Perl_save_nogv +#define save_op Perl_save_op +#define save_scalar Perl_save_scalar +#define save_pptr Perl_save_pptr +#define save_vptr Perl_save_vptr +#define save_re_context Perl_save_re_context +#define save_sptr Perl_save_sptr +#define save_svref Perl_save_svref +#define save_threadsv Perl_save_threadsv +#define sawparens Perl_sawparens +#define scalar Perl_scalar +#define scalarkids Perl_scalarkids +#define scalarseq Perl_scalarseq +#define scalarvoid Perl_scalarvoid +#define scan_bin Perl_scan_bin +#define scan_hex Perl_scan_hex +#define scan_num Perl_scan_num +#define scan_oct Perl_scan_oct +#define scope Perl_scope +#define screaminstr Perl_screaminstr +#if !defined(VMS) +#define setenv_getix Perl_setenv_getix +#endif +#define setdefout Perl_setdefout +#define sharepvn Perl_sharepvn +#define share_hek Perl_share_hek +#define sighandler Perl_sighandler +#define stack_grow Perl_stack_grow +#define start_subparse Perl_start_subparse +#define sub_crush_depth Perl_sub_crush_depth +#define sv_2bool Perl_sv_2bool +#define sv_2cv Perl_sv_2cv +#define sv_2io Perl_sv_2io +#define sv_2iv Perl_sv_2iv +#define sv_2mortal Perl_sv_2mortal +#define sv_2nv Perl_sv_2nv +#define sv_2pv Perl_sv_2pv +#define sv_2pvutf8 Perl_sv_2pvutf8 +#define sv_2pvbyte Perl_sv_2pvbyte +#define sv_2uv Perl_sv_2uv +#define sv_iv Perl_sv_iv +#define sv_uv Perl_sv_uv +#define sv_nv Perl_sv_nv +#define sv_pvn Perl_sv_pvn +#define sv_pvutf8n Perl_sv_pvutf8n +#define sv_pvbyten Perl_sv_pvbyten +#define sv_true Perl_sv_true +#define sv_add_arena Perl_sv_add_arena +#define sv_backoff Perl_sv_backoff +#define sv_bless Perl_sv_bless +#define sv_catpvf Perl_sv_catpvf +#define sv_vcatpvf Perl_sv_vcatpvf +#define sv_catpv Perl_sv_catpv +#define sv_catpvn Perl_sv_catpvn +#define sv_catsv Perl_sv_catsv +#define sv_chop Perl_sv_chop +#define sv_clean_all Perl_sv_clean_all +#define sv_clean_objs Perl_sv_clean_objs +#define sv_clear Perl_sv_clear +#define sv_cmp Perl_sv_cmp +#define sv_cmp_locale Perl_sv_cmp_locale +#if defined(USE_LOCALE_COLLATE) +#define sv_collxfrm Perl_sv_collxfrm +#endif +#define sv_compile_2op Perl_sv_compile_2op +#define sv_dec Perl_sv_dec +#define sv_dump Perl_sv_dump +#define sv_derived_from Perl_sv_derived_from +#define sv_eq Perl_sv_eq +#define sv_free Perl_sv_free +#define sv_free_arenas Perl_sv_free_arenas +#define sv_gets Perl_sv_gets +#define sv_grow Perl_sv_grow +#define sv_inc Perl_sv_inc +#define sv_insert Perl_sv_insert +#define sv_isa Perl_sv_isa +#define sv_isobject Perl_sv_isobject +#define sv_len Perl_sv_len +#define sv_len_utf8 Perl_sv_len_utf8 +#define sv_magic Perl_sv_magic +#define sv_mortalcopy Perl_sv_mortalcopy +#define sv_newmortal Perl_sv_newmortal +#define sv_newref Perl_sv_newref +#define sv_peek Perl_sv_peek +#define sv_pos_u2b Perl_sv_pos_u2b +#define sv_pos_b2u Perl_sv_pos_b2u +#define sv_pvn_force Perl_sv_pvn_force +#define sv_pvutf8n_force Perl_sv_pvutf8n_force +#define sv_pvbyten_force Perl_sv_pvbyten_force +#define sv_reftype Perl_sv_reftype +#define sv_replace Perl_sv_replace +#define sv_report_used Perl_sv_report_used +#define sv_reset Perl_sv_reset +#define sv_setpvf Perl_sv_setpvf +#define sv_vsetpvf Perl_sv_vsetpvf +#define sv_setiv Perl_sv_setiv +#define sv_setpviv Perl_sv_setpviv +#define sv_setuv Perl_sv_setuv +#define sv_setnv Perl_sv_setnv +#define sv_setref_iv Perl_sv_setref_iv +#define sv_setref_nv Perl_sv_setref_nv +#define sv_setref_pv Perl_sv_setref_pv +#define sv_setref_pvn Perl_sv_setref_pvn +#define sv_setpv Perl_sv_setpv +#define sv_setpvn Perl_sv_setpvn +#define sv_setsv Perl_sv_setsv +#define sv_taint Perl_sv_taint +#define sv_tainted Perl_sv_tainted +#define sv_unmagic Perl_sv_unmagic +#define sv_unref Perl_sv_unref +#define sv_untaint Perl_sv_untaint +#define sv_upgrade Perl_sv_upgrade +#define sv_usepvn Perl_sv_usepvn +#define sv_vcatpvfn Perl_sv_vcatpvfn +#define sv_vsetpvfn Perl_sv_vsetpvfn +#define str_to_version Perl_str_to_version +#define swash_init Perl_swash_init +#define swash_fetch Perl_swash_fetch +#define taint_env Perl_taint_env +#define taint_proper Perl_taint_proper +#define to_utf8_lower Perl_to_utf8_lower +#define to_utf8_upper Perl_to_utf8_upper +#define to_utf8_title Perl_to_utf8_title +#if defined(UNLINK_ALL_VERSIONS) +#define unlnk Perl_unlnk +#endif +#if defined(USE_THREADS) +#define unlock_condpair Perl_unlock_condpair +#endif +#define unsharepvn Perl_unsharepvn +#define unshare_hek Perl_unshare_hek +#define utilize Perl_utilize +#define utf16_to_utf8 Perl_utf16_to_utf8 +#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed +#define utf8_distance Perl_utf8_distance +#define utf8_hop Perl_utf8_hop +#define utf8_to_uv Perl_utf8_to_uv +#define uv_to_utf8 Perl_uv_to_utf8 +#define vivify_defelem Perl_vivify_defelem +#define vivify_ref Perl_vivify_ref +#define wait4pid Perl_wait4pid +#define report_closed_fh Perl_report_closed_fh +#define report_uninit Perl_report_uninit +#define warn Perl_warn +#define vwarn Perl_vwarn +#define warner Perl_warner +#define vwarner Perl_vwarner +#define watch Perl_watch +#define whichsig Perl_whichsig +#define yyerror Perl_yyerror +#if defined(USE_PURE_BISON) +#define yylex Perl_yylex +#else +#define yylex Perl_yylex +#endif +#define yyparse Perl_yyparse +#define yywarn Perl_yywarn +#if defined(MYMALLOC) +#define dump_mstats Perl_dump_mstats +#define get_mstats Perl_get_mstats +#endif +#define safesysmalloc Perl_safesysmalloc +#define safesyscalloc Perl_safesyscalloc +#define safesysrealloc Perl_safesysrealloc +#define safesysfree Perl_safesysfree +#if defined(LEAKTEST) +#define safexmalloc Perl_safexmalloc +#define safexcalloc Perl_safexcalloc +#define safexrealloc Perl_safexrealloc +#define safexfree Perl_safexfree +#endif +#if defined(PERL_GLOBAL_STRUCT) +#define GetVars Perl_GetVars +#endif +#define runops_standard Perl_runops_standard +#define runops_debug Perl_runops_debug +#define sv_catpvf_mg Perl_sv_catpvf_mg +#define sv_vcatpvf_mg Perl_sv_vcatpvf_mg +#define sv_catpv_mg Perl_sv_catpv_mg +#define sv_catpvn_mg Perl_sv_catpvn_mg +#define sv_catsv_mg Perl_sv_catsv_mg +#define sv_setpvf_mg Perl_sv_setpvf_mg +#define sv_vsetpvf_mg Perl_sv_vsetpvf_mg +#define sv_setiv_mg Perl_sv_setiv_mg +#define sv_setpviv_mg Perl_sv_setpviv_mg +#define sv_setuv_mg Perl_sv_setuv_mg +#define sv_setnv_mg Perl_sv_setnv_mg +#define sv_setpv_mg Perl_sv_setpv_mg +#define sv_setpvn_mg Perl_sv_setpvn_mg +#define sv_setsv_mg Perl_sv_setsv_mg +#define sv_usepvn_mg Perl_sv_usepvn_mg +#define get_vtbl Perl_get_vtbl +#define pv_display Perl_pv_display +#define dump_indent Perl_dump_indent +#define dump_vindent Perl_dump_vindent +#define do_gv_dump Perl_do_gv_dump +#define do_gvgv_dump Perl_do_gvgv_dump +#define do_hv_dump Perl_do_hv_dump +#define do_magic_dump Perl_do_magic_dump +#define do_op_dump Perl_do_op_dump +#define do_pmop_dump Perl_do_pmop_dump +#define do_sv_dump Perl_do_sv_dump +#define magic_dump Perl_magic_dump +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define default_protect Perl_default_protect +#define vdefault_protect Perl_vdefault_protect +#endif +#define reginitcolors Perl_reginitcolors +#define sv_2pv_nolen Perl_sv_2pv_nolen +#define sv_2pvutf8_nolen Perl_sv_2pvutf8_nolen +#define sv_2pvbyte_nolen Perl_sv_2pvbyte_nolen +#define sv_pv Perl_sv_pv +#define sv_pvutf8 Perl_sv_pvutf8 +#define sv_pvbyte Perl_sv_pvbyte +#define sv_utf8_upgrade Perl_sv_utf8_upgrade +#define sv_utf8_downgrade Perl_sv_utf8_downgrade +#define sv_utf8_encode Perl_sv_utf8_encode +#define sv_utf8_decode Perl_sv_utf8_decode +#define sv_force_normal Perl_sv_force_normal +#define tmps_grow Perl_tmps_grow +#define sv_rvweaken Perl_sv_rvweaken +#define magic_killbackrefs Perl_magic_killbackrefs +#define newANONATTRSUB Perl_newANONATTRSUB +#define newATTRSUB Perl_newATTRSUB +#define newMYSUB Perl_newMYSUB +#define my_attrs Perl_my_attrs +#define boot_core_xsutils Perl_boot_core_xsutils +#if defined(USE_ITHREADS) +#define cx_dup Perl_cx_dup +#define si_dup Perl_si_dup +#define ss_dup Perl_ss_dup +#define any_dup Perl_any_dup +#define he_dup Perl_he_dup +#define re_dup Perl_re_dup +#define fp_dup Perl_fp_dup +#define dirp_dup Perl_dirp_dup +#define gp_dup Perl_gp_dup +#define mg_dup Perl_mg_dup +#define sv_dup Perl_sv_dup +#if defined(HAVE_INTERP_INTERN) +#define sys_intern_dup Perl_sys_intern_dup +#endif +#define ptr_table_new Perl_ptr_table_new +#define ptr_table_fetch Perl_ptr_table_fetch +#define ptr_table_store Perl_ptr_table_store +#define ptr_table_split Perl_ptr_table_split +#endif +#if defined(PERL_OBJECT) +#else +#endif +#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) +#define avhv_index_sv S_avhv_index_sv +#define avhv_index S_avhv_index +#endif +#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) +#define do_trans_CC_simple S_do_trans_CC_simple +#define do_trans_CC_count S_do_trans_CC_count +#define do_trans_CC_complex S_do_trans_CC_complex +#define do_trans_UU_simple S_do_trans_UU_simple +#define do_trans_UU_count S_do_trans_UU_count +#define do_trans_UU_complex S_do_trans_UU_complex +#define do_trans_UC_simple S_do_trans_UC_simple +#define do_trans_CU_simple S_do_trans_CU_simple +#define do_trans_UC_trivial S_do_trans_UC_trivial +#define do_trans_CU_trivial S_do_trans_CU_trivial +#endif +#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) +#define gv_init_sv S_gv_init_sv +#endif +#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +#define hsplit S_hsplit +#define hfreeentries S_hfreeentries +#define more_he S_more_he +#define new_he S_new_he +#define del_he S_del_he +#define save_hek S_save_hek +#define hv_magic_check S_hv_magic_check +#endif +#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) +#define save_magic S_save_magic +#define magic_methpack S_magic_methpack +#define magic_methcall S_magic_methcall +#endif +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#define list_assignment S_list_assignment +#define bad_type S_bad_type +#define cop_free S_cop_free +#define modkids S_modkids +#define no_bareword_allowed S_no_bareword_allowed +#define no_fh_allowed S_no_fh_allowed +#define scalarboolean S_scalarboolean +#define too_few_arguments S_too_few_arguments +#define too_many_arguments S_too_many_arguments +#define op_clear S_op_clear +#define null S_null +#define pad_addlex S_pad_addlex +#define pad_findlex S_pad_findlex +#define newDEFSVOP S_newDEFSVOP +#define new_logop S_new_logop +#define simplify_sort S_simplify_sort +#define is_handle_constructor S_is_handle_constructor +#define gv_ename S_gv_ename +#define cv_dump S_cv_dump +#define cv_clone2 S_cv_clone2 +#define scalar_mod_type S_scalar_mod_type +#define my_kid S_my_kid +#define dup_attrlist S_dup_attrlist +#define apply_attrs S_apply_attrs +# if defined(PL_OP_SLAB_ALLOC) +#define Slab_Alloc S_Slab_Alloc +# endif +#endif +#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +#define find_beginning S_find_beginning +#define forbid_setid S_forbid_setid +#define incpush S_incpush +#define init_interp S_init_interp +#define init_ids S_init_ids +#define init_lexer S_init_lexer +#define init_main_stash S_init_main_stash +#define init_perllib S_init_perllib +#define init_postdump_symbols S_init_postdump_symbols +#define init_predump_symbols S_init_predump_symbols +#define my_exit_jump S_my_exit_jump +#define nuke_stacks S_nuke_stacks +#define open_script S_open_script +#define usage S_usage +#define validate_suid S_validate_suid +# if defined(IAMSUID) +#define fd_on_nosuid_fs S_fd_on_nosuid_fs +# endif +#define parse_body S_parse_body +#define run_body S_run_body +#define call_body S_call_body +#define call_list_body S_call_list_body +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define vparse_body S_vparse_body +#define vrun_body S_vrun_body +#define vcall_body S_vcall_body +#define vcall_list_body S_vcall_list_body +#endif +# if defined(USE_THREADS) +#define init_main_thread S_init_main_thread +# endif +#endif +#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) +#define doencodes S_doencodes +#define refto S_refto +#define seed S_seed +#define mul128 S_mul128 +#define is_an_int S_is_an_int +#define div128 S_div128 +#endif +#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +#define docatch S_docatch +#define docatch_body S_docatch_body +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define vdocatch_body S_vdocatch_body +#endif +#define dofindlabel S_dofindlabel +#define doparseform S_doparseform +#define dopoptoeval S_dopoptoeval +#define dopoptolabel S_dopoptolabel +#define dopoptoloop S_dopoptoloop +#define dopoptosub S_dopoptosub +#define dopoptosub_at S_dopoptosub_at +#define free_closures S_free_closures +#define save_lines S_save_lines +#define doeval S_doeval +#define doopen_pmc S_doopen_pmc +#define qsortsv S_qsortsv +#endif +#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#define do_maybe_phash S_do_maybe_phash +#define do_oddball S_do_oddball +#define get_db_sub S_get_db_sub +#define method_common S_method_common +#endif +#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +#define doform S_doform +#define emulate_eaccess S_emulate_eaccess +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +#define dooneliner S_dooneliner +# endif +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) +#define reg S_reg +#define reganode S_reganode +#define regatom S_regatom +#define regbranch S_regbranch +#define reguni S_reguni +#define regclass S_regclass +#define regclassutf8 S_regclassutf8 +#define regcurly S_regcurly +#define reg_node S_reg_node +#define regpiece S_regpiece +#define reginsert S_reginsert +#define regoptail S_regoptail +#define regtail S_regtail +#define regwhite S_regwhite +#define nextchar S_nextchar +#define dumpuntil S_dumpuntil +#define put_byte S_put_byte +#define scan_commit S_scan_commit +#define cl_anything S_cl_anything +#define cl_is_anything S_cl_is_anything +#define cl_init S_cl_init +#define cl_init_zero S_cl_init_zero +#define cl_and S_cl_and +#define cl_or S_cl_or +#define study_chunk S_study_chunk +#define add_data S_add_data +#define re_croak2 S_re_croak2 +#define regpposixcc S_regpposixcc +#define checkposixcc S_checkposixcc +#endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) +#define regmatch S_regmatch +#define regrepeat S_regrepeat +#define regrepeat_hard S_regrepeat_hard +#define regtry S_regtry +#define reginclass S_reginclass +#define reginclassutf8 S_reginclassutf8 +#define regcppush S_regcppush +#define regcppop S_regcppop +#define regcp_set_to S_regcp_set_to +#define cache_re S_cache_re +#define reghop S_reghop +#define reghopmaybe S_reghopmaybe +#define find_byclass S_find_byclass +#endif +#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) +#define debprof S_debprof +#endif +#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +#define save_scalar_at S_save_scalar_at +#endif +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#define asIV S_asIV +#define asUV S_asUV +#define more_sv S_more_sv +#define more_xiv S_more_xiv +#define more_xnv S_more_xnv +#define more_xpv S_more_xpv +#define more_xpviv S_more_xpviv +#define more_xpvnv S_more_xpvnv +#define more_xpvcv S_more_xpvcv +#define more_xpvav S_more_xpvav +#define more_xpvhv S_more_xpvhv +#define more_xpvmg S_more_xpvmg +#define more_xpvlv S_more_xpvlv +#define more_xpvbm S_more_xpvbm +#define more_xrv S_more_xrv +#define new_xiv S_new_xiv +#define new_xnv S_new_xnv +#define new_xpv S_new_xpv +#define new_xpviv S_new_xpviv +#define new_xpvnv S_new_xpvnv +#define new_xpvcv S_new_xpvcv +#define new_xpvav S_new_xpvav +#define new_xpvhv S_new_xpvhv +#define new_xpvmg S_new_xpvmg +#define new_xpvlv S_new_xpvlv +#define new_xpvbm S_new_xpvbm +#define new_xrv S_new_xrv +#define del_xiv S_del_xiv +#define del_xnv S_del_xnv +#define del_xpv S_del_xpv +#define del_xpviv S_del_xpviv +#define del_xpvnv S_del_xpvnv +#define del_xpvcv S_del_xpvcv +#define del_xpvav S_del_xpvav +#define del_xpvhv S_del_xpvhv +#define del_xpvmg S_del_xpvmg +#define del_xpvlv S_del_xpvlv +#define del_xpvbm S_del_xpvbm +#define del_xrv S_del_xrv +#define sv_unglob S_sv_unglob +#define not_a_number S_not_a_number +#define visit S_visit +#define sv_add_backref S_sv_add_backref +#define sv_del_backref S_sv_del_backref +# if defined(DEBUGGING) +#define del_sv S_del_sv +# endif +#endif +#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +#define check_uni S_check_uni +#define force_next S_force_next +#define force_version S_force_version +#define force_word S_force_word +#define tokeq S_tokeq +#define scan_const S_scan_const +#define scan_formline S_scan_formline +#define scan_heredoc S_scan_heredoc +#define scan_ident S_scan_ident +#define scan_inputsymbol S_scan_inputsymbol +#define scan_pat S_scan_pat +#define scan_str S_scan_str +#define scan_subst S_scan_subst +#define scan_trans S_scan_trans +#define scan_word S_scan_word +#define skipspace S_skipspace +#define checkcomma S_checkcomma +#define force_ident S_force_ident +#define incline S_incline +#define intuit_method S_intuit_method +#define intuit_more S_intuit_more +#define lop S_lop +#define missingterm S_missingterm +#define no_op S_no_op +#define set_csh S_set_csh +#define sublex_done S_sublex_done +#define sublex_push S_sublex_push +#define sublex_start S_sublex_start +#define filter_gets S_filter_gets +#define new_constant S_new_constant +#define ao S_ao +#define depcom S_depcom +#define incl_perldb S_incl_perldb +#if 0 +#define utf16_textfilter S_utf16_textfilter +#define utf16rev_textfilter S_utf16rev_textfilter +#endif +# if defined(CRIPPLED_CC) +#define uni S_uni +# endif +# if defined(PERL_CR_FILTER) +#define cr_textfilter S_cr_textfilter +# endif +#endif +#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +#define isa_lookup S_isa_lookup +#endif +#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) +#define mess_alloc S_mess_alloc +# if defined(LEAKTEST) +#define xstat S_xstat +# endif +#endif +#if defined(PERL_OBJECT) +#endif +#define ck_anoncode Perl_ck_anoncode +#define ck_bitop Perl_ck_bitop +#define ck_concat Perl_ck_concat +#define ck_defined Perl_ck_defined +#define ck_delete Perl_ck_delete +#define ck_eof Perl_ck_eof +#define ck_eval Perl_ck_eval +#define ck_exec Perl_ck_exec +#define ck_exists Perl_ck_exists +#define ck_exit Perl_ck_exit +#define ck_ftst Perl_ck_ftst +#define ck_fun Perl_ck_fun +#define ck_fun_locale Perl_ck_fun_locale +#define ck_glob Perl_ck_glob +#define ck_grep Perl_ck_grep +#define ck_index Perl_ck_index +#define ck_join Perl_ck_join +#define ck_lengthconst Perl_ck_lengthconst +#define ck_lfun Perl_ck_lfun +#define ck_listiob Perl_ck_listiob +#define ck_match Perl_ck_match +#define ck_method Perl_ck_method +#define ck_null Perl_ck_null +#define ck_open Perl_ck_open +#define ck_repeat Perl_ck_repeat +#define ck_require Perl_ck_require +#define ck_rfun Perl_ck_rfun +#define ck_rvconst Perl_ck_rvconst +#define ck_sassign Perl_ck_sassign +#define ck_scmp Perl_ck_scmp +#define ck_select Perl_ck_select +#define ck_shift Perl_ck_shift +#define ck_sort Perl_ck_sort +#define ck_spair Perl_ck_spair +#define ck_split Perl_ck_split +#define ck_subr Perl_ck_subr +#define ck_svconst Perl_ck_svconst +#define ck_trunc Perl_ck_trunc #define pp_aassign Perl_pp_aassign #define pp_abs Perl_pp_abs #define pp_accept Perl_pp_accept @@ -497,7 +1202,6 @@ #define pp_const Perl_pp_const #define pp_cos Perl_pp_cos #define pp_crypt Perl_pp_crypt -#define pp_cswitch Perl_pp_cswitch #define pp_dbmclose Perl_pp_dbmclose #define pp_dbmopen Perl_pp_dbmopen #define pp_dbstate Perl_pp_dbstate @@ -516,7 +1220,6 @@ #define pp_enteriter Perl_pp_enteriter #define pp_enterloop Perl_pp_enterloop #define pp_entersub Perl_pp_entersub -#define pp_entersubr Perl_pp_entersubr #define pp_entertry Perl_pp_entertry #define pp_enterwrite Perl_pp_enterwrite #define pp_eof Perl_pp_eof @@ -524,7 +1227,6 @@ #define pp_epwent Perl_pp_epwent #define pp_eq Perl_pp_eq #define pp_eservent Perl_pp_eservent -#define pp_evalonce Perl_pp_evalonce #define pp_exec Perl_pp_exec #define pp_exists Perl_pp_exists #define pp_exit Perl_pp_exit @@ -617,7 +1319,6 @@ #define pp_i_subtract Perl_pp_i_subtract #define pp_index Perl_pp_index #define pp_int Perl_pp_int -#define pp_interp Perl_pp_interp #define pp_ioctl Perl_pp_ioctl #define pp_iter Perl_pp_iter #define pp_join Perl_pp_join @@ -631,6 +1332,7 @@ #define pp_leaveeval Perl_pp_leaveeval #define pp_leaveloop Perl_pp_leaveloop #define pp_leavesub Perl_pp_leavesub +#define pp_leavesublv Perl_pp_leavesublv #define pp_leavetry Perl_pp_leavetry #define pp_leavewrite Perl_pp_leavewrite #define pp_left_shift Perl_pp_left_shift @@ -645,11 +1347,11 @@ #define pp_lslice Perl_pp_lslice #define pp_lstat Perl_pp_lstat #define pp_lt Perl_pp_lt -#define pp_map Perl_pp_map #define pp_mapstart Perl_pp_mapstart #define pp_mapwhile Perl_pp_mapwhile #define pp_match Perl_pp_match #define pp_method Perl_pp_method +#define pp_method_named Perl_pp_method_named #define pp_mkdir Perl_pp_mkdir #define pp_modulo Perl_pp_modulo #define pp_msgctl Perl_pp_msgctl @@ -663,7 +1365,6 @@ #define pp_next Perl_pp_next #define pp_nextstate Perl_pp_nextstate #define pp_not Perl_pp_not -#define pp_nswitch Perl_pp_nswitch #define pp_null Perl_pp_null #define pp_oct Perl_pp_oct #define pp_open Perl_pp_open @@ -737,6 +1438,7 @@ #define pp_seq Perl_pp_seq #define pp_setpgrp Perl_pp_setpgrp #define pp_setpriority Perl_pp_setpriority +#define pp_setstate Perl_pp_setstate #define pp_sge Perl_pp_sge #define pp_sgrent Perl_pp_sgrent #define pp_sgt Perl_pp_sgt @@ -808,284 +1510,4307 @@ #define pp_wantarray Perl_pp_wantarray #define pp_warn Perl_pp_warn #define pp_xor Perl_pp_xor -#define ppaddr Perl_ppaddr -#define pregcomp Perl_pregcomp -#define pregexec Perl_pregexec -#define pregfree Perl_pregfree -#define prepend_elem Perl_prepend_elem -#define psig_name Perl_psig_name -#define psig_ptr Perl_psig_ptr -#define push_return Perl_push_return -#define push_scope Perl_push_scope -#define q Perl_q -#define reall_srchlen Perl_reall_srchlen -#define ref Perl_ref -#define refkids Perl_refkids -#define regdump Perl_regdump -#define regexec_flags Perl_regexec_flags -#define regkind Perl_regkind -#define regnext Perl_regnext -#define regprop Perl_regprop -#define repeat_amg Perl_repeat_amg -#define repeat_ass_amg Perl_repeat_ass_amg -#define repeatcpy Perl_repeatcpy -#define rninstr Perl_rninstr -#define rshift_amg Perl_rshift_amg -#define rshift_ass_amg Perl_rshift_ass_amg -#define rsignal Perl_rsignal -#define rsignal_restore Perl_rsignal_restore -#define rsignal_save Perl_rsignal_save -#define rsignal_state Perl_rsignal_state -#define runops_debug Perl_runops_debug -#define runops_standard Perl_runops_standard -#define rxres_free Perl_rxres_free -#define rxres_restore Perl_rxres_restore -#define rxres_save Perl_rxres_save -#define safecalloc Perl_safecalloc -#define safefree Perl_safefree -#define safemalloc Perl_safemalloc -#define saferealloc Perl_saferealloc -#define safexcalloc Perl_safexcalloc -#define safexfree Perl_safexfree -#define safexmalloc Perl_safexmalloc -#define safexrealloc Perl_safexrealloc -#define same_dirent Perl_same_dirent -#define save_I16 Perl_save_I16 -#define save_I32 Perl_save_I32 -#define save_aelem Perl_save_aelem -#define save_aptr Perl_save_aptr -#define save_ary Perl_save_ary -#define save_clearsv Perl_save_clearsv -#define save_delete Perl_save_delete -#define save_destructor Perl_save_destructor -#define save_freeop Perl_save_freeop -#define save_freepv Perl_save_freepv -#define save_freesv Perl_save_freesv -#define save_generic_svref Perl_save_generic_svref -#define save_gp Perl_save_gp -#define save_hash Perl_save_hash -#define save_helem Perl_save_helem -#define save_hints Perl_save_hints -#define save_hptr Perl_save_hptr -#define save_int Perl_save_int -#define save_item Perl_save_item -#define save_iv Perl_save_iv -#define save_list Perl_save_list -#define save_long Perl_save_long -#define save_nogv Perl_save_nogv -#define save_op Perl_save_op -#define save_pptr Perl_save_pptr -#define save_scalar Perl_save_scalar -#define save_sptr Perl_save_sptr -#define save_svref Perl_save_svref -#define save_threadsv Perl_save_threadsv -#define savepv Perl_savepv -#define savepvn Perl_savepvn -#define savestack_grow Perl_savestack_grow -#define saw_return Perl_saw_return -#define sawparens Perl_sawparens -#define scalar Perl_scalar -#define scalarkids Perl_scalarkids -#define scalarseq Perl_scalarseq -#define scalarvoid Perl_scalarvoid -#define scan_const Perl_scan_const -#define scan_formline Perl_scan_formline -#define scan_heredoc Perl_scan_heredoc -#define scan_hex Perl_scan_hex -#define scan_ident Perl_scan_ident -#define scan_inputsymbol Perl_scan_inputsymbol -#define scan_num Perl_scan_num -#define scan_oct Perl_scan_oct -#define scan_pat Perl_scan_pat -#define scan_prefix Perl_scan_prefix -#define scan_str Perl_scan_str -#define scan_subst Perl_scan_subst -#define scan_trans Perl_scan_trans -#define scan_word Perl_scan_word -#define scmp_amg Perl_scmp_amg -#define scope Perl_scope -#define screaminstr Perl_screaminstr -#define seq_amg Perl_seq_amg -#define setdefout Perl_setdefout -#define setenv_getix Perl_setenv_getix -#define sge_amg Perl_sge_amg -#define sgt_amg Perl_sgt_amg -#define share_hek Perl_share_hek -#define sharepvn Perl_sharepvn -#define sig_name Perl_sig_name -#define sig_num Perl_sig_num + +#else /* PERL_IMPLICIT_CONTEXT */ + +#if defined(PERL_IMPLICIT_SYS) +#endif +#if defined(USE_ITHREADS) +# if defined(PERL_IMPLICIT_SYS) +# endif +#endif +#if defined(MYMALLOC) +#define malloced_size Perl_malloced_size +#endif +#define get_context Perl_get_context +#define set_context Perl_set_context +#if defined(PERL_OBJECT) +#ifndef __BORLANDC__ +#endif +#endif +#if defined(PERL_OBJECT) +#else +#endif +#define amagic_call(a,b,c,d) Perl_amagic_call(aTHX_ a,b,c,d) +#define Gv_AMupdate(a) Perl_Gv_AMupdate(aTHX_ a) +#define append_elem(a,b,c) Perl_append_elem(aTHX_ a,b,c) +#define append_list(a,b,c) Perl_append_list(aTHX_ a,b,c) +#define apply(a,b,c) Perl_apply(aTHX_ a,b,c) +#define avhv_delete_ent(a,b,c,d) Perl_avhv_delete_ent(aTHX_ a,b,c,d) +#define avhv_exists_ent(a,b,c) Perl_avhv_exists_ent(aTHX_ a,b,c) +#define avhv_fetch_ent(a,b,c,d) Perl_avhv_fetch_ent(aTHX_ a,b,c,d) +#define avhv_store_ent(a,b,c,d) Perl_avhv_store_ent(aTHX_ a,b,c,d) +#define avhv_iternext(a) Perl_avhv_iternext(aTHX_ a) +#define avhv_iterval(a,b) Perl_avhv_iterval(aTHX_ a,b) +#define avhv_keys(a) Perl_avhv_keys(aTHX_ a) +#define av_clear(a) Perl_av_clear(aTHX_ a) +#define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c) +#define av_exists(a,b) Perl_av_exists(aTHX_ a,b) +#define av_extend(a,b) Perl_av_extend(aTHX_ a,b) +#define av_fake(a,b) Perl_av_fake(aTHX_ a,b) +#define av_fetch(a,b,c) Perl_av_fetch(aTHX_ a,b,c) +#define av_fill(a,b) Perl_av_fill(aTHX_ a,b) +#define av_len(a) Perl_av_len(aTHX_ a) +#define av_make(a,b) Perl_av_make(aTHX_ a,b) +#define av_pop(a) Perl_av_pop(aTHX_ a) +#define av_push(a,b) Perl_av_push(aTHX_ a,b) +#define av_reify(a) Perl_av_reify(aTHX_ a) +#define av_shift(a) Perl_av_shift(aTHX_ a) +#define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c) +#define av_undef(a) Perl_av_undef(aTHX_ a) +#define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b) +#define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c) +#define block_end(a,b) Perl_block_end(aTHX_ a,b) +#define block_gimme() Perl_block_gimme(aTHX) +#define block_start(a) Perl_block_start(aTHX_ a) +#define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX) +#define call_list(a,b) Perl_call_list(aTHX_ a,b) +#define cando(a,b,c) Perl_cando(aTHX_ a,b,c) +#define cast_ulong(a) Perl_cast_ulong(aTHX_ a) +#define cast_i32(a) Perl_cast_i32(aTHX_ a) +#define cast_iv(a) Perl_cast_iv(aTHX_ a) +#define cast_uv(a) Perl_cast_uv(aTHX_ a) +#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) +#define my_chsize(a,b) Perl_my_chsize(aTHX_ a,b) +#endif +#if defined(USE_THREADS) +#define condpair_magic(a) Perl_condpair_magic(aTHX_ a) +#endif +#define convert(a,b,c) Perl_convert(aTHX_ a,b,c) +#define vcroak(a,b) Perl_vcroak(aTHX_ a,b) +#if defined(PERL_IMPLICIT_CONTEXT) +#endif +#define cv_ckproto(a,b,c) Perl_cv_ckproto(aTHX_ a,b,c) +#define cv_clone(a) Perl_cv_clone(aTHX_ a) +#define cv_const_sv(a) Perl_cv_const_sv(aTHX_ a) +#define op_const_sv(a,b) Perl_op_const_sv(aTHX_ a,b) +#define cv_undef(a) Perl_cv_undef(aTHX_ a) +#define cx_dump(a) Perl_cx_dump(aTHX_ a) +#define filter_add(a,b) Perl_filter_add(aTHX_ a,b) +#define filter_del(a) Perl_filter_del(aTHX_ a) +#define filter_read(a,b,c) Perl_filter_read(aTHX_ a,b,c) +#define get_op_descs() Perl_get_op_descs(aTHX) +#define get_op_names() Perl_get_op_names(aTHX) +#define get_no_modify() Perl_get_no_modify(aTHX) +#define get_opargs() Perl_get_opargs(aTHX) +#define get_ppaddr() Perl_get_ppaddr(aTHX) +#define cxinc() Perl_cxinc(aTHX) +#define vdeb(a,b) Perl_vdeb(aTHX_ a,b) +#define debprofdump() Perl_debprofdump(aTHX) +#define debop(a) Perl_debop(aTHX_ a) +#define debstack() Perl_debstack(aTHX) +#define debstackptrs() Perl_debstackptrs(aTHX) +#define delimcpy(a,b,c,d,e,f) Perl_delimcpy(aTHX_ a,b,c,d,e,f) +#define deprecate(a) Perl_deprecate(aTHX_ a) +#define vdie(a,b) Perl_vdie(aTHX_ a,b) +#define die_where(a,b) Perl_die_where(aTHX_ a,b) +#define dounwind(a) Perl_dounwind(aTHX_ a) +#define do_aexec(a,b,c) Perl_do_aexec(aTHX_ a,b,c) +#define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e) +#define do_binmode(a,b,c) Perl_do_binmode(aTHX_ a,b,c) +#define do_chop(a,b) Perl_do_chop(aTHX_ a,b) +#define do_close(a,b) Perl_do_close(aTHX_ a,b) +#define do_eof(a) Perl_do_eof(aTHX_ a) +#define do_exec(a) Perl_do_exec(aTHX_ a) +#if !defined(WIN32) +#define do_exec3(a,b,c) Perl_do_exec3(aTHX_ a,b,c) +#endif +#define do_execfree() Perl_do_execfree(aTHX) +#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) +#define do_ipcctl(a,b,c) Perl_do_ipcctl(aTHX_ a,b,c) +#define do_ipcget(a,b,c) Perl_do_ipcget(aTHX_ a,b,c) +#define do_msgrcv(a,b) Perl_do_msgrcv(aTHX_ a,b) +#define do_msgsnd(a,b) Perl_do_msgsnd(aTHX_ a,b) +#define do_semop(a,b) Perl_do_semop(aTHX_ a,b) +#define do_shmio(a,b,c) Perl_do_shmio(aTHX_ a,b,c) +#endif +#define do_join(a,b,c,d) Perl_do_join(aTHX_ a,b,c,d) +#define do_kv() Perl_do_kv(aTHX) +#define do_open(a,b,c,d,e,f,g) Perl_do_open(aTHX_ a,b,c,d,e,f,g) +#define do_open9(a,b,c,d,e,f,g,h,i) Perl_do_open9(aTHX_ a,b,c,d,e,f,g,h,i) +#define do_pipe(a,b,c) Perl_do_pipe(aTHX_ a,b,c) +#define do_print(a,b) Perl_do_print(aTHX_ a,b) +#define do_readline() Perl_do_readline(aTHX) +#define do_chomp(a) Perl_do_chomp(aTHX_ a) +#define do_seek(a,b,c) Perl_do_seek(aTHX_ a,b,c) +#define do_sprintf(a,b,c) Perl_do_sprintf(aTHX_ a,b,c) +#define do_sysseek(a,b,c) Perl_do_sysseek(aTHX_ a,b,c) +#define do_tell(a) Perl_do_tell(aTHX_ a) +#define do_trans(a) Perl_do_trans(aTHX_ a) +#define do_vecget(a,b,c) Perl_do_vecget(aTHX_ a,b,c) +#define do_vecset(a) Perl_do_vecset(aTHX_ a) +#define do_vop(a,b,c,d) Perl_do_vop(aTHX_ a,b,c,d) +#define dofile(a) Perl_dofile(aTHX_ a) +#define dowantarray() Perl_dowantarray(aTHX) +#define dump_all() Perl_dump_all(aTHX) +#define dump_eval() Perl_dump_eval(aTHX) +#if defined(DUMP_FDS) +#define dump_fds(a) Perl_dump_fds(aTHX_ a) +#endif +#define dump_form(a) Perl_dump_form(aTHX_ a) +#define gv_dump(a) Perl_gv_dump(aTHX_ a) +#define op_dump(a) Perl_op_dump(aTHX_ a) +#define pmop_dump(a) Perl_pmop_dump(aTHX_ a) +#define dump_packsubs(a) Perl_dump_packsubs(aTHX_ a) +#define dump_sub(a) Perl_dump_sub(aTHX_ a) +#define fbm_compile(a,b) Perl_fbm_compile(aTHX_ a,b) +#define fbm_instr(a,b,c,d) Perl_fbm_instr(aTHX_ a,b,c,d) +#define find_script(a,b,c,d) Perl_find_script(aTHX_ a,b,c,d) +#if defined(USE_THREADS) +#define find_threadsv(a) Perl_find_threadsv(aTHX_ a) +#endif +#define force_list(a) Perl_force_list(aTHX_ a) +#define fold_constants(a) Perl_fold_constants(aTHX_ a) +#define vform(a,b) Perl_vform(aTHX_ a,b) +#define free_tmps() Perl_free_tmps(aTHX) +#define gen_constant_list(a) Perl_gen_constant_list(aTHX_ a) +#if !defined(HAS_GETENV_LEN) +#define getenv_len(a,b) Perl_getenv_len(aTHX_ a,b) +#endif +#define gp_free(a) Perl_gp_free(aTHX_ a) +#define gp_ref(a) Perl_gp_ref(aTHX_ a) +#define gv_AVadd(a) Perl_gv_AVadd(aTHX_ a) +#define gv_HVadd(a) Perl_gv_HVadd(aTHX_ a) +#define gv_IOadd(a) Perl_gv_IOadd(aTHX_ a) +#define gv_autoload4(a,b,c,d) Perl_gv_autoload4(aTHX_ a,b,c,d) +#define gv_check(a) Perl_gv_check(aTHX_ a) +#define gv_efullname(a,b) Perl_gv_efullname(aTHX_ a,b) +#define gv_efullname3(a,b,c) Perl_gv_efullname3(aTHX_ a,b,c) +#define gv_fetchfile(a) Perl_gv_fetchfile(aTHX_ a) +#define gv_fetchmeth(a,b,c,d) Perl_gv_fetchmeth(aTHX_ a,b,c,d) +#define gv_fetchmethod(a,b) Perl_gv_fetchmethod(aTHX_ a,b) +#define gv_fetchmethod_autoload(a,b,c) Perl_gv_fetchmethod_autoload(aTHX_ a,b,c) +#define gv_fetchpv(a,b,c) Perl_gv_fetchpv(aTHX_ a,b,c) +#define gv_fullname(a,b) Perl_gv_fullname(aTHX_ a,b) +#define gv_fullname3(a,b,c) Perl_gv_fullname3(aTHX_ a,b,c) +#define gv_init(a,b,c,d,e) Perl_gv_init(aTHX_ a,b,c,d,e) +#define gv_stashpv(a,b) Perl_gv_stashpv(aTHX_ a,b) +#define gv_stashpvn(a,b,c) Perl_gv_stashpvn(aTHX_ a,b,c) +#define gv_stashsv(a,b) Perl_gv_stashsv(aTHX_ a,b) +#define hv_clear(a) Perl_hv_clear(aTHX_ a) +#define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b) +#define hv_delete(a,b,c,d) Perl_hv_delete(aTHX_ a,b,c,d) +#define hv_delete_ent(a,b,c,d) Perl_hv_delete_ent(aTHX_ a,b,c,d) +#define hv_exists(a,b,c) Perl_hv_exists(aTHX_ a,b,c) +#define hv_exists_ent(a,b,c) Perl_hv_exists_ent(aTHX_ a,b,c) +#define hv_fetch(a,b,c,d) Perl_hv_fetch(aTHX_ a,b,c,d) +#define hv_fetch_ent(a,b,c,d) Perl_hv_fetch_ent(aTHX_ a,b,c,d) +#define hv_free_ent(a,b) Perl_hv_free_ent(aTHX_ a,b) +#define hv_iterinit(a) Perl_hv_iterinit(aTHX_ a) +#define hv_iterkey(a,b) Perl_hv_iterkey(aTHX_ a,b) +#define hv_iterkeysv(a) Perl_hv_iterkeysv(aTHX_ a) +#define hv_iternext(a) Perl_hv_iternext(aTHX_ a) +#define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c) +#define hv_iterval(a,b) Perl_hv_iterval(aTHX_ a,b) +#define hv_ksplit(a,b) Perl_hv_ksplit(aTHX_ a,b) +#define hv_magic(a,b,c) Perl_hv_magic(aTHX_ a,b,c) +#define hv_store(a,b,c,d,e) Perl_hv_store(aTHX_ a,b,c,d,e) +#define hv_store_ent(a,b,c,d) Perl_hv_store_ent(aTHX_ a,b,c,d) +#define hv_undef(a) Perl_hv_undef(aTHX_ a) +#define ibcmp(a,b,c) Perl_ibcmp(aTHX_ a,b,c) +#define ibcmp_locale(a,b,c) Perl_ibcmp_locale(aTHX_ a,b,c) +#define ingroup(a,b) Perl_ingroup(aTHX_ a,b) +#define init_debugger() Perl_init_debugger(aTHX) +#define init_stacks() Perl_init_stacks(aTHX) +#define intro_my() Perl_intro_my(aTHX) +#define instr(a,b) Perl_instr(aTHX_ a,b) +#define io_close(a,b) Perl_io_close(aTHX_ a,b) +#define invert(a) Perl_invert(aTHX_ a) +#define is_uni_alnum(a) Perl_is_uni_alnum(aTHX_ a) +#define is_uni_alnumc(a) Perl_is_uni_alnumc(aTHX_ a) +#define is_uni_idfirst(a) Perl_is_uni_idfirst(aTHX_ a) +#define is_uni_alpha(a) Perl_is_uni_alpha(aTHX_ a) +#define is_uni_ascii(a) Perl_is_uni_ascii(aTHX_ a) +#define is_uni_space(a) Perl_is_uni_space(aTHX_ a) +#define is_uni_cntrl(a) Perl_is_uni_cntrl(aTHX_ a) +#define is_uni_graph(a) Perl_is_uni_graph(aTHX_ a) +#define is_uni_digit(a) Perl_is_uni_digit(aTHX_ a) +#define is_uni_upper(a) Perl_is_uni_upper(aTHX_ a) +#define is_uni_lower(a) Perl_is_uni_lower(aTHX_ a) +#define is_uni_print(a) Perl_is_uni_print(aTHX_ a) +#define is_uni_punct(a) Perl_is_uni_punct(aTHX_ a) +#define is_uni_xdigit(a) Perl_is_uni_xdigit(aTHX_ a) +#define to_uni_upper(a) Perl_to_uni_upper(aTHX_ a) +#define to_uni_title(a) Perl_to_uni_title(aTHX_ a) +#define to_uni_lower(a) Perl_to_uni_lower(aTHX_ a) +#define is_uni_alnum_lc(a) Perl_is_uni_alnum_lc(aTHX_ a) +#define is_uni_alnumc_lc(a) Perl_is_uni_alnumc_lc(aTHX_ a) +#define is_uni_idfirst_lc(a) Perl_is_uni_idfirst_lc(aTHX_ a) +#define is_uni_alpha_lc(a) Perl_is_uni_alpha_lc(aTHX_ a) +#define is_uni_ascii_lc(a) Perl_is_uni_ascii_lc(aTHX_ a) +#define is_uni_space_lc(a) Perl_is_uni_space_lc(aTHX_ a) +#define is_uni_cntrl_lc(a) Perl_is_uni_cntrl_lc(aTHX_ a) +#define is_uni_graph_lc(a) Perl_is_uni_graph_lc(aTHX_ a) +#define is_uni_digit_lc(a) Perl_is_uni_digit_lc(aTHX_ a) +#define is_uni_upper_lc(a) Perl_is_uni_upper_lc(aTHX_ a) +#define is_uni_lower_lc(a) Perl_is_uni_lower_lc(aTHX_ a) +#define is_uni_print_lc(a) Perl_is_uni_print_lc(aTHX_ a) +#define is_uni_punct_lc(a) Perl_is_uni_punct_lc(aTHX_ a) +#define is_uni_xdigit_lc(a) Perl_is_uni_xdigit_lc(aTHX_ a) +#define to_uni_upper_lc(a) Perl_to_uni_upper_lc(aTHX_ a) +#define to_uni_title_lc(a) Perl_to_uni_title_lc(aTHX_ a) +#define to_uni_lower_lc(a) Perl_to_uni_lower_lc(aTHX_ a) +#define is_utf8_char(a) Perl_is_utf8_char(aTHX_ a) +#define is_utf8_alnum(a) Perl_is_utf8_alnum(aTHX_ a) +#define is_utf8_alnumc(a) Perl_is_utf8_alnumc(aTHX_ a) +#define is_utf8_idfirst(a) Perl_is_utf8_idfirst(aTHX_ a) +#define is_utf8_alpha(a) Perl_is_utf8_alpha(aTHX_ a) +#define is_utf8_ascii(a) Perl_is_utf8_ascii(aTHX_ a) +#define is_utf8_space(a) Perl_is_utf8_space(aTHX_ a) +#define is_utf8_cntrl(a) Perl_is_utf8_cntrl(aTHX_ a) +#define is_utf8_digit(a) Perl_is_utf8_digit(aTHX_ a) +#define is_utf8_graph(a) Perl_is_utf8_graph(aTHX_ a) +#define is_utf8_upper(a) Perl_is_utf8_upper(aTHX_ a) +#define is_utf8_lower(a) Perl_is_utf8_lower(aTHX_ a) +#define is_utf8_print(a) Perl_is_utf8_print(aTHX_ a) +#define is_utf8_punct(a) Perl_is_utf8_punct(aTHX_ a) +#define is_utf8_xdigit(a) Perl_is_utf8_xdigit(aTHX_ a) +#define is_utf8_mark(a) Perl_is_utf8_mark(aTHX_ a) +#define jmaybe(a) Perl_jmaybe(aTHX_ a) +#define keyword(a,b) Perl_keyword(aTHX_ a,b) +#define leave_scope(a) Perl_leave_scope(aTHX_ a) +#define lex_end() Perl_lex_end(aTHX) +#define lex_start(a) Perl_lex_start(aTHX_ a) +#define linklist(a) Perl_linklist(aTHX_ a) +#define list(a) Perl_list(aTHX_ a) +#define listkids(a) Perl_listkids(aTHX_ a) +#define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d) +#define localize(a,b) Perl_localize(aTHX_ a,b) +#define looks_like_number(a) Perl_looks_like_number(aTHX_ a) +#define magic_clearenv(a,b) Perl_magic_clearenv(aTHX_ a,b) +#define magic_clear_all_env(a,b) Perl_magic_clear_all_env(aTHX_ a,b) +#define magic_clearpack(a,b) Perl_magic_clearpack(aTHX_ a,b) +#define magic_clearsig(a,b) Perl_magic_clearsig(aTHX_ a,b) +#define magic_existspack(a,b) Perl_magic_existspack(aTHX_ a,b) +#define magic_freeregexp(a,b) Perl_magic_freeregexp(aTHX_ a,b) +#define magic_get(a,b) Perl_magic_get(aTHX_ a,b) +#define magic_getarylen(a,b) Perl_magic_getarylen(aTHX_ a,b) +#define magic_getdefelem(a,b) Perl_magic_getdefelem(aTHX_ a,b) +#define magic_getglob(a,b) Perl_magic_getglob(aTHX_ a,b) +#define magic_getnkeys(a,b) Perl_magic_getnkeys(aTHX_ a,b) +#define magic_getpack(a,b) Perl_magic_getpack(aTHX_ a,b) +#define magic_getpos(a,b) Perl_magic_getpos(aTHX_ a,b) +#define magic_getsig(a,b) Perl_magic_getsig(aTHX_ a,b) +#define magic_getsubstr(a,b) Perl_magic_getsubstr(aTHX_ a,b) +#define magic_gettaint(a,b) Perl_magic_gettaint(aTHX_ a,b) +#define magic_getuvar(a,b) Perl_magic_getuvar(aTHX_ a,b) +#define magic_getvec(a,b) Perl_magic_getvec(aTHX_ a,b) +#define magic_len(a,b) Perl_magic_len(aTHX_ a,b) +#if defined(USE_THREADS) +#define magic_mutexfree(a,b) Perl_magic_mutexfree(aTHX_ a,b) +#endif +#define magic_nextpack(a,b,c) Perl_magic_nextpack(aTHX_ a,b,c) +#define magic_regdata_cnt(a,b) Perl_magic_regdata_cnt(aTHX_ a,b) +#define magic_regdatum_get(a,b) Perl_magic_regdatum_get(aTHX_ a,b) +#define magic_set(a,b) Perl_magic_set(aTHX_ a,b) +#define magic_setamagic(a,b) Perl_magic_setamagic(aTHX_ a,b) +#define magic_setarylen(a,b) Perl_magic_setarylen(aTHX_ a,b) +#define magic_setbm(a,b) Perl_magic_setbm(aTHX_ a,b) +#define magic_setdbline(a,b) Perl_magic_setdbline(aTHX_ a,b) +#if defined(USE_LOCALE_COLLATE) +#define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b) +#endif +#define magic_setdefelem(a,b) Perl_magic_setdefelem(aTHX_ a,b) +#define magic_setenv(a,b) Perl_magic_setenv(aTHX_ a,b) +#define magic_setfm(a,b) Perl_magic_setfm(aTHX_ a,b) +#define magic_setisa(a,b) Perl_magic_setisa(aTHX_ a,b) +#define magic_setglob(a,b) Perl_magic_setglob(aTHX_ a,b) +#define magic_setmglob(a,b) Perl_magic_setmglob(aTHX_ a,b) +#define magic_setnkeys(a,b) Perl_magic_setnkeys(aTHX_ a,b) +#define magic_setpack(a,b) Perl_magic_setpack(aTHX_ a,b) +#define magic_setpos(a,b) Perl_magic_setpos(aTHX_ a,b) +#define magic_setsig(a,b) Perl_magic_setsig(aTHX_ a,b) +#define magic_setsubstr(a,b) Perl_magic_setsubstr(aTHX_ a,b) +#define magic_settaint(a,b) Perl_magic_settaint(aTHX_ a,b) +#define magic_setuvar(a,b) Perl_magic_setuvar(aTHX_ a,b) +#define magic_setvec(a,b) Perl_magic_setvec(aTHX_ a,b) +#define magic_set_all_env(a,b) Perl_magic_set_all_env(aTHX_ a,b) +#define magic_sizepack(a,b) Perl_magic_sizepack(aTHX_ a,b) +#define magic_wipepack(a,b) Perl_magic_wipepack(aTHX_ a,b) +#define magicname(a,b,c) Perl_magicname(aTHX_ a,b,c) +#define markstack_grow() Perl_markstack_grow(aTHX) +#if defined(USE_LOCALE_COLLATE) +#define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c) +#endif +#define vmess(a,b) Perl_vmess(aTHX_ a,b) +#define qerror(a) Perl_qerror(aTHX_ a) +#define mg_clear(a) Perl_mg_clear(aTHX_ a) +#define mg_copy(a,b,c,d) Perl_mg_copy(aTHX_ a,b,c,d) +#define mg_find(a,b) Perl_mg_find(aTHX_ a,b) +#define mg_free(a) Perl_mg_free(aTHX_ a) +#define mg_get(a) Perl_mg_get(aTHX_ a) +#define mg_length(a) Perl_mg_length(aTHX_ a) +#define mg_magical(a) Perl_mg_magical(aTHX_ a) +#define mg_set(a) Perl_mg_set(aTHX_ a) +#define mg_size(a) Perl_mg_size(aTHX_ a) +#define mod(a,b) Perl_mod(aTHX_ a,b) +#define mode_from_discipline(a) Perl_mode_from_discipline(aTHX_ a) +#define moreswitches(a) Perl_moreswitches(aTHX_ a) +#define my(a) Perl_my(aTHX_ a) +#define my_atof(a) Perl_my_atof(aTHX_ a) +#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY) +#define my_bcopy Perl_my_bcopy +#endif +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) +#define my_bzero Perl_my_bzero +#endif +#define my_exit(a) Perl_my_exit(aTHX_ a) +#define my_failure_exit() Perl_my_failure_exit(aTHX) +#define my_fflush_all() Perl_my_fflush_all(aTHX) +#define my_lstat() Perl_my_lstat(aTHX) +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) +#define my_memcmp Perl_my_memcmp +#endif +#if !defined(HAS_MEMSET) +#define my_memset Perl_my_memset +#endif +#if !defined(PERL_OBJECT) +#define my_pclose(a) Perl_my_pclose(aTHX_ a) +#define my_popen(a,b) Perl_my_popen(aTHX_ a,b) +#endif +#define my_setenv(a,b) Perl_my_setenv(aTHX_ a,b) +#define my_stat() Perl_my_stat(aTHX) +#if defined(MYSWAP) +#define my_swap(a) Perl_my_swap(aTHX_ a) +#define my_htonl(a) Perl_my_htonl(aTHX_ a) +#define my_ntohl(a) Perl_my_ntohl(aTHX_ a) +#endif +#define my_unexec() Perl_my_unexec(aTHX) +#define newANONLIST(a) Perl_newANONLIST(aTHX_ a) +#define newANONHASH(a) Perl_newANONHASH(aTHX_ a) +#define newANONSUB(a,b,c) Perl_newANONSUB(aTHX_ a,b,c) +#define newASSIGNOP(a,b,c,d) Perl_newASSIGNOP(aTHX_ a,b,c,d) +#define newCONDOP(a,b,c,d) Perl_newCONDOP(aTHX_ a,b,c,d) +#define newCONSTSUB(a,b,c) Perl_newCONSTSUB(aTHX_ a,b,c) +#define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) +#define newFOROP(a,b,c,d,e,f,g) Perl_newFOROP(aTHX_ a,b,c,d,e,f,g) +#define newLOGOP(a,b,c,d) Perl_newLOGOP(aTHX_ a,b,c,d) +#define newLOOPEX(a,b) Perl_newLOOPEX(aTHX_ a,b) +#define newLOOPOP(a,b,c,d) Perl_newLOOPOP(aTHX_ a,b,c,d) +#define newNULLLIST() Perl_newNULLLIST(aTHX) +#define newOP(a,b) Perl_newOP(aTHX_ a,b) +#define newPROG(a) Perl_newPROG(aTHX_ a) +#define newRANGE(a,b,c) Perl_newRANGE(aTHX_ a,b,c) +#define newSLICEOP(a,b,c) Perl_newSLICEOP(aTHX_ a,b,c) +#define newSTATEOP(a,b,c) Perl_newSTATEOP(aTHX_ a,b,c) +#define newSUB(a,b,c,d) Perl_newSUB(aTHX_ a,b,c,d) +#define newXS(a,b,c) Perl_newXS(aTHX_ a,b,c) +#define newAV() Perl_newAV(aTHX) +#define newAVREF(a) Perl_newAVREF(aTHX_ a) +#define newBINOP(a,b,c,d) Perl_newBINOP(aTHX_ a,b,c,d) +#define newCVREF(a,b) Perl_newCVREF(aTHX_ a,b) +#define newGVOP(a,b,c) Perl_newGVOP(aTHX_ a,b,c) +#define newGVgen(a) Perl_newGVgen(aTHX_ a) +#define newGVREF(a,b) Perl_newGVREF(aTHX_ a,b) +#define newHVREF(a) Perl_newHVREF(aTHX_ a) +#define newHV() Perl_newHV(aTHX) +#define newHVhv(a) Perl_newHVhv(aTHX_ a) +#define newIO() Perl_newIO(aTHX) +#define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d) +#define newPADOP(a,b,c) Perl_newPADOP(aTHX_ a,b,c) +#define newPMOP(a,b) Perl_newPMOP(aTHX_ a,b) +#define newPVOP(a,b,c) Perl_newPVOP(aTHX_ a,b,c) +#define newRV(a) Perl_newRV(aTHX_ a) +#define newRV_noinc(a) Perl_newRV_noinc(aTHX_ a) +#define newSV(a) Perl_newSV(aTHX_ a) +#define newSVREF(a) Perl_newSVREF(aTHX_ a) +#define newSVOP(a,b,c) Perl_newSVOP(aTHX_ a,b,c) +#define newSViv(a) Perl_newSViv(aTHX_ a) +#define newSVuv(a) Perl_newSVuv(aTHX_ a) +#define newSVnv(a) Perl_newSVnv(aTHX_ a) +#define newSVpv(a,b) Perl_newSVpv(aTHX_ a,b) +#define newSVpvn(a,b) Perl_newSVpvn(aTHX_ a,b) +#define vnewSVpvf(a,b) Perl_vnewSVpvf(aTHX_ a,b) +#define newSVrv(a,b) Perl_newSVrv(aTHX_ a,b) +#define newSVsv(a) Perl_newSVsv(aTHX_ a) +#define newUNOP(a,b,c) Perl_newUNOP(aTHX_ a,b,c) +#define newWHILEOP(a,b,c,d,e,f,g) Perl_newWHILEOP(aTHX_ a,b,c,d,e,f,g) +#define new_stackinfo(a,b) Perl_new_stackinfo(aTHX_ a,b) +#define nextargv(a) Perl_nextargv(aTHX_ a) +#define ninstr(a,b,c,d) Perl_ninstr(aTHX_ a,b,c,d) +#define oopsCV(a) Perl_oopsCV(aTHX_ a) +#define op_free(a) Perl_op_free(aTHX_ a) +#define package(a) Perl_package(aTHX_ a) +#define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b) +#define pad_allocmy(a) Perl_pad_allocmy(aTHX_ a) +#define pad_findmy(a) Perl_pad_findmy(aTHX_ a) +#define oopsAV(a) Perl_oopsAV(aTHX_ a) +#define oopsHV(a) Perl_oopsHV(aTHX_ a) +#define pad_leavemy(a) Perl_pad_leavemy(aTHX_ a) +#define pad_sv(a) Perl_pad_sv(aTHX_ a) +#define pad_free(a) Perl_pad_free(aTHX_ a) +#define pad_reset() Perl_pad_reset(aTHX) +#define pad_swipe(a) Perl_pad_swipe(aTHX_ a) +#define peep(a) Perl_peep(aTHX_ a) +#if defined(PERL_OBJECT) +#endif +#if defined(USE_THREADS) +#define new_struct_thread(a) Perl_new_struct_thread(aTHX_ a) +#endif +#define call_atexit(a,b) Perl_call_atexit(aTHX_ a,b) +#define call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c) +#define call_method(a,b) Perl_call_method(aTHX_ a,b) +#define call_pv(a,b) Perl_call_pv(aTHX_ a,b) +#define call_sv(a,b) Perl_call_sv(aTHX_ a,b) +#define eval_pv(a,b) Perl_eval_pv(aTHX_ a,b) +#define eval_sv(a,b) Perl_eval_sv(aTHX_ a,b) +#define get_sv(a,b) Perl_get_sv(aTHX_ a,b) +#define get_av(a,b) Perl_get_av(aTHX_ a,b) +#define get_hv(a,b) Perl_get_hv(aTHX_ a,b) +#define get_cv(a,b) Perl_get_cv(aTHX_ a,b) +#define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a) +#define init_i18nl14n(a) Perl_init_i18nl14n(aTHX_ a) +#define new_collate(a) Perl_new_collate(aTHX_ a) +#define new_ctype(a) Perl_new_ctype(aTHX_ a) +#define new_numeric(a) Perl_new_numeric(aTHX_ a) +#define set_numeric_local() Perl_set_numeric_local(aTHX) +#define set_numeric_radix() Perl_set_numeric_radix(aTHX) +#define set_numeric_standard() Perl_set_numeric_standard(aTHX) +#define require_pv(a) Perl_require_pv(aTHX_ a) +#define pidgone(a,b) Perl_pidgone(aTHX_ a,b) +#define pmflag(a,b) Perl_pmflag(aTHX_ a,b) +#define pmruntime(a,b,c) Perl_pmruntime(aTHX_ a,b,c) +#define pmtrans(a,b,c) Perl_pmtrans(aTHX_ a,b,c) +#define pop_return() Perl_pop_return(aTHX) +#define pop_scope() Perl_pop_scope(aTHX) +#define prepend_elem(a,b,c) Perl_prepend_elem(aTHX_ a,b,c) +#define push_return(a) Perl_push_return(aTHX_ a) +#define push_scope() Perl_push_scope(aTHX) +#define ref(a,b) Perl_ref(aTHX_ a,b) +#define refkids(a,b) Perl_refkids(aTHX_ a,b) +#define regdump(a) Perl_regdump(aTHX_ a) +#define pregexec(a,b,c,d,e,f,g) Perl_pregexec(aTHX_ a,b,c,d,e,f,g) +#define pregfree(a) Perl_pregfree(aTHX_ a) +#define pregcomp(a,b,c) Perl_pregcomp(aTHX_ a,b,c) +#define re_intuit_start(a,b,c,d,e,f) Perl_re_intuit_start(aTHX_ a,b,c,d,e,f) +#define re_intuit_string(a) Perl_re_intuit_string(aTHX_ a) +#define regexec_flags(a,b,c,d,e,f,g,h) Perl_regexec_flags(aTHX_ a,b,c,d,e,f,g,h) +#define regnext(a) Perl_regnext(aTHX_ a) +#define regprop(a,b) Perl_regprop(aTHX_ a,b) +#define repeatcpy(a,b,c,d) Perl_repeatcpy(aTHX_ a,b,c,d) +#define rninstr(a,b,c,d) Perl_rninstr(aTHX_ a,b,c,d) +#define rsignal(a,b) Perl_rsignal(aTHX_ a,b) +#define rsignal_restore(a,b) Perl_rsignal_restore(aTHX_ a,b) +#define rsignal_save(a,b,c) Perl_rsignal_save(aTHX_ a,b,c) +#define rsignal_state(a) Perl_rsignal_state(aTHX_ a) +#define rxres_free(a) Perl_rxres_free(aTHX_ a) +#define rxres_restore(a,b) Perl_rxres_restore(aTHX_ a,b) +#define rxres_save(a,b) Perl_rxres_save(aTHX_ a,b) +#if !defined(HAS_RENAME) +#define same_dirent(a,b) Perl_same_dirent(aTHX_ a,b) +#endif +#define savepv(a) Perl_savepv(aTHX_ a) +#define savepvn(a,b) Perl_savepvn(aTHX_ a,b) +#define savestack_grow() Perl_savestack_grow(aTHX) +#define save_aelem(a,b,c) Perl_save_aelem(aTHX_ a,b,c) +#define save_alloc(a,b) Perl_save_alloc(aTHX_ a,b) +#define save_aptr(a) Perl_save_aptr(aTHX_ a) +#define save_ary(a) Perl_save_ary(aTHX_ a) +#define save_clearsv(a) Perl_save_clearsv(aTHX_ a) +#define save_delete(a,b,c) Perl_save_delete(aTHX_ a,b,c) +#define save_destructor(a,b) Perl_save_destructor(aTHX_ a,b) +#define save_destructor_x(a,b) Perl_save_destructor_x(aTHX_ a,b) +#define save_freesv(a) Perl_save_freesv(aTHX_ a) +#define save_freeop(a) Perl_save_freeop(aTHX_ a) +#define save_freepv(a) Perl_save_freepv(aTHX_ a) +#define save_generic_svref(a) Perl_save_generic_svref(aTHX_ a) +#define save_gp(a,b) Perl_save_gp(aTHX_ a,b) +#define save_hash(a) Perl_save_hash(aTHX_ a) +#define save_helem(a,b,c) Perl_save_helem(aTHX_ a,b,c) +#define save_hints() Perl_save_hints(aTHX) +#define save_hptr(a) Perl_save_hptr(aTHX_ a) +#define save_I16(a) Perl_save_I16(aTHX_ a) +#define save_I32(a) Perl_save_I32(aTHX_ a) +#define save_I8(a) Perl_save_I8(aTHX_ a) +#define save_int(a) Perl_save_int(aTHX_ a) +#define save_item(a) Perl_save_item(aTHX_ a) +#define save_iv(a) Perl_save_iv(aTHX_ a) +#define save_list(a,b) Perl_save_list(aTHX_ a,b) +#define save_long(a) Perl_save_long(aTHX_ a) +#define save_nogv(a) Perl_save_nogv(aTHX_ a) +#define save_op() Perl_save_op(aTHX) +#define save_scalar(a) Perl_save_scalar(aTHX_ a) +#define save_pptr(a) Perl_save_pptr(aTHX_ a) +#define save_vptr(a) Perl_save_vptr(aTHX_ a) +#define save_re_context() Perl_save_re_context(aTHX) +#define save_sptr(a) Perl_save_sptr(aTHX_ a) +#define save_svref(a) Perl_save_svref(aTHX_ a) +#define save_threadsv(a) Perl_save_threadsv(aTHX_ a) +#define sawparens(a) Perl_sawparens(aTHX_ a) +#define scalar(a) Perl_scalar(aTHX_ a) +#define scalarkids(a) Perl_scalarkids(aTHX_ a) +#define scalarseq(a) Perl_scalarseq(aTHX_ a) +#define scalarvoid(a) Perl_scalarvoid(aTHX_ a) +#define scan_bin(a,b,c) Perl_scan_bin(aTHX_ a,b,c) +#define scan_hex(a,b,c) Perl_scan_hex(aTHX_ a,b,c) +#define scan_num(a) Perl_scan_num(aTHX_ a) +#define scan_oct(a,b,c) Perl_scan_oct(aTHX_ a,b,c) +#define scope(a) Perl_scope(aTHX_ a) +#define screaminstr(a,b,c,d,e,f) Perl_screaminstr(aTHX_ a,b,c,d,e,f) +#if !defined(VMS) +#define setenv_getix(a) Perl_setenv_getix(aTHX_ a) +#endif +#define setdefout(a) Perl_setdefout(aTHX_ a) +#define sharepvn(a,b,c) Perl_sharepvn(aTHX_ a,b,c) +#define share_hek(a,b,c) Perl_share_hek(aTHX_ a,b,c) #define sighandler Perl_sighandler -#define simple Perl_simple -#define sin_amg Perl_sin_amg -#define skipspace Perl_skipspace -#define sle_amg Perl_sle_amg -#define slt_amg Perl_slt_amg -#define sne_amg Perl_sne_amg -#define sqrt_amg Perl_sqrt_amg +#define stack_grow(a,b,c) Perl_stack_grow(aTHX_ a,b,c) +#define start_subparse(a,b) Perl_start_subparse(aTHX_ a,b) +#define sub_crush_depth(a) Perl_sub_crush_depth(aTHX_ a) +#define sv_2bool(a) Perl_sv_2bool(aTHX_ a) +#define sv_2cv(a,b,c,d) Perl_sv_2cv(aTHX_ a,b,c,d) +#define sv_2io(a) Perl_sv_2io(aTHX_ a) +#define sv_2iv(a) Perl_sv_2iv(aTHX_ a) +#define sv_2mortal(a) Perl_sv_2mortal(aTHX_ a) +#define sv_2nv(a) Perl_sv_2nv(aTHX_ a) +#define sv_2pv(a,b) Perl_sv_2pv(aTHX_ a,b) +#define sv_2pvutf8(a,b) Perl_sv_2pvutf8(aTHX_ a,b) +#define sv_2pvbyte(a,b) Perl_sv_2pvbyte(aTHX_ a,b) +#define sv_2uv(a) Perl_sv_2uv(aTHX_ a) +#define sv_iv(a) Perl_sv_iv(aTHX_ a) +#define sv_uv(a) Perl_sv_uv(aTHX_ a) +#define sv_nv(a) Perl_sv_nv(aTHX_ a) +#define sv_pvn(a,b) Perl_sv_pvn(aTHX_ a,b) +#define sv_pvutf8n(a,b) Perl_sv_pvutf8n(aTHX_ a,b) +#define sv_pvbyten(a,b) Perl_sv_pvbyten(aTHX_ a,b) +#define sv_true(a) Perl_sv_true(aTHX_ a) +#define sv_add_arena(a,b,c) Perl_sv_add_arena(aTHX_ a,b,c) +#define sv_backoff(a) Perl_sv_backoff(aTHX_ a) +#define sv_bless(a,b) Perl_sv_bless(aTHX_ a,b) +#define sv_vcatpvf(a,b,c) Perl_sv_vcatpvf(aTHX_ a,b,c) +#define sv_catpv(a,b) Perl_sv_catpv(aTHX_ a,b) +#define sv_catpvn(a,b,c) Perl_sv_catpvn(aTHX_ a,b,c) +#define sv_catsv(a,b) Perl_sv_catsv(aTHX_ a,b) +#define sv_chop(a,b) Perl_sv_chop(aTHX_ a,b) +#define sv_clean_all() Perl_sv_clean_all(aTHX) +#define sv_clean_objs() Perl_sv_clean_objs(aTHX) +#define sv_clear(a) Perl_sv_clear(aTHX_ a) +#define sv_cmp(a,b) Perl_sv_cmp(aTHX_ a,b) +#define sv_cmp_locale(a,b) Perl_sv_cmp_locale(aTHX_ a,b) +#if defined(USE_LOCALE_COLLATE) +#define sv_collxfrm(a,b) Perl_sv_collxfrm(aTHX_ a,b) +#endif +#define sv_compile_2op(a,b,c,d) Perl_sv_compile_2op(aTHX_ a,b,c,d) +#define sv_dec(a) Perl_sv_dec(aTHX_ a) +#define sv_dump(a) Perl_sv_dump(aTHX_ a) +#define sv_derived_from(a,b) Perl_sv_derived_from(aTHX_ a,b) +#define sv_eq(a,b) Perl_sv_eq(aTHX_ a,b) +#define sv_free(a) Perl_sv_free(aTHX_ a) +#define sv_free_arenas() Perl_sv_free_arenas(aTHX) +#define sv_gets(a,b,c) Perl_sv_gets(aTHX_ a,b,c) +#define sv_grow(a,b) Perl_sv_grow(aTHX_ a,b) +#define sv_inc(a) Perl_sv_inc(aTHX_ a) +#define sv_insert(a,b,c,d,e) Perl_sv_insert(aTHX_ a,b,c,d,e) +#define sv_isa(a,b) Perl_sv_isa(aTHX_ a,b) +#define sv_isobject(a) Perl_sv_isobject(aTHX_ a) +#define sv_len(a) Perl_sv_len(aTHX_ a) +#define sv_len_utf8(a) Perl_sv_len_utf8(aTHX_ a) +#define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e) +#define sv_mortalcopy(a) Perl_sv_mortalcopy(aTHX_ a) +#define sv_newmortal() Perl_sv_newmortal(aTHX) +#define sv_newref(a) Perl_sv_newref(aTHX_ a) +#define sv_peek(a) Perl_sv_peek(aTHX_ a) +#define sv_pos_u2b(a,b,c) Perl_sv_pos_u2b(aTHX_ a,b,c) +#define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b) +#define sv_pvn_force(a,b) Perl_sv_pvn_force(aTHX_ a,b) +#define sv_pvutf8n_force(a,b) Perl_sv_pvutf8n_force(aTHX_ a,b) +#define sv_pvbyten_force(a,b) Perl_sv_pvbyten_force(aTHX_ a,b) +#define sv_reftype(a,b) Perl_sv_reftype(aTHX_ a,b) +#define sv_replace(a,b) Perl_sv_replace(aTHX_ a,b) +#define sv_report_used() Perl_sv_report_used(aTHX) +#define sv_reset(a,b) Perl_sv_reset(aTHX_ a,b) +#define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c) +#define sv_setiv(a,b) Perl_sv_setiv(aTHX_ a,b) +#define sv_setpviv(a,b) Perl_sv_setpviv(aTHX_ a,b) +#define sv_setuv(a,b) Perl_sv_setuv(aTHX_ a,b) +#define sv_setnv(a,b) Perl_sv_setnv(aTHX_ a,b) +#define sv_setref_iv(a,b,c) Perl_sv_setref_iv(aTHX_ a,b,c) +#define sv_setref_nv(a,b,c) Perl_sv_setref_nv(aTHX_ a,b,c) +#define sv_setref_pv(a,b,c) Perl_sv_setref_pv(aTHX_ a,b,c) +#define sv_setref_pvn(a,b,c,d) Perl_sv_setref_pvn(aTHX_ a,b,c,d) +#define sv_setpv(a,b) Perl_sv_setpv(aTHX_ a,b) +#define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) +#define sv_setsv(a,b) Perl_sv_setsv(aTHX_ a,b) +#define sv_taint(a) Perl_sv_taint(aTHX_ a) +#define sv_tainted(a) Perl_sv_tainted(aTHX_ a) +#define sv_unmagic(a,b) Perl_sv_unmagic(aTHX_ a,b) +#define sv_unref(a) Perl_sv_unref(aTHX_ a) +#define sv_untaint(a) Perl_sv_untaint(aTHX_ a) +#define sv_upgrade(a,b) Perl_sv_upgrade(aTHX_ a,b) +#define sv_usepvn(a,b,c) Perl_sv_usepvn(aTHX_ a,b,c) +#define sv_vcatpvfn(a,b,c,d,e,f,g) Perl_sv_vcatpvfn(aTHX_ a,b,c,d,e,f,g) +#define sv_vsetpvfn(a,b,c,d,e,f,g) Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g) +#define str_to_version(a) Perl_str_to_version(aTHX_ a) +#define swash_init(a,b,c,d,e) Perl_swash_init(aTHX_ a,b,c,d,e) +#define swash_fetch(a,b) Perl_swash_fetch(aTHX_ a,b) +#define taint_env() Perl_taint_env(aTHX) +#define taint_proper(a,b) Perl_taint_proper(aTHX_ a,b) +#define to_utf8_lower(a) Perl_to_utf8_lower(aTHX_ a) +#define to_utf8_upper(a) Perl_to_utf8_upper(aTHX_ a) +#define to_utf8_title(a) Perl_to_utf8_title(aTHX_ a) +#if defined(UNLINK_ALL_VERSIONS) +#define unlnk(a) Perl_unlnk(aTHX_ a) +#endif +#if defined(USE_THREADS) +#define unlock_condpair(a) Perl_unlock_condpair(aTHX_ a) +#endif +#define unsharepvn(a,b,c) Perl_unsharepvn(aTHX_ a,b,c) +#define unshare_hek(a) Perl_unshare_hek(aTHX_ a) +#define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e) +#define utf16_to_utf8(a,b,c) Perl_utf16_to_utf8(aTHX_ a,b,c) +#define utf16_to_utf8_reversed(a,b,c) Perl_utf16_to_utf8_reversed(aTHX_ a,b,c) +#define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b) +#define utf8_hop(a,b) Perl_utf8_hop(aTHX_ a,b) +#define utf8_to_uv(a,b) Perl_utf8_to_uv(aTHX_ a,b) +#define uv_to_utf8(a,b) Perl_uv_to_utf8(aTHX_ a,b) +#define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) +#define vivify_ref(a,b) Perl_vivify_ref(aTHX_ a,b) +#define wait4pid(a,b,c) Perl_wait4pid(aTHX_ a,b,c) +#define report_closed_fh(a,b,c,d) Perl_report_closed_fh(aTHX_ a,b,c,d) +#define report_uninit() Perl_report_uninit(aTHX) +#define vwarn(a,b) Perl_vwarn(aTHX_ a,b) +#define vwarner(a,b,c) Perl_vwarner(aTHX_ a,b,c) +#define watch(a) Perl_watch(aTHX_ a) +#define whichsig(a) Perl_whichsig(aTHX_ a) +#define yyerror(a) Perl_yyerror(aTHX_ a) +#if defined(USE_PURE_BISON) +#define yylex(a,b) Perl_yylex(aTHX_ a,b) +#else +#define yylex() Perl_yylex(aTHX) +#endif +#define yyparse() Perl_yyparse(aTHX) +#define yywarn(a) Perl_yywarn(aTHX_ a) +#if defined(MYMALLOC) +#define dump_mstats(a) Perl_dump_mstats(aTHX_ a) +#define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c) +#endif +#define safesysmalloc Perl_safesysmalloc +#define safesyscalloc Perl_safesyscalloc +#define safesysrealloc Perl_safesysrealloc +#define safesysfree Perl_safesysfree +#if defined(LEAKTEST) +#define safexmalloc Perl_safexmalloc +#define safexcalloc Perl_safexcalloc +#define safexrealloc Perl_safexrealloc +#define safexfree Perl_safexfree +#endif +#if defined(PERL_GLOBAL_STRUCT) +#define GetVars() Perl_GetVars(aTHX) +#endif +#define runops_standard() Perl_runops_standard(aTHX) +#define runops_debug() Perl_runops_debug(aTHX) +#define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c) +#define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b) +#define sv_catpvn_mg(a,b,c) Perl_sv_catpvn_mg(aTHX_ a,b,c) +#define sv_catsv_mg(a,b) Perl_sv_catsv_mg(aTHX_ a,b) +#define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c) +#define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b) +#define sv_setpviv_mg(a,b) Perl_sv_setpviv_mg(aTHX_ a,b) +#define sv_setuv_mg(a,b) Perl_sv_setuv_mg(aTHX_ a,b) +#define sv_setnv_mg(a,b) Perl_sv_setnv_mg(aTHX_ a,b) +#define sv_setpv_mg(a,b) Perl_sv_setpv_mg(aTHX_ a,b) +#define sv_setpvn_mg(a,b,c) Perl_sv_setpvn_mg(aTHX_ a,b,c) +#define sv_setsv_mg(a,b) Perl_sv_setsv_mg(aTHX_ a,b) +#define sv_usepvn_mg(a,b,c) Perl_sv_usepvn_mg(aTHX_ a,b,c) +#define get_vtbl(a) Perl_get_vtbl(aTHX_ a) +#define pv_display(a,b,c,d,e) Perl_pv_display(aTHX_ a,b,c,d,e) +#define dump_vindent(a,b,c,d) Perl_dump_vindent(aTHX_ a,b,c,d) +#define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d) +#define do_gvgv_dump(a,b,c,d) Perl_do_gvgv_dump(aTHX_ a,b,c,d) +#define do_hv_dump(a,b,c,d) Perl_do_hv_dump(aTHX_ a,b,c,d) +#define do_magic_dump(a,b,c,d,e,f,g) Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g) +#define do_op_dump(a,b,c) Perl_do_op_dump(aTHX_ a,b,c) +#define do_pmop_dump(a,b,c) Perl_do_pmop_dump(aTHX_ a,b,c) +#define do_sv_dump(a,b,c,d,e,f,g) Perl_do_sv_dump(aTHX_ a,b,c,d,e,f,g) +#define magic_dump(a) Perl_magic_dump(aTHX_ a) +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define vdefault_protect(a,b,c,d) Perl_vdefault_protect(aTHX_ a,b,c,d) +#endif +#define reginitcolors() Perl_reginitcolors(aTHX) +#define sv_2pv_nolen(a) Perl_sv_2pv_nolen(aTHX_ a) +#define sv_2pvutf8_nolen(a) Perl_sv_2pvutf8_nolen(aTHX_ a) +#define sv_2pvbyte_nolen(a) Perl_sv_2pvbyte_nolen(aTHX_ a) +#define sv_pv(a) Perl_sv_pv(aTHX_ a) +#define sv_pvutf8(a) Perl_sv_pvutf8(aTHX_ a) +#define sv_pvbyte(a) Perl_sv_pvbyte(aTHX_ a) +#define sv_utf8_upgrade(a) Perl_sv_utf8_upgrade(aTHX_ a) +#define sv_utf8_downgrade(a,b) Perl_sv_utf8_downgrade(aTHX_ a,b) +#define sv_utf8_encode(a) Perl_sv_utf8_encode(aTHX_ a) +#define sv_utf8_decode(a) Perl_sv_utf8_decode(aTHX_ a) +#define sv_force_normal(a) Perl_sv_force_normal(aTHX_ a) +#define tmps_grow(a) Perl_tmps_grow(aTHX_ a) +#define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a) +#define magic_killbackrefs(a,b) Perl_magic_killbackrefs(aTHX_ a,b) +#define newANONATTRSUB(a,b,c,d) Perl_newANONATTRSUB(aTHX_ a,b,c,d) +#define newATTRSUB(a,b,c,d,e) Perl_newATTRSUB(aTHX_ a,b,c,d,e) +#define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e) +#define my_attrs(a,b) Perl_my_attrs(aTHX_ a,b) +#define boot_core_xsutils() Perl_boot_core_xsutils(aTHX) +#if defined(USE_ITHREADS) +#define cx_dup(a,b,c) Perl_cx_dup(aTHX_ a,b,c) +#define si_dup(a) Perl_si_dup(aTHX_ a) +#define ss_dup(a) Perl_ss_dup(aTHX_ a) +#define any_dup(a,b) Perl_any_dup(aTHX_ a,b) +#define he_dup(a,b) Perl_he_dup(aTHX_ a,b) +#define re_dup(a) Perl_re_dup(aTHX_ a) +#define fp_dup(a,b) Perl_fp_dup(aTHX_ a,b) +#define dirp_dup(a) Perl_dirp_dup(aTHX_ a) +#define gp_dup(a) Perl_gp_dup(aTHX_ a) +#define mg_dup(a) Perl_mg_dup(aTHX_ a) +#define sv_dup(a) Perl_sv_dup(aTHX_ a) +#if defined(HAVE_INTERP_INTERN) +#define sys_intern_dup(a,b) Perl_sys_intern_dup(aTHX_ a,b) +#endif +#define ptr_table_new() Perl_ptr_table_new(aTHX) +#define ptr_table_fetch(a,b) Perl_ptr_table_fetch(aTHX_ a,b) +#define ptr_table_store(a,b,c) Perl_ptr_table_store(aTHX_ a,b,c) +#define ptr_table_split(a) Perl_ptr_table_split(aTHX_ a) +#endif +#if defined(PERL_OBJECT) +#else +#endif +#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) +#define avhv_index_sv(a) S_avhv_index_sv(aTHX_ a) +#define avhv_index(a,b,c) S_avhv_index(aTHX_ a,b,c) +#endif +#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) +#define do_trans_CC_simple(a) S_do_trans_CC_simple(aTHX_ a) +#define do_trans_CC_count(a) S_do_trans_CC_count(aTHX_ a) +#define do_trans_CC_complex(a) S_do_trans_CC_complex(aTHX_ a) +#define do_trans_UU_simple(a) S_do_trans_UU_simple(aTHX_ a) +#define do_trans_UU_count(a) S_do_trans_UU_count(aTHX_ a) +#define do_trans_UU_complex(a) S_do_trans_UU_complex(aTHX_ a) +#define do_trans_UC_simple(a) S_do_trans_UC_simple(aTHX_ a) +#define do_trans_CU_simple(a) S_do_trans_CU_simple(aTHX_ a) +#define do_trans_UC_trivial(a) S_do_trans_UC_trivial(aTHX_ a) +#define do_trans_CU_trivial(a) S_do_trans_CU_trivial(aTHX_ a) +#endif +#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) +#define gv_init_sv(a,b) S_gv_init_sv(aTHX_ a,b) +#endif +#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +#define hsplit(a) S_hsplit(aTHX_ a) +#define hfreeentries(a) S_hfreeentries(aTHX_ a) +#define more_he() S_more_he(aTHX) +#define new_he() S_new_he(aTHX) +#define del_he(a) S_del_he(aTHX_ a) +#define save_hek(a,b,c) S_save_hek(aTHX_ a,b,c) +#define hv_magic_check(a,b,c) S_hv_magic_check(aTHX_ a,b,c) +#endif +#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) +#define save_magic(a,b) S_save_magic(aTHX_ a,b) +#define magic_methpack(a,b,c) S_magic_methpack(aTHX_ a,b,c) +#define magic_methcall(a,b,c,d,e,f) S_magic_methcall(aTHX_ a,b,c,d,e,f) +#endif +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#define list_assignment(a) S_list_assignment(aTHX_ a) +#define bad_type(a,b,c,d) S_bad_type(aTHX_ a,b,c,d) +#define cop_free(a) S_cop_free(aTHX_ a) +#define modkids(a,b) S_modkids(aTHX_ a,b) +#define no_bareword_allowed(a) S_no_bareword_allowed(aTHX_ a) +#define no_fh_allowed(a) S_no_fh_allowed(aTHX_ a) +#define scalarboolean(a) S_scalarboolean(aTHX_ a) +#define too_few_arguments(a,b) S_too_few_arguments(aTHX_ a,b) +#define too_many_arguments(a,b) S_too_many_arguments(aTHX_ a,b) +#define op_clear(a) S_op_clear(aTHX_ a) +#define null(a) S_null(aTHX_ a) +#define pad_addlex(a) S_pad_addlex(aTHX_ a) +#define pad_findlex(a,b,c,d,e,f,g) S_pad_findlex(aTHX_ a,b,c,d,e,f,g) +#define newDEFSVOP() S_newDEFSVOP(aTHX) +#define new_logop(a,b,c,d) S_new_logop(aTHX_ a,b,c,d) +#define simplify_sort(a) S_simplify_sort(aTHX_ a) +#define is_handle_constructor(a,b) S_is_handle_constructor(aTHX_ a,b) +#define gv_ename(a) S_gv_ename(aTHX_ a) +#define cv_dump(a) S_cv_dump(aTHX_ a) +#define cv_clone2(a,b) S_cv_clone2(aTHX_ a,b) +#define scalar_mod_type(a,b) S_scalar_mod_type(aTHX_ a,b) +#define my_kid(a,b) S_my_kid(aTHX_ a,b) +#define dup_attrlist(a) S_dup_attrlist(aTHX_ a) +#define apply_attrs(a,b,c) S_apply_attrs(aTHX_ a,b,c) +# if defined(PL_OP_SLAB_ALLOC) +#define Slab_Alloc(a,b) S_Slab_Alloc(aTHX_ a,b) +# endif +#endif +#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +#define find_beginning() S_find_beginning(aTHX) +#define forbid_setid(a) S_forbid_setid(aTHX_ a) +#define incpush(a,b,c) S_incpush(aTHX_ a,b,c) +#define init_interp() S_init_interp(aTHX) +#define init_ids() S_init_ids(aTHX) +#define init_lexer() S_init_lexer(aTHX) +#define init_main_stash() S_init_main_stash(aTHX) +#define init_perllib() S_init_perllib(aTHX) +#define init_postdump_symbols(a,b,c) S_init_postdump_symbols(aTHX_ a,b,c) +#define init_predump_symbols() S_init_predump_symbols(aTHX) +#define my_exit_jump() S_my_exit_jump(aTHX) +#define nuke_stacks() S_nuke_stacks(aTHX) +#define open_script(a,b,c,d) S_open_script(aTHX_ a,b,c,d) +#define usage(a) S_usage(aTHX_ a) +#define validate_suid(a,b,c) S_validate_suid(aTHX_ a,b,c) +# if defined(IAMSUID) +#define fd_on_nosuid_fs(a) S_fd_on_nosuid_fs(aTHX_ a) +# endif +#define parse_body(a,b) S_parse_body(aTHX_ a,b) +#define run_body(a) S_run_body(aTHX_ a) +#define call_body(a,b) S_call_body(aTHX_ a,b) +#define call_list_body(a) S_call_list_body(aTHX_ a) +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define vparse_body(a) S_vparse_body(aTHX_ a) +#define vrun_body(a) S_vrun_body(aTHX_ a) +#define vcall_body(a) S_vcall_body(aTHX_ a) +#define vcall_list_body(a) S_vcall_list_body(aTHX_ a) +#endif +# if defined(USE_THREADS) +#define init_main_thread() S_init_main_thread(aTHX) +# endif +#endif +#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) +#define doencodes(a,b,c) S_doencodes(aTHX_ a,b,c) +#define refto(a) S_refto(aTHX_ a) +#define seed() S_seed(aTHX) +#define mul128(a,b) S_mul128(aTHX_ a,b) +#define is_an_int(a,b) S_is_an_int(aTHX_ a,b) +#define div128(a,b) S_div128(aTHX_ a,b) +#endif +#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +#define docatch(a) S_docatch(aTHX_ a) +#define docatch_body() S_docatch_body(aTHX) +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define vdocatch_body(a) S_vdocatch_body(aTHX_ a) +#endif +#define dofindlabel(a,b,c,d) S_dofindlabel(aTHX_ a,b,c,d) +#define doparseform(a) S_doparseform(aTHX_ a) +#define dopoptoeval(a) S_dopoptoeval(aTHX_ a) +#define dopoptolabel(a) S_dopoptolabel(aTHX_ a) +#define dopoptoloop(a) S_dopoptoloop(aTHX_ a) +#define dopoptosub(a) S_dopoptosub(aTHX_ a) +#define dopoptosub_at(a,b) S_dopoptosub_at(aTHX_ a,b) +#define free_closures() S_free_closures(aTHX) +#define save_lines(a,b) S_save_lines(aTHX_ a,b) +#define doeval(a,b) S_doeval(aTHX_ a,b) +#define doopen_pmc(a,b) S_doopen_pmc(aTHX_ a,b) +#define qsortsv(a,b,c) S_qsortsv(aTHX_ a,b,c) +#endif +#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#define do_maybe_phash(a,b,c,d,e) S_do_maybe_phash(aTHX_ a,b,c,d,e) +#define do_oddball(a,b,c) S_do_oddball(aTHX_ a,b,c) +#define get_db_sub(a,b) S_get_db_sub(aTHX_ a,b) +#define method_common(a,b) S_method_common(aTHX_ a,b) +#endif +#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +#define doform(a,b,c) S_doform(aTHX_ a,b,c) +#define emulate_eaccess(a,b) S_emulate_eaccess(aTHX_ a,b) +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +#define dooneliner(a,b) S_dooneliner(aTHX_ a,b) +# endif +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) +#define reg(a,b) S_reg(aTHX_ a,b) +#define reganode(a,b) S_reganode(aTHX_ a,b) +#define regatom(a) S_regatom(aTHX_ a) +#define regbranch(a,b) S_regbranch(aTHX_ a,b) +#define reguni(a,b,c) S_reguni(aTHX_ a,b,c) +#define regclass() S_regclass(aTHX) +#define regclassutf8() S_regclassutf8(aTHX) +#define regcurly(a) S_regcurly(aTHX_ a) +#define reg_node(a) S_reg_node(aTHX_ a) +#define regpiece(a) S_regpiece(aTHX_ a) +#define reginsert(a,b) S_reginsert(aTHX_ a,b) +#define regoptail(a,b) S_regoptail(aTHX_ a,b) +#define regtail(a,b) S_regtail(aTHX_ a,b) +#define regwhite(a,b) S_regwhite(aTHX_ a,b) +#define nextchar() S_nextchar(aTHX) +#define dumpuntil(a,b,c,d,e) S_dumpuntil(aTHX_ a,b,c,d,e) +#define put_byte(a,b) S_put_byte(aTHX_ a,b) +#define scan_commit(a) S_scan_commit(aTHX_ a) +#define cl_anything(a) S_cl_anything(aTHX_ a) +#define cl_is_anything(a) S_cl_is_anything(aTHX_ a) +#define cl_init(a) S_cl_init(aTHX_ a) +#define cl_init_zero(a) S_cl_init_zero(aTHX_ a) +#define cl_and(a,b) S_cl_and(aTHX_ a,b) +#define cl_or(a,b) S_cl_or(aTHX_ a,b) +#define study_chunk(a,b,c,d,e) S_study_chunk(aTHX_ a,b,c,d,e) +#define add_data(a,b) S_add_data(aTHX_ a,b) +#define regpposixcc(a) S_regpposixcc(aTHX_ a) +#define checkposixcc() S_checkposixcc(aTHX) +#endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) +#define regmatch(a) S_regmatch(aTHX_ a) +#define regrepeat(a,b) S_regrepeat(aTHX_ a,b) +#define regrepeat_hard(a,b,c) S_regrepeat_hard(aTHX_ a,b,c) +#define regtry(a,b) S_regtry(aTHX_ a,b) +#define reginclass(a,b) S_reginclass(aTHX_ a,b) +#define reginclassutf8(a,b) S_reginclassutf8(aTHX_ a,b) +#define regcppush(a) S_regcppush(aTHX_ a) +#define regcppop() S_regcppop(aTHX) +#define regcp_set_to(a) S_regcp_set_to(aTHX_ a) +#define cache_re(a) S_cache_re(aTHX_ a) +#define reghop(a,b) S_reghop(aTHX_ a,b) +#define reghopmaybe(a,b) S_reghopmaybe(aTHX_ a,b) +#define find_byclass(a,b,c,d,e,f) S_find_byclass(aTHX_ a,b,c,d,e,f) +#endif +#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) +#define debprof(a) S_debprof(aTHX_ a) +#endif +#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +#define save_scalar_at(a) S_save_scalar_at(aTHX_ a) +#endif +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#define asIV(a) S_asIV(aTHX_ a) +#define asUV(a) S_asUV(aTHX_ a) +#define more_sv() S_more_sv(aTHX) +#define more_xiv() S_more_xiv(aTHX) +#define more_xnv() S_more_xnv(aTHX) +#define more_xpv() S_more_xpv(aTHX) +#define more_xpviv() S_more_xpviv(aTHX) +#define more_xpvnv() S_more_xpvnv(aTHX) +#define more_xpvcv() S_more_xpvcv(aTHX) +#define more_xpvav() S_more_xpvav(aTHX) +#define more_xpvhv() S_more_xpvhv(aTHX) +#define more_xpvmg() S_more_xpvmg(aTHX) +#define more_xpvlv() S_more_xpvlv(aTHX) +#define more_xpvbm() S_more_xpvbm(aTHX) +#define more_xrv() S_more_xrv(aTHX) +#define new_xiv() S_new_xiv(aTHX) +#define new_xnv() S_new_xnv(aTHX) +#define new_xpv() S_new_xpv(aTHX) +#define new_xpviv() S_new_xpviv(aTHX) +#define new_xpvnv() S_new_xpvnv(aTHX) +#define new_xpvcv() S_new_xpvcv(aTHX) +#define new_xpvav() S_new_xpvav(aTHX) +#define new_xpvhv() S_new_xpvhv(aTHX) +#define new_xpvmg() S_new_xpvmg(aTHX) +#define new_xpvlv() S_new_xpvlv(aTHX) +#define new_xpvbm() S_new_xpvbm(aTHX) +#define new_xrv() S_new_xrv(aTHX) +#define del_xiv(a) S_del_xiv(aTHX_ a) +#define del_xnv(a) S_del_xnv(aTHX_ a) +#define del_xpv(a) S_del_xpv(aTHX_ a) +#define del_xpviv(a) S_del_xpviv(aTHX_ a) +#define del_xpvnv(a) S_del_xpvnv(aTHX_ a) +#define del_xpvcv(a) S_del_xpvcv(aTHX_ a) +#define del_xpvav(a) S_del_xpvav(aTHX_ a) +#define del_xpvhv(a) S_del_xpvhv(aTHX_ a) +#define del_xpvmg(a) S_del_xpvmg(aTHX_ a) +#define del_xpvlv(a) S_del_xpvlv(aTHX_ a) +#define del_xpvbm(a) S_del_xpvbm(aTHX_ a) +#define del_xrv(a) S_del_xrv(aTHX_ a) +#define sv_unglob(a) S_sv_unglob(aTHX_ a) +#define not_a_number(a) S_not_a_number(aTHX_ a) +#define visit(a) S_visit(aTHX_ a) +#define sv_add_backref(a,b) S_sv_add_backref(aTHX_ a,b) +#define sv_del_backref(a) S_sv_del_backref(aTHX_ a) +# if defined(DEBUGGING) +#define del_sv(a) S_del_sv(aTHX_ a) +# endif +#endif +#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +#define check_uni() S_check_uni(aTHX) +#define force_next(a) S_force_next(aTHX_ a) +#define force_version(a) S_force_version(aTHX_ a) +#define force_word(a,b,c,d,e) S_force_word(aTHX_ a,b,c,d,e) +#define tokeq(a) S_tokeq(aTHX_ a) +#define scan_const(a) S_scan_const(aTHX_ a) +#define scan_formline(a) S_scan_formline(aTHX_ a) +#define scan_heredoc(a) S_scan_heredoc(aTHX_ a) +#define scan_ident(a,b,c,d,e) S_scan_ident(aTHX_ a,b,c,d,e) +#define scan_inputsymbol(a) S_scan_inputsymbol(aTHX_ a) +#define scan_pat(a,b) S_scan_pat(aTHX_ a,b) +#define scan_str(a,b,c) S_scan_str(aTHX_ a,b,c) +#define scan_subst(a) S_scan_subst(aTHX_ a) +#define scan_trans(a) S_scan_trans(aTHX_ a) +#define scan_word(a,b,c,d,e) S_scan_word(aTHX_ a,b,c,d,e) +#define skipspace(a) S_skipspace(aTHX_ a) +#define checkcomma(a,b,c) S_checkcomma(aTHX_ a,b,c) +#define force_ident(a,b) S_force_ident(aTHX_ a,b) +#define incline(a) S_incline(aTHX_ a) +#define intuit_method(a,b) S_intuit_method(aTHX_ a,b) +#define intuit_more(a) S_intuit_more(aTHX_ a) +#define lop(a,b,c) S_lop(aTHX_ a,b,c) +#define missingterm(a) S_missingterm(aTHX_ a) +#define no_op(a,b) S_no_op(aTHX_ a,b) +#define set_csh() S_set_csh(aTHX) +#define sublex_done() S_sublex_done(aTHX) +#define sublex_push() S_sublex_push(aTHX) +#define sublex_start() S_sublex_start(aTHX) +#define filter_gets(a,b,c) S_filter_gets(aTHX_ a,b,c) +#define new_constant(a,b,c,d,e,f) S_new_constant(aTHX_ a,b,c,d,e,f) +#define ao(a) S_ao(aTHX_ a) +#define depcom() S_depcom(aTHX) +#define incl_perldb() S_incl_perldb(aTHX) +#if 0 +#define utf16_textfilter(a,b,c) S_utf16_textfilter(aTHX_ a,b,c) +#define utf16rev_textfilter(a,b,c) S_utf16rev_textfilter(aTHX_ a,b,c) +#endif +# if defined(CRIPPLED_CC) +#define uni(a,b) S_uni(aTHX_ a,b) +# endif +# if defined(PERL_CR_FILTER) +#define cr_textfilter(a,b,c) S_cr_textfilter(aTHX_ a,b,c) +# endif +#endif +#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +#define isa_lookup(a,b,c,d) S_isa_lookup(aTHX_ a,b,c,d) +#endif +#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) +#define mess_alloc() S_mess_alloc(aTHX) +# if defined(LEAKTEST) +#define xstat(a) S_xstat(aTHX_ a) +# endif +#endif +#if defined(PERL_OBJECT) +#endif +#define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a) +#define ck_bitop(a) Perl_ck_bitop(aTHX_ a) +#define ck_concat(a) Perl_ck_concat(aTHX_ a) +#define ck_defined(a) Perl_ck_defined(aTHX_ a) +#define ck_delete(a) Perl_ck_delete(aTHX_ a) +#define ck_eof(a) Perl_ck_eof(aTHX_ a) +#define ck_eval(a) Perl_ck_eval(aTHX_ a) +#define ck_exec(a) Perl_ck_exec(aTHX_ a) +#define ck_exists(a) Perl_ck_exists(aTHX_ a) +#define ck_exit(a) Perl_ck_exit(aTHX_ a) +#define ck_ftst(a) Perl_ck_ftst(aTHX_ a) +#define ck_fun(a) Perl_ck_fun(aTHX_ a) +#define ck_fun_locale(a) Perl_ck_fun_locale(aTHX_ a) +#define ck_glob(a) Perl_ck_glob(aTHX_ a) +#define ck_grep(a) Perl_ck_grep(aTHX_ a) +#define ck_index(a) Perl_ck_index(aTHX_ a) +#define ck_join(a) Perl_ck_join(aTHX_ a) +#define ck_lengthconst(a) Perl_ck_lengthconst(aTHX_ a) +#define ck_lfun(a) Perl_ck_lfun(aTHX_ a) +#define ck_listiob(a) Perl_ck_listiob(aTHX_ a) +#define ck_match(a) Perl_ck_match(aTHX_ a) +#define ck_method(a) Perl_ck_method(aTHX_ a) +#define ck_null(a) Perl_ck_null(aTHX_ a) +#define ck_open(a) Perl_ck_open(aTHX_ a) +#define ck_repeat(a) Perl_ck_repeat(aTHX_ a) +#define ck_require(a) Perl_ck_require(aTHX_ a) +#define ck_rfun(a) Perl_ck_rfun(aTHX_ a) +#define ck_rvconst(a) Perl_ck_rvconst(aTHX_ a) +#define ck_sassign(a) Perl_ck_sassign(aTHX_ a) +#define ck_scmp(a) Perl_ck_scmp(aTHX_ a) +#define ck_select(a) Perl_ck_select(aTHX_ a) +#define ck_shift(a) Perl_ck_shift(aTHX_ a) +#define ck_sort(a) Perl_ck_sort(aTHX_ a) +#define ck_spair(a) Perl_ck_spair(aTHX_ a) +#define ck_split(a) Perl_ck_split(aTHX_ a) +#define ck_subr(a) Perl_ck_subr(aTHX_ a) +#define ck_svconst(a) Perl_ck_svconst(aTHX_ a) +#define ck_trunc(a) Perl_ck_trunc(aTHX_ a) +#define pp_aassign() Perl_pp_aassign(aTHX) +#define pp_abs() Perl_pp_abs(aTHX) +#define pp_accept() Perl_pp_accept(aTHX) +#define pp_add() Perl_pp_add(aTHX) +#define pp_aelem() Perl_pp_aelem(aTHX) +#define pp_aelemfast() Perl_pp_aelemfast(aTHX) +#define pp_alarm() Perl_pp_alarm(aTHX) +#define pp_and() Perl_pp_and(aTHX) +#define pp_andassign() Perl_pp_andassign(aTHX) +#define pp_anoncode() Perl_pp_anoncode(aTHX) +#define pp_anonhash() Perl_pp_anonhash(aTHX) +#define pp_anonlist() Perl_pp_anonlist(aTHX) +#define pp_aslice() Perl_pp_aslice(aTHX) +#define pp_atan2() Perl_pp_atan2(aTHX) +#define pp_av2arylen() Perl_pp_av2arylen(aTHX) +#define pp_backtick() Perl_pp_backtick(aTHX) +#define pp_bind() Perl_pp_bind(aTHX) +#define pp_binmode() Perl_pp_binmode(aTHX) +#define pp_bit_and() Perl_pp_bit_and(aTHX) +#define pp_bit_or() Perl_pp_bit_or(aTHX) +#define pp_bit_xor() Perl_pp_bit_xor(aTHX) +#define pp_bless() Perl_pp_bless(aTHX) +#define pp_caller() Perl_pp_caller(aTHX) +#define pp_chdir() Perl_pp_chdir(aTHX) +#define pp_chmod() Perl_pp_chmod(aTHX) +#define pp_chomp() Perl_pp_chomp(aTHX) +#define pp_chop() Perl_pp_chop(aTHX) +#define pp_chown() Perl_pp_chown(aTHX) +#define pp_chr() Perl_pp_chr(aTHX) +#define pp_chroot() Perl_pp_chroot(aTHX) +#define pp_close() Perl_pp_close(aTHX) +#define pp_closedir() Perl_pp_closedir(aTHX) +#define pp_complement() Perl_pp_complement(aTHX) +#define pp_concat() Perl_pp_concat(aTHX) +#define pp_cond_expr() Perl_pp_cond_expr(aTHX) +#define pp_connect() Perl_pp_connect(aTHX) +#define pp_const() Perl_pp_const(aTHX) +#define pp_cos() Perl_pp_cos(aTHX) +#define pp_crypt() Perl_pp_crypt(aTHX) +#define pp_dbmclose() Perl_pp_dbmclose(aTHX) +#define pp_dbmopen() Perl_pp_dbmopen(aTHX) +#define pp_dbstate() Perl_pp_dbstate(aTHX) +#define pp_defined() Perl_pp_defined(aTHX) +#define pp_delete() Perl_pp_delete(aTHX) +#define pp_die() Perl_pp_die(aTHX) +#define pp_divide() Perl_pp_divide(aTHX) +#define pp_dofile() Perl_pp_dofile(aTHX) +#define pp_dump() Perl_pp_dump(aTHX) +#define pp_each() Perl_pp_each(aTHX) +#define pp_egrent() Perl_pp_egrent(aTHX) +#define pp_ehostent() Perl_pp_ehostent(aTHX) +#define pp_enetent() Perl_pp_enetent(aTHX) +#define pp_enter() Perl_pp_enter(aTHX) +#define pp_entereval() Perl_pp_entereval(aTHX) +#define pp_enteriter() Perl_pp_enteriter(aTHX) +#define pp_enterloop() Perl_pp_enterloop(aTHX) +#define pp_entersub() Perl_pp_entersub(aTHX) +#define pp_entertry() Perl_pp_entertry(aTHX) +#define pp_enterwrite() Perl_pp_enterwrite(aTHX) +#define pp_eof() Perl_pp_eof(aTHX) +#define pp_eprotoent() Perl_pp_eprotoent(aTHX) +#define pp_epwent() Perl_pp_epwent(aTHX) +#define pp_eq() Perl_pp_eq(aTHX) +#define pp_eservent() Perl_pp_eservent(aTHX) +#define pp_exec() Perl_pp_exec(aTHX) +#define pp_exists() Perl_pp_exists(aTHX) +#define pp_exit() Perl_pp_exit(aTHX) +#define pp_exp() Perl_pp_exp(aTHX) +#define pp_fcntl() Perl_pp_fcntl(aTHX) +#define pp_fileno() Perl_pp_fileno(aTHX) +#define pp_flip() Perl_pp_flip(aTHX) +#define pp_flock() Perl_pp_flock(aTHX) +#define pp_flop() Perl_pp_flop(aTHX) +#define pp_fork() Perl_pp_fork(aTHX) +#define pp_formline() Perl_pp_formline(aTHX) +#define pp_ftatime() Perl_pp_ftatime(aTHX) +#define pp_ftbinary() Perl_pp_ftbinary(aTHX) +#define pp_ftblk() Perl_pp_ftblk(aTHX) +#define pp_ftchr() Perl_pp_ftchr(aTHX) +#define pp_ftctime() Perl_pp_ftctime(aTHX) +#define pp_ftdir() Perl_pp_ftdir(aTHX) +#define pp_fteexec() Perl_pp_fteexec(aTHX) +#define pp_fteowned() Perl_pp_fteowned(aTHX) +#define pp_fteread() Perl_pp_fteread(aTHX) +#define pp_ftewrite() Perl_pp_ftewrite(aTHX) +#define pp_ftfile() Perl_pp_ftfile(aTHX) +#define pp_ftis() Perl_pp_ftis(aTHX) +#define pp_ftlink() Perl_pp_ftlink(aTHX) +#define pp_ftmtime() Perl_pp_ftmtime(aTHX) +#define pp_ftpipe() Perl_pp_ftpipe(aTHX) +#define pp_ftrexec() Perl_pp_ftrexec(aTHX) +#define pp_ftrowned() Perl_pp_ftrowned(aTHX) +#define pp_ftrread() Perl_pp_ftrread(aTHX) +#define pp_ftrwrite() Perl_pp_ftrwrite(aTHX) +#define pp_ftsgid() Perl_pp_ftsgid(aTHX) +#define pp_ftsize() Perl_pp_ftsize(aTHX) +#define pp_ftsock() Perl_pp_ftsock(aTHX) +#define pp_ftsuid() Perl_pp_ftsuid(aTHX) +#define pp_ftsvtx() Perl_pp_ftsvtx(aTHX) +#define pp_fttext() Perl_pp_fttext(aTHX) +#define pp_fttty() Perl_pp_fttty(aTHX) +#define pp_ftzero() Perl_pp_ftzero(aTHX) +#define pp_ge() Perl_pp_ge(aTHX) +#define pp_gelem() Perl_pp_gelem(aTHX) +#define pp_getc() Perl_pp_getc(aTHX) +#define pp_getlogin() Perl_pp_getlogin(aTHX) +#define pp_getpeername() Perl_pp_getpeername(aTHX) +#define pp_getpgrp() Perl_pp_getpgrp(aTHX) +#define pp_getppid() Perl_pp_getppid(aTHX) +#define pp_getpriority() Perl_pp_getpriority(aTHX) +#define pp_getsockname() Perl_pp_getsockname(aTHX) +#define pp_ggrent() Perl_pp_ggrent(aTHX) +#define pp_ggrgid() Perl_pp_ggrgid(aTHX) +#define pp_ggrnam() Perl_pp_ggrnam(aTHX) +#define pp_ghbyaddr() Perl_pp_ghbyaddr(aTHX) +#define pp_ghbyname() Perl_pp_ghbyname(aTHX) +#define pp_ghostent() Perl_pp_ghostent(aTHX) +#define pp_glob() Perl_pp_glob(aTHX) +#define pp_gmtime() Perl_pp_gmtime(aTHX) +#define pp_gnbyaddr() Perl_pp_gnbyaddr(aTHX) +#define pp_gnbyname() Perl_pp_gnbyname(aTHX) +#define pp_gnetent() Perl_pp_gnetent(aTHX) +#define pp_goto() Perl_pp_goto(aTHX) +#define pp_gpbyname() Perl_pp_gpbyname(aTHX) +#define pp_gpbynumber() Perl_pp_gpbynumber(aTHX) +#define pp_gprotoent() Perl_pp_gprotoent(aTHX) +#define pp_gpwent() Perl_pp_gpwent(aTHX) +#define pp_gpwnam() Perl_pp_gpwnam(aTHX) +#define pp_gpwuid() Perl_pp_gpwuid(aTHX) +#define pp_grepstart() Perl_pp_grepstart(aTHX) +#define pp_grepwhile() Perl_pp_grepwhile(aTHX) +#define pp_gsbyname() Perl_pp_gsbyname(aTHX) +#define pp_gsbyport() Perl_pp_gsbyport(aTHX) +#define pp_gservent() Perl_pp_gservent(aTHX) +#define pp_gsockopt() Perl_pp_gsockopt(aTHX) +#define pp_gt() Perl_pp_gt(aTHX) +#define pp_gv() Perl_pp_gv(aTHX) +#define pp_gvsv() Perl_pp_gvsv(aTHX) +#define pp_helem() Perl_pp_helem(aTHX) +#define pp_hex() Perl_pp_hex(aTHX) +#define pp_hslice() Perl_pp_hslice(aTHX) +#define pp_i_add() Perl_pp_i_add(aTHX) +#define pp_i_divide() Perl_pp_i_divide(aTHX) +#define pp_i_eq() Perl_pp_i_eq(aTHX) +#define pp_i_ge() Perl_pp_i_ge(aTHX) +#define pp_i_gt() Perl_pp_i_gt(aTHX) +#define pp_i_le() Perl_pp_i_le(aTHX) +#define pp_i_lt() Perl_pp_i_lt(aTHX) +#define pp_i_modulo() Perl_pp_i_modulo(aTHX) +#define pp_i_multiply() Perl_pp_i_multiply(aTHX) +#define pp_i_ncmp() Perl_pp_i_ncmp(aTHX) +#define pp_i_ne() Perl_pp_i_ne(aTHX) +#define pp_i_negate() Perl_pp_i_negate(aTHX) +#define pp_i_subtract() Perl_pp_i_subtract(aTHX) +#define pp_index() Perl_pp_index(aTHX) +#define pp_int() Perl_pp_int(aTHX) +#define pp_ioctl() Perl_pp_ioctl(aTHX) +#define pp_iter() Perl_pp_iter(aTHX) +#define pp_join() Perl_pp_join(aTHX) +#define pp_keys() Perl_pp_keys(aTHX) +#define pp_kill() Perl_pp_kill(aTHX) +#define pp_last() Perl_pp_last(aTHX) +#define pp_lc() Perl_pp_lc(aTHX) +#define pp_lcfirst() Perl_pp_lcfirst(aTHX) +#define pp_le() Perl_pp_le(aTHX) +#define pp_leave() Perl_pp_leave(aTHX) +#define pp_leaveeval() Perl_pp_leaveeval(aTHX) +#define pp_leaveloop() Perl_pp_leaveloop(aTHX) +#define pp_leavesub() Perl_pp_leavesub(aTHX) +#define pp_leavesublv() Perl_pp_leavesublv(aTHX) +#define pp_leavetry() Perl_pp_leavetry(aTHX) +#define pp_leavewrite() Perl_pp_leavewrite(aTHX) +#define pp_left_shift() Perl_pp_left_shift(aTHX) +#define pp_length() Perl_pp_length(aTHX) +#define pp_lineseq() Perl_pp_lineseq(aTHX) +#define pp_link() Perl_pp_link(aTHX) +#define pp_list() Perl_pp_list(aTHX) +#define pp_listen() Perl_pp_listen(aTHX) +#define pp_localtime() Perl_pp_localtime(aTHX) +#define pp_lock() Perl_pp_lock(aTHX) +#define pp_log() Perl_pp_log(aTHX) +#define pp_lslice() Perl_pp_lslice(aTHX) +#define pp_lstat() Perl_pp_lstat(aTHX) +#define pp_lt() Perl_pp_lt(aTHX) +#define pp_mapstart() Perl_pp_mapstart(aTHX) +#define pp_mapwhile() Perl_pp_mapwhile(aTHX) +#define pp_match() Perl_pp_match(aTHX) +#define pp_method() Perl_pp_method(aTHX) +#define pp_method_named() Perl_pp_method_named(aTHX) +#define pp_mkdir() Perl_pp_mkdir(aTHX) +#define pp_modulo() Perl_pp_modulo(aTHX) +#define pp_msgctl() Perl_pp_msgctl(aTHX) +#define pp_msgget() Perl_pp_msgget(aTHX) +#define pp_msgrcv() Perl_pp_msgrcv(aTHX) +#define pp_msgsnd() Perl_pp_msgsnd(aTHX) +#define pp_multiply() Perl_pp_multiply(aTHX) +#define pp_ncmp() Perl_pp_ncmp(aTHX) +#define pp_ne() Perl_pp_ne(aTHX) +#define pp_negate() Perl_pp_negate(aTHX) +#define pp_next() Perl_pp_next(aTHX) +#define pp_nextstate() Perl_pp_nextstate(aTHX) +#define pp_not() Perl_pp_not(aTHX) +#define pp_null() Perl_pp_null(aTHX) +#define pp_oct() Perl_pp_oct(aTHX) +#define pp_open() Perl_pp_open(aTHX) +#define pp_open_dir() Perl_pp_open_dir(aTHX) +#define pp_or() Perl_pp_or(aTHX) +#define pp_orassign() Perl_pp_orassign(aTHX) +#define pp_ord() Perl_pp_ord(aTHX) +#define pp_pack() Perl_pp_pack(aTHX) +#define pp_padany() Perl_pp_padany(aTHX) +#define pp_padav() Perl_pp_padav(aTHX) +#define pp_padhv() Perl_pp_padhv(aTHX) +#define pp_padsv() Perl_pp_padsv(aTHX) +#define pp_pipe_op() Perl_pp_pipe_op(aTHX) +#define pp_pop() Perl_pp_pop(aTHX) +#define pp_pos() Perl_pp_pos(aTHX) +#define pp_postdec() Perl_pp_postdec(aTHX) +#define pp_postinc() Perl_pp_postinc(aTHX) +#define pp_pow() Perl_pp_pow(aTHX) +#define pp_predec() Perl_pp_predec(aTHX) +#define pp_preinc() Perl_pp_preinc(aTHX) +#define pp_print() Perl_pp_print(aTHX) +#define pp_prototype() Perl_pp_prototype(aTHX) +#define pp_prtf() Perl_pp_prtf(aTHX) +#define pp_push() Perl_pp_push(aTHX) +#define pp_pushmark() Perl_pp_pushmark(aTHX) +#define pp_pushre() Perl_pp_pushre(aTHX) +#define pp_qr() Perl_pp_qr(aTHX) +#define pp_quotemeta() Perl_pp_quotemeta(aTHX) +#define pp_rand() Perl_pp_rand(aTHX) +#define pp_range() Perl_pp_range(aTHX) +#define pp_rcatline() Perl_pp_rcatline(aTHX) +#define pp_read() Perl_pp_read(aTHX) +#define pp_readdir() Perl_pp_readdir(aTHX) +#define pp_readline() Perl_pp_readline(aTHX) +#define pp_readlink() Perl_pp_readlink(aTHX) +#define pp_recv() Perl_pp_recv(aTHX) +#define pp_redo() Perl_pp_redo(aTHX) +#define pp_ref() Perl_pp_ref(aTHX) +#define pp_refgen() Perl_pp_refgen(aTHX) +#define pp_regcmaybe() Perl_pp_regcmaybe(aTHX) +#define pp_regcomp() Perl_pp_regcomp(aTHX) +#define pp_regcreset() Perl_pp_regcreset(aTHX) +#define pp_rename() Perl_pp_rename(aTHX) +#define pp_repeat() Perl_pp_repeat(aTHX) +#define pp_require() Perl_pp_require(aTHX) +#define pp_reset() Perl_pp_reset(aTHX) +#define pp_return() Perl_pp_return(aTHX) +#define pp_reverse() Perl_pp_reverse(aTHX) +#define pp_rewinddir() Perl_pp_rewinddir(aTHX) +#define pp_right_shift() Perl_pp_right_shift(aTHX) +#define pp_rindex() Perl_pp_rindex(aTHX) +#define pp_rmdir() Perl_pp_rmdir(aTHX) +#define pp_rv2av() Perl_pp_rv2av(aTHX) +#define pp_rv2cv() Perl_pp_rv2cv(aTHX) +#define pp_rv2gv() Perl_pp_rv2gv(aTHX) +#define pp_rv2hv() Perl_pp_rv2hv(aTHX) +#define pp_rv2sv() Perl_pp_rv2sv(aTHX) +#define pp_sassign() Perl_pp_sassign(aTHX) +#define pp_scalar() Perl_pp_scalar(aTHX) +#define pp_schomp() Perl_pp_schomp(aTHX) +#define pp_schop() Perl_pp_schop(aTHX) +#define pp_scmp() Perl_pp_scmp(aTHX) +#define pp_scope() Perl_pp_scope(aTHX) +#define pp_seek() Perl_pp_seek(aTHX) +#define pp_seekdir() Perl_pp_seekdir(aTHX) +#define pp_select() Perl_pp_select(aTHX) +#define pp_semctl() Perl_pp_semctl(aTHX) +#define pp_semget() Perl_pp_semget(aTHX) +#define pp_semop() Perl_pp_semop(aTHX) +#define pp_send() Perl_pp_send(aTHX) +#define pp_seq() Perl_pp_seq(aTHX) +#define pp_setpgrp() Perl_pp_setpgrp(aTHX) +#define pp_setpriority() Perl_pp_setpriority(aTHX) +#define pp_setstate() Perl_pp_setstate(aTHX) +#define pp_sge() Perl_pp_sge(aTHX) +#define pp_sgrent() Perl_pp_sgrent(aTHX) +#define pp_sgt() Perl_pp_sgt(aTHX) +#define pp_shift() Perl_pp_shift(aTHX) +#define pp_shmctl() Perl_pp_shmctl(aTHX) +#define pp_shmget() Perl_pp_shmget(aTHX) +#define pp_shmread() Perl_pp_shmread(aTHX) +#define pp_shmwrite() Perl_pp_shmwrite(aTHX) +#define pp_shostent() Perl_pp_shostent(aTHX) +#define pp_shutdown() Perl_pp_shutdown(aTHX) +#define pp_sin() Perl_pp_sin(aTHX) +#define pp_sle() Perl_pp_sle(aTHX) +#define pp_sleep() Perl_pp_sleep(aTHX) +#define pp_slt() Perl_pp_slt(aTHX) +#define pp_sne() Perl_pp_sne(aTHX) +#define pp_snetent() Perl_pp_snetent(aTHX) +#define pp_socket() Perl_pp_socket(aTHX) +#define pp_sockpair() Perl_pp_sockpair(aTHX) +#define pp_sort() Perl_pp_sort(aTHX) +#define pp_splice() Perl_pp_splice(aTHX) +#define pp_split() Perl_pp_split(aTHX) +#define pp_sprintf() Perl_pp_sprintf(aTHX) +#define pp_sprotoent() Perl_pp_sprotoent(aTHX) +#define pp_spwent() Perl_pp_spwent(aTHX) +#define pp_sqrt() Perl_pp_sqrt(aTHX) +#define pp_srand() Perl_pp_srand(aTHX) +#define pp_srefgen() Perl_pp_srefgen(aTHX) +#define pp_sselect() Perl_pp_sselect(aTHX) +#define pp_sservent() Perl_pp_sservent(aTHX) +#define pp_ssockopt() Perl_pp_ssockopt(aTHX) +#define pp_stat() Perl_pp_stat(aTHX) +#define pp_stringify() Perl_pp_stringify(aTHX) +#define pp_stub() Perl_pp_stub(aTHX) +#define pp_study() Perl_pp_study(aTHX) +#define pp_subst() Perl_pp_subst(aTHX) +#define pp_substcont() Perl_pp_substcont(aTHX) +#define pp_substr() Perl_pp_substr(aTHX) +#define pp_subtract() Perl_pp_subtract(aTHX) +#define pp_symlink() Perl_pp_symlink(aTHX) +#define pp_syscall() Perl_pp_syscall(aTHX) +#define pp_sysopen() Perl_pp_sysopen(aTHX) +#define pp_sysread() Perl_pp_sysread(aTHX) +#define pp_sysseek() Perl_pp_sysseek(aTHX) +#define pp_system() Perl_pp_system(aTHX) +#define pp_syswrite() Perl_pp_syswrite(aTHX) +#define pp_tell() Perl_pp_tell(aTHX) +#define pp_telldir() Perl_pp_telldir(aTHX) +#define pp_threadsv() Perl_pp_threadsv(aTHX) +#define pp_tie() Perl_pp_tie(aTHX) +#define pp_tied() Perl_pp_tied(aTHX) +#define pp_time() Perl_pp_time(aTHX) +#define pp_tms() Perl_pp_tms(aTHX) +#define pp_trans() Perl_pp_trans(aTHX) +#define pp_truncate() Perl_pp_truncate(aTHX) +#define pp_uc() Perl_pp_uc(aTHX) +#define pp_ucfirst() Perl_pp_ucfirst(aTHX) +#define pp_umask() Perl_pp_umask(aTHX) +#define pp_undef() Perl_pp_undef(aTHX) +#define pp_unlink() Perl_pp_unlink(aTHX) +#define pp_unpack() Perl_pp_unpack(aTHX) +#define pp_unshift() Perl_pp_unshift(aTHX) +#define pp_unstack() Perl_pp_unstack(aTHX) +#define pp_untie() Perl_pp_untie(aTHX) +#define pp_utime() Perl_pp_utime(aTHX) +#define pp_values() Perl_pp_values(aTHX) +#define pp_vec() Perl_pp_vec(aTHX) +#define pp_wait() Perl_pp_wait(aTHX) +#define pp_waitpid() Perl_pp_waitpid(aTHX) +#define pp_wantarray() Perl_pp_wantarray(aTHX) +#define pp_warn() Perl_pp_warn(aTHX) +#define pp_xor() Perl_pp_xor(aTHX) + +#endif /* PERL_IMPLICIT_CONTEXT */ +#else /* PERL_OBJECT */ + +#if defined(PERL_IMPLICIT_SYS) +#endif +#if defined(USE_ITHREADS) +# if defined(PERL_IMPLICIT_SYS) +# endif +#endif +#if defined(MYMALLOC) +#define malloc Perl_malloc +#define calloc Perl_calloc +#define realloc Perl_realloc +#define mfree Perl_mfree +#define malloced_size Perl_malloced_size +#endif +#define get_context Perl_get_context +#define set_context Perl_set_context +#if defined(PERL_OBJECT) +#ifndef __BORLANDC__ +#endif +#endif +#if defined(PERL_OBJECT) +#else +#endif +#define Perl_amagic_call CPerlObj::Perl_amagic_call +#define amagic_call Perl_amagic_call +#define Perl_Gv_AMupdate CPerlObj::Perl_Gv_AMupdate +#define Gv_AMupdate Perl_Gv_AMupdate +#define Perl_append_elem CPerlObj::Perl_append_elem +#define append_elem Perl_append_elem +#define Perl_append_list CPerlObj::Perl_append_list +#define append_list Perl_append_list +#define Perl_apply CPerlObj::Perl_apply +#define apply Perl_apply +#define Perl_avhv_delete_ent CPerlObj::Perl_avhv_delete_ent +#define avhv_delete_ent Perl_avhv_delete_ent +#define Perl_avhv_exists_ent CPerlObj::Perl_avhv_exists_ent +#define avhv_exists_ent Perl_avhv_exists_ent +#define Perl_avhv_fetch_ent CPerlObj::Perl_avhv_fetch_ent +#define avhv_fetch_ent Perl_avhv_fetch_ent +#define Perl_avhv_store_ent CPerlObj::Perl_avhv_store_ent +#define avhv_store_ent Perl_avhv_store_ent +#define Perl_avhv_iternext CPerlObj::Perl_avhv_iternext +#define avhv_iternext Perl_avhv_iternext +#define Perl_avhv_iterval CPerlObj::Perl_avhv_iterval +#define avhv_iterval Perl_avhv_iterval +#define Perl_avhv_keys CPerlObj::Perl_avhv_keys +#define avhv_keys Perl_avhv_keys +#define Perl_av_clear CPerlObj::Perl_av_clear +#define av_clear Perl_av_clear +#define Perl_av_delete CPerlObj::Perl_av_delete +#define av_delete Perl_av_delete +#define Perl_av_exists CPerlObj::Perl_av_exists +#define av_exists Perl_av_exists +#define Perl_av_extend CPerlObj::Perl_av_extend +#define av_extend Perl_av_extend +#define Perl_av_fake CPerlObj::Perl_av_fake +#define av_fake Perl_av_fake +#define Perl_av_fetch CPerlObj::Perl_av_fetch +#define av_fetch Perl_av_fetch +#define Perl_av_fill CPerlObj::Perl_av_fill +#define av_fill Perl_av_fill +#define Perl_av_len CPerlObj::Perl_av_len +#define av_len Perl_av_len +#define Perl_av_make CPerlObj::Perl_av_make +#define av_make Perl_av_make +#define Perl_av_pop CPerlObj::Perl_av_pop +#define av_pop Perl_av_pop +#define Perl_av_push CPerlObj::Perl_av_push +#define av_push Perl_av_push +#define Perl_av_reify CPerlObj::Perl_av_reify +#define av_reify Perl_av_reify +#define Perl_av_shift CPerlObj::Perl_av_shift +#define av_shift Perl_av_shift +#define Perl_av_store CPerlObj::Perl_av_store +#define av_store Perl_av_store +#define Perl_av_undef CPerlObj::Perl_av_undef +#define av_undef Perl_av_undef +#define Perl_av_unshift CPerlObj::Perl_av_unshift +#define av_unshift Perl_av_unshift +#define Perl_bind_match CPerlObj::Perl_bind_match +#define bind_match Perl_bind_match +#define Perl_block_end CPerlObj::Perl_block_end +#define block_end Perl_block_end +#define Perl_block_gimme CPerlObj::Perl_block_gimme +#define block_gimme Perl_block_gimme +#define Perl_block_start CPerlObj::Perl_block_start +#define block_start Perl_block_start +#define Perl_boot_core_UNIVERSAL CPerlObj::Perl_boot_core_UNIVERSAL +#define boot_core_UNIVERSAL Perl_boot_core_UNIVERSAL +#define Perl_call_list CPerlObj::Perl_call_list +#define call_list Perl_call_list +#define Perl_cando CPerlObj::Perl_cando +#define cando Perl_cando +#define Perl_cast_ulong CPerlObj::Perl_cast_ulong +#define cast_ulong Perl_cast_ulong +#define Perl_cast_i32 CPerlObj::Perl_cast_i32 +#define cast_i32 Perl_cast_i32 +#define Perl_cast_iv CPerlObj::Perl_cast_iv +#define cast_iv Perl_cast_iv +#define Perl_cast_uv CPerlObj::Perl_cast_uv +#define cast_uv Perl_cast_uv +#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) +#define Perl_my_chsize CPerlObj::Perl_my_chsize +#define my_chsize Perl_my_chsize +#endif +#if defined(USE_THREADS) +#define Perl_condpair_magic CPerlObj::Perl_condpair_magic +#define condpair_magic Perl_condpair_magic +#endif +#define Perl_convert CPerlObj::Perl_convert +#define convert Perl_convert +#define Perl_croak CPerlObj::Perl_croak +#define croak Perl_croak +#define Perl_vcroak CPerlObj::Perl_vcroak +#define vcroak Perl_vcroak +#if defined(PERL_IMPLICIT_CONTEXT) +#define Perl_croak_nocontext CPerlObj::Perl_croak_nocontext +#define croak_nocontext Perl_croak_nocontext +#define Perl_die_nocontext CPerlObj::Perl_die_nocontext +#define die_nocontext Perl_die_nocontext +#define Perl_deb_nocontext CPerlObj::Perl_deb_nocontext +#define deb_nocontext Perl_deb_nocontext +#define Perl_form_nocontext CPerlObj::Perl_form_nocontext +#define form_nocontext Perl_form_nocontext +#define Perl_load_module_nocontext CPerlObj::Perl_load_module_nocontext +#define load_module_nocontext Perl_load_module_nocontext +#define Perl_mess_nocontext CPerlObj::Perl_mess_nocontext +#define mess_nocontext Perl_mess_nocontext +#define Perl_warn_nocontext CPerlObj::Perl_warn_nocontext +#define warn_nocontext Perl_warn_nocontext +#define Perl_warner_nocontext CPerlObj::Perl_warner_nocontext +#define warner_nocontext Perl_warner_nocontext +#define Perl_newSVpvf_nocontext CPerlObj::Perl_newSVpvf_nocontext +#define newSVpvf_nocontext Perl_newSVpvf_nocontext +#define Perl_sv_catpvf_nocontext CPerlObj::Perl_sv_catpvf_nocontext +#define sv_catpvf_nocontext Perl_sv_catpvf_nocontext +#define Perl_sv_setpvf_nocontext CPerlObj::Perl_sv_setpvf_nocontext +#define sv_setpvf_nocontext Perl_sv_setpvf_nocontext +#define Perl_sv_catpvf_mg_nocontext CPerlObj::Perl_sv_catpvf_mg_nocontext +#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext +#define Perl_sv_setpvf_mg_nocontext CPerlObj::Perl_sv_setpvf_mg_nocontext +#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext +#define Perl_fprintf_nocontext CPerlObj::Perl_fprintf_nocontext +#define fprintf_nocontext Perl_fprintf_nocontext +#endif +#define Perl_cv_ckproto CPerlObj::Perl_cv_ckproto +#define cv_ckproto Perl_cv_ckproto +#define Perl_cv_clone CPerlObj::Perl_cv_clone +#define cv_clone Perl_cv_clone +#define Perl_cv_const_sv CPerlObj::Perl_cv_const_sv +#define cv_const_sv Perl_cv_const_sv +#define Perl_op_const_sv CPerlObj::Perl_op_const_sv +#define op_const_sv Perl_op_const_sv +#define Perl_cv_undef CPerlObj::Perl_cv_undef +#define cv_undef Perl_cv_undef +#define Perl_cx_dump CPerlObj::Perl_cx_dump +#define cx_dump Perl_cx_dump +#define Perl_filter_add CPerlObj::Perl_filter_add +#define filter_add Perl_filter_add +#define Perl_filter_del CPerlObj::Perl_filter_del +#define filter_del Perl_filter_del +#define Perl_filter_read CPerlObj::Perl_filter_read +#define filter_read Perl_filter_read +#define Perl_get_op_descs CPerlObj::Perl_get_op_descs +#define get_op_descs Perl_get_op_descs +#define Perl_get_op_names CPerlObj::Perl_get_op_names +#define get_op_names Perl_get_op_names +#define Perl_get_no_modify CPerlObj::Perl_get_no_modify +#define get_no_modify Perl_get_no_modify +#define Perl_get_opargs CPerlObj::Perl_get_opargs +#define get_opargs Perl_get_opargs +#define Perl_get_ppaddr CPerlObj::Perl_get_ppaddr +#define get_ppaddr Perl_get_ppaddr +#define Perl_cxinc CPerlObj::Perl_cxinc +#define cxinc Perl_cxinc +#define Perl_deb CPerlObj::Perl_deb +#define deb Perl_deb +#define Perl_vdeb CPerlObj::Perl_vdeb +#define vdeb Perl_vdeb +#define Perl_debprofdump CPerlObj::Perl_debprofdump +#define debprofdump Perl_debprofdump +#define Perl_debop CPerlObj::Perl_debop +#define debop Perl_debop +#define Perl_debstack CPerlObj::Perl_debstack +#define debstack Perl_debstack +#define Perl_debstackptrs CPerlObj::Perl_debstackptrs +#define debstackptrs Perl_debstackptrs +#define Perl_delimcpy CPerlObj::Perl_delimcpy +#define delimcpy Perl_delimcpy +#define Perl_deprecate CPerlObj::Perl_deprecate +#define deprecate Perl_deprecate +#define Perl_die CPerlObj::Perl_die +#define die Perl_die +#define Perl_vdie CPerlObj::Perl_vdie +#define vdie Perl_vdie +#define Perl_die_where CPerlObj::Perl_die_where +#define die_where Perl_die_where +#define Perl_dounwind CPerlObj::Perl_dounwind +#define dounwind Perl_dounwind +#define Perl_do_aexec CPerlObj::Perl_do_aexec +#define do_aexec Perl_do_aexec +#define Perl_do_aexec5 CPerlObj::Perl_do_aexec5 +#define do_aexec5 Perl_do_aexec5 +#define Perl_do_binmode CPerlObj::Perl_do_binmode +#define do_binmode Perl_do_binmode +#define Perl_do_chop CPerlObj::Perl_do_chop +#define do_chop Perl_do_chop +#define Perl_do_close CPerlObj::Perl_do_close +#define do_close Perl_do_close +#define Perl_do_eof CPerlObj::Perl_do_eof +#define do_eof Perl_do_eof +#define Perl_do_exec CPerlObj::Perl_do_exec +#define do_exec Perl_do_exec +#if !defined(WIN32) +#define Perl_do_exec3 CPerlObj::Perl_do_exec3 +#define do_exec3 Perl_do_exec3 +#endif +#define Perl_do_execfree CPerlObj::Perl_do_execfree +#define do_execfree Perl_do_execfree +#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) +#define Perl_do_ipcctl CPerlObj::Perl_do_ipcctl +#define do_ipcctl Perl_do_ipcctl +#define Perl_do_ipcget CPerlObj::Perl_do_ipcget +#define do_ipcget Perl_do_ipcget +#define Perl_do_msgrcv CPerlObj::Perl_do_msgrcv +#define do_msgrcv Perl_do_msgrcv +#define Perl_do_msgsnd CPerlObj::Perl_do_msgsnd +#define do_msgsnd Perl_do_msgsnd +#define Perl_do_semop CPerlObj::Perl_do_semop +#define do_semop Perl_do_semop +#define Perl_do_shmio CPerlObj::Perl_do_shmio +#define do_shmio Perl_do_shmio +#endif +#define Perl_do_join CPerlObj::Perl_do_join +#define do_join Perl_do_join +#define Perl_do_kv CPerlObj::Perl_do_kv +#define do_kv Perl_do_kv +#define Perl_do_open CPerlObj::Perl_do_open +#define do_open Perl_do_open +#define Perl_do_open9 CPerlObj::Perl_do_open9 +#define do_open9 Perl_do_open9 +#define Perl_do_pipe CPerlObj::Perl_do_pipe +#define do_pipe Perl_do_pipe +#define Perl_do_print CPerlObj::Perl_do_print +#define do_print Perl_do_print +#define Perl_do_readline CPerlObj::Perl_do_readline +#define do_readline Perl_do_readline +#define Perl_do_chomp CPerlObj::Perl_do_chomp +#define do_chomp Perl_do_chomp +#define Perl_do_seek CPerlObj::Perl_do_seek +#define do_seek Perl_do_seek +#define Perl_do_sprintf CPerlObj::Perl_do_sprintf +#define do_sprintf Perl_do_sprintf +#define Perl_do_sysseek CPerlObj::Perl_do_sysseek +#define do_sysseek Perl_do_sysseek +#define Perl_do_tell CPerlObj::Perl_do_tell +#define do_tell Perl_do_tell +#define Perl_do_trans CPerlObj::Perl_do_trans +#define do_trans Perl_do_trans +#define Perl_do_vecget CPerlObj::Perl_do_vecget +#define do_vecget Perl_do_vecget +#define Perl_do_vecset CPerlObj::Perl_do_vecset +#define do_vecset Perl_do_vecset +#define Perl_do_vop CPerlObj::Perl_do_vop +#define do_vop Perl_do_vop +#define Perl_dofile CPerlObj::Perl_dofile +#define dofile Perl_dofile +#define Perl_dowantarray CPerlObj::Perl_dowantarray +#define dowantarray Perl_dowantarray +#define Perl_dump_all CPerlObj::Perl_dump_all +#define dump_all Perl_dump_all +#define Perl_dump_eval CPerlObj::Perl_dump_eval +#define dump_eval Perl_dump_eval +#if defined(DUMP_FDS) +#define Perl_dump_fds CPerlObj::Perl_dump_fds +#define dump_fds Perl_dump_fds +#endif +#define Perl_dump_form CPerlObj::Perl_dump_form +#define dump_form Perl_dump_form +#define Perl_gv_dump CPerlObj::Perl_gv_dump +#define gv_dump Perl_gv_dump +#define Perl_op_dump CPerlObj::Perl_op_dump +#define op_dump Perl_op_dump +#define Perl_pmop_dump CPerlObj::Perl_pmop_dump +#define pmop_dump Perl_pmop_dump +#define Perl_dump_packsubs CPerlObj::Perl_dump_packsubs +#define dump_packsubs Perl_dump_packsubs +#define Perl_dump_sub CPerlObj::Perl_dump_sub +#define dump_sub Perl_dump_sub +#define Perl_fbm_compile CPerlObj::Perl_fbm_compile +#define fbm_compile Perl_fbm_compile +#define Perl_fbm_instr CPerlObj::Perl_fbm_instr +#define fbm_instr Perl_fbm_instr +#define Perl_find_script CPerlObj::Perl_find_script +#define find_script Perl_find_script +#if defined(USE_THREADS) +#define Perl_find_threadsv CPerlObj::Perl_find_threadsv +#define find_threadsv Perl_find_threadsv +#endif +#define Perl_force_list CPerlObj::Perl_force_list +#define force_list Perl_force_list +#define Perl_fold_constants CPerlObj::Perl_fold_constants +#define fold_constants Perl_fold_constants +#define Perl_form CPerlObj::Perl_form +#define form Perl_form +#define Perl_vform CPerlObj::Perl_vform +#define vform Perl_vform +#define Perl_free_tmps CPerlObj::Perl_free_tmps +#define free_tmps Perl_free_tmps +#define Perl_gen_constant_list CPerlObj::Perl_gen_constant_list +#define gen_constant_list Perl_gen_constant_list +#if !defined(HAS_GETENV_LEN) +#define Perl_getenv_len CPerlObj::Perl_getenv_len +#define getenv_len Perl_getenv_len +#endif +#define Perl_gp_free CPerlObj::Perl_gp_free +#define gp_free Perl_gp_free +#define Perl_gp_ref CPerlObj::Perl_gp_ref +#define gp_ref Perl_gp_ref +#define Perl_gv_AVadd CPerlObj::Perl_gv_AVadd +#define gv_AVadd Perl_gv_AVadd +#define Perl_gv_HVadd CPerlObj::Perl_gv_HVadd +#define gv_HVadd Perl_gv_HVadd +#define Perl_gv_IOadd CPerlObj::Perl_gv_IOadd +#define gv_IOadd Perl_gv_IOadd +#define Perl_gv_autoload4 CPerlObj::Perl_gv_autoload4 +#define gv_autoload4 Perl_gv_autoload4 +#define Perl_gv_check CPerlObj::Perl_gv_check +#define gv_check Perl_gv_check +#define Perl_gv_efullname CPerlObj::Perl_gv_efullname +#define gv_efullname Perl_gv_efullname +#define Perl_gv_efullname3 CPerlObj::Perl_gv_efullname3 +#define gv_efullname3 Perl_gv_efullname3 +#define Perl_gv_fetchfile CPerlObj::Perl_gv_fetchfile +#define gv_fetchfile Perl_gv_fetchfile +#define Perl_gv_fetchmeth CPerlObj::Perl_gv_fetchmeth +#define gv_fetchmeth Perl_gv_fetchmeth +#define Perl_gv_fetchmethod CPerlObj::Perl_gv_fetchmethod +#define gv_fetchmethod Perl_gv_fetchmethod +#define Perl_gv_fetchmethod_autoload CPerlObj::Perl_gv_fetchmethod_autoload +#define gv_fetchmethod_autoload Perl_gv_fetchmethod_autoload +#define Perl_gv_fetchpv CPerlObj::Perl_gv_fetchpv +#define gv_fetchpv Perl_gv_fetchpv +#define Perl_gv_fullname CPerlObj::Perl_gv_fullname +#define gv_fullname Perl_gv_fullname +#define Perl_gv_fullname3 CPerlObj::Perl_gv_fullname3 +#define gv_fullname3 Perl_gv_fullname3 +#define Perl_gv_init CPerlObj::Perl_gv_init +#define gv_init Perl_gv_init +#define Perl_gv_stashpv CPerlObj::Perl_gv_stashpv +#define gv_stashpv Perl_gv_stashpv +#define Perl_gv_stashpvn CPerlObj::Perl_gv_stashpvn +#define gv_stashpvn Perl_gv_stashpvn +#define Perl_gv_stashsv CPerlObj::Perl_gv_stashsv +#define gv_stashsv Perl_gv_stashsv +#define Perl_hv_clear CPerlObj::Perl_hv_clear +#define hv_clear Perl_hv_clear +#define Perl_hv_delayfree_ent CPerlObj::Perl_hv_delayfree_ent +#define hv_delayfree_ent Perl_hv_delayfree_ent +#define Perl_hv_delete CPerlObj::Perl_hv_delete +#define hv_delete Perl_hv_delete +#define Perl_hv_delete_ent CPerlObj::Perl_hv_delete_ent +#define hv_delete_ent Perl_hv_delete_ent +#define Perl_hv_exists CPerlObj::Perl_hv_exists +#define hv_exists Perl_hv_exists +#define Perl_hv_exists_ent CPerlObj::Perl_hv_exists_ent +#define hv_exists_ent Perl_hv_exists_ent +#define Perl_hv_fetch CPerlObj::Perl_hv_fetch +#define hv_fetch Perl_hv_fetch +#define Perl_hv_fetch_ent CPerlObj::Perl_hv_fetch_ent +#define hv_fetch_ent Perl_hv_fetch_ent +#define Perl_hv_free_ent CPerlObj::Perl_hv_free_ent +#define hv_free_ent Perl_hv_free_ent +#define Perl_hv_iterinit CPerlObj::Perl_hv_iterinit +#define hv_iterinit Perl_hv_iterinit +#define Perl_hv_iterkey CPerlObj::Perl_hv_iterkey +#define hv_iterkey Perl_hv_iterkey +#define Perl_hv_iterkeysv CPerlObj::Perl_hv_iterkeysv +#define hv_iterkeysv Perl_hv_iterkeysv +#define Perl_hv_iternext CPerlObj::Perl_hv_iternext +#define hv_iternext Perl_hv_iternext +#define Perl_hv_iternextsv CPerlObj::Perl_hv_iternextsv +#define hv_iternextsv Perl_hv_iternextsv +#define Perl_hv_iterval CPerlObj::Perl_hv_iterval +#define hv_iterval Perl_hv_iterval +#define Perl_hv_ksplit CPerlObj::Perl_hv_ksplit +#define hv_ksplit Perl_hv_ksplit +#define Perl_hv_magic CPerlObj::Perl_hv_magic +#define hv_magic Perl_hv_magic +#define Perl_hv_store CPerlObj::Perl_hv_store +#define hv_store Perl_hv_store +#define Perl_hv_store_ent CPerlObj::Perl_hv_store_ent +#define hv_store_ent Perl_hv_store_ent +#define Perl_hv_undef CPerlObj::Perl_hv_undef +#define hv_undef Perl_hv_undef +#define Perl_ibcmp CPerlObj::Perl_ibcmp +#define ibcmp Perl_ibcmp +#define Perl_ibcmp_locale CPerlObj::Perl_ibcmp_locale +#define ibcmp_locale Perl_ibcmp_locale +#define Perl_ingroup CPerlObj::Perl_ingroup +#define ingroup Perl_ingroup +#define Perl_init_debugger CPerlObj::Perl_init_debugger +#define init_debugger Perl_init_debugger +#define Perl_init_stacks CPerlObj::Perl_init_stacks +#define init_stacks Perl_init_stacks +#define Perl_intro_my CPerlObj::Perl_intro_my +#define intro_my Perl_intro_my +#define Perl_instr CPerlObj::Perl_instr +#define instr Perl_instr +#define Perl_io_close CPerlObj::Perl_io_close +#define io_close Perl_io_close +#define Perl_invert CPerlObj::Perl_invert +#define invert Perl_invert +#define Perl_is_uni_alnum CPerlObj::Perl_is_uni_alnum +#define is_uni_alnum Perl_is_uni_alnum +#define Perl_is_uni_alnumc CPerlObj::Perl_is_uni_alnumc +#define is_uni_alnumc Perl_is_uni_alnumc +#define Perl_is_uni_idfirst CPerlObj::Perl_is_uni_idfirst +#define is_uni_idfirst Perl_is_uni_idfirst +#define Perl_is_uni_alpha CPerlObj::Perl_is_uni_alpha +#define is_uni_alpha Perl_is_uni_alpha +#define Perl_is_uni_ascii CPerlObj::Perl_is_uni_ascii +#define is_uni_ascii Perl_is_uni_ascii +#define Perl_is_uni_space CPerlObj::Perl_is_uni_space +#define is_uni_space Perl_is_uni_space +#define Perl_is_uni_cntrl CPerlObj::Perl_is_uni_cntrl +#define is_uni_cntrl Perl_is_uni_cntrl +#define Perl_is_uni_graph CPerlObj::Perl_is_uni_graph +#define is_uni_graph Perl_is_uni_graph +#define Perl_is_uni_digit CPerlObj::Perl_is_uni_digit +#define is_uni_digit Perl_is_uni_digit +#define Perl_is_uni_upper CPerlObj::Perl_is_uni_upper +#define is_uni_upper Perl_is_uni_upper +#define Perl_is_uni_lower CPerlObj::Perl_is_uni_lower +#define is_uni_lower Perl_is_uni_lower +#define Perl_is_uni_print CPerlObj::Perl_is_uni_print +#define is_uni_print Perl_is_uni_print +#define Perl_is_uni_punct CPerlObj::Perl_is_uni_punct +#define is_uni_punct Perl_is_uni_punct +#define Perl_is_uni_xdigit CPerlObj::Perl_is_uni_xdigit +#define is_uni_xdigit Perl_is_uni_xdigit +#define Perl_to_uni_upper CPerlObj::Perl_to_uni_upper +#define to_uni_upper Perl_to_uni_upper +#define Perl_to_uni_title CPerlObj::Perl_to_uni_title +#define to_uni_title Perl_to_uni_title +#define Perl_to_uni_lower CPerlObj::Perl_to_uni_lower +#define to_uni_lower Perl_to_uni_lower +#define Perl_is_uni_alnum_lc CPerlObj::Perl_is_uni_alnum_lc +#define is_uni_alnum_lc Perl_is_uni_alnum_lc +#define Perl_is_uni_alnumc_lc CPerlObj::Perl_is_uni_alnumc_lc +#define is_uni_alnumc_lc Perl_is_uni_alnumc_lc +#define Perl_is_uni_idfirst_lc CPerlObj::Perl_is_uni_idfirst_lc +#define is_uni_idfirst_lc Perl_is_uni_idfirst_lc +#define Perl_is_uni_alpha_lc CPerlObj::Perl_is_uni_alpha_lc +#define is_uni_alpha_lc Perl_is_uni_alpha_lc +#define Perl_is_uni_ascii_lc CPerlObj::Perl_is_uni_ascii_lc +#define is_uni_ascii_lc Perl_is_uni_ascii_lc +#define Perl_is_uni_space_lc CPerlObj::Perl_is_uni_space_lc +#define is_uni_space_lc Perl_is_uni_space_lc +#define Perl_is_uni_cntrl_lc CPerlObj::Perl_is_uni_cntrl_lc +#define is_uni_cntrl_lc Perl_is_uni_cntrl_lc +#define Perl_is_uni_graph_lc CPerlObj::Perl_is_uni_graph_lc +#define is_uni_graph_lc Perl_is_uni_graph_lc +#define Perl_is_uni_digit_lc CPerlObj::Perl_is_uni_digit_lc +#define is_uni_digit_lc Perl_is_uni_digit_lc +#define Perl_is_uni_upper_lc CPerlObj::Perl_is_uni_upper_lc +#define is_uni_upper_lc Perl_is_uni_upper_lc +#define Perl_is_uni_lower_lc CPerlObj::Perl_is_uni_lower_lc +#define is_uni_lower_lc Perl_is_uni_lower_lc +#define Perl_is_uni_print_lc CPerlObj::Perl_is_uni_print_lc +#define is_uni_print_lc Perl_is_uni_print_lc +#define Perl_is_uni_punct_lc CPerlObj::Perl_is_uni_punct_lc +#define is_uni_punct_lc Perl_is_uni_punct_lc +#define Perl_is_uni_xdigit_lc CPerlObj::Perl_is_uni_xdigit_lc +#define is_uni_xdigit_lc Perl_is_uni_xdigit_lc +#define Perl_to_uni_upper_lc CPerlObj::Perl_to_uni_upper_lc +#define to_uni_upper_lc Perl_to_uni_upper_lc +#define Perl_to_uni_title_lc CPerlObj::Perl_to_uni_title_lc +#define to_uni_title_lc Perl_to_uni_title_lc +#define Perl_to_uni_lower_lc CPerlObj::Perl_to_uni_lower_lc +#define to_uni_lower_lc Perl_to_uni_lower_lc +#define Perl_is_utf8_char CPerlObj::Perl_is_utf8_char +#define is_utf8_char Perl_is_utf8_char +#define Perl_is_utf8_alnum CPerlObj::Perl_is_utf8_alnum +#define is_utf8_alnum Perl_is_utf8_alnum +#define Perl_is_utf8_alnumc CPerlObj::Perl_is_utf8_alnumc +#define is_utf8_alnumc Perl_is_utf8_alnumc +#define Perl_is_utf8_idfirst CPerlObj::Perl_is_utf8_idfirst +#define is_utf8_idfirst Perl_is_utf8_idfirst +#define Perl_is_utf8_alpha CPerlObj::Perl_is_utf8_alpha +#define is_utf8_alpha Perl_is_utf8_alpha +#define Perl_is_utf8_ascii CPerlObj::Perl_is_utf8_ascii +#define is_utf8_ascii Perl_is_utf8_ascii +#define Perl_is_utf8_space CPerlObj::Perl_is_utf8_space +#define is_utf8_space Perl_is_utf8_space +#define Perl_is_utf8_cntrl CPerlObj::Perl_is_utf8_cntrl +#define is_utf8_cntrl Perl_is_utf8_cntrl +#define Perl_is_utf8_digit CPerlObj::Perl_is_utf8_digit +#define is_utf8_digit Perl_is_utf8_digit +#define Perl_is_utf8_graph CPerlObj::Perl_is_utf8_graph +#define is_utf8_graph Perl_is_utf8_graph +#define Perl_is_utf8_upper CPerlObj::Perl_is_utf8_upper +#define is_utf8_upper Perl_is_utf8_upper +#define Perl_is_utf8_lower CPerlObj::Perl_is_utf8_lower +#define is_utf8_lower Perl_is_utf8_lower +#define Perl_is_utf8_print CPerlObj::Perl_is_utf8_print +#define is_utf8_print Perl_is_utf8_print +#define Perl_is_utf8_punct CPerlObj::Perl_is_utf8_punct +#define is_utf8_punct Perl_is_utf8_punct +#define Perl_is_utf8_xdigit CPerlObj::Perl_is_utf8_xdigit +#define is_utf8_xdigit Perl_is_utf8_xdigit +#define Perl_is_utf8_mark CPerlObj::Perl_is_utf8_mark +#define is_utf8_mark Perl_is_utf8_mark +#define Perl_jmaybe CPerlObj::Perl_jmaybe +#define jmaybe Perl_jmaybe +#define Perl_keyword CPerlObj::Perl_keyword +#define keyword Perl_keyword +#define Perl_leave_scope CPerlObj::Perl_leave_scope +#define leave_scope Perl_leave_scope +#define Perl_lex_end CPerlObj::Perl_lex_end +#define lex_end Perl_lex_end +#define Perl_lex_start CPerlObj::Perl_lex_start +#define lex_start Perl_lex_start +#define Perl_linklist CPerlObj::Perl_linklist +#define linklist Perl_linklist +#define Perl_list CPerlObj::Perl_list +#define list Perl_list +#define Perl_listkids CPerlObj::Perl_listkids +#define listkids Perl_listkids +#define Perl_load_module CPerlObj::Perl_load_module +#define load_module Perl_load_module +#define Perl_vload_module CPerlObj::Perl_vload_module +#define vload_module Perl_vload_module +#define Perl_localize CPerlObj::Perl_localize +#define localize Perl_localize +#define Perl_looks_like_number CPerlObj::Perl_looks_like_number +#define looks_like_number Perl_looks_like_number +#define Perl_magic_clearenv CPerlObj::Perl_magic_clearenv +#define magic_clearenv Perl_magic_clearenv +#define Perl_magic_clear_all_env CPerlObj::Perl_magic_clear_all_env +#define magic_clear_all_env Perl_magic_clear_all_env +#define Perl_magic_clearpack CPerlObj::Perl_magic_clearpack +#define magic_clearpack Perl_magic_clearpack +#define Perl_magic_clearsig CPerlObj::Perl_magic_clearsig +#define magic_clearsig Perl_magic_clearsig +#define Perl_magic_existspack CPerlObj::Perl_magic_existspack +#define magic_existspack Perl_magic_existspack +#define Perl_magic_freeregexp CPerlObj::Perl_magic_freeregexp +#define magic_freeregexp Perl_magic_freeregexp +#define Perl_magic_get CPerlObj::Perl_magic_get +#define magic_get Perl_magic_get +#define Perl_magic_getarylen CPerlObj::Perl_magic_getarylen +#define magic_getarylen Perl_magic_getarylen +#define Perl_magic_getdefelem CPerlObj::Perl_magic_getdefelem +#define magic_getdefelem Perl_magic_getdefelem +#define Perl_magic_getglob CPerlObj::Perl_magic_getglob +#define magic_getglob Perl_magic_getglob +#define Perl_magic_getnkeys CPerlObj::Perl_magic_getnkeys +#define magic_getnkeys Perl_magic_getnkeys +#define Perl_magic_getpack CPerlObj::Perl_magic_getpack +#define magic_getpack Perl_magic_getpack +#define Perl_magic_getpos CPerlObj::Perl_magic_getpos +#define magic_getpos Perl_magic_getpos +#define Perl_magic_getsig CPerlObj::Perl_magic_getsig +#define magic_getsig Perl_magic_getsig +#define Perl_magic_getsubstr CPerlObj::Perl_magic_getsubstr +#define magic_getsubstr Perl_magic_getsubstr +#define Perl_magic_gettaint CPerlObj::Perl_magic_gettaint +#define magic_gettaint Perl_magic_gettaint +#define Perl_magic_getuvar CPerlObj::Perl_magic_getuvar +#define magic_getuvar Perl_magic_getuvar +#define Perl_magic_getvec CPerlObj::Perl_magic_getvec +#define magic_getvec Perl_magic_getvec +#define Perl_magic_len CPerlObj::Perl_magic_len +#define magic_len Perl_magic_len +#if defined(USE_THREADS) +#define Perl_magic_mutexfree CPerlObj::Perl_magic_mutexfree +#define magic_mutexfree Perl_magic_mutexfree +#endif +#define Perl_magic_nextpack CPerlObj::Perl_magic_nextpack +#define magic_nextpack Perl_magic_nextpack +#define Perl_magic_regdata_cnt CPerlObj::Perl_magic_regdata_cnt +#define magic_regdata_cnt Perl_magic_regdata_cnt +#define Perl_magic_regdatum_get CPerlObj::Perl_magic_regdatum_get +#define magic_regdatum_get Perl_magic_regdatum_get +#define Perl_magic_set CPerlObj::Perl_magic_set +#define magic_set Perl_magic_set +#define Perl_magic_setamagic CPerlObj::Perl_magic_setamagic +#define magic_setamagic Perl_magic_setamagic +#define Perl_magic_setarylen CPerlObj::Perl_magic_setarylen +#define magic_setarylen Perl_magic_setarylen +#define Perl_magic_setbm CPerlObj::Perl_magic_setbm +#define magic_setbm Perl_magic_setbm +#define Perl_magic_setdbline CPerlObj::Perl_magic_setdbline +#define magic_setdbline Perl_magic_setdbline +#if defined(USE_LOCALE_COLLATE) +#define Perl_magic_setcollxfrm CPerlObj::Perl_magic_setcollxfrm +#define magic_setcollxfrm Perl_magic_setcollxfrm +#endif +#define Perl_magic_setdefelem CPerlObj::Perl_magic_setdefelem +#define magic_setdefelem Perl_magic_setdefelem +#define Perl_magic_setenv CPerlObj::Perl_magic_setenv +#define magic_setenv Perl_magic_setenv +#define Perl_magic_setfm CPerlObj::Perl_magic_setfm +#define magic_setfm Perl_magic_setfm +#define Perl_magic_setisa CPerlObj::Perl_magic_setisa +#define magic_setisa Perl_magic_setisa +#define Perl_magic_setglob CPerlObj::Perl_magic_setglob +#define magic_setglob Perl_magic_setglob +#define Perl_magic_setmglob CPerlObj::Perl_magic_setmglob +#define magic_setmglob Perl_magic_setmglob +#define Perl_magic_setnkeys CPerlObj::Perl_magic_setnkeys +#define magic_setnkeys Perl_magic_setnkeys +#define Perl_magic_setpack CPerlObj::Perl_magic_setpack +#define magic_setpack Perl_magic_setpack +#define Perl_magic_setpos CPerlObj::Perl_magic_setpos +#define magic_setpos Perl_magic_setpos +#define Perl_magic_setsig CPerlObj::Perl_magic_setsig +#define magic_setsig Perl_magic_setsig +#define Perl_magic_setsubstr CPerlObj::Perl_magic_setsubstr +#define magic_setsubstr Perl_magic_setsubstr +#define Perl_magic_settaint CPerlObj::Perl_magic_settaint +#define magic_settaint Perl_magic_settaint +#define Perl_magic_setuvar CPerlObj::Perl_magic_setuvar +#define magic_setuvar Perl_magic_setuvar +#define Perl_magic_setvec CPerlObj::Perl_magic_setvec +#define magic_setvec Perl_magic_setvec +#define Perl_magic_set_all_env CPerlObj::Perl_magic_set_all_env +#define magic_set_all_env Perl_magic_set_all_env +#define Perl_magic_sizepack CPerlObj::Perl_magic_sizepack +#define magic_sizepack Perl_magic_sizepack +#define Perl_magic_wipepack CPerlObj::Perl_magic_wipepack +#define magic_wipepack Perl_magic_wipepack +#define Perl_magicname CPerlObj::Perl_magicname +#define magicname Perl_magicname +#define Perl_markstack_grow CPerlObj::Perl_markstack_grow +#define markstack_grow Perl_markstack_grow +#if defined(USE_LOCALE_COLLATE) +#define Perl_mem_collxfrm CPerlObj::Perl_mem_collxfrm +#define mem_collxfrm Perl_mem_collxfrm +#endif +#define Perl_mess CPerlObj::Perl_mess +#define mess Perl_mess +#define Perl_vmess CPerlObj::Perl_vmess +#define vmess Perl_vmess +#define Perl_qerror CPerlObj::Perl_qerror +#define qerror Perl_qerror +#define Perl_mg_clear CPerlObj::Perl_mg_clear +#define mg_clear Perl_mg_clear +#define Perl_mg_copy CPerlObj::Perl_mg_copy +#define mg_copy Perl_mg_copy +#define Perl_mg_find CPerlObj::Perl_mg_find +#define mg_find Perl_mg_find +#define Perl_mg_free CPerlObj::Perl_mg_free +#define mg_free Perl_mg_free +#define Perl_mg_get CPerlObj::Perl_mg_get +#define mg_get Perl_mg_get +#define Perl_mg_length CPerlObj::Perl_mg_length +#define mg_length Perl_mg_length +#define Perl_mg_magical CPerlObj::Perl_mg_magical +#define mg_magical Perl_mg_magical +#define Perl_mg_set CPerlObj::Perl_mg_set +#define mg_set Perl_mg_set +#define Perl_mg_size CPerlObj::Perl_mg_size +#define mg_size Perl_mg_size +#define Perl_mod CPerlObj::Perl_mod +#define mod Perl_mod +#define Perl_mode_from_discipline CPerlObj::Perl_mode_from_discipline +#define mode_from_discipline Perl_mode_from_discipline +#define Perl_moreswitches CPerlObj::Perl_moreswitches +#define moreswitches Perl_moreswitches +#define Perl_my CPerlObj::Perl_my +#define my Perl_my +#define Perl_my_atof CPerlObj::Perl_my_atof +#define my_atof Perl_my_atof +#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY) +#define Perl_my_bcopy CPerlObj::Perl_my_bcopy +#define my_bcopy Perl_my_bcopy +#endif +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) +#define Perl_my_bzero CPerlObj::Perl_my_bzero +#define my_bzero Perl_my_bzero +#endif +#define Perl_my_exit CPerlObj::Perl_my_exit +#define my_exit Perl_my_exit +#define Perl_my_failure_exit CPerlObj::Perl_my_failure_exit +#define my_failure_exit Perl_my_failure_exit +#define Perl_my_fflush_all CPerlObj::Perl_my_fflush_all +#define my_fflush_all Perl_my_fflush_all +#define Perl_my_lstat CPerlObj::Perl_my_lstat +#define my_lstat Perl_my_lstat +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) +#define Perl_my_memcmp CPerlObj::Perl_my_memcmp +#define my_memcmp Perl_my_memcmp +#endif +#if !defined(HAS_MEMSET) +#define Perl_my_memset CPerlObj::Perl_my_memset +#define my_memset Perl_my_memset +#endif +#if !defined(PERL_OBJECT) +#define Perl_my_pclose CPerlObj::Perl_my_pclose +#define my_pclose Perl_my_pclose +#define Perl_my_popen CPerlObj::Perl_my_popen +#define my_popen Perl_my_popen +#endif +#define Perl_my_setenv CPerlObj::Perl_my_setenv +#define my_setenv Perl_my_setenv +#define Perl_my_stat CPerlObj::Perl_my_stat +#define my_stat Perl_my_stat +#if defined(MYSWAP) +#define Perl_my_swap CPerlObj::Perl_my_swap +#define my_swap Perl_my_swap +#define Perl_my_htonl CPerlObj::Perl_my_htonl +#define my_htonl Perl_my_htonl +#define Perl_my_ntohl CPerlObj::Perl_my_ntohl +#define my_ntohl Perl_my_ntohl +#endif +#define Perl_my_unexec CPerlObj::Perl_my_unexec +#define my_unexec Perl_my_unexec +#define Perl_newANONLIST CPerlObj::Perl_newANONLIST +#define newANONLIST Perl_newANONLIST +#define Perl_newANONHASH CPerlObj::Perl_newANONHASH +#define newANONHASH Perl_newANONHASH +#define Perl_newANONSUB CPerlObj::Perl_newANONSUB +#define newANONSUB Perl_newANONSUB +#define Perl_newASSIGNOP CPerlObj::Perl_newASSIGNOP +#define newASSIGNOP Perl_newASSIGNOP +#define Perl_newCONDOP CPerlObj::Perl_newCONDOP +#define newCONDOP Perl_newCONDOP +#define Perl_newCONSTSUB CPerlObj::Perl_newCONSTSUB +#define newCONSTSUB Perl_newCONSTSUB +#define Perl_newFORM CPerlObj::Perl_newFORM +#define newFORM Perl_newFORM +#define Perl_newFOROP CPerlObj::Perl_newFOROP +#define newFOROP Perl_newFOROP +#define Perl_newLOGOP CPerlObj::Perl_newLOGOP +#define newLOGOP Perl_newLOGOP +#define Perl_newLOOPEX CPerlObj::Perl_newLOOPEX +#define newLOOPEX Perl_newLOOPEX +#define Perl_newLOOPOP CPerlObj::Perl_newLOOPOP +#define newLOOPOP Perl_newLOOPOP +#define Perl_newNULLLIST CPerlObj::Perl_newNULLLIST +#define newNULLLIST Perl_newNULLLIST +#define Perl_newOP CPerlObj::Perl_newOP +#define newOP Perl_newOP +#define Perl_newPROG CPerlObj::Perl_newPROG +#define newPROG Perl_newPROG +#define Perl_newRANGE CPerlObj::Perl_newRANGE +#define newRANGE Perl_newRANGE +#define Perl_newSLICEOP CPerlObj::Perl_newSLICEOP +#define newSLICEOP Perl_newSLICEOP +#define Perl_newSTATEOP CPerlObj::Perl_newSTATEOP +#define newSTATEOP Perl_newSTATEOP +#define Perl_newSUB CPerlObj::Perl_newSUB +#define newSUB Perl_newSUB +#define Perl_newXS CPerlObj::Perl_newXS +#define newXS Perl_newXS +#define Perl_newAV CPerlObj::Perl_newAV +#define newAV Perl_newAV +#define Perl_newAVREF CPerlObj::Perl_newAVREF +#define newAVREF Perl_newAVREF +#define Perl_newBINOP CPerlObj::Perl_newBINOP +#define newBINOP Perl_newBINOP +#define Perl_newCVREF CPerlObj::Perl_newCVREF +#define newCVREF Perl_newCVREF +#define Perl_newGVOP CPerlObj::Perl_newGVOP +#define newGVOP Perl_newGVOP +#define Perl_newGVgen CPerlObj::Perl_newGVgen +#define newGVgen Perl_newGVgen +#define Perl_newGVREF CPerlObj::Perl_newGVREF +#define newGVREF Perl_newGVREF +#define Perl_newHVREF CPerlObj::Perl_newHVREF +#define newHVREF Perl_newHVREF +#define Perl_newHV CPerlObj::Perl_newHV +#define newHV Perl_newHV +#define Perl_newHVhv CPerlObj::Perl_newHVhv +#define newHVhv Perl_newHVhv +#define Perl_newIO CPerlObj::Perl_newIO +#define newIO Perl_newIO +#define Perl_newLISTOP CPerlObj::Perl_newLISTOP +#define newLISTOP Perl_newLISTOP +#define Perl_newPADOP CPerlObj::Perl_newPADOP +#define newPADOP Perl_newPADOP +#define Perl_newPMOP CPerlObj::Perl_newPMOP +#define newPMOP Perl_newPMOP +#define Perl_newPVOP CPerlObj::Perl_newPVOP +#define newPVOP Perl_newPVOP +#define Perl_newRV CPerlObj::Perl_newRV +#define newRV Perl_newRV +#define Perl_newRV_noinc CPerlObj::Perl_newRV_noinc +#define newRV_noinc Perl_newRV_noinc +#define Perl_newSV CPerlObj::Perl_newSV +#define newSV Perl_newSV +#define Perl_newSVREF CPerlObj::Perl_newSVREF +#define newSVREF Perl_newSVREF +#define Perl_newSVOP CPerlObj::Perl_newSVOP +#define newSVOP Perl_newSVOP +#define Perl_newSViv CPerlObj::Perl_newSViv +#define newSViv Perl_newSViv +#define Perl_newSVuv CPerlObj::Perl_newSVuv +#define newSVuv Perl_newSVuv +#define Perl_newSVnv CPerlObj::Perl_newSVnv +#define newSVnv Perl_newSVnv +#define Perl_newSVpv CPerlObj::Perl_newSVpv +#define newSVpv Perl_newSVpv +#define Perl_newSVpvn CPerlObj::Perl_newSVpvn +#define newSVpvn Perl_newSVpvn +#define Perl_newSVpvf CPerlObj::Perl_newSVpvf +#define newSVpvf Perl_newSVpvf +#define Perl_vnewSVpvf CPerlObj::Perl_vnewSVpvf +#define vnewSVpvf Perl_vnewSVpvf +#define Perl_newSVrv CPerlObj::Perl_newSVrv +#define newSVrv Perl_newSVrv +#define Perl_newSVsv CPerlObj::Perl_newSVsv +#define newSVsv Perl_newSVsv +#define Perl_newUNOP CPerlObj::Perl_newUNOP +#define newUNOP Perl_newUNOP +#define Perl_newWHILEOP CPerlObj::Perl_newWHILEOP +#define newWHILEOP Perl_newWHILEOP +#define Perl_new_stackinfo CPerlObj::Perl_new_stackinfo +#define new_stackinfo Perl_new_stackinfo +#define Perl_nextargv CPerlObj::Perl_nextargv +#define nextargv Perl_nextargv +#define Perl_ninstr CPerlObj::Perl_ninstr +#define ninstr Perl_ninstr +#define Perl_oopsCV CPerlObj::Perl_oopsCV +#define oopsCV Perl_oopsCV +#define Perl_op_free CPerlObj::Perl_op_free +#define op_free Perl_op_free +#define Perl_package CPerlObj::Perl_package +#define package Perl_package +#define Perl_pad_alloc CPerlObj::Perl_pad_alloc +#define pad_alloc Perl_pad_alloc +#define Perl_pad_allocmy CPerlObj::Perl_pad_allocmy +#define pad_allocmy Perl_pad_allocmy +#define Perl_pad_findmy CPerlObj::Perl_pad_findmy +#define pad_findmy Perl_pad_findmy +#define Perl_oopsAV CPerlObj::Perl_oopsAV +#define oopsAV Perl_oopsAV +#define Perl_oopsHV CPerlObj::Perl_oopsHV +#define oopsHV Perl_oopsHV +#define Perl_pad_leavemy CPerlObj::Perl_pad_leavemy +#define pad_leavemy Perl_pad_leavemy +#define Perl_pad_sv CPerlObj::Perl_pad_sv +#define pad_sv Perl_pad_sv +#define Perl_pad_free CPerlObj::Perl_pad_free +#define pad_free Perl_pad_free +#define Perl_pad_reset CPerlObj::Perl_pad_reset +#define pad_reset Perl_pad_reset +#define Perl_pad_swipe CPerlObj::Perl_pad_swipe +#define pad_swipe Perl_pad_swipe +#define Perl_peep CPerlObj::Perl_peep +#define peep Perl_peep +#if defined(PERL_OBJECT) +#define Perl_construct CPerlObj::Perl_construct +#define Perl_destruct CPerlObj::Perl_destruct +#define Perl_free CPerlObj::Perl_free +#define Perl_run CPerlObj::Perl_run +#define Perl_parse CPerlObj::Perl_parse +#endif +#if defined(USE_THREADS) +#define Perl_new_struct_thread CPerlObj::Perl_new_struct_thread +#define new_struct_thread Perl_new_struct_thread +#endif +#define Perl_call_atexit CPerlObj::Perl_call_atexit +#define call_atexit Perl_call_atexit +#define Perl_call_argv CPerlObj::Perl_call_argv +#define call_argv Perl_call_argv +#define Perl_call_method CPerlObj::Perl_call_method +#define call_method Perl_call_method +#define Perl_call_pv CPerlObj::Perl_call_pv +#define call_pv Perl_call_pv +#define Perl_call_sv CPerlObj::Perl_call_sv +#define call_sv Perl_call_sv +#define Perl_eval_pv CPerlObj::Perl_eval_pv +#define eval_pv Perl_eval_pv +#define Perl_eval_sv CPerlObj::Perl_eval_sv +#define eval_sv Perl_eval_sv +#define Perl_get_sv CPerlObj::Perl_get_sv +#define get_sv Perl_get_sv +#define Perl_get_av CPerlObj::Perl_get_av +#define get_av Perl_get_av +#define Perl_get_hv CPerlObj::Perl_get_hv +#define get_hv Perl_get_hv +#define Perl_get_cv CPerlObj::Perl_get_cv +#define get_cv Perl_get_cv +#define Perl_init_i18nl10n CPerlObj::Perl_init_i18nl10n +#define init_i18nl10n Perl_init_i18nl10n +#define Perl_init_i18nl14n CPerlObj::Perl_init_i18nl14n +#define init_i18nl14n Perl_init_i18nl14n +#define Perl_new_collate CPerlObj::Perl_new_collate +#define new_collate Perl_new_collate +#define Perl_new_ctype CPerlObj::Perl_new_ctype +#define new_ctype Perl_new_ctype +#define Perl_new_numeric CPerlObj::Perl_new_numeric +#define new_numeric Perl_new_numeric +#define Perl_set_numeric_local CPerlObj::Perl_set_numeric_local +#define set_numeric_local Perl_set_numeric_local +#define Perl_set_numeric_radix CPerlObj::Perl_set_numeric_radix +#define set_numeric_radix Perl_set_numeric_radix +#define Perl_set_numeric_standard CPerlObj::Perl_set_numeric_standard +#define set_numeric_standard Perl_set_numeric_standard +#define Perl_require_pv CPerlObj::Perl_require_pv +#define require_pv Perl_require_pv +#define Perl_pidgone CPerlObj::Perl_pidgone +#define pidgone Perl_pidgone +#define Perl_pmflag CPerlObj::Perl_pmflag +#define pmflag Perl_pmflag +#define Perl_pmruntime CPerlObj::Perl_pmruntime +#define pmruntime Perl_pmruntime +#define Perl_pmtrans CPerlObj::Perl_pmtrans +#define pmtrans Perl_pmtrans +#define Perl_pop_return CPerlObj::Perl_pop_return +#define pop_return Perl_pop_return +#define Perl_pop_scope CPerlObj::Perl_pop_scope +#define pop_scope Perl_pop_scope +#define Perl_prepend_elem CPerlObj::Perl_prepend_elem +#define prepend_elem Perl_prepend_elem +#define Perl_push_return CPerlObj::Perl_push_return +#define push_return Perl_push_return +#define Perl_push_scope CPerlObj::Perl_push_scope +#define push_scope Perl_push_scope +#define Perl_ref CPerlObj::Perl_ref +#define ref Perl_ref +#define Perl_refkids CPerlObj::Perl_refkids +#define refkids Perl_refkids +#define Perl_regdump CPerlObj::Perl_regdump +#define regdump Perl_regdump +#define Perl_pregexec CPerlObj::Perl_pregexec +#define pregexec Perl_pregexec +#define Perl_pregfree CPerlObj::Perl_pregfree +#define pregfree Perl_pregfree +#define Perl_pregcomp CPerlObj::Perl_pregcomp +#define pregcomp Perl_pregcomp +#define Perl_re_intuit_start CPerlObj::Perl_re_intuit_start +#define re_intuit_start Perl_re_intuit_start +#define Perl_re_intuit_string CPerlObj::Perl_re_intuit_string +#define re_intuit_string Perl_re_intuit_string +#define Perl_regexec_flags CPerlObj::Perl_regexec_flags +#define regexec_flags Perl_regexec_flags +#define Perl_regnext CPerlObj::Perl_regnext +#define regnext Perl_regnext +#define Perl_regprop CPerlObj::Perl_regprop +#define regprop Perl_regprop +#define Perl_repeatcpy CPerlObj::Perl_repeatcpy +#define repeatcpy Perl_repeatcpy +#define Perl_rninstr CPerlObj::Perl_rninstr +#define rninstr Perl_rninstr +#define Perl_rsignal CPerlObj::Perl_rsignal +#define rsignal Perl_rsignal +#define Perl_rsignal_restore CPerlObj::Perl_rsignal_restore +#define rsignal_restore Perl_rsignal_restore +#define Perl_rsignal_save CPerlObj::Perl_rsignal_save +#define rsignal_save Perl_rsignal_save +#define Perl_rsignal_state CPerlObj::Perl_rsignal_state +#define rsignal_state Perl_rsignal_state +#define Perl_rxres_free CPerlObj::Perl_rxres_free +#define rxres_free Perl_rxres_free +#define Perl_rxres_restore CPerlObj::Perl_rxres_restore +#define rxres_restore Perl_rxres_restore +#define Perl_rxres_save CPerlObj::Perl_rxres_save +#define rxres_save Perl_rxres_save +#if !defined(HAS_RENAME) +#define Perl_same_dirent CPerlObj::Perl_same_dirent +#define same_dirent Perl_same_dirent +#endif +#define Perl_savepv CPerlObj::Perl_savepv +#define savepv Perl_savepv +#define Perl_savepvn CPerlObj::Perl_savepvn +#define savepvn Perl_savepvn +#define Perl_savestack_grow CPerlObj::Perl_savestack_grow +#define savestack_grow Perl_savestack_grow +#define Perl_save_aelem CPerlObj::Perl_save_aelem +#define save_aelem Perl_save_aelem +#define Perl_save_alloc CPerlObj::Perl_save_alloc +#define save_alloc Perl_save_alloc +#define Perl_save_aptr CPerlObj::Perl_save_aptr +#define save_aptr Perl_save_aptr +#define Perl_save_ary CPerlObj::Perl_save_ary +#define save_ary Perl_save_ary +#define Perl_save_clearsv CPerlObj::Perl_save_clearsv +#define save_clearsv Perl_save_clearsv +#define Perl_save_delete CPerlObj::Perl_save_delete +#define save_delete Perl_save_delete +#define Perl_save_destructor CPerlObj::Perl_save_destructor +#define save_destructor Perl_save_destructor +#define Perl_save_destructor_x CPerlObj::Perl_save_destructor_x +#define save_destructor_x Perl_save_destructor_x +#define Perl_save_freesv CPerlObj::Perl_save_freesv +#define save_freesv Perl_save_freesv +#define Perl_save_freeop CPerlObj::Perl_save_freeop +#define save_freeop Perl_save_freeop +#define Perl_save_freepv CPerlObj::Perl_save_freepv +#define save_freepv Perl_save_freepv +#define Perl_save_generic_svref CPerlObj::Perl_save_generic_svref +#define save_generic_svref Perl_save_generic_svref +#define Perl_save_gp CPerlObj::Perl_save_gp +#define save_gp Perl_save_gp +#define Perl_save_hash CPerlObj::Perl_save_hash +#define save_hash Perl_save_hash +#define Perl_save_helem CPerlObj::Perl_save_helem +#define save_helem Perl_save_helem +#define Perl_save_hints CPerlObj::Perl_save_hints +#define save_hints Perl_save_hints +#define Perl_save_hptr CPerlObj::Perl_save_hptr +#define save_hptr Perl_save_hptr +#define Perl_save_I16 CPerlObj::Perl_save_I16 +#define save_I16 Perl_save_I16 +#define Perl_save_I32 CPerlObj::Perl_save_I32 +#define save_I32 Perl_save_I32 +#define Perl_save_I8 CPerlObj::Perl_save_I8 +#define save_I8 Perl_save_I8 +#define Perl_save_int CPerlObj::Perl_save_int +#define save_int Perl_save_int +#define Perl_save_item CPerlObj::Perl_save_item +#define save_item Perl_save_item +#define Perl_save_iv CPerlObj::Perl_save_iv +#define save_iv Perl_save_iv +#define Perl_save_list CPerlObj::Perl_save_list +#define save_list Perl_save_list +#define Perl_save_long CPerlObj::Perl_save_long +#define save_long Perl_save_long +#define Perl_save_nogv CPerlObj::Perl_save_nogv +#define save_nogv Perl_save_nogv +#define Perl_save_op CPerlObj::Perl_save_op +#define save_op Perl_save_op +#define Perl_save_scalar CPerlObj::Perl_save_scalar +#define save_scalar Perl_save_scalar +#define Perl_save_pptr CPerlObj::Perl_save_pptr +#define save_pptr Perl_save_pptr +#define Perl_save_vptr CPerlObj::Perl_save_vptr +#define save_vptr Perl_save_vptr +#define Perl_save_re_context CPerlObj::Perl_save_re_context +#define save_re_context Perl_save_re_context +#define Perl_save_sptr CPerlObj::Perl_save_sptr +#define save_sptr Perl_save_sptr +#define Perl_save_svref CPerlObj::Perl_save_svref +#define save_svref Perl_save_svref +#define Perl_save_threadsv CPerlObj::Perl_save_threadsv +#define save_threadsv Perl_save_threadsv +#define Perl_sawparens CPerlObj::Perl_sawparens +#define sawparens Perl_sawparens +#define Perl_scalar CPerlObj::Perl_scalar +#define scalar Perl_scalar +#define Perl_scalarkids CPerlObj::Perl_scalarkids +#define scalarkids Perl_scalarkids +#define Perl_scalarseq CPerlObj::Perl_scalarseq +#define scalarseq Perl_scalarseq +#define Perl_scalarvoid CPerlObj::Perl_scalarvoid +#define scalarvoid Perl_scalarvoid +#define Perl_scan_bin CPerlObj::Perl_scan_bin +#define scan_bin Perl_scan_bin +#define Perl_scan_hex CPerlObj::Perl_scan_hex +#define scan_hex Perl_scan_hex +#define Perl_scan_num CPerlObj::Perl_scan_num +#define scan_num Perl_scan_num +#define Perl_scan_oct CPerlObj::Perl_scan_oct +#define scan_oct Perl_scan_oct +#define Perl_scope CPerlObj::Perl_scope +#define scope Perl_scope +#define Perl_screaminstr CPerlObj::Perl_screaminstr +#define screaminstr Perl_screaminstr +#if !defined(VMS) +#define Perl_setenv_getix CPerlObj::Perl_setenv_getix +#define setenv_getix Perl_setenv_getix +#endif +#define Perl_setdefout CPerlObj::Perl_setdefout +#define setdefout Perl_setdefout +#define Perl_sharepvn CPerlObj::Perl_sharepvn +#define sharepvn Perl_sharepvn +#define Perl_share_hek CPerlObj::Perl_share_hek +#define share_hek Perl_share_hek +#define Perl_sighandler CPerlObj::Perl_sighandler +#define sighandler Perl_sighandler +#define Perl_stack_grow CPerlObj::Perl_stack_grow #define stack_grow Perl_stack_grow +#define Perl_start_subparse CPerlObj::Perl_start_subparse #define start_subparse Perl_start_subparse -#define string_amg Perl_string_amg +#define Perl_sub_crush_depth CPerlObj::Perl_sub_crush_depth #define sub_crush_depth Perl_sub_crush_depth -#define subtr_amg Perl_subtr_amg -#define subtr_ass_amg Perl_subtr_ass_amg +#define Perl_sv_2bool CPerlObj::Perl_sv_2bool #define sv_2bool Perl_sv_2bool +#define Perl_sv_2cv CPerlObj::Perl_sv_2cv #define sv_2cv Perl_sv_2cv +#define Perl_sv_2io CPerlObj::Perl_sv_2io #define sv_2io Perl_sv_2io +#define Perl_sv_2iv CPerlObj::Perl_sv_2iv #define sv_2iv Perl_sv_2iv +#define Perl_sv_2mortal CPerlObj::Perl_sv_2mortal #define sv_2mortal Perl_sv_2mortal +#define Perl_sv_2nv CPerlObj::Perl_sv_2nv #define sv_2nv Perl_sv_2nv +#define Perl_sv_2pv CPerlObj::Perl_sv_2pv #define sv_2pv Perl_sv_2pv +#define Perl_sv_2pvutf8 CPerlObj::Perl_sv_2pvutf8 +#define sv_2pvutf8 Perl_sv_2pvutf8 +#define Perl_sv_2pvbyte CPerlObj::Perl_sv_2pvbyte +#define sv_2pvbyte Perl_sv_2pvbyte +#define Perl_sv_2uv CPerlObj::Perl_sv_2uv #define sv_2uv Perl_sv_2uv -#define sv_add_arena Perl_sv_add_arena -#define sv_backoff Perl_sv_backoff -#define sv_bless Perl_sv_bless -#define sv_catpv Perl_sv_catpv -#define sv_catpv_mg Perl_sv_catpv_mg -#define sv_catpvf Perl_sv_catpvf -#define sv_catpvf_mg Perl_sv_catpvf_mg -#define sv_catpvn Perl_sv_catpvn -#define sv_catpvn_mg Perl_sv_catpvn_mg -#define sv_catsv Perl_sv_catsv -#define sv_catsv_mg Perl_sv_catsv_mg -#define sv_chop Perl_sv_chop -#define sv_clean_all Perl_sv_clean_all -#define sv_clean_objs Perl_sv_clean_objs -#define sv_clear Perl_sv_clear -#define sv_cmp Perl_sv_cmp -#define sv_cmp_locale Perl_sv_cmp_locale -#define sv_collxfrm Perl_sv_collxfrm -#define sv_compile_2op Perl_sv_compile_2op -#define sv_dec Perl_sv_dec -#define sv_derived_from Perl_sv_derived_from -#define sv_dump Perl_sv_dump -#define sv_eq Perl_sv_eq -#define sv_free Perl_sv_free -#define sv_free_arenas Perl_sv_free_arenas -#define sv_gets Perl_sv_gets -#define sv_grow Perl_sv_grow -#define sv_inc Perl_sv_inc -#define sv_insert Perl_sv_insert -#define sv_isa Perl_sv_isa -#define sv_isobject Perl_sv_isobject +#define Perl_sv_iv CPerlObj::Perl_sv_iv #define sv_iv Perl_sv_iv -#define sv_len Perl_sv_len -#define sv_magic Perl_sv_magic -#define sv_mortalcopy Perl_sv_mortalcopy -#define sv_newmortal Perl_sv_newmortal -#define sv_newref Perl_sv_newref -#define sv_nv Perl_sv_nv -#define sv_peek Perl_sv_peek -#define sv_pvn Perl_sv_pvn -#define sv_pvn_force Perl_sv_pvn_force -#define sv_ref Perl_sv_ref -#define sv_reftype Perl_sv_reftype -#define sv_replace Perl_sv_replace -#define sv_report_used Perl_sv_report_used -#define sv_reset Perl_sv_reset -#define sv_setiv Perl_sv_setiv -#define sv_setiv_mg Perl_sv_setiv_mg -#define sv_setnv Perl_sv_setnv -#define sv_setnv_mg Perl_sv_setnv_mg -#define sv_setptrobj Perl_sv_setptrobj -#define sv_setpv Perl_sv_setpv -#define sv_setpv_mg Perl_sv_setpv_mg -#define sv_setpvf Perl_sv_setpvf -#define sv_setpvf_mg Perl_sv_setpvf_mg -#define sv_setpviv Perl_sv_setpviv -#define sv_setpviv_mg Perl_sv_setpviv_mg -#define sv_setpvn Perl_sv_setpvn -#define sv_setpvn_mg Perl_sv_setpvn_mg -#define sv_setref_iv Perl_sv_setref_iv -#define sv_setref_nv Perl_sv_setref_nv -#define sv_setref_pv Perl_sv_setref_pv -#define sv_setref_pvn Perl_sv_setref_pvn -#define sv_setsv Perl_sv_setsv -#define sv_setsv_mg Perl_sv_setsv_mg -#define sv_setuv Perl_sv_setuv -#define sv_setuv_mg Perl_sv_setuv_mg -#define sv_taint Perl_sv_taint -#define sv_tainted Perl_sv_tainted -#define sv_true Perl_sv_true -#define sv_unmagic Perl_sv_unmagic -#define sv_unref Perl_sv_unref -#define sv_untaint Perl_sv_untaint -#define sv_upgrade Perl_sv_upgrade -#define sv_usepvn Perl_sv_usepvn -#define sv_usepvn_mg Perl_sv_usepvn_mg +#define Perl_sv_uv CPerlObj::Perl_sv_uv #define sv_uv Perl_sv_uv +#define Perl_sv_nv CPerlObj::Perl_sv_nv +#define sv_nv Perl_sv_nv +#define Perl_sv_pvn CPerlObj::Perl_sv_pvn +#define sv_pvn Perl_sv_pvn +#define Perl_sv_pvutf8n CPerlObj::Perl_sv_pvutf8n +#define sv_pvutf8n Perl_sv_pvutf8n +#define Perl_sv_pvbyten CPerlObj::Perl_sv_pvbyten +#define sv_pvbyten Perl_sv_pvbyten +#define Perl_sv_true CPerlObj::Perl_sv_true +#define sv_true Perl_sv_true +#define Perl_sv_add_arena CPerlObj::Perl_sv_add_arena +#define sv_add_arena Perl_sv_add_arena +#define Perl_sv_backoff CPerlObj::Perl_sv_backoff +#define sv_backoff Perl_sv_backoff +#define Perl_sv_bless CPerlObj::Perl_sv_bless +#define sv_bless Perl_sv_bless +#define Perl_sv_catpvf CPerlObj::Perl_sv_catpvf +#define sv_catpvf Perl_sv_catpvf +#define Perl_sv_vcatpvf CPerlObj::Perl_sv_vcatpvf +#define sv_vcatpvf Perl_sv_vcatpvf +#define Perl_sv_catpv CPerlObj::Perl_sv_catpv +#define sv_catpv Perl_sv_catpv +#define Perl_sv_catpvn CPerlObj::Perl_sv_catpvn +#define sv_catpvn Perl_sv_catpvn +#define Perl_sv_catsv CPerlObj::Perl_sv_catsv +#define sv_catsv Perl_sv_catsv +#define Perl_sv_chop CPerlObj::Perl_sv_chop +#define sv_chop Perl_sv_chop +#define Perl_sv_clean_all CPerlObj::Perl_sv_clean_all +#define sv_clean_all Perl_sv_clean_all +#define Perl_sv_clean_objs CPerlObj::Perl_sv_clean_objs +#define sv_clean_objs Perl_sv_clean_objs +#define Perl_sv_clear CPerlObj::Perl_sv_clear +#define sv_clear Perl_sv_clear +#define Perl_sv_cmp CPerlObj::Perl_sv_cmp +#define sv_cmp Perl_sv_cmp +#define Perl_sv_cmp_locale CPerlObj::Perl_sv_cmp_locale +#define sv_cmp_locale Perl_sv_cmp_locale +#if defined(USE_LOCALE_COLLATE) +#define Perl_sv_collxfrm CPerlObj::Perl_sv_collxfrm +#define sv_collxfrm Perl_sv_collxfrm +#endif +#define Perl_sv_compile_2op CPerlObj::Perl_sv_compile_2op +#define sv_compile_2op Perl_sv_compile_2op +#define Perl_sv_dec CPerlObj::Perl_sv_dec +#define sv_dec Perl_sv_dec +#define Perl_sv_dump CPerlObj::Perl_sv_dump +#define sv_dump Perl_sv_dump +#define Perl_sv_derived_from CPerlObj::Perl_sv_derived_from +#define sv_derived_from Perl_sv_derived_from +#define Perl_sv_eq CPerlObj::Perl_sv_eq +#define sv_eq Perl_sv_eq +#define Perl_sv_free CPerlObj::Perl_sv_free +#define sv_free Perl_sv_free +#define Perl_sv_free_arenas CPerlObj::Perl_sv_free_arenas +#define sv_free_arenas Perl_sv_free_arenas +#define Perl_sv_gets CPerlObj::Perl_sv_gets +#define sv_gets Perl_sv_gets +#define Perl_sv_grow CPerlObj::Perl_sv_grow +#define sv_grow Perl_sv_grow +#define Perl_sv_inc CPerlObj::Perl_sv_inc +#define sv_inc Perl_sv_inc +#define Perl_sv_insert CPerlObj::Perl_sv_insert +#define sv_insert Perl_sv_insert +#define Perl_sv_isa CPerlObj::Perl_sv_isa +#define sv_isa Perl_sv_isa +#define Perl_sv_isobject CPerlObj::Perl_sv_isobject +#define sv_isobject Perl_sv_isobject +#define Perl_sv_len CPerlObj::Perl_sv_len +#define sv_len Perl_sv_len +#define Perl_sv_len_utf8 CPerlObj::Perl_sv_len_utf8 +#define sv_len_utf8 Perl_sv_len_utf8 +#define Perl_sv_magic CPerlObj::Perl_sv_magic +#define sv_magic Perl_sv_magic +#define Perl_sv_mortalcopy CPerlObj::Perl_sv_mortalcopy +#define sv_mortalcopy Perl_sv_mortalcopy +#define Perl_sv_newmortal CPerlObj::Perl_sv_newmortal +#define sv_newmortal Perl_sv_newmortal +#define Perl_sv_newref CPerlObj::Perl_sv_newref +#define sv_newref Perl_sv_newref +#define Perl_sv_peek CPerlObj::Perl_sv_peek +#define sv_peek Perl_sv_peek +#define Perl_sv_pos_u2b CPerlObj::Perl_sv_pos_u2b +#define sv_pos_u2b Perl_sv_pos_u2b +#define Perl_sv_pos_b2u CPerlObj::Perl_sv_pos_b2u +#define sv_pos_b2u Perl_sv_pos_b2u +#define Perl_sv_pvn_force CPerlObj::Perl_sv_pvn_force +#define sv_pvn_force Perl_sv_pvn_force +#define Perl_sv_pvutf8n_force CPerlObj::Perl_sv_pvutf8n_force +#define sv_pvutf8n_force Perl_sv_pvutf8n_force +#define Perl_sv_pvbyten_force CPerlObj::Perl_sv_pvbyten_force +#define sv_pvbyten_force Perl_sv_pvbyten_force +#define Perl_sv_reftype CPerlObj::Perl_sv_reftype +#define sv_reftype Perl_sv_reftype +#define Perl_sv_replace CPerlObj::Perl_sv_replace +#define sv_replace Perl_sv_replace +#define Perl_sv_report_used CPerlObj::Perl_sv_report_used +#define sv_report_used Perl_sv_report_used +#define Perl_sv_reset CPerlObj::Perl_sv_reset +#define sv_reset Perl_sv_reset +#define Perl_sv_setpvf CPerlObj::Perl_sv_setpvf +#define sv_setpvf Perl_sv_setpvf +#define Perl_sv_vsetpvf CPerlObj::Perl_sv_vsetpvf +#define sv_vsetpvf Perl_sv_vsetpvf +#define Perl_sv_setiv CPerlObj::Perl_sv_setiv +#define sv_setiv Perl_sv_setiv +#define Perl_sv_setpviv CPerlObj::Perl_sv_setpviv +#define sv_setpviv Perl_sv_setpviv +#define Perl_sv_setuv CPerlObj::Perl_sv_setuv +#define sv_setuv Perl_sv_setuv +#define Perl_sv_setnv CPerlObj::Perl_sv_setnv +#define sv_setnv Perl_sv_setnv +#define Perl_sv_setref_iv CPerlObj::Perl_sv_setref_iv +#define sv_setref_iv Perl_sv_setref_iv +#define Perl_sv_setref_nv CPerlObj::Perl_sv_setref_nv +#define sv_setref_nv Perl_sv_setref_nv +#define Perl_sv_setref_pv CPerlObj::Perl_sv_setref_pv +#define sv_setref_pv Perl_sv_setref_pv +#define Perl_sv_setref_pvn CPerlObj::Perl_sv_setref_pvn +#define sv_setref_pvn Perl_sv_setref_pvn +#define Perl_sv_setpv CPerlObj::Perl_sv_setpv +#define sv_setpv Perl_sv_setpv +#define Perl_sv_setpvn CPerlObj::Perl_sv_setpvn +#define sv_setpvn Perl_sv_setpvn +#define Perl_sv_setsv CPerlObj::Perl_sv_setsv +#define sv_setsv Perl_sv_setsv +#define Perl_sv_taint CPerlObj::Perl_sv_taint +#define sv_taint Perl_sv_taint +#define Perl_sv_tainted CPerlObj::Perl_sv_tainted +#define sv_tainted Perl_sv_tainted +#define Perl_sv_unmagic CPerlObj::Perl_sv_unmagic +#define sv_unmagic Perl_sv_unmagic +#define Perl_sv_unref CPerlObj::Perl_sv_unref +#define sv_unref Perl_sv_unref +#define Perl_sv_untaint CPerlObj::Perl_sv_untaint +#define sv_untaint Perl_sv_untaint +#define Perl_sv_upgrade CPerlObj::Perl_sv_upgrade +#define sv_upgrade Perl_sv_upgrade +#define Perl_sv_usepvn CPerlObj::Perl_sv_usepvn +#define sv_usepvn Perl_sv_usepvn +#define Perl_sv_vcatpvfn CPerlObj::Perl_sv_vcatpvfn #define sv_vcatpvfn Perl_sv_vcatpvfn +#define Perl_sv_vsetpvfn CPerlObj::Perl_sv_vsetpvfn #define sv_vsetpvfn Perl_sv_vsetpvfn +#define Perl_str_to_version CPerlObj::Perl_str_to_version +#define str_to_version Perl_str_to_version +#define Perl_swash_init CPerlObj::Perl_swash_init +#define swash_init Perl_swash_init +#define Perl_swash_fetch CPerlObj::Perl_swash_fetch +#define swash_fetch Perl_swash_fetch +#define Perl_taint_env CPerlObj::Perl_taint_env #define taint_env Perl_taint_env +#define Perl_taint_proper CPerlObj::Perl_taint_proper #define taint_proper Perl_taint_proper -#define too_few_arguments Perl_too_few_arguments -#define too_many_arguments Perl_too_many_arguments +#define Perl_to_utf8_lower CPerlObj::Perl_to_utf8_lower +#define to_utf8_lower Perl_to_utf8_lower +#define Perl_to_utf8_upper CPerlObj::Perl_to_utf8_upper +#define to_utf8_upper Perl_to_utf8_upper +#define Perl_to_utf8_title CPerlObj::Perl_to_utf8_title +#define to_utf8_title Perl_to_utf8_title +#if defined(UNLINK_ALL_VERSIONS) +#define Perl_unlnk CPerlObj::Perl_unlnk #define unlnk Perl_unlnk +#endif +#if defined(USE_THREADS) +#define Perl_unlock_condpair CPerlObj::Perl_unlock_condpair #define unlock_condpair Perl_unlock_condpair -#define unshare_hek Perl_unshare_hek +#endif +#define Perl_unsharepvn CPerlObj::Perl_unsharepvn #define unsharepvn Perl_unsharepvn +#define Perl_unshare_hek CPerlObj::Perl_unshare_hek +#define unshare_hek Perl_unshare_hek +#define Perl_utilize CPerlObj::Perl_utilize #define utilize Perl_utilize -#define varies Perl_varies +#define Perl_utf16_to_utf8 CPerlObj::Perl_utf16_to_utf8 +#define utf16_to_utf8 Perl_utf16_to_utf8 +#define Perl_utf16_to_utf8_reversed CPerlObj::Perl_utf16_to_utf8_reversed +#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed +#define Perl_utf8_distance CPerlObj::Perl_utf8_distance +#define utf8_distance Perl_utf8_distance +#define Perl_utf8_hop CPerlObj::Perl_utf8_hop +#define utf8_hop Perl_utf8_hop +#define Perl_utf8_to_uv CPerlObj::Perl_utf8_to_uv +#define utf8_to_uv Perl_utf8_to_uv +#define Perl_uv_to_utf8 CPerlObj::Perl_uv_to_utf8 +#define uv_to_utf8 Perl_uv_to_utf8 +#define Perl_vivify_defelem CPerlObj::Perl_vivify_defelem #define vivify_defelem Perl_vivify_defelem +#define Perl_vivify_ref CPerlObj::Perl_vivify_ref #define vivify_ref Perl_vivify_ref -#define vtbl_amagic Perl_vtbl_amagic -#define vtbl_amagicelem Perl_vtbl_amagicelem -#define vtbl_arylen Perl_vtbl_arylen -#define vtbl_bm Perl_vtbl_bm -#define vtbl_collxfrm Perl_vtbl_collxfrm -#define vtbl_dbline Perl_vtbl_dbline -#define vtbl_defelem Perl_vtbl_defelem -#define vtbl_env Perl_vtbl_env -#define vtbl_envelem Perl_vtbl_envelem -#define vtbl_fm Perl_vtbl_fm -#define vtbl_glob Perl_vtbl_glob -#define vtbl_isa Perl_vtbl_isa -#define vtbl_isaelem Perl_vtbl_isaelem -#define vtbl_mglob Perl_vtbl_mglob -#define vtbl_mutex Perl_vtbl_mutex -#define vtbl_nkeys Perl_vtbl_nkeys -#define vtbl_pack Perl_vtbl_pack -#define vtbl_packelem Perl_vtbl_packelem -#define vtbl_pos Perl_vtbl_pos -#define vtbl_regexp Perl_vtbl_regexp -#define vtbl_sig Perl_vtbl_sig -#define vtbl_sigelem Perl_vtbl_sigelem -#define vtbl_substr Perl_vtbl_substr -#define vtbl_sv Perl_vtbl_sv -#define vtbl_taint Perl_vtbl_taint -#define vtbl_uvar Perl_vtbl_uvar -#define vtbl_vec Perl_vtbl_vec +#define Perl_wait4pid CPerlObj::Perl_wait4pid #define wait4pid Perl_wait4pid +#define Perl_report_closed_fh CPerlObj::Perl_report_closed_fh +#define report_closed_fh Perl_report_closed_fh +#define Perl_report_uninit CPerlObj::Perl_report_uninit +#define report_uninit Perl_report_uninit +#define Perl_warn CPerlObj::Perl_warn #define warn Perl_warn -#define warn_nl Perl_warn_nl -#define warn_nosemi Perl_warn_nosemi -#define warn_reserved Perl_warn_reserved -#define warn_uninit Perl_warn_uninit +#define Perl_vwarn CPerlObj::Perl_vwarn +#define vwarn Perl_vwarn +#define Perl_warner CPerlObj::Perl_warner +#define warner Perl_warner +#define Perl_vwarner CPerlObj::Perl_vwarner +#define vwarner Perl_vwarner +#define Perl_watch CPerlObj::Perl_watch #define watch Perl_watch -#define watchaddr Perl_watchaddr -#define watchok Perl_watchok +#define Perl_whichsig CPerlObj::Perl_whichsig #define whichsig Perl_whichsig -#define yychar Perl_yychar -#define yycheck Perl_yycheck -#define yydebug Perl_yydebug -#define yydefred Perl_yydefred -#define yydestruct Perl_yydestruct -#define yydgoto Perl_yydgoto -#define yyerrflag Perl_yyerrflag +#define Perl_yyerror CPerlObj::Perl_yyerror #define yyerror Perl_yyerror -#define yygindex Perl_yygindex -#define yylen Perl_yylen +#if defined(USE_PURE_BISON) +#define Perl_yylex CPerlObj::Perl_yylex #define yylex Perl_yylex -#define yylhs Perl_yylhs -#define yylval Perl_yylval -#define yyname Perl_yyname -#define yynerrs Perl_yynerrs +#else +#define Perl_yylex CPerlObj::Perl_yylex +#define yylex Perl_yylex +#endif +#define Perl_yyparse CPerlObj::Perl_yyparse #define yyparse Perl_yyparse -#define yyrindex Perl_yyrindex -#define yyrule Perl_yyrule -#define yysindex Perl_yysindex -#define yytable Perl_yytable -#define yyval Perl_yyval +#define Perl_yywarn CPerlObj::Perl_yywarn #define yywarn Perl_yywarn +#if defined(MYMALLOC) +#define Perl_dump_mstats CPerlObj::Perl_dump_mstats +#define dump_mstats Perl_dump_mstats +#define Perl_get_mstats CPerlObj::Perl_get_mstats +#define get_mstats Perl_get_mstats +#endif +#define Perl_safesysmalloc CPerlObj::Perl_safesysmalloc +#define safesysmalloc Perl_safesysmalloc +#define Perl_safesyscalloc CPerlObj::Perl_safesyscalloc +#define safesyscalloc Perl_safesyscalloc +#define Perl_safesysrealloc CPerlObj::Perl_safesysrealloc +#define safesysrealloc Perl_safesysrealloc +#define Perl_safesysfree CPerlObj::Perl_safesysfree +#define safesysfree Perl_safesysfree +#if defined(LEAKTEST) +#define Perl_safexmalloc CPerlObj::Perl_safexmalloc +#define safexmalloc Perl_safexmalloc +#define Perl_safexcalloc CPerlObj::Perl_safexcalloc +#define safexcalloc Perl_safexcalloc +#define Perl_safexrealloc CPerlObj::Perl_safexrealloc +#define safexrealloc Perl_safexrealloc +#define Perl_safexfree CPerlObj::Perl_safexfree +#define safexfree Perl_safexfree +#endif +#if defined(PERL_GLOBAL_STRUCT) +#define Perl_GetVars CPerlObj::Perl_GetVars +#define GetVars Perl_GetVars +#endif +#define Perl_runops_standard CPerlObj::Perl_runops_standard +#define runops_standard Perl_runops_standard +#define Perl_runops_debug CPerlObj::Perl_runops_debug +#define runops_debug Perl_runops_debug +#define Perl_sv_catpvf_mg CPerlObj::Perl_sv_catpvf_mg +#define sv_catpvf_mg Perl_sv_catpvf_mg +#define Perl_sv_vcatpvf_mg CPerlObj::Perl_sv_vcatpvf_mg +#define sv_vcatpvf_mg Perl_sv_vcatpvf_mg +#define Perl_sv_catpv_mg CPerlObj::Perl_sv_catpv_mg +#define sv_catpv_mg Perl_sv_catpv_mg +#define Perl_sv_catpvn_mg CPerlObj::Perl_sv_catpvn_mg +#define sv_catpvn_mg Perl_sv_catpvn_mg +#define Perl_sv_catsv_mg CPerlObj::Perl_sv_catsv_mg +#define sv_catsv_mg Perl_sv_catsv_mg +#define Perl_sv_setpvf_mg CPerlObj::Perl_sv_setpvf_mg +#define sv_setpvf_mg Perl_sv_setpvf_mg +#define Perl_sv_vsetpvf_mg CPerlObj::Perl_sv_vsetpvf_mg +#define sv_vsetpvf_mg Perl_sv_vsetpvf_mg +#define Perl_sv_setiv_mg CPerlObj::Perl_sv_setiv_mg +#define sv_setiv_mg Perl_sv_setiv_mg +#define Perl_sv_setpviv_mg CPerlObj::Perl_sv_setpviv_mg +#define sv_setpviv_mg Perl_sv_setpviv_mg +#define Perl_sv_setuv_mg CPerlObj::Perl_sv_setuv_mg +#define sv_setuv_mg Perl_sv_setuv_mg +#define Perl_sv_setnv_mg CPerlObj::Perl_sv_setnv_mg +#define sv_setnv_mg Perl_sv_setnv_mg +#define Perl_sv_setpv_mg CPerlObj::Perl_sv_setpv_mg +#define sv_setpv_mg Perl_sv_setpv_mg +#define Perl_sv_setpvn_mg CPerlObj::Perl_sv_setpvn_mg +#define sv_setpvn_mg Perl_sv_setpvn_mg +#define Perl_sv_setsv_mg CPerlObj::Perl_sv_setsv_mg +#define sv_setsv_mg Perl_sv_setsv_mg +#define Perl_sv_usepvn_mg CPerlObj::Perl_sv_usepvn_mg +#define sv_usepvn_mg Perl_sv_usepvn_mg +#define Perl_get_vtbl CPerlObj::Perl_get_vtbl +#define get_vtbl Perl_get_vtbl +#define Perl_pv_display CPerlObj::Perl_pv_display +#define pv_display Perl_pv_display +#define Perl_dump_indent CPerlObj::Perl_dump_indent +#define dump_indent Perl_dump_indent +#define Perl_dump_vindent CPerlObj::Perl_dump_vindent +#define dump_vindent Perl_dump_vindent +#define Perl_do_gv_dump CPerlObj::Perl_do_gv_dump +#define do_gv_dump Perl_do_gv_dump +#define Perl_do_gvgv_dump CPerlObj::Perl_do_gvgv_dump +#define do_gvgv_dump Perl_do_gvgv_dump +#define Perl_do_hv_dump CPerlObj::Perl_do_hv_dump +#define do_hv_dump Perl_do_hv_dump +#define Perl_do_magic_dump CPerlObj::Perl_do_magic_dump +#define do_magic_dump Perl_do_magic_dump +#define Perl_do_op_dump CPerlObj::Perl_do_op_dump +#define do_op_dump Perl_do_op_dump +#define Perl_do_pmop_dump CPerlObj::Perl_do_pmop_dump +#define do_pmop_dump Perl_do_pmop_dump +#define Perl_do_sv_dump CPerlObj::Perl_do_sv_dump +#define do_sv_dump Perl_do_sv_dump +#define Perl_magic_dump CPerlObj::Perl_magic_dump +#define magic_dump Perl_magic_dump +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define Perl_default_protect CPerlObj::Perl_default_protect +#define default_protect Perl_default_protect +#define Perl_vdefault_protect CPerlObj::Perl_vdefault_protect +#define vdefault_protect Perl_vdefault_protect +#endif +#define Perl_reginitcolors CPerlObj::Perl_reginitcolors +#define reginitcolors Perl_reginitcolors +#define Perl_sv_2pv_nolen CPerlObj::Perl_sv_2pv_nolen +#define sv_2pv_nolen Perl_sv_2pv_nolen +#define Perl_sv_2pvutf8_nolen CPerlObj::Perl_sv_2pvutf8_nolen +#define sv_2pvutf8_nolen Perl_sv_2pvutf8_nolen +#define Perl_sv_2pvbyte_nolen CPerlObj::Perl_sv_2pvbyte_nolen +#define sv_2pvbyte_nolen Perl_sv_2pvbyte_nolen +#define Perl_sv_pv CPerlObj::Perl_sv_pv +#define sv_pv Perl_sv_pv +#define Perl_sv_pvutf8 CPerlObj::Perl_sv_pvutf8 +#define sv_pvutf8 Perl_sv_pvutf8 +#define Perl_sv_pvbyte CPerlObj::Perl_sv_pvbyte +#define sv_pvbyte Perl_sv_pvbyte +#define Perl_sv_utf8_upgrade CPerlObj::Perl_sv_utf8_upgrade +#define sv_utf8_upgrade Perl_sv_utf8_upgrade +#define Perl_sv_utf8_downgrade CPerlObj::Perl_sv_utf8_downgrade +#define sv_utf8_downgrade Perl_sv_utf8_downgrade +#define Perl_sv_utf8_encode CPerlObj::Perl_sv_utf8_encode +#define sv_utf8_encode Perl_sv_utf8_encode +#define Perl_sv_utf8_decode CPerlObj::Perl_sv_utf8_decode +#define sv_utf8_decode Perl_sv_utf8_decode +#define Perl_sv_force_normal CPerlObj::Perl_sv_force_normal +#define sv_force_normal Perl_sv_force_normal +#define Perl_tmps_grow CPerlObj::Perl_tmps_grow +#define tmps_grow Perl_tmps_grow +#define Perl_sv_rvweaken CPerlObj::Perl_sv_rvweaken +#define sv_rvweaken Perl_sv_rvweaken +#define Perl_magic_killbackrefs CPerlObj::Perl_magic_killbackrefs +#define magic_killbackrefs Perl_magic_killbackrefs +#define Perl_newANONATTRSUB CPerlObj::Perl_newANONATTRSUB +#define newANONATTRSUB Perl_newANONATTRSUB +#define Perl_newATTRSUB CPerlObj::Perl_newATTRSUB +#define newATTRSUB Perl_newATTRSUB +#define Perl_newMYSUB CPerlObj::Perl_newMYSUB +#define newMYSUB Perl_newMYSUB +#define Perl_my_attrs CPerlObj::Perl_my_attrs +#define my_attrs Perl_my_attrs +#define Perl_boot_core_xsutils CPerlObj::Perl_boot_core_xsutils +#define boot_core_xsutils Perl_boot_core_xsutils +#if defined(USE_ITHREADS) +#define Perl_cx_dup CPerlObj::Perl_cx_dup +#define cx_dup Perl_cx_dup +#define Perl_si_dup CPerlObj::Perl_si_dup +#define si_dup Perl_si_dup +#define Perl_ss_dup CPerlObj::Perl_ss_dup +#define ss_dup Perl_ss_dup +#define Perl_any_dup CPerlObj::Perl_any_dup +#define any_dup Perl_any_dup +#define Perl_he_dup CPerlObj::Perl_he_dup +#define he_dup Perl_he_dup +#define Perl_re_dup CPerlObj::Perl_re_dup +#define re_dup Perl_re_dup +#define Perl_fp_dup CPerlObj::Perl_fp_dup +#define fp_dup Perl_fp_dup +#define Perl_dirp_dup CPerlObj::Perl_dirp_dup +#define dirp_dup Perl_dirp_dup +#define Perl_gp_dup CPerlObj::Perl_gp_dup +#define gp_dup Perl_gp_dup +#define Perl_mg_dup CPerlObj::Perl_mg_dup +#define mg_dup Perl_mg_dup +#define Perl_sv_dup CPerlObj::Perl_sv_dup +#define sv_dup Perl_sv_dup +#if defined(HAVE_INTERP_INTERN) +#define Perl_sys_intern_dup CPerlObj::Perl_sys_intern_dup +#define sys_intern_dup Perl_sys_intern_dup +#endif +#define Perl_ptr_table_new CPerlObj::Perl_ptr_table_new +#define ptr_table_new Perl_ptr_table_new +#define Perl_ptr_table_fetch CPerlObj::Perl_ptr_table_fetch +#define ptr_table_fetch Perl_ptr_table_fetch +#define Perl_ptr_table_store CPerlObj::Perl_ptr_table_store +#define ptr_table_store Perl_ptr_table_store +#define Perl_ptr_table_split CPerlObj::Perl_ptr_table_split +#define ptr_table_split Perl_ptr_table_split +#endif +#if defined(PERL_OBJECT) +#else +#endif +#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) +#define S_avhv_index_sv CPerlObj::S_avhv_index_sv +#define avhv_index_sv S_avhv_index_sv +#define S_avhv_index CPerlObj::S_avhv_index +#define avhv_index S_avhv_index +#endif +#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) +#define S_do_trans_CC_simple CPerlObj::S_do_trans_CC_simple +#define do_trans_CC_simple S_do_trans_CC_simple +#define S_do_trans_CC_count CPerlObj::S_do_trans_CC_count +#define do_trans_CC_count S_do_trans_CC_count +#define S_do_trans_CC_complex CPerlObj::S_do_trans_CC_complex +#define do_trans_CC_complex S_do_trans_CC_complex +#define S_do_trans_UU_simple CPerlObj::S_do_trans_UU_simple +#define do_trans_UU_simple S_do_trans_UU_simple +#define S_do_trans_UU_count CPerlObj::S_do_trans_UU_count +#define do_trans_UU_count S_do_trans_UU_count +#define S_do_trans_UU_complex CPerlObj::S_do_trans_UU_complex +#define do_trans_UU_complex S_do_trans_UU_complex +#define S_do_trans_UC_simple CPerlObj::S_do_trans_UC_simple +#define do_trans_UC_simple S_do_trans_UC_simple +#define S_do_trans_CU_simple CPerlObj::S_do_trans_CU_simple +#define do_trans_CU_simple S_do_trans_CU_simple +#define S_do_trans_UC_trivial CPerlObj::S_do_trans_UC_trivial +#define do_trans_UC_trivial S_do_trans_UC_trivial +#define S_do_trans_CU_trivial CPerlObj::S_do_trans_CU_trivial +#define do_trans_CU_trivial S_do_trans_CU_trivial +#endif +#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) +#define S_gv_init_sv CPerlObj::S_gv_init_sv +#define gv_init_sv S_gv_init_sv +#endif +#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +#define S_hsplit CPerlObj::S_hsplit +#define hsplit S_hsplit +#define S_hfreeentries CPerlObj::S_hfreeentries +#define hfreeentries S_hfreeentries +#define S_more_he CPerlObj::S_more_he +#define more_he S_more_he +#define S_new_he CPerlObj::S_new_he +#define new_he S_new_he +#define S_del_he CPerlObj::S_del_he +#define del_he S_del_he +#define S_save_hek CPerlObj::S_save_hek +#define save_hek S_save_hek +#define S_hv_magic_check CPerlObj::S_hv_magic_check +#define hv_magic_check S_hv_magic_check +#endif +#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) +#define S_save_magic CPerlObj::S_save_magic +#define save_magic S_save_magic +#define S_magic_methpack CPerlObj::S_magic_methpack +#define magic_methpack S_magic_methpack +#define S_magic_methcall CPerlObj::S_magic_methcall +#define magic_methcall S_magic_methcall +#endif +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +#define S_list_assignment CPerlObj::S_list_assignment +#define list_assignment S_list_assignment +#define S_bad_type CPerlObj::S_bad_type +#define bad_type S_bad_type +#define S_cop_free CPerlObj::S_cop_free +#define cop_free S_cop_free +#define S_modkids CPerlObj::S_modkids +#define modkids S_modkids +#define S_no_bareword_allowed CPerlObj::S_no_bareword_allowed +#define no_bareword_allowed S_no_bareword_allowed +#define S_no_fh_allowed CPerlObj::S_no_fh_allowed +#define no_fh_allowed S_no_fh_allowed +#define S_scalarboolean CPerlObj::S_scalarboolean +#define scalarboolean S_scalarboolean +#define S_too_few_arguments CPerlObj::S_too_few_arguments +#define too_few_arguments S_too_few_arguments +#define S_too_many_arguments CPerlObj::S_too_many_arguments +#define too_many_arguments S_too_many_arguments +#define S_op_clear CPerlObj::S_op_clear +#define op_clear S_op_clear +#define S_null CPerlObj::S_null +#define null S_null +#define S_pad_addlex CPerlObj::S_pad_addlex +#define pad_addlex S_pad_addlex +#define S_pad_findlex CPerlObj::S_pad_findlex +#define pad_findlex S_pad_findlex +#define S_newDEFSVOP CPerlObj::S_newDEFSVOP +#define newDEFSVOP S_newDEFSVOP +#define S_new_logop CPerlObj::S_new_logop +#define new_logop S_new_logop +#define S_simplify_sort CPerlObj::S_simplify_sort +#define simplify_sort S_simplify_sort +#define S_is_handle_constructor CPerlObj::S_is_handle_constructor +#define is_handle_constructor S_is_handle_constructor +#define S_gv_ename CPerlObj::S_gv_ename +#define gv_ename S_gv_ename +#define S_cv_dump CPerlObj::S_cv_dump +#define cv_dump S_cv_dump +#define S_cv_clone2 CPerlObj::S_cv_clone2 +#define cv_clone2 S_cv_clone2 +#define S_scalar_mod_type CPerlObj::S_scalar_mod_type +#define scalar_mod_type S_scalar_mod_type +#define S_my_kid CPerlObj::S_my_kid +#define my_kid S_my_kid +#define S_dup_attrlist CPerlObj::S_dup_attrlist +#define dup_attrlist S_dup_attrlist +#define S_apply_attrs CPerlObj::S_apply_attrs +#define apply_attrs S_apply_attrs +# if defined(PL_OP_SLAB_ALLOC) +#define S_Slab_Alloc CPerlObj::S_Slab_Alloc +#define Slab_Alloc S_Slab_Alloc +# endif +#endif +#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +#define S_find_beginning CPerlObj::S_find_beginning +#define find_beginning S_find_beginning +#define S_forbid_setid CPerlObj::S_forbid_setid +#define forbid_setid S_forbid_setid +#define S_incpush CPerlObj::S_incpush +#define incpush S_incpush +#define S_init_interp CPerlObj::S_init_interp +#define init_interp S_init_interp +#define S_init_ids CPerlObj::S_init_ids +#define init_ids S_init_ids +#define S_init_lexer CPerlObj::S_init_lexer +#define init_lexer S_init_lexer +#define S_init_main_stash CPerlObj::S_init_main_stash +#define init_main_stash S_init_main_stash +#define S_init_perllib CPerlObj::S_init_perllib +#define init_perllib S_init_perllib +#define S_init_postdump_symbols CPerlObj::S_init_postdump_symbols +#define init_postdump_symbols S_init_postdump_symbols +#define S_init_predump_symbols CPerlObj::S_init_predump_symbols +#define init_predump_symbols S_init_predump_symbols +#define S_my_exit_jump CPerlObj::S_my_exit_jump +#define my_exit_jump S_my_exit_jump +#define S_nuke_stacks CPerlObj::S_nuke_stacks +#define nuke_stacks S_nuke_stacks +#define S_open_script CPerlObj::S_open_script +#define open_script S_open_script +#define S_usage CPerlObj::S_usage +#define usage S_usage +#define S_validate_suid CPerlObj::S_validate_suid +#define validate_suid S_validate_suid +# if defined(IAMSUID) +#define S_fd_on_nosuid_fs CPerlObj::S_fd_on_nosuid_fs +#define fd_on_nosuid_fs S_fd_on_nosuid_fs +# endif +#define S_parse_body CPerlObj::S_parse_body +#define parse_body S_parse_body +#define S_run_body CPerlObj::S_run_body +#define run_body S_run_body +#define S_call_body CPerlObj::S_call_body +#define call_body S_call_body +#define S_call_list_body CPerlObj::S_call_list_body +#define call_list_body S_call_list_body +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define S_vparse_body CPerlObj::S_vparse_body +#define vparse_body S_vparse_body +#define S_vrun_body CPerlObj::S_vrun_body +#define vrun_body S_vrun_body +#define S_vcall_body CPerlObj::S_vcall_body +#define vcall_body S_vcall_body +#define S_vcall_list_body CPerlObj::S_vcall_list_body +#define vcall_list_body S_vcall_list_body +#endif +# if defined(USE_THREADS) +#define S_init_main_thread CPerlObj::S_init_main_thread +#define init_main_thread S_init_main_thread +# endif +#endif +#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) +#define S_doencodes CPerlObj::S_doencodes +#define doencodes S_doencodes +#define S_refto CPerlObj::S_refto +#define refto S_refto +#define S_seed CPerlObj::S_seed +#define seed S_seed +#define S_mul128 CPerlObj::S_mul128 +#define mul128 S_mul128 +#define S_is_an_int CPerlObj::S_is_an_int +#define is_an_int S_is_an_int +#define S_div128 CPerlObj::S_div128 +#define div128 S_div128 +#endif +#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +#define S_docatch CPerlObj::S_docatch +#define docatch S_docatch +#define S_docatch_body CPerlObj::S_docatch_body +#define docatch_body S_docatch_body +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +#define S_vdocatch_body CPerlObj::S_vdocatch_body +#define vdocatch_body S_vdocatch_body +#endif +#define S_dofindlabel CPerlObj::S_dofindlabel +#define dofindlabel S_dofindlabel +#define S_doparseform CPerlObj::S_doparseform +#define doparseform S_doparseform +#define S_dopoptoeval CPerlObj::S_dopoptoeval +#define dopoptoeval S_dopoptoeval +#define S_dopoptolabel CPerlObj::S_dopoptolabel +#define dopoptolabel S_dopoptolabel +#define S_dopoptoloop CPerlObj::S_dopoptoloop +#define dopoptoloop S_dopoptoloop +#define S_dopoptosub CPerlObj::S_dopoptosub +#define dopoptosub S_dopoptosub +#define S_dopoptosub_at CPerlObj::S_dopoptosub_at +#define dopoptosub_at S_dopoptosub_at +#define S_free_closures CPerlObj::S_free_closures +#define free_closures S_free_closures +#define S_save_lines CPerlObj::S_save_lines +#define save_lines S_save_lines +#define S_doeval CPerlObj::S_doeval +#define doeval S_doeval +#define S_doopen_pmc CPerlObj::S_doopen_pmc +#define doopen_pmc S_doopen_pmc +#define S_qsortsv CPerlObj::S_qsortsv +#define qsortsv S_qsortsv +#endif +#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +#define S_do_maybe_phash CPerlObj::S_do_maybe_phash +#define do_maybe_phash S_do_maybe_phash +#define S_do_oddball CPerlObj::S_do_oddball +#define do_oddball S_do_oddball +#define S_get_db_sub CPerlObj::S_get_db_sub +#define get_db_sub S_get_db_sub +#define S_method_common CPerlObj::S_method_common +#define method_common S_method_common +#endif +#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +#define S_doform CPerlObj::S_doform +#define doform S_doform +#define S_emulate_eaccess CPerlObj::S_emulate_eaccess +#define emulate_eaccess S_emulate_eaccess +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +#define S_dooneliner CPerlObj::S_dooneliner +#define dooneliner S_dooneliner +# endif +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) +#define S_reg CPerlObj::S_reg +#define reg S_reg +#define S_reganode CPerlObj::S_reganode +#define reganode S_reganode +#define S_regatom CPerlObj::S_regatom +#define regatom S_regatom +#define S_regbranch CPerlObj::S_regbranch +#define regbranch S_regbranch +#define S_reguni CPerlObj::S_reguni +#define reguni S_reguni +#define S_regclass CPerlObj::S_regclass +#define regclass S_regclass +#define S_regclassutf8 CPerlObj::S_regclassutf8 +#define regclassutf8 S_regclassutf8 +#define S_regcurly CPerlObj::S_regcurly +#define regcurly S_regcurly +#define S_reg_node CPerlObj::S_reg_node +#define reg_node S_reg_node +#define S_regpiece CPerlObj::S_regpiece +#define regpiece S_regpiece +#define S_reginsert CPerlObj::S_reginsert +#define reginsert S_reginsert +#define S_regoptail CPerlObj::S_regoptail +#define regoptail S_regoptail +#define S_regtail CPerlObj::S_regtail +#define regtail S_regtail +#define S_regwhite CPerlObj::S_regwhite +#define regwhite S_regwhite +#define S_nextchar CPerlObj::S_nextchar +#define nextchar S_nextchar +#define S_dumpuntil CPerlObj::S_dumpuntil +#define dumpuntil S_dumpuntil +#define S_put_byte CPerlObj::S_put_byte +#define put_byte S_put_byte +#define S_scan_commit CPerlObj::S_scan_commit +#define scan_commit S_scan_commit +#define S_cl_anything CPerlObj::S_cl_anything +#define cl_anything S_cl_anything +#define S_cl_is_anything CPerlObj::S_cl_is_anything +#define cl_is_anything S_cl_is_anything +#define S_cl_init CPerlObj::S_cl_init +#define cl_init S_cl_init +#define S_cl_init_zero CPerlObj::S_cl_init_zero +#define cl_init_zero S_cl_init_zero +#define S_cl_and CPerlObj::S_cl_and +#define cl_and S_cl_and +#define S_cl_or CPerlObj::S_cl_or +#define cl_or S_cl_or +#define S_study_chunk CPerlObj::S_study_chunk +#define study_chunk S_study_chunk +#define S_add_data CPerlObj::S_add_data +#define add_data S_add_data +#define S_re_croak2 CPerlObj::S_re_croak2 +#define re_croak2 S_re_croak2 +#define S_regpposixcc CPerlObj::S_regpposixcc +#define regpposixcc S_regpposixcc +#define S_checkposixcc CPerlObj::S_checkposixcc +#define checkposixcc S_checkposixcc +#endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) +#define S_regmatch CPerlObj::S_regmatch +#define regmatch S_regmatch +#define S_regrepeat CPerlObj::S_regrepeat +#define regrepeat S_regrepeat +#define S_regrepeat_hard CPerlObj::S_regrepeat_hard +#define regrepeat_hard S_regrepeat_hard +#define S_regtry CPerlObj::S_regtry +#define regtry S_regtry +#define S_reginclass CPerlObj::S_reginclass +#define reginclass S_reginclass +#define S_reginclassutf8 CPerlObj::S_reginclassutf8 +#define reginclassutf8 S_reginclassutf8 +#define S_regcppush CPerlObj::S_regcppush +#define regcppush S_regcppush +#define S_regcppop CPerlObj::S_regcppop +#define regcppop S_regcppop +#define S_regcp_set_to CPerlObj::S_regcp_set_to +#define regcp_set_to S_regcp_set_to +#define S_cache_re CPerlObj::S_cache_re +#define cache_re S_cache_re +#define S_reghop CPerlObj::S_reghop +#define reghop S_reghop +#define S_reghopmaybe CPerlObj::S_reghopmaybe +#define reghopmaybe S_reghopmaybe +#define S_find_byclass CPerlObj::S_find_byclass +#define find_byclass S_find_byclass +#endif +#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) +#define S_debprof CPerlObj::S_debprof +#define debprof S_debprof +#endif +#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +#define S_save_scalar_at CPerlObj::S_save_scalar_at +#define save_scalar_at S_save_scalar_at +#endif +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +#define S_asIV CPerlObj::S_asIV +#define asIV S_asIV +#define S_asUV CPerlObj::S_asUV +#define asUV S_asUV +#define S_more_sv CPerlObj::S_more_sv +#define more_sv S_more_sv +#define S_more_xiv CPerlObj::S_more_xiv +#define more_xiv S_more_xiv +#define S_more_xnv CPerlObj::S_more_xnv +#define more_xnv S_more_xnv +#define S_more_xpv CPerlObj::S_more_xpv +#define more_xpv S_more_xpv +#define S_more_xpviv CPerlObj::S_more_xpviv +#define more_xpviv S_more_xpviv +#define S_more_xpvnv CPerlObj::S_more_xpvnv +#define more_xpvnv S_more_xpvnv +#define S_more_xpvcv CPerlObj::S_more_xpvcv +#define more_xpvcv S_more_xpvcv +#define S_more_xpvav CPerlObj::S_more_xpvav +#define more_xpvav S_more_xpvav +#define S_more_xpvhv CPerlObj::S_more_xpvhv +#define more_xpvhv S_more_xpvhv +#define S_more_xpvmg CPerlObj::S_more_xpvmg +#define more_xpvmg S_more_xpvmg +#define S_more_xpvlv CPerlObj::S_more_xpvlv +#define more_xpvlv S_more_xpvlv +#define S_more_xpvbm CPerlObj::S_more_xpvbm +#define more_xpvbm S_more_xpvbm +#define S_more_xrv CPerlObj::S_more_xrv +#define more_xrv S_more_xrv +#define S_new_xiv CPerlObj::S_new_xiv +#define new_xiv S_new_xiv +#define S_new_xnv CPerlObj::S_new_xnv +#define new_xnv S_new_xnv +#define S_new_xpv CPerlObj::S_new_xpv +#define new_xpv S_new_xpv +#define S_new_xpviv CPerlObj::S_new_xpviv +#define new_xpviv S_new_xpviv +#define S_new_xpvnv CPerlObj::S_new_xpvnv +#define new_xpvnv S_new_xpvnv +#define S_new_xpvcv CPerlObj::S_new_xpvcv +#define new_xpvcv S_new_xpvcv +#define S_new_xpvav CPerlObj::S_new_xpvav +#define new_xpvav S_new_xpvav +#define S_new_xpvhv CPerlObj::S_new_xpvhv +#define new_xpvhv S_new_xpvhv +#define S_new_xpvmg CPerlObj::S_new_xpvmg +#define new_xpvmg S_new_xpvmg +#define S_new_xpvlv CPerlObj::S_new_xpvlv +#define new_xpvlv S_new_xpvlv +#define S_new_xpvbm CPerlObj::S_new_xpvbm +#define new_xpvbm S_new_xpvbm +#define S_new_xrv CPerlObj::S_new_xrv +#define new_xrv S_new_xrv +#define S_del_xiv CPerlObj::S_del_xiv +#define del_xiv S_del_xiv +#define S_del_xnv CPerlObj::S_del_xnv +#define del_xnv S_del_xnv +#define S_del_xpv CPerlObj::S_del_xpv +#define del_xpv S_del_xpv +#define S_del_xpviv CPerlObj::S_del_xpviv +#define del_xpviv S_del_xpviv +#define S_del_xpvnv CPerlObj::S_del_xpvnv +#define del_xpvnv S_del_xpvnv +#define S_del_xpvcv CPerlObj::S_del_xpvcv +#define del_xpvcv S_del_xpvcv +#define S_del_xpvav CPerlObj::S_del_xpvav +#define del_xpvav S_del_xpvav +#define S_del_xpvhv CPerlObj::S_del_xpvhv +#define del_xpvhv S_del_xpvhv +#define S_del_xpvmg CPerlObj::S_del_xpvmg +#define del_xpvmg S_del_xpvmg +#define S_del_xpvlv CPerlObj::S_del_xpvlv +#define del_xpvlv S_del_xpvlv +#define S_del_xpvbm CPerlObj::S_del_xpvbm +#define del_xpvbm S_del_xpvbm +#define S_del_xrv CPerlObj::S_del_xrv +#define del_xrv S_del_xrv +#define S_sv_unglob CPerlObj::S_sv_unglob +#define sv_unglob S_sv_unglob +#define S_not_a_number CPerlObj::S_not_a_number +#define not_a_number S_not_a_number +#define S_visit CPerlObj::S_visit +#define visit S_visit +#define S_sv_add_backref CPerlObj::S_sv_add_backref +#define sv_add_backref S_sv_add_backref +#define S_sv_del_backref CPerlObj::S_sv_del_backref +#define sv_del_backref S_sv_del_backref +# if defined(DEBUGGING) +#define S_del_sv CPerlObj::S_del_sv +#define del_sv S_del_sv +# endif +#endif +#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +#define S_check_uni CPerlObj::S_check_uni +#define check_uni S_check_uni +#define S_force_next CPerlObj::S_force_next +#define force_next S_force_next +#define S_force_version CPerlObj::S_force_version +#define force_version S_force_version +#define S_force_word CPerlObj::S_force_word +#define force_word S_force_word +#define S_tokeq CPerlObj::S_tokeq +#define tokeq S_tokeq +#define S_scan_const CPerlObj::S_scan_const +#define scan_const S_scan_const +#define S_scan_formline CPerlObj::S_scan_formline +#define scan_formline S_scan_formline +#define S_scan_heredoc CPerlObj::S_scan_heredoc +#define scan_heredoc S_scan_heredoc +#define S_scan_ident CPerlObj::S_scan_ident +#define scan_ident S_scan_ident +#define S_scan_inputsymbol CPerlObj::S_scan_inputsymbol +#define scan_inputsymbol S_scan_inputsymbol +#define S_scan_pat CPerlObj::S_scan_pat +#define scan_pat S_scan_pat +#define S_scan_str CPerlObj::S_scan_str +#define scan_str S_scan_str +#define S_scan_subst CPerlObj::S_scan_subst +#define scan_subst S_scan_subst +#define S_scan_trans CPerlObj::S_scan_trans +#define scan_trans S_scan_trans +#define S_scan_word CPerlObj::S_scan_word +#define scan_word S_scan_word +#define S_skipspace CPerlObj::S_skipspace +#define skipspace S_skipspace +#define S_checkcomma CPerlObj::S_checkcomma +#define checkcomma S_checkcomma +#define S_force_ident CPerlObj::S_force_ident +#define force_ident S_force_ident +#define S_incline CPerlObj::S_incline +#define incline S_incline +#define S_intuit_method CPerlObj::S_intuit_method +#define intuit_method S_intuit_method +#define S_intuit_more CPerlObj::S_intuit_more +#define intuit_more S_intuit_more +#define S_lop CPerlObj::S_lop +#define lop S_lop +#define S_missingterm CPerlObj::S_missingterm +#define missingterm S_missingterm +#define S_no_op CPerlObj::S_no_op +#define no_op S_no_op +#define S_set_csh CPerlObj::S_set_csh +#define set_csh S_set_csh +#define S_sublex_done CPerlObj::S_sublex_done +#define sublex_done S_sublex_done +#define S_sublex_push CPerlObj::S_sublex_push +#define sublex_push S_sublex_push +#define S_sublex_start CPerlObj::S_sublex_start +#define sublex_start S_sublex_start +#define S_filter_gets CPerlObj::S_filter_gets +#define filter_gets S_filter_gets +#define S_new_constant CPerlObj::S_new_constant +#define new_constant S_new_constant +#define S_ao CPerlObj::S_ao +#define ao S_ao +#define S_depcom CPerlObj::S_depcom +#define depcom S_depcom +#define S_incl_perldb CPerlObj::S_incl_perldb +#define incl_perldb S_incl_perldb +#if 0 +#define S_utf16_textfilter CPerlObj::S_utf16_textfilter +#define utf16_textfilter S_utf16_textfilter +#define S_utf16rev_textfilter CPerlObj::S_utf16rev_textfilter +#define utf16rev_textfilter S_utf16rev_textfilter +#endif +# if defined(CRIPPLED_CC) +#define S_uni CPerlObj::S_uni +#define uni S_uni +# endif +# if defined(PERL_CR_FILTER) +#define S_cr_textfilter CPerlObj::S_cr_textfilter +#define cr_textfilter S_cr_textfilter +# endif +#endif +#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +#define S_isa_lookup CPerlObj::S_isa_lookup +#define isa_lookup S_isa_lookup +#endif +#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) +#define S_mess_alloc CPerlObj::S_mess_alloc +#define mess_alloc S_mess_alloc +# if defined(LEAKTEST) +#define S_xstat CPerlObj::S_xstat +#define xstat S_xstat +# endif +#endif +#if defined(PERL_OBJECT) +#endif +#define Perl_ck_anoncode CPerlObj::Perl_ck_anoncode +#define ck_anoncode Perl_ck_anoncode +#define Perl_ck_bitop CPerlObj::Perl_ck_bitop +#define ck_bitop Perl_ck_bitop +#define Perl_ck_concat CPerlObj::Perl_ck_concat +#define ck_concat Perl_ck_concat +#define Perl_ck_defined CPerlObj::Perl_ck_defined +#define ck_defined Perl_ck_defined +#define Perl_ck_delete CPerlObj::Perl_ck_delete +#define ck_delete Perl_ck_delete +#define Perl_ck_eof CPerlObj::Perl_ck_eof +#define ck_eof Perl_ck_eof +#define Perl_ck_eval CPerlObj::Perl_ck_eval +#define ck_eval Perl_ck_eval +#define Perl_ck_exec CPerlObj::Perl_ck_exec +#define ck_exec Perl_ck_exec +#define Perl_ck_exists CPerlObj::Perl_ck_exists +#define ck_exists Perl_ck_exists +#define Perl_ck_exit CPerlObj::Perl_ck_exit +#define ck_exit Perl_ck_exit +#define Perl_ck_ftst CPerlObj::Perl_ck_ftst +#define ck_ftst Perl_ck_ftst +#define Perl_ck_fun CPerlObj::Perl_ck_fun +#define ck_fun Perl_ck_fun +#define Perl_ck_fun_locale CPerlObj::Perl_ck_fun_locale +#define ck_fun_locale Perl_ck_fun_locale +#define Perl_ck_glob CPerlObj::Perl_ck_glob +#define ck_glob Perl_ck_glob +#define Perl_ck_grep CPerlObj::Perl_ck_grep +#define ck_grep Perl_ck_grep +#define Perl_ck_index CPerlObj::Perl_ck_index +#define ck_index Perl_ck_index +#define Perl_ck_join CPerlObj::Perl_ck_join +#define ck_join Perl_ck_join +#define Perl_ck_lengthconst CPerlObj::Perl_ck_lengthconst +#define ck_lengthconst Perl_ck_lengthconst +#define Perl_ck_lfun CPerlObj::Perl_ck_lfun +#define ck_lfun Perl_ck_lfun +#define Perl_ck_listiob CPerlObj::Perl_ck_listiob +#define ck_listiob Perl_ck_listiob +#define Perl_ck_match CPerlObj::Perl_ck_match +#define ck_match Perl_ck_match +#define Perl_ck_method CPerlObj::Perl_ck_method +#define ck_method Perl_ck_method +#define Perl_ck_null CPerlObj::Perl_ck_null +#define ck_null Perl_ck_null +#define Perl_ck_open CPerlObj::Perl_ck_open +#define ck_open Perl_ck_open +#define Perl_ck_repeat CPerlObj::Perl_ck_repeat +#define ck_repeat Perl_ck_repeat +#define Perl_ck_require CPerlObj::Perl_ck_require +#define ck_require Perl_ck_require +#define Perl_ck_rfun CPerlObj::Perl_ck_rfun +#define ck_rfun Perl_ck_rfun +#define Perl_ck_rvconst CPerlObj::Perl_ck_rvconst +#define ck_rvconst Perl_ck_rvconst +#define Perl_ck_sassign CPerlObj::Perl_ck_sassign +#define ck_sassign Perl_ck_sassign +#define Perl_ck_scmp CPerlObj::Perl_ck_scmp +#define ck_scmp Perl_ck_scmp +#define Perl_ck_select CPerlObj::Perl_ck_select +#define ck_select Perl_ck_select +#define Perl_ck_shift CPerlObj::Perl_ck_shift +#define ck_shift Perl_ck_shift +#define Perl_ck_sort CPerlObj::Perl_ck_sort +#define ck_sort Perl_ck_sort +#define Perl_ck_spair CPerlObj::Perl_ck_spair +#define ck_spair Perl_ck_spair +#define Perl_ck_split CPerlObj::Perl_ck_split +#define ck_split Perl_ck_split +#define Perl_ck_subr CPerlObj::Perl_ck_subr +#define ck_subr Perl_ck_subr +#define Perl_ck_svconst CPerlObj::Perl_ck_svconst +#define ck_svconst Perl_ck_svconst +#define Perl_ck_trunc CPerlObj::Perl_ck_trunc +#define ck_trunc Perl_ck_trunc +#define Perl_pp_aassign CPerlObj::Perl_pp_aassign +#define pp_aassign Perl_pp_aassign +#define Perl_pp_abs CPerlObj::Perl_pp_abs +#define pp_abs Perl_pp_abs +#define Perl_pp_accept CPerlObj::Perl_pp_accept +#define pp_accept Perl_pp_accept +#define Perl_pp_add CPerlObj::Perl_pp_add +#define pp_add Perl_pp_add +#define Perl_pp_aelem CPerlObj::Perl_pp_aelem +#define pp_aelem Perl_pp_aelem +#define Perl_pp_aelemfast CPerlObj::Perl_pp_aelemfast +#define pp_aelemfast Perl_pp_aelemfast +#define Perl_pp_alarm CPerlObj::Perl_pp_alarm +#define pp_alarm Perl_pp_alarm +#define Perl_pp_and CPerlObj::Perl_pp_and +#define pp_and Perl_pp_and +#define Perl_pp_andassign CPerlObj::Perl_pp_andassign +#define pp_andassign Perl_pp_andassign +#define Perl_pp_anoncode CPerlObj::Perl_pp_anoncode +#define pp_anoncode Perl_pp_anoncode +#define Perl_pp_anonhash CPerlObj::Perl_pp_anonhash +#define pp_anonhash Perl_pp_anonhash +#define Perl_pp_anonlist CPerlObj::Perl_pp_anonlist +#define pp_anonlist Perl_pp_anonlist +#define Perl_pp_aslice CPerlObj::Perl_pp_aslice +#define pp_aslice Perl_pp_aslice +#define Perl_pp_atan2 CPerlObj::Perl_pp_atan2 +#define pp_atan2 Perl_pp_atan2 +#define Perl_pp_av2arylen CPerlObj::Perl_pp_av2arylen +#define pp_av2arylen Perl_pp_av2arylen +#define Perl_pp_backtick CPerlObj::Perl_pp_backtick +#define pp_backtick Perl_pp_backtick +#define Perl_pp_bind CPerlObj::Perl_pp_bind +#define pp_bind Perl_pp_bind +#define Perl_pp_binmode CPerlObj::Perl_pp_binmode +#define pp_binmode Perl_pp_binmode +#define Perl_pp_bit_and CPerlObj::Perl_pp_bit_and +#define pp_bit_and Perl_pp_bit_and +#define Perl_pp_bit_or CPerlObj::Perl_pp_bit_or +#define pp_bit_or Perl_pp_bit_or +#define Perl_pp_bit_xor CPerlObj::Perl_pp_bit_xor +#define pp_bit_xor Perl_pp_bit_xor +#define Perl_pp_bless CPerlObj::Perl_pp_bless +#define pp_bless Perl_pp_bless +#define Perl_pp_caller CPerlObj::Perl_pp_caller +#define pp_caller Perl_pp_caller +#define Perl_pp_chdir CPerlObj::Perl_pp_chdir +#define pp_chdir Perl_pp_chdir +#define Perl_pp_chmod CPerlObj::Perl_pp_chmod +#define pp_chmod Perl_pp_chmod +#define Perl_pp_chomp CPerlObj::Perl_pp_chomp +#define pp_chomp Perl_pp_chomp +#define Perl_pp_chop CPerlObj::Perl_pp_chop +#define pp_chop Perl_pp_chop +#define Perl_pp_chown CPerlObj::Perl_pp_chown +#define pp_chown Perl_pp_chown +#define Perl_pp_chr CPerlObj::Perl_pp_chr +#define pp_chr Perl_pp_chr +#define Perl_pp_chroot CPerlObj::Perl_pp_chroot +#define pp_chroot Perl_pp_chroot +#define Perl_pp_close CPerlObj::Perl_pp_close +#define pp_close Perl_pp_close +#define Perl_pp_closedir CPerlObj::Perl_pp_closedir +#define pp_closedir Perl_pp_closedir +#define Perl_pp_complement CPerlObj::Perl_pp_complement +#define pp_complement Perl_pp_complement +#define Perl_pp_concat CPerlObj::Perl_pp_concat +#define pp_concat Perl_pp_concat +#define Perl_pp_cond_expr CPerlObj::Perl_pp_cond_expr +#define pp_cond_expr Perl_pp_cond_expr +#define Perl_pp_connect CPerlObj::Perl_pp_connect +#define pp_connect Perl_pp_connect +#define Perl_pp_const CPerlObj::Perl_pp_const +#define pp_const Perl_pp_const +#define Perl_pp_cos CPerlObj::Perl_pp_cos +#define pp_cos Perl_pp_cos +#define Perl_pp_crypt CPerlObj::Perl_pp_crypt +#define pp_crypt Perl_pp_crypt +#define Perl_pp_dbmclose CPerlObj::Perl_pp_dbmclose +#define pp_dbmclose Perl_pp_dbmclose +#define Perl_pp_dbmopen CPerlObj::Perl_pp_dbmopen +#define pp_dbmopen Perl_pp_dbmopen +#define Perl_pp_dbstate CPerlObj::Perl_pp_dbstate +#define pp_dbstate Perl_pp_dbstate +#define Perl_pp_defined CPerlObj::Perl_pp_defined +#define pp_defined Perl_pp_defined +#define Perl_pp_delete CPerlObj::Perl_pp_delete +#define pp_delete Perl_pp_delete +#define Perl_pp_die CPerlObj::Perl_pp_die +#define pp_die Perl_pp_die +#define Perl_pp_divide CPerlObj::Perl_pp_divide +#define pp_divide Perl_pp_divide +#define Perl_pp_dofile CPerlObj::Perl_pp_dofile +#define pp_dofile Perl_pp_dofile +#define Perl_pp_dump CPerlObj::Perl_pp_dump +#define pp_dump Perl_pp_dump +#define Perl_pp_each CPerlObj::Perl_pp_each +#define pp_each Perl_pp_each +#define Perl_pp_egrent CPerlObj::Perl_pp_egrent +#define pp_egrent Perl_pp_egrent +#define Perl_pp_ehostent CPerlObj::Perl_pp_ehostent +#define pp_ehostent Perl_pp_ehostent +#define Perl_pp_enetent CPerlObj::Perl_pp_enetent +#define pp_enetent Perl_pp_enetent +#define Perl_pp_enter CPerlObj::Perl_pp_enter +#define pp_enter Perl_pp_enter +#define Perl_pp_entereval CPerlObj::Perl_pp_entereval +#define pp_entereval Perl_pp_entereval +#define Perl_pp_enteriter CPerlObj::Perl_pp_enteriter +#define pp_enteriter Perl_pp_enteriter +#define Perl_pp_enterloop CPerlObj::Perl_pp_enterloop +#define pp_enterloop Perl_pp_enterloop +#define Perl_pp_entersub CPerlObj::Perl_pp_entersub +#define pp_entersub Perl_pp_entersub +#define Perl_pp_entertry CPerlObj::Perl_pp_entertry +#define pp_entertry Perl_pp_entertry +#define Perl_pp_enterwrite CPerlObj::Perl_pp_enterwrite +#define pp_enterwrite Perl_pp_enterwrite +#define Perl_pp_eof CPerlObj::Perl_pp_eof +#define pp_eof Perl_pp_eof +#define Perl_pp_eprotoent CPerlObj::Perl_pp_eprotoent +#define pp_eprotoent Perl_pp_eprotoent +#define Perl_pp_epwent CPerlObj::Perl_pp_epwent +#define pp_epwent Perl_pp_epwent +#define Perl_pp_eq CPerlObj::Perl_pp_eq +#define pp_eq Perl_pp_eq +#define Perl_pp_eservent CPerlObj::Perl_pp_eservent +#define pp_eservent Perl_pp_eservent +#define Perl_pp_exec CPerlObj::Perl_pp_exec +#define pp_exec Perl_pp_exec +#define Perl_pp_exists CPerlObj::Perl_pp_exists +#define pp_exists Perl_pp_exists +#define Perl_pp_exit CPerlObj::Perl_pp_exit +#define pp_exit Perl_pp_exit +#define Perl_pp_exp CPerlObj::Perl_pp_exp +#define pp_exp Perl_pp_exp +#define Perl_pp_fcntl CPerlObj::Perl_pp_fcntl +#define pp_fcntl Perl_pp_fcntl +#define Perl_pp_fileno CPerlObj::Perl_pp_fileno +#define pp_fileno Perl_pp_fileno +#define Perl_pp_flip CPerlObj::Perl_pp_flip +#define pp_flip Perl_pp_flip +#define Perl_pp_flock CPerlObj::Perl_pp_flock +#define pp_flock Perl_pp_flock +#define Perl_pp_flop CPerlObj::Perl_pp_flop +#define pp_flop Perl_pp_flop +#define Perl_pp_fork CPerlObj::Perl_pp_fork +#define pp_fork Perl_pp_fork +#define Perl_pp_formline CPerlObj::Perl_pp_formline +#define pp_formline Perl_pp_formline +#define Perl_pp_ftatime CPerlObj::Perl_pp_ftatime +#define pp_ftatime Perl_pp_ftatime +#define Perl_pp_ftbinary CPerlObj::Perl_pp_ftbinary +#define pp_ftbinary Perl_pp_ftbinary +#define Perl_pp_ftblk CPerlObj::Perl_pp_ftblk +#define pp_ftblk Perl_pp_ftblk +#define Perl_pp_ftchr CPerlObj::Perl_pp_ftchr +#define pp_ftchr Perl_pp_ftchr +#define Perl_pp_ftctime CPerlObj::Perl_pp_ftctime +#define pp_ftctime Perl_pp_ftctime +#define Perl_pp_ftdir CPerlObj::Perl_pp_ftdir +#define pp_ftdir Perl_pp_ftdir +#define Perl_pp_fteexec CPerlObj::Perl_pp_fteexec +#define pp_fteexec Perl_pp_fteexec +#define Perl_pp_fteowned CPerlObj::Perl_pp_fteowned +#define pp_fteowned Perl_pp_fteowned +#define Perl_pp_fteread CPerlObj::Perl_pp_fteread +#define pp_fteread Perl_pp_fteread +#define Perl_pp_ftewrite CPerlObj::Perl_pp_ftewrite +#define pp_ftewrite Perl_pp_ftewrite +#define Perl_pp_ftfile CPerlObj::Perl_pp_ftfile +#define pp_ftfile Perl_pp_ftfile +#define Perl_pp_ftis CPerlObj::Perl_pp_ftis +#define pp_ftis Perl_pp_ftis +#define Perl_pp_ftlink CPerlObj::Perl_pp_ftlink +#define pp_ftlink Perl_pp_ftlink +#define Perl_pp_ftmtime CPerlObj::Perl_pp_ftmtime +#define pp_ftmtime Perl_pp_ftmtime +#define Perl_pp_ftpipe CPerlObj::Perl_pp_ftpipe +#define pp_ftpipe Perl_pp_ftpipe +#define Perl_pp_ftrexec CPerlObj::Perl_pp_ftrexec +#define pp_ftrexec Perl_pp_ftrexec +#define Perl_pp_ftrowned CPerlObj::Perl_pp_ftrowned +#define pp_ftrowned Perl_pp_ftrowned +#define Perl_pp_ftrread CPerlObj::Perl_pp_ftrread +#define pp_ftrread Perl_pp_ftrread +#define Perl_pp_ftrwrite CPerlObj::Perl_pp_ftrwrite +#define pp_ftrwrite Perl_pp_ftrwrite +#define Perl_pp_ftsgid CPerlObj::Perl_pp_ftsgid +#define pp_ftsgid Perl_pp_ftsgid +#define Perl_pp_ftsize CPerlObj::Perl_pp_ftsize +#define pp_ftsize Perl_pp_ftsize +#define Perl_pp_ftsock CPerlObj::Perl_pp_ftsock +#define pp_ftsock Perl_pp_ftsock +#define Perl_pp_ftsuid CPerlObj::Perl_pp_ftsuid +#define pp_ftsuid Perl_pp_ftsuid +#define Perl_pp_ftsvtx CPerlObj::Perl_pp_ftsvtx +#define pp_ftsvtx Perl_pp_ftsvtx +#define Perl_pp_fttext CPerlObj::Perl_pp_fttext +#define pp_fttext Perl_pp_fttext +#define Perl_pp_fttty CPerlObj::Perl_pp_fttty +#define pp_fttty Perl_pp_fttty +#define Perl_pp_ftzero CPerlObj::Perl_pp_ftzero +#define pp_ftzero Perl_pp_ftzero +#define Perl_pp_ge CPerlObj::Perl_pp_ge +#define pp_ge Perl_pp_ge +#define Perl_pp_gelem CPerlObj::Perl_pp_gelem +#define pp_gelem Perl_pp_gelem +#define Perl_pp_getc CPerlObj::Perl_pp_getc +#define pp_getc Perl_pp_getc +#define Perl_pp_getlogin CPerlObj::Perl_pp_getlogin +#define pp_getlogin Perl_pp_getlogin +#define Perl_pp_getpeername CPerlObj::Perl_pp_getpeername +#define pp_getpeername Perl_pp_getpeername +#define Perl_pp_getpgrp CPerlObj::Perl_pp_getpgrp +#define pp_getpgrp Perl_pp_getpgrp +#define Perl_pp_getppid CPerlObj::Perl_pp_getppid +#define pp_getppid Perl_pp_getppid +#define Perl_pp_getpriority CPerlObj::Perl_pp_getpriority +#define pp_getpriority Perl_pp_getpriority +#define Perl_pp_getsockname CPerlObj::Perl_pp_getsockname +#define pp_getsockname Perl_pp_getsockname +#define Perl_pp_ggrent CPerlObj::Perl_pp_ggrent +#define pp_ggrent Perl_pp_ggrent +#define Perl_pp_ggrgid CPerlObj::Perl_pp_ggrgid +#define pp_ggrgid Perl_pp_ggrgid +#define Perl_pp_ggrnam CPerlObj::Perl_pp_ggrnam +#define pp_ggrnam Perl_pp_ggrnam +#define Perl_pp_ghbyaddr CPerlObj::Perl_pp_ghbyaddr +#define pp_ghbyaddr Perl_pp_ghbyaddr +#define Perl_pp_ghbyname CPerlObj::Perl_pp_ghbyname +#define pp_ghbyname Perl_pp_ghbyname +#define Perl_pp_ghostent CPerlObj::Perl_pp_ghostent +#define pp_ghostent Perl_pp_ghostent +#define Perl_pp_glob CPerlObj::Perl_pp_glob +#define pp_glob Perl_pp_glob +#define Perl_pp_gmtime CPerlObj::Perl_pp_gmtime +#define pp_gmtime Perl_pp_gmtime +#define Perl_pp_gnbyaddr CPerlObj::Perl_pp_gnbyaddr +#define pp_gnbyaddr Perl_pp_gnbyaddr +#define Perl_pp_gnbyname CPerlObj::Perl_pp_gnbyname +#define pp_gnbyname Perl_pp_gnbyname +#define Perl_pp_gnetent CPerlObj::Perl_pp_gnetent +#define pp_gnetent Perl_pp_gnetent +#define Perl_pp_goto CPerlObj::Perl_pp_goto +#define pp_goto Perl_pp_goto +#define Perl_pp_gpbyname CPerlObj::Perl_pp_gpbyname +#define pp_gpbyname Perl_pp_gpbyname +#define Perl_pp_gpbynumber CPerlObj::Perl_pp_gpbynumber +#define pp_gpbynumber Perl_pp_gpbynumber +#define Perl_pp_gprotoent CPerlObj::Perl_pp_gprotoent +#define pp_gprotoent Perl_pp_gprotoent +#define Perl_pp_gpwent CPerlObj::Perl_pp_gpwent +#define pp_gpwent Perl_pp_gpwent +#define Perl_pp_gpwnam CPerlObj::Perl_pp_gpwnam +#define pp_gpwnam Perl_pp_gpwnam +#define Perl_pp_gpwuid CPerlObj::Perl_pp_gpwuid +#define pp_gpwuid Perl_pp_gpwuid +#define Perl_pp_grepstart CPerlObj::Perl_pp_grepstart +#define pp_grepstart Perl_pp_grepstart +#define Perl_pp_grepwhile CPerlObj::Perl_pp_grepwhile +#define pp_grepwhile Perl_pp_grepwhile +#define Perl_pp_gsbyname CPerlObj::Perl_pp_gsbyname +#define pp_gsbyname Perl_pp_gsbyname +#define Perl_pp_gsbyport CPerlObj::Perl_pp_gsbyport +#define pp_gsbyport Perl_pp_gsbyport +#define Perl_pp_gservent CPerlObj::Perl_pp_gservent +#define pp_gservent Perl_pp_gservent +#define Perl_pp_gsockopt CPerlObj::Perl_pp_gsockopt +#define pp_gsockopt Perl_pp_gsockopt +#define Perl_pp_gt CPerlObj::Perl_pp_gt +#define pp_gt Perl_pp_gt +#define Perl_pp_gv CPerlObj::Perl_pp_gv +#define pp_gv Perl_pp_gv +#define Perl_pp_gvsv CPerlObj::Perl_pp_gvsv +#define pp_gvsv Perl_pp_gvsv +#define Perl_pp_helem CPerlObj::Perl_pp_helem +#define pp_helem Perl_pp_helem +#define Perl_pp_hex CPerlObj::Perl_pp_hex +#define pp_hex Perl_pp_hex +#define Perl_pp_hslice CPerlObj::Perl_pp_hslice +#define pp_hslice Perl_pp_hslice +#define Perl_pp_i_add CPerlObj::Perl_pp_i_add +#define pp_i_add Perl_pp_i_add +#define Perl_pp_i_divide CPerlObj::Perl_pp_i_divide +#define pp_i_divide Perl_pp_i_divide +#define Perl_pp_i_eq CPerlObj::Perl_pp_i_eq +#define pp_i_eq Perl_pp_i_eq +#define Perl_pp_i_ge CPerlObj::Perl_pp_i_ge +#define pp_i_ge Perl_pp_i_ge +#define Perl_pp_i_gt CPerlObj::Perl_pp_i_gt +#define pp_i_gt Perl_pp_i_gt +#define Perl_pp_i_le CPerlObj::Perl_pp_i_le +#define pp_i_le Perl_pp_i_le +#define Perl_pp_i_lt CPerlObj::Perl_pp_i_lt +#define pp_i_lt Perl_pp_i_lt +#define Perl_pp_i_modulo CPerlObj::Perl_pp_i_modulo +#define pp_i_modulo Perl_pp_i_modulo +#define Perl_pp_i_multiply CPerlObj::Perl_pp_i_multiply +#define pp_i_multiply Perl_pp_i_multiply +#define Perl_pp_i_ncmp CPerlObj::Perl_pp_i_ncmp +#define pp_i_ncmp Perl_pp_i_ncmp +#define Perl_pp_i_ne CPerlObj::Perl_pp_i_ne +#define pp_i_ne Perl_pp_i_ne +#define Perl_pp_i_negate CPerlObj::Perl_pp_i_negate +#define pp_i_negate Perl_pp_i_negate +#define Perl_pp_i_subtract CPerlObj::Perl_pp_i_subtract +#define pp_i_subtract Perl_pp_i_subtract +#define Perl_pp_index CPerlObj::Perl_pp_index +#define pp_index Perl_pp_index +#define Perl_pp_int CPerlObj::Perl_pp_int +#define pp_int Perl_pp_int +#define Perl_pp_ioctl CPerlObj::Perl_pp_ioctl +#define pp_ioctl Perl_pp_ioctl +#define Perl_pp_iter CPerlObj::Perl_pp_iter +#define pp_iter Perl_pp_iter +#define Perl_pp_join CPerlObj::Perl_pp_join +#define pp_join Perl_pp_join +#define Perl_pp_keys CPerlObj::Perl_pp_keys +#define pp_keys Perl_pp_keys +#define Perl_pp_kill CPerlObj::Perl_pp_kill +#define pp_kill Perl_pp_kill +#define Perl_pp_last CPerlObj::Perl_pp_last +#define pp_last Perl_pp_last +#define Perl_pp_lc CPerlObj::Perl_pp_lc +#define pp_lc Perl_pp_lc +#define Perl_pp_lcfirst CPerlObj::Perl_pp_lcfirst +#define pp_lcfirst Perl_pp_lcfirst +#define Perl_pp_le CPerlObj::Perl_pp_le +#define pp_le Perl_pp_le +#define Perl_pp_leave CPerlObj::Perl_pp_leave +#define pp_leave Perl_pp_leave +#define Perl_pp_leaveeval CPerlObj::Perl_pp_leaveeval +#define pp_leaveeval Perl_pp_leaveeval +#define Perl_pp_leaveloop CPerlObj::Perl_pp_leaveloop +#define pp_leaveloop Perl_pp_leaveloop +#define Perl_pp_leavesub CPerlObj::Perl_pp_leavesub +#define pp_leavesub Perl_pp_leavesub +#define Perl_pp_leavesublv CPerlObj::Perl_pp_leavesublv +#define pp_leavesublv Perl_pp_leavesublv +#define Perl_pp_leavetry CPerlObj::Perl_pp_leavetry +#define pp_leavetry Perl_pp_leavetry +#define Perl_pp_leavewrite CPerlObj::Perl_pp_leavewrite +#define pp_leavewrite Perl_pp_leavewrite +#define Perl_pp_left_shift CPerlObj::Perl_pp_left_shift +#define pp_left_shift Perl_pp_left_shift +#define Perl_pp_length CPerlObj::Perl_pp_length +#define pp_length Perl_pp_length +#define Perl_pp_lineseq CPerlObj::Perl_pp_lineseq +#define pp_lineseq Perl_pp_lineseq +#define Perl_pp_link CPerlObj::Perl_pp_link +#define pp_link Perl_pp_link +#define Perl_pp_list CPerlObj::Perl_pp_list +#define pp_list Perl_pp_list +#define Perl_pp_listen CPerlObj::Perl_pp_listen +#define pp_listen Perl_pp_listen +#define Perl_pp_localtime CPerlObj::Perl_pp_localtime +#define pp_localtime Perl_pp_localtime +#define Perl_pp_lock CPerlObj::Perl_pp_lock +#define pp_lock Perl_pp_lock +#define Perl_pp_log CPerlObj::Perl_pp_log +#define pp_log Perl_pp_log +#define Perl_pp_lslice CPerlObj::Perl_pp_lslice +#define pp_lslice Perl_pp_lslice +#define Perl_pp_lstat CPerlObj::Perl_pp_lstat +#define pp_lstat Perl_pp_lstat +#define Perl_pp_lt CPerlObj::Perl_pp_lt +#define pp_lt Perl_pp_lt +#define Perl_pp_mapstart CPerlObj::Perl_pp_mapstart +#define pp_mapstart Perl_pp_mapstart +#define Perl_pp_mapwhile CPerlObj::Perl_pp_mapwhile +#define pp_mapwhile Perl_pp_mapwhile +#define Perl_pp_match CPerlObj::Perl_pp_match +#define pp_match Perl_pp_match +#define Perl_pp_method CPerlObj::Perl_pp_method +#define pp_method Perl_pp_method +#define Perl_pp_method_named CPerlObj::Perl_pp_method_named +#define pp_method_named Perl_pp_method_named +#define Perl_pp_mkdir CPerlObj::Perl_pp_mkdir +#define pp_mkdir Perl_pp_mkdir +#define Perl_pp_modulo CPerlObj::Perl_pp_modulo +#define pp_modulo Perl_pp_modulo +#define Perl_pp_msgctl CPerlObj::Perl_pp_msgctl +#define pp_msgctl Perl_pp_msgctl +#define Perl_pp_msgget CPerlObj::Perl_pp_msgget +#define pp_msgget Perl_pp_msgget +#define Perl_pp_msgrcv CPerlObj::Perl_pp_msgrcv +#define pp_msgrcv Perl_pp_msgrcv +#define Perl_pp_msgsnd CPerlObj::Perl_pp_msgsnd +#define pp_msgsnd Perl_pp_msgsnd +#define Perl_pp_multiply CPerlObj::Perl_pp_multiply +#define pp_multiply Perl_pp_multiply +#define Perl_pp_ncmp CPerlObj::Perl_pp_ncmp +#define pp_ncmp Perl_pp_ncmp +#define Perl_pp_ne CPerlObj::Perl_pp_ne +#define pp_ne Perl_pp_ne +#define Perl_pp_negate CPerlObj::Perl_pp_negate +#define pp_negate Perl_pp_negate +#define Perl_pp_next CPerlObj::Perl_pp_next +#define pp_next Perl_pp_next +#define Perl_pp_nextstate CPerlObj::Perl_pp_nextstate +#define pp_nextstate Perl_pp_nextstate +#define Perl_pp_not CPerlObj::Perl_pp_not +#define pp_not Perl_pp_not +#define Perl_pp_null CPerlObj::Perl_pp_null +#define pp_null Perl_pp_null +#define Perl_pp_oct CPerlObj::Perl_pp_oct +#define pp_oct Perl_pp_oct +#define Perl_pp_open CPerlObj::Perl_pp_open +#define pp_open Perl_pp_open +#define Perl_pp_open_dir CPerlObj::Perl_pp_open_dir +#define pp_open_dir Perl_pp_open_dir +#define Perl_pp_or CPerlObj::Perl_pp_or +#define pp_or Perl_pp_or +#define Perl_pp_orassign CPerlObj::Perl_pp_orassign +#define pp_orassign Perl_pp_orassign +#define Perl_pp_ord CPerlObj::Perl_pp_ord +#define pp_ord Perl_pp_ord +#define Perl_pp_pack CPerlObj::Perl_pp_pack +#define pp_pack Perl_pp_pack +#define Perl_pp_padany CPerlObj::Perl_pp_padany +#define pp_padany Perl_pp_padany +#define Perl_pp_padav CPerlObj::Perl_pp_padav +#define pp_padav Perl_pp_padav +#define Perl_pp_padhv CPerlObj::Perl_pp_padhv +#define pp_padhv Perl_pp_padhv +#define Perl_pp_padsv CPerlObj::Perl_pp_padsv +#define pp_padsv Perl_pp_padsv +#define Perl_pp_pipe_op CPerlObj::Perl_pp_pipe_op +#define pp_pipe_op Perl_pp_pipe_op +#define Perl_pp_pop CPerlObj::Perl_pp_pop +#define pp_pop Perl_pp_pop +#define Perl_pp_pos CPerlObj::Perl_pp_pos +#define pp_pos Perl_pp_pos +#define Perl_pp_postdec CPerlObj::Perl_pp_postdec +#define pp_postdec Perl_pp_postdec +#define Perl_pp_postinc CPerlObj::Perl_pp_postinc +#define pp_postinc Perl_pp_postinc +#define Perl_pp_pow CPerlObj::Perl_pp_pow +#define pp_pow Perl_pp_pow +#define Perl_pp_predec CPerlObj::Perl_pp_predec +#define pp_predec Perl_pp_predec +#define Perl_pp_preinc CPerlObj::Perl_pp_preinc +#define pp_preinc Perl_pp_preinc +#define Perl_pp_print CPerlObj::Perl_pp_print +#define pp_print Perl_pp_print +#define Perl_pp_prototype CPerlObj::Perl_pp_prototype +#define pp_prototype Perl_pp_prototype +#define Perl_pp_prtf CPerlObj::Perl_pp_prtf +#define pp_prtf Perl_pp_prtf +#define Perl_pp_push CPerlObj::Perl_pp_push +#define pp_push Perl_pp_push +#define Perl_pp_pushmark CPerlObj::Perl_pp_pushmark +#define pp_pushmark Perl_pp_pushmark +#define Perl_pp_pushre CPerlObj::Perl_pp_pushre +#define pp_pushre Perl_pp_pushre +#define Perl_pp_qr CPerlObj::Perl_pp_qr +#define pp_qr Perl_pp_qr +#define Perl_pp_quotemeta CPerlObj::Perl_pp_quotemeta +#define pp_quotemeta Perl_pp_quotemeta +#define Perl_pp_rand CPerlObj::Perl_pp_rand +#define pp_rand Perl_pp_rand +#define Perl_pp_range CPerlObj::Perl_pp_range +#define pp_range Perl_pp_range +#define Perl_pp_rcatline CPerlObj::Perl_pp_rcatline +#define pp_rcatline Perl_pp_rcatline +#define Perl_pp_read CPerlObj::Perl_pp_read +#define pp_read Perl_pp_read +#define Perl_pp_readdir CPerlObj::Perl_pp_readdir +#define pp_readdir Perl_pp_readdir +#define Perl_pp_readline CPerlObj::Perl_pp_readline +#define pp_readline Perl_pp_readline +#define Perl_pp_readlink CPerlObj::Perl_pp_readlink +#define pp_readlink Perl_pp_readlink +#define Perl_pp_recv CPerlObj::Perl_pp_recv +#define pp_recv Perl_pp_recv +#define Perl_pp_redo CPerlObj::Perl_pp_redo +#define pp_redo Perl_pp_redo +#define Perl_pp_ref CPerlObj::Perl_pp_ref +#define pp_ref Perl_pp_ref +#define Perl_pp_refgen CPerlObj::Perl_pp_refgen +#define pp_refgen Perl_pp_refgen +#define Perl_pp_regcmaybe CPerlObj::Perl_pp_regcmaybe +#define pp_regcmaybe Perl_pp_regcmaybe +#define Perl_pp_regcomp CPerlObj::Perl_pp_regcomp +#define pp_regcomp Perl_pp_regcomp +#define Perl_pp_regcreset CPerlObj::Perl_pp_regcreset +#define pp_regcreset Perl_pp_regcreset +#define Perl_pp_rename CPerlObj::Perl_pp_rename +#define pp_rename Perl_pp_rename +#define Perl_pp_repeat CPerlObj::Perl_pp_repeat +#define pp_repeat Perl_pp_repeat +#define Perl_pp_require CPerlObj::Perl_pp_require +#define pp_require Perl_pp_require +#define Perl_pp_reset CPerlObj::Perl_pp_reset +#define pp_reset Perl_pp_reset +#define Perl_pp_return CPerlObj::Perl_pp_return +#define pp_return Perl_pp_return +#define Perl_pp_reverse CPerlObj::Perl_pp_reverse +#define pp_reverse Perl_pp_reverse +#define Perl_pp_rewinddir CPerlObj::Perl_pp_rewinddir +#define pp_rewinddir Perl_pp_rewinddir +#define Perl_pp_right_shift CPerlObj::Perl_pp_right_shift +#define pp_right_shift Perl_pp_right_shift +#define Perl_pp_rindex CPerlObj::Perl_pp_rindex +#define pp_rindex Perl_pp_rindex +#define Perl_pp_rmdir CPerlObj::Perl_pp_rmdir +#define pp_rmdir Perl_pp_rmdir +#define Perl_pp_rv2av CPerlObj::Perl_pp_rv2av +#define pp_rv2av Perl_pp_rv2av +#define Perl_pp_rv2cv CPerlObj::Perl_pp_rv2cv +#define pp_rv2cv Perl_pp_rv2cv +#define Perl_pp_rv2gv CPerlObj::Perl_pp_rv2gv +#define pp_rv2gv Perl_pp_rv2gv +#define Perl_pp_rv2hv CPerlObj::Perl_pp_rv2hv +#define pp_rv2hv Perl_pp_rv2hv +#define Perl_pp_rv2sv CPerlObj::Perl_pp_rv2sv +#define pp_rv2sv Perl_pp_rv2sv +#define Perl_pp_sassign CPerlObj::Perl_pp_sassign +#define pp_sassign Perl_pp_sassign +#define Perl_pp_scalar CPerlObj::Perl_pp_scalar +#define pp_scalar Perl_pp_scalar +#define Perl_pp_schomp CPerlObj::Perl_pp_schomp +#define pp_schomp Perl_pp_schomp +#define Perl_pp_schop CPerlObj::Perl_pp_schop +#define pp_schop Perl_pp_schop +#define Perl_pp_scmp CPerlObj::Perl_pp_scmp +#define pp_scmp Perl_pp_scmp +#define Perl_pp_scope CPerlObj::Perl_pp_scope +#define pp_scope Perl_pp_scope +#define Perl_pp_seek CPerlObj::Perl_pp_seek +#define pp_seek Perl_pp_seek +#define Perl_pp_seekdir CPerlObj::Perl_pp_seekdir +#define pp_seekdir Perl_pp_seekdir +#define Perl_pp_select CPerlObj::Perl_pp_select +#define pp_select Perl_pp_select +#define Perl_pp_semctl CPerlObj::Perl_pp_semctl +#define pp_semctl Perl_pp_semctl +#define Perl_pp_semget CPerlObj::Perl_pp_semget +#define pp_semget Perl_pp_semget +#define Perl_pp_semop CPerlObj::Perl_pp_semop +#define pp_semop Perl_pp_semop +#define Perl_pp_send CPerlObj::Perl_pp_send +#define pp_send Perl_pp_send +#define Perl_pp_seq CPerlObj::Perl_pp_seq +#define pp_seq Perl_pp_seq +#define Perl_pp_setpgrp CPerlObj::Perl_pp_setpgrp +#define pp_setpgrp Perl_pp_setpgrp +#define Perl_pp_setpriority CPerlObj::Perl_pp_setpriority +#define pp_setpriority Perl_pp_setpriority +#define Perl_pp_setstate CPerlObj::Perl_pp_setstate +#define pp_setstate Perl_pp_setstate +#define Perl_pp_sge CPerlObj::Perl_pp_sge +#define pp_sge Perl_pp_sge +#define Perl_pp_sgrent CPerlObj::Perl_pp_sgrent +#define pp_sgrent Perl_pp_sgrent +#define Perl_pp_sgt CPerlObj::Perl_pp_sgt +#define pp_sgt Perl_pp_sgt +#define Perl_pp_shift CPerlObj::Perl_pp_shift +#define pp_shift Perl_pp_shift +#define Perl_pp_shmctl CPerlObj::Perl_pp_shmctl +#define pp_shmctl Perl_pp_shmctl +#define Perl_pp_shmget CPerlObj::Perl_pp_shmget +#define pp_shmget Perl_pp_shmget +#define Perl_pp_shmread CPerlObj::Perl_pp_shmread +#define pp_shmread Perl_pp_shmread +#define Perl_pp_shmwrite CPerlObj::Perl_pp_shmwrite +#define pp_shmwrite Perl_pp_shmwrite +#define Perl_pp_shostent CPerlObj::Perl_pp_shostent +#define pp_shostent Perl_pp_shostent +#define Perl_pp_shutdown CPerlObj::Perl_pp_shutdown +#define pp_shutdown Perl_pp_shutdown +#define Perl_pp_sin CPerlObj::Perl_pp_sin +#define pp_sin Perl_pp_sin +#define Perl_pp_sle CPerlObj::Perl_pp_sle +#define pp_sle Perl_pp_sle +#define Perl_pp_sleep CPerlObj::Perl_pp_sleep +#define pp_sleep Perl_pp_sleep +#define Perl_pp_slt CPerlObj::Perl_pp_slt +#define pp_slt Perl_pp_slt +#define Perl_pp_sne CPerlObj::Perl_pp_sne +#define pp_sne Perl_pp_sne +#define Perl_pp_snetent CPerlObj::Perl_pp_snetent +#define pp_snetent Perl_pp_snetent +#define Perl_pp_socket CPerlObj::Perl_pp_socket +#define pp_socket Perl_pp_socket +#define Perl_pp_sockpair CPerlObj::Perl_pp_sockpair +#define pp_sockpair Perl_pp_sockpair +#define Perl_pp_sort CPerlObj::Perl_pp_sort +#define pp_sort Perl_pp_sort +#define Perl_pp_splice CPerlObj::Perl_pp_splice +#define pp_splice Perl_pp_splice +#define Perl_pp_split CPerlObj::Perl_pp_split +#define pp_split Perl_pp_split +#define Perl_pp_sprintf CPerlObj::Perl_pp_sprintf +#define pp_sprintf Perl_pp_sprintf +#define Perl_pp_sprotoent CPerlObj::Perl_pp_sprotoent +#define pp_sprotoent Perl_pp_sprotoent +#define Perl_pp_spwent CPerlObj::Perl_pp_spwent +#define pp_spwent Perl_pp_spwent +#define Perl_pp_sqrt CPerlObj::Perl_pp_sqrt +#define pp_sqrt Perl_pp_sqrt +#define Perl_pp_srand CPerlObj::Perl_pp_srand +#define pp_srand Perl_pp_srand +#define Perl_pp_srefgen CPerlObj::Perl_pp_srefgen +#define pp_srefgen Perl_pp_srefgen +#define Perl_pp_sselect CPerlObj::Perl_pp_sselect +#define pp_sselect Perl_pp_sselect +#define Perl_pp_sservent CPerlObj::Perl_pp_sservent +#define pp_sservent Perl_pp_sservent +#define Perl_pp_ssockopt CPerlObj::Perl_pp_ssockopt +#define pp_ssockopt Perl_pp_ssockopt +#define Perl_pp_stat CPerlObj::Perl_pp_stat +#define pp_stat Perl_pp_stat +#define Perl_pp_stringify CPerlObj::Perl_pp_stringify +#define pp_stringify Perl_pp_stringify +#define Perl_pp_stub CPerlObj::Perl_pp_stub +#define pp_stub Perl_pp_stub +#define Perl_pp_study CPerlObj::Perl_pp_study +#define pp_study Perl_pp_study +#define Perl_pp_subst CPerlObj::Perl_pp_subst +#define pp_subst Perl_pp_subst +#define Perl_pp_substcont CPerlObj::Perl_pp_substcont +#define pp_substcont Perl_pp_substcont +#define Perl_pp_substr CPerlObj::Perl_pp_substr +#define pp_substr Perl_pp_substr +#define Perl_pp_subtract CPerlObj::Perl_pp_subtract +#define pp_subtract Perl_pp_subtract +#define Perl_pp_symlink CPerlObj::Perl_pp_symlink +#define pp_symlink Perl_pp_symlink +#define Perl_pp_syscall CPerlObj::Perl_pp_syscall +#define pp_syscall Perl_pp_syscall +#define Perl_pp_sysopen CPerlObj::Perl_pp_sysopen +#define pp_sysopen Perl_pp_sysopen +#define Perl_pp_sysread CPerlObj::Perl_pp_sysread +#define pp_sysread Perl_pp_sysread +#define Perl_pp_sysseek CPerlObj::Perl_pp_sysseek +#define pp_sysseek Perl_pp_sysseek +#define Perl_pp_system CPerlObj::Perl_pp_system +#define pp_system Perl_pp_system +#define Perl_pp_syswrite CPerlObj::Perl_pp_syswrite +#define pp_syswrite Perl_pp_syswrite +#define Perl_pp_tell CPerlObj::Perl_pp_tell +#define pp_tell Perl_pp_tell +#define Perl_pp_telldir CPerlObj::Perl_pp_telldir +#define pp_telldir Perl_pp_telldir +#define Perl_pp_threadsv CPerlObj::Perl_pp_threadsv +#define pp_threadsv Perl_pp_threadsv +#define Perl_pp_tie CPerlObj::Perl_pp_tie +#define pp_tie Perl_pp_tie +#define Perl_pp_tied CPerlObj::Perl_pp_tied +#define pp_tied Perl_pp_tied +#define Perl_pp_time CPerlObj::Perl_pp_time +#define pp_time Perl_pp_time +#define Perl_pp_tms CPerlObj::Perl_pp_tms +#define pp_tms Perl_pp_tms +#define Perl_pp_trans CPerlObj::Perl_pp_trans +#define pp_trans Perl_pp_trans +#define Perl_pp_truncate CPerlObj::Perl_pp_truncate +#define pp_truncate Perl_pp_truncate +#define Perl_pp_uc CPerlObj::Perl_pp_uc +#define pp_uc Perl_pp_uc +#define Perl_pp_ucfirst CPerlObj::Perl_pp_ucfirst +#define pp_ucfirst Perl_pp_ucfirst +#define Perl_pp_umask CPerlObj::Perl_pp_umask +#define pp_umask Perl_pp_umask +#define Perl_pp_undef CPerlObj::Perl_pp_undef +#define pp_undef Perl_pp_undef +#define Perl_pp_unlink CPerlObj::Perl_pp_unlink +#define pp_unlink Perl_pp_unlink +#define Perl_pp_unpack CPerlObj::Perl_pp_unpack +#define pp_unpack Perl_pp_unpack +#define Perl_pp_unshift CPerlObj::Perl_pp_unshift +#define pp_unshift Perl_pp_unshift +#define Perl_pp_unstack CPerlObj::Perl_pp_unstack +#define pp_unstack Perl_pp_unstack +#define Perl_pp_untie CPerlObj::Perl_pp_untie +#define pp_untie Perl_pp_untie +#define Perl_pp_utime CPerlObj::Perl_pp_utime +#define pp_utime Perl_pp_utime +#define Perl_pp_values CPerlObj::Perl_pp_values +#define pp_values Perl_pp_values +#define Perl_pp_vec CPerlObj::Perl_pp_vec +#define pp_vec Perl_pp_vec +#define Perl_pp_wait CPerlObj::Perl_pp_wait +#define pp_wait Perl_pp_wait +#define Perl_pp_waitpid CPerlObj::Perl_pp_waitpid +#define pp_waitpid Perl_pp_waitpid +#define Perl_pp_wantarray CPerlObj::Perl_pp_wantarray +#define pp_wantarray Perl_pp_wantarray +#define Perl_pp_warn CPerlObj::Perl_pp_warn +#define pp_warn Perl_pp_warn +#define Perl_pp_xor CPerlObj::Perl_pp_xor +#define pp_xor Perl_pp_xor -#endif /* EMBED */ +#endif /* PERL_OBJECT */ + +/* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to + disable them. + */ + +#if !defined(PERL_CORE) +# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr)) +# define sv_setptrref(rv,ptr) sv_setref_iv(rv,Nullch,PTR2IV(ptr)) +#endif + +#if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) && !defined(PERL_BINCOMPAT_5005) + +/* Compatibility for various misnamed functions. All functions + in the API that begin with "perl_" (not "Perl_") take an explicit + interpreter context pointer. + The following are not like that, but since they had a "perl_" + prefix in previous versions, we provide compatibility macros. + */ +# define perl_atexit(a,b) call_atexit(a,b) +# define perl_call_argv(a,b,c) call_argv(a,b,c) +# define perl_call_pv(a,b) call_pv(a,b) +# define perl_call_method(a,b) call_method(a,b) +# define perl_call_sv(a,b) call_sv(a,b) +# define perl_eval_sv(a,b) eval_sv(a,b) +# define perl_eval_pv(a,b) eval_pv(a,b) +# define perl_require_pv(a) require_pv(a) +# define perl_get_sv(a,b) get_sv(a,b) +# define perl_get_av(a,b) get_av(a,b) +# define perl_get_hv(a,b) get_hv(a,b) +# define perl_get_cv(a,b) get_cv(a,b) +# define perl_init_i18nl10n(a) init_i18nl10n(a) +# define perl_init_i18nl14n(a) init_i18nl14n(a) +# define perl_new_ctype(a) new_ctype(a) +# define perl_new_collate(a) new_collate(a) +# define perl_new_numeric(a) new_numeric(a) + +/* varargs functions can't be handled with CPP macros. :-( + This provides a set of compatibility functions that don't take + an extra argument but grab the context pointer using the macro + dTHX. + */ +#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_OBJECT) +# define croak Perl_croak_nocontext +# define deb Perl_deb_nocontext +# define die Perl_die_nocontext +# define form Perl_form_nocontext +# define load_module Perl_load_module_nocontext +# define mess Perl_mess_nocontext +# define newSVpvf Perl_newSVpvf_nocontext +# define sv_catpvf Perl_sv_catpvf_nocontext +# define sv_setpvf Perl_sv_setpvf_nocontext +# define warn Perl_warn_nocontext +# define warner Perl_warner_nocontext +# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext +# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext +#endif + +#endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */ + +#if !defined(PERL_IMPLICIT_CONTEXT) +/* undefined symbols, point them back at the usual ones */ +# define Perl_croak_nocontext Perl_croak +# define Perl_die_nocontext Perl_die +# define Perl_deb_nocontext Perl_deb +# define Perl_form_nocontext Perl_form +# define Perl_load_module_nocontext Perl_load_module +# define Perl_mess_nocontext Perl_mess +# define Perl_newSVpvf_nocontext Perl_newSVpvf +# define Perl_sv_catpvf_nocontext Perl_sv_catpvf +# define Perl_sv_setpvf_nocontext Perl_sv_setpvf +# define Perl_warn_nocontext Perl_warn +# define Perl_warner_nocontext Perl_warner +# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg +# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg +#endif diff --git a/contrib/perl5/embed.pl b/contrib/perl5/embed.pl index 497b97df3557..593ab19f5548 100755 --- a/contrib/perl5/embed.pl +++ b/contrib/perl5/embed.pl @@ -1,6 +1,184 @@ #!/usr/bin/perl -w -require 5.003; +require 5.003; # keep this compatible, an old perl is all we may have before + # we build the new one + +# +# See database of global and static function prototypes at the __END__. +# This is used to generate prototype headers under various configurations, +# export symbols lists for different platforms, and macros to provide an +# implicit interpreter context argument. +# + +my $END = tell DATA; + +# walk table providing an array of components in each line to +# subroutine, printing the result +sub walk_table (&@) { + my $function = shift; + my $filename = shift || '-'; + my $leader = shift; + my $trailer = shift; + my $F; + local *F; + if (ref $filename) { # filehandle + $F = $filename; + } + else { + open F, ">$filename" or die "Can't open $filename: $!"; + $F = \*F; + } + print $F $leader if $leader; + seek DATA, $END, 0; # so we may restart + while () { + chomp; + next if /^:/; + while (s|\\$||) { + $_ .= ; + chomp; + } + my @args; + if (/^\s*(#|$)/) { + @args = $_; + } + else { + @args = split /\s*\|\s*/, $_; + } + print $F $function->(@args); + } + print $F $trailer if $trailer; + close $F unless ref $filename; +} + +sub munge_c_files () { + my $functions = {}; + unless (@ARGV) { + warn "\@ARGV empty, nothing to do\n"; + return; + } + walk_table { + if (@_ > 1) { + $functions->{$_[2]} = \@_ if $_[@_-1] =~ /\.\.\./; + } + } '/dev/null'; + local $^I = '.bak'; + while (<>) { +# if (/^#\s*include\s+"perl.h"/) { +# my $file = uc $ARGV; +# $file =~ s/\./_/g; +# print "#define PERL_IN_$file\n"; +# } +# s{^(\w+)\s*\(} +# { +# my $f = $1; +# my $repl = "$f("; +# if (exists $functions->{$f}) { +# my $flags = $functions->{$f}[0]; +# $repl = "Perl_$repl" if $flags =~ /p/; +# unless ($flags =~ /n/) { +# $repl .= "pTHX"; +# $repl .= "_ " if @{$functions->{$f}} > 3; +# } +# warn("$ARGV:$.:$repl\n"); +# } +# $repl; +# }e; + s{(\b(\w+)[ \t]*\([ \t]*(?!aTHX))} + { + my $repl = $1; + my $f = $2; + if (exists $functions->{$f}) { + $repl .= "aTHX_ "; + warn("$ARGV:$.:$`#$repl#$'"); + } + $repl; + }eg; + print; + close ARGV if eof; # restart $. + } + exit; +} + +#munge_c_files(); + +# generate proto.h +my $wrote_protected = 0; + +sub write_protos { + my $ret = ""; + if (@_ == 1) { + my $arg = shift; + $ret .= "$arg\n"; + } + else { + my ($flags,$retval,$func,@args) = @_; + if ($flags =~ /s/) { + $retval = "STATIC $retval"; + $func = "S_$func"; + } + else { + $retval = "PERL_CALLCONV $retval"; + if ($flags =~ /p/) { + $func = "Perl_$func"; + } + } + $ret .= "$retval\t$func("; + unless ($flags =~ /n/) { + $ret .= "pTHX"; + $ret .= "_ " if @args; + } + if (@args) { + $ret .= join ", ", @args; + } + else { + $ret .= "void" if $flags =~ /n/; + } + $ret .= ")"; + $ret .= " __attribute__((noreturn))" if $flags =~ /r/; + if( $flags =~ /f/ ) { + my $prefix = $flags =~ /n/ ? '' : 'pTHX_'; + my $args = scalar @args; + $ret .= "\n#ifdef CHECK_FORMAT\n"; + $ret .= sprintf " __attribute__((format(printf,%s%d,%s%d)))", + $prefix, $args - 1, $prefix, $args; + $ret .= "\n#endif\n"; + } + $ret .= ";\n"; + } + $ret; +} + +# generates global.sym (API export list), and populates %global with global symbols +sub write_global_sym { + my $ret = ""; + if (@_ > 1) { + my ($flags,$retval,$func,@args) = @_; + if ($flags =~ /A/ && $flags !~ /x/) { # public API, so export + $func = "Perl_$func" if $flags =~ /p/; + $ret = "$func\n"; + } + } + $ret; +} + + +walk_table(\&write_protos, 'proto.h', <<'EOT'); +/* + * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + * This file is autogenerated from data in embed.pl. Edit that file + * and run 'make regen_headers' to effect changes. + */ + +EOT + +walk_table(\&write_global_sym, 'global.sym', <<'EOT'); +# +# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! +# This file is autogenerated from data in embed.pl. Edit that file +# and run 'make regen_headers' to effect changes. +# + +EOT # XXX others that may need adding # warnhook @@ -9,6 +187,7 @@ require 5.003; my @extvars = qw(sv_undef sv_yes sv_no na dowarn curcop compiling tainting tainted stack_base stack_sp sv_arenaroot + no_modify curstash DBsub DBsingle debstash rsfp stdingv @@ -23,31 +202,37 @@ my @extvars = qw(sv_undef sv_yes sv_no na dowarn sub readsyms (\%$) { my ($syms, $file) = @_; - %$syms = (); local (*FILE, $_); open(FILE, "< $file") or die "embed.pl: Can't open $file: $!\n"; while () { s/[ \t]*#.*//; # Delete comments. if (/^\s*(\S+)\s*$/) { - $$syms{$1} = 1; + my $sym = $1; + warn "duplicate symbol $sym while processing $file\n" + if exists $$syms{$sym}; + $$syms{$sym} = 1; } } close(FILE); } -readsyms %global, 'global.sym'; +# Perl_pp_* and Perl_ck_* are in pp.sym +readsyms my %ppsym, 'pp.sym'; -sub readvars(\%$$) { - my ($syms, $file,$pre) = @_; - %$syms = (); +sub readvars(\%$$@) { + my ($syms, $file,$pre,$keep_pre) = @_; local (*FILE, $_); open(FILE, "< $file") or die "embed.pl: Can't open $file: $!\n"; while () { s/[ \t]*#.*//; # Delete comments. - if (/PERLVARI?C?\($pre(\w+)/) { - $$syms{$1} = 1; + if (/PERLVARA?I?C?\($pre(\w+)/) { + my $sym = $1; + $sym = $pre . $sym if $keep_pre; + warn "duplicate symbol $sym while processing $file\n" + if exists $$syms{$sym}; + $$syms{$sym} = $pre || 1; } } close(FILE); @@ -60,93 +245,293 @@ readvars %intrp, 'intrpvar.h','I'; readvars %thread, 'thrdvar.h','T'; readvars %globvar, 'perlvars.h','G'; -foreach my $sym (sort keys %intrp) - { - if (exists $global{$sym}) - { - delete $global{$sym}; - warn "$sym in global.sym as well as intrpvar.h\n"; - } - } - -foreach my $sym (sort keys %globvar) - { - if (exists $global{$sym}) - { - delete $global{$sym}; - warn "$sym in global.sym as well as perlvars.h\n"; - } - } - -foreach my $sym (sort keys %thread) - { +foreach my $sym (sort keys %thread) { warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym}; - if (exists $global{$sym}) - { - delete $global{$sym}; - warn "$sym in global.sym as well as thrdvar.h\n"; - } - } +} + +sub undefine ($) { + my ($sym) = @_; + "#undef $sym\n"; +} sub hide ($$) { my ($from, $to) = @_; my $t = int(length($from) / 8); "#define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n"; } -sub embed ($) { - my ($sym) = @_; - hide($sym, "Perl_$sym"); -} -sub embedvar ($) { - my ($sym) = @_; -# hide($sym, "Perl_$sym"); - return ''; + +sub bincompat_var ($$) { + my ($pfx, $sym) = @_; + my $arg = ($pfx eq 'G' ? 'NULL' : 'aTHXo'); + undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))"); } sub multon ($$$) { my ($sym,$pre,$ptr) = @_; hide("PL_$sym", "($ptr$pre$sym)"); } + sub multoff ($$) { my ($sym,$pre) = @_; return hide("PL_$pre$sym", "PL_$sym"); } unlink 'embed.h'; -open(EM, '> embed.h') - or die "Can't create embed.h: $!\n"; +open(EM, '> embed.h') or die "Can't create embed.h: $!\n"; print EM <<'END'; /* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by embed.pl from global.sym, intrpvar.h, - and thrdvar.h. Any changes made here will be lost! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! */ /* (Doing namespace management portably in C is really gross.) */ -/* EMBED has no run-time penalty, but helps keep the Perl namespace - from colliding with that used by other libraries pulled in - by extensions or by embedding perl. Allow a cc -DNO_EMBED - override, however, to keep binary compatability with previous - versions of perl. -*/ -#ifndef NO_EMBED -# define EMBED 1 +/* NO_EMBED is no longer supported. i.e. EMBED is always active. */ + +/* provide binary compatible (but inconsistent) names */ +#if defined(PERL_BINCOMPAT_5005) +# define Perl_call_atexit perl_atexit +# define Perl_eval_sv perl_eval_sv +# define Perl_eval_pv perl_eval_pv +# define Perl_call_argv perl_call_argv +# define Perl_call_method perl_call_method +# define Perl_call_pv perl_call_pv +# define Perl_call_sv perl_call_sv +# define Perl_get_av perl_get_av +# define Perl_get_cv perl_get_cv +# define Perl_get_hv perl_get_hv +# define Perl_get_sv perl_get_sv +# define Perl_init_i18nl10n perl_init_i18nl10n +# define Perl_init_i18nl14n perl_init_i18nl14n +# define Perl_new_collate perl_new_collate +# define Perl_new_ctype perl_new_ctype +# define Perl_new_numeric perl_new_numeric +# define Perl_require_pv perl_require_pv +# define Perl_safesyscalloc Perl_safecalloc +# define Perl_safesysfree Perl_safefree +# define Perl_safesysmalloc Perl_safemalloc +# define Perl_safesysrealloc Perl_saferealloc +# define Perl_set_numeric_local perl_set_numeric_local +# define Perl_set_numeric_standard perl_set_numeric_standard +/* malloc() pollution was the default in earlier versions, so enable + * it for bincompat; but not for systems that used to do prevent that, + * or when they ask for {HIDE,EMBED}MYMALLOC */ +# if !defined(EMBEDMYMALLOC) && !defined(HIDEMYMALLOC) +# if !defined(NeXT) && !defined(__NeXT) && !defined(__MACHTEN__) && \ + !defined(__QNX__) +# define PERL_POLLUTE_MALLOC +# endif +# endif #endif -/* Hide global symbols? */ +/* Hide global symbols */ -#ifdef EMBED +#if !defined(PERL_OBJECT) +#if !defined(PERL_IMPLICIT_CONTEXT) END -for $sym (sort keys %global) { - print EM embed($sym); +walk_table { + my $ret = ""; + if (@_ == 1) { + my $arg = shift; + $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/; + } + else { + my ($flags,$retval,$func,@args) = @_; + unless ($flags =~ /o/) { + if ($flags =~ /s/) { + $ret .= hide($func,"S_$func"); + } + elsif ($flags =~ /p/) { + $ret .= hide($func,"Perl_$func"); + } + } + } + $ret; +} \*EM; + +for $sym (sort keys %ppsym) { + $sym =~ s/^Perl_//; + print EM hide($sym, "Perl_$sym"); } print EM <<'END'; -#endif /* EMBED */ +#else /* PERL_IMPLICIT_CONTEXT */ + +END + +my @az = ('a'..'z'); + +walk_table { + my $ret = ""; + if (@_ == 1) { + my $arg = shift; + $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/; + } + else { + my ($flags,$retval,$func,@args) = @_; + unless ($flags =~ /o/) { + my $args = scalar @args; + if ($args and $args[$args-1] =~ /\.\.\./) { + # we're out of luck for varargs functions under CPP + } + elsif ($flags =~ /n/) { + if ($flags =~ /s/) { + $ret .= hide($func,"S_$func"); + } + elsif ($flags =~ /p/) { + $ret .= hide($func,"Perl_$func"); + } + } + else { + my $alist = join(",", @az[0..$args-1]); + $ret = "#define $func($alist)"; + my $t = int(length($ret) / 8); + $ret .= "\t" x ($t < 4 ? 4 - $t : 1); + if ($flags =~ /s/) { + $ret .= "S_$func(aTHX"; + } + elsif ($flags =~ /p/) { + $ret .= "Perl_$func(aTHX"; + } + $ret .= "_ " if $alist; + $ret .= $alist . ")\n"; + } + } + } + $ret; +} \*EM; + +for $sym (sort keys %ppsym) { + $sym =~ s/^Perl_//; + if ($sym =~ /^ck_/) { + print EM hide("$sym(a)", "Perl_$sym(aTHX_ a)"); + } + elsif ($sym =~ /^pp_/) { + print EM hide("$sym()", "Perl_$sym(aTHX)"); + } + else { + warn "Illegal symbol '$sym' in pp.sym"; + } +} + +print EM <<'END'; + +#endif /* PERL_IMPLICIT_CONTEXT */ +#else /* PERL_OBJECT */ + +END + +walk_table { + my $ret = ""; + if (@_ == 1) { + my $arg = shift; + $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/; + } + else { + my ($flags,$retval,$func,@args) = @_; + if ($flags =~ /s/) { + $ret .= hide("S_$func","CPerlObj::S_$func") if $flags !~ /j/; + $ret .= hide($func,"S_$func"); + } + elsif ($flags =~ /p/) { + $ret .= hide("Perl_$func","CPerlObj::Perl_$func") if $flags !~ /j/; + $ret .= hide($func,"Perl_$func"); + } + else { + $ret .= hide($func,"CPerlObj::$func") if $flags !~ /j/; + } + } + $ret; +} \*EM; + +for $sym (sort keys %ppsym) { + $sym =~ s/^Perl_//; + print EM hide("Perl_$sym", "CPerlObj::Perl_$sym"); + print EM hide($sym, "Perl_$sym"); +} + +print EM <<'END'; + +#endif /* PERL_OBJECT */ + +/* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to + disable them. + */ + +#if !defined(PERL_CORE) +# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr)) +# define sv_setptrref(rv,ptr) sv_setref_iv(rv,Nullch,PTR2IV(ptr)) +#endif + +#if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) && !defined(PERL_BINCOMPAT_5005) + +/* Compatibility for various misnamed functions. All functions + in the API that begin with "perl_" (not "Perl_") take an explicit + interpreter context pointer. + The following are not like that, but since they had a "perl_" + prefix in previous versions, we provide compatibility macros. + */ +# define perl_atexit(a,b) call_atexit(a,b) +# define perl_call_argv(a,b,c) call_argv(a,b,c) +# define perl_call_pv(a,b) call_pv(a,b) +# define perl_call_method(a,b) call_method(a,b) +# define perl_call_sv(a,b) call_sv(a,b) +# define perl_eval_sv(a,b) eval_sv(a,b) +# define perl_eval_pv(a,b) eval_pv(a,b) +# define perl_require_pv(a) require_pv(a) +# define perl_get_sv(a,b) get_sv(a,b) +# define perl_get_av(a,b) get_av(a,b) +# define perl_get_hv(a,b) get_hv(a,b) +# define perl_get_cv(a,b) get_cv(a,b) +# define perl_init_i18nl10n(a) init_i18nl10n(a) +# define perl_init_i18nl14n(a) init_i18nl14n(a) +# define perl_new_ctype(a) new_ctype(a) +# define perl_new_collate(a) new_collate(a) +# define perl_new_numeric(a) new_numeric(a) + +/* varargs functions can't be handled with CPP macros. :-( + This provides a set of compatibility functions that don't take + an extra argument but grab the context pointer using the macro + dTHX. + */ +#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_OBJECT) +# define croak Perl_croak_nocontext +# define deb Perl_deb_nocontext +# define die Perl_die_nocontext +# define form Perl_form_nocontext +# define load_module Perl_load_module_nocontext +# define mess Perl_mess_nocontext +# define newSVpvf Perl_newSVpvf_nocontext +# define sv_catpvf Perl_sv_catpvf_nocontext +# define sv_setpvf Perl_sv_setpvf_nocontext +# define warn Perl_warn_nocontext +# define warner Perl_warner_nocontext +# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext +# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext +#endif + +#endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */ + +#if !defined(PERL_IMPLICIT_CONTEXT) +/* undefined symbols, point them back at the usual ones */ +# define Perl_croak_nocontext Perl_croak +# define Perl_die_nocontext Perl_die +# define Perl_deb_nocontext Perl_deb +# define Perl_form_nocontext Perl_form +# define Perl_load_module_nocontext Perl_load_module +# define Perl_mess_nocontext Perl_mess +# define Perl_newSVpvf_nocontext Perl_newSVpvf +# define Perl_sv_catpvf_nocontext Perl_sv_catpvf +# define Perl_sv_setpvf_nocontext Perl_sv_setpvf +# define Perl_warn_nocontext Perl_warn +# define Perl_warner_nocontext Perl_warner +# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg +# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg +#endif END @@ -158,49 +543,95 @@ open(EM, '> embedvar.h') print EM <<'END'; /* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by embed.pl from global.sym, intrpvar.h, - and thrdvar.h. Any changes made here will be lost! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! */ /* (Doing namespace management portably in C is really gross.) */ -/* EMBED has no run-time penalty, but helps keep the Perl namespace - from colliding with that used by other libraries pulled in - by extensions or by embedding perl. Allow a cc -DNO_EMBED - override, however, to keep binary compatability with previous - versions of perl. +/* + The following combinations of MULTIPLICITY, USE_THREADS, PERL_OBJECT + and PERL_IMPLICIT_CONTEXT are supported: + 1) none + 2) MULTIPLICITY # supported for compatibility + 3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT + 4) USE_THREADS && PERL_IMPLICIT_CONTEXT + 5) MULTIPLICITY && USE_THREADS && PERL_IMPLICIT_CONTEXT + 6) PERL_OBJECT && PERL_IMPLICIT_CONTEXT + + All other combinations of these flags are errors. + + #3, #4, #5, and #6 are supported directly, while #2 is a special + case of #3 (supported by redefining vTHX appropriately). */ +#if defined(MULTIPLICITY) +/* cases 2, 3 and 5 above */ -/* Put interpreter-specific symbols into a struct? */ - -#ifdef MULTIPLICITY - -#ifndef USE_THREADS -/* If we do not have threads then per-thread vars are per-interpreter */ +# if defined(PERL_IMPLICIT_CONTEXT) +# define vTHX aTHX +# else +# define vTHX PERL_GET_INTERP +# endif END for $sym (sort keys %thread) { - print EM multon($sym,'T','PL_curinterp->'); + print EM multon($sym,'T','vTHX->'); } print EM <<'END'; -#endif /* !USE_THREADS */ +# if defined(PERL_OBJECT) +# include "error: PERL_OBJECT + MULTIPLICITY don't go together" +# endif -/* These are always per-interpreter if there is more than one */ +# if defined(USE_THREADS) +/* case 5 above */ END for $sym (sort keys %intrp) { - print EM multon($sym,'I','PL_curinterp->'); + print EM multon($sym,'I','PERL_GET_INTERP->'); } print EM <<'END'; +# else /* !USE_THREADS */ +/* cases 2 and 3 above */ + +END + +for $sym (sort keys %intrp) { + print EM multon($sym,'I','vTHX->'); +} + +print EM <<'END'; + +# endif /* USE_THREADS */ + #else /* !MULTIPLICITY */ +# if defined(PERL_OBJECT) +/* case 6 above */ + +END + +for $sym (sort keys %thread) { + print EM multon($sym,'T','aTHXo->interp.'); +} + + +for $sym (sort keys %intrp) { + print EM multon($sym,'I','aTHXo->interp.'); +} + +print EM <<'END'; + +# else /* !PERL_OBJECT */ + +/* cases 1 and 4 above */ + END for $sym (sort keys %intrp) { @@ -209,7 +640,19 @@ for $sym (sort keys %intrp) { print EM <<'END'; -#ifndef USE_THREADS +# if defined(USE_THREADS) +/* case 4 above */ + +END + +for $sym (sort keys %thread) { + print EM multon($sym,'T','aTHX->'); +} + +print EM <<'END'; + +# else /* !USE_THREADS */ +/* case 1 above */ END @@ -219,49 +662,11 @@ for $sym (sort keys %thread) { print EM <<'END'; -#endif /* USE_THREADS */ +# endif /* USE_THREADS */ +# endif /* PERL_OBJECT */ +#endif /* MULTIPLICITY */ -/* Hide what would have been interpreter-specific symbols? */ - -#ifdef EMBED - -END - -for $sym (sort keys %intrp) { - print EM embedvar($sym); -} - -print EM <<'END'; - -#ifndef USE_THREADS - -END - -for $sym (sort keys %thread) { - print EM embedvar($sym); -} - -print EM <<'END'; - -#endif /* USE_THREADS */ -#endif /* EMBED */ -#endif /* MULTIPLICITY */ - -/* Now same trickey for per-thread variables */ - -#ifdef USE_THREADS - -END - -for $sym (sort keys %thread) { - print EM multon($sym,'T','thr->'); -} - -print EM <<'END'; - -#endif /* USE_THREADS */ - -#ifdef PERL_GLOBAL_STRUCT +#if defined(PERL_GLOBAL_STRUCT) END @@ -281,24 +686,9 @@ for $sym (sort keys %globvar) { print EM <<'END'; -#ifdef EMBED - -END - -for $sym (sort keys %globvar) { - print EM embedvar($sym); -} - -print EM <<'END'; - -#endif /* EMBED */ #endif /* PERL_GLOBAL_STRUCT */ -END - -print EM <<'END'; - -#ifndef MIN_PERL_DEFINE +#ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */ END @@ -308,8 +698,1797 @@ for $sym (sort @extvars) { print EM <<'END'; -#endif /* MIN_PERL_DEFINE */ +#endif /* PERL_POLLUTE */ END - close(EM); + +unlink 'objXSUB.h'; +open(OBX, '> objXSUB.h') + or die "Can't create objXSUB.h: $!\n"; + +print OBX <<'EOT'; +/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! +*/ + +#ifndef __objXSUB_h__ +#define __objXSUB_h__ + +/* method calls via pPerl (static functions without a "this" pointer need these) */ + +#if defined(PERL_CORE) && defined(PERL_OBJECT) + +/* XXX soon to be eliminated, only a few things in PERLCORE need these now */ + +EOT + +walk_table { + my $ret = ""; + if (@_ == 1) { + my $arg = shift; + $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/; + } + else { + my ($flags,$retval,$func,@args) = @_; + if ($flags =~ /A/ && $flags !~ /j/) { # API function needing macros + if ($flags =~ /p/) { + $ret .= undefine("Perl_$func") . hide("Perl_$func","pPerl->Perl_$func"); + $ret .= undefine($func) . hide($func,"Perl_$func"); + } + else { + $ret .= undefine($func) . hide($func,"pPerl->$func"); + } + } + } + $ret; +} \*OBX; + +# NOTE: not part of API +#for $sym (sort keys %ppsym) { +# $sym =~ s/^Perl_//; +# print OBX undefine("Perl_$sym") . hide("Perl_$sym", "pPerl->Perl_$sym"); +# print OBX undefine($sym) . hide($sym, "Perl_$sym"); +#} + +print OBX <<'EOT'; + +#endif /* PERL_CORE && PERL_OBJECT */ +#endif /* __objXSUB_h__ */ +EOT + +close(OBX); + +unlink 'perlapi.h'; +unlink 'perlapi.c'; +open(CAPI, '> perlapi.c') or die "Can't create perlapi.c: $!\n"; +open(CAPIH, '> perlapi.h') or die "Can't create perlapi.h: $!\n"; + +print CAPIH <<'EOT'; +/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! +*/ + +/* declare accessor functions for Perl variables */ +#ifndef __perlapi_h__ +#define __perlapi_h__ + +#if defined(PERL_OBJECT) || defined (MULTIPLICITY) + +#if defined(PERL_OBJECT) +# undef aTHXo +# define aTHXo pPerl +# undef aTHXo_ +# define aTHXo_ aTHXo, +#endif /* PERL_OBJECT */ + +START_EXTERN_C + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC +#define PERLVAR(v,t) EXTERN_C t* Perl_##v##_ptr(pTHXo); +#define PERLVARA(v,n,t) typedef t PL_##v##_t[n]; \ + EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHXo); +#define PERLVARI(v,t,i) PERLVAR(v,t) +#define PERLVARIC(v,t,i) PERLVAR(v, const t) + +#include "thrdvar.h" +#include "intrpvar.h" +#include "perlvars.h" + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC + +END_EXTERN_C + +#if defined(PERL_CORE) + +/* accessor functions for Perl variables (provide binary compatibility) */ + +/* these need to be mentioned here, or most linkers won't put them in + the perl executable */ + +#ifndef PERL_NO_FORCE_LINK + +START_EXTERN_C + +#ifndef DOINIT +EXT void *PL_force_link_funcs[]; +#else +EXT void *PL_force_link_funcs[] = { +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC +#define PERLVAR(v,t) (void*)Perl_##v##_ptr, +#define PERLVARA(v,n,t) PERLVAR(v,t) +#define PERLVARI(v,t,i) PERLVAR(v,t) +#define PERLVARIC(v,t,i) PERLVAR(v,t) + +#include "thrdvar.h" +#include "intrpvar.h" +#include "perlvars.h" + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC +}; +#endif /* DOINIT */ + +START_EXTERN_C + +#endif /* PERL_NO_FORCE_LINK */ + +#else /* !PERL_CORE */ + +EOT + +foreach my $sym (sort keys %intrp) { + print CAPIH bincompat_var('I',$sym); +} + +foreach my $sym (sort keys %thread) { + print CAPIH bincompat_var('T',$sym); +} + +foreach my $sym (sort keys %globvar) { + print CAPIH bincompat_var('G',$sym); +} + +print CAPIH <<'EOT'; + +#endif /* !PERL_CORE */ +#endif /* PERL_OBJECT || MULTIPLICITY */ + +#endif /* __perlapi_h__ */ + +EOT +close CAPIH; + +print CAPI <<'EOT'; +/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! +*/ + +#include "EXTERN.h" +#include "perl.h" +#include "perlapi.h" + +#if defined(PERL_OBJECT) || defined (MULTIPLICITY) + +/* accessor functions for Perl variables (provides binary compatibility) */ +START_EXTERN_C + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC + +#if defined(PERL_OBJECT) +#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHXo) \ + { return &(aTHXo->interp.v); } +#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHXo) \ + { return &(aTHXo->interp.v); } +#else /* MULTIPLICITY */ +#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHX) \ + { return &(aTHX->v); } +#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHX) \ + { return &(aTHX->v); } +#endif + +#define PERLVARI(v,t,i) PERLVAR(v,t) +#define PERLVARIC(v,t,i) PERLVAR(v, const t) + +#include "thrdvar.h" +#include "intrpvar.h" + +#undef PERLVAR +#undef PERLVARA +#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHXo) \ + { return &(PL_##v); } +#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHXo) \ + { return &(PL_##v); } +#include "perlvars.h" + +#undef PERLVAR +#undef PERLVARA +#undef PERLVARI +#undef PERLVARIC + +#if defined(PERL_OBJECT) + +/* C-API layer for PERL_OBJECT */ + +EOT + +# functions that take va_list* for implementing vararg functions +# NOTE: makedef.pl must be updated if you add symbols to %vfuncs +my %vfuncs = qw( + Perl_croak Perl_vcroak + Perl_warn Perl_vwarn + Perl_warner Perl_vwarner + Perl_die Perl_vdie + Perl_form Perl_vform + Perl_load_module Perl_vload_module + Perl_mess Perl_vmess + Perl_deb Perl_vdeb + Perl_newSVpvf Perl_vnewSVpvf + Perl_sv_setpvf Perl_sv_vsetpvf + Perl_sv_setpvf_mg Perl_sv_vsetpvf_mg + Perl_sv_catpvf Perl_sv_vcatpvf + Perl_sv_catpvf_mg Perl_sv_vcatpvf_mg + Perl_dump_indent Perl_dump_vindent + Perl_default_protect Perl_vdefault_protect +); + +sub emit_func { + my ($addcontext, $rettype,$func,@args) = @_; + my @aargs = @args; + my $a; + for $a (@aargs) { $a =~ s/^.*\b(\w+)$/$1/ } + my $ctxarg = ''; + if (not $addcontext) { + $ctxarg = 'pTHXo'; + $ctxarg .= '_ ' if @args; + } + my $decl = ''; + if ($addcontext) { + $decl .= " dTHXo;\n"; + } + local $" = ', '; + my $return = ($rettype =~ /^\s*(void|Free_t|Signal_t)\s*$/ + ? '' : 'return '); + my $emitval = ''; + if (@args and $args[$#args] =~ /\.\.\./) { + pop @aargs; + my $retarg = ''; + my $ctxfunc = $func; + $ctxfunc =~ s/_nocontext$//; + return $emitval unless exists $vfuncs{$ctxfunc}; + if (length $return) { + $decl .= " $rettype retval;\n"; + $retarg .= "retval = "; + $return = "\n ${return}retval;\n"; + } + $emitval .= <$vfuncs{$ctxfunc}(@aargs, &args); + va_end(args);$return +} +EOT + } + else { + $emitval .= <$func(@aargs); +} +EOT + } + $emitval; +} + +# XXXX temporary hack +my $sym; +for $sym (qw( + perl_construct + perl_destruct + perl_free + perl_run + perl_parse + )) +{ + $skipapi_funcs{$sym}++; +} + +walk_table { + my $ret = ""; + if (@_ == 1) { + my $arg = shift; + $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/; + } + else { + my ($flags,$retval,$func,@args) = @_; + return $ret if exists $skipapi_funcs{$func}; + if ($flags =~ /A/ && $flags !~ /j/) { # in public API, needed for XSUBS + $ret .= "\n"; + my $addctx = 1 if $flags =~ /n/; + if ($flags =~ /p/) { + $ret .= undefine("Perl_$func"); + $ret .= emit_func($addctx,$retval,"Perl_$func",@args); + } + else { + $ret .= undefine($func); + $ret .= emit_func($addctx,$retval,$func,@args); + } + } + } + $ret; +} \*CAPI; + +# NOTE: not part of the API +#for $sym (sort keys %ppsym) { +# $sym =~ s/^Perl_//; +# print CAPI "\n"; +# print CAPI undefine("Perl_$sym"); +# if ($sym =~ /^ck_/) { +# print CAPI emit_func(0, 'OP *',"Perl_$sym",'OP *o'); +# } +# else { # pp_foo +# print CAPI emit_func(0, 'OP *',"Perl_$sym"); +# } +#} + +print CAPI <<'EOT'; + +#undef Perl_fprintf_nocontext +int +Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...) +{ + dTHXo; + va_list(arglist); + va_start(arglist, format); + return (*PL_StdIO->pVprintf)(PL_StdIO, stream, format, arglist); +} + +END_EXTERN_C + +#endif /* PERL_OBJECT */ +#endif /* PERL_OBJECT || MULTIPLICITY */ +EOT + +close(CAPI); + +# autogenerate documentation from comments in source files + +my %apidocs; +my %gutsdocs; +my %docfuncs; + +sub autodoc ($) { # parse a file and extract documentation info + my($fh) = @_; + my($in, $doc); + +FUNC: + while (defined($in = <$fh>)) { + if ($in =~ /^=for\s+apidoc\s+(.*)\n/) { + my $proto = $1; + $proto = "||$proto" unless $proto =~ /\|/; + my($flags, $ret, $name, @args) = split /\|/, $proto; + my $docs = ""; +DOC: + while (defined($doc = <$fh>)) { + last DOC if $doc =~ /^=\w+/; + $docs .= $doc; + } + $docs = "\n$docs" if $docs and $docs !~ /^\n/; + if ($flags =~ /m/) { + if ($flags =~ /A/) { + $apidocs{$name} = [$flags, $docs, $ret, @args]; + } + else { + $gutsdocs{$name} = [$flags, $docs, $ret, @args]; + } + } + else { + $docfuncs{$name} = [$flags, $docs, $ret, @args]; + } + if ($doc =~ /^=for/) { + $in = $doc; + redo FUNC; + } + } + } +} + +sub docout ($$$) { # output the docs for one function + my($fh, $name, $docref) = @_; + my($flags, $docs, $ret, @args) = @$docref; + + $docs .= "NOTE: the perl_ form of this function is deprecated.\n\n" + if $flags =~ /p/; + + print $fh "=item $name\n$docs"; + + if ($flags =~ /U/) { # no usage + # nothing + } elsif ($flags =~ /s/) { # semicolon ("dTHR;") + print $fh "\t\t$name;\n\n"; + } elsif ($flags =~ /n/) { # no args + print $fh "\t$ret\t$name\n\n"; + } else { # full usage + print $fh "\t$ret\t$name"; + print $fh "(" . join(", ", @args) . ")"; + print $fh "\n\n"; + } +} + +my $file; +for $file (glob('*.c'), glob('*.h')) { + open F, "< $file" or die "Cannot open $file for docs: $!\n"; + autodoc(\*F); + close F or die "Error closing $file: $!\n"; +} + +unlink "pod/perlapi.pod"; +open (DOC, ">pod/perlapi.pod") or + die "Can't create pod/perlapi.pod: $!\n"; + +walk_table { # load documented functions into approriate hash + if (@_ > 1) { + my($flags, $retval, $func, @args) = @_; + return "" unless $flags =~ /d/; + $func =~ s/\t//g; $flags =~ s/p//; # clean up fields from embed.pl + $retval =~ s/\t//; + if ($flags =~ /A/) { + my $docref = delete $docfuncs{$func}; + warn "no docs for $func\n" unless $docref and @$docref; + $apidocs{$func} = [$docref->[0] . 'A', $docref->[1], $retval, @args]; + } else { + my $docref = delete $docfuncs{$func}; + $gutsdocs{$func} = [$docref->[0], $docref->[1], $retval, @args]; + } + } + return ""; +} \*DOC; + +for (sort keys %docfuncs) { + warn "Unable to place $_!\n"; +} + +print DOC <<'_EOB_'; +=head1 NAME + +perlapi - autogenerated documentation for the perl public API + +=head1 DESCRIPTION + +This file contains the documentation of the perl public API generated by +embed.pl, specifically a listing of functions, macros, flags, and variables +that may be used by extension writers. The interfaces of any functions that +are not listed here are subject to change without notice. For this reason, +blindly using functions listed in proto.h is to be avoided when writing +extensions. + +Note that all Perl API global variables must be referenced with the C +prefix. Some macros are provided for compatibility with the older, +unadorned names, but this support may be disabled in a future release. + +The listing is alphabetical, case insensitive. + +=over 8 + +_EOB_ + +my $key; +for $key (sort { uc($a) cmp uc($b); } keys %apidocs) { # case insensitive sort + docout(\*DOC, $key, $apidocs{$key}); +} + +print DOC <<'_EOE_'; +=back + +=head1 AUTHORS + +Until May 1997, this document was maintained by Jeff Okamoto +. It is now maintained as part of Perl itself. + +With lots of help and suggestions from Dean Roehrich, Malcolm Beattie, +Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil +Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer, +Stephen McCamant, and Gurusamy Sarathy. + +API Listing originally by Dean Roehrich . + +Updated to be autogenerated from comments in the source by Benjamin Stuhl. + +=head1 SEE ALSO + +perlguts(1), perlxs(1), perlxstut(1), perlintern(1) + +_EOE_ + + +close(DOC); + +open(GUTS, ">pod/perlintern.pod") or + die "Unable to create pod/perlintern.pod: $!\n"; +print GUTS <<'END'; +=head1 NAME + +perlintern - autogenerated documentation of purely B + Perl functions + +=head1 DESCRIPTION + +This file is the autogenerated documentation of functions in the +Perl intrepreter that are documented using Perl's internal documentation +format but are not marked as part of the Perl API. In other words, +B! + +=over 8 + +END + +for $key (sort { uc($a) cmp uc($b); } keys %gutsdocs) { + docout(\*GUTS, $key, $gutsdocs{$key}); +} + +print GUTS <<'END'; +=back + +=head1 AUTHORS + +The autodocumentation system was orignally added to the Perl core by +Benjamin Stuhl. Documentation is by whoever was kind enough to +document their functions. + +=head1 SEE ALSO + +perlguts(1), perlapi(1) + +END + +close GUTS; + + +__END__ + +: Lines are of the form: +: flags|return_type|function_name|arg1|arg2|...|argN +: +: A line may be continued on another by ending it with a backslash. +: Leading and trailing whitespace will be ignored in each component. +: +: flags are single letters with following meanings: +: A member of public API +: d function has documentation with its source +: s static function, should have an S_ prefix in source +: file +: n has no implicit interpreter/thread context argument +: p function has a Perl_ prefix +: f function takes printf style format string, varargs +: r function never returns +: o has no compatibility macro (#define foo Perl_foo) +: j not a member of CPerlObj +: x not exported +: +: Individual flags may be separated by whitespace. +: +: New global functions should be added at the end for binary compatibility +: in some configurations. + +START_EXTERN_C + +#if defined(PERL_IMPLICIT_SYS) +Ajno |PerlInterpreter* |perl_alloc_using \ + |struct IPerlMem* m|struct IPerlMem* ms \ + |struct IPerlMem* mp|struct IPerlEnv* e \ + |struct IPerlStdIO* io|struct IPerlLIO* lio \ + |struct IPerlDir* d|struct IPerlSock* s \ + |struct IPerlProc* p +#endif +Ajnod |PerlInterpreter* |perl_alloc +Ajnod |void |perl_construct |PerlInterpreter* interp +Ajnod |void |perl_destruct |PerlInterpreter* interp +Ajnod |void |perl_free |PerlInterpreter* interp +Ajnod |int |perl_run |PerlInterpreter* interp +Ajnod |int |perl_parse |PerlInterpreter* interp|XSINIT_t xsinit \ + |int argc|char** argv|char** env +#if defined(USE_ITHREADS) +: XXX: perl_clone needs docs +Ajno |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags +# if defined(PERL_IMPLICIT_SYS) +Ajno |PerlInterpreter*|perl_clone_using|PerlInterpreter *interp|UV flags \ + |struct IPerlMem* m|struct IPerlMem* ms \ + |struct IPerlMem* mp|struct IPerlEnv* e \ + |struct IPerlStdIO* io|struct IPerlLIO* lio \ + |struct IPerlDir* d|struct IPerlSock* s \ + |struct IPerlProc* p +# endif +#endif + +#if defined(MYMALLOC) +Ajnop |Malloc_t|malloc |MEM_SIZE nbytes +Ajnop |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size +Ajnop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes +Ajnop |Free_t |mfree |Malloc_t where +jnp |MEM_SIZE|malloced_size |void *p +#endif + +Ajnp |void* |get_context +Ajnp |void |set_context |void *thx + +END_EXTERN_C + +/* functions with flag 'n' should come before here */ +#if defined(PERL_OBJECT) +class CPerlObj { +public: + struct interpreter interp; + CPerlObj(IPerlMem*, IPerlMem*, IPerlMem*, IPerlEnv*, IPerlStdIO*, + IPerlLIO*, IPerlDir*, IPerlSock*, IPerlProc*); + void* operator new(size_t nSize, IPerlMem *pvtbl); +#ifndef __BORLANDC__ + static void operator delete(void* pPerl, IPerlMem *pvtbl); +#endif + int do_aspawn (void *vreally, void **vmark, void **vsp); +#endif +#if defined(PERL_OBJECT) +public: +#else +START_EXTERN_C +#endif +# include "pp_proto.h" +Ap |SV* |amagic_call |SV* left|SV* right|int method|int dir +Ap |bool |Gv_AMupdate |HV* stash +p |OP* |append_elem |I32 optype|OP* head|OP* tail +p |OP* |append_list |I32 optype|LISTOP* first|LISTOP* last +p |I32 |apply |I32 type|SV** mark|SV** sp +Ap |SV* |avhv_delete_ent|AV *ar|SV* keysv|I32 flags|U32 hash +Ap |bool |avhv_exists_ent|AV *ar|SV* keysv|U32 hash +Ap |SV** |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash +Ap |SV** |avhv_store_ent |AV *ar|SV* keysv|SV* val|U32 hash +Ap |HE* |avhv_iternext |AV *ar +Ap |SV* |avhv_iterval |AV *ar|HE* entry +Ap |HV* |avhv_keys |AV *ar +Apd |void |av_clear |AV* ar +Ap |SV* |av_delete |AV* ar|I32 key|I32 flags +Ap |bool |av_exists |AV* ar|I32 key +Apd |void |av_extend |AV* ar|I32 key +Ap |AV* |av_fake |I32 size|SV** svp +Apd |SV** |av_fetch |AV* ar|I32 key|I32 lval +Ap |void |av_fill |AV* ar|I32 fill +Apd |I32 |av_len |AV* ar +Apd |AV* |av_make |I32 size|SV** svp +Apd |SV* |av_pop |AV* ar +Apd |void |av_push |AV* ar|SV* val +Ap |void |av_reify |AV* ar +Apd |SV* |av_shift |AV* ar +Apd |SV** |av_store |AV* ar|I32 key|SV* val +Apd |void |av_undef |AV* ar +Apd |void |av_unshift |AV* ar|I32 num +p |OP* |bind_match |I32 type|OP* left|OP* pat +p |OP* |block_end |I32 floor|OP* seq +Ap |I32 |block_gimme +p |int |block_start |int full +p |void |boot_core_UNIVERSAL +Ap |void |call_list |I32 oldscope|AV* av_list +p |bool |cando |Mode_t mode|Uid_t effective|Stat_t* statbufp +Ap |U32 |cast_ulong |NV f +Ap |I32 |cast_i32 |NV f +Ap |IV |cast_iv |NV f +Ap |UV |cast_uv |NV f +#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) +Ap |I32 |my_chsize |int fd|Off_t length +#endif +#if defined(USE_THREADS) +Ap |MAGIC* |condpair_magic |SV *sv +#endif +p |OP* |convert |I32 optype|I32 flags|OP* o +Afprd |void |croak |const char* pat|... +Apr |void |vcroak |const char* pat|va_list* args +#if defined(PERL_IMPLICIT_CONTEXT) +Afnrp |void |croak_nocontext|const char* pat|... +Afnp |OP* |die_nocontext |const char* pat|... +Afnp |void |deb_nocontext |const char* pat|... +Afnp |char* |form_nocontext |const char* pat|... +Afnp |void |load_module_nocontext|U32 flags|SV* name|SV* ver|... +Afnp |SV* |mess_nocontext |const char* pat|... +Afnp |void |warn_nocontext |const char* pat|... +Afnp |void |warner_nocontext|U32 err|const char* pat|... +Afnp |SV* |newSVpvf_nocontext|const char* pat|... +Afnp |void |sv_catpvf_nocontext|SV* sv|const char* pat|... +Afnp |void |sv_setpvf_nocontext|SV* sv|const char* pat|... +Afnp |void |sv_catpvf_mg_nocontext|SV* sv|const char* pat|... +Afnp |void |sv_setpvf_mg_nocontext|SV* sv|const char* pat|... +Afnp |int |fprintf_nocontext|PerlIO* stream|const char* fmt|... +#endif +p |void |cv_ckproto |CV* cv|GV* gv|char* p +p |CV* |cv_clone |CV* proto +Ap |SV* |cv_const_sv |CV* cv +p |SV* |op_const_sv |OP* o|CV* cv +Ap |void |cv_undef |CV* cv +Ap |void |cx_dump |PERL_CONTEXT* cs +Ap |SV* |filter_add |filter_t funcp|SV* datasv +Ap |void |filter_del |filter_t funcp +Ap |I32 |filter_read |int idx|SV* buffer|int maxlen +Ap |char** |get_op_descs +Ap |char** |get_op_names +p |char* |get_no_modify +p |U32* |get_opargs +Ap |PPADDR_t*|get_ppaddr +p |I32 |cxinc +Afp |void |deb |const char* pat|... +Ap |void |vdeb |const char* pat|va_list* args +Ap |void |debprofdump +Ap |I32 |debop |OP* o +Ap |I32 |debstack +Ap |I32 |debstackptrs +Ap |char* |delimcpy |char* to|char* toend|char* from \ + |char* fromend|int delim|I32* retlen +p |void |deprecate |char* s +Afp |OP* |die |const char* pat|... +p |OP* |vdie |const char* pat|va_list* args +p |OP* |die_where |char* message|STRLEN msglen +Ap |void |dounwind |I32 cxix +p |bool |do_aexec |SV* really|SV** mark|SV** sp +p |bool |do_aexec5 |SV* really|SV** mark|SV** sp|int fd|int flag +Ap |int |do_binmode |PerlIO *fp|int iotype|int flag +p |void |do_chop |SV* asv|SV* sv +Ap |bool |do_close |GV* gv|bool not_implicit +p |bool |do_eof |GV* gv +p |bool |do_exec |char* cmd +#if !defined(WIN32) +p |bool |do_exec3 |char* cmd|int fd|int flag +#endif +p |void |do_execfree +#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) +p |I32 |do_ipcctl |I32 optype|SV** mark|SV** sp +p |I32 |do_ipcget |I32 optype|SV** mark|SV** sp +p |I32 |do_msgrcv |SV** mark|SV** sp +p |I32 |do_msgsnd |SV** mark|SV** sp +p |I32 |do_semop |SV** mark|SV** sp +p |I32 |do_shmio |I32 optype|SV** mark|SV** sp +#endif +p |void |do_join |SV* sv|SV* del|SV** mark|SV** sp +p |OP* |do_kv +Ap |bool |do_open |GV* gv|char* name|I32 len|int as_raw \ + |int rawmode|int rawperm|PerlIO* supplied_fp +Ap |bool |do_open9 |GV *gv|char *name|I32 len|int as_raw \ + |int rawmode|int rawperm|PerlIO *supplied_fp \ + |SV *svs|I32 num +p |void |do_pipe |SV* sv|GV* rgv|GV* wgv +p |bool |do_print |SV* sv|PerlIO* fp +p |OP* |do_readline +p |I32 |do_chomp |SV* sv +p |bool |do_seek |GV* gv|Off_t pos|int whence +p |void |do_sprintf |SV* sv|I32 len|SV** sarg +p |Off_t |do_sysseek |GV* gv|Off_t pos|int whence +p |Off_t |do_tell |GV* gv +p |I32 |do_trans |SV* sv +p |UV |do_vecget |SV* sv|I32 offset|I32 size +p |void |do_vecset |SV* sv +p |void |do_vop |I32 optype|SV* sv|SV* left|SV* right +p |OP* |dofile |OP* term +Ap |I32 |dowantarray +Ap |void |dump_all +Ap |void |dump_eval +#if defined(DUMP_FDS) +Ap |void |dump_fds |char* s +#endif +Ap |void |dump_form |GV* gv +Ap |void |gv_dump |GV* gv +Ap |void |op_dump |OP* arg +Ap |void |pmop_dump |PMOP* pm +Ap |void |dump_packsubs |HV* stash +Ap |void |dump_sub |GV* gv +Apd |void |fbm_compile |SV* sv|U32 flags +Apd |char* |fbm_instr |unsigned char* big|unsigned char* bigend \ + |SV* littlesv|U32 flags +p |char* |find_script |char *scriptname|bool dosearch \ + |char **search_ext|I32 flags +#if defined(USE_THREADS) +p |PADOFFSET|find_threadsv|const char *name +#endif +p |OP* |force_list |OP* arg +p |OP* |fold_constants |OP* arg +Afp |char* |form |const char* pat|... +Ap |char* |vform |const char* pat|va_list* args +Ap |void |free_tmps +p |OP* |gen_constant_list|OP* o +#if !defined(HAS_GETENV_LEN) +p |char* |getenv_len |char* key|unsigned long *len +#endif +Ap |void |gp_free |GV* gv +Ap |GP* |gp_ref |GP* gp +Ap |GV* |gv_AVadd |GV* gv +Ap |GV* |gv_HVadd |GV* gv +Ap |GV* |gv_IOadd |GV* gv +Ap |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \ + |I32 method +Ap |void |gv_check |HV* stash +Ap |void |gv_efullname |SV* sv|GV* gv +Ap |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix +Ap |GV* |gv_fetchfile |const char* name +Apd |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \ + |I32 level +Apd |GV* |gv_fetchmethod |HV* stash|const char* name +Apd |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \ + |I32 autoload +Ap |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type +Ap |void |gv_fullname |SV* sv|GV* gv +Ap |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix +Ap |void |gv_init |GV* gv|HV* stash|const char* name \ + |STRLEN len|int multi +Apd |HV* |gv_stashpv |const char* name|I32 create +Ap |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create +Apd |HV* |gv_stashsv |SV* sv|I32 create +Apd |void |hv_clear |HV* tb +Ap |void |hv_delayfree_ent|HV* hv|HE* entry +Apd |SV* |hv_delete |HV* tb|const char* key|U32 klen|I32 flags +Apd |SV* |hv_delete_ent |HV* tb|SV* key|I32 flags|U32 hash +Apd |bool |hv_exists |HV* tb|const char* key|U32 klen +Apd |bool |hv_exists_ent |HV* tb|SV* key|U32 hash +Apd |SV** |hv_fetch |HV* tb|const char* key|U32 klen|I32 lval +Apd |HE* |hv_fetch_ent |HV* tb|SV* key|I32 lval|U32 hash +Ap |void |hv_free_ent |HV* hv|HE* entry +Apd |I32 |hv_iterinit |HV* tb +Apd |char* |hv_iterkey |HE* entry|I32* retlen +Apd |SV* |hv_iterkeysv |HE* entry +Apd |HE* |hv_iternext |HV* tb +Apd |SV* |hv_iternextsv |HV* hv|char** key|I32* retlen +Apd |SV* |hv_iterval |HV* tb|HE* entry +Ap |void |hv_ksplit |HV* hv|IV newmax +Apd |void |hv_magic |HV* hv|GV* gv|int how +Apd |SV** |hv_store |HV* tb|const char* key|U32 klen|SV* val \ + |U32 hash +Apd |HE* |hv_store_ent |HV* tb|SV* key|SV* val|U32 hash +Apd |void |hv_undef |HV* tb +Ap |I32 |ibcmp |const char* a|const char* b|I32 len +Ap |I32 |ibcmp_locale |const char* a|const char* b|I32 len +p |bool |ingroup |Gid_t testgid|Uid_t effective +p |void |init_debugger +Ap |void |init_stacks +p |U32 |intro_my +Ap |char* |instr |const char* big|const char* little +p |bool |io_close |IO* io|bool not_implicit +p |OP* |invert |OP* cmd +Ap |bool |is_uni_alnum |U32 c +Ap |bool |is_uni_alnumc |U32 c +Ap |bool |is_uni_idfirst |U32 c +Ap |bool |is_uni_alpha |U32 c +Ap |bool |is_uni_ascii |U32 c +Ap |bool |is_uni_space |U32 c +Ap |bool |is_uni_cntrl |U32 c +Ap |bool |is_uni_graph |U32 c +Ap |bool |is_uni_digit |U32 c +Ap |bool |is_uni_upper |U32 c +Ap |bool |is_uni_lower |U32 c +Ap |bool |is_uni_print |U32 c +Ap |bool |is_uni_punct |U32 c +Ap |bool |is_uni_xdigit |U32 c +Ap |U32 |to_uni_upper |U32 c +Ap |U32 |to_uni_title |U32 c +Ap |U32 |to_uni_lower |U32 c +Ap |bool |is_uni_alnum_lc|U32 c +Ap |bool |is_uni_alnumc_lc|U32 c +Ap |bool |is_uni_idfirst_lc|U32 c +Ap |bool |is_uni_alpha_lc|U32 c +Ap |bool |is_uni_ascii_lc|U32 c +Ap |bool |is_uni_space_lc|U32 c +Ap |bool |is_uni_cntrl_lc|U32 c +Ap |bool |is_uni_graph_lc|U32 c +Ap |bool |is_uni_digit_lc|U32 c +Ap |bool |is_uni_upper_lc|U32 c +Ap |bool |is_uni_lower_lc|U32 c +Ap |bool |is_uni_print_lc|U32 c +Ap |bool |is_uni_punct_lc|U32 c +Ap |bool |is_uni_xdigit_lc|U32 c +Ap |U32 |to_uni_upper_lc|U32 c +Ap |U32 |to_uni_title_lc|U32 c +Ap |U32 |to_uni_lower_lc|U32 c +Ap |int |is_utf8_char |U8 *p +Ap |bool |is_utf8_alnum |U8 *p +Ap |bool |is_utf8_alnumc |U8 *p +Ap |bool |is_utf8_idfirst|U8 *p +Ap |bool |is_utf8_alpha |U8 *p +Ap |bool |is_utf8_ascii |U8 *p +Ap |bool |is_utf8_space |U8 *p +Ap |bool |is_utf8_cntrl |U8 *p +Ap |bool |is_utf8_digit |U8 *p +Ap |bool |is_utf8_graph |U8 *p +Ap |bool |is_utf8_upper |U8 *p +Ap |bool |is_utf8_lower |U8 *p +Ap |bool |is_utf8_print |U8 *p +Ap |bool |is_utf8_punct |U8 *p +Ap |bool |is_utf8_xdigit |U8 *p +Ap |bool |is_utf8_mark |U8 *p +p |OP* |jmaybe |OP* arg +p |I32 |keyword |char* d|I32 len +Ap |void |leave_scope |I32 base +p |void |lex_end +p |void |lex_start |SV* line +p |OP* |linklist |OP* o +p |OP* |list |OP* o +p |OP* |listkids |OP* o +Afp |void |load_module|U32 flags|SV* name|SV* ver|... +Ap |void |vload_module|U32 flags|SV* name|SV* ver|va_list* args +p |OP* |localize |OP* arg|I32 lexical +Apd |I32 |looks_like_number|SV* sv +p |int |magic_clearenv |SV* sv|MAGIC* mg +p |int |magic_clear_all_env|SV* sv|MAGIC* mg +p |int |magic_clearpack|SV* sv|MAGIC* mg +p |int |magic_clearsig |SV* sv|MAGIC* mg +p |int |magic_existspack|SV* sv|MAGIC* mg +p |int |magic_freeregexp|SV* sv|MAGIC* mg +p |int |magic_get |SV* sv|MAGIC* mg +p |int |magic_getarylen|SV* sv|MAGIC* mg +p |int |magic_getdefelem|SV* sv|MAGIC* mg +p |int |magic_getglob |SV* sv|MAGIC* mg +p |int |magic_getnkeys |SV* sv|MAGIC* mg +p |int |magic_getpack |SV* sv|MAGIC* mg +p |int |magic_getpos |SV* sv|MAGIC* mg +p |int |magic_getsig |SV* sv|MAGIC* mg +p |int |magic_getsubstr|SV* sv|MAGIC* mg +p |int |magic_gettaint |SV* sv|MAGIC* mg +p |int |magic_getuvar |SV* sv|MAGIC* mg +p |int |magic_getvec |SV* sv|MAGIC* mg +p |U32 |magic_len |SV* sv|MAGIC* mg +#if defined(USE_THREADS) +p |int |magic_mutexfree|SV* sv|MAGIC* mg +#endif +p |int |magic_nextpack |SV* sv|MAGIC* mg|SV* key +p |U32 |magic_regdata_cnt|SV* sv|MAGIC* mg +p |int |magic_regdatum_get|SV* sv|MAGIC* mg +p |int |magic_set |SV* sv|MAGIC* mg +p |int |magic_setamagic|SV* sv|MAGIC* mg +p |int |magic_setarylen|SV* sv|MAGIC* mg +p |int |magic_setbm |SV* sv|MAGIC* mg +p |int |magic_setdbline|SV* sv|MAGIC* mg +#if defined(USE_LOCALE_COLLATE) +p |int |magic_setcollxfrm|SV* sv|MAGIC* mg +#endif +p |int |magic_setdefelem|SV* sv|MAGIC* mg +p |int |magic_setenv |SV* sv|MAGIC* mg +p |int |magic_setfm |SV* sv|MAGIC* mg +p |int |magic_setisa |SV* sv|MAGIC* mg +p |int |magic_setglob |SV* sv|MAGIC* mg +p |int |magic_setmglob |SV* sv|MAGIC* mg +p |int |magic_setnkeys |SV* sv|MAGIC* mg +p |int |magic_setpack |SV* sv|MAGIC* mg +p |int |magic_setpos |SV* sv|MAGIC* mg +p |int |magic_setsig |SV* sv|MAGIC* mg +p |int |magic_setsubstr|SV* sv|MAGIC* mg +p |int |magic_settaint |SV* sv|MAGIC* mg +p |int |magic_setuvar |SV* sv|MAGIC* mg +p |int |magic_setvec |SV* sv|MAGIC* mg +p |int |magic_set_all_env|SV* sv|MAGIC* mg +p |U32 |magic_sizepack |SV* sv|MAGIC* mg +p |int |magic_wipepack |SV* sv|MAGIC* mg +p |void |magicname |char* sym|char* name|I32 namlen +Ap |void |markstack_grow +#if defined(USE_LOCALE_COLLATE) +p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen +#endif +Afp |SV* |mess |const char* pat|... +Ap |SV* |vmess |const char* pat|va_list* args +p |void |qerror |SV* err +Apd |int |mg_clear |SV* sv +Apd |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen +Apd |MAGIC* |mg_find |SV* sv|int type +Apd |int |mg_free |SV* sv +Apd |int |mg_get |SV* sv +Apd |U32 |mg_length |SV* sv +Apd |void |mg_magical |SV* sv +Apd |int |mg_set |SV* sv +Ap |I32 |mg_size |SV* sv +p |OP* |mod |OP* o|I32 type +p |int |mode_from_discipline|SV* discp +Ap |char* |moreswitches |char* s +p |OP* |my |OP* o +Ap |NV |my_atof |const char *s +#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY) +Anp |char* |my_bcopy |const char* from|char* to|I32 len +#endif +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) +Anp |char* |my_bzero |char* loc|I32 len +#endif +Apr |void |my_exit |U32 status +Apr |void |my_failure_exit +Ap |I32 |my_fflush_all +Ap |I32 |my_lstat +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) +Anp |I32 |my_memcmp |const char* s1|const char* s2|I32 len +#endif +#if !defined(HAS_MEMSET) +Anp |void* |my_memset |char* loc|I32 ch|I32 len +#endif +#if !defined(PERL_OBJECT) +Ap |I32 |my_pclose |PerlIO* ptr +Ap |PerlIO*|my_popen |char* cmd|char* mode +#endif +Ap |void |my_setenv |char* nam|char* val +Ap |I32 |my_stat +#if defined(MYSWAP) +Ap |short |my_swap |short s +Ap |long |my_htonl |long l +Ap |long |my_ntohl |long l +#endif +p |void |my_unexec +Ap |OP* |newANONLIST |OP* o +Ap |OP* |newANONHASH |OP* o +Ap |OP* |newANONSUB |I32 floor|OP* proto|OP* block +Ap |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right +Ap |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop +Apd |void |newCONSTSUB |HV* stash|char* name|SV* sv +Ap |void |newFORM |I32 floor|OP* o|OP* block +Ap |OP* |newFOROP |I32 flags|char* label|line_t forline \ + |OP* sclr|OP* expr|OP*block|OP*cont +Ap |OP* |newLOGOP |I32 optype|I32 flags|OP* left|OP* right +Ap |OP* |newLOOPEX |I32 type|OP* label +Ap |OP* |newLOOPOP |I32 flags|I32 debuggable|OP* expr|OP* block +Ap |OP* |newNULLLIST +Ap |OP* |newOP |I32 optype|I32 flags +Ap |void |newPROG |OP* o +Ap |OP* |newRANGE |I32 flags|OP* left|OP* right +Ap |OP* |newSLICEOP |I32 flags|OP* subscript|OP* listop +Ap |OP* |newSTATEOP |I32 flags|char* label|OP* o +Ap |CV* |newSUB |I32 floor|OP* o|OP* proto|OP* block +Apd |CV* |newXS |char* name|XSUBADDR_t f|char* filename +Apd |AV* |newAV +Ap |OP* |newAVREF |OP* o +Ap |OP* |newBINOP |I32 type|I32 flags|OP* first|OP* last +Ap |OP* |newCVREF |I32 flags|OP* o +Ap |OP* |newGVOP |I32 type|I32 flags|GV* gv +Ap |GV* |newGVgen |char* pack +Ap |OP* |newGVREF |I32 type|OP* o +Ap |OP* |newHVREF |OP* o +Apd |HV* |newHV +Ap |HV* |newHVhv |HV* hv +Ap |IO* |newIO +Ap |OP* |newLISTOP |I32 type|I32 flags|OP* first|OP* last +Ap |OP* |newPADOP |I32 type|I32 flags|SV* sv +Ap |OP* |newPMOP |I32 type|I32 flags +Ap |OP* |newPVOP |I32 type|I32 flags|char* pv +Ap |SV* |newRV |SV* pref +Apd |SV* |newRV_noinc |SV *sv +Ap |SV* |newSV |STRLEN len +Ap |OP* |newSVREF |OP* o +Ap |OP* |newSVOP |I32 type|I32 flags|SV* sv +Apd |SV* |newSViv |IV i +Apd |SV* |newSVuv |UV u +Apd |SV* |newSVnv |NV n +Apd |SV* |newSVpv |const char* s|STRLEN len +Apd |SV* |newSVpvn |const char* s|STRLEN len +Afpd |SV* |newSVpvf |const char* pat|... +Ap |SV* |vnewSVpvf |const char* pat|va_list* args +Apd |SV* |newSVrv |SV* rv|const char* classname +Apd |SV* |newSVsv |SV* old +Ap |OP* |newUNOP |I32 type|I32 flags|OP* first +Ap |OP* |newWHILEOP |I32 flags|I32 debuggable|LOOP* loop \ + |I32 whileline|OP* expr|OP* block|OP* cont + +Ap |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems +p |PerlIO*|nextargv |GV* gv +Ap |char* |ninstr |const char* big|const char* bigend \ + |const char* little|const char* lend +p |OP* |oopsCV |OP* o +Ap |void |op_free |OP* arg +p |void |package |OP* o +p |PADOFFSET|pad_alloc |I32 optype|U32 tmptype +p |PADOFFSET|pad_allocmy |char* name +p |PADOFFSET|pad_findmy |char* name +p |OP* |oopsAV |OP* o +p |OP* |oopsHV |OP* o +p |void |pad_leavemy |I32 fill +Ap |SV* |pad_sv |PADOFFSET po +p |void |pad_free |PADOFFSET po +p |void |pad_reset +p |void |pad_swipe |PADOFFSET po +p |void |peep |OP* o +#if defined(PERL_OBJECT) +Aox |void |Perl_construct +Aox |void |Perl_destruct +Aox |void |Perl_free +Aox |int |Perl_run +Aox |int |Perl_parse |XSINIT_t xsinit \ + |int argc|char** argv|char** env +#endif +#if defined(USE_THREADS) +Ap |struct perl_thread* |new_struct_thread|struct perl_thread *t +#endif +Ap |void |call_atexit |ATEXIT_t fn|void *ptr +Apd |I32 |call_argv |const char* sub_name|I32 flags|char** argv +Apd |I32 |call_method |const char* methname|I32 flags +Apd |I32 |call_pv |const char* sub_name|I32 flags +Apd |I32 |call_sv |SV* sv|I32 flags +Apd |SV* |eval_pv |const char* p|I32 croak_on_error +Apd |I32 |eval_sv |SV* sv|I32 flags +Apd |SV* |get_sv |const char* name|I32 create +Apd |AV* |get_av |const char* name|I32 create +Apd |HV* |get_hv |const char* name|I32 create +Apd |CV* |get_cv |const char* name|I32 create +Ap |int |init_i18nl10n |int printwarn +Ap |int |init_i18nl14n |int printwarn +Ap |void |new_collate |const char* newcoll +Ap |void |new_ctype |const char* newctype +Ap |void |new_numeric |const char* newcoll +Ap |void |set_numeric_local +Ap |void |set_numeric_radix +Ap |void |set_numeric_standard +Apd |void |require_pv |const char* pv +p |void |pidgone |Pid_t pid|int status +Ap |void |pmflag |U16* pmfl|int ch +p |OP* |pmruntime |OP* pm|OP* expr|OP* repl +p |OP* |pmtrans |OP* o|OP* expr|OP* repl +p |OP* |pop_return +Ap |void |pop_scope +p |OP* |prepend_elem |I32 optype|OP* head|OP* tail +p |void |push_return |OP* o +Ap |void |push_scope +p |OP* |ref |OP* o|I32 type +p |OP* |refkids |OP* o|I32 type +Ap |void |regdump |regexp* r +Ap |I32 |pregexec |regexp* prog|char* stringarg \ + |char* strend|char* strbeg|I32 minend \ + |SV* screamer|U32 nosave +Ap |void |pregfree |struct regexp* r +Ap |regexp*|pregcomp |char* exp|char* xend|PMOP* pm +Ap |char* |re_intuit_start|regexp* prog|SV* sv|char* strpos \ + |char* strend|U32 flags \ + |struct re_scream_pos_data_s *data +Ap |SV* |re_intuit_string|regexp* prog +Ap |I32 |regexec_flags |regexp* prog|char* stringarg \ + |char* strend|char* strbeg|I32 minend \ + |SV* screamer|void* data|U32 flags +Ap |regnode*|regnext |regnode* p +p |void |regprop |SV* sv|regnode* o +Ap |void |repeatcpy |char* to|const char* from|I32 len|I32 count +Ap |char* |rninstr |const char* big|const char* bigend \ + |const char* little|const char* lend +p |Sighandler_t|rsignal |int i|Sighandler_t t +p |int |rsignal_restore|int i|Sigsave_t* t +p |int |rsignal_save |int i|Sighandler_t t1|Sigsave_t* t2 +p |Sighandler_t|rsignal_state|int i +p |void |rxres_free |void** rsp +p |void |rxres_restore |void** rsp|REGEXP* prx +p |void |rxres_save |void** rsp|REGEXP* prx +#if !defined(HAS_RENAME) +p |I32 |same_dirent |char* a|char* b +#endif +Apd |char* |savepv |const char* sv +Apd |char* |savepvn |const char* sv|I32 len +Ap |void |savestack_grow +Ap |void |save_aelem |AV* av|I32 idx|SV **sptr +Ap |I32 |save_alloc |I32 size|I32 pad +Ap |void |save_aptr |AV** aptr +Ap |AV* |save_ary |GV* gv +Ap |void |save_clearsv |SV** svp +Ap |void |save_delete |HV* hv|char* key|I32 klen +Ap |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|void* p +Ap |void |save_destructor_x|DESTRUCTORFUNC_t f|void* p +Ap |void |save_freesv |SV* sv +p |void |save_freeop |OP* o +Ap |void |save_freepv |char* pv +Ap |void |save_generic_svref|SV** sptr +Ap |void |save_gp |GV* gv|I32 empty +Ap |HV* |save_hash |GV* gv +Ap |void |save_helem |HV* hv|SV *key|SV **sptr +Ap |void |save_hints +Ap |void |save_hptr |HV** hptr +Ap |void |save_I16 |I16* intp +Ap |void |save_I32 |I32* intp +Ap |void |save_I8 |I8* bytep +Ap |void |save_int |int* intp +Ap |void |save_item |SV* item +Ap |void |save_iv |IV* iv +Ap |void |save_list |SV** sarg|I32 maxsarg +Ap |void |save_long |long* longp +Ap |void |save_nogv |GV* gv +p |void |save_op +Ap |SV* |save_scalar |GV* gv +Ap |void |save_pptr |char** pptr +Ap |void |save_vptr |void* pptr +Ap |void |save_re_context +Ap |void |save_sptr |SV** sptr +Ap |SV* |save_svref |SV** sptr +Ap |SV** |save_threadsv |PADOFFSET i +p |OP* |sawparens |OP* o +p |OP* |scalar |OP* o +p |OP* |scalarkids |OP* o +p |OP* |scalarseq |OP* o +p |OP* |scalarvoid |OP* o +Ap |NV |scan_bin |char* start|I32 len|I32* retlen +Ap |NV |scan_hex |char* start|I32 len|I32* retlen +Ap |char* |scan_num |char* s +Ap |NV |scan_oct |char* start|I32 len|I32* retlen +p |OP* |scope |OP* o +Ap |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \ + |I32 end_shift|I32 *state|I32 last +#if !defined(VMS) +p |I32 |setenv_getix |char* nam +#endif +p |void |setdefout |GV* gv +Ap |char* |sharepvn |const char* sv|I32 len|U32 hash +p |HEK* |share_hek |const char* sv|I32 len|U32 hash +np |Signal_t |sighandler |int sig +Ap |SV** |stack_grow |SV** sp|SV**p|int n +Ap |I32 |start_subparse |I32 is_format|U32 flags +p |void |sub_crush_depth|CV* cv +Ap |bool |sv_2bool |SV* sv +Ap |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref +Ap |IO* |sv_2io |SV* sv +Ap |IV |sv_2iv |SV* sv +Apd |SV* |sv_2mortal |SV* sv +Ap |NV |sv_2nv |SV* sv +Ap |char* |sv_2pv |SV* sv|STRLEN* lp +Ap |char* |sv_2pvutf8 |SV* sv|STRLEN* lp +Ap |char* |sv_2pvbyte |SV* sv|STRLEN* lp +Ap |UV |sv_2uv |SV* sv +Ap |IV |sv_iv |SV* sv +Ap |UV |sv_uv |SV* sv +Ap |NV |sv_nv |SV* sv +Ap |char* |sv_pvn |SV *sv|STRLEN *len +Ap |char* |sv_pvutf8n |SV *sv|STRLEN *len +Ap |char* |sv_pvbyten |SV *sv|STRLEN *len +Ap |I32 |sv_true |SV *sv +p |void |sv_add_arena |char* ptr|U32 size|U32 flags +Ap |int |sv_backoff |SV* sv +Apd |SV* |sv_bless |SV* sv|HV* stash +Afpd |void |sv_catpvf |SV* sv|const char* pat|... +Ap |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args +Apd |void |sv_catpv |SV* sv|const char* ptr +Apd |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len +Apd |void |sv_catsv |SV* dsv|SV* ssv +Apd |void |sv_chop |SV* sv|char* ptr +p |void |sv_clean_all +p |void |sv_clean_objs +Ap |void |sv_clear |SV* sv +Apd |I32 |sv_cmp |SV* sv1|SV* sv2 +Ap |I32 |sv_cmp_locale |SV* sv1|SV* sv2 +#if defined(USE_LOCALE_COLLATE) +Ap |char* |sv_collxfrm |SV* sv|STRLEN* nxp +#endif +Ap |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp +Apd |void |sv_dec |SV* sv +Ap |void |sv_dump |SV* sv +Apd |bool |sv_derived_from|SV* sv|const char* name +Apd |I32 |sv_eq |SV* sv1|SV* sv2 +Ap |void |sv_free |SV* sv +p |void |sv_free_arenas +Ap |char* |sv_gets |SV* sv|PerlIO* fp|I32 append +Apd |char* |sv_grow |SV* sv|STRLEN newlen +Apd |void |sv_inc |SV* sv +Apd |void |sv_insert |SV* bigsv|STRLEN offset|STRLEN len \ + |char* little|STRLEN littlelen +Apd |int |sv_isa |SV* sv|const char* name +Apd |int |sv_isobject |SV* sv +Apd |STRLEN |sv_len |SV* sv +Ap |STRLEN |sv_len_utf8 |SV* sv +Apd |void |sv_magic |SV* sv|SV* obj|int how|const char* name \ + |I32 namlen +Apd |SV* |sv_mortalcopy |SV* oldsv +Apd |SV* |sv_newmortal +Ap |SV* |sv_newref |SV* sv +Ap |char* |sv_peek |SV* sv +Ap |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp +Ap |void |sv_pos_b2u |SV* sv|I32* offsetp +Ap |char* |sv_pvn_force |SV* sv|STRLEN* lp +Ap |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp +Ap |char* |sv_pvbyten_force|SV* sv|STRLEN* lp +Ap |char* |sv_reftype |SV* sv|int ob +Ap |void |sv_replace |SV* sv|SV* nsv +Ap |void |sv_report_used +Ap |void |sv_reset |char* s|HV* stash +Afpd |void |sv_setpvf |SV* sv|const char* pat|... +Ap |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args +Apd |void |sv_setiv |SV* sv|IV num +Apd |void |sv_setpviv |SV* sv|IV num +Apd |void |sv_setuv |SV* sv|UV num +Apd |void |sv_setnv |SV* sv|NV num +Apd |SV* |sv_setref_iv |SV* rv|const char* classname|IV iv +Apd |SV* |sv_setref_nv |SV* rv|const char* classname|NV nv +Apd |SV* |sv_setref_pv |SV* rv|const char* classname|void* pv +Apd |SV* |sv_setref_pvn |SV* rv|const char* classname|char* pv \ + |STRLEN n +Apd |void |sv_setpv |SV* sv|const char* ptr +Apd |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len +Apd |void |sv_setsv |SV* dsv|SV* ssv +Ap |void |sv_taint |SV* sv +Ap |bool |sv_tainted |SV* sv +Ap |int |sv_unmagic |SV* sv|int type +Apd |void |sv_unref |SV* sv +Ap |void |sv_untaint |SV* sv +Apd |bool |sv_upgrade |SV* sv|U32 mt +Apd |void |sv_usepvn |SV* sv|char* ptr|STRLEN len +Apd |void |sv_vcatpvfn |SV* sv|const char* pat|STRLEN patlen \ + |va_list* args|SV** svargs|I32 svmax \ + |bool *maybe_tainted +Apd |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \ + |va_list* args|SV** svargs|I32 svmax \ + |bool *maybe_tainted +Ap |NV |str_to_version |SV *sv +Ap |SV* |swash_init |char* pkg|char* name|SV* listsv \ + |I32 minbits|I32 none +Ap |UV |swash_fetch |SV *sv|U8 *ptr +Ap |void |taint_env +Ap |void |taint_proper |const char* f|const char* s +Ap |UV |to_utf8_lower |U8 *p +Ap |UV |to_utf8_upper |U8 *p +Ap |UV |to_utf8_title |U8 *p +#if defined(UNLINK_ALL_VERSIONS) +Ap |I32 |unlnk |char* f +#endif +#if defined(USE_THREADS) +Ap |void |unlock_condpair|void* svv +#endif +Ap |void |unsharepvn |const char* sv|I32 len|U32 hash +p |void |unshare_hek |HEK* hek +p |void |utilize |int aver|I32 floor|OP* version|OP* id|OP* arg +Ap |U8* |utf16_to_utf8 |U16* p|U8 *d|I32 bytelen +Ap |U8* |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen +Ap |I32 |utf8_distance |U8 *a|U8 *b +Ap |U8* |utf8_hop |U8 *s|I32 off +Ap |UV |utf8_to_uv |U8 *s|I32* retlen +Ap |U8* |uv_to_utf8 |U8 *d|UV uv +p |void |vivify_defelem |SV* sv +p |void |vivify_ref |SV* sv|U32 to_what +p |I32 |wait4pid |Pid_t pid|int* statusp|int flags +p |void |report_closed_fh|GV *gv|IO *io|const char *func|const char *obj +p |void |report_uninit +Afpd |void |warn |const char* pat|... +Ap |void |vwarn |const char* pat|va_list* args +Afp |void |warner |U32 err|const char* pat|... +Ap |void |vwarner |U32 err|const char* pat|va_list* args +p |void |watch |char** addr +p |I32 |whichsig |char* sig +p |int |yyerror |char* s +#if defined(USE_PURE_BISON) +p |int |yylex |YYSTYPE *lvalp|int *lcharp +#else +p |int |yylex +#endif +p |int |yyparse +p |int |yywarn |char* s +#if defined(MYMALLOC) +Ap |void |dump_mstats |char* s +Ap |int |get_mstats |perl_mstats_t *buf|int buflen|int level +#endif +Anp |Malloc_t|safesysmalloc |MEM_SIZE nbytes +Anp |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size +Anp |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes +Anp |Free_t |safesysfree |Malloc_t where +#if defined(LEAKTEST) +Anp |Malloc_t|safexmalloc |I32 x|MEM_SIZE size +Anp |Malloc_t|safexcalloc |I32 x|MEM_SIZE elements|MEM_SIZE size +Anp |Malloc_t|safexrealloc |Malloc_t where|MEM_SIZE size +Anp |void |safexfree |Malloc_t where +#endif +#if defined(PERL_GLOBAL_STRUCT) +Ap |struct perl_vars *|GetVars +#endif +Ap |int |runops_standard +Ap |int |runops_debug +Afpd |void |sv_catpvf_mg |SV *sv|const char* pat|... +Ap |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args +Apd |void |sv_catpv_mg |SV *sv|const char *ptr +Apd |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len +Apd |void |sv_catsv_mg |SV *dstr|SV *sstr +Afpd |void |sv_setpvf_mg |SV *sv|const char* pat|... +Ap |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args +Apd |void |sv_setiv_mg |SV *sv|IV i +Apd |void |sv_setpviv_mg |SV *sv|IV iv +Apd |void |sv_setuv_mg |SV *sv|UV u +Apd |void |sv_setnv_mg |SV *sv|NV num +Apd |void |sv_setpv_mg |SV *sv|const char *ptr +Apd |void |sv_setpvn_mg |SV *sv|const char *ptr|STRLEN len +Apd |void |sv_setsv_mg |SV *dstr|SV *sstr +Apd |void |sv_usepvn_mg |SV *sv|char *ptr|STRLEN len +Ap |MGVTBL*|get_vtbl |int vtbl_id +p |char* |pv_display |SV *sv|char *pv|STRLEN cur|STRLEN len \ + |STRLEN pvlim +Afp |void |dump_indent |I32 level|PerlIO *file|const char* pat|... +Ap |void |dump_vindent |I32 level|PerlIO *file|const char* pat \ + |va_list *args +Ap |void |do_gv_dump |I32 level|PerlIO *file|char *name|GV *sv +Ap |void |do_gvgv_dump |I32 level|PerlIO *file|char *name|GV *sv +Ap |void |do_hv_dump |I32 level|PerlIO *file|char *name|HV *sv +Ap |void |do_magic_dump |I32 level|PerlIO *file|MAGIC *mg|I32 nest \ + |I32 maxnest|bool dumpops|STRLEN pvlim +Ap |void |do_op_dump |I32 level|PerlIO *file|OP *o +Ap |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm +Ap |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \ + |I32 maxnest|bool dumpops|STRLEN pvlim +Ap |void |magic_dump |MAGIC *mg +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +Ap |void* |default_protect|volatile JMPENV *je|int *excpt \ + |protect_body_t body|... +Ap |void* |vdefault_protect|volatile JMPENV *je|int *excpt \ + |protect_body_t body|va_list *args +#endif +Ap |void |reginitcolors +Ap |char* |sv_2pv_nolen |SV* sv +Ap |char* |sv_2pvutf8_nolen|SV* sv +Ap |char* |sv_2pvbyte_nolen|SV* sv +Ap |char* |sv_pv |SV *sv +Ap |char* |sv_pvutf8 |SV *sv +Ap |char* |sv_pvbyte |SV *sv +Ap |void |sv_utf8_upgrade|SV *sv +Ap |bool |sv_utf8_downgrade|SV *sv|bool fail_ok +Ap |void |sv_utf8_encode |SV *sv +Ap |bool |sv_utf8_decode |SV *sv +Ap |void |sv_force_normal|SV *sv +Ap |void |tmps_grow |I32 n +Ap |SV* |sv_rvweaken |SV *sv +p |int |magic_killbackrefs|SV *sv|MAGIC *mg +Ap |OP* |newANONATTRSUB |I32 floor|OP *proto|OP *attrs|OP *block +Ap |CV* |newATTRSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block +Ap |void |newMYSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block +p |OP * |my_attrs |OP *o|OP *attrs +p |void |boot_core_xsutils +#if defined(USE_ITHREADS) +Ap |PERL_CONTEXT*|cx_dup |PERL_CONTEXT* cx|I32 ix|I32 max +Ap |PERL_SI*|si_dup |PERL_SI* si +Ap |ANY* |ss_dup |PerlInterpreter* proto_perl +Ap |void* |any_dup |void* v|PerlInterpreter* proto_perl +Ap |HE* |he_dup |HE* e|bool shared +Ap |REGEXP*|re_dup |REGEXP* r +Ap |PerlIO*|fp_dup |PerlIO* fp|char type +Ap |DIR* |dirp_dup |DIR* dp +Ap |GP* |gp_dup |GP* gp +Ap |MAGIC* |mg_dup |MAGIC* mg +Ap |SV* |sv_dup |SV* sstr +#if defined(HAVE_INTERP_INTERN) +Ap |void |sys_intern_dup |struct interp_intern* src \ + |struct interp_intern* dst +#endif +Ap |PTR_TBL_t*|ptr_table_new +Ap |void* |ptr_table_fetch|PTR_TBL_t *tbl|void *sv +Ap |void |ptr_table_store|PTR_TBL_t *tbl|void *oldsv|void *newsv +Ap |void |ptr_table_split|PTR_TBL_t *tbl +#endif + +#if defined(PERL_OBJECT) +protected: +#else +END_EXTERN_C +#endif + +#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) +s |I32 |avhv_index_sv |SV* sv +s |I32 |avhv_index |AV* av|SV* sv|U32 hash +#endif + +#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) +s |I32 |do_trans_CC_simple |SV *sv +s |I32 |do_trans_CC_count |SV *sv +s |I32 |do_trans_CC_complex |SV *sv +s |I32 |do_trans_UU_simple |SV *sv +s |I32 |do_trans_UU_count |SV *sv +s |I32 |do_trans_UU_complex |SV *sv +s |I32 |do_trans_UC_simple |SV *sv +s |I32 |do_trans_CU_simple |SV *sv +s |I32 |do_trans_UC_trivial |SV *sv +s |I32 |do_trans_CU_trivial |SV *sv +#endif + +#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) +s |void |gv_init_sv |GV *gv|I32 sv_type +#endif + +#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +s |void |hsplit |HV *hv +s |void |hfreeentries |HV *hv +s |void |more_he +s |HE* |new_he +s |void |del_he |HE *p +s |HEK* |save_hek |const char *str|I32 len|U32 hash +s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store +#endif + +#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) +s |void |save_magic |I32 mgs_ix|SV *sv +s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth +s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \ + |int n|SV *val +#endif + +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +s |I32 |list_assignment|OP *o +s |void |bad_type |I32 n|char *t|char *name|OP *kid +s |void |cop_free |COP *cop +s |OP* |modkids |OP *o|I32 type +s |void |no_bareword_allowed|OP *o +s |OP* |no_fh_allowed |OP *o +s |OP* |scalarboolean |OP *o +s |OP* |too_few_arguments|OP *o|char* name +s |OP* |too_many_arguments|OP *o|char* name +s |void |op_clear |OP* o +s |void |null |OP* o +s |PADOFFSET|pad_addlex |SV* name +s |PADOFFSET|pad_findlex |char* name|PADOFFSET newoff|U32 seq \ + |CV* startcv|I32 cx_ix|I32 saweval|U32 flags +s |OP* |newDEFSVOP +s |OP* |new_logop |I32 type|I32 flags|OP **firstp|OP **otherp +s |void |simplify_sort |OP *o +s |bool |is_handle_constructor |OP *o|I32 argnum +s |char* |gv_ename |GV *gv +s |void |cv_dump |CV *cv +s |CV* |cv_clone2 |CV *proto|CV *outside +s |bool |scalar_mod_type|OP *o|I32 type +s |OP * |my_kid |OP *o|OP *attrs +s |OP * |dup_attrlist |OP *o +s |void |apply_attrs |HV *stash|SV *target|OP *attrs +# if defined(PL_OP_SLAB_ALLOC) +s |void* |Slab_Alloc |int m|size_t sz +# endif +#endif + +#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +s |void |find_beginning +s |void |forbid_setid |char * +s |void |incpush |char *|int|int +s |void |init_interp +s |void |init_ids +s |void |init_lexer +s |void |init_main_stash +s |void |init_perllib +s |void |init_postdump_symbols|int|char **|char ** +s |void |init_predump_symbols +rs |void |my_exit_jump +s |void |nuke_stacks +s |void |open_script |char *|bool|SV *|int *fd +s |void |usage |char * +s |void |validate_suid |char *|char*|int +# if defined(IAMSUID) +s |int |fd_on_nosuid_fs|int fd +# endif +s |void* |parse_body |char **env|XSINIT_t xsinit +s |void* |run_body |I32 oldscope +s |void |call_body |OP *myop|int is_eval +s |void* |call_list_body |CV *cv +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +s |void* |vparse_body |va_list args +s |void* |vrun_body |va_list args +s |void* |vcall_body |va_list args +s |void* |vcall_list_body|va_list args +#endif +# if defined(USE_THREADS) +s |struct perl_thread * |init_main_thread +# endif +#endif + +#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) +s |void |doencodes |SV* sv|char* s|I32 len +s |SV* |refto |SV* sv +s |U32 |seed +s |SV* |mul128 |SV *sv|U8 m +s |SV* |is_an_int |char *s|STRLEN l +s |int |div128 |SV *pnum|bool *done +#endif + +#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +s |OP* |docatch |OP *o +s |void* |docatch_body +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +s |void* |vdocatch_body |va_list args +#endif +s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit +s |void |doparseform |SV *sv +s |I32 |dopoptoeval |I32 startingblock +s |I32 |dopoptolabel |char *label +s |I32 |dopoptoloop |I32 startingblock +s |I32 |dopoptosub |I32 startingblock +s |I32 |dopoptosub_at |PERL_CONTEXT* cxstk|I32 startingblock +s |void |free_closures +s |void |save_lines |AV *array|SV *sv +s |OP* |doeval |int gimme|OP** startop +s |PerlIO *|doopen_pmc |const char *name|const char *mode +s |void |qsortsv |SV ** array|size_t num_elts|SVCOMPARE_t f +#endif + +#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +s |int |do_maybe_phash |AV *ary|SV **lelem|SV **firstlelem \ + |SV **relem|SV **lastrelem +s |void |do_oddball |HV *hash|SV **relem|SV **firstrelem +s |CV* |get_db_sub |SV **svp|CV *cv +s |SV* |method_common |SV* meth|U32* hashp +#endif + +#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +s |OP* |doform |CV *cv|GV *gv|OP *retop +s |int |emulate_eaccess|const char* path|Mode_t mode +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +s |int |dooneliner |char *cmd|char *filename +# endif +#endif + +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) +s |regnode*|reg |I32|I32 * +s |regnode*|reganode |U8|U32 +s |regnode*|regatom |I32 * +s |regnode*|regbranch |I32 *|I32 +s |void |reguni |UV|char *|I32* +s |regnode*|regclass +s |regnode*|regclassutf8 +s |I32 |regcurly |char * +s |regnode*|reg_node |U8 +s |regnode*|regpiece |I32 * +s |void |reginsert |U8|regnode * +s |void |regoptail |regnode *|regnode * +s |void |regtail |regnode *|regnode * +s |char*|regwhite |char *|char * +s |char*|nextchar +s |regnode*|dumpuntil |regnode *start|regnode *node \ + |regnode *last|SV* sv|I32 l +s |void |put_byte |SV* sv|int c +s |void |scan_commit |struct scan_data_t *data +s |void |cl_anything |struct regnode_charclass_class *cl +s |int |cl_is_anything |struct regnode_charclass_class *cl +s |void |cl_init |struct regnode_charclass_class *cl +s |void |cl_init_zero |struct regnode_charclass_class *cl +s |void |cl_and |struct regnode_charclass_class *cl \ + |struct regnode_charclass_class *and_with +s |void |cl_or |struct regnode_charclass_class *cl \ + |struct regnode_charclass_class *or_with +s |I32 |study_chunk |regnode **scanp|I32 *deltap \ + |regnode *last|struct scan_data_t *data \ + |U32 flags +s |I32 |add_data |I32 n|char *s +rs |void|re_croak2 |const char* pat1|const char* pat2|... +s |I32 |regpposixcc |I32 value +s |void |checkposixcc +#endif + +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) +s |I32 |regmatch |regnode *prog +s |I32 |regrepeat |regnode *p|I32 max +s |I32 |regrepeat_hard |regnode *p|I32 max|I32 *lp +s |I32 |regtry |regexp *prog|char *startpos +s |bool |reginclass |regnode *p|I32 c +s |bool |reginclassutf8 |regnode *f|U8* p +s |CHECKPOINT|regcppush |I32 parenfloor +s |char*|regcppop +s |char*|regcp_set_to |I32 ss +s |void |cache_re |regexp *prog +s |U8* |reghop |U8 *pos|I32 off +s |U8* |reghopmaybe |U8 *pos|I32 off +s |char* |find_byclass |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun +#endif + +#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) +s |void |debprof |OP *o +#endif + +#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +s |SV* |save_scalar_at |SV **sptr +#endif + +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +s |IV |asIV |SV* sv +s |UV |asUV |SV* sv +s |SV* |more_sv +s |void |more_xiv +s |void |more_xnv +s |void |more_xpv +s |void |more_xpviv +s |void |more_xpvnv +s |void |more_xpvcv +s |void |more_xpvav +s |void |more_xpvhv +s |void |more_xpvmg +s |void |more_xpvlv +s |void |more_xpvbm +s |void |more_xrv +s |XPVIV* |new_xiv +s |XPVNV* |new_xnv +s |XPV* |new_xpv +s |XPVIV* |new_xpviv +s |XPVNV* |new_xpvnv +s |XPVCV* |new_xpvcv +s |XPVAV* |new_xpvav +s |XPVHV* |new_xpvhv +s |XPVMG* |new_xpvmg +s |XPVLV* |new_xpvlv +s |XPVBM* |new_xpvbm +s |XRV* |new_xrv +s |void |del_xiv |XPVIV* p +s |void |del_xnv |XPVNV* p +s |void |del_xpv |XPV* p +s |void |del_xpviv |XPVIV* p +s |void |del_xpvnv |XPVNV* p +s |void |del_xpvcv |XPVCV* p +s |void |del_xpvav |XPVAV* p +s |void |del_xpvhv |XPVHV* p +s |void |del_xpvmg |XPVMG* p +s |void |del_xpvlv |XPVLV* p +s |void |del_xpvbm |XPVBM* p +s |void |del_xrv |XRV* p +s |void |sv_unglob |SV* sv +s |void |not_a_number |SV *sv +s |void |visit |SVFUNC_t f +s |void |sv_add_backref |SV *tsv|SV *sv +s |void |sv_del_backref |SV *sv +# if defined(DEBUGGING) +s |void |del_sv |SV *p +# endif +#endif + +#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +s |void |check_uni +s |void |force_next |I32 type +s |char* |force_version |char *start +s |char* |force_word |char *start|int token|int check_keyword \ + |int allow_pack|int allow_tick +s |SV* |tokeq |SV *sv +s |char* |scan_const |char *start +s |char* |scan_formline |char *s +s |char* |scan_heredoc |char *s +s |char* |scan_ident |char *s|char *send|char *dest \ + |STRLEN destlen|I32 ck_uni +s |char* |scan_inputsymbol|char *start +s |char* |scan_pat |char *start|I32 type +s |char* |scan_str |char *start|int keep_quoted|int keep_delims +s |char* |scan_subst |char *start +s |char* |scan_trans |char *start +s |char* |scan_word |char *s|char *dest|STRLEN destlen \ + |int allow_package|STRLEN *slp +s |char* |skipspace |char *s +s |void |checkcomma |char *s|char *name|char *what +s |void |force_ident |char *s|int kind +s |void |incline |char *s +s |int |intuit_method |char *s|GV *gv +s |int |intuit_more |char *s +s |I32 |lop |I32 f|int x|char *s +s |void |missingterm |char *s +s |void |no_op |char *what|char *s +s |void |set_csh +s |I32 |sublex_done +s |I32 |sublex_push +s |I32 |sublex_start +s |char * |filter_gets |SV *sv|PerlIO *fp|STRLEN append +s |SV* |new_constant |char *s|STRLEN len|const char *key|SV *sv \ + |SV *pv|const char *type +s |int |ao |int toketype +s |void |depcom +s |char* |incl_perldb +#if 0 +s |I32 |utf16_textfilter|int idx|SV *sv|int maxlen +s |I32 |utf16rev_textfilter|int idx|SV *sv|int maxlen +#endif +# if defined(CRIPPLED_CC) +s |int |uni |I32 f|char *s +# endif +# if defined(PERL_CR_FILTER) +s |I32 |cr_textfilter |int idx|SV *sv|int maxlen +# endif +#endif + +#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +s |SV*|isa_lookup |HV *stash|const char *name|int len|int level +#endif + +#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) +s |SV* |mess_alloc +# if defined(LEAKTEST) +s |void |xstat |int +# endif +#endif + +#if defined(PERL_OBJECT) +}; +#endif diff --git a/contrib/perl5/embedvar.h b/contrib/perl5/embedvar.h index 25b31e015562..e790976a18f3 100644 --- a/contrib/perl5/embedvar.h +++ b/contrib/perl5/embedvar.h @@ -1,271 +1,1106 @@ /* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by embed.pl from global.sym, intrpvar.h, - and thrdvar.h. Any changes made here will be lost! + This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h, + perlvars.h and thrdvar.h. Any changes made here will be lost! */ /* (Doing namespace management portably in C is really gross.) */ -/* EMBED has no run-time penalty, but helps keep the Perl namespace - from colliding with that used by other libraries pulled in - by extensions or by embedding perl. Allow a cc -DNO_EMBED - override, however, to keep binary compatability with previous - versions of perl. +/* + The following combinations of MULTIPLICITY, USE_THREADS, PERL_OBJECT + and PERL_IMPLICIT_CONTEXT are supported: + 1) none + 2) MULTIPLICITY # supported for compatibility + 3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT + 4) USE_THREADS && PERL_IMPLICIT_CONTEXT + 5) MULTIPLICITY && USE_THREADS && PERL_IMPLICIT_CONTEXT + 6) PERL_OBJECT && PERL_IMPLICIT_CONTEXT + + All other combinations of these flags are errors. + + #3, #4, #5, and #6 are supported directly, while #2 is a special + case of #3 (supported by redefining vTHX appropriately). */ +#if defined(MULTIPLICITY) +/* cases 2, 3 and 5 above */ -/* Put interpreter-specific symbols into a struct? */ +# if defined(PERL_IMPLICIT_CONTEXT) +# define vTHX aTHX +# else +# define vTHX PERL_GET_INTERP +# endif -#ifdef MULTIPLICITY +#define PL_Sv (vTHX->TSv) +#define PL_Xpv (vTHX->TXpv) +#define PL_av_fetch_sv (vTHX->Tav_fetch_sv) +#define PL_bodytarget (vTHX->Tbodytarget) +#define PL_bostr (vTHX->Tbostr) +#define PL_chopset (vTHX->Tchopset) +#define PL_colors (vTHX->Tcolors) +#define PL_colorset (vTHX->Tcolorset) +#define PL_curcop (vTHX->Tcurcop) +#define PL_curpad (vTHX->Tcurpad) +#define PL_curpm (vTHX->Tcurpm) +#define PL_curstack (vTHX->Tcurstack) +#define PL_curstackinfo (vTHX->Tcurstackinfo) +#define PL_curstash (vTHX->Tcurstash) +#define PL_defoutgv (vTHX->Tdefoutgv) +#define PL_defstash (vTHX->Tdefstash) +#define PL_delaymagic (vTHX->Tdelaymagic) +#define PL_dirty (vTHX->Tdirty) +#define PL_dumpindent (vTHX->Tdumpindent) +#define PL_efloatbuf (vTHX->Tefloatbuf) +#define PL_efloatsize (vTHX->Tefloatsize) +#define PL_errors (vTHX->Terrors) +#define PL_extralen (vTHX->Textralen) +#define PL_firstgv (vTHX->Tfirstgv) +#define PL_formtarget (vTHX->Tformtarget) +#define PL_hv_fetch_ent_mh (vTHX->Thv_fetch_ent_mh) +#define PL_hv_fetch_sv (vTHX->Thv_fetch_sv) +#define PL_in_eval (vTHX->Tin_eval) +#define PL_last_in_gv (vTHX->Tlast_in_gv) +#define PL_lastgotoprobe (vTHX->Tlastgotoprobe) +#define PL_lastscream (vTHX->Tlastscream) +#define PL_localizing (vTHX->Tlocalizing) +#define PL_mainstack (vTHX->Tmainstack) +#define PL_markstack (vTHX->Tmarkstack) +#define PL_markstack_max (vTHX->Tmarkstack_max) +#define PL_markstack_ptr (vTHX->Tmarkstack_ptr) +#define PL_maxscream (vTHX->Tmaxscream) +#define PL_modcount (vTHX->Tmodcount) +#define PL_na (vTHX->Tna) +#define PL_nrs (vTHX->Tnrs) +#define PL_ofs (vTHX->Tofs) +#define PL_ofslen (vTHX->Tofslen) +#define PL_op (vTHX->Top) +#define PL_opsave (vTHX->Topsave) +#define PL_protect (vTHX->Tprotect) +#define PL_reg_call_cc (vTHX->Treg_call_cc) +#define PL_reg_curpm (vTHX->Treg_curpm) +#define PL_reg_eval_set (vTHX->Treg_eval_set) +#define PL_reg_flags (vTHX->Treg_flags) +#define PL_reg_ganch (vTHX->Treg_ganch) +#define PL_reg_leftiter (vTHX->Treg_leftiter) +#define PL_reg_magic (vTHX->Treg_magic) +#define PL_reg_maxiter (vTHX->Treg_maxiter) +#define PL_reg_oldcurpm (vTHX->Treg_oldcurpm) +#define PL_reg_oldpos (vTHX->Treg_oldpos) +#define PL_reg_oldsaved (vTHX->Treg_oldsaved) +#define PL_reg_oldsavedlen (vTHX->Treg_oldsavedlen) +#define PL_reg_poscache (vTHX->Treg_poscache) +#define PL_reg_poscache_size (vTHX->Treg_poscache_size) +#define PL_reg_re (vTHX->Treg_re) +#define PL_reg_start_tmp (vTHX->Treg_start_tmp) +#define PL_reg_start_tmpl (vTHX->Treg_start_tmpl) +#define PL_reg_starttry (vTHX->Treg_starttry) +#define PL_reg_sv (vTHX->Treg_sv) +#define PL_reg_whilem_seen (vTHX->Treg_whilem_seen) +#define PL_regbol (vTHX->Tregbol) +#define PL_regcc (vTHX->Tregcc) +#define PL_regcode (vTHX->Tregcode) +#define PL_regcomp_parse (vTHX->Tregcomp_parse) +#define PL_regcomp_rx (vTHX->Tregcomp_rx) +#define PL_regcompp (vTHX->Tregcompp) +#define PL_regdata (vTHX->Tregdata) +#define PL_regdummy (vTHX->Tregdummy) +#define PL_regendp (vTHX->Tregendp) +#define PL_regeol (vTHX->Tregeol) +#define PL_regexecp (vTHX->Tregexecp) +#define PL_regflags (vTHX->Tregflags) +#define PL_regfree (vTHX->Tregfree) +#define PL_regindent (vTHX->Tregindent) +#define PL_reginput (vTHX->Treginput) +#define PL_regint_start (vTHX->Tregint_start) +#define PL_regint_string (vTHX->Tregint_string) +#define PL_reginterp_cnt (vTHX->Treginterp_cnt) +#define PL_reglastparen (vTHX->Treglastparen) +#define PL_regnarrate (vTHX->Tregnarrate) +#define PL_regnaughty (vTHX->Tregnaughty) +#define PL_regnpar (vTHX->Tregnpar) +#define PL_regprecomp (vTHX->Tregprecomp) +#define PL_regprev (vTHX->Tregprev) +#define PL_regprogram (vTHX->Tregprogram) +#define PL_regsawback (vTHX->Tregsawback) +#define PL_regseen (vTHX->Tregseen) +#define PL_regsize (vTHX->Tregsize) +#define PL_regstartp (vTHX->Tregstartp) +#define PL_regtill (vTHX->Tregtill) +#define PL_regxend (vTHX->Tregxend) +#define PL_restartop (vTHX->Trestartop) +#define PL_retstack (vTHX->Tretstack) +#define PL_retstack_ix (vTHX->Tretstack_ix) +#define PL_retstack_max (vTHX->Tretstack_max) +#define PL_rs (vTHX->Trs) +#define PL_savestack (vTHX->Tsavestack) +#define PL_savestack_ix (vTHX->Tsavestack_ix) +#define PL_savestack_max (vTHX->Tsavestack_max) +#define PL_scopestack (vTHX->Tscopestack) +#define PL_scopestack_ix (vTHX->Tscopestack_ix) +#define PL_scopestack_max (vTHX->Tscopestack_max) +#define PL_screamfirst (vTHX->Tscreamfirst) +#define PL_screamnext (vTHX->Tscreamnext) +#define PL_secondgv (vTHX->Tsecondgv) +#define PL_seen_evals (vTHX->Tseen_evals) +#define PL_seen_zerolen (vTHX->Tseen_zerolen) +#define PL_sortcop (vTHX->Tsortcop) +#define PL_sortcxix (vTHX->Tsortcxix) +#define PL_sortstash (vTHX->Tsortstash) +#define PL_stack_base (vTHX->Tstack_base) +#define PL_stack_max (vTHX->Tstack_max) +#define PL_stack_sp (vTHX->Tstack_sp) +#define PL_start_env (vTHX->Tstart_env) +#define PL_statbuf (vTHX->Tstatbuf) +#define PL_statcache (vTHX->Tstatcache) +#define PL_statgv (vTHX->Tstatgv) +#define PL_statname (vTHX->Tstatname) +#define PL_tainted (vTHX->Ttainted) +#define PL_timesbuf (vTHX->Ttimesbuf) +#define PL_tmps_floor (vTHX->Ttmps_floor) +#define PL_tmps_ix (vTHX->Ttmps_ix) +#define PL_tmps_max (vTHX->Ttmps_max) +#define PL_tmps_stack (vTHX->Ttmps_stack) +#define PL_top_env (vTHX->Ttop_env) +#define PL_toptarget (vTHX->Ttoptarget) +#define PL_watchaddr (vTHX->Twatchaddr) +#define PL_watchok (vTHX->Twatchok) -#ifndef USE_THREADS -/* If we do not have threads then per-thread vars are per-interpreter */ +# if defined(PERL_OBJECT) +# include "error: PERL_OBJECT + MULTIPLICITY don't go together" +# endif -#define PL_Sv (PL_curinterp->TSv) -#define PL_Xpv (PL_curinterp->TXpv) -#define PL_av_fetch_sv (PL_curinterp->Tav_fetch_sv) -#define PL_bodytarget (PL_curinterp->Tbodytarget) -#define PL_bostr (PL_curinterp->Tbostr) -#define PL_chopset (PL_curinterp->Tchopset) -#define PL_colors (PL_curinterp->Tcolors) -#define PL_colorset (PL_curinterp->Tcolorset) -#define PL_curcop (PL_curinterp->Tcurcop) -#define PL_curpad (PL_curinterp->Tcurpad) -#define PL_curpm (PL_curinterp->Tcurpm) -#define PL_curstack (PL_curinterp->Tcurstack) -#define PL_curstackinfo (PL_curinterp->Tcurstackinfo) -#define PL_curstash (PL_curinterp->Tcurstash) -#define PL_defoutgv (PL_curinterp->Tdefoutgv) -#define PL_defstash (PL_curinterp->Tdefstash) -#define PL_delaymagic (PL_curinterp->Tdelaymagic) -#define PL_dirty (PL_curinterp->Tdirty) -#define PL_extralen (PL_curinterp->Textralen) -#define PL_firstgv (PL_curinterp->Tfirstgv) -#define PL_formtarget (PL_curinterp->Tformtarget) -#define PL_hv_fetch_ent_mh (PL_curinterp->Thv_fetch_ent_mh) -#define PL_hv_fetch_sv (PL_curinterp->Thv_fetch_sv) -#define PL_in_eval (PL_curinterp->Tin_eval) -#define PL_last_in_gv (PL_curinterp->Tlast_in_gv) -#define PL_lastgotoprobe (PL_curinterp->Tlastgotoprobe) -#define PL_lastscream (PL_curinterp->Tlastscream) -#define PL_localizing (PL_curinterp->Tlocalizing) -#define PL_mainstack (PL_curinterp->Tmainstack) -#define PL_markstack (PL_curinterp->Tmarkstack) -#define PL_markstack_max (PL_curinterp->Tmarkstack_max) -#define PL_markstack_ptr (PL_curinterp->Tmarkstack_ptr) -#define PL_maxscream (PL_curinterp->Tmaxscream) -#define PL_modcount (PL_curinterp->Tmodcount) -#define PL_nrs (PL_curinterp->Tnrs) -#define PL_ofs (PL_curinterp->Tofs) -#define PL_ofslen (PL_curinterp->Tofslen) -#define PL_op (PL_curinterp->Top) -#define PL_opsave (PL_curinterp->Topsave) -#define PL_reg_eval_set (PL_curinterp->Treg_eval_set) -#define PL_reg_flags (PL_curinterp->Treg_flags) -#define PL_reg_start_tmp (PL_curinterp->Treg_start_tmp) -#define PL_reg_start_tmpl (PL_curinterp->Treg_start_tmpl) -#define PL_regbol (PL_curinterp->Tregbol) -#define PL_regcc (PL_curinterp->Tregcc) -#define PL_regcode (PL_curinterp->Tregcode) -#define PL_regcomp_parse (PL_curinterp->Tregcomp_parse) -#define PL_regcomp_rx (PL_curinterp->Tregcomp_rx) -#define PL_regcompp (PL_curinterp->Tregcompp) -#define PL_regdata (PL_curinterp->Tregdata) -#define PL_regdummy (PL_curinterp->Tregdummy) -#define PL_regendp (PL_curinterp->Tregendp) -#define PL_regeol (PL_curinterp->Tregeol) -#define PL_regexecp (PL_curinterp->Tregexecp) -#define PL_regflags (PL_curinterp->Tregflags) -#define PL_regindent (PL_curinterp->Tregindent) -#define PL_reginput (PL_curinterp->Treginput) -#define PL_reginterp_cnt (PL_curinterp->Treginterp_cnt) -#define PL_reglastparen (PL_curinterp->Treglastparen) -#define PL_regnarrate (PL_curinterp->Tregnarrate) -#define PL_regnaughty (PL_curinterp->Tregnaughty) -#define PL_regnpar (PL_curinterp->Tregnpar) -#define PL_regprecomp (PL_curinterp->Tregprecomp) -#define PL_regprev (PL_curinterp->Tregprev) -#define PL_regprogram (PL_curinterp->Tregprogram) -#define PL_regsawback (PL_curinterp->Tregsawback) -#define PL_regseen (PL_curinterp->Tregseen) -#define PL_regsize (PL_curinterp->Tregsize) -#define PL_regstartp (PL_curinterp->Tregstartp) -#define PL_regtill (PL_curinterp->Tregtill) -#define PL_regxend (PL_curinterp->Tregxend) -#define PL_restartop (PL_curinterp->Trestartop) -#define PL_retstack (PL_curinterp->Tretstack) -#define PL_retstack_ix (PL_curinterp->Tretstack_ix) -#define PL_retstack_max (PL_curinterp->Tretstack_max) -#define PL_rs (PL_curinterp->Trs) -#define PL_savestack (PL_curinterp->Tsavestack) -#define PL_savestack_ix (PL_curinterp->Tsavestack_ix) -#define PL_savestack_max (PL_curinterp->Tsavestack_max) -#define PL_scopestack (PL_curinterp->Tscopestack) -#define PL_scopestack_ix (PL_curinterp->Tscopestack_ix) -#define PL_scopestack_max (PL_curinterp->Tscopestack_max) -#define PL_screamfirst (PL_curinterp->Tscreamfirst) -#define PL_screamnext (PL_curinterp->Tscreamnext) -#define PL_secondgv (PL_curinterp->Tsecondgv) -#define PL_seen_evals (PL_curinterp->Tseen_evals) -#define PL_seen_zerolen (PL_curinterp->Tseen_zerolen) -#define PL_sortcop (PL_curinterp->Tsortcop) -#define PL_sortcxix (PL_curinterp->Tsortcxix) -#define PL_sortstash (PL_curinterp->Tsortstash) -#define PL_stack_base (PL_curinterp->Tstack_base) -#define PL_stack_max (PL_curinterp->Tstack_max) -#define PL_stack_sp (PL_curinterp->Tstack_sp) -#define PL_start_env (PL_curinterp->Tstart_env) -#define PL_statbuf (PL_curinterp->Tstatbuf) -#define PL_statcache (PL_curinterp->Tstatcache) -#define PL_statgv (PL_curinterp->Tstatgv) -#define PL_statname (PL_curinterp->Tstatname) -#define PL_tainted (PL_curinterp->Ttainted) -#define PL_timesbuf (PL_curinterp->Ttimesbuf) -#define PL_tmps_floor (PL_curinterp->Ttmps_floor) -#define PL_tmps_ix (PL_curinterp->Ttmps_ix) -#define PL_tmps_max (PL_curinterp->Ttmps_max) -#define PL_tmps_stack (PL_curinterp->Ttmps_stack) -#define PL_top_env (PL_curinterp->Ttop_env) -#define PL_toptarget (PL_curinterp->Ttoptarget) +# if defined(USE_THREADS) +/* case 5 above */ -#endif /* !USE_THREADS */ +#define PL_Argv (PERL_GET_INTERP->IArgv) +#define PL_Cmd (PERL_GET_INTERP->ICmd) +#define PL_DBcv (PERL_GET_INTERP->IDBcv) +#define PL_DBgv (PERL_GET_INTERP->IDBgv) +#define PL_DBline (PERL_GET_INTERP->IDBline) +#define PL_DBsignal (PERL_GET_INTERP->IDBsignal) +#define PL_DBsingle (PERL_GET_INTERP->IDBsingle) +#define PL_DBsub (PERL_GET_INTERP->IDBsub) +#define PL_DBtrace (PERL_GET_INTERP->IDBtrace) +#define PL_Dir (PERL_GET_INTERP->IDir) +#define PL_Env (PERL_GET_INTERP->IEnv) +#define PL_LIO (PERL_GET_INTERP->ILIO) +#define PL_Mem (PERL_GET_INTERP->IMem) +#define PL_MemParse (PERL_GET_INTERP->IMemParse) +#define PL_MemShared (PERL_GET_INTERP->IMemShared) +#define PL_Proc (PERL_GET_INTERP->IProc) +#define PL_Sock (PERL_GET_INTERP->ISock) +#define PL_StdIO (PERL_GET_INTERP->IStdIO) +#define PL_amagic_generation (PERL_GET_INTERP->Iamagic_generation) +#define PL_an (PERL_GET_INTERP->Ian) +#define PL_argvgv (PERL_GET_INTERP->Iargvgv) +#define PL_argvout_stack (PERL_GET_INTERP->Iargvout_stack) +#define PL_argvoutgv (PERL_GET_INTERP->Iargvoutgv) +#define PL_basetime (PERL_GET_INTERP->Ibasetime) +#define PL_beginav (PERL_GET_INTERP->Ibeginav) +#define PL_bitcount (PERL_GET_INTERP->Ibitcount) +#define PL_bufend (PERL_GET_INTERP->Ibufend) +#define PL_bufptr (PERL_GET_INTERP->Ibufptr) +#define PL_checkav (PERL_GET_INTERP->Icheckav) +#define PL_collation_ix (PERL_GET_INTERP->Icollation_ix) +#define PL_collation_name (PERL_GET_INTERP->Icollation_name) +#define PL_collation_standard (PERL_GET_INTERP->Icollation_standard) +#define PL_collxfrm_base (PERL_GET_INTERP->Icollxfrm_base) +#define PL_collxfrm_mult (PERL_GET_INTERP->Icollxfrm_mult) +#define PL_compcv (PERL_GET_INTERP->Icompcv) +#define PL_compiling (PERL_GET_INTERP->Icompiling) +#define PL_comppad (PERL_GET_INTERP->Icomppad) +#define PL_comppad_name (PERL_GET_INTERP->Icomppad_name) +#define PL_comppad_name_fill (PERL_GET_INTERP->Icomppad_name_fill) +#define PL_comppad_name_floor (PERL_GET_INTERP->Icomppad_name_floor) +#define PL_cop_seqmax (PERL_GET_INTERP->Icop_seqmax) +#define PL_copline (PERL_GET_INTERP->Icopline) +#define PL_cred_mutex (PERL_GET_INTERP->Icred_mutex) +#define PL_cryptseen (PERL_GET_INTERP->Icryptseen) +#define PL_cshlen (PERL_GET_INTERP->Icshlen) +#define PL_cshname (PERL_GET_INTERP->Icshname) +#define PL_curcopdb (PERL_GET_INTERP->Icurcopdb) +#define PL_curstname (PERL_GET_INTERP->Icurstname) +#define PL_curthr (PERL_GET_INTERP->Icurthr) +#define PL_dbargs (PERL_GET_INTERP->Idbargs) +#define PL_debstash (PERL_GET_INTERP->Idebstash) +#define PL_debug (PERL_GET_INTERP->Idebug) +#define PL_defgv (PERL_GET_INTERP->Idefgv) +#define PL_diehook (PERL_GET_INTERP->Idiehook) +#define PL_doextract (PERL_GET_INTERP->Idoextract) +#define PL_doswitches (PERL_GET_INTERP->Idoswitches) +#define PL_dowarn (PERL_GET_INTERP->Idowarn) +#define PL_e_script (PERL_GET_INTERP->Ie_script) +#define PL_egid (PERL_GET_INTERP->Iegid) +#define PL_endav (PERL_GET_INTERP->Iendav) +#define PL_envgv (PERL_GET_INTERP->Ienvgv) +#define PL_errgv (PERL_GET_INTERP->Ierrgv) +#define PL_error_count (PERL_GET_INTERP->Ierror_count) +#define PL_euid (PERL_GET_INTERP->Ieuid) +#define PL_eval_cond (PERL_GET_INTERP->Ieval_cond) +#define PL_eval_mutex (PERL_GET_INTERP->Ieval_mutex) +#define PL_eval_owner (PERL_GET_INTERP->Ieval_owner) +#define PL_eval_root (PERL_GET_INTERP->Ieval_root) +#define PL_eval_start (PERL_GET_INTERP->Ieval_start) +#define PL_evalseq (PERL_GET_INTERP->Ievalseq) +#define PL_exit_flags (PERL_GET_INTERP->Iexit_flags) +#define PL_exitlist (PERL_GET_INTERP->Iexitlist) +#define PL_exitlistlen (PERL_GET_INTERP->Iexitlistlen) +#define PL_expect (PERL_GET_INTERP->Iexpect) +#define PL_fdpid (PERL_GET_INTERP->Ifdpid) +#define PL_filemode (PERL_GET_INTERP->Ifilemode) +#define PL_forkprocess (PERL_GET_INTERP->Iforkprocess) +#define PL_formfeed (PERL_GET_INTERP->Iformfeed) +#define PL_generation (PERL_GET_INTERP->Igeneration) +#define PL_gensym (PERL_GET_INTERP->Igensym) +#define PL_gid (PERL_GET_INTERP->Igid) +#define PL_glob_index (PERL_GET_INTERP->Iglob_index) +#define PL_globalstash (PERL_GET_INTERP->Iglobalstash) +#define PL_he_root (PERL_GET_INTERP->Ihe_root) +#define PL_hintgv (PERL_GET_INTERP->Ihintgv) +#define PL_hints (PERL_GET_INTERP->Ihints) +#define PL_in_clean_all (PERL_GET_INTERP->Iin_clean_all) +#define PL_in_clean_objs (PERL_GET_INTERP->Iin_clean_objs) +#define PL_in_my (PERL_GET_INTERP->Iin_my) +#define PL_in_my_stash (PERL_GET_INTERP->Iin_my_stash) +#define PL_incgv (PERL_GET_INTERP->Iincgv) +#define PL_initav (PERL_GET_INTERP->Iinitav) +#define PL_inplace (PERL_GET_INTERP->Iinplace) +#define PL_last_lop (PERL_GET_INTERP->Ilast_lop) +#define PL_last_lop_op (PERL_GET_INTERP->Ilast_lop_op) +#define PL_last_swash_hv (PERL_GET_INTERP->Ilast_swash_hv) +#define PL_last_swash_key (PERL_GET_INTERP->Ilast_swash_key) +#define PL_last_swash_klen (PERL_GET_INTERP->Ilast_swash_klen) +#define PL_last_swash_slen (PERL_GET_INTERP->Ilast_swash_slen) +#define PL_last_swash_tmps (PERL_GET_INTERP->Ilast_swash_tmps) +#define PL_last_uni (PERL_GET_INTERP->Ilast_uni) +#define PL_lastfd (PERL_GET_INTERP->Ilastfd) +#define PL_laststatval (PERL_GET_INTERP->Ilaststatval) +#define PL_laststype (PERL_GET_INTERP->Ilaststype) +#define PL_lex_brackets (PERL_GET_INTERP->Ilex_brackets) +#define PL_lex_brackstack (PERL_GET_INTERP->Ilex_brackstack) +#define PL_lex_casemods (PERL_GET_INTERP->Ilex_casemods) +#define PL_lex_casestack (PERL_GET_INTERP->Ilex_casestack) +#define PL_lex_defer (PERL_GET_INTERP->Ilex_defer) +#define PL_lex_dojoin (PERL_GET_INTERP->Ilex_dojoin) +#define PL_lex_expect (PERL_GET_INTERP->Ilex_expect) +#define PL_lex_formbrack (PERL_GET_INTERP->Ilex_formbrack) +#define PL_lex_inpat (PERL_GET_INTERP->Ilex_inpat) +#define PL_lex_inwhat (PERL_GET_INTERP->Ilex_inwhat) +#define PL_lex_op (PERL_GET_INTERP->Ilex_op) +#define PL_lex_repl (PERL_GET_INTERP->Ilex_repl) +#define PL_lex_starts (PERL_GET_INTERP->Ilex_starts) +#define PL_lex_state (PERL_GET_INTERP->Ilex_state) +#define PL_lex_stuff (PERL_GET_INTERP->Ilex_stuff) +#define PL_lineary (PERL_GET_INTERP->Ilineary) +#define PL_linestart (PERL_GET_INTERP->Ilinestart) +#define PL_linestr (PERL_GET_INTERP->Ilinestr) +#define PL_localpatches (PERL_GET_INTERP->Ilocalpatches) +#define PL_main_cv (PERL_GET_INTERP->Imain_cv) +#define PL_main_root (PERL_GET_INTERP->Imain_root) +#define PL_main_start (PERL_GET_INTERP->Imain_start) +#define PL_max_intro_pending (PERL_GET_INTERP->Imax_intro_pending) +#define PL_maxo (PERL_GET_INTERP->Imaxo) +#define PL_maxsysfd (PERL_GET_INTERP->Imaxsysfd) +#define PL_mess_sv (PERL_GET_INTERP->Imess_sv) +#define PL_min_intro_pending (PERL_GET_INTERP->Imin_intro_pending) +#define PL_minus_F (PERL_GET_INTERP->Iminus_F) +#define PL_minus_a (PERL_GET_INTERP->Iminus_a) +#define PL_minus_c (PERL_GET_INTERP->Iminus_c) +#define PL_minus_l (PERL_GET_INTERP->Iminus_l) +#define PL_minus_n (PERL_GET_INTERP->Iminus_n) +#define PL_minus_p (PERL_GET_INTERP->Iminus_p) +#define PL_modglobal (PERL_GET_INTERP->Imodglobal) +#define PL_multi_close (PERL_GET_INTERP->Imulti_close) +#define PL_multi_end (PERL_GET_INTERP->Imulti_end) +#define PL_multi_open (PERL_GET_INTERP->Imulti_open) +#define PL_multi_start (PERL_GET_INTERP->Imulti_start) +#define PL_multiline (PERL_GET_INTERP->Imultiline) +#define PL_nexttoke (PERL_GET_INTERP->Inexttoke) +#define PL_nexttype (PERL_GET_INTERP->Inexttype) +#define PL_nextval (PERL_GET_INTERP->Inextval) +#define PL_nice_chunk (PERL_GET_INTERP->Inice_chunk) +#define PL_nice_chunk_size (PERL_GET_INTERP->Inice_chunk_size) +#define PL_nomemok (PERL_GET_INTERP->Inomemok) +#define PL_nthreads (PERL_GET_INTERP->Inthreads) +#define PL_nthreads_cond (PERL_GET_INTERP->Inthreads_cond) +#define PL_numeric_local (PERL_GET_INTERP->Inumeric_local) +#define PL_numeric_name (PERL_GET_INTERP->Inumeric_name) +#define PL_numeric_radix (PERL_GET_INTERP->Inumeric_radix) +#define PL_numeric_standard (PERL_GET_INTERP->Inumeric_standard) +#define PL_ofmt (PERL_GET_INTERP->Iofmt) +#define PL_oldbufptr (PERL_GET_INTERP->Ioldbufptr) +#define PL_oldname (PERL_GET_INTERP->Ioldname) +#define PL_oldoldbufptr (PERL_GET_INTERP->Ioldoldbufptr) +#define PL_op_mask (PERL_GET_INTERP->Iop_mask) +#define PL_op_seqmax (PERL_GET_INTERP->Iop_seqmax) +#define PL_origalen (PERL_GET_INTERP->Iorigalen) +#define PL_origargc (PERL_GET_INTERP->Iorigargc) +#define PL_origargv (PERL_GET_INTERP->Iorigargv) +#define PL_origenviron (PERL_GET_INTERP->Iorigenviron) +#define PL_origfilename (PERL_GET_INTERP->Iorigfilename) +#define PL_ors (PERL_GET_INTERP->Iors) +#define PL_orslen (PERL_GET_INTERP->Iorslen) +#define PL_osname (PERL_GET_INTERP->Iosname) +#define PL_pad_reset_pending (PERL_GET_INTERP->Ipad_reset_pending) +#define PL_padix (PERL_GET_INTERP->Ipadix) +#define PL_padix_floor (PERL_GET_INTERP->Ipadix_floor) +#define PL_patchlevel (PERL_GET_INTERP->Ipatchlevel) +#define PL_pending_ident (PERL_GET_INTERP->Ipending_ident) +#define PL_perl_destruct_level (PERL_GET_INTERP->Iperl_destruct_level) +#define PL_perldb (PERL_GET_INTERP->Iperldb) +#define PL_pidstatus (PERL_GET_INTERP->Ipidstatus) +#define PL_preambleav (PERL_GET_INTERP->Ipreambleav) +#define PL_preambled (PERL_GET_INTERP->Ipreambled) +#define PL_preprocess (PERL_GET_INTERP->Ipreprocess) +#define PL_profiledata (PERL_GET_INTERP->Iprofiledata) +#define PL_psig_name (PERL_GET_INTERP->Ipsig_name) +#define PL_psig_ptr (PERL_GET_INTERP->Ipsig_ptr) +#define PL_ptr_table (PERL_GET_INTERP->Iptr_table) +#define PL_replgv (PERL_GET_INTERP->Ireplgv) +#define PL_rsfp (PERL_GET_INTERP->Irsfp) +#define PL_rsfp_filters (PERL_GET_INTERP->Irsfp_filters) +#define PL_runops (PERL_GET_INTERP->Irunops) +#define PL_sawampersand (PERL_GET_INTERP->Isawampersand) +#define PL_sh_path (PERL_GET_INTERP->Ish_path) +#define PL_sighandlerp (PERL_GET_INTERP->Isighandlerp) +#define PL_splitstr (PERL_GET_INTERP->Isplitstr) +#define PL_srand_called (PERL_GET_INTERP->Isrand_called) +#define PL_statusvalue (PERL_GET_INTERP->Istatusvalue) +#define PL_statusvalue_vms (PERL_GET_INTERP->Istatusvalue_vms) +#define PL_stderrgv (PERL_GET_INTERP->Istderrgv) +#define PL_stdingv (PERL_GET_INTERP->Istdingv) +#define PL_strtab (PERL_GET_INTERP->Istrtab) +#define PL_strtab_mutex (PERL_GET_INTERP->Istrtab_mutex) +#define PL_sub_generation (PERL_GET_INTERP->Isub_generation) +#define PL_sublex_info (PERL_GET_INTERP->Isublex_info) +#define PL_subline (PERL_GET_INTERP->Isubline) +#define PL_subname (PERL_GET_INTERP->Isubname) +#define PL_sv_arenaroot (PERL_GET_INTERP->Isv_arenaroot) +#define PL_sv_count (PERL_GET_INTERP->Isv_count) +#define PL_sv_mutex (PERL_GET_INTERP->Isv_mutex) +#define PL_sv_no (PERL_GET_INTERP->Isv_no) +#define PL_sv_objcount (PERL_GET_INTERP->Isv_objcount) +#define PL_sv_root (PERL_GET_INTERP->Isv_root) +#define PL_sv_undef (PERL_GET_INTERP->Isv_undef) +#define PL_sv_yes (PERL_GET_INTERP->Isv_yes) +#define PL_svref_mutex (PERL_GET_INTERP->Isvref_mutex) +#define PL_sys_intern (PERL_GET_INTERP->Isys_intern) +#define PL_tainting (PERL_GET_INTERP->Itainting) +#define PL_threadnum (PERL_GET_INTERP->Ithreadnum) +#define PL_threads_mutex (PERL_GET_INTERP->Ithreads_mutex) +#define PL_threadsv_names (PERL_GET_INTERP->Ithreadsv_names) +#define PL_thrsv (PERL_GET_INTERP->Ithrsv) +#define PL_tokenbuf (PERL_GET_INTERP->Itokenbuf) +#define PL_uid (PERL_GET_INTERP->Iuid) +#define PL_unsafe (PERL_GET_INTERP->Iunsafe) +#define PL_utf8_alnum (PERL_GET_INTERP->Iutf8_alnum) +#define PL_utf8_alnumc (PERL_GET_INTERP->Iutf8_alnumc) +#define PL_utf8_alpha (PERL_GET_INTERP->Iutf8_alpha) +#define PL_utf8_ascii (PERL_GET_INTERP->Iutf8_ascii) +#define PL_utf8_cntrl (PERL_GET_INTERP->Iutf8_cntrl) +#define PL_utf8_digit (PERL_GET_INTERP->Iutf8_digit) +#define PL_utf8_graph (PERL_GET_INTERP->Iutf8_graph) +#define PL_utf8_lower (PERL_GET_INTERP->Iutf8_lower) +#define PL_utf8_mark (PERL_GET_INTERP->Iutf8_mark) +#define PL_utf8_print (PERL_GET_INTERP->Iutf8_print) +#define PL_utf8_punct (PERL_GET_INTERP->Iutf8_punct) +#define PL_utf8_space (PERL_GET_INTERP->Iutf8_space) +#define PL_utf8_tolower (PERL_GET_INTERP->Iutf8_tolower) +#define PL_utf8_totitle (PERL_GET_INTERP->Iutf8_totitle) +#define PL_utf8_toupper (PERL_GET_INTERP->Iutf8_toupper) +#define PL_utf8_upper (PERL_GET_INTERP->Iutf8_upper) +#define PL_utf8_xdigit (PERL_GET_INTERP->Iutf8_xdigit) +#define PL_uudmap (PERL_GET_INTERP->Iuudmap) +#define PL_warnhook (PERL_GET_INTERP->Iwarnhook) +#define PL_widesyscalls (PERL_GET_INTERP->Iwidesyscalls) +#define PL_xiv_arenaroot (PERL_GET_INTERP->Ixiv_arenaroot) +#define PL_xiv_root (PERL_GET_INTERP->Ixiv_root) +#define PL_xnv_root (PERL_GET_INTERP->Ixnv_root) +#define PL_xpv_root (PERL_GET_INTERP->Ixpv_root) +#define PL_xpvav_root (PERL_GET_INTERP->Ixpvav_root) +#define PL_xpvbm_root (PERL_GET_INTERP->Ixpvbm_root) +#define PL_xpvcv_root (PERL_GET_INTERP->Ixpvcv_root) +#define PL_xpvhv_root (PERL_GET_INTERP->Ixpvhv_root) +#define PL_xpviv_root (PERL_GET_INTERP->Ixpviv_root) +#define PL_xpvlv_root (PERL_GET_INTERP->Ixpvlv_root) +#define PL_xpvmg_root (PERL_GET_INTERP->Ixpvmg_root) +#define PL_xpvnv_root (PERL_GET_INTERP->Ixpvnv_root) +#define PL_xrv_root (PERL_GET_INTERP->Ixrv_root) +#define PL_yychar (PERL_GET_INTERP->Iyychar) +#define PL_yydebug (PERL_GET_INTERP->Iyydebug) +#define PL_yyerrflag (PERL_GET_INTERP->Iyyerrflag) +#define PL_yylval (PERL_GET_INTERP->Iyylval) +#define PL_yynerrs (PERL_GET_INTERP->Iyynerrs) +#define PL_yyval (PERL_GET_INTERP->Iyyval) -/* These are always per-interpreter if there is more than one */ +# else /* !USE_THREADS */ +/* cases 2 and 3 above */ -#define PL_Argv (PL_curinterp->IArgv) -#define PL_Cmd (PL_curinterp->ICmd) -#define PL_DBcv (PL_curinterp->IDBcv) -#define PL_DBgv (PL_curinterp->IDBgv) -#define PL_DBline (PL_curinterp->IDBline) -#define PL_DBsignal (PL_curinterp->IDBsignal) -#define PL_DBsingle (PL_curinterp->IDBsingle) -#define PL_DBsub (PL_curinterp->IDBsub) -#define PL_DBtrace (PL_curinterp->IDBtrace) -#define PL_ampergv (PL_curinterp->Iampergv) -#define PL_archpat_auto (PL_curinterp->Iarchpat_auto) -#define PL_argvgv (PL_curinterp->Iargvgv) -#define PL_argvoutgv (PL_curinterp->Iargvoutgv) -#define PL_basetime (PL_curinterp->Ibasetime) -#define PL_beginav (PL_curinterp->Ibeginav) -#define PL_bytecode_iv_overflows (PL_curinterp->Ibytecode_iv_overflows) -#define PL_bytecode_obj_list (PL_curinterp->Ibytecode_obj_list) -#define PL_bytecode_obj_list_fill (PL_curinterp->Ibytecode_obj_list_fill) -#define PL_bytecode_pv (PL_curinterp->Ibytecode_pv) -#define PL_bytecode_sv (PL_curinterp->Ibytecode_sv) -#define PL_cddir (PL_curinterp->Icddir) -#define PL_compcv (PL_curinterp->Icompcv) -#define PL_compiling (PL_curinterp->Icompiling) -#define PL_comppad (PL_curinterp->Icomppad) -#define PL_comppad_name (PL_curinterp->Icomppad_name) -#define PL_comppad_name_fill (PL_curinterp->Icomppad_name_fill) -#define PL_comppad_name_floor (PL_curinterp->Icomppad_name_floor) -#define PL_copline (PL_curinterp->Icopline) -#define PL_curcopdb (PL_curinterp->Icurcopdb) -#define PL_curstname (PL_curinterp->Icurstname) -#define PL_dbargs (PL_curinterp->Idbargs) -#define PL_debdelim (PL_curinterp->Idebdelim) -#define PL_debname (PL_curinterp->Idebname) -#define PL_debstash (PL_curinterp->Idebstash) -#define PL_defgv (PL_curinterp->Idefgv) -#define PL_diehook (PL_curinterp->Idiehook) -#define PL_dlevel (PL_curinterp->Idlevel) -#define PL_dlmax (PL_curinterp->Idlmax) -#define PL_doextract (PL_curinterp->Idoextract) -#define PL_doswitches (PL_curinterp->Idoswitches) -#define PL_dowarn (PL_curinterp->Idowarn) -#define PL_dumplvl (PL_curinterp->Idumplvl) -#define PL_e_script (PL_curinterp->Ie_script) -#define PL_endav (PL_curinterp->Iendav) -#define PL_envgv (PL_curinterp->Ienvgv) -#define PL_errgv (PL_curinterp->Ierrgv) -#define PL_eval_root (PL_curinterp->Ieval_root) -#define PL_eval_start (PL_curinterp->Ieval_start) -#define PL_exitlist (PL_curinterp->Iexitlist) -#define PL_exitlistlen (PL_curinterp->Iexitlistlen) -#define PL_fdpid (PL_curinterp->Ifdpid) -#define PL_filemode (PL_curinterp->Ifilemode) -#define PL_forkprocess (PL_curinterp->Iforkprocess) -#define PL_formfeed (PL_curinterp->Iformfeed) -#define PL_generation (PL_curinterp->Igeneration) -#define PL_gensym (PL_curinterp->Igensym) -#define PL_globalstash (PL_curinterp->Iglobalstash) -#define PL_hintgv (PL_curinterp->Ihintgv) -#define PL_in_clean_all (PL_curinterp->Iin_clean_all) -#define PL_in_clean_objs (PL_curinterp->Iin_clean_objs) -#define PL_incgv (PL_curinterp->Iincgv) -#define PL_initav (PL_curinterp->Iinitav) -#define PL_inplace (PL_curinterp->Iinplace) -#define PL_last_proto (PL_curinterp->Ilast_proto) -#define PL_lastfd (PL_curinterp->Ilastfd) -#define PL_lastsize (PL_curinterp->Ilastsize) -#define PL_lastspbase (PL_curinterp->Ilastspbase) -#define PL_laststatval (PL_curinterp->Ilaststatval) -#define PL_laststype (PL_curinterp->Ilaststype) -#define PL_leftgv (PL_curinterp->Ileftgv) -#define PL_lineary (PL_curinterp->Ilineary) -#define PL_linestart (PL_curinterp->Ilinestart) -#define PL_localpatches (PL_curinterp->Ilocalpatches) -#define PL_main_cv (PL_curinterp->Imain_cv) -#define PL_main_root (PL_curinterp->Imain_root) -#define PL_main_start (PL_curinterp->Imain_start) -#define PL_maxsysfd (PL_curinterp->Imaxsysfd) -#define PL_mess_sv (PL_curinterp->Imess_sv) -#define PL_minus_F (PL_curinterp->Iminus_F) -#define PL_minus_a (PL_curinterp->Iminus_a) -#define PL_minus_c (PL_curinterp->Iminus_c) -#define PL_minus_l (PL_curinterp->Iminus_l) -#define PL_minus_n (PL_curinterp->Iminus_n) -#define PL_minus_p (PL_curinterp->Iminus_p) -#define PL_modglobal (PL_curinterp->Imodglobal) -#define PL_multiline (PL_curinterp->Imultiline) -#define PL_mystrk (PL_curinterp->Imystrk) -#define PL_ofmt (PL_curinterp->Iofmt) -#define PL_oldlastpm (PL_curinterp->Ioldlastpm) -#define PL_oldname (PL_curinterp->Ioldname) -#define PL_op_mask (PL_curinterp->Iop_mask) -#define PL_origargc (PL_curinterp->Iorigargc) -#define PL_origargv (PL_curinterp->Iorigargv) -#define PL_origfilename (PL_curinterp->Iorigfilename) -#define PL_ors (PL_curinterp->Iors) -#define PL_orslen (PL_curinterp->Iorslen) -#define PL_parsehook (PL_curinterp->Iparsehook) -#define PL_patchlevel (PL_curinterp->Ipatchlevel) -#define PL_pending_ident (PL_curinterp->Ipending_ident) -#define PL_perl_destruct_level (PL_curinterp->Iperl_destruct_level) -#define PL_perldb (PL_curinterp->Iperldb) -#define PL_preambleav (PL_curinterp->Ipreambleav) -#define PL_preambled (PL_curinterp->Ipreambled) -#define PL_preprocess (PL_curinterp->Ipreprocess) -#define PL_profiledata (PL_curinterp->Iprofiledata) -#define PL_replgv (PL_curinterp->Ireplgv) -#define PL_rightgv (PL_curinterp->Irightgv) -#define PL_rsfp (PL_curinterp->Irsfp) -#define PL_rsfp_filters (PL_curinterp->Irsfp_filters) -#define PL_sawampersand (PL_curinterp->Isawampersand) -#define PL_sawstudy (PL_curinterp->Isawstudy) -#define PL_sawvec (PL_curinterp->Isawvec) -#define PL_siggv (PL_curinterp->Isiggv) -#define PL_splitstr (PL_curinterp->Isplitstr) -#define PL_statusvalue (PL_curinterp->Istatusvalue) -#define PL_statusvalue_vms (PL_curinterp->Istatusvalue_vms) -#define PL_stdingv (PL_curinterp->Istdingv) -#define PL_strchop (PL_curinterp->Istrchop) -#define PL_strtab (PL_curinterp->Istrtab) -#define PL_strtab_mutex (PL_curinterp->Istrtab_mutex) -#define PL_sub_generation (PL_curinterp->Isub_generation) -#define PL_sublex_info (PL_curinterp->Isublex_info) -#define PL_sv_arenaroot (PL_curinterp->Isv_arenaroot) -#define PL_sv_count (PL_curinterp->Isv_count) -#define PL_sv_objcount (PL_curinterp->Isv_objcount) -#define PL_sv_root (PL_curinterp->Isv_root) -#define PL_sys_intern (PL_curinterp->Isys_intern) -#define PL_tainting (PL_curinterp->Itainting) -#define PL_threadnum (PL_curinterp->Ithreadnum) -#define PL_thrsv (PL_curinterp->Ithrsv) -#define PL_unsafe (PL_curinterp->Iunsafe) -#define PL_warnhook (PL_curinterp->Iwarnhook) +#define PL_Argv (vTHX->IArgv) +#define PL_Cmd (vTHX->ICmd) +#define PL_DBcv (vTHX->IDBcv) +#define PL_DBgv (vTHX->IDBgv) +#define PL_DBline (vTHX->IDBline) +#define PL_DBsignal (vTHX->IDBsignal) +#define PL_DBsingle (vTHX->IDBsingle) +#define PL_DBsub (vTHX->IDBsub) +#define PL_DBtrace (vTHX->IDBtrace) +#define PL_Dir (vTHX->IDir) +#define PL_Env (vTHX->IEnv) +#define PL_LIO (vTHX->ILIO) +#define PL_Mem (vTHX->IMem) +#define PL_MemParse (vTHX->IMemParse) +#define PL_MemShared (vTHX->IMemShared) +#define PL_Proc (vTHX->IProc) +#define PL_Sock (vTHX->ISock) +#define PL_StdIO (vTHX->IStdIO) +#define PL_amagic_generation (vTHX->Iamagic_generation) +#define PL_an (vTHX->Ian) +#define PL_argvgv (vTHX->Iargvgv) +#define PL_argvout_stack (vTHX->Iargvout_stack) +#define PL_argvoutgv (vTHX->Iargvoutgv) +#define PL_basetime (vTHX->Ibasetime) +#define PL_beginav (vTHX->Ibeginav) +#define PL_bitcount (vTHX->Ibitcount) +#define PL_bufend (vTHX->Ibufend) +#define PL_bufptr (vTHX->Ibufptr) +#define PL_checkav (vTHX->Icheckav) +#define PL_collation_ix (vTHX->Icollation_ix) +#define PL_collation_name (vTHX->Icollation_name) +#define PL_collation_standard (vTHX->Icollation_standard) +#define PL_collxfrm_base (vTHX->Icollxfrm_base) +#define PL_collxfrm_mult (vTHX->Icollxfrm_mult) +#define PL_compcv (vTHX->Icompcv) +#define PL_compiling (vTHX->Icompiling) +#define PL_comppad (vTHX->Icomppad) +#define PL_comppad_name (vTHX->Icomppad_name) +#define PL_comppad_name_fill (vTHX->Icomppad_name_fill) +#define PL_comppad_name_floor (vTHX->Icomppad_name_floor) +#define PL_cop_seqmax (vTHX->Icop_seqmax) +#define PL_copline (vTHX->Icopline) +#define PL_cred_mutex (vTHX->Icred_mutex) +#define PL_cryptseen (vTHX->Icryptseen) +#define PL_cshlen (vTHX->Icshlen) +#define PL_cshname (vTHX->Icshname) +#define PL_curcopdb (vTHX->Icurcopdb) +#define PL_curstname (vTHX->Icurstname) +#define PL_curthr (vTHX->Icurthr) +#define PL_dbargs (vTHX->Idbargs) +#define PL_debstash (vTHX->Idebstash) +#define PL_debug (vTHX->Idebug) +#define PL_defgv (vTHX->Idefgv) +#define PL_diehook (vTHX->Idiehook) +#define PL_doextract (vTHX->Idoextract) +#define PL_doswitches (vTHX->Idoswitches) +#define PL_dowarn (vTHX->Idowarn) +#define PL_e_script (vTHX->Ie_script) +#define PL_egid (vTHX->Iegid) +#define PL_endav (vTHX->Iendav) +#define PL_envgv (vTHX->Ienvgv) +#define PL_errgv (vTHX->Ierrgv) +#define PL_error_count (vTHX->Ierror_count) +#define PL_euid (vTHX->Ieuid) +#define PL_eval_cond (vTHX->Ieval_cond) +#define PL_eval_mutex (vTHX->Ieval_mutex) +#define PL_eval_owner (vTHX->Ieval_owner) +#define PL_eval_root (vTHX->Ieval_root) +#define PL_eval_start (vTHX->Ieval_start) +#define PL_evalseq (vTHX->Ievalseq) +#define PL_exit_flags (vTHX->Iexit_flags) +#define PL_exitlist (vTHX->Iexitlist) +#define PL_exitlistlen (vTHX->Iexitlistlen) +#define PL_expect (vTHX->Iexpect) +#define PL_fdpid (vTHX->Ifdpid) +#define PL_filemode (vTHX->Ifilemode) +#define PL_forkprocess (vTHX->Iforkprocess) +#define PL_formfeed (vTHX->Iformfeed) +#define PL_generation (vTHX->Igeneration) +#define PL_gensym (vTHX->Igensym) +#define PL_gid (vTHX->Igid) +#define PL_glob_index (vTHX->Iglob_index) +#define PL_globalstash (vTHX->Iglobalstash) +#define PL_he_root (vTHX->Ihe_root) +#define PL_hintgv (vTHX->Ihintgv) +#define PL_hints (vTHX->Ihints) +#define PL_in_clean_all (vTHX->Iin_clean_all) +#define PL_in_clean_objs (vTHX->Iin_clean_objs) +#define PL_in_my (vTHX->Iin_my) +#define PL_in_my_stash (vTHX->Iin_my_stash) +#define PL_incgv (vTHX->Iincgv) +#define PL_initav (vTHX->Iinitav) +#define PL_inplace (vTHX->Iinplace) +#define PL_last_lop (vTHX->Ilast_lop) +#define PL_last_lop_op (vTHX->Ilast_lop_op) +#define PL_last_swash_hv (vTHX->Ilast_swash_hv) +#define PL_last_swash_key (vTHX->Ilast_swash_key) +#define PL_last_swash_klen (vTHX->Ilast_swash_klen) +#define PL_last_swash_slen (vTHX->Ilast_swash_slen) +#define PL_last_swash_tmps (vTHX->Ilast_swash_tmps) +#define PL_last_uni (vTHX->Ilast_uni) +#define PL_lastfd (vTHX->Ilastfd) +#define PL_laststatval (vTHX->Ilaststatval) +#define PL_laststype (vTHX->Ilaststype) +#define PL_lex_brackets (vTHX->Ilex_brackets) +#define PL_lex_brackstack (vTHX->Ilex_brackstack) +#define PL_lex_casemods (vTHX->Ilex_casemods) +#define PL_lex_casestack (vTHX->Ilex_casestack) +#define PL_lex_defer (vTHX->Ilex_defer) +#define PL_lex_dojoin (vTHX->Ilex_dojoin) +#define PL_lex_expect (vTHX->Ilex_expect) +#define PL_lex_formbrack (vTHX->Ilex_formbrack) +#define PL_lex_inpat (vTHX->Ilex_inpat) +#define PL_lex_inwhat (vTHX->Ilex_inwhat) +#define PL_lex_op (vTHX->Ilex_op) +#define PL_lex_repl (vTHX->Ilex_repl) +#define PL_lex_starts (vTHX->Ilex_starts) +#define PL_lex_state (vTHX->Ilex_state) +#define PL_lex_stuff (vTHX->Ilex_stuff) +#define PL_lineary (vTHX->Ilineary) +#define PL_linestart (vTHX->Ilinestart) +#define PL_linestr (vTHX->Ilinestr) +#define PL_localpatches (vTHX->Ilocalpatches) +#define PL_main_cv (vTHX->Imain_cv) +#define PL_main_root (vTHX->Imain_root) +#define PL_main_start (vTHX->Imain_start) +#define PL_max_intro_pending (vTHX->Imax_intro_pending) +#define PL_maxo (vTHX->Imaxo) +#define PL_maxsysfd (vTHX->Imaxsysfd) +#define PL_mess_sv (vTHX->Imess_sv) +#define PL_min_intro_pending (vTHX->Imin_intro_pending) +#define PL_minus_F (vTHX->Iminus_F) +#define PL_minus_a (vTHX->Iminus_a) +#define PL_minus_c (vTHX->Iminus_c) +#define PL_minus_l (vTHX->Iminus_l) +#define PL_minus_n (vTHX->Iminus_n) +#define PL_minus_p (vTHX->Iminus_p) +#define PL_modglobal (vTHX->Imodglobal) +#define PL_multi_close (vTHX->Imulti_close) +#define PL_multi_end (vTHX->Imulti_end) +#define PL_multi_open (vTHX->Imulti_open) +#define PL_multi_start (vTHX->Imulti_start) +#define PL_multiline (vTHX->Imultiline) +#define PL_nexttoke (vTHX->Inexttoke) +#define PL_nexttype (vTHX->Inexttype) +#define PL_nextval (vTHX->Inextval) +#define PL_nice_chunk (vTHX->Inice_chunk) +#define PL_nice_chunk_size (vTHX->Inice_chunk_size) +#define PL_nomemok (vTHX->Inomemok) +#define PL_nthreads (vTHX->Inthreads) +#define PL_nthreads_cond (vTHX->Inthreads_cond) +#define PL_numeric_local (vTHX->Inumeric_local) +#define PL_numeric_name (vTHX->Inumeric_name) +#define PL_numeric_radix (vTHX->Inumeric_radix) +#define PL_numeric_standard (vTHX->Inumeric_standard) +#define PL_ofmt (vTHX->Iofmt) +#define PL_oldbufptr (vTHX->Ioldbufptr) +#define PL_oldname (vTHX->Ioldname) +#define PL_oldoldbufptr (vTHX->Ioldoldbufptr) +#define PL_op_mask (vTHX->Iop_mask) +#define PL_op_seqmax (vTHX->Iop_seqmax) +#define PL_origalen (vTHX->Iorigalen) +#define PL_origargc (vTHX->Iorigargc) +#define PL_origargv (vTHX->Iorigargv) +#define PL_origenviron (vTHX->Iorigenviron) +#define PL_origfilename (vTHX->Iorigfilename) +#define PL_ors (vTHX->Iors) +#define PL_orslen (vTHX->Iorslen) +#define PL_osname (vTHX->Iosname) +#define PL_pad_reset_pending (vTHX->Ipad_reset_pending) +#define PL_padix (vTHX->Ipadix) +#define PL_padix_floor (vTHX->Ipadix_floor) +#define PL_patchlevel (vTHX->Ipatchlevel) +#define PL_pending_ident (vTHX->Ipending_ident) +#define PL_perl_destruct_level (vTHX->Iperl_destruct_level) +#define PL_perldb (vTHX->Iperldb) +#define PL_pidstatus (vTHX->Ipidstatus) +#define PL_preambleav (vTHX->Ipreambleav) +#define PL_preambled (vTHX->Ipreambled) +#define PL_preprocess (vTHX->Ipreprocess) +#define PL_profiledata (vTHX->Iprofiledata) +#define PL_psig_name (vTHX->Ipsig_name) +#define PL_psig_ptr (vTHX->Ipsig_ptr) +#define PL_ptr_table (vTHX->Iptr_table) +#define PL_replgv (vTHX->Ireplgv) +#define PL_rsfp (vTHX->Irsfp) +#define PL_rsfp_filters (vTHX->Irsfp_filters) +#define PL_runops (vTHX->Irunops) +#define PL_sawampersand (vTHX->Isawampersand) +#define PL_sh_path (vTHX->Ish_path) +#define PL_sighandlerp (vTHX->Isighandlerp) +#define PL_splitstr (vTHX->Isplitstr) +#define PL_srand_called (vTHX->Isrand_called) +#define PL_statusvalue (vTHX->Istatusvalue) +#define PL_statusvalue_vms (vTHX->Istatusvalue_vms) +#define PL_stderrgv (vTHX->Istderrgv) +#define PL_stdingv (vTHX->Istdingv) +#define PL_strtab (vTHX->Istrtab) +#define PL_strtab_mutex (vTHX->Istrtab_mutex) +#define PL_sub_generation (vTHX->Isub_generation) +#define PL_sublex_info (vTHX->Isublex_info) +#define PL_subline (vTHX->Isubline) +#define PL_subname (vTHX->Isubname) +#define PL_sv_arenaroot (vTHX->Isv_arenaroot) +#define PL_sv_count (vTHX->Isv_count) +#define PL_sv_mutex (vTHX->Isv_mutex) +#define PL_sv_no (vTHX->Isv_no) +#define PL_sv_objcount (vTHX->Isv_objcount) +#define PL_sv_root (vTHX->Isv_root) +#define PL_sv_undef (vTHX->Isv_undef) +#define PL_sv_yes (vTHX->Isv_yes) +#define PL_svref_mutex (vTHX->Isvref_mutex) +#define PL_sys_intern (vTHX->Isys_intern) +#define PL_tainting (vTHX->Itainting) +#define PL_threadnum (vTHX->Ithreadnum) +#define PL_threads_mutex (vTHX->Ithreads_mutex) +#define PL_threadsv_names (vTHX->Ithreadsv_names) +#define PL_thrsv (vTHX->Ithrsv) +#define PL_tokenbuf (vTHX->Itokenbuf) +#define PL_uid (vTHX->Iuid) +#define PL_unsafe (vTHX->Iunsafe) +#define PL_utf8_alnum (vTHX->Iutf8_alnum) +#define PL_utf8_alnumc (vTHX->Iutf8_alnumc) +#define PL_utf8_alpha (vTHX->Iutf8_alpha) +#define PL_utf8_ascii (vTHX->Iutf8_ascii) +#define PL_utf8_cntrl (vTHX->Iutf8_cntrl) +#define PL_utf8_digit (vTHX->Iutf8_digit) +#define PL_utf8_graph (vTHX->Iutf8_graph) +#define PL_utf8_lower (vTHX->Iutf8_lower) +#define PL_utf8_mark (vTHX->Iutf8_mark) +#define PL_utf8_print (vTHX->Iutf8_print) +#define PL_utf8_punct (vTHX->Iutf8_punct) +#define PL_utf8_space (vTHX->Iutf8_space) +#define PL_utf8_tolower (vTHX->Iutf8_tolower) +#define PL_utf8_totitle (vTHX->Iutf8_totitle) +#define PL_utf8_toupper (vTHX->Iutf8_toupper) +#define PL_utf8_upper (vTHX->Iutf8_upper) +#define PL_utf8_xdigit (vTHX->Iutf8_xdigit) +#define PL_uudmap (vTHX->Iuudmap) +#define PL_warnhook (vTHX->Iwarnhook) +#define PL_widesyscalls (vTHX->Iwidesyscalls) +#define PL_xiv_arenaroot (vTHX->Ixiv_arenaroot) +#define PL_xiv_root (vTHX->Ixiv_root) +#define PL_xnv_root (vTHX->Ixnv_root) +#define PL_xpv_root (vTHX->Ixpv_root) +#define PL_xpvav_root (vTHX->Ixpvav_root) +#define PL_xpvbm_root (vTHX->Ixpvbm_root) +#define PL_xpvcv_root (vTHX->Ixpvcv_root) +#define PL_xpvhv_root (vTHX->Ixpvhv_root) +#define PL_xpviv_root (vTHX->Ixpviv_root) +#define PL_xpvlv_root (vTHX->Ixpvlv_root) +#define PL_xpvmg_root (vTHX->Ixpvmg_root) +#define PL_xpvnv_root (vTHX->Ixpvnv_root) +#define PL_xrv_root (vTHX->Ixrv_root) +#define PL_yychar (vTHX->Iyychar) +#define PL_yydebug (vTHX->Iyydebug) +#define PL_yyerrflag (vTHX->Iyyerrflag) +#define PL_yylval (vTHX->Iyylval) +#define PL_yynerrs (vTHX->Iyynerrs) +#define PL_yyval (vTHX->Iyyval) + +# endif /* USE_THREADS */ #else /* !MULTIPLICITY */ +# if defined(PERL_OBJECT) +/* case 6 above */ + +#define PL_Sv (aTHXo->interp.TSv) +#define PL_Xpv (aTHXo->interp.TXpv) +#define PL_av_fetch_sv (aTHXo->interp.Tav_fetch_sv) +#define PL_bodytarget (aTHXo->interp.Tbodytarget) +#define PL_bostr (aTHXo->interp.Tbostr) +#define PL_chopset (aTHXo->interp.Tchopset) +#define PL_colors (aTHXo->interp.Tcolors) +#define PL_colorset (aTHXo->interp.Tcolorset) +#define PL_curcop (aTHXo->interp.Tcurcop) +#define PL_curpad (aTHXo->interp.Tcurpad) +#define PL_curpm (aTHXo->interp.Tcurpm) +#define PL_curstack (aTHXo->interp.Tcurstack) +#define PL_curstackinfo (aTHXo->interp.Tcurstackinfo) +#define PL_curstash (aTHXo->interp.Tcurstash) +#define PL_defoutgv (aTHXo->interp.Tdefoutgv) +#define PL_defstash (aTHXo->interp.Tdefstash) +#define PL_delaymagic (aTHXo->interp.Tdelaymagic) +#define PL_dirty (aTHXo->interp.Tdirty) +#define PL_dumpindent (aTHXo->interp.Tdumpindent) +#define PL_efloatbuf (aTHXo->interp.Tefloatbuf) +#define PL_efloatsize (aTHXo->interp.Tefloatsize) +#define PL_errors (aTHXo->interp.Terrors) +#define PL_extralen (aTHXo->interp.Textralen) +#define PL_firstgv (aTHXo->interp.Tfirstgv) +#define PL_formtarget (aTHXo->interp.Tformtarget) +#define PL_hv_fetch_ent_mh (aTHXo->interp.Thv_fetch_ent_mh) +#define PL_hv_fetch_sv (aTHXo->interp.Thv_fetch_sv) +#define PL_in_eval (aTHXo->interp.Tin_eval) +#define PL_last_in_gv (aTHXo->interp.Tlast_in_gv) +#define PL_lastgotoprobe (aTHXo->interp.Tlastgotoprobe) +#define PL_lastscream (aTHXo->interp.Tlastscream) +#define PL_localizing (aTHXo->interp.Tlocalizing) +#define PL_mainstack (aTHXo->interp.Tmainstack) +#define PL_markstack (aTHXo->interp.Tmarkstack) +#define PL_markstack_max (aTHXo->interp.Tmarkstack_max) +#define PL_markstack_ptr (aTHXo->interp.Tmarkstack_ptr) +#define PL_maxscream (aTHXo->interp.Tmaxscream) +#define PL_modcount (aTHXo->interp.Tmodcount) +#define PL_na (aTHXo->interp.Tna) +#define PL_nrs (aTHXo->interp.Tnrs) +#define PL_ofs (aTHXo->interp.Tofs) +#define PL_ofslen (aTHXo->interp.Tofslen) +#define PL_op (aTHXo->interp.Top) +#define PL_opsave (aTHXo->interp.Topsave) +#define PL_protect (aTHXo->interp.Tprotect) +#define PL_reg_call_cc (aTHXo->interp.Treg_call_cc) +#define PL_reg_curpm (aTHXo->interp.Treg_curpm) +#define PL_reg_eval_set (aTHXo->interp.Treg_eval_set) +#define PL_reg_flags (aTHXo->interp.Treg_flags) +#define PL_reg_ganch (aTHXo->interp.Treg_ganch) +#define PL_reg_leftiter (aTHXo->interp.Treg_leftiter) +#define PL_reg_magic (aTHXo->interp.Treg_magic) +#define PL_reg_maxiter (aTHXo->interp.Treg_maxiter) +#define PL_reg_oldcurpm (aTHXo->interp.Treg_oldcurpm) +#define PL_reg_oldpos (aTHXo->interp.Treg_oldpos) +#define PL_reg_oldsaved (aTHXo->interp.Treg_oldsaved) +#define PL_reg_oldsavedlen (aTHXo->interp.Treg_oldsavedlen) +#define PL_reg_poscache (aTHXo->interp.Treg_poscache) +#define PL_reg_poscache_size (aTHXo->interp.Treg_poscache_size) +#define PL_reg_re (aTHXo->interp.Treg_re) +#define PL_reg_start_tmp (aTHXo->interp.Treg_start_tmp) +#define PL_reg_start_tmpl (aTHXo->interp.Treg_start_tmpl) +#define PL_reg_starttry (aTHXo->interp.Treg_starttry) +#define PL_reg_sv (aTHXo->interp.Treg_sv) +#define PL_reg_whilem_seen (aTHXo->interp.Treg_whilem_seen) +#define PL_regbol (aTHXo->interp.Tregbol) +#define PL_regcc (aTHXo->interp.Tregcc) +#define PL_regcode (aTHXo->interp.Tregcode) +#define PL_regcomp_parse (aTHXo->interp.Tregcomp_parse) +#define PL_regcomp_rx (aTHXo->interp.Tregcomp_rx) +#define PL_regcompp (aTHXo->interp.Tregcompp) +#define PL_regdata (aTHXo->interp.Tregdata) +#define PL_regdummy (aTHXo->interp.Tregdummy) +#define PL_regendp (aTHXo->interp.Tregendp) +#define PL_regeol (aTHXo->interp.Tregeol) +#define PL_regexecp (aTHXo->interp.Tregexecp) +#define PL_regflags (aTHXo->interp.Tregflags) +#define PL_regfree (aTHXo->interp.Tregfree) +#define PL_regindent (aTHXo->interp.Tregindent) +#define PL_reginput (aTHXo->interp.Treginput) +#define PL_regint_start (aTHXo->interp.Tregint_start) +#define PL_regint_string (aTHXo->interp.Tregint_string) +#define PL_reginterp_cnt (aTHXo->interp.Treginterp_cnt) +#define PL_reglastparen (aTHXo->interp.Treglastparen) +#define PL_regnarrate (aTHXo->interp.Tregnarrate) +#define PL_regnaughty (aTHXo->interp.Tregnaughty) +#define PL_regnpar (aTHXo->interp.Tregnpar) +#define PL_regprecomp (aTHXo->interp.Tregprecomp) +#define PL_regprev (aTHXo->interp.Tregprev) +#define PL_regprogram (aTHXo->interp.Tregprogram) +#define PL_regsawback (aTHXo->interp.Tregsawback) +#define PL_regseen (aTHXo->interp.Tregseen) +#define PL_regsize (aTHXo->interp.Tregsize) +#define PL_regstartp (aTHXo->interp.Tregstartp) +#define PL_regtill (aTHXo->interp.Tregtill) +#define PL_regxend (aTHXo->interp.Tregxend) +#define PL_restartop (aTHXo->interp.Trestartop) +#define PL_retstack (aTHXo->interp.Tretstack) +#define PL_retstack_ix (aTHXo->interp.Tretstack_ix) +#define PL_retstack_max (aTHXo->interp.Tretstack_max) +#define PL_rs (aTHXo->interp.Trs) +#define PL_savestack (aTHXo->interp.Tsavestack) +#define PL_savestack_ix (aTHXo->interp.Tsavestack_ix) +#define PL_savestack_max (aTHXo->interp.Tsavestack_max) +#define PL_scopestack (aTHXo->interp.Tscopestack) +#define PL_scopestack_ix (aTHXo->interp.Tscopestack_ix) +#define PL_scopestack_max (aTHXo->interp.Tscopestack_max) +#define PL_screamfirst (aTHXo->interp.Tscreamfirst) +#define PL_screamnext (aTHXo->interp.Tscreamnext) +#define PL_secondgv (aTHXo->interp.Tsecondgv) +#define PL_seen_evals (aTHXo->interp.Tseen_evals) +#define PL_seen_zerolen (aTHXo->interp.Tseen_zerolen) +#define PL_sortcop (aTHXo->interp.Tsortcop) +#define PL_sortcxix (aTHXo->interp.Tsortcxix) +#define PL_sortstash (aTHXo->interp.Tsortstash) +#define PL_stack_base (aTHXo->interp.Tstack_base) +#define PL_stack_max (aTHXo->interp.Tstack_max) +#define PL_stack_sp (aTHXo->interp.Tstack_sp) +#define PL_start_env (aTHXo->interp.Tstart_env) +#define PL_statbuf (aTHXo->interp.Tstatbuf) +#define PL_statcache (aTHXo->interp.Tstatcache) +#define PL_statgv (aTHXo->interp.Tstatgv) +#define PL_statname (aTHXo->interp.Tstatname) +#define PL_tainted (aTHXo->interp.Ttainted) +#define PL_timesbuf (aTHXo->interp.Ttimesbuf) +#define PL_tmps_floor (aTHXo->interp.Ttmps_floor) +#define PL_tmps_ix (aTHXo->interp.Ttmps_ix) +#define PL_tmps_max (aTHXo->interp.Ttmps_max) +#define PL_tmps_stack (aTHXo->interp.Ttmps_stack) +#define PL_top_env (aTHXo->interp.Ttop_env) +#define PL_toptarget (aTHXo->interp.Ttoptarget) +#define PL_watchaddr (aTHXo->interp.Twatchaddr) +#define PL_watchok (aTHXo->interp.Twatchok) +#define PL_Argv (aTHXo->interp.IArgv) +#define PL_Cmd (aTHXo->interp.ICmd) +#define PL_DBcv (aTHXo->interp.IDBcv) +#define PL_DBgv (aTHXo->interp.IDBgv) +#define PL_DBline (aTHXo->interp.IDBline) +#define PL_DBsignal (aTHXo->interp.IDBsignal) +#define PL_DBsingle (aTHXo->interp.IDBsingle) +#define PL_DBsub (aTHXo->interp.IDBsub) +#define PL_DBtrace (aTHXo->interp.IDBtrace) +#define PL_Dir (aTHXo->interp.IDir) +#define PL_Env (aTHXo->interp.IEnv) +#define PL_LIO (aTHXo->interp.ILIO) +#define PL_Mem (aTHXo->interp.IMem) +#define PL_MemParse (aTHXo->interp.IMemParse) +#define PL_MemShared (aTHXo->interp.IMemShared) +#define PL_Proc (aTHXo->interp.IProc) +#define PL_Sock (aTHXo->interp.ISock) +#define PL_StdIO (aTHXo->interp.IStdIO) +#define PL_amagic_generation (aTHXo->interp.Iamagic_generation) +#define PL_an (aTHXo->interp.Ian) +#define PL_argvgv (aTHXo->interp.Iargvgv) +#define PL_argvout_stack (aTHXo->interp.Iargvout_stack) +#define PL_argvoutgv (aTHXo->interp.Iargvoutgv) +#define PL_basetime (aTHXo->interp.Ibasetime) +#define PL_beginav (aTHXo->interp.Ibeginav) +#define PL_bitcount (aTHXo->interp.Ibitcount) +#define PL_bufend (aTHXo->interp.Ibufend) +#define PL_bufptr (aTHXo->interp.Ibufptr) +#define PL_checkav (aTHXo->interp.Icheckav) +#define PL_collation_ix (aTHXo->interp.Icollation_ix) +#define PL_collation_name (aTHXo->interp.Icollation_name) +#define PL_collation_standard (aTHXo->interp.Icollation_standard) +#define PL_collxfrm_base (aTHXo->interp.Icollxfrm_base) +#define PL_collxfrm_mult (aTHXo->interp.Icollxfrm_mult) +#define PL_compcv (aTHXo->interp.Icompcv) +#define PL_compiling (aTHXo->interp.Icompiling) +#define PL_comppad (aTHXo->interp.Icomppad) +#define PL_comppad_name (aTHXo->interp.Icomppad_name) +#define PL_comppad_name_fill (aTHXo->interp.Icomppad_name_fill) +#define PL_comppad_name_floor (aTHXo->interp.Icomppad_name_floor) +#define PL_cop_seqmax (aTHXo->interp.Icop_seqmax) +#define PL_copline (aTHXo->interp.Icopline) +#define PL_cred_mutex (aTHXo->interp.Icred_mutex) +#define PL_cryptseen (aTHXo->interp.Icryptseen) +#define PL_cshlen (aTHXo->interp.Icshlen) +#define PL_cshname (aTHXo->interp.Icshname) +#define PL_curcopdb (aTHXo->interp.Icurcopdb) +#define PL_curstname (aTHXo->interp.Icurstname) +#define PL_curthr (aTHXo->interp.Icurthr) +#define PL_dbargs (aTHXo->interp.Idbargs) +#define PL_debstash (aTHXo->interp.Idebstash) +#define PL_debug (aTHXo->interp.Idebug) +#define PL_defgv (aTHXo->interp.Idefgv) +#define PL_diehook (aTHXo->interp.Idiehook) +#define PL_doextract (aTHXo->interp.Idoextract) +#define PL_doswitches (aTHXo->interp.Idoswitches) +#define PL_dowarn (aTHXo->interp.Idowarn) +#define PL_e_script (aTHXo->interp.Ie_script) +#define PL_egid (aTHXo->interp.Iegid) +#define PL_endav (aTHXo->interp.Iendav) +#define PL_envgv (aTHXo->interp.Ienvgv) +#define PL_errgv (aTHXo->interp.Ierrgv) +#define PL_error_count (aTHXo->interp.Ierror_count) +#define PL_euid (aTHXo->interp.Ieuid) +#define PL_eval_cond (aTHXo->interp.Ieval_cond) +#define PL_eval_mutex (aTHXo->interp.Ieval_mutex) +#define PL_eval_owner (aTHXo->interp.Ieval_owner) +#define PL_eval_root (aTHXo->interp.Ieval_root) +#define PL_eval_start (aTHXo->interp.Ieval_start) +#define PL_evalseq (aTHXo->interp.Ievalseq) +#define PL_exit_flags (aTHXo->interp.Iexit_flags) +#define PL_exitlist (aTHXo->interp.Iexitlist) +#define PL_exitlistlen (aTHXo->interp.Iexitlistlen) +#define PL_expect (aTHXo->interp.Iexpect) +#define PL_fdpid (aTHXo->interp.Ifdpid) +#define PL_filemode (aTHXo->interp.Ifilemode) +#define PL_forkprocess (aTHXo->interp.Iforkprocess) +#define PL_formfeed (aTHXo->interp.Iformfeed) +#define PL_generation (aTHXo->interp.Igeneration) +#define PL_gensym (aTHXo->interp.Igensym) +#define PL_gid (aTHXo->interp.Igid) +#define PL_glob_index (aTHXo->interp.Iglob_index) +#define PL_globalstash (aTHXo->interp.Iglobalstash) +#define PL_he_root (aTHXo->interp.Ihe_root) +#define PL_hintgv (aTHXo->interp.Ihintgv) +#define PL_hints (aTHXo->interp.Ihints) +#define PL_in_clean_all (aTHXo->interp.Iin_clean_all) +#define PL_in_clean_objs (aTHXo->interp.Iin_clean_objs) +#define PL_in_my (aTHXo->interp.Iin_my) +#define PL_in_my_stash (aTHXo->interp.Iin_my_stash) +#define PL_incgv (aTHXo->interp.Iincgv) +#define PL_initav (aTHXo->interp.Iinitav) +#define PL_inplace (aTHXo->interp.Iinplace) +#define PL_last_lop (aTHXo->interp.Ilast_lop) +#define PL_last_lop_op (aTHXo->interp.Ilast_lop_op) +#define PL_last_swash_hv (aTHXo->interp.Ilast_swash_hv) +#define PL_last_swash_key (aTHXo->interp.Ilast_swash_key) +#define PL_last_swash_klen (aTHXo->interp.Ilast_swash_klen) +#define PL_last_swash_slen (aTHXo->interp.Ilast_swash_slen) +#define PL_last_swash_tmps (aTHXo->interp.Ilast_swash_tmps) +#define PL_last_uni (aTHXo->interp.Ilast_uni) +#define PL_lastfd (aTHXo->interp.Ilastfd) +#define PL_laststatval (aTHXo->interp.Ilaststatval) +#define PL_laststype (aTHXo->interp.Ilaststype) +#define PL_lex_brackets (aTHXo->interp.Ilex_brackets) +#define PL_lex_brackstack (aTHXo->interp.Ilex_brackstack) +#define PL_lex_casemods (aTHXo->interp.Ilex_casemods) +#define PL_lex_casestack (aTHXo->interp.Ilex_casestack) +#define PL_lex_defer (aTHXo->interp.Ilex_defer) +#define PL_lex_dojoin (aTHXo->interp.Ilex_dojoin) +#define PL_lex_expect (aTHXo->interp.Ilex_expect) +#define PL_lex_formbrack (aTHXo->interp.Ilex_formbrack) +#define PL_lex_inpat (aTHXo->interp.Ilex_inpat) +#define PL_lex_inwhat (aTHXo->interp.Ilex_inwhat) +#define PL_lex_op (aTHXo->interp.Ilex_op) +#define PL_lex_repl (aTHXo->interp.Ilex_repl) +#define PL_lex_starts (aTHXo->interp.Ilex_starts) +#define PL_lex_state (aTHXo->interp.Ilex_state) +#define PL_lex_stuff (aTHXo->interp.Ilex_stuff) +#define PL_lineary (aTHXo->interp.Ilineary) +#define PL_linestart (aTHXo->interp.Ilinestart) +#define PL_linestr (aTHXo->interp.Ilinestr) +#define PL_localpatches (aTHXo->interp.Ilocalpatches) +#define PL_main_cv (aTHXo->interp.Imain_cv) +#define PL_main_root (aTHXo->interp.Imain_root) +#define PL_main_start (aTHXo->interp.Imain_start) +#define PL_max_intro_pending (aTHXo->interp.Imax_intro_pending) +#define PL_maxo (aTHXo->interp.Imaxo) +#define PL_maxsysfd (aTHXo->interp.Imaxsysfd) +#define PL_mess_sv (aTHXo->interp.Imess_sv) +#define PL_min_intro_pending (aTHXo->interp.Imin_intro_pending) +#define PL_minus_F (aTHXo->interp.Iminus_F) +#define PL_minus_a (aTHXo->interp.Iminus_a) +#define PL_minus_c (aTHXo->interp.Iminus_c) +#define PL_minus_l (aTHXo->interp.Iminus_l) +#define PL_minus_n (aTHXo->interp.Iminus_n) +#define PL_minus_p (aTHXo->interp.Iminus_p) +#define PL_modglobal (aTHXo->interp.Imodglobal) +#define PL_multi_close (aTHXo->interp.Imulti_close) +#define PL_multi_end (aTHXo->interp.Imulti_end) +#define PL_multi_open (aTHXo->interp.Imulti_open) +#define PL_multi_start (aTHXo->interp.Imulti_start) +#define PL_multiline (aTHXo->interp.Imultiline) +#define PL_nexttoke (aTHXo->interp.Inexttoke) +#define PL_nexttype (aTHXo->interp.Inexttype) +#define PL_nextval (aTHXo->interp.Inextval) +#define PL_nice_chunk (aTHXo->interp.Inice_chunk) +#define PL_nice_chunk_size (aTHXo->interp.Inice_chunk_size) +#define PL_nomemok (aTHXo->interp.Inomemok) +#define PL_nthreads (aTHXo->interp.Inthreads) +#define PL_nthreads_cond (aTHXo->interp.Inthreads_cond) +#define PL_numeric_local (aTHXo->interp.Inumeric_local) +#define PL_numeric_name (aTHXo->interp.Inumeric_name) +#define PL_numeric_radix (aTHXo->interp.Inumeric_radix) +#define PL_numeric_standard (aTHXo->interp.Inumeric_standard) +#define PL_ofmt (aTHXo->interp.Iofmt) +#define PL_oldbufptr (aTHXo->interp.Ioldbufptr) +#define PL_oldname (aTHXo->interp.Ioldname) +#define PL_oldoldbufptr (aTHXo->interp.Ioldoldbufptr) +#define PL_op_mask (aTHXo->interp.Iop_mask) +#define PL_op_seqmax (aTHXo->interp.Iop_seqmax) +#define PL_origalen (aTHXo->interp.Iorigalen) +#define PL_origargc (aTHXo->interp.Iorigargc) +#define PL_origargv (aTHXo->interp.Iorigargv) +#define PL_origenviron (aTHXo->interp.Iorigenviron) +#define PL_origfilename (aTHXo->interp.Iorigfilename) +#define PL_ors (aTHXo->interp.Iors) +#define PL_orslen (aTHXo->interp.Iorslen) +#define PL_osname (aTHXo->interp.Iosname) +#define PL_pad_reset_pending (aTHXo->interp.Ipad_reset_pending) +#define PL_padix (aTHXo->interp.Ipadix) +#define PL_padix_floor (aTHXo->interp.Ipadix_floor) +#define PL_patchlevel (aTHXo->interp.Ipatchlevel) +#define PL_pending_ident (aTHXo->interp.Ipending_ident) +#define PL_perl_destruct_level (aTHXo->interp.Iperl_destruct_level) +#define PL_perldb (aTHXo->interp.Iperldb) +#define PL_pidstatus (aTHXo->interp.Ipidstatus) +#define PL_preambleav (aTHXo->interp.Ipreambleav) +#define PL_preambled (aTHXo->interp.Ipreambled) +#define PL_preprocess (aTHXo->interp.Ipreprocess) +#define PL_profiledata (aTHXo->interp.Iprofiledata) +#define PL_psig_name (aTHXo->interp.Ipsig_name) +#define PL_psig_ptr (aTHXo->interp.Ipsig_ptr) +#define PL_ptr_table (aTHXo->interp.Iptr_table) +#define PL_replgv (aTHXo->interp.Ireplgv) +#define PL_rsfp (aTHXo->interp.Irsfp) +#define PL_rsfp_filters (aTHXo->interp.Irsfp_filters) +#define PL_runops (aTHXo->interp.Irunops) +#define PL_sawampersand (aTHXo->interp.Isawampersand) +#define PL_sh_path (aTHXo->interp.Ish_path) +#define PL_sighandlerp (aTHXo->interp.Isighandlerp) +#define PL_splitstr (aTHXo->interp.Isplitstr) +#define PL_srand_called (aTHXo->interp.Isrand_called) +#define PL_statusvalue (aTHXo->interp.Istatusvalue) +#define PL_statusvalue_vms (aTHXo->interp.Istatusvalue_vms) +#define PL_stderrgv (aTHXo->interp.Istderrgv) +#define PL_stdingv (aTHXo->interp.Istdingv) +#define PL_strtab (aTHXo->interp.Istrtab) +#define PL_strtab_mutex (aTHXo->interp.Istrtab_mutex) +#define PL_sub_generation (aTHXo->interp.Isub_generation) +#define PL_sublex_info (aTHXo->interp.Isublex_info) +#define PL_subline (aTHXo->interp.Isubline) +#define PL_subname (aTHXo->interp.Isubname) +#define PL_sv_arenaroot (aTHXo->interp.Isv_arenaroot) +#define PL_sv_count (aTHXo->interp.Isv_count) +#define PL_sv_mutex (aTHXo->interp.Isv_mutex) +#define PL_sv_no (aTHXo->interp.Isv_no) +#define PL_sv_objcount (aTHXo->interp.Isv_objcount) +#define PL_sv_root (aTHXo->interp.Isv_root) +#define PL_sv_undef (aTHXo->interp.Isv_undef) +#define PL_sv_yes (aTHXo->interp.Isv_yes) +#define PL_svref_mutex (aTHXo->interp.Isvref_mutex) +#define PL_sys_intern (aTHXo->interp.Isys_intern) +#define PL_tainting (aTHXo->interp.Itainting) +#define PL_threadnum (aTHXo->interp.Ithreadnum) +#define PL_threads_mutex (aTHXo->interp.Ithreads_mutex) +#define PL_threadsv_names (aTHXo->interp.Ithreadsv_names) +#define PL_thrsv (aTHXo->interp.Ithrsv) +#define PL_tokenbuf (aTHXo->interp.Itokenbuf) +#define PL_uid (aTHXo->interp.Iuid) +#define PL_unsafe (aTHXo->interp.Iunsafe) +#define PL_utf8_alnum (aTHXo->interp.Iutf8_alnum) +#define PL_utf8_alnumc (aTHXo->interp.Iutf8_alnumc) +#define PL_utf8_alpha (aTHXo->interp.Iutf8_alpha) +#define PL_utf8_ascii (aTHXo->interp.Iutf8_ascii) +#define PL_utf8_cntrl (aTHXo->interp.Iutf8_cntrl) +#define PL_utf8_digit (aTHXo->interp.Iutf8_digit) +#define PL_utf8_graph (aTHXo->interp.Iutf8_graph) +#define PL_utf8_lower (aTHXo->interp.Iutf8_lower) +#define PL_utf8_mark (aTHXo->interp.Iutf8_mark) +#define PL_utf8_print (aTHXo->interp.Iutf8_print) +#define PL_utf8_punct (aTHXo->interp.Iutf8_punct) +#define PL_utf8_space (aTHXo->interp.Iutf8_space) +#define PL_utf8_tolower (aTHXo->interp.Iutf8_tolower) +#define PL_utf8_totitle (aTHXo->interp.Iutf8_totitle) +#define PL_utf8_toupper (aTHXo->interp.Iutf8_toupper) +#define PL_utf8_upper (aTHXo->interp.Iutf8_upper) +#define PL_utf8_xdigit (aTHXo->interp.Iutf8_xdigit) +#define PL_uudmap (aTHXo->interp.Iuudmap) +#define PL_warnhook (aTHXo->interp.Iwarnhook) +#define PL_widesyscalls (aTHXo->interp.Iwidesyscalls) +#define PL_xiv_arenaroot (aTHXo->interp.Ixiv_arenaroot) +#define PL_xiv_root (aTHXo->interp.Ixiv_root) +#define PL_xnv_root (aTHXo->interp.Ixnv_root) +#define PL_xpv_root (aTHXo->interp.Ixpv_root) +#define PL_xpvav_root (aTHXo->interp.Ixpvav_root) +#define PL_xpvbm_root (aTHXo->interp.Ixpvbm_root) +#define PL_xpvcv_root (aTHXo->interp.Ixpvcv_root) +#define PL_xpvhv_root (aTHXo->interp.Ixpvhv_root) +#define PL_xpviv_root (aTHXo->interp.Ixpviv_root) +#define PL_xpvlv_root (aTHXo->interp.Ixpvlv_root) +#define PL_xpvmg_root (aTHXo->interp.Ixpvmg_root) +#define PL_xpvnv_root (aTHXo->interp.Ixpvnv_root) +#define PL_xrv_root (aTHXo->interp.Ixrv_root) +#define PL_yychar (aTHXo->interp.Iyychar) +#define PL_yydebug (aTHXo->interp.Iyydebug) +#define PL_yyerrflag (aTHXo->interp.Iyyerrflag) +#define PL_yylval (aTHXo->interp.Iyylval) +#define PL_yynerrs (aTHXo->interp.Iyynerrs) +#define PL_yyval (aTHXo->interp.Iyyval) + +# else /* !PERL_OBJECT */ + +/* cases 1 and 4 above */ + #define PL_IArgv PL_Argv #define PL_ICmd PL_Cmd #define PL_IDBcv PL_DBcv @@ -275,75 +1110,128 @@ #define PL_IDBsingle PL_DBsingle #define PL_IDBsub PL_DBsub #define PL_IDBtrace PL_DBtrace -#define PL_Iampergv PL_ampergv -#define PL_Iarchpat_auto PL_archpat_auto +#define PL_IDir PL_Dir +#define PL_IEnv PL_Env +#define PL_ILIO PL_LIO +#define PL_IMem PL_Mem +#define PL_IMemParse PL_MemParse +#define PL_IMemShared PL_MemShared +#define PL_IProc PL_Proc +#define PL_ISock PL_Sock +#define PL_IStdIO PL_StdIO +#define PL_Iamagic_generation PL_amagic_generation +#define PL_Ian PL_an #define PL_Iargvgv PL_argvgv +#define PL_Iargvout_stack PL_argvout_stack #define PL_Iargvoutgv PL_argvoutgv #define PL_Ibasetime PL_basetime #define PL_Ibeginav PL_beginav -#define PL_Ibytecode_iv_overflows PL_bytecode_iv_overflows -#define PL_Ibytecode_obj_list PL_bytecode_obj_list -#define PL_Ibytecode_obj_list_fill PL_bytecode_obj_list_fill -#define PL_Ibytecode_pv PL_bytecode_pv -#define PL_Ibytecode_sv PL_bytecode_sv -#define PL_Icddir PL_cddir +#define PL_Ibitcount PL_bitcount +#define PL_Ibufend PL_bufend +#define PL_Ibufptr PL_bufptr +#define PL_Icheckav PL_checkav +#define PL_Icollation_ix PL_collation_ix +#define PL_Icollation_name PL_collation_name +#define PL_Icollation_standard PL_collation_standard +#define PL_Icollxfrm_base PL_collxfrm_base +#define PL_Icollxfrm_mult PL_collxfrm_mult #define PL_Icompcv PL_compcv #define PL_Icompiling PL_compiling #define PL_Icomppad PL_comppad #define PL_Icomppad_name PL_comppad_name #define PL_Icomppad_name_fill PL_comppad_name_fill #define PL_Icomppad_name_floor PL_comppad_name_floor +#define PL_Icop_seqmax PL_cop_seqmax #define PL_Icopline PL_copline +#define PL_Icred_mutex PL_cred_mutex +#define PL_Icryptseen PL_cryptseen +#define PL_Icshlen PL_cshlen +#define PL_Icshname PL_cshname #define PL_Icurcopdb PL_curcopdb #define PL_Icurstname PL_curstname +#define PL_Icurthr PL_curthr #define PL_Idbargs PL_dbargs -#define PL_Idebdelim PL_debdelim -#define PL_Idebname PL_debname #define PL_Idebstash PL_debstash +#define PL_Idebug PL_debug #define PL_Idefgv PL_defgv #define PL_Idiehook PL_diehook -#define PL_Idlevel PL_dlevel -#define PL_Idlmax PL_dlmax #define PL_Idoextract PL_doextract #define PL_Idoswitches PL_doswitches #define PL_Idowarn PL_dowarn -#define PL_Idumplvl PL_dumplvl #define PL_Ie_script PL_e_script +#define PL_Iegid PL_egid #define PL_Iendav PL_endav #define PL_Ienvgv PL_envgv #define PL_Ierrgv PL_errgv +#define PL_Ierror_count PL_error_count +#define PL_Ieuid PL_euid +#define PL_Ieval_cond PL_eval_cond +#define PL_Ieval_mutex PL_eval_mutex +#define PL_Ieval_owner PL_eval_owner #define PL_Ieval_root PL_eval_root #define PL_Ieval_start PL_eval_start +#define PL_Ievalseq PL_evalseq +#define PL_Iexit_flags PL_exit_flags #define PL_Iexitlist PL_exitlist #define PL_Iexitlistlen PL_exitlistlen +#define PL_Iexpect PL_expect #define PL_Ifdpid PL_fdpid #define PL_Ifilemode PL_filemode #define PL_Iforkprocess PL_forkprocess #define PL_Iformfeed PL_formfeed #define PL_Igeneration PL_generation #define PL_Igensym PL_gensym +#define PL_Igid PL_gid +#define PL_Iglob_index PL_glob_index #define PL_Iglobalstash PL_globalstash +#define PL_Ihe_root PL_he_root #define PL_Ihintgv PL_hintgv +#define PL_Ihints PL_hints #define PL_Iin_clean_all PL_in_clean_all #define PL_Iin_clean_objs PL_in_clean_objs +#define PL_Iin_my PL_in_my +#define PL_Iin_my_stash PL_in_my_stash #define PL_Iincgv PL_incgv #define PL_Iinitav PL_initav #define PL_Iinplace PL_inplace -#define PL_Ilast_proto PL_last_proto +#define PL_Ilast_lop PL_last_lop +#define PL_Ilast_lop_op PL_last_lop_op +#define PL_Ilast_swash_hv PL_last_swash_hv +#define PL_Ilast_swash_key PL_last_swash_key +#define PL_Ilast_swash_klen PL_last_swash_klen +#define PL_Ilast_swash_slen PL_last_swash_slen +#define PL_Ilast_swash_tmps PL_last_swash_tmps +#define PL_Ilast_uni PL_last_uni #define PL_Ilastfd PL_lastfd -#define PL_Ilastsize PL_lastsize -#define PL_Ilastspbase PL_lastspbase #define PL_Ilaststatval PL_laststatval #define PL_Ilaststype PL_laststype -#define PL_Ileftgv PL_leftgv +#define PL_Ilex_brackets PL_lex_brackets +#define PL_Ilex_brackstack PL_lex_brackstack +#define PL_Ilex_casemods PL_lex_casemods +#define PL_Ilex_casestack PL_lex_casestack +#define PL_Ilex_defer PL_lex_defer +#define PL_Ilex_dojoin PL_lex_dojoin +#define PL_Ilex_expect PL_lex_expect +#define PL_Ilex_formbrack PL_lex_formbrack +#define PL_Ilex_inpat PL_lex_inpat +#define PL_Ilex_inwhat PL_lex_inwhat +#define PL_Ilex_op PL_lex_op +#define PL_Ilex_repl PL_lex_repl +#define PL_Ilex_starts PL_lex_starts +#define PL_Ilex_state PL_lex_state +#define PL_Ilex_stuff PL_lex_stuff #define PL_Ilineary PL_lineary #define PL_Ilinestart PL_linestart +#define PL_Ilinestr PL_linestr #define PL_Ilocalpatches PL_localpatches #define PL_Imain_cv PL_main_cv #define PL_Imain_root PL_main_root #define PL_Imain_start PL_main_start +#define PL_Imax_intro_pending PL_max_intro_pending +#define PL_Imaxo PL_maxo #define PL_Imaxsysfd PL_maxsysfd #define PL_Imess_sv PL_mess_sv +#define PL_Imin_intro_pending PL_min_intro_pending #define PL_Iminus_F PL_minus_F #define PL_Iminus_a PL_minus_a #define PL_Iminus_c PL_minus_c @@ -351,55 +1239,268 @@ #define PL_Iminus_n PL_minus_n #define PL_Iminus_p PL_minus_p #define PL_Imodglobal PL_modglobal +#define PL_Imulti_close PL_multi_close +#define PL_Imulti_end PL_multi_end +#define PL_Imulti_open PL_multi_open +#define PL_Imulti_start PL_multi_start #define PL_Imultiline PL_multiline -#define PL_Imystrk PL_mystrk +#define PL_Inexttoke PL_nexttoke +#define PL_Inexttype PL_nexttype +#define PL_Inextval PL_nextval +#define PL_Inice_chunk PL_nice_chunk +#define PL_Inice_chunk_size PL_nice_chunk_size +#define PL_Inomemok PL_nomemok +#define PL_Inthreads PL_nthreads +#define PL_Inthreads_cond PL_nthreads_cond +#define PL_Inumeric_local PL_numeric_local +#define PL_Inumeric_name PL_numeric_name +#define PL_Inumeric_radix PL_numeric_radix +#define PL_Inumeric_standard PL_numeric_standard #define PL_Iofmt PL_ofmt -#define PL_Ioldlastpm PL_oldlastpm +#define PL_Ioldbufptr PL_oldbufptr #define PL_Ioldname PL_oldname +#define PL_Ioldoldbufptr PL_oldoldbufptr #define PL_Iop_mask PL_op_mask +#define PL_Iop_seqmax PL_op_seqmax +#define PL_Iorigalen PL_origalen #define PL_Iorigargc PL_origargc #define PL_Iorigargv PL_origargv +#define PL_Iorigenviron PL_origenviron #define PL_Iorigfilename PL_origfilename #define PL_Iors PL_ors #define PL_Iorslen PL_orslen -#define PL_Iparsehook PL_parsehook +#define PL_Iosname PL_osname +#define PL_Ipad_reset_pending PL_pad_reset_pending +#define PL_Ipadix PL_padix +#define PL_Ipadix_floor PL_padix_floor #define PL_Ipatchlevel PL_patchlevel #define PL_Ipending_ident PL_pending_ident #define PL_Iperl_destruct_level PL_perl_destruct_level #define PL_Iperldb PL_perldb +#define PL_Ipidstatus PL_pidstatus #define PL_Ipreambleav PL_preambleav #define PL_Ipreambled PL_preambled #define PL_Ipreprocess PL_preprocess #define PL_Iprofiledata PL_profiledata +#define PL_Ipsig_name PL_psig_name +#define PL_Ipsig_ptr PL_psig_ptr +#define PL_Iptr_table PL_ptr_table #define PL_Ireplgv PL_replgv -#define PL_Irightgv PL_rightgv #define PL_Irsfp PL_rsfp #define PL_Irsfp_filters PL_rsfp_filters +#define PL_Irunops PL_runops #define PL_Isawampersand PL_sawampersand -#define PL_Isawstudy PL_sawstudy -#define PL_Isawvec PL_sawvec -#define PL_Isiggv PL_siggv +#define PL_Ish_path PL_sh_path +#define PL_Isighandlerp PL_sighandlerp #define PL_Isplitstr PL_splitstr +#define PL_Isrand_called PL_srand_called #define PL_Istatusvalue PL_statusvalue #define PL_Istatusvalue_vms PL_statusvalue_vms +#define PL_Istderrgv PL_stderrgv #define PL_Istdingv PL_stdingv -#define PL_Istrchop PL_strchop #define PL_Istrtab PL_strtab #define PL_Istrtab_mutex PL_strtab_mutex #define PL_Isub_generation PL_sub_generation #define PL_Isublex_info PL_sublex_info +#define PL_Isubline PL_subline +#define PL_Isubname PL_subname #define PL_Isv_arenaroot PL_sv_arenaroot #define PL_Isv_count PL_sv_count +#define PL_Isv_mutex PL_sv_mutex +#define PL_Isv_no PL_sv_no #define PL_Isv_objcount PL_sv_objcount #define PL_Isv_root PL_sv_root +#define PL_Isv_undef PL_sv_undef +#define PL_Isv_yes PL_sv_yes +#define PL_Isvref_mutex PL_svref_mutex #define PL_Isys_intern PL_sys_intern #define PL_Itainting PL_tainting #define PL_Ithreadnum PL_threadnum +#define PL_Ithreads_mutex PL_threads_mutex +#define PL_Ithreadsv_names PL_threadsv_names #define PL_Ithrsv PL_thrsv +#define PL_Itokenbuf PL_tokenbuf +#define PL_Iuid PL_uid #define PL_Iunsafe PL_unsafe +#define PL_Iutf8_alnum PL_utf8_alnum +#define PL_Iutf8_alnumc PL_utf8_alnumc +#define PL_Iutf8_alpha PL_utf8_alpha +#define PL_Iutf8_ascii PL_utf8_ascii +#define PL_Iutf8_cntrl PL_utf8_cntrl +#define PL_Iutf8_digit PL_utf8_digit +#define PL_Iutf8_graph PL_utf8_graph +#define PL_Iutf8_lower PL_utf8_lower +#define PL_Iutf8_mark PL_utf8_mark +#define PL_Iutf8_print PL_utf8_print +#define PL_Iutf8_punct PL_utf8_punct +#define PL_Iutf8_space PL_utf8_space +#define PL_Iutf8_tolower PL_utf8_tolower +#define PL_Iutf8_totitle PL_utf8_totitle +#define PL_Iutf8_toupper PL_utf8_toupper +#define PL_Iutf8_upper PL_utf8_upper +#define PL_Iutf8_xdigit PL_utf8_xdigit +#define PL_Iuudmap PL_uudmap #define PL_Iwarnhook PL_warnhook +#define PL_Iwidesyscalls PL_widesyscalls +#define PL_Ixiv_arenaroot PL_xiv_arenaroot +#define PL_Ixiv_root PL_xiv_root +#define PL_Ixnv_root PL_xnv_root +#define PL_Ixpv_root PL_xpv_root +#define PL_Ixpvav_root PL_xpvav_root +#define PL_Ixpvbm_root PL_xpvbm_root +#define PL_Ixpvcv_root PL_xpvcv_root +#define PL_Ixpvhv_root PL_xpvhv_root +#define PL_Ixpviv_root PL_xpviv_root +#define PL_Ixpvlv_root PL_xpvlv_root +#define PL_Ixpvmg_root PL_xpvmg_root +#define PL_Ixpvnv_root PL_xpvnv_root +#define PL_Ixrv_root PL_xrv_root +#define PL_Iyychar PL_yychar +#define PL_Iyydebug PL_yydebug +#define PL_Iyyerrflag PL_yyerrflag +#define PL_Iyylval PL_yylval +#define PL_Iyynerrs PL_yynerrs +#define PL_Iyyval PL_yyval -#ifndef USE_THREADS +# if defined(USE_THREADS) +/* case 4 above */ + +#define PL_Sv (aTHX->TSv) +#define PL_Xpv (aTHX->TXpv) +#define PL_av_fetch_sv (aTHX->Tav_fetch_sv) +#define PL_bodytarget (aTHX->Tbodytarget) +#define PL_bostr (aTHX->Tbostr) +#define PL_chopset (aTHX->Tchopset) +#define PL_colors (aTHX->Tcolors) +#define PL_colorset (aTHX->Tcolorset) +#define PL_curcop (aTHX->Tcurcop) +#define PL_curpad (aTHX->Tcurpad) +#define PL_curpm (aTHX->Tcurpm) +#define PL_curstack (aTHX->Tcurstack) +#define PL_curstackinfo (aTHX->Tcurstackinfo) +#define PL_curstash (aTHX->Tcurstash) +#define PL_defoutgv (aTHX->Tdefoutgv) +#define PL_defstash (aTHX->Tdefstash) +#define PL_delaymagic (aTHX->Tdelaymagic) +#define PL_dirty (aTHX->Tdirty) +#define PL_dumpindent (aTHX->Tdumpindent) +#define PL_efloatbuf (aTHX->Tefloatbuf) +#define PL_efloatsize (aTHX->Tefloatsize) +#define PL_errors (aTHX->Terrors) +#define PL_extralen (aTHX->Textralen) +#define PL_firstgv (aTHX->Tfirstgv) +#define PL_formtarget (aTHX->Tformtarget) +#define PL_hv_fetch_ent_mh (aTHX->Thv_fetch_ent_mh) +#define PL_hv_fetch_sv (aTHX->Thv_fetch_sv) +#define PL_in_eval (aTHX->Tin_eval) +#define PL_last_in_gv (aTHX->Tlast_in_gv) +#define PL_lastgotoprobe (aTHX->Tlastgotoprobe) +#define PL_lastscream (aTHX->Tlastscream) +#define PL_localizing (aTHX->Tlocalizing) +#define PL_mainstack (aTHX->Tmainstack) +#define PL_markstack (aTHX->Tmarkstack) +#define PL_markstack_max (aTHX->Tmarkstack_max) +#define PL_markstack_ptr (aTHX->Tmarkstack_ptr) +#define PL_maxscream (aTHX->Tmaxscream) +#define PL_modcount (aTHX->Tmodcount) +#define PL_na (aTHX->Tna) +#define PL_nrs (aTHX->Tnrs) +#define PL_ofs (aTHX->Tofs) +#define PL_ofslen (aTHX->Tofslen) +#define PL_op (aTHX->Top) +#define PL_opsave (aTHX->Topsave) +#define PL_protect (aTHX->Tprotect) +#define PL_reg_call_cc (aTHX->Treg_call_cc) +#define PL_reg_curpm (aTHX->Treg_curpm) +#define PL_reg_eval_set (aTHX->Treg_eval_set) +#define PL_reg_flags (aTHX->Treg_flags) +#define PL_reg_ganch (aTHX->Treg_ganch) +#define PL_reg_leftiter (aTHX->Treg_leftiter) +#define PL_reg_magic (aTHX->Treg_magic) +#define PL_reg_maxiter (aTHX->Treg_maxiter) +#define PL_reg_oldcurpm (aTHX->Treg_oldcurpm) +#define PL_reg_oldpos (aTHX->Treg_oldpos) +#define PL_reg_oldsaved (aTHX->Treg_oldsaved) +#define PL_reg_oldsavedlen (aTHX->Treg_oldsavedlen) +#define PL_reg_poscache (aTHX->Treg_poscache) +#define PL_reg_poscache_size (aTHX->Treg_poscache_size) +#define PL_reg_re (aTHX->Treg_re) +#define PL_reg_start_tmp (aTHX->Treg_start_tmp) +#define PL_reg_start_tmpl (aTHX->Treg_start_tmpl) +#define PL_reg_starttry (aTHX->Treg_starttry) +#define PL_reg_sv (aTHX->Treg_sv) +#define PL_reg_whilem_seen (aTHX->Treg_whilem_seen) +#define PL_regbol (aTHX->Tregbol) +#define PL_regcc (aTHX->Tregcc) +#define PL_regcode (aTHX->Tregcode) +#define PL_regcomp_parse (aTHX->Tregcomp_parse) +#define PL_regcomp_rx (aTHX->Tregcomp_rx) +#define PL_regcompp (aTHX->Tregcompp) +#define PL_regdata (aTHX->Tregdata) +#define PL_regdummy (aTHX->Tregdummy) +#define PL_regendp (aTHX->Tregendp) +#define PL_regeol (aTHX->Tregeol) +#define PL_regexecp (aTHX->Tregexecp) +#define PL_regflags (aTHX->Tregflags) +#define PL_regfree (aTHX->Tregfree) +#define PL_regindent (aTHX->Tregindent) +#define PL_reginput (aTHX->Treginput) +#define PL_regint_start (aTHX->Tregint_start) +#define PL_regint_string (aTHX->Tregint_string) +#define PL_reginterp_cnt (aTHX->Treginterp_cnt) +#define PL_reglastparen (aTHX->Treglastparen) +#define PL_regnarrate (aTHX->Tregnarrate) +#define PL_regnaughty (aTHX->Tregnaughty) +#define PL_regnpar (aTHX->Tregnpar) +#define PL_regprecomp (aTHX->Tregprecomp) +#define PL_regprev (aTHX->Tregprev) +#define PL_regprogram (aTHX->Tregprogram) +#define PL_regsawback (aTHX->Tregsawback) +#define PL_regseen (aTHX->Tregseen) +#define PL_regsize (aTHX->Tregsize) +#define PL_regstartp (aTHX->Tregstartp) +#define PL_regtill (aTHX->Tregtill) +#define PL_regxend (aTHX->Tregxend) +#define PL_restartop (aTHX->Trestartop) +#define PL_retstack (aTHX->Tretstack) +#define PL_retstack_ix (aTHX->Tretstack_ix) +#define PL_retstack_max (aTHX->Tretstack_max) +#define PL_rs (aTHX->Trs) +#define PL_savestack (aTHX->Tsavestack) +#define PL_savestack_ix (aTHX->Tsavestack_ix) +#define PL_savestack_max (aTHX->Tsavestack_max) +#define PL_scopestack (aTHX->Tscopestack) +#define PL_scopestack_ix (aTHX->Tscopestack_ix) +#define PL_scopestack_max (aTHX->Tscopestack_max) +#define PL_screamfirst (aTHX->Tscreamfirst) +#define PL_screamnext (aTHX->Tscreamnext) +#define PL_secondgv (aTHX->Tsecondgv) +#define PL_seen_evals (aTHX->Tseen_evals) +#define PL_seen_zerolen (aTHX->Tseen_zerolen) +#define PL_sortcop (aTHX->Tsortcop) +#define PL_sortcxix (aTHX->Tsortcxix) +#define PL_sortstash (aTHX->Tsortstash) +#define PL_stack_base (aTHX->Tstack_base) +#define PL_stack_max (aTHX->Tstack_max) +#define PL_stack_sp (aTHX->Tstack_sp) +#define PL_start_env (aTHX->Tstart_env) +#define PL_statbuf (aTHX->Tstatbuf) +#define PL_statcache (aTHX->Tstatcache) +#define PL_statgv (aTHX->Tstatgv) +#define PL_statname (aTHX->Tstatname) +#define PL_tainted (aTHX->Ttainted) +#define PL_timesbuf (aTHX->Ttimesbuf) +#define PL_tmps_floor (aTHX->Ttmps_floor) +#define PL_tmps_ix (aTHX->Ttmps_ix) +#define PL_tmps_max (aTHX->Ttmps_max) +#define PL_tmps_stack (aTHX->Ttmps_stack) +#define PL_top_env (aTHX->Ttop_env) +#define PL_toptarget (aTHX->Ttoptarget) +#define PL_watchaddr (aTHX->Twatchaddr) +#define PL_watchok (aTHX->Twatchok) + +# else /* !USE_THREADS */ +/* case 1 above */ #define PL_TSv PL_Sv #define PL_TXpv PL_Xpv @@ -419,6 +1520,10 @@ #define PL_Tdefstash PL_defstash #define PL_Tdelaymagic PL_delaymagic #define PL_Tdirty PL_dirty +#define PL_Tdumpindent PL_dumpindent +#define PL_Tefloatbuf PL_efloatbuf +#define PL_Tefloatsize PL_efloatsize +#define PL_Terrors PL_errors #define PL_Textralen PL_extralen #define PL_Tfirstgv PL_firstgv #define PL_Tformtarget PL_formtarget @@ -435,15 +1540,33 @@ #define PL_Tmarkstack_ptr PL_markstack_ptr #define PL_Tmaxscream PL_maxscream #define PL_Tmodcount PL_modcount +#define PL_Tna PL_na #define PL_Tnrs PL_nrs #define PL_Tofs PL_ofs #define PL_Tofslen PL_ofslen #define PL_Top PL_op #define PL_Topsave PL_opsave +#define PL_Tprotect PL_protect +#define PL_Treg_call_cc PL_reg_call_cc +#define PL_Treg_curpm PL_reg_curpm #define PL_Treg_eval_set PL_reg_eval_set #define PL_Treg_flags PL_reg_flags +#define PL_Treg_ganch PL_reg_ganch +#define PL_Treg_leftiter PL_reg_leftiter +#define PL_Treg_magic PL_reg_magic +#define PL_Treg_maxiter PL_reg_maxiter +#define PL_Treg_oldcurpm PL_reg_oldcurpm +#define PL_Treg_oldpos PL_reg_oldpos +#define PL_Treg_oldsaved PL_reg_oldsaved +#define PL_Treg_oldsavedlen PL_reg_oldsavedlen +#define PL_Treg_poscache PL_reg_poscache +#define PL_Treg_poscache_size PL_reg_poscache_size +#define PL_Treg_re PL_reg_re #define PL_Treg_start_tmp PL_reg_start_tmp #define PL_Treg_start_tmpl PL_reg_start_tmpl +#define PL_Treg_starttry PL_reg_starttry +#define PL_Treg_sv PL_reg_sv +#define PL_Treg_whilem_seen PL_reg_whilem_seen #define PL_Tregbol PL_regbol #define PL_Tregcc PL_regcc #define PL_Tregcode PL_regcode @@ -456,8 +1579,11 @@ #define PL_Tregeol PL_regeol #define PL_Tregexecp PL_regexecp #define PL_Tregflags PL_regflags +#define PL_Tregfree PL_regfree #define PL_Tregindent PL_regindent #define PL_Treginput PL_reginput +#define PL_Tregint_start PL_regint_start +#define PL_Tregint_string PL_regint_string #define PL_Treginterp_cnt PL_reginterp_cnt #define PL_Treglastparen PL_reglastparen #define PL_Tregnarrate PL_regnarrate @@ -507,364 +1633,40 @@ #define PL_Ttmps_stack PL_tmps_stack #define PL_Ttop_env PL_top_env #define PL_Ttoptarget PL_toptarget +#define PL_Twatchaddr PL_watchaddr +#define PL_Twatchok PL_watchok -#endif /* USE_THREADS */ +# endif /* USE_THREADS */ +# endif /* PERL_OBJECT */ +#endif /* MULTIPLICITY */ -/* Hide what would have been interpreter-specific symbols? */ - -#ifdef EMBED - - -#ifndef USE_THREADS - - -#endif /* USE_THREADS */ -#endif /* EMBED */ -#endif /* MULTIPLICITY */ - -/* Now same trickey for per-thread variables */ - -#ifdef USE_THREADS - -#define PL_Sv (thr->TSv) -#define PL_Xpv (thr->TXpv) -#define PL_av_fetch_sv (thr->Tav_fetch_sv) -#define PL_bodytarget (thr->Tbodytarget) -#define PL_bostr (thr->Tbostr) -#define PL_chopset (thr->Tchopset) -#define PL_colors (thr->Tcolors) -#define PL_colorset (thr->Tcolorset) -#define PL_curcop (thr->Tcurcop) -#define PL_curpad (thr->Tcurpad) -#define PL_curpm (thr->Tcurpm) -#define PL_curstack (thr->Tcurstack) -#define PL_curstackinfo (thr->Tcurstackinfo) -#define PL_curstash (thr->Tcurstash) -#define PL_defoutgv (thr->Tdefoutgv) -#define PL_defstash (thr->Tdefstash) -#define PL_delaymagic (thr->Tdelaymagic) -#define PL_dirty (thr->Tdirty) -#define PL_extralen (thr->Textralen) -#define PL_firstgv (thr->Tfirstgv) -#define PL_formtarget (thr->Tformtarget) -#define PL_hv_fetch_ent_mh (thr->Thv_fetch_ent_mh) -#define PL_hv_fetch_sv (thr->Thv_fetch_sv) -#define PL_in_eval (thr->Tin_eval) -#define PL_last_in_gv (thr->Tlast_in_gv) -#define PL_lastgotoprobe (thr->Tlastgotoprobe) -#define PL_lastscream (thr->Tlastscream) -#define PL_localizing (thr->Tlocalizing) -#define PL_mainstack (thr->Tmainstack) -#define PL_markstack (thr->Tmarkstack) -#define PL_markstack_max (thr->Tmarkstack_max) -#define PL_markstack_ptr (thr->Tmarkstack_ptr) -#define PL_maxscream (thr->Tmaxscream) -#define PL_modcount (thr->Tmodcount) -#define PL_nrs (thr->Tnrs) -#define PL_ofs (thr->Tofs) -#define PL_ofslen (thr->Tofslen) -#define PL_op (thr->Top) -#define PL_opsave (thr->Topsave) -#define PL_reg_eval_set (thr->Treg_eval_set) -#define PL_reg_flags (thr->Treg_flags) -#define PL_reg_start_tmp (thr->Treg_start_tmp) -#define PL_reg_start_tmpl (thr->Treg_start_tmpl) -#define PL_regbol (thr->Tregbol) -#define PL_regcc (thr->Tregcc) -#define PL_regcode (thr->Tregcode) -#define PL_regcomp_parse (thr->Tregcomp_parse) -#define PL_regcomp_rx (thr->Tregcomp_rx) -#define PL_regcompp (thr->Tregcompp) -#define PL_regdata (thr->Tregdata) -#define PL_regdummy (thr->Tregdummy) -#define PL_regendp (thr->Tregendp) -#define PL_regeol (thr->Tregeol) -#define PL_regexecp (thr->Tregexecp) -#define PL_regflags (thr->Tregflags) -#define PL_regindent (thr->Tregindent) -#define PL_reginput (thr->Treginput) -#define PL_reginterp_cnt (thr->Treginterp_cnt) -#define PL_reglastparen (thr->Treglastparen) -#define PL_regnarrate (thr->Tregnarrate) -#define PL_regnaughty (thr->Tregnaughty) -#define PL_regnpar (thr->Tregnpar) -#define PL_regprecomp (thr->Tregprecomp) -#define PL_regprev (thr->Tregprev) -#define PL_regprogram (thr->Tregprogram) -#define PL_regsawback (thr->Tregsawback) -#define PL_regseen (thr->Tregseen) -#define PL_regsize (thr->Tregsize) -#define PL_regstartp (thr->Tregstartp) -#define PL_regtill (thr->Tregtill) -#define PL_regxend (thr->Tregxend) -#define PL_restartop (thr->Trestartop) -#define PL_retstack (thr->Tretstack) -#define PL_retstack_ix (thr->Tretstack_ix) -#define PL_retstack_max (thr->Tretstack_max) -#define PL_rs (thr->Trs) -#define PL_savestack (thr->Tsavestack) -#define PL_savestack_ix (thr->Tsavestack_ix) -#define PL_savestack_max (thr->Tsavestack_max) -#define PL_scopestack (thr->Tscopestack) -#define PL_scopestack_ix (thr->Tscopestack_ix) -#define PL_scopestack_max (thr->Tscopestack_max) -#define PL_screamfirst (thr->Tscreamfirst) -#define PL_screamnext (thr->Tscreamnext) -#define PL_secondgv (thr->Tsecondgv) -#define PL_seen_evals (thr->Tseen_evals) -#define PL_seen_zerolen (thr->Tseen_zerolen) -#define PL_sortcop (thr->Tsortcop) -#define PL_sortcxix (thr->Tsortcxix) -#define PL_sortstash (thr->Tsortstash) -#define PL_stack_base (thr->Tstack_base) -#define PL_stack_max (thr->Tstack_max) -#define PL_stack_sp (thr->Tstack_sp) -#define PL_start_env (thr->Tstart_env) -#define PL_statbuf (thr->Tstatbuf) -#define PL_statcache (thr->Tstatcache) -#define PL_statgv (thr->Tstatgv) -#define PL_statname (thr->Tstatname) -#define PL_tainted (thr->Ttainted) -#define PL_timesbuf (thr->Ttimesbuf) -#define PL_tmps_floor (thr->Ttmps_floor) -#define PL_tmps_ix (thr->Ttmps_ix) -#define PL_tmps_max (thr->Ttmps_max) -#define PL_tmps_stack (thr->Ttmps_stack) -#define PL_top_env (thr->Ttop_env) -#define PL_toptarget (thr->Ttoptarget) - -#endif /* USE_THREADS */ - -#ifdef PERL_GLOBAL_STRUCT +#if defined(PERL_GLOBAL_STRUCT) #define PL_No (PL_Vars.GNo) #define PL_Yes (PL_Vars.GYes) -#define PL_amagic_generation (PL_Vars.Gamagic_generation) -#define PL_an (PL_Vars.Gan) -#define PL_bufend (PL_Vars.Gbufend) -#define PL_bufptr (PL_Vars.Gbufptr) -#define PL_collation_ix (PL_Vars.Gcollation_ix) -#define PL_collation_name (PL_Vars.Gcollation_name) -#define PL_collation_standard (PL_Vars.Gcollation_standard) -#define PL_collxfrm_base (PL_Vars.Gcollxfrm_base) -#define PL_collxfrm_mult (PL_Vars.Gcollxfrm_mult) -#define PL_cop_seqmax (PL_Vars.Gcop_seqmax) -#define PL_cred_mutex (PL_Vars.Gcred_mutex) -#define PL_cryptseen (PL_Vars.Gcryptseen) -#define PL_cshlen (PL_Vars.Gcshlen) -#define PL_cshname (PL_Vars.Gcshname) #define PL_curinterp (PL_Vars.Gcurinterp) -#define PL_curthr (PL_Vars.Gcurthr) -#define PL_debug (PL_Vars.Gdebug) #define PL_do_undump (PL_Vars.Gdo_undump) -#define PL_egid (PL_Vars.Gegid) -#define PL_error_count (PL_Vars.Gerror_count) -#define PL_euid (PL_Vars.Geuid) -#define PL_eval_cond (PL_Vars.Geval_cond) -#define PL_eval_mutex (PL_Vars.Geval_mutex) -#define PL_eval_owner (PL_Vars.Geval_owner) -#define PL_evalseq (PL_Vars.Gevalseq) -#define PL_expect (PL_Vars.Gexpect) -#define PL_gid (PL_Vars.Ggid) -#define PL_he_root (PL_Vars.Ghe_root) #define PL_hexdigit (PL_Vars.Ghexdigit) -#define PL_hints (PL_Vars.Ghints) -#define PL_in_my (PL_Vars.Gin_my) -#define PL_in_my_stash (PL_Vars.Gin_my_stash) -#define PL_last_lop (PL_Vars.Glast_lop) -#define PL_last_lop_op (PL_Vars.Glast_lop_op) -#define PL_last_uni (PL_Vars.Glast_uni) -#define PL_lex_brackets (PL_Vars.Glex_brackets) -#define PL_lex_brackstack (PL_Vars.Glex_brackstack) -#define PL_lex_casemods (PL_Vars.Glex_casemods) -#define PL_lex_casestack (PL_Vars.Glex_casestack) -#define PL_lex_defer (PL_Vars.Glex_defer) -#define PL_lex_dojoin (PL_Vars.Glex_dojoin) -#define PL_lex_expect (PL_Vars.Glex_expect) -#define PL_lex_fakebrack (PL_Vars.Glex_fakebrack) -#define PL_lex_formbrack (PL_Vars.Glex_formbrack) -#define PL_lex_inpat (PL_Vars.Glex_inpat) -#define PL_lex_inwhat (PL_Vars.Glex_inwhat) -#define PL_lex_op (PL_Vars.Glex_op) -#define PL_lex_repl (PL_Vars.Glex_repl) -#define PL_lex_starts (PL_Vars.Glex_starts) -#define PL_lex_state (PL_Vars.Glex_state) -#define PL_lex_stuff (PL_Vars.Glex_stuff) -#define PL_linestr (PL_Vars.Glinestr) #define PL_malloc_mutex (PL_Vars.Gmalloc_mutex) -#define PL_max_intro_pending (PL_Vars.Gmax_intro_pending) -#define PL_maxo (PL_Vars.Gmaxo) -#define PL_min_intro_pending (PL_Vars.Gmin_intro_pending) -#define PL_multi_close (PL_Vars.Gmulti_close) -#define PL_multi_end (PL_Vars.Gmulti_end) -#define PL_multi_open (PL_Vars.Gmulti_open) -#define PL_multi_start (PL_Vars.Gmulti_start) -#define PL_na (PL_Vars.Gna) -#define PL_nexttoke (PL_Vars.Gnexttoke) -#define PL_nexttype (PL_Vars.Gnexttype) -#define PL_nextval (PL_Vars.Gnextval) -#define PL_nice_chunk (PL_Vars.Gnice_chunk) -#define PL_nice_chunk_size (PL_Vars.Gnice_chunk_size) -#define PL_ninterps (PL_Vars.Gninterps) -#define PL_nomemok (PL_Vars.Gnomemok) -#define PL_nthreads (PL_Vars.Gnthreads) -#define PL_nthreads_cond (PL_Vars.Gnthreads_cond) -#define PL_numeric_local (PL_Vars.Gnumeric_local) -#define PL_numeric_name (PL_Vars.Gnumeric_name) -#define PL_numeric_standard (PL_Vars.Gnumeric_standard) -#define PL_oldbufptr (PL_Vars.Goldbufptr) -#define PL_oldoldbufptr (PL_Vars.Goldoldbufptr) -#define PL_op_seqmax (PL_Vars.Gop_seqmax) -#define PL_origalen (PL_Vars.Gorigalen) -#define PL_origenviron (PL_Vars.Gorigenviron) -#define PL_osname (PL_Vars.Gosname) -#define PL_pad_reset_pending (PL_Vars.Gpad_reset_pending) -#define PL_padix (PL_Vars.Gpadix) -#define PL_padix_floor (PL_Vars.Gpadix_floor) +#define PL_op_mutex (PL_Vars.Gop_mutex) #define PL_patleave (PL_Vars.Gpatleave) -#define PL_pidstatus (PL_Vars.Gpidstatus) -#define PL_runops (PL_Vars.Grunops) -#define PL_sh_path (PL_Vars.Gsh_path) -#define PL_sighandlerp (PL_Vars.Gsighandlerp) -#define PL_specialsv_list (PL_Vars.Gspecialsv_list) -#define PL_subline (PL_Vars.Gsubline) -#define PL_subname (PL_Vars.Gsubname) -#define PL_sv_mutex (PL_Vars.Gsv_mutex) -#define PL_sv_no (PL_Vars.Gsv_no) -#define PL_sv_undef (PL_Vars.Gsv_undef) -#define PL_sv_yes (PL_Vars.Gsv_yes) -#define PL_svref_mutex (PL_Vars.Gsvref_mutex) -#define PL_thisexpr (PL_Vars.Gthisexpr) #define PL_thr_key (PL_Vars.Gthr_key) -#define PL_threads_mutex (PL_Vars.Gthreads_mutex) -#define PL_threadsv_names (PL_Vars.Gthreadsv_names) -#define PL_tokenbuf (PL_Vars.Gtokenbuf) -#define PL_uid (PL_Vars.Guid) -#define PL_xiv_arenaroot (PL_Vars.Gxiv_arenaroot) -#define PL_xiv_root (PL_Vars.Gxiv_root) -#define PL_xnv_root (PL_Vars.Gxnv_root) -#define PL_xpv_root (PL_Vars.Gxpv_root) -#define PL_xrv_root (PL_Vars.Gxrv_root) #else /* !PERL_GLOBAL_STRUCT */ #define PL_GNo PL_No #define PL_GYes PL_Yes -#define PL_Gamagic_generation PL_amagic_generation -#define PL_Gan PL_an -#define PL_Gbufend PL_bufend -#define PL_Gbufptr PL_bufptr -#define PL_Gcollation_ix PL_collation_ix -#define PL_Gcollation_name PL_collation_name -#define PL_Gcollation_standard PL_collation_standard -#define PL_Gcollxfrm_base PL_collxfrm_base -#define PL_Gcollxfrm_mult PL_collxfrm_mult -#define PL_Gcop_seqmax PL_cop_seqmax -#define PL_Gcred_mutex PL_cred_mutex -#define PL_Gcryptseen PL_cryptseen -#define PL_Gcshlen PL_cshlen -#define PL_Gcshname PL_cshname #define PL_Gcurinterp PL_curinterp -#define PL_Gcurthr PL_curthr -#define PL_Gdebug PL_debug #define PL_Gdo_undump PL_do_undump -#define PL_Gegid PL_egid -#define PL_Gerror_count PL_error_count -#define PL_Geuid PL_euid -#define PL_Geval_cond PL_eval_cond -#define PL_Geval_mutex PL_eval_mutex -#define PL_Geval_owner PL_eval_owner -#define PL_Gevalseq PL_evalseq -#define PL_Gexpect PL_expect -#define PL_Ggid PL_gid -#define PL_Ghe_root PL_he_root #define PL_Ghexdigit PL_hexdigit -#define PL_Ghints PL_hints -#define PL_Gin_my PL_in_my -#define PL_Gin_my_stash PL_in_my_stash -#define PL_Glast_lop PL_last_lop -#define PL_Glast_lop_op PL_last_lop_op -#define PL_Glast_uni PL_last_uni -#define PL_Glex_brackets PL_lex_brackets -#define PL_Glex_brackstack PL_lex_brackstack -#define PL_Glex_casemods PL_lex_casemods -#define PL_Glex_casestack PL_lex_casestack -#define PL_Glex_defer PL_lex_defer -#define PL_Glex_dojoin PL_lex_dojoin -#define PL_Glex_expect PL_lex_expect -#define PL_Glex_fakebrack PL_lex_fakebrack -#define PL_Glex_formbrack PL_lex_formbrack -#define PL_Glex_inpat PL_lex_inpat -#define PL_Glex_inwhat PL_lex_inwhat -#define PL_Glex_op PL_lex_op -#define PL_Glex_repl PL_lex_repl -#define PL_Glex_starts PL_lex_starts -#define PL_Glex_state PL_lex_state -#define PL_Glex_stuff PL_lex_stuff -#define PL_Glinestr PL_linestr #define PL_Gmalloc_mutex PL_malloc_mutex -#define PL_Gmax_intro_pending PL_max_intro_pending -#define PL_Gmaxo PL_maxo -#define PL_Gmin_intro_pending PL_min_intro_pending -#define PL_Gmulti_close PL_multi_close -#define PL_Gmulti_end PL_multi_end -#define PL_Gmulti_open PL_multi_open -#define PL_Gmulti_start PL_multi_start -#define PL_Gna PL_na -#define PL_Gnexttoke PL_nexttoke -#define PL_Gnexttype PL_nexttype -#define PL_Gnextval PL_nextval -#define PL_Gnice_chunk PL_nice_chunk -#define PL_Gnice_chunk_size PL_nice_chunk_size -#define PL_Gninterps PL_ninterps -#define PL_Gnomemok PL_nomemok -#define PL_Gnthreads PL_nthreads -#define PL_Gnthreads_cond PL_nthreads_cond -#define PL_Gnumeric_local PL_numeric_local -#define PL_Gnumeric_name PL_numeric_name -#define PL_Gnumeric_standard PL_numeric_standard -#define PL_Goldbufptr PL_oldbufptr -#define PL_Goldoldbufptr PL_oldoldbufptr -#define PL_Gop_seqmax PL_op_seqmax -#define PL_Gorigalen PL_origalen -#define PL_Gorigenviron PL_origenviron -#define PL_Gosname PL_osname -#define PL_Gpad_reset_pending PL_pad_reset_pending -#define PL_Gpadix PL_padix -#define PL_Gpadix_floor PL_padix_floor +#define PL_Gop_mutex PL_op_mutex #define PL_Gpatleave PL_patleave -#define PL_Gpidstatus PL_pidstatus -#define PL_Grunops PL_runops -#define PL_Gsh_path PL_sh_path -#define PL_Gsighandlerp PL_sighandlerp -#define PL_Gspecialsv_list PL_specialsv_list -#define PL_Gsubline PL_subline -#define PL_Gsubname PL_subname -#define PL_Gsv_mutex PL_sv_mutex -#define PL_Gsv_no PL_sv_no -#define PL_Gsv_undef PL_sv_undef -#define PL_Gsv_yes PL_sv_yes -#define PL_Gsvref_mutex PL_svref_mutex -#define PL_Gthisexpr PL_thisexpr #define PL_Gthr_key PL_thr_key -#define PL_Gthreads_mutex PL_threads_mutex -#define PL_Gthreadsv_names PL_threadsv_names -#define PL_Gtokenbuf PL_tokenbuf -#define PL_Guid PL_uid -#define PL_Gxiv_arenaroot PL_xiv_arenaroot -#define PL_Gxiv_root PL_xiv_root -#define PL_Gxnv_root PL_xnv_root -#define PL_Gxpv_root PL_xpv_root -#define PL_Gxrv_root PL_xrv_root -#ifdef EMBED - - -#endif /* EMBED */ #endif /* PERL_GLOBAL_STRUCT */ - -#ifndef MIN_PERL_DEFINE +#ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */ #define DBsingle PL_DBsingle #define DBsub PL_DBsub @@ -878,6 +1680,7 @@ #define dowarn PL_dowarn #define errgv PL_errgv #define na PL_na +#define no_modify PL_no_modify #define perl_destruct_level PL_perl_destruct_level #define perldb PL_perldb #define rsfp PL_rsfp @@ -892,4 +1695,4 @@ #define tainted PL_tainted #define tainting PL_tainting -#endif /* MIN_PERL_DEFINE */ +#endif /* PERL_POLLUTE */ diff --git a/contrib/perl5/ext/B/B.pm b/contrib/perl5/ext/B/B.pm index 75dcfb3b74d2..4512d916e61e 100644 --- a/contrib/perl5/ext/B/B.pm +++ b/contrib/perl5/ext/B/B.pm @@ -6,15 +6,15 @@ # License or the Artistic License, as specified in the README file. # package B; -require DynaLoader; +use XSLoader (); require Exporter; -@ISA = qw(Exporter DynaLoader); -@EXPORT_OK = qw(byteload_fh byteload_string minus_c ppname +@ISA = qw(Exporter); +@EXPORT_OK = qw(minus_c ppname class peekop cast_I32 cstring cchar hash threadsv_names - main_root main_start main_cv svref_2object + main_root main_start main_cv svref_2object opnumber amagic_generation walkoptree walkoptree_slow walkoptree_exec walksymtable parents comppadlist sv_undef compile_stats timing_info init_av); - +sub OPf_KIDS (); use strict; @B::SV::ISA = 'B::OBJECT'; @B::NULL::ISA = 'B::SV'; @@ -38,10 +38,9 @@ use strict; @B::UNOP::ISA = 'B::OP'; @B::BINOP::ISA = 'B::UNOP'; @B::LOGOP::ISA = 'B::UNOP'; -@B::CONDOP::ISA = 'B::UNOP'; @B::LISTOP::ISA = 'B::BINOP'; @B::SVOP::ISA = 'B::OP'; -@B::GVOP::ISA = 'B::OP'; +@B::PADOP::ISA = 'B::OP'; @B::PVOP::ISA = 'B::OP'; @B::CVOP::ISA = 'B::OP'; @B::LOOP::ISA = 'B::LISTOP'; @@ -65,10 +64,6 @@ sub debug { walkoptree_debug($value); } -# sub OPf_KIDS; -# add to .xs for perl5.002 -sub OPf_KIDS () { 4 } - sub class { my $obj = shift; my $name = ref $obj; @@ -81,7 +76,7 @@ sub parents { \@parents } # For debugging sub peekop { my $op = shift; - return sprintf("%s (0x%x) %s", class($op), $$op, $op->ppaddr); + return sprintf("%s (0x%x) %s", class($op), $$op, $op->name); } sub walkoptree_slow { @@ -112,6 +107,11 @@ sub timing_info { } my %symtable; + +sub clearsym { + %symtable = (); +} + sub savesym { my ($obj, $value) = @_; # warn(sprintf("savesym: sym_%x => %s\n", $$obj, $value)); # debug @@ -135,37 +135,26 @@ sub walkoptree_exec { } savesym($op, sprintf("%s (0x%lx)", class($op), $$op)); $op->$method($level); - $ppname = $op->ppaddr; - if ($ppname =~ /^pp_(or|and|mapwhile|grepwhile|entertry)$/) { + $ppname = $op->name; + if ($ppname =~ + /^(or|and|mapwhile|grepwhile|entertry|range|cond_expr)$/) + { print $prefix, uc($1), " => {\n"; walkoptree_exec($op->other, $method, $level + 1); print $prefix, "}\n"; - } elsif ($ppname eq "pp_match" || $ppname eq "pp_subst") { + } elsif ($ppname eq "match" || $ppname eq "subst") { my $pmreplstart = $op->pmreplstart; if ($$pmreplstart) { print $prefix, "PMREPLSTART => {\n"; walkoptree_exec($pmreplstart, $method, $level + 1); print $prefix, "}\n"; } - } elsif ($ppname eq "pp_substcont") { + } elsif ($ppname eq "substcont") { print $prefix, "SUBSTCONT => {\n"; walkoptree_exec($op->other->pmreplstart, $method, $level + 1); print $prefix, "}\n"; $op = $op->other; - } elsif ($ppname eq "pp_cond_expr") { - # pp_cond_expr never returns op_next - print $prefix, "TRUE => {\n"; - walkoptree_exec($op->true, $method, $level + 1); - print $prefix, "}\n"; - $op = $op->false; - redo; - } elsif ($ppname eq "pp_range") { - print $prefix, "TRUE => {\n"; - walkoptree_exec($op->true, $method, $level + 1); - print $prefix, "}\n", $prefix, "FALSE => {\n"; - walkoptree_exec($op->false, $method, $level + 1); - print $prefix, "}\n"; - } elsif ($ppname eq "pp_enterloop") { + } elsif ($ppname eq "enterloop") { print $prefix, "REDO => {\n"; walkoptree_exec($op->redoop, $method, $level + 1); print $prefix, "}\n", $prefix, "NEXT => {\n"; @@ -173,7 +162,7 @@ sub walkoptree_exec { print $prefix, "}\n", $prefix, "LAST => {\n"; walkoptree_exec($op->lastop, $method, $level + 1); print $prefix, "}\n"; - } elsif ($ppname eq "pp_subst") { + } elsif ($ppname eq "subst") { my $replstart = $op->pmreplstart; if ($$replstart) { print $prefix, "SUBST => {\n"; @@ -187,9 +176,12 @@ sub walkoptree_exec { sub walksymtable { my ($symref, $method, $recurse, $prefix) = @_; my $sym; + my $ref; no strict 'vars'; local(*glob); - while (($sym, *glob) = each %$symref) { + $prefix = '' unless defined $prefix; + while (($sym, $ref) = each %$symref) { + *glob = "*main::".$prefix.$sym; if ($sym =~ /::$/) { $sym = $prefix . $sym; if ($sym ne "main::" && &$recurse($sym)) { @@ -267,7 +259,7 @@ sub walksymtable { } } -bootstrap B; +XSLoader::load 'B'; 1; @@ -428,6 +420,10 @@ C (corresponding to the C function C). =over 4 +=item is_empty + +This method returns TRUE if the GP field of the GV is NULL. + =item NAME =item STASH @@ -450,6 +446,8 @@ C (corresponding to the C function C). =item LINE +=item FILE + =item FILEGV =item GvREFCNT @@ -518,7 +516,7 @@ C (corresponding to the C function C). =item GV -=item FILEGV +=item FILE =item DEPTH @@ -556,8 +554,8 @@ C (corresponding to the C function C). =head2 OP-RELATED CLASSES -B::OP, B::UNOP, B::BINOP, B::LOGOP, B::CONDOP, B::LISTOP, B::PMOP, -B::SVOP, B::GVOP, B::PVOP, B::CVOP, B::LOOP, B::COP. +B::OP, B::UNOP, B::BINOP, B::LOGOP, B::LISTOP, B::PMOP, +B::SVOP, B::PADOP, B::PVOP, B::CVOP, B::LOOP, B::COP. These classes correspond in the obvious way to the underlying C structures of similar names. The inheritance hierarchy mimics the underlying C "inheritance". Access @@ -572,9 +570,14 @@ leading "class indication" prefix removed (op_). =item sibling +=item name + +This returns the op name as a string (e.g. "add", "rv2av"). + =item ppaddr -This returns the function name as a string (e.g. pp_add, pp_rv2av). +This returns the function name as a string (e.g. "PL_ppaddr[OP_ADD]", +"PL_ppaddr[OP_RV2AV]"). =item desc @@ -617,16 +620,6 @@ This returns the op description from the global C PL_op_desc array =back -=head2 B::CONDOP METHODS - -=over 4 - -=item true - -=item false - -=back - =head2 B::LISTOP METHOD =over 4 @@ -661,13 +654,15 @@ This returns the op description from the global C PL_op_desc array =item sv +=item gv + =back -=head2 B::GVOP METHOD +=head2 B::PADOP METHOD =over 4 -=item gv +=item padix =back @@ -699,7 +694,7 @@ This returns the op description from the global C PL_op_desc array =item stash -=item filegv +=item file =item cop_seq @@ -751,6 +746,10 @@ Returns the SV object corresponding to the C variable C. Returns the SV object corresponding to the C variable C. +=item amagic_generation + +Returns the SV object corresponding to the C variable C. + =item walkoptree(OP, METHOD) Does a tree-walk of the syntax tree based at OP and calls METHOD on @@ -817,11 +816,6 @@ preceding the first "::". This is used to turn "B::UNOP" into In a perl compiled for threads, this returns a list of the special per-thread threadsv variables. -=item byteload_fh(FILEHANDLE) - -Load the contents of FILEHANDLE as bytecode. See documentation for -the B module in F for how to generate bytecode. - =back =head1 AUTHOR diff --git a/contrib/perl5/ext/B/B.xs b/contrib/perl5/ext/B/B.xs index 6610ae8d5239..9e2985582a15 100644 --- a/contrib/perl5/ext/B/B.xs +++ b/contrib/perl5/ext/B/B.xs @@ -7,18 +7,18 @@ * */ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" -#include "INTERN.h" #ifdef PERL_OBJECT -#undef op_name -#undef opargs -#undef op_desc -#define op_name (pPerl->Perl_get_op_names()) -#define opargs (pPerl->Perl_get_opargs()) -#define op_desc (pPerl->Perl_get_op_descs()) +#undef PL_op_name +#undef PL_opargs +#undef PL_op_desc +#define PL_op_name (get_op_names()) +#define PL_opargs (get_opargs()) +#define PL_op_desc (get_op_descs()) #endif #ifdef PerlIO @@ -53,15 +53,14 @@ typedef enum { OPc_UNOP, /* 2 */ OPc_BINOP, /* 3 */ OPc_LOGOP, /* 4 */ - OPc_CONDOP, /* 5 */ - OPc_LISTOP, /* 6 */ - OPc_PMOP, /* 7 */ - OPc_SVOP, /* 8 */ - OPc_GVOP, /* 9 */ - OPc_PVOP, /* 10 */ - OPc_CVOP, /* 11 */ - OPc_LOOP, /* 12 */ - OPc_COP /* 13 */ + OPc_LISTOP, /* 5 */ + OPc_PMOP, /* 6 */ + OPc_SVOP, /* 7 */ + OPc_PADOP, /* 8 */ + OPc_PVOP, /* 9 */ + OPc_CVOP, /* 10 */ + OPc_LOOP, /* 11 */ + OPc_COP /* 12 */ } opclass; static char *opclassnames[] = { @@ -70,11 +69,10 @@ static char *opclassnames[] = { "B::UNOP", "B::BINOP", "B::LOGOP", - "B::CONDOP", "B::LISTOP", "B::PMOP", "B::SVOP", - "B::GVOP", + "B::PADOP", "B::PVOP", "B::CVOP", "B::LOOP", @@ -83,8 +81,10 @@ static char *opclassnames[] = { static int walkoptree_debug = 0; /* Flag for walkoptree debug hook */ +static SV *specialsv_list[4]; + static opclass -cc_opclass(OP *o) +cc_opclass(pTHX_ OP *o) { if (!o) return OPc_NULL; @@ -95,7 +95,12 @@ cc_opclass(OP *o) if (o->op_type == OP_SASSIGN) return ((o->op_private & OPpASSIGN_BACKWARDS) ? OPc_UNOP : OPc_BINOP); - switch (opargs[o->op_type] & OA_CLASS_MASK) { +#ifdef USE_ITHREADS + if (o->op_type == OP_GV || o->op_type == OP_GVSV || o->op_type == OP_AELEMFAST) + return OPc_PADOP; +#endif + + switch (PL_opargs[o->op_type] & OA_CLASS_MASK) { case OA_BASEOP: return OPc_BASEOP; @@ -108,9 +113,6 @@ cc_opclass(OP *o) case OA_LOGOP: return OPc_LOGOP; - case OA_CONDOP: - return OPc_CONDOP; - case OA_LISTOP: return OPc_LISTOP; @@ -120,11 +122,19 @@ cc_opclass(OP *o) case OA_SVOP: return OPc_SVOP; - case OA_GVOP: - return OPc_GVOP; + case OA_PADOP: + return OPc_PADOP; - case OA_PVOP: - return OPc_PVOP; + case OA_PVOP_OR_SVOP: + /* + * Character translations (tr///) are usually a PVOP, keeping a + * pointer to a table of shorts used to look up translations. + * Under utf8, however, a simple table isn't practical; instead, + * the OP is an SVOP, and the SV is a reference to a swash + * (i.e., an RV pointing to an HV). + */ + return (o->op_private & (OPpTRANS_TO_UTF|OPpTRANS_FROM_UTF)) + ? OPc_SVOP : OPc_PVOP; case OA_LOOP: return OPc_LOOP; @@ -150,11 +160,14 @@ cc_opclass(OP *o) * return OPc_UNOP so that walkoptree can find our children. If * OPf_KIDS is not set then we check OPf_REF. Without OPf_REF set * (no argument to the operator) it's an OP; with OPf_REF set it's - * a GVOP (and op_gv is the GV for the filehandle argument). + * an SVOP (and op_sv is the GV for the filehandle argument). */ return ((o->op_flags & OPf_KIDS) ? OPc_UNOP : - (o->op_flags & OPf_REF) ? OPc_GVOP : OPc_BASEOP); - +#ifdef USE_ITHREADS + (o->op_flags & OPf_REF) ? OPc_PADOP : OPc_BASEOP); +#else + (o->op_flags & OPf_REF) ? OPc_SVOP : OPc_BASEOP); +#endif case OA_LOOPEXOP: /* * next, last, redo, dump and goto use OPf_SPECIAL to indicate that a @@ -173,47 +186,47 @@ cc_opclass(OP *o) return OPc_PVOP; } warn("can't determine class of operator %s, assuming BASEOP\n", - op_name[o->op_type]); + PL_op_name[o->op_type]); return OPc_BASEOP; } static char * -cc_opclassname(OP *o) +cc_opclassname(pTHX_ OP *o) { - return opclassnames[cc_opclass(o)]; + return opclassnames[cc_opclass(aTHX_ o)]; } static SV * -make_sv_object(SV *arg, SV *sv) +make_sv_object(pTHX_ SV *arg, SV *sv) { char *type = 0; IV iv; - for (iv = 0; iv < sizeof(PL_specialsv_list)/sizeof(SV*); iv++) { - if (sv == PL_specialsv_list[iv]) { + for (iv = 0; iv < sizeof(specialsv_list)/sizeof(SV*); iv++) { + if (sv == specialsv_list[iv]) { type = "B::SPECIAL"; break; } } if (!type) { type = svclassnames[SvTYPE(sv)]; - iv = (IV)sv; + iv = PTR2IV(sv); } sv_setiv(newSVrv(arg, type), iv); return arg; } static SV * -make_mg_object(SV *arg, MAGIC *mg) +make_mg_object(pTHX_ SV *arg, MAGIC *mg) { - sv_setiv(newSVrv(arg, "B::MAGIC"), (IV)mg); + sv_setiv(newSVrv(arg, "B::MAGIC"), PTR2IV(mg)); return arg; } static SV * -cstring(SV *sv) +cstring(pTHX_ SV *sv) { - SV *sstr = newSVpv("", 0); + SV *sstr = newSVpvn("", 0); STRLEN len; char *s; @@ -264,9 +277,9 @@ cstring(SV *sv) } static SV * -cchar(SV *sv) +cchar(pTHX_ SV *sv) { - SV *sstr = newSVpv("'", 0); + SV *sstr = newSVpvn("'", 1); STRLEN n_a; char *s = SvPV(sv, n_a); @@ -303,76 +316,8 @@ cchar(SV *sv) return sstr; } -#ifdef INDIRECT_BGET_MACROS -void freadpv(U32 len, void *data) -{ - New(666, pv.xpv_pv, len, char); - fread(pv.xpv_pv, 1, len, (FILE*)data); - pv.xpv_len = len; - pv.xpv_cur = len - 1; -} - -void byteload_fh(InputStream fp) -{ - struct bytestream bs; - bs.data = fp; - bs.fgetc = (int(*) _((void*)))fgetc; - bs.fread = (int(*) _((char*,size_t,size_t,void*)))fread; - bs.freadpv = freadpv; - byterun(bs); -} - -static int fgetc_fromstring(void *data) -{ - char **strp = (char **)data; - return *(*strp)++; -} - -static int fread_fromstring(char *argp, size_t elemsize, size_t nelem, - void *data) -{ - char **strp = (char **)data; - size_t len = elemsize * nelem; - - memcpy(argp, *strp, len); - *strp += len; - return (int)len; -} - -static void freadpv_fromstring(U32 len, void *data) -{ - char **strp = (char **)data; - - New(666, pv.xpv_pv, len, char); - memcpy(pv.xpv_pv, *strp, len); - pv.xpv_len = len; - pv.xpv_cur = len - 1; - *strp += len; -} - -void byteload_string(char *str) -{ - struct bytestream bs; - bs.data = &str; - bs.fgetc = fgetc_fromstring; - bs.fread = fread_fromstring; - bs.freadpv = freadpv_fromstring; - byterun(bs); -} -#else -void byteload_fh(InputStream fp) -{ - byterun(fp); -} - -void byteload_string(char *str) -{ - croak("Must compile with -DINDIRECT_BGET_MACROS for byteload_string"); -} -#endif /* INDIRECT_BGET_MACROS */ - void -walkoptree(SV *opsv, char *method) +walkoptree(pTHX_ SV *opsv, char *method) { dSP; OP *o; @@ -380,7 +325,7 @@ walkoptree(SV *opsv, char *method) if (!SvROK(opsv)) croak("opsv is not a reference"); opsv = sv_mortalcopy(opsv); - o = (OP*)SvIV((SV*)SvRV(opsv)); + o = INT2PTR(OP*,SvIV((SV*)SvRV(opsv))); if (walkoptree_debug) { PUSHMARK(sp); XPUSHs(opsv); @@ -395,8 +340,8 @@ walkoptree(SV *opsv, char *method) OP *kid; for (kid = ((UNOP*)o)->op_first; kid; kid = kid->op_sibling) { /* Use the same opsv. Rely on methods not to mess it up. */ - sv_setiv(newSVrv(opsv, cc_opclassname(kid)), (IV)kid); - walkoptree(opsv, method); + sv_setiv(newSVrv(opsv, cc_opclassname(aTHX_ kid)), PTR2IV(kid)); + walkoptree(aTHX_ opsv, method); } } } @@ -405,11 +350,10 @@ typedef OP *B__OP; typedef UNOP *B__UNOP; typedef BINOP *B__BINOP; typedef LOGOP *B__LOGOP; -typedef CONDOP *B__CONDOP; typedef LISTOP *B__LISTOP; typedef PMOP *B__PMOP; typedef SVOP *B__SVOP; -typedef GVOP *B__GVOP; +typedef PADOP *B__PADOP; typedef PVOP *B__PVOP; typedef LOOP *B__LOOP; typedef COP *B__COP; @@ -435,12 +379,21 @@ MODULE = B PACKAGE = B PREFIX = B_ PROTOTYPES: DISABLE BOOT: - INIT_SPECIALSV_LIST; +{ + HV *stash = gv_stashpvn("B", 1, TRUE); + AV *export_ok = perl_get_av("B::EXPORT_OK",TRUE); + specialsv_list[0] = Nullsv; + specialsv_list[1] = &PL_sv_undef; + specialsv_list[2] = &PL_sv_yes; + specialsv_list[3] = &PL_sv_no; +#include "defsubs.h" +} #define B_main_cv() PL_main_cv #define B_init_av() PL_initav #define B_main_root() PL_main_root #define B_main_start() PL_main_start +#define B_amagic_generation() PL_amagic_generation #define B_comppadlist() (PL_main_cv ? CvPADLIST(PL_main_cv) : CvPADLIST(PL_compcv)) #define B_sv_undef() &PL_sv_undef #define B_sv_yes() &PL_sv_yes @@ -458,6 +411,9 @@ B_main_root() B::OP B_main_start() +long +B_amagic_generation() + B::AV B_comppadlist() @@ -477,6 +433,8 @@ void walkoptree(opsv, method) SV * opsv char * method + CODE: + walkoptree(aTHX_ opsv, method); int walkoptree_debug(...) @@ -487,20 +445,7 @@ walkoptree_debug(...) OUTPUT: RETVAL -int -byteload_fh(fp) - InputStream fp - CODE: - byteload_fh(fp); - RETVAL = 1; - OUTPUT: - RETVAL - -void -byteload_string(str) - char * str - -#define address(sv) (IV)sv +#define address(sv) PTR2IV(sv) IV address(sv) @@ -514,7 +459,28 @@ svref_2object(sv) croak("argument is not a reference"); RETVAL = (SV*)SvRV(sv); OUTPUT: - RETVAL + RETVAL + +void +opnumber(name) +char * name +CODE: +{ + int i; + IV result = -1; + ST(0) = sv_newmortal(); + if (strncmp(name,"pp_",3) == 0) + name += 3; + for (i = 0; i < PL_maxo; i++) + { + if (strcmp(name, PL_op_name[i]) == 0) + { + result = i; + break; + } + } + sv_setiv(ST(0),result); +} void ppname(opnum) @@ -523,7 +489,7 @@ ppname(opnum) ST(0) = sv_newmortal(); if (opnum >= 0 && opnum < PL_maxo) { sv_setpvn(ST(0), "pp_", 3); - sv_catpv(ST(0), op_name[opnum]); + sv_catpv(ST(0), PL_op_name[opnum]); } void @@ -533,11 +499,10 @@ hash(sv) char *s; STRLEN len; U32 hash = 0; - char hexhash[11]; /* must fit "0xffffffff" plus trailing \0 */ + char hexhash[19]; /* must fit "0xffffffffffffffff" plus trailing \0 */ s = SvPV(sv, len); - while (len--) - hash = hash * 33 + *s++; - sprintf(hexhash, "0x%x", hash); + PERL_HASH(hash, s, len); + sprintf(hexhash, "0x%"UVxf, (UV)hash); ST(0) = sv_2mortal(newSVpv(hexhash, 0)); #define cast_I32(foo) (I32)foo @@ -553,10 +518,18 @@ minus_c() SV * cstring(sv) SV * sv + CODE: + RETVAL = cstring(aTHX_ sv); + OUTPUT: + RETVAL SV * cchar(sv) SV * sv + CODE: + RETVAL = cchar(aTHX_ sv); + OUTPUT: + RETVAL void threadsv_names() @@ -567,13 +540,13 @@ threadsv_names() EXTEND(sp, len); for (i = 0; i < len; i++) - PUSHs(sv_2mortal(newSVpv(&PL_threadsv_names[i], 1))); + PUSHs(sv_2mortal(newSVpvn(&PL_threadsv_names[i], 1))); #endif #define OP_next(o) o->op_next #define OP_sibling(o) o->op_sibling -#define OP_desc(o) op_desc[o->op_type] +#define OP_desc(o) PL_op_desc[o->op_type] #define OP_targ(o) o->op_targ #define OP_type(o) o->op_type #define OP_seq(o) o->op_seq @@ -591,18 +564,32 @@ OP_sibling(o) B::OP o char * -OP_ppaddr(o) +OP_name(o) B::OP o CODE: ST(0) = sv_newmortal(); - sv_setpvn(ST(0), "pp_", 3); - sv_catpv(ST(0), op_name[o->op_type]); + sv_setpv(ST(0), PL_op_name[o->op_type]); + + +char * +OP_ppaddr(o) + B::OP o + PREINIT: + int i; + SV *sv = sv_newmortal(); + CODE: + sv_setpvn(sv, "PL_ppaddr[OP_", 13); + sv_catpv(sv, PL_op_name[o->op_type]); + for (i=13; iop_true -#define CONDOP_false(o) o->op_false - -MODULE = B PACKAGE = B::CONDOP PREFIX = CONDOP_ - -B::OP -CONDOP_true(o) - B::CONDOP o - -B::OP -CONDOP_false(o) - B::CONDOP o - #define LISTOP_children(o) o->op_children MODULE = B PACKAGE = B::LISTOP PREFIX = LISTOP_ @@ -687,10 +661,10 @@ PMOP_pmreplroot(o) if (o->op_type == OP_PUSHRE) { sv_setiv(newSVrv(ST(0), root ? svclassnames[SvTYPE((SV*)root)] : "B::SV"), - (IV)root); + PTR2IV(root)); } else { - sv_setiv(newSVrv(ST(0), cc_opclassname(root)), (IV)root); + sv_setiv(newSVrv(ST(0), cc_opclassname(aTHX_ root)), PTR2IV(root)); } B::OP @@ -719,23 +693,38 @@ PMOP_precomp(o) if (rx) sv_setpvn(ST(0), rx->precomp, rx->prelen); -#define SVOP_sv(o) o->op_sv +#define SVOP_sv(o) cSVOPo->op_sv +#define SVOP_gv(o) ((GV*)cSVOPo->op_sv) MODULE = B PACKAGE = B::SVOP PREFIX = SVOP_ - B::SV SVOP_sv(o) B::SVOP o -#define GVOP_gv(o) o->op_gv +B::GV +SVOP_gv(o) + B::SVOP o -MODULE = B PACKAGE = B::GVOP PREFIX = GVOP_ +#define PADOP_padix(o) o->op_padix +#define PADOP_sv(o) (o->op_padix ? PL_curpad[o->op_padix] : Nullsv) +#define PADOP_gv(o) ((o->op_padix \ + && SvTYPE(PL_curpad[o->op_padix]) == SVt_PVGV) \ + ? (GV*)PL_curpad[o->op_padix] : Nullgv) +MODULE = B PACKAGE = B::PADOP PREFIX = PADOP_ + +PADOFFSET +PADOP_padix(o) + B::PADOP o + +B::SV +PADOP_sv(o) + B::PADOP o B::GV -GVOP_gv(o) - B::GVOP o +PADOP_gv(o) + B::PADOP o MODULE = B PACKAGE = B::PVOP PREFIX = PVOP_ @@ -770,11 +759,13 @@ LOOP_lastop(o) B::LOOP o #define COP_label(o) o->cop_label -#define COP_stash(o) o->cop_stash -#define COP_filegv(o) o->cop_filegv +#define COP_stashpv(o) CopSTASHPV(o) +#define COP_stash(o) CopSTASH(o) +#define COP_file(o) CopFILE(o) #define COP_cop_seq(o) o->cop_seq #define COP_arybase(o) o->cop_arybase -#define COP_line(o) o->cop_line +#define COP_line(o) CopLINE(o) +#define COP_warnings(o) o->cop_warnings MODULE = B PACKAGE = B::COP PREFIX = COP_ @@ -782,12 +773,16 @@ char * COP_label(o) B::COP o +char * +COP_stashpv(o) + B::COP o + B::HV COP_stash(o) B::COP o -B::GV -COP_filegv(o) +char * +COP_file(o) B::COP o U32 @@ -802,6 +797,10 @@ U16 COP_line(o) B::COP o +B::SV +COP_warnings(o) + B::COP o + MODULE = B PACKAGE = B::SV PREFIX = Sv U32 @@ -822,6 +821,11 @@ IV SvIVX(sv) B::IV sv +UV +SvUVX(sv) + B::IV sv + + MODULE = B PACKAGE = B::IV #define needs64bits(sv) ((I32)SvIVX(sv) != SvIVX(sv)) @@ -844,12 +848,16 @@ packiv(sv) * reach this code anyway (unless sizeof(IV) > 8 but then * everything else breaks too so I'm not fussed at the moment). */ - wp[0] = htonl(((U32)iv) >> (sizeof(IV)*4)); +#ifdef UV_IS_QUAD + wp[0] = htonl(((UV)iv) >> (sizeof(UV)*4)); +#else + wp[0] = htonl(((U32)iv) >> (sizeof(UV)*4)); +#endif wp[1] = htonl(iv & 0xffffffff); - ST(0) = sv_2mortal(newSVpv((char *)wp, 8)); + ST(0) = sv_2mortal(newSVpvn((char *)wp, 8)); } else { U32 w = htonl((U32)SvIVX(sv)); - ST(0) = sv_2mortal(newSVpv((char *)&w, 4)); + ST(0) = sv_2mortal(newSVpvn((char *)&w, 4)); } MODULE = B PACKAGE = B::NV PREFIX = Sv @@ -877,6 +885,14 @@ SvPV(sv) ST(0) = sv_newmortal(); sv_setpvn(ST(0), SvPVX(sv), SvCUR(sv)); +STRLEN +SvLEN(sv) + B::PV sv + +STRLEN +SvCUR(sv) + B::PV sv + MODULE = B PACKAGE = B::PVMG PREFIX = Sv void @@ -885,7 +901,7 @@ SvMAGIC(sv) MAGIC * mg = NO_INIT PPCODE: for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) - XPUSHs(make_mg_object(sv_newmortal(), mg)); + XPUSHs(make_mg_object(aTHX_ sv_newmortal(), mg)); MODULE = B PACKAGE = B::PVMG @@ -898,6 +914,7 @@ SvSTASH(sv) #define MgTYPE(mg) mg->mg_type #define MgFLAGS(mg) mg->mg_flags #define MgOBJ(mg) mg->mg_obj +#define MgLENGTH(mg) mg->mg_len MODULE = B PACKAGE = B::MAGIC PREFIX = Mg @@ -921,13 +938,23 @@ B::SV MgOBJ(mg) B::MAGIC mg +I32 +MgLENGTH(mg) + B::MAGIC mg + void MgPTR(mg) B::MAGIC mg CODE: ST(0) = sv_newmortal(); - if (mg->mg_ptr) - sv_setpvn(ST(0), mg->mg_ptr, mg->mg_len); + if (mg->mg_ptr){ + if (mg->mg_len >= 0){ + sv_setpvn(ST(0), mg->mg_ptr, mg->mg_len); + } else { + if (mg->mg_len == HEf_SVKEY) + sv_setsv(ST(0),newRV((SV*)mg->mg_ptr)); + } + } MODULE = B PACKAGE = B::PVLV PREFIX = Lv @@ -969,7 +996,7 @@ BmTABLE(sv) CODE: str = SvPV(sv, len); /* Boyer-Moore table is just after string and its safety-margin \0 */ - ST(0) = sv_2mortal(newSVpv(str + len + 1, 256)); + ST(0) = sv_2mortal(newSVpvn(str + len + 1, 256)); MODULE = B PACKAGE = B::GV PREFIX = Gv @@ -977,7 +1004,15 @@ void GvNAME(gv) B::GV gv CODE: - ST(0) = sv_2mortal(newSVpv(GvNAME(gv), GvNAMELEN(gv))); + ST(0) = sv_2mortal(newSVpvn(GvNAME(gv), GvNAMELEN(gv))); + +bool +is_empty(gv) + B::GV gv + CODE: + RETVAL = GvGP(gv) == Null(GP*); + OUTPUT: + RETVAL B::HV GvSTASH(gv) @@ -1019,6 +1054,10 @@ U16 GvLINE(gv) B::GV gv +char * +GvFILE(gv) + B::GV gv + B::GV GvFILEGV(gv) B::GV gv @@ -1113,7 +1152,7 @@ AvARRAY(av) SV **svp = AvARRAY(av); I32 i; for (i = 0; i <= AvFILL(av); i++) - XPUSHs(make_sv_object(sv_newmortal(), svp[i])); + XPUSHs(make_sv_object(aTHX_ sv_newmortal(), svp[i])); } MODULE = B PACKAGE = B::AV @@ -1140,8 +1179,8 @@ B::GV CvGV(cv) B::CV cv -B::GV -CvFILEGV(cv) +char * +CvFILE(cv) B::CV cv long @@ -1160,7 +1199,7 @@ void CvXSUB(cv) B::CV cv CODE: - ST(0) = sv_2mortal(newSViv((IV)CvXSUB(cv))); + ST(0) = sv_2mortal(newSViv(PTR2IV(CvXSUB(cv)))); void @@ -1213,7 +1252,7 @@ HvARRAY(hv) (void)hv_iterinit(hv); EXTEND(sp, HvKEYS(hv) * 2); while (sv = hv_iternextsv(hv, &key, &len)) { - PUSHs(newSVpv(key, len)); - PUSHs(make_sv_object(sv_newmortal(), sv)); + PUSHs(newSVpvn(key, len)); + PUSHs(make_sv_object(aTHX_ sv_newmortal(), sv)); } } diff --git a/contrib/perl5/ext/B/B/Asmdata.pm b/contrib/perl5/ext/B/B/Asmdata.pm index f3e57a17d03c..bc0eda935b7a 100644 --- a/contrib/perl5/ext/B/B/Asmdata.pm +++ b/contrib/perl5/ext/B/B/Asmdata.pm @@ -1,5 +1,5 @@ # -# Copyright (c) 1996-1998 Malcolm Beattie +# Copyright (c) 1996-1999 Malcolm Beattie # # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the README file. @@ -12,9 +12,9 @@ package B::Asmdata; use Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(%insn_data @insn_name @optype @specialsv_name); -use vars qw(%insn_data @insn_name @optype @specialsv_name); +our(%insn_data, @insn_name, @optype, @specialsv_name); -@optype = qw(OP UNOP BINOP LOGOP CONDOP LISTOP PMOP SVOP GVOP PVOP LOOP COP); +@optype = qw(OP UNOP BINOP LOGOP LISTOP PMOP SVOP PADOP PVOP LOOP COP); @specialsv_name = qw(Nullsv &PL_sv_undef &PL_sv_yes &PL_sv_no); # XXX insn_data is initialised this way because with a large @@ -42,7 +42,7 @@ $insn_data{xrv} = [17, \&PUT_svindex, "GET_svindex"]; $insn_data{xpv} = [18, \&PUT_none, "GET_none"]; $insn_data{xiv32} = [19, \&PUT_I32, "GET_I32"]; $insn_data{xiv64} = [20, \&PUT_IV64, "GET_IV64"]; -$insn_data{xnv} = [21, \&PUT_double, "GET_double"]; +$insn_data{xnv} = [21, \&PUT_NV, "GET_NV"]; $insn_data{xlv_targoff} = [22, \&PUT_U32, "GET_U32"]; $insn_data{xlv_targlen} = [23, \&PUT_U32, "GET_U32"]; $insn_data{xlv_targ} = [24, \&PUT_svindex, "GET_svindex"]; @@ -68,11 +68,11 @@ $insn_data{xcv_stash} = [44, \&PUT_svindex, "GET_svindex"]; $insn_data{xcv_start} = [45, \&PUT_opindex, "GET_opindex"]; $insn_data{xcv_root} = [46, \&PUT_opindex, "GET_opindex"]; $insn_data{xcv_gv} = [47, \&PUT_svindex, "GET_svindex"]; -$insn_data{xcv_filegv} = [48, \&PUT_svindex, "GET_svindex"]; +$insn_data{xcv_file} = [48, \&PUT_pvcontents, "GET_pvcontents"]; $insn_data{xcv_depth} = [49, \&PUT_I32, "GET_I32"]; $insn_data{xcv_padlist} = [50, \&PUT_svindex, "GET_svindex"]; $insn_data{xcv_outside} = [51, \&PUT_svindex, "GET_svindex"]; -$insn_data{xcv_flags} = [52, \&PUT_U8, "GET_U8"]; +$insn_data{xcv_flags} = [52, \&PUT_U16, "GET_U16"]; $insn_data{av_extend} = [53, \&PUT_I32, "GET_I32"]; $insn_data{av_push} = [54, \&PUT_svindex, "GET_svindex"]; $insn_data{xav_fill} = [55, \&PUT_I32, "GET_I32"]; @@ -95,7 +95,7 @@ $insn_data{gp_refcnt_add} = [71, \&PUT_I32, "GET_I32"]; $insn_data{gp_av} = [72, \&PUT_svindex, "GET_svindex"]; $insn_data{gp_hv} = [73, \&PUT_svindex, "GET_svindex"]; $insn_data{gp_cv} = [74, \&PUT_svindex, "GET_svindex"]; -$insn_data{gp_filegv} = [75, \&PUT_svindex, "GET_svindex"]; +$insn_data{gp_file} = [75, \&PUT_pvcontents, "GET_pvcontents"]; $insn_data{gp_io} = [76, \&PUT_svindex, "GET_svindex"]; $insn_data{gp_form} = [77, \&PUT_svindex, "GET_svindex"]; $insn_data{gp_cvgen} = [78, \&PUT_U32, "GET_U32"]; @@ -113,32 +113,31 @@ $insn_data{op_private} = [89, \&PUT_U8, "GET_U8"]; $insn_data{op_first} = [90, \&PUT_opindex, "GET_opindex"]; $insn_data{op_last} = [91, \&PUT_opindex, "GET_opindex"]; $insn_data{op_other} = [92, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_true} = [93, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_false} = [94, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_children} = [95, \&PUT_U32, "GET_U32"]; -$insn_data{op_pmreplroot} = [96, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_pmreplrootgv} = [97, \&PUT_svindex, "GET_svindex"]; -$insn_data{op_pmreplstart} = [98, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_pmnext} = [99, \&PUT_opindex, "GET_opindex"]; -$insn_data{pregcomp} = [100, \&PUT_pvcontents, "GET_pvcontents"]; -$insn_data{op_pmflags} = [101, \&PUT_U16, "GET_U16"]; -$insn_data{op_pmpermflags} = [102, \&PUT_U16, "GET_U16"]; -$insn_data{op_sv} = [103, \&PUT_svindex, "GET_svindex"]; -$insn_data{op_gv} = [104, \&PUT_svindex, "GET_svindex"]; -$insn_data{op_pv} = [105, \&PUT_pvcontents, "GET_pvcontents"]; -$insn_data{op_pv_tr} = [106, \&PUT_op_tr_array, "GET_op_tr_array"]; -$insn_data{op_redoop} = [107, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_nextop} = [108, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_lastop} = [109, \&PUT_opindex, "GET_opindex"]; -$insn_data{cop_label} = [110, \&PUT_pvcontents, "GET_pvcontents"]; -$insn_data{cop_stash} = [111, \&PUT_svindex, "GET_svindex"]; -$insn_data{cop_filegv} = [112, \&PUT_svindex, "GET_svindex"]; -$insn_data{cop_seq} = [113, \&PUT_U32, "GET_U32"]; -$insn_data{cop_arybase} = [114, \&PUT_I32, "GET_I32"]; -$insn_data{cop_line} = [115, \&PUT_U16, "GET_U16"]; -$insn_data{main_start} = [116, \&PUT_opindex, "GET_opindex"]; -$insn_data{main_root} = [117, \&PUT_opindex, "GET_opindex"]; -$insn_data{curpad} = [118, \&PUT_svindex, "GET_svindex"]; +$insn_data{op_children} = [93, \&PUT_U32, "GET_U32"]; +$insn_data{op_pmreplroot} = [94, \&PUT_opindex, "GET_opindex"]; +$insn_data{op_pmreplrootgv} = [95, \&PUT_svindex, "GET_svindex"]; +$insn_data{op_pmreplstart} = [96, \&PUT_opindex, "GET_opindex"]; +$insn_data{op_pmnext} = [97, \&PUT_opindex, "GET_opindex"]; +$insn_data{pregcomp} = [98, \&PUT_pvcontents, "GET_pvcontents"]; +$insn_data{op_pmflags} = [99, \&PUT_U16, "GET_U16"]; +$insn_data{op_pmpermflags} = [100, \&PUT_U16, "GET_U16"]; +$insn_data{op_sv} = [101, \&PUT_svindex, "GET_svindex"]; +$insn_data{op_padix} = [102, \&PUT_U32, "GET_U32"]; +$insn_data{op_pv} = [103, \&PUT_pvcontents, "GET_pvcontents"]; +$insn_data{op_pv_tr} = [104, \&PUT_op_tr_array, "GET_op_tr_array"]; +$insn_data{op_redoop} = [105, \&PUT_opindex, "GET_opindex"]; +$insn_data{op_nextop} = [106, \&PUT_opindex, "GET_opindex"]; +$insn_data{op_lastop} = [107, \&PUT_opindex, "GET_opindex"]; +$insn_data{cop_label} = [108, \&PUT_pvcontents, "GET_pvcontents"]; +$insn_data{cop_stashpv} = [109, \&PUT_pvcontents, "GET_pvcontents"]; +$insn_data{cop_file} = [110, \&PUT_pvcontents, "GET_pvcontents"]; +$insn_data{cop_seq} = [111, \&PUT_U32, "GET_U32"]; +$insn_data{cop_arybase} = [112, \&PUT_I32, "GET_I32"]; +$insn_data{cop_line} = [113, \&PUT_U16, "GET_U16"]; +$insn_data{cop_warnings} = [114, \&PUT_svindex, "GET_svindex"]; +$insn_data{main_start} = [115, \&PUT_opindex, "GET_opindex"]; +$insn_data{main_root} = [116, \&PUT_opindex, "GET_opindex"]; +$insn_data{curpad} = [117, \&PUT_svindex, "GET_svindex"]; my ($insn_name, $insn_data); while (($insn_name, $insn_data) = each %insn_data) { diff --git a/contrib/perl5/ext/B/B/Assembler.pm b/contrib/perl5/ext/B/B/Assembler.pm index 06e00adeb54a..6c51a9ad3e3b 100644 --- a/contrib/perl5/ext/B/B/Assembler.pm +++ b/contrib/perl5/ext/B/B/Assembler.pm @@ -52,6 +52,7 @@ sub B::Asmdata::PUT_U8 { sub B::Asmdata::PUT_U16 { pack("n", $_[0]) } sub B::Asmdata::PUT_U32 { pack("N", $_[0]) } sub B::Asmdata::PUT_I32 { pack("N", $_[0]) } +sub B::Asmdata::PUT_NV { sprintf("%lf\0", $_[0]) } sub B::Asmdata::PUT_objindex { pack("N", $_[0]) } # could allow names here sub B::Asmdata::PUT_svindex { &B::Asmdata::PUT_objindex } sub B::Asmdata::PUT_opindex { &B::Asmdata::PUT_objindex } diff --git a/contrib/perl5/ext/B/B/Bblock.pm b/contrib/perl5/ext/B/B/Bblock.pm index a54431b4ce71..fe7fc52139ce 100644 --- a/contrib/perl5/ext/B/B/Bblock.pm +++ b/contrib/perl5/ext/B/B/Bblock.pm @@ -4,7 +4,9 @@ use Exporter (); @EXPORT_OK = qw(find_leaders); use B qw(peekop walkoptree walkoptree_exec - main_root main_start svref_2object); + main_root main_start svref_2object + OPf_SPECIAL OPf_STACKED ); + use B::Terse; use strict; @@ -18,11 +20,18 @@ sub mark_leader { } } +sub remove_sortblock{ + foreach (keys %$bblock){ + my $leader=$$bblock{$_}; + delete $$bblock{$_} if( $leader == 0); + } +} sub find_leaders { my ($root, $start) = @_; $bblock = {}; - mark_leader($start); - walkoptree($root, "mark_if_leader"); + mark_leader($start) if ( ref $start ne "B::NULL" ); + walkoptree($root, "mark_if_leader") if ((ref $root) ne "B::NULL") ; + remove_sortblock(); return $bblock; } @@ -81,25 +90,32 @@ sub B::LOOP::mark_if_leader { sub B::LOGOP::mark_if_leader { my $op = shift; - my $ppaddr = $op->ppaddr; + my $opname = $op->name; mark_leader($op->next); - if ($ppaddr eq "pp_entertry") { + if ($opname eq "entertry") { mark_leader($op->other->next); } else { mark_leader($op->other); } } -sub B::CONDOP::mark_if_leader { +sub B::LISTOP::mark_if_leader { my $op = shift; + my $first=$op->first; + $first=$first->next while ($first->name eq "null"); + mark_leader($op->first) unless (exists( $bblock->{$$first})); mark_leader($op->next); - mark_leader($op->true); - mark_leader($op->false); + if ($op->name eq "sort" and $op->flags & OPf_SPECIAL + and $op->flags & OPf_STACKED){ + my $root=$op->first->sibling->first; + my $leader=$root->first; + $bblock->{$$leader} = 0; + } } sub B::PMOP::mark_if_leader { my $op = shift; - if ($op->ppaddr ne "pp_pushre") { + if ($op->name ne "pushre") { my $replroot = $op->pmreplroot; if ($$replroot) { mark_leader($replroot); @@ -113,6 +129,7 @@ sub B::PMOP::mark_if_leader { sub compile { my @options = @_; + B::clearsym(); if (@options) { return sub { my $objname; @@ -134,7 +151,6 @@ sub compile { # The ops pointed at by nextop, redoop and lastop->op_next of a LOOP # The ops pointed at by op_next and op_other of a LOGOP, except # for pp_entertry which has op_next and op_other->op_next -# The ops pointed at by op_true and op_false of a CONDOP # The op pointed at by op_pmreplstart of a PMOP # The op pointed at by op_other->op_pmreplstart of pp_substcont? # [The op after a pp_return] Omit @@ -153,7 +169,9 @@ B::Bblock - Walk basic blocks =head1 DESCRIPTION -See F. +This module is used by the B::CC back end. It walks "basic blocks". +A basic block is a series of operations which is known to execute from +start to finish, with no possiblity of branching or halting. =head1 AUTHOR diff --git a/contrib/perl5/ext/B/B/Bytecode.pm b/contrib/perl5/ext/B/B/Bytecode.pm index 0c5a58dc5424..27003b6bd0b2 100644 --- a/contrib/perl5/ext/B/B/Bytecode.pm +++ b/contrib/perl5/ext/B/B/Bytecode.pm @@ -11,7 +11,9 @@ use Carp; use IO::File; use B qw(minus_c main_cv main_root main_start comppadlist - class peekop walkoptree svref_2object cstring walksymtable); + class peekop walkoptree svref_2object cstring walksymtable + SVf_POK SVp_POK SVf_IOK SVp_IOK + ); use B::Asmdata qw(@optype @specialsv_name); use B::Assembler qw(assemble_fh); @@ -23,11 +25,11 @@ for ($i = 0; $i < @optype; $i++) { # Following is SVf_POK|SVp_POK # XXX Shouldn't be hardwired -sub POK () { 0x04040000 } +sub POK () { SVf_POK|SVp_POK } -# Following is SVf_IOK|SVp_OK +# Following is SVf_IOK|SVp_IOK # XXX Shouldn't be hardwired -sub IOK () { 0x01010000 } +sub IOK () { SVf_IOK|SVp_IOK } my ($verbose, $module_only, $no_assemble, $debug_bc, $debug_cv); my $assembler_pid; @@ -191,7 +193,7 @@ sub B::OP::bytecode { ldop($ix); print "op_next $nextix\n"; print "op_sibling $sibix\n" unless $strip_syntree; - printf "op_type %s\t# %d\n", $op->ppaddr, $type; + printf "op_type %s\t# %d\n", "pp_" . $op->name, $type; printf("op_seq %d\n", $op->seq) unless $omit_seq; if ($type || !$compress_nullops) { printf "op_targ %d\nop_flags 0x%x\nop_private 0x%x\n", @@ -224,13 +226,11 @@ sub B::SVOP::bytecode { $sv->bytecode; } -sub B::GVOP::bytecode { +sub B::PADOP::bytecode { my $op = shift; - my $gv = $op->gv; - my $gvix = $gv->objix; + my $padix = $op->padix; $op->B::OP::bytecode; - print "op_gv $gvix\n"; - $gv->bytecode; + print "op_padix $padix\n"; } sub B::PVOP::bytecode { @@ -241,7 +241,7 @@ sub B::PVOP::bytecode { # This would be easy except that OP_TRANS uses a PVOP to store an # endian-dependent array of 256 shorts instead of a plain string. # - if ($op->ppaddr eq "pp_trans") { + if ($op->name eq "trans") { my @shorts = unpack("s256", $pv); # assembler handles endianness print "op_pv_tr ", join(",", @shorts), "\n"; } else { @@ -258,14 +258,6 @@ sub B::BINOP::bytecode { } } -sub B::CONDOP::bytecode { - my $op = shift; - my $trueix = $op->true->objix; - my $falseix = $op->false->objix; - $op->B::UNOP::bytecode; - print "op_true $trueix\nop_false $falseix\n"; -} - sub B::LISTOP::bytecode { my $op = shift; my $children = $op->children; @@ -286,26 +278,27 @@ sub B::LOOP::bytecode { sub B::COP::bytecode { my $op = shift; - my $stash = $op->stash; - my $stashix = $stash->objix; - my $filegv = $op->filegv; - my $filegvix = $filegv->objix; + my $stashpv = $op->stashpv; + my $file = $op->file; my $line = $op->line; + my $warnings = $op->warnings; + my $warningsix = $warnings->objix; if ($debug_bc) { - printf "# line %s:%d\n", $filegv->SV->PV, $line; + printf "# line %s:%d\n", $file, $line; } $op->B::OP::bytecode; - printf <<"EOT", pvstring($op->label), $op->cop_seq, $op->arybase; + printf <<"EOT", pvstring($op->label), pvstring($stashpv), $op->cop_seq, pvstring($file), $op->arybase; newpv %s cop_label -cop_stash $stashix +newpv %s +cop_stashpv cop_seq %d -cop_filegv $filegvix +newpv %s +cop_file cop_arybase %d cop_line $line +cop_warnings $warningsix EOT - $filegv->bytecode; - $stash->bytecode; } sub B::PMOP::bytecode { @@ -313,7 +306,7 @@ sub B::PMOP::bytecode { my $replroot = $op->pmreplroot; my $replrootix = $replroot->objix; my $replstartix = $op->pmreplstart->objix; - my $ppaddr = $op->ppaddr; + my $opname = $op->name; # pmnext is corrupt in some PMOPs (see misc.t for example) #my $pmnextix = $op->pmnext->objix; @@ -321,14 +314,14 @@ sub B::PMOP::bytecode { # OP_PUSHRE (a mutated version of OP_MATCH for the regexp # argument to a split) stores a GV in op_pmreplroot instead # of a substitution syntax tree. We don't want to walk that... - if ($ppaddr eq "pp_pushre") { + if ($opname eq "pushre") { $replroot->bytecode; } else { walkoptree($replroot, "bytecode"); } } $op->B::LISTOP::bytecode; - if ($ppaddr eq "pp_pushre") { + if ($opname eq "pushre") { printf "op_pmreplrootgv $replrootix\n"; } else { print "op_pmreplroot $replrootix\nop_pmreplstart $replstartix\n"; @@ -395,7 +388,8 @@ sub B::PVIV::bytecode { } sub B::PVNV::bytecode { - my ($sv, $flag) = @_; + my $sv = shift; + my $flag = shift || 0; # The $flag argument is passed through PVMG::bytecode by BM::bytecode # and AV::bytecode and indicates special handling. $flag = 1 is used by # BM::bytecode and means that we should ensure we save the whole B-M @@ -469,18 +463,23 @@ sub B::GV::bytecode { return if saved($gv); my $ix = $gv->objix; mark_saved($gv); + ldsv($ix); + printf <<"EOT", $gv->FLAGS, $gv->GvFLAGS; +sv_flags 0x%x +xgv_flags 0x%x +EOT + my $refcnt = $gv->REFCNT; + printf("sv_refcnt_add %d\n", $refcnt - 1) if $refcnt > 1; + return if $gv->is_empty; + printf <<"EOT", $gv->LINE, pvstring($gv->FILE); +gp_line %d +newpv %s +gp_file +EOT my $gvname = $gv->NAME; my $name = cstring($gv->STASH->NAME . "::" . $gvname); my $egv = $gv->EGV; my $egvix = $egv->objix; - ldsv($ix); - printf <<"EOT", $gv->FLAGS, $gv->GvFLAGS, $gv->LINE; -sv_flags 0x%x -xgv_flags 0x%x -gp_line %d -EOT - my $refcnt = $gv->REFCNT; - printf("sv_refcnt_add %d\n", $refcnt - 1) if $refcnt > 1; my $gvrefcnt = $gv->GvREFCNT; printf("gp_refcnt_add %d\n", $gvrefcnt - 1) if $gvrefcnt > 1; if ($gvrefcnt > 1 && $ix != $egvix) { @@ -488,7 +487,7 @@ EOT } else { if ($gvname !~ /^([^A-Za-z]|STDIN|STDOUT|STDERR|ARGV|SIG|ENV)$/) { my $i; - my @subfield_names = qw(SV AV HV CV FILEGV FORM IO); + my @subfield_names = qw(SV AV HV CV FORM IO); my @subfields = map($gv->$_(), @subfield_names); my @ixes = map($_->objix, @subfields); # Reset sv register for $gv @@ -571,7 +570,7 @@ sub B::CV::bytecode { my $ix = $cv->objix; $cv->B::PVMG::bytecode; my $i; - my @subfield_names = qw(ROOT START STASH GV FILEGV PADLIST OUTSIDE); + my @subfield_names = qw(ROOT START STASH GV PADLIST OUTSIDE); my @subfields = map($cv->$_(), @subfield_names); my @ixes = map($_->objix, @subfields); # Save OP tree from CvROOT (first element of @subfields) @@ -584,7 +583,8 @@ sub B::CV::bytecode { for ($i = 0; $i < @ixes; $i++) { printf "xcv_%s %d\n", lc($subfield_names[$i]), $ixes[$i]; } - printf "xcv_depth %d\nxcv_flags 0x%x\n", $cv->DEPTH, $cv->FLAGS; + printf "xcv_depth %d\nxcv_flags 0x%x\n", $cv->DEPTH, $cv->CvFLAGS; + printf "newpv %s\nxcv_file\n", pvstring($cv->FILE); # Now save all the subfields (except for CvROOT which was handled # above) and CvSTART (now the initial element of @subfields). shift @subfields; # bye-bye CvSTART @@ -653,7 +653,7 @@ sub bytecompile_main { walkoptree(main_root, "bytecode"); warn "done main program, now walking symbol table\n" if $debug_bc; my ($pack, %exclude); - foreach $pack (qw(B O AutoLoader DynaLoader Config DB VMS strict vars + foreach $pack (qw(B O AutoLoader DynaLoader XSLoader Config DB VMS strict vars FileHandle Exporter Carp UNIVERSAL IO Fcntl Symbol SelectSaver blib Cwd)) { @@ -707,6 +707,10 @@ sub compile { $arg ||= shift @options; open(OUT, ">$arg") or return "$arg: $!\n"; binmode OUT; + } elsif ($opt eq "a") { + $arg ||= shift @options; + open(OUT, ">>$arg") or return "$arg: $!\n"; + binmode OUT; } elsif ($opt eq "D") { $arg ||= shift @options; foreach $arg (split(//, $arg)) { @@ -816,6 +820,10 @@ extra arguments, it saves the main program. Output to filename instead of STDOUT. +=item B<-afilename> + +Append output to filename. + =item B<--> Force end of options. @@ -889,13 +897,16 @@ C and C are omitted. =head1 EXAMPLES - perl -MO=Bytecode,-O6,-o,foo.plc foo.pl + perl -MO=Bytecode,-O6,-o,foo.plc foo.pl - perl -MO=Bytecode,-S foo.pl > foo.S - assemble foo.S > foo.plc - byteperl foo.plc + perl -MO=Bytecode,-S foo.pl > foo.S + assemble foo.S > foo.plc - perl -MO=Bytecode,-m,-oFoo.pmc Foo.pm +Note that C lives in the C subdirectory of your perl +library directory. The utility called perlcc may also be used to +help make use of this compiler. + + perl -MO=Bytecode,-m,-oFoo.pmc Foo.pm =head1 BUGS diff --git a/contrib/perl5/ext/B/B/C.pm b/contrib/perl5/ext/B/B/C.pm index e695cc287679..d0c8159d9f31 100644 --- a/contrib/perl5/ext/B/B/C.pm +++ b/contrib/perl5/ext/B/B/C.pm @@ -5,34 +5,75 @@ # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the README file. # +package B::C::Section; +use B (); +use base B::Section; + +sub new +{ + my $class = shift; + my $o = $class->SUPER::new(@_); + push(@$o,[]); + return $o; +} + +sub add +{ + my $section = shift; + push(@{$section->[-1]},@_); +} + +sub index +{ + my $section = shift; + return scalar(@{$section->[-1]})-1; +} + +sub output +{ + my ($section, $fh, $format) = @_; + my $sym = $section->symtable || {}; + my $default = $section->default; + foreach (@{$section->[-1]}) + { + s{(s\\_[0-9a-f]+)}{ exists($sym->{$1}) ? $sym->{$1} : $default; }ge; + printf $fh $format, $_; + } +} + package B::C; use Exporter (); @ISA = qw(Exporter); -@EXPORT_OK = qw(output_all output_boilerplate output_main - init_sections set_callback save_unused_subs objsym); +@EXPORT_OK = qw(output_all output_boilerplate output_main mark_unused + init_sections set_callback save_unused_subs objsym save_context); use B qw(minus_c sv_undef walkoptree walksymtable main_root main_start peekop class cstring cchar svref_2object compile_stats comppadlist hash - threadsv_names main_cv init_av); + threadsv_names main_cv init_av opnumber amagic_generation + AVf_REAL HEf_SVKEY); use B::Asmdata qw(@specialsv_name); use FileHandle; use Carp; use strict; +use Config; my $hv_index = 0; my $gv_index = 0; my $re_index = 0; my $pv_index = 0; my $anonsub_index = 0; +my $initsub_index = 0; my %symtable; +my %xsub; my $warn_undefined_syms; my $verbose; -my @unused_sub_packages; +my %unused_sub_packages; my $nullop_count; -my $pv_copy_on_grow; +my $pv_copy_on_grow = 0; my ($debug_cops, $debug_av, $debug_cv, $debug_mg); +my $max_string_len; my @threadsv_names; BEGIN { @@ -40,11 +81,11 @@ BEGIN { } # Code sections -my ($init, $decl, $symsect, $binopsect, $condopsect, $copsect, $cvopsect, - $gvopsect, $listopsect, $logopsect, $loopsect, $opsect, $pmopsect, +my ($init, $decl, $symsect, $binopsect, $condopsect, $copsect, + $padopsect, $listopsect, $logopsect, $loopsect, $opsect, $pmopsect, $pvopsect, $svopsect, $unopsect, $svsect, $xpvsect, $xpvavsect, $xpvhvsect, $xpvcvsect, $xpvivsect, $xpvnvsect, $xpvmgsect, $xpvlvsect, - $xrvsect, $xpvbmsect, $xpviosect, $bootstrap); + $xrvsect, $xpvbmsect, $xpviosect ); sub walk_and_save_optree; my $saveoptree_callback = \&walk_and_save_optree; @@ -66,11 +107,9 @@ sub walk_and_save_optree { # to "know" that op_seq is a U16 and use 65535. Ugh. my $op_seq = 65535; -sub AVf_REAL () { 1 } - -# XXX This shouldn't really be hardcoded here but it saves -# looking up the name of every BASEOP in B::OP -sub OP_THREADSV () { 345 } +# Look this up here so we can do just a number compare +# rather than looking up the name of every BASEOP in B::OP +my $OP_THREADSV = opnumber('threadsv'); sub savesym { my ($obj, $value) = @_; @@ -98,10 +137,11 @@ sub getsym { } sub savepv { - my $pv = shift; + my $pv = shift; + $pv = '' unless defined $pv; # Is this sane ? my $pvsym = 0; my $pvmax = 0; - if ($pv_copy_on_grow) { + if ($pv_copy_on_grow) { my $cstring = cstring($pv); if ($cstring ne "0") { # sic $pvsym = sprintf("pv%d", $pv_index++); @@ -115,17 +155,21 @@ sub savepv { sub B::OP::save { my ($op, $level) = @_; + my $sym = objsym($op); + return $sym if defined $sym; my $type = $op->type; $nullop_count++ unless $type; - if ($type == OP_THREADSV) { + if ($type == $OP_THREADSV) { # saves looking up ppaddr but it's a bit naughty to hard code this $init->add(sprintf("(void)find_threadsv(%s);", cstring($threadsv_names[$op->targ]))); } - $opsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x", - ${$op->next}, ${$op->sibling}, $op->ppaddr, $op->targ, + $opsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x", + ${$op->next}, ${$op->sibling}, $op->targ, $type, $op_seq, $op->flags, $op->private)); - savesym($op, sprintf("&op_list[%d]", $opsect->index)); + my $ix = $opsect->index; + $init->add(sprintf("op_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + savesym($op, "&op_list[$ix]"); } sub B::FAKEOP::new { @@ -135,10 +179,12 @@ sub B::FAKEOP::new { sub B::FAKEOP::save { my ($op, $level) = @_; - $opsect->add(sprintf("%s, %s, %s, %u, %u, %u, 0x%x, 0x%x", - $op->next, $op->sibling, $op->ppaddr, $op->targ, + $opsect->add(sprintf("%s, %s, NULL, %u, %u, %u, 0x%x, 0x%x", + $op->next, $op->sibling, $op->targ, $op->type, $op_seq, $op->flags, $op->private)); - return sprintf("&op_list[%d]", $opsect->index); + my $ix = $opsect->index; + $init->add(sprintf("op_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + return "&op_list[$ix]"; } sub B::FAKEOP::next { $_[0]->{"next"} || 0 } @@ -151,114 +197,139 @@ sub B::FAKEOP::private { $_[0]->{private} || 0 } sub B::UNOP::save { my ($op, $level) = @_; - $unopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + my $sym = objsym($op); + return $sym if defined $sym; + $unopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, ${$op->first})); - savesym($op, sprintf("(OP*)&unop_list[%d]", $unopsect->index)); + my $ix = $unopsect->index; + $init->add(sprintf("unop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + savesym($op, "(OP*)&unop_list[$ix]"); } sub B::BINOP::save { my ($op, $level) = @_; - $binopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + my $sym = objsym($op); + return $sym if defined $sym; + $binopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, ${$op->first}, ${$op->last})); - savesym($op, sprintf("(OP*)&binop_list[%d]", $binopsect->index)); + my $ix = $binopsect->index; + $init->add(sprintf("binop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + savesym($op, "(OP*)&binop_list[$ix]"); } sub B::LISTOP::save { my ($op, $level) = @_; - $listopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + my $sym = objsym($op); + return $sym if defined $sym; + $listopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, ${$op->first}, ${$op->last}, $op->children)); - savesym($op, sprintf("(OP*)&listop_list[%d]", $listopsect->index)); + my $ix = $listopsect->index; + $init->add(sprintf("listop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + savesym($op, "(OP*)&listop_list[$ix]"); } sub B::LOGOP::save { my ($op, $level) = @_; - $logopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + my $sym = objsym($op); + return $sym if defined $sym; + $logopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, ${$op->first}, ${$op->other})); - savesym($op, sprintf("(OP*)&logop_list[%d]", $logopsect->index)); -} - -sub B::CONDOP::save { - my ($op, $level) = @_; - $condopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, s\\_%x", - ${$op->next}, ${$op->sibling}, $op->ppaddr, - $op->targ, $op->type, $op_seq, $op->flags, - $op->private, ${$op->first}, ${$op->true}, - ${$op->false})); - savesym($op, sprintf("(OP*)&condop_list[%d]", $condopsect->index)); + my $ix = $logopsect->index; + $init->add(sprintf("logop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + savesym($op, "(OP*)&logop_list[$ix]"); } sub B::LOOP::save { my ($op, $level) = @_; + my $sym = objsym($op); + return $sym if defined $sym; #warn sprintf("LOOP: redoop %s, nextop %s, lastop %s\n", # peekop($op->redoop), peekop($op->nextop), # peekop($op->lastop)); # debug - $loopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u, s\\_%x, s\\_%x, s\\_%x", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + $loopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u, s\\_%x, s\\_%x, s\\_%x", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, ${$op->first}, ${$op->last}, $op->children, ${$op->redoop}, ${$op->nextop}, ${$op->lastop})); - savesym($op, sprintf("(OP*)&loop_list[%d]", $loopsect->index)); + my $ix = $loopsect->index; + $init->add(sprintf("loop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + savesym($op, "(OP*)&loop_list[$ix]"); } sub B::PVOP::save { my ($op, $level) = @_; - $pvopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, %s", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + my $sym = objsym($op); + return $sym if defined $sym; + $pvopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, %s", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, cstring($op->pv))); - savesym($op, sprintf("(OP*)&pvop_list[%d]", $pvopsect->index)); + my $ix = $pvopsect->index; + $init->add(sprintf("pvop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + savesym($op, "(OP*)&pvop_list[$ix]"); } sub B::SVOP::save { my ($op, $level) = @_; + my $sym = objsym($op); + return $sym if defined $sym; my $svsym = $op->sv->save; - $svopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, %s", - ${$op->next}, ${$op->sibling}, $op->ppaddr, - $op->targ, $op->type, $op_seq, $op->flags, - $op->private, "(SV*)$svsym")); - savesym($op, sprintf("(OP*)&svop_list[%d]", $svopsect->index)); -} - -sub B::GVOP::save { - my ($op, $level) = @_; - my $gvsym = $op->gv->save; - $gvopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, Nullgv", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + $svopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, Nullsv", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private)); - $init->add(sprintf("gvop_list[%d].op_gv = %s;", $gvopsect->index, $gvsym)); - savesym($op, sprintf("(OP*)&gvop_list[%d]", $gvopsect->index)); + my $ix = $svopsect->index; + $init->add(sprintf("svop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + $init->add("svop_list[$ix].op_sv = (SV*)$svsym;"); + savesym($op, "(OP*)&svop_list[$ix]"); +} + +sub B::PADOP::save { + my ($op, $level) = @_; + my $sym = objsym($op); + return $sym if defined $sym; + $padopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, 0", + ${$op->next}, ${$op->sibling}, + $op->targ, $op->type, $op_seq, $op->flags, + $op->private)); + $init->add(sprintf("padop_list[%d].op_ppaddr = %s;", $padopsect->index, $op->ppaddr)); + my $ix = $padopsect->index; + $init->add(sprintf("padop_list[$ix].op_padix = %ld;", $op->padix)); + savesym($op, "(OP*)&padop_list[$ix]"); } sub B::COP::save { my ($op, $level) = @_; - my $gvsym = $op->filegv->save; - my $stashsym = $op->stash->save; - warn sprintf("COP: line %d file %s\n", $op->line, $op->filegv->SV->PV) + my $sym = objsym($op); + return $sym if defined $sym; + warn sprintf("COP: line %d file %s\n", $op->line, $op->file) if $debug_cops; - $copsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, %s, Nullhv, Nullgv, %u, %d, %u", - ${$op->next}, ${$op->sibling}, $op->ppaddr, + $copsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, %s, NULL, NULL, %u, %d, %u", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, cstring($op->label), $op->cop_seq, $op->arybase, $op->line)); - my $copix = $copsect->index; - $init->add(sprintf("cop_list[%d].cop_filegv = %s;", $copix, $gvsym), - sprintf("cop_list[%d].cop_stash = %s;", $copix, $stashsym)); - savesym($op, "(OP*)&cop_list[$copix]"); + my $ix = $copsect->index; + $init->add(sprintf("cop_list[$ix].op_ppaddr = %s;", $op->ppaddr)); + $init->add(sprintf("CopFILE_set(&cop_list[$ix], %s);", cstring($op->file)), + sprintf("CopSTASHPV_set(&cop_list[$ix], %s);", cstring($op->stashpv))); + savesym($op, "(OP*)&cop_list[$ix]"); } sub B::PMOP::save { my ($op, $level) = @_; + my $sym = objsym($op); + return $sym if defined $sym; my $replroot = $op->pmreplroot; my $replstart = $op->pmreplstart; my $replrootfield = sprintf("s\\_%x", $$replroot); @@ -269,7 +340,7 @@ sub B::PMOP::save { # OP_PUSHRE (a mutated version of OP_MATCH for the regexp # argument to a split) stores a GV in op_pmreplroot instead # of a substitution syntax tree. We don't want to walk that... - if ($ppaddr eq "pp_pushre") { + if ($op->name eq "pushre") { $gvsym = $replroot->save; # warn "PMOP::save saving a pp_pushre with GV $gvsym\n"; # debug $replrootfield = 0; @@ -280,13 +351,14 @@ sub B::PMOP::save { # pmnext handling is broken in perl itself, I think. Bad op_pmnext # fields aren't noticed in perl's runtime (unless you try reset) but we # segfault when trying to dereference it to find op->op_pmnext->op_type - $pmopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u, %s, %s, 0, 0, 0x%x, 0x%x", - ${$op->next}, ${$op->sibling}, $ppaddr, $op->targ, + $pmopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u, %s, %s, 0, 0, 0x%x, 0x%x", + ${$op->next}, ${$op->sibling}, $op->targ, $op->type, $op_seq, $op->flags, $op->private, ${$op->first}, ${$op->last}, $op->children, $replrootfield, $replstartfield, $op->pmflags, $op->pmpermflags,)); my $pm = sprintf("pmop_list[%d]", $pmopsect->index); + $init->add(sprintf("$pm.op_ppaddr = %s;", $ppaddr)); my $re = $op->precomp; if (defined($re)) { my $resym = sprintf("re%d", $re_index++); @@ -297,7 +369,7 @@ sub B::PMOP::save { if ($gvsym) { $init->add("$pm.op_pmreplroot = (OP*)$gvsym;"); } - savesym($op, sprintf("(OP*)&pmop_list[%d]", $pmopsect->index)); + savesym($op, "(OP*)&$pm"); } sub B::SPECIAL::save { @@ -319,10 +391,11 @@ sub B::NULL::save { return $sym if defined $sym; # warn "Saving SVt_NULL SV\n"; # debug # debug - #if ($$sv == 0) { - # warn "NULL::save for sv = 0 called from @{[(caller(1))[3]]}\n"; - #} - $svsect->add(sprintf("0, %u, 0x%x", $sv->REFCNT + 1, $sv->FLAGS)); + if ($$sv == 0) { + warn "NULL::save for sv = 0 called from @{[(caller(1))[3]]}\n"; + return savesym($sv, "Nullsv /* XXX */"); + } + $svsect->add(sprintf("0, %u, 0x%x", $sv->REFCNT , $sv->FLAGS)); return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); } @@ -332,7 +405,7 @@ sub B::IV::save { return $sym if defined $sym; $xpvivsect->add(sprintf("0, 0, 0, %d", $sv->IVX)); $svsect->add(sprintf("&xpviv_list[%d], %lu, 0x%x", - $xpvivsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvivsect->index, $sv->REFCNT , $sv->FLAGS)); return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); } @@ -340,12 +413,35 @@ sub B::NV::save { my ($sv) = @_; my $sym = objsym($sv); return $sym if defined $sym; - $xpvnvsect->add(sprintf("0, 0, 0, %d, %s", $sv->IVX, $sv->NVX)); + my $val= $sv->NVX; + $val .= '.00' if $val =~ /^-?\d+$/; + $xpvnvsect->add(sprintf("0, 0, 0, %d, %s", $sv->IVX, $val)); $svsect->add(sprintf("&xpvnv_list[%d], %lu, 0x%x", - $xpvnvsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvnvsect->index, $sv->REFCNT , $sv->FLAGS)); return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); } +sub savepvn { + my ($dest,$pv) = @_; + my @res; + if (defined $max_string_len && length($pv) > $max_string_len) { + push @res, sprintf("New(0,%s,%u,char);", $dest, length($pv)+1); + my $offset = 0; + while (length $pv) { + my $str = substr $pv, 0, $max_string_len, ''; + push @res, sprintf("Copy(%s,$dest+$offset,%u,char);", + cstring($str), length($str)); + $offset += length $str; + } + push @res, sprintf("%s[%u] = '\\0';", $dest, $offset); + } + else { + push @res, sprintf("%s = savepvn(%s, %u);", $dest, + cstring($pv), length($pv)); + } + return @res; +} + sub B::PVLV::save { my ($sv) = @_; my $sym = objsym($sv); @@ -358,10 +454,10 @@ sub B::PVLV::save { $pvsym, $len, $pvmax, $sv->IVX, $sv->NVX, $sv->TARGOFF, $sv->TARGLEN, cchar($sv->TYPE))); $svsect->add(sprintf("&xpvlv_list[%d], %lu, 0x%x", - $xpvlvsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvlvsect->index, $sv->REFCNT , $sv->FLAGS)); if (!$pv_copy_on_grow) { - $init->add(sprintf("xpvlv_list[%d].xpv_pv = savepvn(%s, %u);", - $xpvlvsect->index, cstring($pv), $len)); + $init->add(savepvn(sprintf("xpvlv_list[%d].xpv_pv", + $xpvlvsect->index), $pv)); } $sv->save_magic; return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); @@ -376,10 +472,10 @@ sub B::PVIV::save { my ($pvsym, $pvmax) = savepv($pv); $xpvivsect->add(sprintf("%s, %u, %u, %d", $pvsym, $len, $pvmax, $sv->IVX)); $svsect->add(sprintf("&xpviv_list[%d], %u, 0x%x", - $xpvivsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvivsect->index, $sv->REFCNT , $sv->FLAGS)); if (!$pv_copy_on_grow) { - $init->add(sprintf("xpviv_list[%d].xpv_pv = savepvn(%s, %u);", - $xpvivsect->index, cstring($pv), $len)); + $init->add(savepvn(sprintf("xpviv_list[%d].xpv_pv", + $xpvivsect->index), $pv)); } return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); } @@ -388,16 +484,19 @@ sub B::PVNV::save { my ($sv) = @_; my $sym = objsym($sv); return $sym if defined $sym; - my $pv = $sv->PV; + my $pv = $sv->PV; + $pv = '' unless defined $pv; my $len = length($pv); my ($pvsym, $pvmax) = savepv($pv); + my $val= $sv->NVX; + $val .= '.00' if $val =~ /^-?\d+$/; $xpvnvsect->add(sprintf("%s, %u, %u, %d, %s", - $pvsym, $len, $pvmax, $sv->IVX, $sv->NVX)); + $pvsym, $len, $pvmax, $sv->IVX, $val)); $svsect->add(sprintf("&xpvnv_list[%d], %lu, 0x%x", - $xpvnvsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvnvsect->index, $sv->REFCNT , $sv->FLAGS)); if (!$pv_copy_on_grow) { - $init->add(sprintf("xpvnv_list[%d].xpv_pv = savepvn(%s,%u);", - $xpvnvsect->index, cstring($pv), $len)); + $init->add(savepvn(sprintf("xpvnv_list[%d].xpv_pv", + $xpvnvsect->index), $pv)); } return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); } @@ -412,10 +511,10 @@ sub B::BM::save { $len, $len + 258, $sv->IVX, $sv->NVX, $sv->USEFUL, $sv->PREVIOUS, $sv->RARE)); $svsect->add(sprintf("&xpvbm_list[%d], %lu, 0x%x", - $xpvbmsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvbmsect->index, $sv->REFCNT , $sv->FLAGS)); $sv->save_magic; - $init->add(sprintf("xpvbm_list[%d].xpv_pv = savepvn(%s, %u);", - $xpvbmsect->index, cstring($pv), $len), + $init->add(savepvn(sprintf("xpvbm_list[%d].xpv_pv", + $xpvbmsect->index), $pv), sprintf("xpvbm_list[%d].xpv_cur = %u;", $xpvbmsect->index, $len - 257)); return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); @@ -430,10 +529,10 @@ sub B::PV::save { my ($pvsym, $pvmax) = savepv($pv); $xpvsect->add(sprintf("%s, %u, %u", $pvsym, $len, $pvmax)); $svsect->add(sprintf("&xpv_list[%d], %lu, 0x%x", - $xpvsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvsect->index, $sv->REFCNT , $sv->FLAGS)); if (!$pv_copy_on_grow) { - $init->add(sprintf("xpv_list[%d].xpv_pv = savepvn(%s, %u);", - $xpvsect->index, cstring($pv), $len)); + $init->add(savepvn(sprintf("xpv_list[%d].xpv_pv", + $xpvsect->index), $pv)); } return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); } @@ -448,10 +547,10 @@ sub B::PVMG::save { $xpvmgsect->add(sprintf("%s, %u, %u, %d, %s, 0, 0", $pvsym, $len, $pvmax, $sv->IVX, $sv->NVX)); $svsect->add(sprintf("&xpvmg_list[%d], %lu, 0x%x", - $xpvmgsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xpvmgsect->index, $sv->REFCNT , $sv->FLAGS)); if (!$pv_copy_on_grow) { - $init->add(sprintf("xpvmg_list[%d].xpv_pv = savepvn(%s, %u);", - $xpvmgsect->index, cstring($pv), $len)); + $init->add(savepvn(sprintf("xpvmg_list[%d].xpv_pv", + $xpvmgsect->index), $pv)); } $sym = savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); $sv->save_magic; @@ -462,6 +561,7 @@ sub B::PVMG::save_magic { my ($sv) = @_; #warn sprintf("saving magic for %s (0x%x)\n", class($sv), $$sv); # debug my $stash = $sv->SvSTASH; + $stash->save; if ($$stash) { warn sprintf("xmg_stash = %s (0x%x)\n", $stash->NAME, $$stash) if $debug_mg; @@ -469,19 +569,27 @@ sub B::PVMG::save_magic { $init->add(sprintf("SvSTASH(s\\_%x) = s\\_%x;", $$sv, $$stash)); } my @mgchain = $sv->MAGIC; - my ($mg, $type, $obj, $ptr); + my ($mg, $type, $obj, $ptr,$len,$ptrsv); foreach $mg (@mgchain) { $type = $mg->TYPE; $obj = $mg->OBJ; $ptr = $mg->PTR; - my $len = defined($ptr) ? length($ptr) : 0; + $len=$mg->LENGTH; if ($debug_mg) { warn sprintf("magic %s (0x%x), obj %s (0x%x), type %s, ptr %s\n", class($sv), $$sv, class($obj), $$obj, cchar($type), cstring($ptr)); } - $init->add(sprintf("sv_magic((SV*)s\\_%x, (SV*)s\\_%x, %s, %s, %d);", + $obj->save; + if ($len == HEf_SVKEY){ + #The pointer is an SV* + $ptrsv=svref_2object($ptr)->save; + $init->add(sprintf("sv_magic((SV*)s\\_%x, (SV*)s\\_%x, %s,(char *) %s, %d);", + $$sv, $$obj, cchar($type),$ptrsv,$len)); + }else{ + $init->add(sprintf("sv_magic((SV*)s\\_%x, (SV*)s\\_%x, %s, %s, %d);", $$sv, $$obj, cchar($type),cstring($ptr),$len)); + } } } @@ -489,9 +597,11 @@ sub B::RV::save { my ($sv) = @_; my $sym = objsym($sv); return $sym if defined $sym; - $xrvsect->add($sv->RV->save); + my $rv = $sv->RV->save; + $rv =~ s/^\([AGHS]V\s*\*\)\s*(\&sv_list.*)$/$1/; + $xrvsect->add($rv); $svsect->add(sprintf("&xrv_list[%d], %lu, 0x%x", - $xrvsect->index, $sv->REFCNT + 1, $sv->FLAGS)); + $xrvsect->index, $sv->REFCNT , $sv->FLAGS)); return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); } @@ -516,7 +626,7 @@ sub try_autoload { } } } - +sub Dummy_initxs{}; sub B::CV::save { my ($cv) = @_; my $sym = objsym($cv); @@ -525,18 +635,43 @@ sub B::CV::save { return $sym; } # Reserve a place in svsect and xpvcvsect and record indices + my $gv = $cv->GV; + my ($cvname, $cvstashname); + if ($$gv){ + $cvname = $gv->NAME; + $cvstashname = $gv->STASH->NAME; + } + my $root = $cv->ROOT; + my $cvxsub = $cv->XSUB; + #INIT is removed from the symbol table, so this call must come + # from PL_initav->save. Re-bootstrapping will push INIT back in + # so nullop should be sent. + if ($cvxsub && ($cvname ne "INIT")) { + my $egv = $gv->EGV; + my $stashname = $egv->STASH->NAME; + if ($cvname eq "bootstrap") + { + my $file = $gv->FILE; + $decl->add("/* bootstrap $file */"); + warn "Bootstrap $stashname $file\n"; + $xsub{$stashname}='Dynamic'; + # $xsub{$stashname}='Static' unless $xsub{$stashname}; + return qq/NULL/; + } + warn sprintf("stub for XSUB $cvstashname\:\:$cvname CV 0x%x\n", $$cv) if $debug_cv; + return qq/(perl_get_cv("$stashname\:\:$cvname",TRUE))/; + } + if ($cvxsub && $cvname eq "INIT") { + no strict 'refs'; + return svref_2object(\&Dummy_initxs)->save; + } my $sv_ix = $svsect->index + 1; $svsect->add("svix$sv_ix"); my $xpvcv_ix = $xpvcvsect->index + 1; $xpvcvsect->add("xpvcvix$xpvcv_ix"); # Save symbol now so that GvCV() doesn't recurse back to us via CvGV() $sym = savesym($cv, "&sv_list[$sv_ix]"); - warn sprintf("saving CV 0x%x as $sym\n", $$cv) if $debug_cv; - my $gv = $cv->GV; - my $cvstashname = $gv->STASH->NAME; - my $cvname = $gv->NAME; - my $root = $cv->ROOT; - my $cvxsub = $cv->XSUB; + warn sprintf("saving $cvstashname\:\:$cvname CV 0x%x as $sym\n", $$cv) if $debug_cv; if (!$$root && !$cvxsub) { if (try_autoload($cvstashname, $cvname)) { # Recalculate root and xsub @@ -564,6 +699,10 @@ sub B::CV::save { $ppname .= ($stashname eq "main") ? $gvname : "$stashname\::$gvname"; $ppname =~ s/::/__/g; + if ($gvname eq "INIT"){ + $ppname .= "_$initsub_index"; + $initsub_index++; + } } } if (!$ppname) { @@ -581,28 +720,19 @@ sub B::CV::save { $$padlist, $$cv) if $debug_cv; } } - elsif ($cvxsub) { - $xsubany = sprintf("ANYINIT((void*)0x%x)", $cv->XSUBANY); - # Try to find out canonical name of XSUB function from EGV. - # XXX Doesn't work for XSUBs with PREFIX set (or anyone who - # calls newXS() manually with weird arguments). - my $egv = $gv->EGV; - my $stashname = $egv->STASH->NAME; - $stashname =~ s/::/__/g; - $xsub = sprintf("XS_%s_%s", $stashname, $egv->NAME); - $decl->add("void $xsub _((CV*));"); - } else { warn sprintf("No definition for sub %s::%s (unable to autoload)\n", $cvstashname, $cvname); # debug - } - $symsect->add(sprintf("xpvcvix%d\t%s, %u, 0, %d, %s, 0, Nullhv, Nullhv, %s, s\\_%x, $xsub, $xsubany, Nullgv, Nullgv, %d, s\\_%x, (CV*)s\\_%x, 0x%x", + } + $pv = '' unless defined $pv; # Avoid use of undef warnings + $symsect->add(sprintf("xpvcvix%d\t%s, %u, 0, %d, %s, 0, Nullhv, Nullhv, %s, s\\_%x, $xsub, $xsubany, Nullgv, \"\", %d, s\\_%x, (CV*)s\\_%x, 0x%x", $xpvcv_ix, cstring($pv), length($pv), $cv->IVX, $cv->NVX, $startfield, ${$cv->ROOT}, $cv->DEPTH, $$padlist, ${$cv->OUTSIDE}, $cv->CvFLAGS)); if (${$cv->OUTSIDE} == ${main_cv()}){ $init->add(sprintf("CvOUTSIDE(s\\_%x)=PL_main_cv;",$$cv)); + $init->add(sprintf("SvREFCNT_inc(PL_main_cv);")); } if ($$gv) { @@ -611,13 +741,7 @@ sub B::CV::save { warn sprintf("done saving GV 0x%x for CV 0x%x\n", $$gv, $$cv) if $debug_cv; } - my $filegv = $cv->FILEGV; - if ($$filegv) { - $filegv->save; - $init->add(sprintf("CvFILEGV(s\\_%x) = s\\_%x;", $$cv, $$filegv)); - warn sprintf("done saving FILEGV 0x%x for CV 0x%x\n", - $$filegv, $$cv) if $debug_cv; - } + $init->add(sprintf("CvFILE($sym) = %s;", cstring($cv->FILE))); my $stash = $cv->STASH; if ($$stash) { $stash->save; @@ -626,7 +750,7 @@ sub B::CV::save { $$stash, $$cv) if $debug_cv; } $symsect->add(sprintf("svix%d\t(XPVCV*)&xpvcv_list[%u], %lu, 0x%x", - $sv_ix, $xpvcv_ix, $cv->REFCNT + 1, $cv->FLAGS)); + $sv_ix, $xpvcv_ix, $cv->REFCNT +1 , $cv->FLAGS)); return $sym; } @@ -641,24 +765,31 @@ sub B::GV::save { $sym = savesym($gv, "gv_list[$ix]"); #warn sprintf("Saving GV 0x%x as $sym\n", $$gv); # debug } + my $is_empty = $gv->is_empty; my $gvname = $gv->NAME; my $name = cstring($gv->STASH->NAME . "::" . $gvname); #warn "GV name is $name\n"; # debug - my $egv = $gv->EGV; my $egvsym; - if ($$gv != $$egv) { - #warn(sprintf("EGV name is %s, saving it now\n", - # $egv->STASH->NAME . "::" . $egv->NAME)); # debug - $egvsym = $egv->save; + unless ($is_empty) { + my $egv = $gv->EGV; + if ($$gv != $$egv) { + #warn(sprintf("EGV name is %s, saving it now\n", + # $egv->STASH->NAME . "::" . $egv->NAME)); # debug + $egvsym = $egv->save; + } } $init->add(qq[$sym = gv_fetchpv($name, TRUE, SVt_PV);], sprintf("SvFLAGS($sym) = 0x%x;", $gv->FLAGS), - sprintf("GvFLAGS($sym) = 0x%x;", $gv->GvFLAGS), - sprintf("GvLINE($sym) = %u;", $gv->LINE)); + sprintf("GvFLAGS($sym) = 0x%x;", $gv->GvFLAGS)); + $init->add(sprintf("GvLINE($sym) = %u;", $gv->LINE)) unless $is_empty; + # Shouldn't need to do save_magic since gv_fetchpv handles that #$gv->save_magic; my $refcnt = $gv->REFCNT + 1; $init->add(sprintf("SvREFCNT($sym) += %u;", $refcnt - 1)) if $refcnt > 1; + + return $sym if $is_empty; + my $gvrefcnt = $gv->GvREFCNT; if ($gvrefcnt > 1) { $init->add(sprintf("GvREFCNT($sym) += %u;", $gvrefcnt - 1)); @@ -672,45 +803,51 @@ sub B::GV::save { # warn "GV::save saving subfields\n"; # debug my $gvsv = $gv->SV; if ($$gvsv) { + $gvsv->save; $init->add(sprintf("GvSV($sym) = s\\_%x;", $$gvsv)); # warn "GV::save \$$name\n"; # debug - $gvsv->save; } my $gvav = $gv->AV; if ($$gvav) { + $gvav->save; $init->add(sprintf("GvAV($sym) = s\\_%x;", $$gvav)); # warn "GV::save \@$name\n"; # debug - $gvav->save; } my $gvhv = $gv->HV; if ($$gvhv) { + $gvhv->save; $init->add(sprintf("GvHV($sym) = s\\_%x;", $$gvhv)); # warn "GV::save \%$name\n"; # debug - $gvhv->save; } my $gvcv = $gv->CV; - if ($$gvcv) { - $init->add(sprintf("GvCV($sym) = (CV*)s\\_%x;", $$gvcv)); -# warn "GV::save &$name\n"; # debug - $gvcv->save; - } - my $gvfilegv = $gv->FILEGV; - if ($$gvfilegv) { - $init->add(sprintf("GvFILEGV($sym) = (GV*)s\\_%x;",$$gvfilegv)); -# warn "GV::save GvFILEGV(*$name)\n"; # debug - $gvfilegv->save; - } + if ($$gvcv) { + my $origname=cstring($gvcv->GV->EGV->STASH->NAME . + "::" . $gvcv->GV->EGV->NAME); + if (0 && $gvcv->XSUB && $name ne $origname) { #XSUB alias + # must save as a 'stub' so newXS() has a CV to populate + $init->add("{ CV *cv;"); + $init->add("\tcv=perl_get_cv($origname,TRUE);"); + $init->add("\tGvCV($sym)=cv;"); + $init->add("\tSvREFCNT_inc((SV *)cv);"); + $init->add("}"); + } else { + $init->add(sprintf("GvCV($sym) = (CV*)(%s);", $gvcv->save)); +# warn "GV::save &$name\n"; # debug + } + } + $init->add(sprintf("GvFILE($sym) = %s;", cstring($gv->FILE))); +# warn "GV::save GvFILE(*$name)\n"; # debug my $gvform = $gv->FORM; if ($$gvform) { + $gvform->save; $init->add(sprintf("GvFORM($sym) = (CV*)s\\_%x;", $$gvform)); # warn "GV::save GvFORM(*$name)\n"; # debug - $gvform->save; } my $gvio = $gv->IO; if ($$gvio) { + $gvio->save; $init->add(sprintf("GvIOp($sym) = s\\_%x;", $$gvio)); # warn "GV::save GvIO(*$name)\n"; # debug - $gvio->save; } } return $sym; @@ -723,7 +860,7 @@ sub B::AV::save { $xpvavsect->add(sprintf("0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0, 0x%x", $avflags)); $svsect->add(sprintf("&xpvav_list[%d], %lu, 0x%x", - $xpvavsect->index, $av->REFCNT + 1, $av->FLAGS)); + $xpvavsect->index, $av->REFCNT , $av->FLAGS)); my $sv_list_index = $svsect->index; my $fill = $av->FILL; $av->save_magic; @@ -789,7 +926,7 @@ sub B::HV::save { $xpvhvsect->add(sprintf("0, 0, %d, 0, 0.0, 0, Nullhv, %d, 0, 0, 0", $hv->MAX, $hv->RITER)); $svsect->add(sprintf("&xpvhv_list[%d], %lu, 0x%x", - $xpvhvsect->index, $hv->REFCNT + 1, $hv->FLAGS)); + $xpvhvsect->index, $hv->REFCNT , $hv->FLAGS)); my $sv_list_index = $svsect->index; my @contents = $hv->ARRAY; if (@contents) { @@ -802,9 +939,12 @@ sub B::HV::save { my ($key, $value) = splice(@contents, 0, 2); $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);", cstring($key),length($key),$value, hash($key))); +# $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);", +# cstring($key),length($key),$value, 0)); } $init->add("}"); } + $hv->save_magic(); return savesym($hv, "(HV*)&sv_list[$sv_list_index]"); } @@ -813,6 +953,7 @@ sub B::IO::save { my $sym = objsym($io); return $sym if defined $sym; my $pv = $io->PV; + $pv = '' unless defined $pv; my $len = length($pv); $xpviosect->add(sprintf("0, %u, %u, %d, %s, 0, 0, 0, 0, 0, %d, %d, %d, %d, %s, Nullgv, %s, Nullgv, %s, Nullgv, %d, %s, 0x%x", $len, $len+1, $io->IVX, $io->NVX, $io->LINES, @@ -821,7 +962,7 @@ sub B::IO::save { cstring($io->BOTTOM_NAME), $io->SUBPROCESS, cchar($io->IoTYPE), $io->IoFLAGS)); $svsect->add(sprintf("&xpvio_list[%d], %lu, 0x%x", - $xpviosect->index, $io->REFCNT + 1, $io->FLAGS)); + $xpviosect->index, $io->REFCNT , $io->FLAGS)); $sym = savesym($io, sprintf("(IO*)&sv_list[%d]", $svsect->index)); my ($field, $fsym); foreach $field (qw(TOP_GV FMT_GV BOTTOM_GV)) { @@ -848,11 +989,10 @@ sub output_all { my $init_name = shift; my $section; my @sections = ($opsect, $unopsect, $binopsect, $logopsect, $condopsect, - $listopsect, $pmopsect, $svopsect, $gvopsect, $pvopsect, - $cvopsect, $loopsect, $copsect, $svsect, $xpvsect, + $listopsect, $pmopsect, $svopsect, $padopsect, $pvopsect, + $loopsect, $copsect, $svsect, $xpvsect, $xpvavsect, $xpvhvsect, $xpvcvsect, $xpvivsect, $xpvnvsect, $xpvmgsect, $xpvlvsect, $xrvsect, $xpvbmsect, $xpviosect); - $bootstrap->output(\*STDOUT, "/* bootstrap %s */\n"); $symsect->output(\*STDOUT, "#define %s\n"); print "\n"; output_declarations(); @@ -881,6 +1021,8 @@ sub output_all { static int $init_name() { dTHR; + dTARG; + djSP; EOT $init->output(\*STDOUT, "\t%s\n"); print "\treturn 0;\n}\n"; @@ -915,18 +1057,18 @@ typedef struct { HV * xcv_stash; OP * xcv_start; OP * xcv_root; - void (*xcv_xsub) _((CV*)); + void (*xcv_xsub) (CV*); void * xcv_xsubany; GV * xcv_gv; - GV * xcv_filegv; - long xcv_depth; /* >= 2 indicates recursive call */ + char * xcv_file; + long xcv_depth; /* >= 2 indicates recursive call */ AV * xcv_padlist; CV * xcv_outside; #ifdef USE_THREADS perl_mutex *xcv_mutexp; struct perl_thread *xcv_owner; /* current owner thread */ #endif /* USE_THREADS */ - U8 xcv_flags; + cv_flags_t xcv_flags; } XPVCV_or_similar; #define ANYINIT(i) i #else @@ -948,15 +1090,16 @@ sub output_boilerplate { print <<'EOT'; #include "EXTERN.h" #include "perl.h" -#ifndef PATCHLEVEL -#include "patchlevel.h" -#endif +#include "XSUB.h" /* Workaround for mapstart: the only op which needs a different ppaddr */ -#undef pp_mapstart -#define pp_mapstart pp_grepstart +#undef Perl_pp_mapstart +#define Perl_pp_mapstart Perl_pp_grepstart +#define XS_DynaLoader_boot_DynaLoader boot_DynaLoader +EXTERN_C void boot_DynaLoader (pTHX_ CV* cv); -static void xs_init _((void)); +static void xs_init (pTHX); +static void dl_init (pTHX); static PerlInterpreter *my_perl; EOT } @@ -964,28 +1107,20 @@ EOT sub output_main { print <<'EOT'; int -#ifndef CAN_PROTOTYPE -main(argc, argv, env) -int argc; -char **argv; -char **env; -#else /* def(CAN_PROTOTYPE) */ main(int argc, char **argv, char **env) -#endif /* def(CAN_PROTOTYPE) */ { int exitstatus; int i; char **fakeargv; - PERL_SYS_INIT(&argc,&argv); + PERL_SYS_INIT3(&argc,&argv,&env); - perl_init_i18nl10n(1); - if (!PL_do_undump) { my_perl = perl_alloc(); if (!my_perl) exit(1); perl_construct( my_perl ); + PL_perl_destruct_level = 0; } #ifdef CSH @@ -1021,22 +1156,84 @@ main(int argc, char **argv, char **env) exitstatus = perl_init(); if (exitstatus) exit( exitstatus ); + dl_init(aTHX); exitstatus = perl_run( my_perl ); perl_destruct( my_perl ); perl_free( my_perl ); + PERL_SYS_TERM(); + exit( exitstatus ); } +/* yanked from perl.c */ static void -xs_init() +xs_init(pTHX) { -} + char *file = __FILE__; + dTARG; + djSP; EOT + print "\n#ifdef USE_DYNAMIC_LOADING"; + print qq/\n\tnewXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);/; + print "\n#endif\n" ; + # delete $xsub{'DynaLoader'}; + delete $xsub{'UNIVERSAL'}; + print("/* bootstrapping code*/\n\tSAVETMPS;\n"); + print("\ttarg=sv_newmortal();\n"); + print "#ifdef DYNALOADER_BOOTSTRAP\n"; + print "\tPUSHMARK(sp);\n"; + print qq/\tXPUSHp("DynaLoader",strlen("DynaLoader"));\n/; + print qq/\tPUTBACK;\n/; + print "\tboot_DynaLoader(aTHX_ NULL);\n"; + print qq/\tSPAGAIN;\n/; + print "#endif\n"; + foreach my $stashname (keys %xsub){ + if ($xsub{$stashname} ne 'Dynamic') { + my $stashxsub=$stashname; + $stashxsub =~ s/::/__/g; + print "\tPUSHMARK(sp);\n"; + print qq/\tXPUSHp("$stashname",strlen("$stashname"));\n/; + print qq/\tPUTBACK;\n/; + print "\tboot_$stashxsub(aTHX_ NULL);\n"; + print qq/\tSPAGAIN;\n/; + } + } + print("\tFREETMPS;\n/* end bootstrapping code */\n"); + print "}\n"; + +print <<'EOT'; +static void +dl_init(pTHX) +{ + char *file = __FILE__; + dTARG; + djSP; +EOT + print("/* Dynamicboot strapping code*/\n\tSAVETMPS;\n"); + print("\ttarg=sv_newmortal();\n"); + foreach my $stashname (@DynaLoader::dl_modules) { + warn "Loaded $stashname\n"; + if (exists($xsub{$stashname}) && $xsub{$stashname} eq 'Dynamic') { + my $stashxsub=$stashname; + $stashxsub =~ s/::/__/g; + print "\tPUSHMARK(sp);\n"; + print qq/\tXPUSHp("$stashname",/,length($stashname),qq/);\n/; + print qq/\tPUTBACK;\n/; + print "#ifdef DYNALOADER_BOOTSTRAP\n"; + warn "bootstrapping $stashname added to xs_init\n"; + print qq/\tperl_call_method("bootstrap",G_DISCARD);\n/; + print "\n#else\n"; + print "\tboot_$stashxsub(aTHX_ NULL);\n"; + print "#endif\n"; + print qq/\tSPAGAIN;\n/; + } + } + print("\tFREETMPS;\n/* end Dynamic bootstrapping code */\n"); + print "}\n"; } - sub dump_symtable { # For debugging my ($sym, $val); @@ -1056,107 +1253,174 @@ sub save_object { sub Dummy_BootStrap { } -sub B::GV::savecv { - my $gv = shift; - my $cv = $gv->CV; - my $name = $gv->NAME; - if ($$cv) { - if ($name eq "bootstrap" && $cv->XSUB) { - my $file = $cv->FILEGV->SV->PV; - $bootstrap->add($file); - my $name = $gv->STASH->NAME.'::'.$name; - no strict 'refs'; - *{$name} = \&Dummy_BootStrap; - $cv = $gv->CV; - } - if ($debug_cv) { - warn sprintf("saving extra CV &%s::%s (0x%x) from GV 0x%x\n", - $gv->STASH->NAME, $name, $$cv, $$gv); - } - my $package=$gv->STASH->NAME; - # This seems to undo all the ->isa and prefix stuff we do below - # so disable again for now - if (0 && ! grep(/^$package$/,@unused_sub_packages)){ - warn sprintf("omitting cv in superclass %s", $gv->STASH->NAME) - if $debug_cv; - return ; +sub B::GV::savecv +{ + my $gv = shift; + my $package=$gv->STASH->NAME; + my $name = $gv->NAME; + my $cv = $gv->CV; + my $sv = $gv->SV; + my $av = $gv->AV; + my $hv = $gv->HV; + + # We may be looking at this package just because it is a branch in the + # symbol table which is on the path to a package which we need to save + # e.g. this is 'Getopt' and we need to save 'Getopt::Long' + # + return unless ($unused_sub_packages{$package}); + return unless ($$cv || $$av || $$sv || $$hv); + $gv->save; +} + +sub mark_package +{ + my $package = shift; + unless ($unused_sub_packages{$package}) + { + no strict 'refs'; + $unused_sub_packages{$package} = 1; + if (defined @{$package.'::ISA'}) + { + foreach my $isa (@{$package.'::ISA'}) + { + if ($isa eq 'DynaLoader') + { + unless (defined(&{$package.'::bootstrap'})) + { + warn "Forcing bootstrap of $package\n"; + eval { $package->bootstrap }; + } + } +# else + { + unless ($unused_sub_packages{$isa}) + { + warn "$isa saved (it is in $package\'s \@ISA)\n"; + mark_package($isa); + } + } } - $gv->save; } - elsif ($name eq 'ISA') - { - $gv->save; - } - + } + return 1; +} + +sub should_save +{ + no strict qw(vars refs); + my $package = shift; + $package =~ s/::$//; + return $unused_sub_packages{$package} = 0 if ($package =~ /::::/); # skip ::::ISA::CACHE etc. + # warn "Considering $package\n";#debug + foreach my $u (grep($unused_sub_packages{$_},keys %unused_sub_packages)) + { + # If this package is a prefix to something we are saving, traverse it + # but do not mark it for saving if it is not already + # e.g. to get to Getopt::Long we need to traverse Getopt but need + # not save Getopt + return 1 if ($u =~ /^$package\:\:/); + } + if (exists $unused_sub_packages{$package}) + { + # warn "Cached $package is ".$unused_sub_packages{$package}."\n"; + delete_unsaved_hashINC($package) unless $unused_sub_packages{$package} ; + return $unused_sub_packages{$package}; + } + # Omit the packages which we use (and which cause grief + # because of fancy "goto &$AUTOLOAD" stuff). + # XXX Surely there must be a nicer way to do this. + if ($package eq "FileHandle" || $package eq "Config" || + $package eq "SelectSaver" || $package =~/^(B|IO)::/) + { + delete_unsaved_hashINC($package); + return $unused_sub_packages{$package} = 0; + } + # Now see if current package looks like an OO class this is probably too strong. + foreach my $m (qw(new DESTROY TIESCALAR TIEARRAY TIEHASH TIEHANDLE)) + { + if ($package->can($m)) + { + warn "$package has method $m: saving package\n";#debug + return mark_package($package); + } + } + delete_unsaved_hashINC($package); + return $unused_sub_packages{$package} = 0; +} +sub delete_unsaved_hashINC{ + my $packname=shift; + $packname =~ s/\:\:/\//g; + $packname .= '.pm'; +# warn "deleting $packname" if $INC{$packname} ;# debug + delete $INC{$packname}; +} +sub walkpackages +{ + my ($symref, $recurse, $prefix) = @_; + my $sym; + my $ref; + no strict 'vars'; + local(*glob); + $prefix = '' unless defined $prefix; + while (($sym, $ref) = each %$symref) + { + *glob = $ref; + if ($sym =~ /::$/) + { + $sym = $prefix . $sym; + if ($sym ne "main::" && &$recurse($sym)) + { + walkpackages(\%glob, $recurse, $sym); + } + } + } } - -sub save_unused_subs { - my %search_pack; - map { $search_pack{$_} = 1 } @_; - @unused_sub_packages=@_; - no strict qw(vars refs); - walksymtable(\%{"main::"}, "savecv", sub { - my $package = shift; - $package =~ s/::$//; - return 0 if ($package =~ /::::/); # skip ::::ISA::CACHE etc. - #warn "Considering $package\n";#debug - return 1 if exists $search_pack{$package}; - #sub try for a partial match - if (grep(/^$package\:\:/,@unused_sub_packages)){ - return 1; - } - #warn " (nothing explicit)\n";#debug - # Omit the packages which we use (and which cause grief - # because of fancy "goto &$AUTOLOAD" stuff). - # XXX Surely there must be a nicer way to do this. - if ($package eq "FileHandle" - || $package eq "Config" - || $package eq "SelectSaver") { - return 0; - } - foreach my $u (keys %search_pack) { - if ($package =~ /^${u}::/) { - warn "$package starts with $u\n"; - return 1 - } - if ($package->isa($u)) { - warn "$package isa $u\n"; - return 1 - } - return 1 if $package->isa($u); - } - foreach my $m (qw(new DESTROY TIESCALAR TIEARRAY TIEHASH)) { - if (defined(&{$package."::$m"})) { - warn "$package has method $m: -u$package assumed\n";#debug - push @unused_sub_package, $package; - return 1; - } - } - return 0; - }); +sub save_unused_subs +{ + no strict qw(refs); + &descend_marked_unused; + warn "Prescan\n"; + walkpackages(\%{"main::"}, sub { should_save($_[0]); return 1 }); + warn "Saving methods\n"; + walksymtable(\%{"main::"}, "savecv", \&should_save); } -sub save_main { - warn "Walking tree\n"; - my $curpad_nam = (comppadlist->ARRAY)[0]->save; - my $curpad_sym = (comppadlist->ARRAY)[1]->save; - my $init_av = init_av->save; - my $inc_hv = svref_2object(\%INC)->save; - my $inc_av = svref_2object(\@INC)->save; - walkoptree(main_root, "save"); - warn "done main optree, walking symtable for extras\n" if $debug_cv; - save_unused_subs(@unused_sub_packages); - - $init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}), - sprintf("PL_main_start = s\\_%x;", ${main_start()}), - "PL_curpad = AvARRAY($curpad_sym);", - "PL_initav = $init_av;", +sub save_context +{ + my $curpad_nam = (comppadlist->ARRAY)[0]->save; + my $curpad_sym = (comppadlist->ARRAY)[1]->save; + my $inc_hv = svref_2object(\%INC)->save; + my $inc_av = svref_2object(\@INC)->save; + my $amagic_generate= amagic_generation; + $init->add( "PL_curpad = AvARRAY($curpad_sym);", "GvHV(PL_incgv) = $inc_hv;", "GvAV(PL_incgv) = $inc_av;", "av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc($curpad_nam));", - "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));"); + "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));", + "PL_amagic_generation= $amagic_generate;" ); +} + +sub descend_marked_unused { + foreach my $pack (keys %unused_sub_packages) + { + mark_package($pack); + } +} + +sub save_main { + warn "Starting compile\n"; + warn "Walking tree\n"; + seek(STDOUT,0,0); #exclude print statements in BEGIN{} into output + walkoptree(main_root, "save"); + warn "done main optree, walking symtable for extras\n" if $debug_cv; + save_unused_subs(); + my $init_av = init_av->save; + $init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}), + sprintf("PL_main_start = s\\_%x;", ${main_start()}), + "PL_initav = (AV *) $init_av;"); + save_context(); warn "Writing output\n"; output_boilerplate(); print "\n"; @@ -1168,7 +1432,7 @@ sub save_main { sub init_sections { my @sections = (init => \$init, decl => \$decl, sym => \$symsect, binop => \$binopsect, condop => \$condopsect, - cop => \$copsect, cvop => \$cvopsect, gvop => \$gvopsect, + cop => \$copsect, padop => \$padopsect, listop => \$listopsect, logop => \$logopsect, loop => \$loopsect, op => \$opsect, pmop => \$pmopsect, pvop => \$pvopsect, svop => \$svopsect, unop => \$unopsect, @@ -1177,11 +1441,17 @@ sub init_sections { xpviv => \$xpvivsect, xpvnv => \$xpvnvsect, xpvmg => \$xpvmgsect, xpvlv => \$xpvlvsect, xrv => \$xrvsect, xpvbm => \$xpvbmsect, - xpvio => \$xpviosect, bootstrap => \$bootstrap); + xpvio => \$xpviosect); my ($name, $sectref); while (($name, $sectref) = splice(@sections, 0, 2)) { - $$sectref = new B::Section $name, \%symtable, 0; + $$sectref = new B::C::Section $name, \%symtable, 0; } +} + +sub mark_unused +{ + my ($arg,$val) = @_; + $unused_sub_packages{$arg} = $val; } sub compile { @@ -1226,7 +1496,7 @@ sub compile { $verbose = 1; } elsif ($opt eq "u") { $arg ||= shift @options; - push(@unused_sub_packages, $arg); + mark_unused($arg,undef); } elsif ($opt eq "f") { $arg ||= shift @options; if ($arg eq "cog") { @@ -1241,6 +1511,8 @@ sub compile { # Optimisations for -O1 $pv_copy_on_grow = 1; } + } elsif ($opt eq "l") { + $max_string_len = $arg; } } init_sections(); @@ -1356,6 +1628,15 @@ No copy-on-grow. Optimisation level (n = 0, 1, 2, ...). B<-O> means B<-O1>. Currently, B<-O1> and higher set B<-fcog>. +=item B<-llimit> + +Some C compilers impose an arbitrary limit on the length of string +constants (e.g. 2048 characters for Microsoft Visual C++). The +B<-llimit> options tells the C backend not to generate string literals +exceeding that limit. + +=back + =head1 EXAMPLES perl -MO=C,-ofoo.c foo.pl @@ -1365,7 +1646,7 @@ Note that C lives in the C subdirectory of your perl library directory. The utility called C may also be used to help make use of this compiler. - perl -MO=C,-v,-DcA bar.pl > /dev/null + perl -MO=C,-v,-DcA,-l2048 bar.pl > /dev/null =head1 BUGS diff --git a/contrib/perl5/ext/B/B/CC.pm b/contrib/perl5/ext/B/B/CC.pm index d200d70f1ae2..c5ca2a3df5bb 100644 --- a/contrib/perl5/ext/B/B/CC.pm +++ b/contrib/perl5/ext/B/B/CC.pm @@ -6,36 +6,22 @@ # License or the Artistic License, as specified in the README file. # package B::CC; +use Config; use strict; use B qw(main_start main_root class comppadlist peekop svref_2object - timing_info); -use B::C qw(save_unused_subs objsym init_sections + timing_info init_av sv_undef amagic_generation + OPf_WANT_LIST OPf_WANT OPf_MOD OPf_STACKED OPf_SPECIAL + OPpASSIGN_BACKWARDS OPpLVAL_INTRO OPpDEREF_AV OPpDEREF_HV + OPpDEREF OPpFLIP_LINENUM G_ARRAY G_SCALAR + CXt_NULL CXt_SUB CXt_EVAL CXt_LOOP CXt_SUBST CXt_BLOCK + ); +use B::C qw(save_unused_subs objsym init_sections mark_unused output_all output_boilerplate output_main); use B::Bblock qw(find_leaders); use B::Stackobj qw(:types :flags); # These should probably be elsewhere # Flags for $op->flags -sub OPf_LIST () { 1 } -sub OPf_KNOW () { 2 } -sub OPf_MOD () { 32 } -sub OPf_STACKED () { 64 } -sub OPf_SPECIAL () { 128 } -# op-specific flags for $op->private -sub OPpASSIGN_BACKWARDS () { 64 } -sub OPpLVAL_INTRO () { 128 } -sub OPpDEREF_AV () { 32 } -sub OPpDEREF_HV () { 64 } -sub OPpDEREF () { OPpDEREF_AV|OPpDEREF_HV } -sub OPpFLIP_LINENUM () { 64 } -sub G_ARRAY () { 1 } -# cop.h -sub CXt_NULL () { 0 } -sub CXt_SUB () { 1 } -sub CXt_EVAL () { 2 } -sub CXt_LOOP () { 3 } -sub CXt_SUBST () { 4 } -sub CXt_BLOCK () { 5 } my $module; # module name (when compiled with -m) my %done; # hash keyed by $$op of leaders of basic blocks @@ -66,6 +52,9 @@ my %skip_stack; # Hash of PP names which don't need write_back_stack my %skip_lexicals; # Hash of PP names which don't need write_back_lexicals my %skip_invalidate; # Hash of PP names which don't need invalidate_lexicals my %ignore_op; # Hash of ops which do nothing except returning op_next +my %need_curcop; # Hash of ops which need PL_curcop + +my %lexstate; #state of padsvs at the start of a bblock BEGIN { foreach (qw(pp_scalar pp_regcmaybe pp_lineseq pp_scope pp_null)) { @@ -73,11 +62,6 @@ BEGIN { } } -my @unused_sub_packages; # list of packages (given by -u options) to search - # explicitly and save every sub we find there, even - # if apparently unused (could be only referenced from - # an eval "" or from a $SIG{FOO} = "bar"). - my ($module_name); my ($debug_op, $debug_stack, $debug_cxstack, $debug_pad, $debug_runtime, $debug_shadow, $debug_queue, $debug_lineno, $debug_timings); @@ -111,12 +95,17 @@ sub init_hash { map { $_ => 1 } @_ } # %skip_lexicals = init_hash qw(pp_enter pp_enterloop); %skip_invalidate = init_hash qw(pp_enter pp_enterloop); +%need_curcop = init_hash qw(pp_rv2gv pp_bless pp_repeat pp_sort pp_caller + pp_reset pp_rv2cv pp_entereval pp_require pp_dofile + pp_entertry pp_enterloop pp_enteriter pp_entersub + pp_enter pp_method); sub debug { if ($debug_runtime) { warn(@_); } else { - runtime(map { chomp; "/* $_ */"} @_); + my @tmp=@_; + runtime(map { chomp; "/* $_ */"} @tmp); } } @@ -139,7 +128,7 @@ sub output_runtime { print qq(#include "cc_runtime.h"\n); foreach $ppdata (@pp_list) { my ($name, $runtime, $declare) = @$ppdata; - print "\nstatic\nPP($name)\n{\n"; + print "\nstatic\nCCPP($name)\n{\n"; my ($type, $varlist, $line); while (($type, $varlist) = each %$declare) { print "\t$type ", join(", ", @$varlist), ";\n"; @@ -167,7 +156,7 @@ sub init_pp { declare("SV", "**svp"); map { declare("SV", "*$_") } qw(sv src dst left right); declare("MAGIC", "*mg"); - $decl->add("static OP * $ppname _((ARGSproto));"); + $decl->add("static OP * $ppname (pTHX);"); debug "init_pp: $ppname\n" if $debug_queue; } @@ -200,7 +189,7 @@ sub top_int { @stack ? $stack[-1]->as_int : "TOPi" } sub top_double { @stack ? $stack[-1]->as_double : "TOPn" } sub top_numeric { @stack ? $stack[-1]->as_numeric : "TOPn" } sub top_sv { @stack ? $stack[-1]->as_sv : "TOPs" } -sub top_bool { @stack ? $stack[-1]->as_numeric : "SvTRUE(TOPs)" } +sub top_bool { @stack ? $stack[-1]->as_bool : "SvTRUE(TOPs)" } sub pop_int { @stack ? (pop @stack)->as_int : "POPi" } sub pop_double { @stack ? (pop @stack)->as_double : "POPn" } @@ -208,7 +197,7 @@ sub pop_numeric { @stack ? (pop @stack)->as_numeric : "POPn" } sub pop_sv { @stack ? (pop @stack)->as_sv : "POPs" } sub pop_bool { if (@stack) { - return ((pop @stack)->as_numeric); + return ((pop @stack)->as_bool); } else { # Careful: POPs has an auto-decrement and SvTRUE evaluates # its argument more than once. @@ -228,6 +217,32 @@ sub write_back_lexicals { } } +sub save_or_restore_lexical_state { + my $bblock=shift; + unless( exists $lexstate{$bblock}){ + foreach my $lex (@pad) { + next unless ref($lex); + ${$lexstate{$bblock}}{$lex->{iv}} = $lex->{flags} ; + } + } + else { + foreach my $lex (@pad) { + next unless ref($lex); + my $old_flags=${$lexstate{$bblock}}{$lex->{iv}} ; + next if ( $old_flags eq $lex->{flags}); + if (($old_flags & VALID_SV) && !($lex->{flags} & VALID_SV)){ + $lex->write_back; + } + if (($old_flags & VALID_DOUBLE) && !($lex->{flags} & VALID_DOUBLE)){ + $lex->load_double; + } + if (($old_flags & VALID_INT) && !($lex->{flags} & VALID_INT)){ + $lex->load_int; + } + } + } +} + sub write_back_stack { my $obj; return unless @stack; @@ -350,8 +365,9 @@ sub dopoptoloop { sub dopoptolabel { my $label = shift; my $cxix = $#cxstack; - while ($cxix >= 0 && $cxstack[$cxix]->{type} != CXt_LOOP - && $cxstack[$cxix]->{label} ne $label) { + while ($cxix >= 0 && + ($cxstack[$cxix]->{type} != CXt_LOOP || + $cxstack[$cxix]->{label} ne $label)) { $cxix--; } debug "dopoptolabel: returning $cxix" if $debug_cxstack; @@ -360,7 +376,7 @@ sub dopoptolabel { sub error { my $format = shift; - my $file = $curcop->[0]->filegv->SV->PV; + my $file = $curcop->[0]->file; my $line = $curcop->[0]->line; $errors++; if (@_) { @@ -416,12 +432,22 @@ sub load_pad { } $pad[$ix] = new B::Stackobj::Padsv ($type, $flags, $ix, "i_$name", "d_$name"); - declare("IV", $type == T_INT ? "i_$name = 0" : "i_$name"); - declare("double", $type == T_DOUBLE ? "d_$name = 0" : "d_$name"); + debug sprintf("PL_curpad[$ix] = %s\n", $pad[$ix]->peek) if $debug_pad; } } +sub declare_pad { + my $ix; + for ($ix = 1; $ix <= $#pad; $ix++) { + my $type = $pad[$ix]->{type}; + declare("IV", $type == T_INT ? + sprintf("%s=0",$pad[$ix]->{iv}):$pad[$ix]->{iv}) if $pad[$ix]->save_int; + declare("double", $type == T_DOUBLE ? + sprintf("%s = 0",$pad[$ix]->{nv}):$pad[$ix]->{nv} )if $pad[$ix]->save_double; + + } +} # # Debugging stuff # @@ -461,7 +487,7 @@ sub doop { sub gimme { my $op = shift; my $flags = $op->flags; - return (($flags & OPf_KNOW) ? ($flags & OPf_LIST) : "dowantarray()"); + return (($flags & OPf_WANT) ? (($flags & OPf_WANT)== OPf_WANT_LIST? G_ARRAY:G_SCALAR) : "dowantarray()"); } # @@ -476,10 +502,12 @@ sub pp_null { sub pp_stub { my $op = shift; my $gimme = gimme($op); - if ($gimme != 1) { + if ($gimme != G_ARRAY) { + my $obj= new B::Stackobj::Const(sv_undef); + push(@stack, $obj); # XXX Change to push a constant sv_undef Stackobj onto @stack - write_back_stack(); - runtime("if ($gimme != G_ARRAY) XPUSHs(&PL_sv_undef);"); + #write_back_stack(); + #runtime("if ($gimme != G_ARRAY) XPUSHs(&PL_sv_undef);"); } return $op->next; } @@ -499,8 +527,10 @@ sub pp_and { if (@stack >= 1) { my $bool = pop_bool(); write_back_stack(); - runtime(sprintf("if (!$bool) goto %s;", label($next))); + save_or_restore_lexical_state($$next); + runtime(sprintf("if (!$bool) {XPUSHs(&PL_sv_no); goto %s;}", label($next))); } else { + save_or_restore_lexical_state($$next); runtime(sprintf("if (!%s) goto %s;", top_bool(), label($next)), "*sp--;"); } @@ -513,11 +543,13 @@ sub pp_or { reload_lexicals(); unshift(@bblock_todo, $next); if (@stack >= 1) { - my $obj = pop @stack; + my $bool = pop_bool @stack; write_back_stack(); - runtime(sprintf("if (%s) { XPUSHs(%s); goto %s; }", - $obj->as_numeric, $obj->as_sv, label($next))); + save_or_restore_lexical_state($$next); + runtime(sprintf("if (%s) { XPUSHs(&PL_sv_yes); goto %s; }", + $bool, label($next))); } else { + save_or_restore_lexical_state($$next); runtime(sprintf("if (%s) goto %s;", top_bool(), label($next)), "*sp--;"); } @@ -526,13 +558,14 @@ sub pp_or { sub pp_cond_expr { my $op = shift; - my $false = $op->false; + my $false = $op->next; unshift(@bblock_todo, $false); reload_lexicals(); my $bool = pop_bool(); write_back_stack(); + save_or_restore_lexical_state($$false); runtime(sprintf("if (!$bool) goto %s;", label($false))); - return $op->true; + return $op->other; } sub pp_padsv { @@ -555,9 +588,16 @@ sub pp_padsv { sub pp_const { my $op = shift; my $sv = $op->sv; - my $obj = $constobj{$$sv}; - if (!defined($obj)) { - $obj = $constobj{$$sv} = new B::Stackobj::Const ($sv); + my $obj; + # constant could be in the pad (under useithreads) + if ($$sv) { + $obj = $constobj{$$sv}; + if (!defined($obj)) { + $obj = $constobj{$$sv} = new B::Stackobj::Const ($sv); + } + } + else { + $obj = $pad[$op->targ]; } push(@stack, $obj); return $op->next; @@ -567,7 +607,7 @@ sub pp_nextstate { my $op = shift; $curcop->load($op); @stack = (); - debug(sprintf("%s:%d\n", $op->filegv->SV->PV, $op->line)) if $debug_lineno; + debug(sprintf("%s:%d\n", $op->file, $op->line)) if $debug_lineno; runtime("TAINT_NOT;") unless $omit_taint; runtime("sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;"); if ($freetmps_each_bblock || $freetmps_each_loop) { @@ -584,18 +624,58 @@ sub pp_dbstate { return default_pp($op); } -sub pp_rv2gv { $curcop->write_back; default_pp(@_) } -sub pp_bless { $curcop->write_back; default_pp(@_) } -sub pp_repeat { $curcop->write_back; default_pp(@_) } +#default_pp will handle this: +#sub pp_bless { $curcop->write_back; default_pp(@_) } +#sub pp_repeat { $curcop->write_back; default_pp(@_) } # The following subs need $curcop->write_back if we decide to support arybase: # pp_pos, pp_substr, pp_index, pp_rindex, pp_aslice, pp_lslice, pp_splice -sub pp_sort { $curcop->write_back; default_pp(@_) } -sub pp_caller { $curcop->write_back; default_pp(@_) } -sub pp_reset { $curcop->write_back; default_pp(@_) } +#sub pp_caller { $curcop->write_back; default_pp(@_) } +#sub pp_reset { $curcop->write_back; default_pp(@_) } + +sub pp_rv2gv{ + my $op =shift; + $curcop->write_back; + write_back_lexicals() unless $skip_lexicals{$ppname}; + write_back_stack() unless $skip_stack{$ppname}; + my $sym=doop($op); + if ($op->private & OPpDEREF) { + $init->add(sprintf("((UNOP *)$sym)->op_first = $sym;")); + $init->add(sprintf("((UNOP *)$sym)->op_type = %d;", + $op->first->type)); + } + return $op->next; +} +sub pp_sort { + my $op = shift; + my $ppname = $op->ppaddr; + if ( $op->flags & OPf_SPECIAL && $op->flags & OPf_STACKED){ + #this indicates the sort BLOCK Array case + #ugly surgery required. + my $root=$op->first->sibling->first; + my $start=$root->first; + $op->first->save; + $op->first->sibling->save; + $root->save; + my $sym=$start->save; + my $fakeop=cc_queue("pp_sort".$$op,$root,$start); + $init->add(sprintf("(%s)->op_next=%s;",$sym,$fakeop)); + } + $curcop->write_back; + write_back_lexicals(); + write_back_stack(); + doop($op); + return $op->next; +} sub pp_gv { my $op = shift; - my $gvsym = $op->gv->save; + my $gvsym; + if ($Config{useithreads}) { + $gvsym = $pad[$op->padix]->as_sv; + } + else { + $gvsym = $op->gv->save; + } write_back_stack(); runtime("XPUSHs((SV*)$gvsym);"); return $op->next; @@ -603,7 +683,13 @@ sub pp_gv { sub pp_gvsv { my $op = shift; - my $gvsym = $op->gv->save; + my $gvsym; + if ($Config{useithreads}) { + $gvsym = $pad[$op->padix]->as_sv; + } + else { + $gvsym = $op->gv->save; + } write_back_stack(); if ($op->private & OPpLVAL_INTRO) { runtime("XPUSHs(save_scalar($gvsym));"); @@ -615,7 +701,13 @@ sub pp_gvsv { sub pp_aelemfast { my $op = shift; - my $gvsym = $op->gv->save; + my $gvsym; + if ($Config{useithreads}) { + $gvsym = $pad[$op->padix]->as_sv; + } + else { + $gvsym = $op->gv->save; + } my $ix = $op->private; my $flag = $op->flags & OPf_MOD; write_back_stack(); @@ -666,11 +758,15 @@ sub numeric_binop { } } else { if ($force_int) { + my $rightruntime = new B::Pseudoreg ("IV", "riv"); + runtime(sprintf("$$rightruntime = %s;",$right)); runtime(sprintf("sv_setiv(TOPs, %s);", - &$operator("TOPi", $right))); + &$operator("TOPi", $$rightruntime))); } else { + my $rightruntime = new B::Pseudoreg ("double", "rnv"); + runtime(sprintf("$$rightruntime = %s;",$right)); runtime(sprintf("sv_setnv(TOPs, %s);", - &$operator("TOPn", $right))); + &$operator("TOPn",$$rightruntime))); } } } else { @@ -694,6 +790,60 @@ sub numeric_binop { return $op->next; } +sub pp_ncmp { + my ($op) = @_; + if ($op->flags & OPf_STACKED) { + my $right = pop_numeric(); + if (@stack >= 1) { + my $left = top_numeric(); + runtime sprintf("if (%s > %s){",$left,$right); + $stack[-1]->set_int(1); + $stack[-1]->write_back(); + runtime sprintf("}else if (%s < %s ) {",$left,$right); + $stack[-1]->set_int(-1); + $stack[-1]->write_back(); + runtime sprintf("}else if (%s == %s) {",$left,$right); + $stack[-1]->set_int(0); + $stack[-1]->write_back(); + runtime sprintf("}else {"); + $stack[-1]->set_sv("&PL_sv_undef"); + runtime "}"; + } else { + my $rightruntime = new B::Pseudoreg ("double", "rnv"); + runtime(sprintf("$$rightruntime = %s;",$right)); + runtime sprintf(qq/if ("TOPn" > %s){/,$rightruntime); + runtime sprintf("sv_setiv(TOPs,1);"); + runtime sprintf(qq/}else if ( "TOPn" < %s ) {/,$$rightruntime); + runtime sprintf("sv_setiv(TOPs,-1);"); + runtime sprintf(qq/} else if ("TOPn" == %s) {/,$$rightruntime); + runtime sprintf("sv_setiv(TOPs,0);"); + runtime sprintf(qq/}else {/); + runtime sprintf("sv_setiv(TOPs,&PL_sv_undef;"); + runtime "}"; + } + } else { + my $targ = $pad[$op->targ]; + my $right = new B::Pseudoreg ("double", "rnv"); + my $left = new B::Pseudoreg ("double", "lnv"); + runtime(sprintf("$$right = %s; $$left = %s;", + pop_numeric(), pop_numeric)); + runtime sprintf("if (%s > %s){",$$left,$$right); + $targ->set_int(1); + $targ->write_back(); + runtime sprintf("}else if (%s < %s ) {",$$left,$$right); + $targ->set_int(-1); + $targ->write_back(); + runtime sprintf("}else if (%s == %s) {",$$left,$$right); + $targ->set_int(0); + $targ->write_back(); + runtime sprintf("}else {"); + $targ->set_sv("&PL_sv_undef"); + runtime "}"; + push(@stack, $targ); + } + return $op->next; +} + sub sv_binop { my ($op, $operator, $flags) = @_; if ($op->flags & OPf_STACKED) { @@ -789,7 +939,6 @@ BEGIN { my $modulo_op = infix_op("%"); my $lshift_op = infix_op("<<"); my $rshift_op = infix_op(">>"); - my $ncmp_op = sub { "($_[0] > $_[1] ? 1 : ($_[0] < $_[1]) ? -1 : 0)" }; my $scmp_op = prefix_op("sv_cmp"); my $seq_op = prefix_op("sv_eq"); my $sne_op = prefix_op("!sv_eq"); @@ -808,12 +957,11 @@ BEGIN { # XXX The standard perl PP code has extra handling for # some special case arguments of these operators. # - sub pp_add { numeric_binop($_[0], $plus_op, INTS_CLOSED) } - sub pp_subtract { numeric_binop($_[0], $minus_op, INTS_CLOSED) } - sub pp_multiply { numeric_binop($_[0], $multiply_op, INTS_CLOSED) } + sub pp_add { numeric_binop($_[0], $plus_op) } + sub pp_subtract { numeric_binop($_[0], $minus_op) } + sub pp_multiply { numeric_binop($_[0], $multiply_op) } sub pp_divide { numeric_binop($_[0], $divide_op) } sub pp_modulo { int_binop($_[0], $modulo_op) } # differs from perl's - sub pp_ncmp { numeric_binop($_[0], $ncmp_op, INT_RESULT) } sub pp_left_shift { int_binop($_[0], $lshift_op) } sub pp_right_shift { int_binop($_[0], $rshift_op) } @@ -857,7 +1005,7 @@ sub pp_sassign { ($src, $dst) = ($dst, $src) if $backwards; my $type = $src->{type}; if ($type == T_INT) { - $dst->set_int($src->as_int); + $dst->set_int($src->as_int,$src->{flags} & VALID_UNSIGNED); } elsif ($type == T_DOUBLE) { $dst->set_numeric($src->as_numeric); } else { @@ -870,7 +1018,11 @@ sub pp_sassign { my $type = $src->{type}; runtime("if (PL_tainting && PL_tainted) TAINT_NOT;"); if ($type == T_INT) { - runtime sprintf("sv_setiv(TOPs, %s);", $src->as_int); + if ($src->{flags} & VALID_UNSIGNED){ + runtime sprintf("sv_setuv(TOPs, %s);", $src->as_int); + }else{ + runtime sprintf("sv_setiv(TOPs, %s);", $src->as_int); + } } elsif ($type == T_DOUBLE) { runtime sprintf("sv_setnv(TOPs, %s);", $src->as_double); } else { @@ -887,7 +1039,7 @@ sub pp_sassign { } elsif ($type == T_DOUBLE) { $dst->set_double("SvNV(sv)"); } else { - runtime("SvSetSV($dst->{sv}, sv);"); + runtime("SvSetMagicSV($dst->{sv}, sv);"); $dst->invalidate; } } @@ -922,6 +1074,7 @@ sub pp_preinc { return $op->next; } + sub pp_pushmark { my $op = shift; write_back_stack(); @@ -933,7 +1086,7 @@ sub pp_list { my $op = shift; write_back_stack(); my $gimme = gimme($op); - if ($gimme == 1) { # sic + if ($gimme == G_ARRAY) { # sic runtime("POPMARK;"); # need this even though not a "full" pp_list } else { runtime("PP_LIST($gimme);"); @@ -943,16 +1096,31 @@ sub pp_list { sub pp_entersub { my $op = shift; + $curcop->write_back; write_back_lexicals(REGISTER|TEMPORARY); write_back_stack(); my $sym = doop($op); runtime("while (PL_op != ($sym)->op_next && PL_op != (OP*)0 ){"); - runtime("PL_op = (*PL_op->op_ppaddr)(ARGS);"); + runtime("PL_op = (*PL_op->op_ppaddr)(aTHX);"); runtime("SPAGAIN;}"); $know_op = 0; invalidate_lexicals(REGISTER|TEMPORARY); return $op->next; } +sub pp_formline { + my $op = shift; + my $ppname = $op->ppaddr; + write_back_lexicals() unless $skip_lexicals{$ppname}; + write_back_stack() unless $skip_stack{$ppname}; + my $sym=doop($op); + # See comment in pp_grepwhile to see why! + $init->add("((LISTOP*)$sym)->op_first = $sym;"); + runtime("if (PL_op == ((LISTOP*)($sym))->op_first){"); + save_or_restore_lexical_state(${$op->first}); + runtime( sprintf("goto %s;",label($op->first))); + runtime("}"); + return $op->next; +} sub pp_goto{ @@ -969,7 +1137,16 @@ sub pp_enterwrite { my $op = shift; pp_entersub($op); } - +sub pp_leavesub{ + my $op = shift; + write_back_lexicals() unless $skip_lexicals{$ppname}; + write_back_stack() unless $skip_stack{$ppname}; + runtime("if (PL_curstackinfo->si_type == PERLSI_SORT){"); + runtime("\tPUTBACK;return 0;"); + runtime("}"); + doop($op); + return $op->next; +} sub pp_leavewrite { my $op = shift; write_back_lexicals(REGISTER|TEMPORARY); @@ -977,7 +1154,7 @@ sub pp_leavewrite { my $sym = doop($op); # XXX Is this the right way to distinguish between it returning # CvSTART(cv) (via doform) and pop_return()? - runtime("if (PL_op) PL_op = (*PL_op->op_ppaddr)(ARGS);"); + #runtime("if (PL_op) PL_op = (*PL_op->op_ppaddr)(aTHX);"); runtime("SPAGAIN;"); $know_op = 0; invalidate_lexicals(REGISTER|TEMPORARY); @@ -991,6 +1168,7 @@ sub doeval { write_back_stack(); my $sym = loadop($op); my $ppaddr = $op->ppaddr; + #runtime(qq/printf("$ppaddr type eval\n");/); runtime("PP_EVAL($ppaddr, ($sym)->op_next);"); $know_op = 1; invalidate_lexicals(REGISTER|TEMPORARY); @@ -998,9 +1176,24 @@ sub doeval { } sub pp_entereval { doeval(@_) } -sub pp_require { doeval(@_) } sub pp_dofile { doeval(@_) } +#pp_require is protected by pp_entertry, so no protection for it. +sub pp_require { + my $op = shift; + $curcop->write_back; + write_back_lexicals(REGISTER|TEMPORARY); + write_back_stack(); + my $sym = doop($op); + runtime("while (PL_op != ($sym)->op_next && PL_op != (OP*)0 ){"); + runtime("PL_op = (*PL_op->op_ppaddr)(ARGS);"); + runtime("SPAGAIN;}"); + $know_op = 1; + invalidate_lexicals(REGISTER|TEMPORARY); + return $op->next; +} + + sub pp_entertry { my $op = shift; $curcop->write_back; @@ -1008,12 +1201,19 @@ sub pp_entertry { write_back_stack(); my $sym = doop($op); my $jmpbuf = sprintf("jmpbuf%d", $jmpbuf_ix++); - declare("Sigjmp_buf", $jmpbuf); + declare("JMPENV", $jmpbuf); runtime(sprintf("PP_ENTERTRY(%s,%s);", $jmpbuf, label($op->other->next))); invalidate_lexicals(REGISTER|TEMPORARY); return $op->next; } +sub pp_leavetry{ + my $op=shift; + default_pp($op); + runtime("PP_LEAVETRY;"); + return $op->next; +} + sub pp_grepstart { my $op = shift; if ($need_freetmps && $freetmps_each_loop) { @@ -1021,7 +1221,14 @@ sub pp_grepstart { $need_freetmps = 0; } write_back_stack(); - doop($op); + my $sym= doop($op); + my $next=$op->next; + $next->save; + my $nexttonext=$next->next; + $nexttonext->save; + save_or_restore_lexical_state($$nexttonext); + runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;", + label($nexttonext))); return $op->next->other; } @@ -1032,7 +1239,16 @@ sub pp_mapstart { $need_freetmps = 0; } write_back_stack(); - doop($op); + # pp_mapstart can return either op_next->op_next or op_next->op_other and + # we need to be able to distinguish the two at runtime. + my $sym= doop($op); + my $next=$op->next; + $next->save; + my $nexttonext=$next->next; + $nexttonext->save; + save_or_restore_lexical_state($$nexttonext); + runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;", + label($nexttonext))); return $op->next->other; } @@ -1049,6 +1265,7 @@ sub pp_grepwhile { # around that, we hack op_next to be our own op (purely because we # know it's a non-NULL pointer and can't be the same as op_other). $init->add("((LOGOP*)$sym)->op_next = $sym;"); + save_or_restore_lexical_state($$next); runtime(sprintf("if (PL_op == ($sym)->op_next) goto %s;", label($next))); $know_op = 0; return $op->other; @@ -1063,7 +1280,7 @@ sub pp_return { write_back_lexicals(REGISTER|TEMPORARY); write_back_stack(); doop($op); - runtime("PUTBACK;", "return (PL_op)?PL_op->op_next:0;"); + runtime("PUTBACK;", "return PL_op;"); $know_op = 0; return $op->next; } @@ -1077,30 +1294,31 @@ sub nyi { sub pp_range { my $op = shift; my $flags = $op->flags; - if (!($flags & OPf_KNOW)) { + if (!($flags & OPf_WANT)) { error("context of range unknown at compile-time"); } write_back_lexicals(); write_back_stack(); - if (!($flags & OPf_LIST)) { + unless (($flags & OPf_WANT)== OPf_WANT_LIST) { # We need to save our UNOP structure since pp_flop uses # it to find and adjust out targ. We don't need it ourselves. $op->save; + save_or_restore_lexical_state(${$op->other}); runtime sprintf("if (SvTRUE(PL_curpad[%d])) goto %s;", - $op->targ, label($op->false)); - unshift(@bblock_todo, $op->false); + $op->targ, label($op->other)); + unshift(@bblock_todo, $op->other); } - return $op->true; + return $op->next; } sub pp_flip { my $op = shift; my $flags = $op->flags; - if (!($flags & OPf_KNOW)) { + if (!($flags & OPf_WANT)) { error("context of flip unknown at compile-time"); } - if ($flags & OPf_LIST) { - return $op->first->false; + if (($flags & OPf_WANT)==OPf_WANT_LIST) { + return $op->first->other; } write_back_lexicals(); write_back_stack(); @@ -1116,9 +1334,10 @@ sub pp_flip { if ($op->flags & OPf_SPECIAL) { runtime("sv_setiv(PL_curpad[$ix], 1);"); } else { + save_or_restore_lexical_state(${$op->first->other}); runtime("\tsv_setiv(PL_curpad[$ix], 0);", "\tsp--;", - sprintf("\tgoto %s;", label($op->first->false))); + sprintf("\tgoto %s;", label($op->first->other))); } runtime("}", qq{sv_setpv(PL_curpad[$ix], "");}, @@ -1187,6 +1406,7 @@ sub pp_next { default_pp($op); my $nextop = $cxstack[$cxix]->{nextop}; push(@bblock_todo, $nextop); + save_or_restore_lexical_state($$nextop); runtime(sprintf("goto %s;", label($nextop))); return $op->next; } @@ -1210,6 +1430,7 @@ sub pp_redo { default_pp($op); my $redoop = $cxstack[$cxix]->{redoop}; push(@bblock_todo, $redoop); + save_or_restore_lexical_state($$redoop); runtime(sprintf("goto %s;", label($redoop))); return $op->next; } @@ -1238,6 +1459,7 @@ sub pp_last { default_pp($op); my $lastop = $cxstack[$cxix]->{lastop}->next; push(@bblock_todo, $lastop); + save_or_restore_lexical_state($$lastop); runtime(sprintf("goto %s;", label($lastop))); return $op->next; } @@ -1249,6 +1471,7 @@ sub pp_subst { my $sym = doop($op); my $replroot = $op->pmreplroot; if ($$replroot) { + save_or_restore_lexical_state($$replroot); runtime sprintf("if (PL_op == ((PMOP*)(%s))->op_pmreplroot) goto %s;", $sym, label($replroot)); $op->pmreplstart->save; @@ -1264,11 +1487,12 @@ sub pp_substcont { write_back_stack(); doop($op); my $pmop = $op->other; - warn sprintf("substcont: op = %s, pmop = %s\n", - peekop($op), peekop($pmop));#debug -# my $pmopsym = objsym($pmop); + # warn sprintf("substcont: op = %s, pmop = %s\n", + # peekop($op), peekop($pmop));#debug +# my $pmopsym = objsym($pmop); my $pmopsym = $pmop->save; # XXX can this recurse? - warn "pmopsym = $pmopsym\n";#debug +# warn "pmopsym = $pmopsym\n";#debug + save_or_restore_lexical_state(${$pmop->pmreplstart}); runtime sprintf("if (PL_op == ((PMOP*)(%s))->op_pmreplstart) goto %s;", $pmopsym, label($pmop->pmreplstart)); invalidate_lexicals(); @@ -1277,7 +1501,10 @@ sub pp_substcont { sub default_pp { my $op = shift; - my $ppname = $op->ppaddr; + my $ppname = "pp_" . $op->name; + if ($curcop and $need_curcop{$ppname}){ + $curcop->write_back; + } write_back_lexicals() unless $skip_lexicals{$ppname}; write_back_stack() unless $skip_stack{$ppname}; doop($op); @@ -1291,7 +1518,7 @@ sub default_pp { sub compile_op { my $op = shift; - my $ppname = $op->ppaddr; + my $ppname = "pp_" . $op->name; if (exists $ignore_op{$ppname}) { return $op->next; } @@ -1313,6 +1540,7 @@ sub compile_op { sub compile_bblock { my $op = shift; #warn "compile_bblock: ", peekop($op), "\n"; # debug + save_or_restore_lexical_state($$op); write_label($op); $know_op = 0; do { @@ -1326,15 +1554,26 @@ sub compile_bblock { sub cc { my ($name, $root, $start, @padlist) = @_; my $op; + if($done{$$start}){ + #warn "repeat=>".ref($start)."$name,\n";#debug + $decl->add(sprintf("#define $name %s",$done{$$start})); + return; + } init_pp($name); load_pad(@padlist); + %lexstate=(); B::Pseudoreg->new_scope; @cxstack = (); if ($debug_timings) { warn sprintf("Basic block analysis at %s\n", timing_info); } $leaders = find_leaders($root, $start); - @bblock_todo = ($start, values %$leaders); + my @leaders= keys %$leaders; + if ($#leaders > -1) { + @bblock_todo = ($start, values %$leaders) ; + } else{ + runtime("return PL_op?PL_op->op_next:0;"); + } if ($debug_timings) { warn sprintf("Compilation at %s\n", timing_info); } @@ -1344,7 +1583,7 @@ sub cc { next if !defined($op) || !$$op || $done{$$op}; #warn "...compiling it\n"; # debug do { - $done{$$op} = 1; + $done{$$op} = $name; $op = compile_bblock($op); if ($need_freetmps && $freetmps_each_bblock) { runtime("FREETMPS;"); @@ -1356,14 +1595,16 @@ sub cc { $need_freetmps = 0; } if (!$$op) { - runtime("PUTBACK;","return (PL_op)?PL_op->op_next:0;"); + runtime("PUTBACK;","return PL_op;"); } elsif ($done{$$op}) { + save_or_restore_lexical_state($$op); runtime(sprintf("goto %s;", label($op))); } } if ($debug_timings) { warn sprintf("Saving runtime at %s\n", timing_info); } + declare_pad(@padlist) ; save_runtime(); } @@ -1387,20 +1628,32 @@ sub cc_obj { sub cc_main { my @comppadlist = comppadlist->ARRAY; - my $curpad_nam = $comppadlist[0]->save; - my $curpad_sym = $comppadlist[1]->save; + my $curpad_nam = $comppadlist[0]->save; + my $curpad_sym = $comppadlist[1]->save; + my $init_av = init_av->save; my $start = cc_recurse("pp_main", main_root, main_start, @comppadlist); - save_unused_subs(@unused_sub_packages); + # Do save_unused_subs before saving inc_hv + save_unused_subs(); cc_recurse(); + my $inc_hv = svref_2object(\%INC)->save; + my $inc_av = svref_2object(\@INC)->save; + my $amagic_generate= amagic_generation; return if $errors; if (!defined($module)) { $init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}), "PL_main_start = $start;", "PL_curpad = AvARRAY($curpad_sym);", + "PL_initav = (AV *) $init_av;", + "GvHV(PL_incgv) = $inc_hv;", + "GvAV(PL_incgv) = $inc_av;", "av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc($curpad_nam));", - "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));"); + "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));", + "PL_amagic_generation= $amagic_generate;", + ); + } + seek(STDOUT,0,0); #prevent print statements from BEGIN{} into the output output_boilerplate(); print "\n"; output_all("perl_init"); @@ -1419,11 +1672,11 @@ XS(boot_$cmodule) perl_init(); ENTER; SAVETMPS; - SAVESPTR(PL_curpad); - SAVESPTR(PL_op); + SAVEVPTR(PL_curpad); + SAVEVPTR(PL_op); PL_curpad = AvARRAY($curpad_sym); PL_op = $start; - pp_main(ARGS); + pp_main(aTHX); FREETMPS; LEAVE; ST(0) = &PL_sv_yes; @@ -1459,7 +1712,7 @@ sub compile { $module_name = $arg; } elsif ($opt eq "u") { $arg ||= shift @options; - push(@unused_sub_packages, $arg); + mark_unused($arg,undef); } elsif ($opt eq "f") { $arg ||= shift @options; my $value = $arg !~ s/^no-//; @@ -1485,7 +1738,7 @@ sub compile { } elsif ($opt eq "m") { $arg ||= shift @options; $module = $arg; - push(@unused_sub_packages, $arg); + mark_unused($arg,undef); } elsif ($opt eq "p") { $arg ||= shift @options; $patchlevel = $arg; diff --git a/contrib/perl5/ext/B/B/Debug.pm b/contrib/perl5/ext/B/B/Debug.pm index 7754a5a8079e..ae7a9733bcdd 100644 --- a/contrib/perl5/ext/B/B/Debug.pm +++ b/contrib/perl5/ext/B/B/Debug.pm @@ -39,13 +39,6 @@ sub B::LOGOP::debug { printf "\top_other\t0x%x\n", ${$op->other}; } -sub B::CONDOP::debug { - my ($op) = @_; - $op->B::UNOP::debug(); - printf "\top_true\t0x%x\n", ${$op->true}; - printf "\top_false\t0x%x\n", ${$op->false}; -} - sub B::LISTOP::debug { my ($op) = @_; $op->B::BINOP::debug(); @@ -67,16 +60,15 @@ sub B::PMOP::debug { sub B::COP::debug { my ($op) = @_; $op->B::OP::debug(); - my ($filegv) = $op->filegv; - printf <<'EOT', $op->label, ${$op->stash}, $$filegv, $op->seq, $op->arybase, $op->line; + printf <<'EOT', $op->label, $op->stashpv, $op->file, $op->seq, $op->arybase, $op->line, ${$op->warnings}; cop_label %s - cop_stash 0x%x - cop_filegv 0x%x + cop_stashpv %s + cop_file %s cop_seq %d cop_arybase %d cop_line %d + cop_warnings 0x%x EOT - $filegv->debug; } sub B::SVOP::debug { @@ -92,11 +84,10 @@ sub B::PVOP::debug { printf "\top_pv\t\t0x%x\n", $op->pv; } -sub B::GVOP::debug { +sub B::PADOP::debug { my ($op) = @_; $op->B::OP::debug(); - printf "\top_gv\t\t0x%x\n", ${$op->gv}; - $op->gv->debug; + printf "\top_padix\t\t%ld\n", $op->padix; } sub B::CVOP::debug { @@ -184,14 +175,14 @@ sub B::CV::debug { my ($start) = $sv->START; my ($root) = $sv->ROOT; my ($padlist) = $sv->PADLIST; + my ($file) = $sv->FILE; my ($gv) = $sv->GV; - my ($filegv) = $sv->FILEGV; - printf <<'EOT', $$stash, $$start, $$root, $$gv, $$filegv, $sv->DEPTH, $padlist, ${$sv->OUTSIDE}; + printf <<'EOT', $$stash, $$start, $$root, $$gv, $file, $sv->DEPTH, $padlist, ${$sv->OUTSIDE}; STASH 0x%x START 0x%x ROOT 0x%x GV 0x%x - FILEGV 0x%x + FILE %s DEPTH %d PADLIST 0x%x OUTSIDE 0x%x @@ -199,7 +190,6 @@ EOT $start->debug if $start; $root->debug if $root; $gv->debug if $gv; - $filegv->debug if $filegv; $padlist->debug if $padlist; } @@ -226,7 +216,7 @@ sub B::GV::debug { my ($av) = $gv->AV; my ($cv) = $gv->CV; $gv->B::SV::debug; - printf <<'EOT', $gv->NAME, $gv->STASH->NAME, $gv->STASH, $$sv, $gv->GvREFCNT, $gv->FORM, $$av, ${$gv->HV}, ${$gv->EGV}, $$cv, $gv->CVGEN, $gv->LINE, $gv->FILEGV, $gv->GvFLAGS; + printf <<'EOT', $gv->NAME, $gv->STASH->NAME, $gv->STASH, $$sv, $gv->GvREFCNT, $gv->FORM, $$av, ${$gv->HV}, ${$gv->EGV}, $$cv, $gv->CVGEN, $gv->LINE, $gv->FILE, $gv->GvFLAGS; NAME %s STASH %s (0x%x) SV 0x%x @@ -238,7 +228,7 @@ sub B::GV::debug { CV 0x%x CVGEN %d LINE %d - FILEGV 0x%x + FILE %s GvFLAGS 0x%x EOT $sv->debug if $sv; @@ -253,6 +243,7 @@ sub B::SPECIAL::debug { sub compile { my $order = shift; + B::clearsym(); if ($order eq "exec") { return sub { walkoptree_exec(main_start, "debug") } } else { diff --git a/contrib/perl5/ext/B/B/Deparse.pm b/contrib/perl5/ext/B/B/Deparse.pm index 5e0bd1d3de7d..cd53c112d8c2 100644 --- a/contrib/perl5/ext/B/B/Deparse.pm +++ b/contrib/perl5/ext/B/B/Deparse.pm @@ -1,5 +1,5 @@ # B::Deparse.pm -# Copyright (c) 1998 Stephen McCamant. All rights reserved. +# Copyright (c) 1998, 1999 Stephen McCamant. All rights reserved. # This module is free software; you can redistribute and/or modify # it under the same terms as Perl itself. @@ -7,9 +7,17 @@ # but essentially none of his code remains. package B::Deparse; -use Carp 'cluck'; -use B qw(class main_root main_start main_cv svref_2object); -$VERSION = 0.56; +use Carp 'cluck', 'croak'; +use Config; +use B qw(class main_root main_start main_cv svref_2object opnumber + OPf_WANT OPf_WANT_VOID OPf_WANT_SCALAR OPf_WANT_LIST + OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL + OPpLVAL_INTRO OPpENTERSUB_AMPER OPpSLICE OPpCONST_BARE + OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY + SVf_IOK SVf_NOK SVf_ROK SVf_POK + PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE + PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED); +$VERSION = 0.59; use strict; # Changes between 0.50 and 0.51: @@ -26,17 +34,17 @@ use strict; # Changes between 0.51 and 0.52: # - added pp_threadsv (special variables under USE_THREADS) # - added documentation -# Changes between 0.52 and 0.53 +# Changes between 0.52 and 0.53: # - many changes adding precedence contexts and associativity # - added `-p' and `-s' output style options # - various other minor fixes -# Changes between 0.53 and 0.54 +# Changes between 0.53 and 0.54: # - added support for new `for (1..100)' optimization, # thanks to Gisle Aas -# Changes between 0.54 and 0.55 +# Changes between 0.54 and 0.55: # - added support for new qr// construct # - added support for new pp_regcreset OP -# Changes between 0.55 and 0.56 +# Changes between 0.55 and 0.56: # - tested on base/*.t, cmd/*.t, comp/*.t, io/*.t # - fixed $# on non-lexicals broken in last big rewrite # - added temporary fix for change in opcode of OP_STRINGIFY @@ -50,17 +58,51 @@ use strict; # - print doubled rv2gv (a bug) as `*{*GV}' instead of illegal `**GV' # - added semicolons at the ends of blocks # - added -l `#line' declaration option -- fixes cmd/subval.t 27,28 +# Changes between 0.56 and 0.561: +# - fixed multiply-declared my var in pp_truncate (thanks to Sarathy) +# - used new B.pm symbolic constants (done by Nick Ing-Simmons) +# Changes between 0.561 and 0.57: +# - stylistic changes to symbolic constant stuff +# - handled scope in s///e replacement code +# - added unquote option for expanding "" into concats, etc. +# - split method and proto parts of pp_entersub into separate functions +# - various minor cleanups +# Changes after 0.57: +# - added parens in \&foo (patch by Albert Dvornik) +# Changes between 0.57 and 0.58: +# - fixed `0' statements that weren't being printed +# - added methods for use from other programs +# (based on patches from James Duncan and Hugo van der Sanden) +# - added -si and -sT to control indenting (also based on a patch from Hugo) +# - added -sv to print something else instead of '???' +# - preliminary version of utf8 tr/// handling +# Changes after 0.58: +# - uses of $op->ppaddr changed to new $op->name (done by Sarathy) +# - added support for Hugo's new OP_SETSTATE (like nextstate) +# Changes between 0.58 and 0.59 +# - added support for Chip's OP_METHOD_NAMED +# - added support for Ilya's OPpTARGET_MY optimization +# - elided arrows before `()' subscripts when possible # Todo: +# - finish tr/// changes +# - add option for even more parens (generalize \&foo change) # - {} around variables in strings ("${var}letters") # base/lex.t 25-27 # comp/term.t 11 -# - generate symbolic constants directly from core source # - left/right context +# - recognize `use utf8', `use integer', etc +# - treat top-level block specially for incremental output +# - interpret in high bit chars in string as utf8 \x{...} (when?) +# - copy comments (look at real text with $^P?) # - avoid semis in one-statement blocks # - associativity of &&=, ||=, ?: # - ',' => '=>' (auto-unquote?) # - break long lines ("\r" as discretionary break?) +# - configurable syntax highlighting: ANSI color, HTML, TeX, etc. +# - more style options: brace style, hex vs. octal, quotes, ... +# - print big ints as hex/octal instead of decimal (heuristic?) +# - handle `my $x if 0'? # - include values of variables (e.g. set in BEGIN) # - coordinate with Data::Dumper (both directions? see previous) # - version using op_next instead of op_first/sibling? @@ -103,7 +145,11 @@ use strict; # # parens: -p # linenums: -l +# unquote: -q # cuddle: ` ' or `\n', depending on -sC +# indent_size: -si +# use_tabs: -sT +# ex_const: -sv # A little explanation of how precedence contexts and associativity # work: @@ -182,13 +228,10 @@ sub next_todo { return "format $name =\n" . $self->deparse_format($ent->[1]->FORM). "\n"; } else { - return "sub $name " . - $self->deparse_sub($ent->[1]->CV); + return "sub $name " . $self->deparse_sub($ent->[1]->CV); } } -sub OPf_KIDS () { 4 } - sub walk_tree { my($op, $sub) = @_; $sub->($op); @@ -208,19 +251,20 @@ sub walk_sub { return if !$op or null $op; walk_tree($op, sub { my $op = shift; - if ($op->ppaddr eq "pp_gv") { - if ($op->next->ppaddr eq "pp_entersub") { - next if $self->{'subs_done'}{$ {$op->gv}}++; - next if class($op->gv->CV) eq "SPECIAL"; - $self->todo($op->gv, $op->gv->CV, 0); - $self->walk_sub($op->gv->CV); - } elsif ($op->next->ppaddr eq "pp_enterwrite" - or ($op->next->ppaddr eq "pp_rv2gv" - and $op->next->next->ppaddr eq "pp_enterwrite")) { - next if $self->{'forms_done'}{$ {$op->gv}}++; - next if class($op->gv->FORM) eq "SPECIAL"; - $self->todo($op->gv, $op->gv->FORM, 1); - $self->walk_sub($op->gv->FORM); + if ($op->name eq "gv") { + my $gv = $self->maybe_padgv($op); + if ($op->next->name eq "entersub") { + next if $self->{'subs_done'}{$$gv}++; + next if class($gv->CV) eq "SPECIAL"; + $self->todo($gv, $gv->CV, 0); + $self->walk_sub($gv->CV); + } elsif ($op->next->name eq "enterwrite" + or ($op->next->name eq "rv2gv" + and $op->next->next->name eq "enterwrite")) { + next if $self->{'forms_done'}{$$gv}++; + next if class($gv->FORM) eq "SPECIAL"; + $self->todo($gv, $gv->FORM, 1); + $self->walk_sub($gv->FORM); } } }); @@ -279,37 +323,57 @@ sub style_opts { while (length($opt = substr($opts, 0, 1))) { if ($opt eq "C") { $self->{'cuddle'} = " "; + $opts = substr($opts, 1); + } elsif ($opt eq "i") { + $opts =~ s/^i(\d+)//; + $self->{'indent_size'} = $1; + } elsif ($opt eq "T") { + $self->{'use_tabs'} = 1; + $opts = substr($opts, 1); + } elsif ($opt eq "v") { + $opts =~ s/^v([^.]*)(.|$)//; + $self->{'ex_const'} = $1; } - $opts = substr($opts, 1); } } +sub new { + my $class = shift; + my $self = bless {}, $class; + $self->{'subs_todo'} = []; + $self->{'curstash'} = "main"; + $self->{'cuddle'} = "\n"; + $self->{'indent_size'} = 4; + $self->{'use_tabs'} = 0; + $self->{'ex_const'} = "'???'"; + while (my $arg = shift @_) { + if (substr($arg, 0, 2) eq "-u") { + $self->stash_subs(substr($arg, 2)); + } elsif ($arg eq "-p") { + $self->{'parens'} = 1; + } elsif ($arg eq "-l") { + $self->{'linenums'} = 1; + } elsif ($arg eq "-q") { + $self->{'unquote'} = 1; + } elsif (substr($arg, 0, 2) eq "-s") { + $self->style_opts(substr $arg, 2); + } + } + return $self; +} + sub compile { my(@args) = @_; return sub { - my $self = bless {}; - my $arg; - $self->{'subs_todo'} = []; + my $self = B::Deparse->new(@args); $self->stash_subs("main"); $self->{'curcv'} = main_cv; - $self->{'curstash'} = "main"; - $self->{'cuddle'} = "\n"; - while ($arg = shift @args) { - if (substr($arg, 0, 2) eq "-u") { - $self->stash_subs(substr($arg, 2)); - } elsif ($arg eq "-p") { - $self->{'parens'} = 1; - } elsif ($arg eq "-l") { - $self->{'linenums'} = 1; - } elsif (substr($arg, 0, 2) eq "-s") { - $self->style_opts(substr $arg, 2); - } - } $self->walk_sub(main_cv, main_start); print $self->print_protos; @{$self->{'subs_todo'}} = - sort {$a->[0] <=> $b->[0]} @{$self->{'subs_todo'}}; - print indent($self->deparse(main_root, 0)), "\n" unless null main_root; + sort {$a->[0] <=> $b->[0]} @{$self->{'subs_todo'}}; + print $self->indent($self->deparse(main_root, 0)), "\n" + unless null main_root; my @text; while (scalar(@{$self->{'subs_todo'}})) { push @text, $self->next_todo; @@ -318,25 +382,38 @@ sub compile { } } +sub coderef2text { + my $self = shift; + my $sub = shift; + croak "Usage: ->coderef2text(CODEREF)" unless ref($sub) eq "CODE"; + return $self->indent($self->deparse_sub(svref_2object($sub))); +} + sub deparse { my $self = shift; my($op, $cx) = @_; # cluck if class($op) eq "NULL"; - my $meth = $op->ppaddr; +# return $self->$ {\("pp_" . $op->name)}($op, $cx); + my $meth = "pp_" . $op->name; return $self->$meth($op, $cx); } sub indent { + my $self = shift; my $txt = shift; my @lines = split(/\n/, $txt); my $leader = ""; + my $level = 0; my $line; for $line (@lines) { - if (substr($line, 0, 1) eq "\t") { - $leader = $leader . " "; - $line = substr($line, 1); - } elsif (substr($line, 0, 1) eq "\b") { - $leader = substr($leader, 0, length($leader) - 4); + my $cmd = substr($line, 0, 1); + if ($cmd eq "\t" or $cmd eq "\b") { + $level += ($cmd eq "\t" ? 1 : -1) * $self->{'indent_size'}; + if ($self->{'use_tabs'}) { + $leader = "\t" x ($level / 8) . " " x ($level % 8); + } else { + $leader = " " x $level; + } $line = substr($line, 1); } if (substr($line, 0, 1) eq "\f") { @@ -349,8 +426,6 @@ sub indent { return join("\n", @lines); } -sub SVf_POK () {0x40000} - sub deparse_sub { my $self = shift; my $cv = shift; @@ -382,7 +457,7 @@ sub deparse_format { $op = $op->sibling; # skip nextstate my @exprs; $kid = $op->first->sibling; # skip pushmark - push @text, $kid->sv->PV; + push @text, $self->const_sv($kid)->PV; $kid = $kid->sibling; for (; not null $kid; $kid = $kid->sibling) { push @exprs, $self->deparse($kid, 0); @@ -393,47 +468,38 @@ sub deparse_format { return join("", @text) . "."; } -# the aassign in-common check messes up SvCUR (always setting it -# to a value >= 100), but it's probably safe to assume there -# won't be any NULs in the names of my() variables. (with -# stash variables, I wouldn't be so sure) -sub padname_fix { - my $str = shift; - $str = substr($str, 0, index($str, "\0")) if index($str, "\0") != -1; - return $str; -} - sub is_scope { my $op = shift; - return $op->ppaddr eq "pp_leave" || $op->ppaddr eq "pp_scope" - || $op->ppaddr eq "pp_lineseq" - || ($op->ppaddr eq "pp_null" && class($op) eq "UNOP" - && (is_scope($op->first) || $op->first->ppaddr eq "pp_enter")); + return $op->name eq "leave" || $op->name eq "scope" + || $op->name eq "lineseq" + || ($op->name eq "null" && class($op) eq "UNOP" + && (is_scope($op->first) || $op->first->name eq "enter")); } sub is_state { - my $name = $_[0]->ppaddr; - return $name eq "pp_nextstate" || $name eq "pp_dbstate"; + my $name = $_[0]->name; + return $name eq "nextstate" || $name eq "dbstate" || $name eq "setstate"; } sub is_miniwhile { # check for one-line loop (`foo() while $y--') my $op = shift; return (!null($op) and null($op->sibling) - and $op->ppaddr eq "pp_null" and class($op) eq "UNOP" - and (($op->first->ppaddr =~ /^pp_(and|or)$/ - and $op->first->first->sibling->ppaddr eq "pp_lineseq") - or ($op->first->ppaddr eq "pp_lineseq" + and $op->name eq "null" and class($op) eq "UNOP" + and (($op->first->name =~ /^(and|or)$/ + and $op->first->first->sibling->name eq "lineseq") + or ($op->first->name eq "lineseq" and not null $op->first->first->sibling - and $op->first->first->sibling->ppaddr eq "pp_unstack") + and $op->first->first->sibling->name eq "unstack") )); } sub is_scalar { my $op = shift; - return ($op->ppaddr eq "pp_rv2sv" or - $op->ppaddr eq "pp_padsv" or - $op->ppaddr eq "pp_gv" or # only in array/hash constructs - !null($op->first) && $op->first->ppaddr eq "pp_gvsv"); + return ($op->name eq "rv2sv" or + $op->name eq "padsv" or + $op->name eq "gv" or # only in array/hash constructs + $op->flags & OPf_KIDS && !null($op->first) + && $op->first->name eq "gvsv"); } sub maybe_parens { @@ -483,18 +549,28 @@ sub maybe_parens_func { } } -sub OPp_LVAL_INTRO () { 128 } - sub maybe_local { my $self = shift; my($op, $cx, $text) = @_; - if ($op->private & OPp_LVAL_INTRO and not $self->{'avoid_local'}{$$op}) { + if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{$$op}) { return $self->maybe_parens_func("local", $text, $cx, 16); } else { return $text; } } +sub maybe_targmy { + my $self = shift; + my($op, $cx, $func, @args) = @_; + if ($op->private & OPpTARGET_MY) { + my $var = $self->padname($op->targ); + my $val = $func->($self, $op, 7, @args); + return $self->maybe_parens("$var = $val", $cx, 7); + } else { + return $func->($self, $op, $cx, @args); + } +} + sub padname_sv { my $self = shift; my $targ = shift; @@ -504,7 +580,7 @@ sub padname_sv { sub maybe_my { my $self = shift; my($op, $cx, $text) = @_; - if ($op->private & OPp_LVAL_INTRO and not $self->{'avoid_local'}{$$op}) { + if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{$$op}) { return $self->maybe_parens_func("my", $text, $cx, 16); } else { return $text; @@ -606,10 +682,10 @@ sub pp_leave { $kid = $op->first->sibling; # skip enter if (is_miniwhile($kid)) { my $top = $kid->first; - my $name = $top->ppaddr; - if ($name eq "pp_and") { + my $name = $top->name; + if ($name eq "and") { $name = "while"; - } elsif ($name eq "pp_or") { + } elsif ($name eq "or") { $name = "until"; } else { # no conditional -> while 1 or until 0 return $self->deparse($top->first, 1) . " while 1"; @@ -628,7 +704,7 @@ sub pp_leave { last if null $kid; } $expr .= $self->deparse($kid, 0); - push @exprs, $expr if $expr; + push @exprs, $expr if length $expr; } if ($cx > 0) { # inside an expression return "do { " . join(";\n", @exprs) . " }"; @@ -650,7 +726,7 @@ sub pp_scope { last if null $kid; } $expr .= $self->deparse($kid, 0); - push @exprs, $expr if $expr; + push @exprs, $expr if length $expr; } if ($cx > 0) { # inside an expression, (a do {} while for lineseq) return "do { " . join(";\n", @exprs) . " }"; @@ -696,19 +772,20 @@ sub pp_nextstate { and $seq > $self->{'subs_todo'}[0][0]) { push @text, $self->next_todo; } - my $stash = $op->stash->NAME; + my $stash = $op->stashpv; if ($stash ne $self->{'curstash'}) { push @text, "package $stash;\n"; $self->{'curstash'} = $stash; } if ($self->{'linenums'}) { push @text, "\f#line " . $op->line . - ' "' . substr($op->filegv->NAME, 2), qq'"\n'; + ' "' . $op->file, qq'"\n'; } return join("", @text); } sub pp_dbstate { pp_nextstate(@_) } +sub pp_setstate { pp_nextstate(@_) } sub pp_unstack { return "" } # see also leaveloop @@ -721,9 +798,9 @@ sub baseop { sub pp_stub { baseop(@_, "()") } sub pp_wantarray { baseop(@_, "wantarray") } sub pp_fork { baseop(@_, "fork") } -sub pp_wait { baseop(@_, "wait") } -sub pp_getppid { baseop(@_, "getppid") } -sub pp_time { baseop(@_, "time") } +sub pp_wait { maybe_targmy(@_, \&baseop, "wait") } +sub pp_getppid { maybe_targmy(@_, \&baseop, "getppid") } +sub pp_time { maybe_targmy(@_, \&baseop, "time") } sub pp_tms { baseop(@_, "times") } sub pp_ghostent { baseop(@_, "gethostent") } sub pp_gnetent { baseop(@_, "getnetent") } @@ -757,18 +834,19 @@ sub pfixop { sub pp_preinc { pfixop(@_, "++", 23) } sub pp_predec { pfixop(@_, "--", 23) } -sub pp_postinc { pfixop(@_, "++", 23, POSTFIX) } -sub pp_postdec { pfixop(@_, "--", 23, POSTFIX) } +sub pp_postinc { maybe_targmy(@_, \&pfixop, "++", 23, POSTFIX) } +sub pp_postdec { maybe_targmy(@_, \&pfixop, "--", 23, POSTFIX) } sub pp_i_preinc { pfixop(@_, "++", 23) } sub pp_i_predec { pfixop(@_, "--", 23) } -sub pp_i_postinc { pfixop(@_, "++", 23, POSTFIX) } -sub pp_i_postdec { pfixop(@_, "--", 23, POSTFIX) } -sub pp_complement { pfixop(@_, "~", 21) } +sub pp_i_postinc { maybe_targmy(@_, \&pfixop, "++", 23, POSTFIX) } +sub pp_i_postdec { maybe_targmy(@_, \&pfixop, "--", 23, POSTFIX) } +sub pp_complement { maybe_targmy(@_. \&pfixop, "~", 21) } -sub pp_negate { +sub pp_negate { maybe_targmy(@_, \&real_negate) } +sub real_negate { my $self = shift; my($op, $cx) = @_; - if ($op->first->ppaddr =~ /^pp_(i_)?negate$/) { + if ($op->first->name =~ /^(i_)?negate$/) { # avoid --$x $self->pfixop($op, $cx, "-", 21.5); } else { @@ -787,11 +865,9 @@ sub pp_not { } } -sub OPf_SPECIAL () { 128 } - sub unop { my $self = shift; - my($op, $cx, $name, $prec, $flags) = (@_, 0, 0); + my($op, $cx, $name) = @_; my $kid; if ($op->flags & OPf_KIDS) { $kid = $op->first; @@ -801,36 +877,31 @@ sub unop { } } -sub pp_chop { unop(@_, "chop") } -sub pp_chomp { unop(@_, "chomp") } -sub pp_schop { unop(@_, "chop") } -sub pp_schomp { unop(@_, "chomp") } +sub pp_chop { maybe_targmy(@_, \&unop, "chop") } +sub pp_chomp { maybe_targmy(@_, \&unop, "chomp") } +sub pp_schop { maybe_targmy(@_, \&unop, "chop") } +sub pp_schomp { maybe_targmy(@_, \&unop, "chomp") } sub pp_defined { unop(@_, "defined") } sub pp_undef { unop(@_, "undef") } sub pp_study { unop(@_, "study") } sub pp_ref { unop(@_, "ref") } sub pp_pos { maybe_local(@_, unop(@_, "pos")) } -sub pp_sin { unop(@_, "sin") } -sub pp_cos { unop(@_, "cos") } -sub pp_rand { unop(@_, "rand") } +sub pp_sin { maybe_targmy(@_, \&unop, "sin") } +sub pp_cos { maybe_targmy(@_, \&unop, "cos") } +sub pp_rand { maybe_targmy(@_, \&unop, "rand") } sub pp_srand { unop(@_, "srand") } -sub pp_exp { unop(@_, "exp") } -sub pp_log { unop(@_, "log") } -sub pp_sqrt { unop(@_, "sqrt") } -sub pp_int { unop(@_, "int") } -sub pp_hex { unop(@_, "hex") } -sub pp_oct { unop(@_, "oct") } -sub pp_abs { unop(@_, "abs") } +sub pp_exp { maybe_targmy(@_, \&unop, "exp") } +sub pp_log { maybe_targmy(@_, \&unop, "log") } +sub pp_sqrt { maybe_targmy(@_, \&unop, "sqrt") } +sub pp_int { maybe_targmy(@_, \&unop, "int") } +sub pp_hex { maybe_targmy(@_, \&unop, "hex") } +sub pp_oct { maybe_targmy(@_, \&unop, "oct") } +sub pp_abs { maybe_targmy(@_, \&unop, "abs") } -sub pp_length { unop(@_, "length") } -sub pp_ord { unop(@_, "ord") } -sub pp_chr { unop(@_, "chr") } -sub pp_ucfirst { unop(@_, "ucfirst") } -sub pp_lcfirst { unop(@_, "lcfirst") } -sub pp_uc { unop(@_, "uc") } -sub pp_lc { unop(@_, "lc") } -sub pp_quotemeta { unop(@_, "quotemeta") } +sub pp_length { maybe_targmy(@_, \&unop, "length") } +sub pp_ord { maybe_targmy(@_, \&unop, "ord") } +sub pp_chr { maybe_targmy(@_, \&unop, "chr") } sub pp_each { unop(@_, "each") } sub pp_values { unop(@_, "values") } @@ -856,19 +927,19 @@ sub pp_tell { unop(@_, "tell") } sub pp_getsockname { unop(@_, "getsockname") } sub pp_getpeername { unop(@_, "getpeername") } -sub pp_chdir { unop(@_, "chdir") } -sub pp_chroot { unop(@_, "chroot") } +sub pp_chdir { maybe_targmy(@_, \&unop, "chdir") } +sub pp_chroot { maybe_targmy(@_, \&unop, "chroot") } sub pp_readlink { unop(@_, "readlink") } -sub pp_rmdir { unop(@_, "rmdir") } +sub pp_rmdir { maybe_targmy(@_, \&unop, "rmdir") } sub pp_readdir { unop(@_, "readdir") } sub pp_telldir { unop(@_, "telldir") } sub pp_rewinddir { unop(@_, "rewinddir") } sub pp_closedir { unop(@_, "closedir") } -sub pp_getpgrp { unop(@_, "getpgrp") } +sub pp_getpgrp { maybe_targmy(@_, \&unop, "getpgrp") } sub pp_localtime { unop(@_, "localtime") } sub pp_gmtime { unop(@_, "gmtime") } sub pp_alarm { unop(@_, "alarm") } -sub pp_sleep { unop(@_, "sleep") } +sub pp_sleep { maybe_targmy(@_, \&unop, "sleep") } sub pp_dofile { unop(@_, "do") } sub pp_entereval { unop(@_, "eval") } @@ -894,8 +965,6 @@ sub pp_exists { $cx, 16); } -sub OPpSLICE () { 64 } - sub pp_delete { my $self = shift; my($op, $cx) = @_; @@ -911,15 +980,13 @@ sub pp_delete { } } -sub OPp_CONST_BARE () { 64 } - sub pp_require { my $self = shift; my($op, $cx) = @_; - if (class($op) eq "UNOP" and $op->first->ppaddr eq "pp_const" - and $op->first->private & OPp_CONST_BARE) + if (class($op) eq "UNOP" and $op->first->name eq "const" + and $op->first->private & OPpCONST_BARE) { - my $name = $op->first->sv->PV; + my $name = $self->const_sv($op->first)->PV; $name =~ s[/][::]g; $name =~ s/\.pm//g; return "require($name)"; @@ -943,20 +1010,19 @@ sub pp_scalar { sub padval { my $self = shift; my $targ = shift; + #cluck "curcv was undef" unless $self->{curcv}; return (($self->{'curcv'}->PADLIST->ARRAY)[1]->ARRAY)[$targ]; } -sub OPf_REF () { 16 } - sub pp_refgen { my $self = shift; my($op, $cx) = @_; my $kid = $op->first; - if ($kid->ppaddr eq "pp_null") { + if ($kid->name eq "null") { $kid = $kid->first; - if ($kid->ppaddr eq "pp_anonlist" || $kid->ppaddr eq "pp_anonhash") { - my($pre, $post) = @{{"pp_anonlist" => ["[","]"], - "pp_anonhash" => ["{","}"]}->{$kid->ppaddr}}; + if ($kid->name eq "anonlist" || $kid->name eq "anonhash") { + my($pre, $post) = @{{"anonlist" => ["[","]"], + "anonhash" => ["{","}"]}->{$kid->name}}; my($expr, @exprs); $kid = $kid->first->sibling; # skip pushmark for (; !null($kid); $kid = $kid->sibling) { @@ -965,16 +1031,25 @@ sub pp_refgen { } return $pre . join(", ", @exprs) . $post; } elsif (!null($kid->sibling) and - $kid->sibling->ppaddr eq "pp_anoncode") { + $kid->sibling->name eq "anoncode") { return "sub " . $self->deparse_sub($self->padval($kid->sibling->targ)); - } elsif ($kid->ppaddr eq "pp_pushmark" - and $kid->sibling->ppaddr =~ /^pp_(pad|rv2)[ah]v$/ - and not $kid->sibling->flags & OPf_REF) { - # The @a in \(@a) isn't in ref context, but only when the - # parens are there. - return "\\(" . $self->deparse($kid->sibling, 1) . ")"; - } + } elsif ($kid->name eq "pushmark") { + my $sib_name = $kid->sibling->name; + if ($sib_name =~ /^(pad|rv2)[ah]v$/ + and not $kid->sibling->flags & OPf_REF) + { + # The @a in \(@a) isn't in ref context, but only when the + # parens are there. + return "\\(" . $self->deparse($kid->sibling, 1) . ")"; + } elsif ($sib_name eq 'entersub') { + my $text = $self->deparse($kid->sibling, 1); + # Always show parens for \(&func()), but only with -p otherwise + $text = "($text)" if $self->{'parens'} + or $kid->sibling->private & OPpENTERSUB_AMPER; + return "\\$text"; + } + } } $self->pfixop($op, $cx, "\\", 20); } @@ -985,13 +1060,31 @@ sub pp_readline { my $self = shift; my($op, $cx) = @_; my $kid = $op->first; - $kid = $kid->first if $kid->ppaddr eq "pp_rv2gv"; # <$fh> - if ($kid->ppaddr eq "pp_rv2gv") { - $kid = $kid->first; - } + $kid = $kid->first if $kid->name eq "rv2gv"; # <$fh> return "<" . $self->deparse($kid, 1) . ">"; } +# Unary operators that can occur as pseudo-listops inside double quotes +sub dq_unop { + my $self = shift; + my($op, $cx, $name, $prec, $flags) = (@_, 0, 0); + my $kid; + if ($op->flags & OPf_KIDS) { + $kid = $op->first; + # If there's more than one kid, the first is an ex-pushmark. + $kid = $kid->sibling if not null $kid->sibling; + return $self->maybe_parens_unop($name, $kid, $cx); + } else { + return $name . ($op->flags & OPf_SPECIAL ? "()" : ""); + } +} + +sub pp_ucfirst { dq_unop(@_, "ucfirst") } +sub pp_lcfirst { dq_unop(@_, "lcfirst") } +sub pp_uc { dq_unop(@_, "uc") } +sub pp_lc { dq_unop(@_, "lc") } +sub pp_quotemeta { maybe_targmy(@_, \&dq_unop, "quotemeta") } + sub loopex { my $self = shift; my ($op, $cx, $name) = @_; @@ -1019,7 +1112,7 @@ sub ftst { # Genuine `-X' filetests are exempt from the LLAFR, but not # l?stat(); for the sake of clarity, give'em all parens return $self->maybe_parens_unop($name, $op->first, $cx); - } elsif (class($op) eq "GVOP") { + } elsif (class($op) eq "SVOP") { return $self->maybe_parens_func($name, $self->pp_gv($op, 1), $cx, 16); } else { # I don't think baseop filetests ever survive ck_ftst, but... return $name; @@ -1059,19 +1152,17 @@ sub pp_ftbinary { ftst(@_, "-B") } sub SWAP_CHILDREN () { 1 } sub ASSIGN () { 2 } # has OP= variant -sub OPf_STACKED () { 64 } - my(%left, %right); sub assoc_class { my $op = shift; - my $name = $op->ppaddr; - if ($name eq "pp_concat" and $op->first->ppaddr eq "pp_concat") { + my $name = $op->name; + if ($name eq "concat" and $op->first->name eq "concat") { # avoid spurious `=' -- see comment in pp_concat - return "pp_concat"; + return "concat"; } - if ($name eq "pp_null" and class($op) eq "UNOP" - and $op->first->ppaddr =~ /^pp_(and|x?or)$/ + if ($name eq "null" and class($op) eq "UNOP" + and $op->first->name =~ /^(and|x?or)$/ and null $op->first->sibling) { # Like all conditional constructs, OP_ANDs and OP_ORs are topped @@ -1088,25 +1179,25 @@ sub assoc_class { # $a + $b + $c is equivalent to ($a + $b) + $c BEGIN { - %left = ('pp_multiply' => 19, 'pp_i_multiply' => 19, - 'pp_divide' => 19, 'pp_i_divide' => 19, - 'pp_modulo' => 19, 'pp_i_modulo' => 19, - 'pp_repeat' => 19, - 'pp_add' => 18, 'pp_i_add' => 18, - 'pp_subtract' => 18, 'pp_i_subtract' => 18, - 'pp_concat' => 18, - 'pp_left_shift' => 17, 'pp_right_shift' => 17, - 'pp_bit_and' => 13, - 'pp_bit_or' => 12, 'pp_bit_xor' => 12, - 'pp_and' => 3, - 'pp_or' => 2, 'pp_xor' => 2, + %left = ('multiply' => 19, 'i_multiply' => 19, + 'divide' => 19, 'i_divide' => 19, + 'modulo' => 19, 'i_modulo' => 19, + 'repeat' => 19, + 'add' => 18, 'i_add' => 18, + 'subtract' => 18, 'i_subtract' => 18, + 'concat' => 18, + 'left_shift' => 17, 'right_shift' => 17, + 'bit_and' => 13, + 'bit_or' => 12, 'bit_xor' => 12, + 'and' => 3, + 'or' => 2, 'xor' => 2, ); } sub deparse_binop_left { my $self = shift; my($op, $left, $prec) = @_; - if ($left{assoc_class($op)} + if ($left{assoc_class($op)} && $left{assoc_class($left)} and $left{assoc_class($op)} == $left{assoc_class($left)}) { return $self->deparse($left, $prec - .00001); @@ -1119,27 +1210,27 @@ sub deparse_binop_left { # $a = $b = $c is equivalent to $a = ($b = $c) BEGIN { - %right = ('pp_pow' => 22, - 'pp_sassign=' => 7, 'pp_aassign=' => 7, - 'pp_multiply=' => 7, 'pp_i_multiply=' => 7, - 'pp_divide=' => 7, 'pp_i_divide=' => 7, - 'pp_modulo=' => 7, 'pp_i_modulo=' => 7, - 'pp_repeat=' => 7, - 'pp_add=' => 7, 'pp_i_add=' => 7, - 'pp_subtract=' => 7, 'pp_i_subtract=' => 7, - 'pp_concat=' => 7, - 'pp_left_shift=' => 7, 'pp_right_shift=' => 7, - 'pp_bit_and=' => 7, - 'pp_bit_or=' => 7, 'pp_bit_xor=' => 7, - 'pp_andassign' => 7, - 'pp_orassign' => 7, + %right = ('pow' => 22, + 'sassign=' => 7, 'aassign=' => 7, + 'multiply=' => 7, 'i_multiply=' => 7, + 'divide=' => 7, 'i_divide=' => 7, + 'modulo=' => 7, 'i_modulo=' => 7, + 'repeat=' => 7, + 'add=' => 7, 'i_add=' => 7, + 'subtract=' => 7, 'i_subtract=' => 7, + 'concat=' => 7, + 'left_shift=' => 7, 'right_shift=' => 7, + 'bit_and=' => 7, + 'bit_or=' => 7, 'bit_xor=' => 7, + 'andassign' => 7, + 'orassign' => 7, ); } sub deparse_binop_right { my $self = shift; my($op, $right, $prec) = @_; - if ($right{assoc_class($op)} + if ($right{assoc_class($op)} && $right{assoc_class($right)} and $right{assoc_class($op)} == $right{assoc_class($right)}) { return $self->deparse($right, $prec - .00001); @@ -1166,23 +1257,23 @@ sub binop { return $self->maybe_parens("$left $opname$eq $right", $cx, $prec); } -sub pp_add { binop(@_, "+", 18, ASSIGN) } -sub pp_multiply { binop(@_, "*", 19, ASSIGN) } -sub pp_subtract { binop(@_, "-",18, ASSIGN) } -sub pp_divide { binop(@_, "/", 19, ASSIGN) } -sub pp_modulo { binop(@_, "%", 19, ASSIGN) } -sub pp_i_add { binop(@_, "+", 18, ASSIGN) } -sub pp_i_multiply { binop(@_, "*", 19, ASSIGN) } -sub pp_i_subtract { binop(@_, "-", 18, ASSIGN) } -sub pp_i_divide { binop(@_, "/", 19, ASSIGN) } -sub pp_i_modulo { binop(@_, "%", 19, ASSIGN) } -sub pp_pow { binop(@_, "**", 22, ASSIGN) } +sub pp_add { maybe_targmy(@_, \&binop, "+", 18, ASSIGN) } +sub pp_multiply { maybe_targmy(@_, \&binop, "*", 19, ASSIGN) } +sub pp_subtract { maybe_targmy(@_, \&binop, "-",18, ASSIGN) } +sub pp_divide { maybe_targmy(@_, \&binop, "/", 19, ASSIGN) } +sub pp_modulo { maybe_targmy(@_, \&binop, "%", 19, ASSIGN) } +sub pp_i_add { maybe_targmy(@_, \&binop, "+", 18, ASSIGN) } +sub pp_i_multiply { maybe_targmy(@_, \&binop, "*", 19, ASSIGN) } +sub pp_i_subtract { maybe_targmy(@_, \&binop, "-", 18, ASSIGN) } +sub pp_i_divide { maybe_targmy(@_, \&binop, "/", 19, ASSIGN) } +sub pp_i_modulo { maybe_targmy(@_, \&binop, "%", 19, ASSIGN) } +sub pp_pow { maybe_targmy(@_, \&binop, "**", 22, ASSIGN) } -sub pp_left_shift { binop(@_, "<<", 17, ASSIGN) } -sub pp_right_shift { binop(@_, ">>", 17, ASSIGN) } -sub pp_bit_and { binop(@_, "&", 13, ASSIGN) } -sub pp_bit_or { binop(@_, "|", 12, ASSIGN) } -sub pp_bit_xor { binop(@_, "^", 12, ASSIGN) } +sub pp_left_shift { maybe_targmy(@_, \&binop, "<<", 17, ASSIGN) } +sub pp_right_shift { maybe_targmy(@_, \&binop, ">>", 17, ASSIGN) } +sub pp_bit_and { maybe_targmy(@_, \&binop, "&", 13, ASSIGN) } +sub pp_bit_or { maybe_targmy(@_, \&binop, "|", 12, ASSIGN) } +sub pp_bit_xor { maybe_targmy(@_, \&binop, "^", 12, ASSIGN) } sub pp_eq { binop(@_, "==", 14) } sub pp_ne { binop(@_, "!=", 14) } @@ -1213,14 +1304,15 @@ sub pp_aassign { binop(@_, "=", 7, SWAP_CHILDREN) } # `.' is special because concats-of-concats are optimized to save copying # by making all but the first concat stacked. The effect is as if the # programmer had written `($a . $b) .= $c', except legal. -sub pp_concat { +sub pp_concat { maybe_targmy(@_, \&real_concat) } +sub real_concat { my $self = shift; my($op, $cx) = @_; my $left = $op->first; my $right = $op->last; my $eq = ""; my $prec = 18; - if ($op->flags & OPf_STACKED and $op->first->ppaddr ne "pp_concat") { + if ($op->flags & OPf_STACKED and $op->first->name ne "concat") { $eq = "="; $prec = 7; } @@ -1301,7 +1393,10 @@ sub logop { } sub pp_and { logop(@_, "and", 3, "&&", 11, "if") } -sub pp_or { logop(@_, "or", 2, "||", 10, "unless") } +sub pp_or { logop(@_, "or", 2, "||", 10, "unless") } + +# xor is syntactically a logop, but it's really a binop (contrary to +# old versions of opcode.pl). Syntax is what matters here. sub pp_xor { logop(@_, "xor", 2, "", 0, "") } sub logassignop { @@ -1339,20 +1434,20 @@ sub listop { } sub pp_bless { listop(@_, "bless") } -sub pp_atan2 { listop(@_, "atan2") } +sub pp_atan2 { maybe_targmy(@_, \&listop, "atan2") } sub pp_substr { maybe_local(@_, listop(@_, "substr")) } sub pp_vec { maybe_local(@_, listop(@_, "vec")) } -sub pp_index { listop(@_, "index") } -sub pp_rindex { listop(@_, "rindex") } -sub pp_sprintf { listop(@_, "sprintf") } +sub pp_index { maybe_targmy(@_, \&listop, "index") } +sub pp_rindex { maybe_targmy(@_, \&listop, "rindex") } +sub pp_sprintf { maybe_targmy(@_, \&listop, "sprintf") } sub pp_formline { listop(@_, "formline") } # see also deparse_format -sub pp_crypt { listop(@_, "crypt") } +sub pp_crypt { maybe_targmy(@_, \&listop, "crypt") } sub pp_unpack { listop(@_, "unpack") } sub pp_pack { listop(@_, "pack") } -sub pp_join { listop(@_, "join") } +sub pp_join { maybe_targmy(@_, \&listop, "join") } sub pp_splice { listop(@_, "splice") } -sub pp_push { listop(@_, "push") } -sub pp_unshift { listop(@_, "unshift") } +sub pp_push { maybe_targmy(@_, \&listop, "push") } +sub pp_unshift { maybe_targmy(@_, \&listop, "unshift") } sub pp_reverse { listop(@_, "reverse") } sub pp_warn { listop(@_, "warn") } sub pp_die { listop(@_, "die") } @@ -1375,7 +1470,7 @@ sub pp_recv { listop(@_, "recv") } sub pp_seek { listop(@_, "seek") } sub pp_fcntl { listop(@_, "fcntl") } sub pp_ioctl { listop(@_, "ioctl") } -sub pp_flock { listop(@_, "flock") } +sub pp_flock { maybe_targmy(@_, \&listop, "flock") } sub pp_socket { listop(@_, "socket") } sub pp_sockpair { listop(@_, "sockpair") } sub pp_bind { listop(@_, "bind") } @@ -1385,23 +1480,23 @@ sub pp_accept { listop(@_, "accept") } sub pp_shutdown { listop(@_, "shutdown") } sub pp_gsockopt { listop(@_, "getsockopt") } sub pp_ssockopt { listop(@_, "setsockopt") } -sub pp_chown { listop(@_, "chown") } -sub pp_unlink { listop(@_, "unlink") } -sub pp_chmod { listop(@_, "chmod") } -sub pp_utime { listop(@_, "utime") } -sub pp_rename { listop(@_, "rename") } -sub pp_link { listop(@_, "link") } -sub pp_symlink { listop(@_, "symlink") } -sub pp_mkdir { listop(@_, "mkdir") } +sub pp_chown { maybe_targmy(@_, \&listop, "chown") } +sub pp_unlink { maybe_targmy(@_, \&listop, "unlink") } +sub pp_chmod { maybe_targmy(@_, \&listop, "chmod") } +sub pp_utime { maybe_targmy(@_, \&listop, "utime") } +sub pp_rename { maybe_targmy(@_, \&listop, "rename") } +sub pp_link { maybe_targmy(@_, \&listop, "link") } +sub pp_symlink { maybe_targmy(@_, \&listop, "symlink") } +sub pp_mkdir { maybe_targmy(@_, \&listop, "mkdir") } sub pp_open_dir { listop(@_, "opendir") } sub pp_seekdir { listop(@_, "seekdir") } -sub pp_waitpid { listop(@_, "waitpid") } -sub pp_system { listop(@_, "system") } -sub pp_exec { listop(@_, "exec") } -sub pp_kill { listop(@_, "kill") } -sub pp_setpgrp { listop(@_, "setpgrp") } -sub pp_getpriority { listop(@_, "getpriority") } -sub pp_setpriority { listop(@_, "setpriority") } +sub pp_waitpid { maybe_targmy(@_, \&listop, "waitpid") } +sub pp_system { maybe_targmy(@_, \&listop, "system") } +sub pp_exec { maybe_targmy(@_, \&listop, "exec") } +sub pp_kill { maybe_targmy(@_, \&listop, "kill") } +sub pp_setpgrp { maybe_targmy(@_, \&listop, "setpgrp") } +sub pp_getpriority { maybe_targmy(@_, \&listop, "getpriority") } +sub pp_setpriority { maybe_targmy(@_, \&listop, "setpriority") } sub pp_shmget { listop(@_, "shmget") } sub pp_shmctl { listop(@_, "shmctl") } sub pp_shmread { listop(@_, "shmread") } @@ -1442,10 +1537,10 @@ sub pp_truncate { my(@exprs); my $parens = ($cx >= 5) || $self->{'parens'}; my $kid = $op->first->sibling; - my($fh, $len); + my $fh; if ($op->flags & OPf_SPECIAL) { # $kid is an OP_CONST - $fh = $kid->sv->PV; + $fh = $self->const_sv($kid)->PV; } else { $fh = $self->deparse($kid, 6); $fh = "+$fh" if not $parens and substr($fh, 0, 1) eq "("; @@ -1456,7 +1551,6 @@ sub pp_truncate { } else { return "truncate $fh, $len"; } - } sub indirop { @@ -1480,8 +1574,7 @@ sub indirop { $expr = $self->deparse($kid, 6); push @exprs, $expr; } - return $self->maybe_parens_func($name, - $indir . join(", ", @exprs), + return $self->maybe_parens_func($name, $indir . join(", ", @exprs), $cx, 5); } @@ -1497,7 +1590,7 @@ sub mapop { $kid = $kid->first->sibling; # skip a pushmark my $code = $kid->first; # skip a null if (is_scope $code) { - $code = "{" . $self->deparse($code, 1) . "} "; + $code = "{" . $self->deparse($code, 0) . "} "; } else { $code = $self->deparse($code, 24) . ", "; } @@ -1523,15 +1616,15 @@ sub pp_list { # This assumes that no other private flags equal 128, and that # OPs that store things other than flags in their op_private, # like OP_AELEMFAST, won't be immediate children of a list. - unless ($lop->private & OPp_LVAL_INTRO or $lop->ppaddr eq "pp_undef") + unless ($lop->private & OPpLVAL_INTRO or $lop->name eq "undef") { $local = ""; # or not last; } - if ($lop->ppaddr =~ /^pp_pad[ash]v$/) { # my() + if ($lop->name =~ /^pad[ash]v$/) { # my() ($local = "", last) if $local eq "local"; $local = "my"; - } elsif ($lop->ppaddr ne "pp_undef") { # local() + } elsif ($lop->name ne "undef") { # local() ($local = "", last) if $local eq "my"; $local = "local"; } @@ -1540,7 +1633,7 @@ sub pp_list { return $self->deparse($kid, $cx) if null $kid->sibling and not $local; for (; !null($kid); $kid = $kid->sibling) { if ($local) { - if (class($kid) eq "UNOP" and $kid->first->ppaddr eq "pp_gvsv") { + if (class($kid) eq "UNOP" and $kid->first->name eq "gvsv") { $lop = $kid->first; } else { $lop = $kid; @@ -1575,10 +1668,10 @@ sub pp_cond_expr { } $cond = $self->deparse($cond, 1); $true = $self->deparse($true, 0); - if ($false->ppaddr eq "pp_lineseq") { # braces w/o scope => elsif + if ($false->name eq "lineseq") { # braces w/o scope => elsif my $head = "if ($cond) {\n\t$true\n\b}"; my @elsifs; - while (!null($false) and $false->ppaddr eq "pp_lineseq") { + while (!null($false) and $false->name eq "lineseq") { my $newop = $false->first->sibling->first; my $newcond = $newop->first; my $newtrue = $newcond->sibling; @@ -1607,13 +1700,13 @@ sub pp_leaveloop { local($self->{'curstash'}) = $self->{'curstash'}; my $head = ""; my $bare = 0; - if ($kid->ppaddr eq "pp_lineseq") { # bare or infinite loop + if ($kid->name eq "lineseq") { # bare or infinite loop if (is_state $kid->last) { # infinite $head = "for (;;) "; # shorter than while (1) } else { $bare = 1; } - } elsif ($enter->ppaddr eq "pp_enteriter") { # foreach + } elsif ($enter->name eq "enteriter") { # foreach my $ary = $enter->first->sibling; # first was pushmark my $var = $ary->sibling; if ($enter->flags & OPf_STACKED @@ -1638,20 +1731,20 @@ sub pp_leaveloop { $var = "my " . $var; } } - } elsif ($var->ppaddr eq "pp_rv2gv") { + } elsif ($var->name eq "rv2gv") { $var = $self->pp_rv2sv($var, 1); - } elsif ($var->ppaddr eq "pp_gv") { + } elsif ($var->name eq "gv") { $var = "\$" . $self->deparse($var, 1); } $head = "foreach $var ($ary) "; $kid = $kid->first->first->sibling; # skip OP_AND and OP_ITER - } elsif ($kid->ppaddr eq "pp_null") { # while/until + } elsif ($kid->name eq "null") { # while/until $kid = $kid->first; - my $name = {"pp_and" => "while", "pp_or" => "until"} - ->{$kid->ppaddr}; + my $name = {"and" => "while", "or" => "until"} + ->{$kid->name}; $head = "$name (" . $self->deparse($kid->first, 1) . ") "; $kid = $kid->first->sibling; - } elsif ($kid->ppaddr eq "pp_stub") { # bare and empty + } elsif ($kid->name eq "stub") { # bare and empty return "{;}"; # {} could be a hashref } # The third-to-last kid is the continue block if the pointer used @@ -1663,15 +1756,14 @@ sub pp_leaveloop { # (because it's a nulled out nextstate in a scope), in which # case the head's next is advanced past the null but the nextop's # isn't, so we need to try nextop->next. - my($cont, $precont); + my $precont; + my $cont = $kid->first; if ($bare) { - $cont = $kid->first; while (!null($cont->sibling)) { $precont = $cont; $cont = $cont->sibling; } } else { - $cont = $kid->first; while (!null($cont->sibling->sibling->sibling)) { $precont = $cont; $cont = $cont->sibling; @@ -1708,30 +1800,29 @@ sub pp_leavetry { return "eval {\n\t" . $self->pp_leave(@_) . "\n\b}"; } -sub OP_CONST () { 5 } - -# XXX need a better way to do this -sub OP_STRINGIFY () { $] > 5.004_72 ? 67 : 65 } +BEGIN { eval "sub OP_CONST () {" . opnumber("const") . "}" } +BEGIN { eval "sub OP_STRINGIFY () {" . opnumber("stringify") . "}" } sub pp_null { my $self = shift; my($op, $cx) = @_; if (class($op) eq "OP") { - return "'???'" if $op->targ == OP_CONST; # old value is lost - } elsif ($op->first->ppaddr eq "pp_pushmark") { + # old value is lost + return $self->{'ex_const'} if $op->targ == OP_CONST; + } elsif ($op->first->name eq "pushmark") { return $self->pp_list($op, $cx); - } elsif ($op->first->ppaddr eq "pp_enter") { + } elsif ($op->first->name eq "enter") { return $self->pp_leave($op, $cx); } elsif ($op->targ == OP_STRINGIFY) { return $self->dquote($op); } elsif (!null($op->first->sibling) and - $op->first->sibling->ppaddr eq "pp_readline" and + $op->first->sibling->name eq "readline" and $op->first->sibling->flags & OPf_STACKED) { return $self->maybe_parens($self->deparse($op->first, 7) . " = " . $self->deparse($op->first->sibling, 7), $cx, 7); } elsif (!null($op->first->sibling) and - $op->first->sibling->ppaddr eq "pp_trans" and + $op->first->sibling->name eq "trans" and $op->first->sibling->flags & OPf_STACKED) { return $self->maybe_parens($self->deparse($op->first, 20) . " =~ " . $self->deparse($op->first->sibling, 20), @@ -1741,6 +1832,16 @@ sub pp_null { } } +# the aassign in-common check messes up SvCUR (always setting it +# to a value >= 100), but it's probably safe to assume there +# won't be any NULs in the names of my() variables. (with +# stash variables, I wouldn't be so sure) +sub padname_fix { + my $str = shift; + $str = substr($str, 0, index($str, "\0")) if index($str, "\0") != -1; + return $str; +} + sub padname { my $self = shift; my $targ = shift; @@ -1778,22 +1879,37 @@ sub pp_threadsv { return $self->maybe_local($op, $cx, "\$" . $threadsv_names[$op->targ]); } +sub maybe_padgv { + my $self = shift; + my $op = shift; + my $gv; + if ($Config{useithreads}) { + $gv = $self->padval($op->padix); + } + else { + $gv = $op->gv; + } + return $gv; +} + sub pp_gvsv { my $self = shift; my($op, $cx) = @_; - return $self->maybe_local($op, $cx, "\$" . $self->gv_name($op->gv)); + my $gv = $self->maybe_padgv($op); + return $self->maybe_local($op, $cx, "\$" . $self->gv_name($gv)); } sub pp_gv { my $self = shift; my($op, $cx) = @_; - return $self->gv_name($op->gv); + my $gv = $self->maybe_padgv($op); + return $self->gv_name($gv); } sub pp_aelemfast { my $self = shift; my($op, $cx) = @_; - my $gv = $op->gv; + my $gv = $self->maybe_padgv($op); return "\$" . $self->gv_name($gv) . "[" . $op->private . "]"; } @@ -1813,7 +1929,7 @@ sub pp_rv2gv { maybe_local(@_, rv2x(@_, "*")) } sub pp_av2arylen { my $self = shift; my($op, $cx) = @_; - if ($op->first->ppaddr eq "pp_padav") { + if ($op->first->name eq "padav") { return $self->maybe_local($op, $cx, '$#' . $self->padany($op->first)); } else { return $self->maybe_local($op, $cx, @@ -1828,23 +1944,41 @@ sub pp_rv2av { my $self = shift; my($op, $cx) = @_; my $kid = $op->first; - if ($kid->ppaddr eq "pp_const") { # constant list - my $av = $kid->sv; + if ($kid->name eq "const") { # constant list + my $av = $self->const_sv($kid); return "(" . join(", ", map(const($_), $av->ARRAY)) . ")"; } else { return $self->maybe_local($op, $cx, $self->rv2x($op, $cx, "\@")); } } +sub is_subscriptable { + my $op = shift; + if ($op->name =~ /^[ahg]elem/) { + return 1; + } elsif ($op->name eq "entersub") { + my $kid = $op->first; + return 0 unless null $kid->sibling; + $kid = $kid->first; + $kid = $kid->sibling until null $kid->sibling; + return 0 if is_scope($kid); + $kid = $kid->first; + return 0 if $kid->name eq "gv"; + return 0 if is_scalar($kid); + return is_subscriptable($kid); + } else { + return 0; + } +} sub elem { my $self = shift; my ($op, $cx, $left, $right, $padname) = @_; my($array, $idx) = ($op->first, $op->first->sibling); - unless ($array->ppaddr eq $padname) { # Maybe this has been fixed + unless ($array->name eq $padname) { # Maybe this has been fixed $array = $array->first; # skip rv2av (or ex-rv2av in _53+) } - if ($array->ppaddr eq $padname) { + if ($array->name eq $padname) { $array = $self->padany($array); } elsif (is_scope($array)) { # ${expr}[0] $array = "{" . $self->deparse($array, 0) . "}"; @@ -1852,8 +1986,7 @@ sub elem { $array = $self->deparse($array, 24); } else { # $x[20][3]{hi} or expr->[20] - my $arrow; - $arrow = "->" if $array->ppaddr !~ /^pp_[ah]elem$/; + my $arrow = is_subscriptable($array) ? "" : "->"; return $self->deparse($array, 24) . $arrow . $left . $self->deparse($idx, 1) . $right; } @@ -1861,15 +1994,15 @@ sub elem { return "\$" . $array . $left . $idx . $right; } -sub pp_aelem { maybe_local(@_, elem(@_, "[", "]", "pp_padav")) } -sub pp_helem { maybe_local(@_, elem(@_, "{", "}", "pp_padhv")) } +sub pp_aelem { maybe_local(@_, elem(@_, "[", "]", "padav")) } +sub pp_helem { maybe_local(@_, elem(@_, "{", "}", "padhv")) } sub pp_gelem { my $self = shift; my($op, $cx) = @_; my($glob, $part) = ($op->first, $op->last); $glob = $glob->first; # skip rv2gv - $glob = $glob->first if $glob->ppaddr eq "pp_rv2gv"; # this one's a bug + $glob = $glob->first if $glob->name eq "rv2gv"; # this one's a bug my $scope = is_scope($glob); $glob = $self->deparse($glob, 0); $part = $self->deparse($part, 1); @@ -1889,16 +2022,16 @@ sub slice { } $array = $last; $array = $array->first - if $array->ppaddr eq $regname or $array->ppaddr eq "pp_null"; + if $array->name eq $regname or $array->name eq "null"; if (is_scope($array)) { $array = "{" . $self->deparse($array, 0) . "}"; - } elsif ($array->ppaddr eq $padname) { + } elsif ($array->name eq $padname) { $array = $self->padany($array); } else { $array = $self->deparse($array, 24); } $kid = $op->first->sibling; # skip pushmark - if ($kid->ppaddr eq "pp_list") { + if ($kid->name eq "list") { $kid = $kid->first->sibling; # skip list, pushmark for (; !null $kid; $kid = $kid->sibling) { push @elems, $self->deparse($kid, 6); @@ -1910,10 +2043,8 @@ sub slice { return "\@" . $array . $left . $list . $right; } -sub pp_aslice { maybe_local(@_, slice(@_, "[", "]", - "pp_rv2av", "pp_padav")) } -sub pp_hslice { maybe_local(@_, slice(@_, "{", "}", - "pp_rv2hv", "pp_padhv")) } +sub pp_aslice { maybe_local(@_, slice(@_, "[", "]", "rv2av", "padav")) } +sub pp_hslice { maybe_local(@_, slice(@_, "{", "}", "rv2hv", "padhv")) } sub pp_lslice { my $self = shift; @@ -1926,48 +2057,153 @@ sub pp_lslice { return "($list)" . "[$idx]"; } -sub OPpENTERSUB_AMPER () { 8 } - -sub OPf_WANT () { 3 } -sub OPf_WANT_VOID () { 1 } -sub OPf_WANT_SCALAR () { 2 } -sub OPf_WANT_LIST () { 2 } - sub want_scalar { my $op = shift; return ($op->flags & OPf_WANT) == OPf_WANT_SCALAR; } -sub pp_entersub { +sub want_list { + my $op = shift; + return ($op->flags & OPf_WANT) == OPf_WANT_LIST; +} + +sub method { my $self = shift; my($op, $cx) = @_; - my $prefix = ""; - my $amper = ""; - my $proto = undef; - my $simple = 0; - my($kid, $args, @exprs); - if (not null $op->first->sibling) { # method - $kid = $op->first->sibling; # skip pushmark - my $obj = $self->deparse($kid, 24); + my $kid = $op->first->sibling; # skip pushmark + my($meth, $obj, @exprs); + if ($kid->name eq "list" and want_list $kid) { + # When an indirect object isn't a bareword but the args are in + # parens, the parens aren't part of the method syntax (the LLAFR + # doesn't apply), but they make a list with OPf_PARENS set that + # doesn't get flattened by the append_elem that adds the method, + # making a (object, arg1, arg2, ...) list where the object + # usually is. This can be distinguished from + # `($obj, $arg1, $arg2)->meth()' (which is legal if $arg2 is an + # object) because in the later the list is in scalar context + # as the left side of -> always is, while in the former + # the list is in list context as method arguments always are. + # (Good thing there aren't method prototypes!) + $meth = $kid->sibling; + $kid = $kid->first->sibling; # skip pushmark + $obj = $kid; + $kid = $kid->sibling; + for (; not null $kid; $kid = $kid->sibling) { + push @exprs, $self->deparse($kid, 6); + } + } else { + $obj = $kid; $kid = $kid->sibling; for (; not null $kid->sibling; $kid = $kid->sibling) { push @exprs, $self->deparse($kid, 6); } - my $meth = $kid->first; - if ($meth->ppaddr eq "pp_const") { - $meth = $meth->sv->PV; # needs to be bare + $meth = $kid; + } + $obj = $self->deparse($obj, 24); + if ($meth->name eq "method_named") { + $meth = $self->const_sv($meth)->PV; + } else { + $meth = $meth->first; + if ($meth->name eq "const") { + # As of 5.005_58, this case is probably obsoleted by the + # method_named case above + $meth = $self->const_sv($meth)->PV; # needs to be bare } else { $meth = $self->deparse($meth, 1); } - $args = join(", ", @exprs); - $kid = $obj . "->" . $meth; - if ($args) { - return $kid . "(" . $args . ")"; # parens mandatory - } else { - return $kid; # toke.c fakes parens - } } - # else, not a method + my $args = join(", ", @exprs); + $kid = $obj . "->" . $meth; + if ($args) { + return $kid . "(" . $args . ")"; # parens mandatory + } else { + return $kid; + } +} + +# returns "&" if the prototype doesn't match the args, +# or ("", $args_after_prototype_demunging) if it does. +sub check_proto { + my $self = shift; + my($proto, @args) = @_; + my($arg, $real); + my $doneok = 0; + my @reals; + # An unbackslashed @ or % gobbles up the rest of the args + $proto =~ s/([^\\]|^)([@%])(.*)$/$1$2/; + while ($proto) { + $proto =~ s/^ *([\\]?[\$\@&%*]|;)//; + my $chr = $1; + if ($chr eq "") { + return "&" if @args; + } elsif ($chr eq ";") { + $doneok = 1; + } elsif ($chr eq "@" or $chr eq "%") { + push @reals, map($self->deparse($_, 6), @args); + @args = (); + } else { + $arg = shift @args; + last unless $arg; + if ($chr eq "\$") { + if (want_scalar $arg) { + push @reals, $self->deparse($arg, 6); + } else { + return "&"; + } + } elsif ($chr eq "&") { + if ($arg->name =~ /^(s?refgen|undef)$/) { + push @reals, $self->deparse($arg, 6); + } else { + return "&"; + } + } elsif ($chr eq "*") { + if ($arg->name =~ /^s?refgen$/ + and $arg->first->first->name eq "rv2gv") + { + $real = $arg->first->first; # skip refgen, null + if ($real->first->name eq "gv") { + push @reals, $self->deparse($real, 6); + } else { + push @reals, $self->deparse($real->first, 6); + } + } else { + return "&"; + } + } elsif (substr($chr, 0, 1) eq "\\") { + $chr = substr($chr, 1); + if ($arg->name =~ /^s?refgen$/ and + !null($real = $arg->first) and + ($chr eq "\$" && is_scalar($real->first) + or ($chr eq "\@" + && $real->first->sibling->name + =~ /^(rv2|pad)av$/) + or ($chr eq "%" + && $real->first->sibling->name + =~ /^(rv2|pad)hv$/) + #or ($chr eq "&" # This doesn't work + # && $real->first->name eq "rv2cv") + or ($chr eq "*" + && $real->first->name eq "rv2gv"))) + { + push @reals, $self->deparse($real, 6); + } else { + return "&"; + } + } + } + } + return "&" if $proto and !$doneok; # too few args and no `;' + return "&" if @args; # too many args + return ("", join ", ", @reals); +} + +sub pp_entersub { + my $self = shift; + my($op, $cx) = @_; + return $self->method($op, $cx) unless null $op->first->sibling; + my $prefix = ""; + my $amper = ""; + my($kid, @exprs); if ($op->flags & OPf_SPECIAL) { $prefix = "do "; } elsif ($op->private & OPpENTERSUB_AMPER) { @@ -1978,97 +2214,30 @@ sub pp_entersub { for (; not null $kid->sibling; $kid = $kid->sibling) { push @exprs, $kid; } + my $simple = 0; + my $proto = undef; if (is_scope($kid)) { $amper = "&"; $kid = "{" . $self->deparse($kid, 0) . "}"; - } elsif ($kid->first->ppaddr eq "pp_gv") { - my $gv = $kid->first->gv; + } elsif ($kid->first->name eq "gv") { + my $gv = $self->maybe_padgv($kid->first); if (class($gv->CV) ne "SPECIAL") { $proto = $gv->CV->PV if $gv->CV->FLAGS & SVf_POK; } - $simple = 1; + $simple = 1; # only calls of named functions can be prototyped $kid = $self->deparse($kid, 24); } elsif (is_scalar $kid->first) { $amper = "&"; $kid = $self->deparse($kid, 24); } else { $prefix = ""; - $kid = $self->deparse($kid, 24) . "->"; + my $arrow = is_subscriptable($kid->first) ? "" : "->"; + $kid = $self->deparse($kid, 24) . $arrow; } + my $args; if (defined $proto and not $amper) { - my($arg, $real); - my $doneok = 0; - my @args = @exprs; - my @reals; - my $p = $proto; - $p =~ s/([^\\]|^)([@%])(.*)$/$1$2/; - while ($p) { - $p =~ s/^ *([\\]?[\$\@&%*]|;)//; - my $chr = $1; - if ($chr eq "") { - undef $proto if @args; - } elsif ($chr eq ";") { - $doneok = 1; - } elsif ($chr eq "@" or $chr eq "%") { - push @reals, map($self->deparse($_, 6), @args); - @args = (); - } else { - $arg = shift @args; - last unless $arg; - if ($chr eq "\$") { - if (want_scalar $arg) { - push @reals, $self->deparse($arg, 6); - } else { - undef $proto; - } - } elsif ($chr eq "&") { - if ($arg->ppaddr =~ /pp_(s?refgen|undef)/) { - push @reals, $self->deparse($arg, 6); - } else { - undef $proto; - } - } elsif ($chr eq "*") { - if ($arg->ppaddr =~ /^pp_s?refgen$/ - and $arg->first->first->ppaddr eq "pp_rv2gv") - { - $real = $arg->first->first; # skip refgen, null - if ($real->first->ppaddr eq "pp_gv") { - push @reals, $self->deparse($real, 6); - } else { - push @reals, $self->deparse($real->first, 6); - } - } else { - undef $proto; - } - } elsif (substr($chr, 0, 1) eq "\\") { - $chr = substr($chr, 1); - if ($arg->ppaddr =~ /^pp_s?refgen$/ and - !null($real = $arg->first) and - ($chr eq "\$" && is_scalar($real->first) - or ($chr eq "\@" - && $real->first->sibling->ppaddr - =~ /^pp_(rv2|pad)av$/) - or ($chr eq "%" - && $real->first->sibling->ppaddr - =~ /^pp_(rv2|pad)hv$/) - #or ($chr eq "&" # This doesn't work - # && $real->first->ppaddr eq "pp_rv2cv") - or ($chr eq "*" - && $real->first->ppaddr eq "pp_rv2gv"))) - { - push @reals, $self->deparse($real, 6); - } else { - undef $proto; - } - } - } - } - undef $proto if $p and !$doneok; - undef $proto if @args; - $args = join(", ", @reals); - $amper = ""; - unless (defined $proto) { - $amper = "&"; + ($amper, $args) = $self->check_proto($proto, @exprs); + if ($amper eq "&") { $args = join(", ", map($self->deparse($_, 6), @exprs)); } } else { @@ -2146,6 +2315,7 @@ sub balanced_delim { } elsif ($c eq $close) { $cnt--; if ($cnt < 0) { + # qq()() isn't ")(" $fail = 1; last; } @@ -2175,14 +2345,10 @@ sub single_delim { } } -sub SVf_IOK () {0x10000} -sub SVf_NOK () {0x20000} -sub SVf_ROK () {0x80000} - sub const { my $sv = shift; if (class($sv) eq "SPECIAL") { - return ('undef', '1', '0')[$$sv-1]; + return ('undef', '1', '0')[$$sv-1]; # sv_undef, sv_yes, sv_no } elsif ($sv->FLAGS & SVf_IOK) { return $sv->IV; } elsif ($sv->FLAGS & SVf_NOK) { @@ -2191,43 +2357,52 @@ sub const { return "\\(" . const($sv->RV) . ")"; # constant folded } else { my $str = $sv->PV; - if ($str =~ /[^ -~]/) { # ASCII + if ($str =~ /[^ -~]/) { # ASCII for non-printing return single_delim("qq", '"', uninterp escape_str unback $str); } else { - $str =~ s/\\/\\\\/g; - return single_delim("q", "'", $str); + return single_delim("q", "'", unback $str); } } } +sub const_sv { + my $self = shift; + my $op = shift; + my $sv = $op->sv; + # the constant could be in the pad (under useithreads) + $sv = $self->padval($op->targ) unless $$sv; + return $sv; +} + sub pp_const { my $self = shift; my($op, $cx) = @_; -# if ($op->private & OPp_CONST_BARE) { # trouble with `=>' autoquoting -# return $op->sv->PV; +# if ($op->private & OPpCONST_BARE) { # trouble with `=>' autoquoting +# return $self->const_sv($op)->PV; # } - return const($op->sv); + my $sv = $self->const_sv($op); + return const($sv); } sub dq { my $self = shift; my $op = shift; - my $type = $op->ppaddr; - if ($type eq "pp_const") { - return uninterp(escape_str(unback($op->sv->PV))); - } elsif ($type eq "pp_concat") { + my $type = $op->name; + if ($type eq "const") { + return uninterp(escape_str(unback($self->const_sv($op)->PV))); + } elsif ($type eq "concat") { return $self->dq($op->first) . $self->dq($op->last); - } elsif ($type eq "pp_uc") { + } elsif ($type eq "uc") { return '\U' . $self->dq($op->first->sibling) . '\E'; - } elsif ($type eq "pp_lc") { + } elsif ($type eq "lc") { return '\L' . $self->dq($op->first->sibling) . '\E'; - } elsif ($type eq "pp_ucfirst") { + } elsif ($type eq "ucfirst") { return '\u' . $self->dq($op->first->sibling); - } elsif ($type eq "pp_lcfirst") { + } elsif ($type eq "lcfirst") { return '\l' . $self->dq($op->first->sibling); - } elsif ($type eq "pp_quotemeta") { + } elsif ($type eq "quotemeta") { return '\Q' . $self->dq($op->first->sibling) . '\E'; - } elsif ($type eq "pp_join") { + } elsif ($type eq "join") { return $self->deparse($op->last, 26); # was join($", @ary) } else { return $self->deparse($op, 26); @@ -2243,13 +2418,15 @@ sub pp_backtick { sub dquote { my $self = shift; - my $op = shift; - # skip ex-stringify, pushmark - return single_delim("qq", '"', $self->dq($op->first->sibling)); + my($op, $cx) = shift; + my $kid = $op->first->sibling; # skip ex-stringify, pushmark + return $self->deparse($kid, $cx) if $self->{'unquote'}; + $self->maybe_targmy($kid, $cx, + sub {single_delim("qq", '"', $self->dq($_[1]))}); } -# OP_STRINGIFY is a listop, but it only ever has one arg (?) -sub pp_stringify { dquote(@_) } +# OP_STRINGIFY is a listop, but it only ever has one arg +sub pp_stringify { maybe_targmy(@_, \&dquote) } # tr/// and s/// (and tr[][], tr[]//, tr###, etc) # note that tr(from)/to/ is OK, but not tr/from/(to) @@ -2316,7 +2493,8 @@ sub collapse { if ($c <= $#chars - 2 and $chars[$c + 1] == $tr + 1 and $chars[$c + 2] == $tr + 2) { - for (; $c <= $#chars and $chars[$c + 1] == $chars[$c] + 1; $c++) {} + for (; $c <= $#chars-1 and $chars[$c + 1] == $chars[$c] + 1; $c++) + {} $str .= "-"; $str .= pchr($chars[$c]); } @@ -2324,14 +2502,12 @@ sub collapse { return $str; } -sub OPpTRANS_SQUASH () { 16 } -sub OPpTRANS_DELETE () { 32 } -sub OPpTRANS_COMPLEMENT () { 64 } +# XXX This has trouble with hyphens in the replacement (tr/bac/-AC/), +# and backslashes. -sub pp_trans { - my $self = shift; - my($op, $cx) = @_; - my(@table) = unpack("s256", $op->pv); +sub tr_decode_byte { + my($table, $flags) = @_; + my(@table) = unpack("s256", $table); my($c, $tr, @from, @to, @delfrom, $delhyphen); if ($table[ord "-"] != -1 and $table[ord("-") - 1] == -1 || $table[ord("-") + 1] == -1) @@ -2353,10 +2529,8 @@ sub pp_trans { push @delfrom, $c; } } - my $flags; @from = (@from, @delfrom); - if ($op->private & OPpTRANS_COMPLEMENT) { - $flags .= "c"; + if ($flags & OPpTRANS_COMPLEMENT) { my @newfrom = (); my %from; @from{@from} = (1) x @from; @@ -2365,16 +2539,136 @@ sub pp_trans { } @from = @newfrom; } - if ($op->private & OPpTRANS_DELETE) { - $flags .= "d"; - } else { + unless ($flags & OPpTRANS_DELETE) { pop @to while $#to and $to[$#to] == $to[$#to -1]; } - $flags .= "s" if $op->private & OPpTRANS_SQUASH; my($from, $to); $from = collapse(@from); $to = collapse(@to); $from .= "-" if $delhyphen; + return ($from, $to); +} + +sub tr_chr { + my $x = shift; + if ($x == ord "-") { + return "\\-"; + } else { + return chr $x; + } +} + +# XXX This doesn't yet handle all cases correctly either + +sub tr_decode_utf8 { + my($swash_hv, $flags) = @_; + my %swash = $swash_hv->ARRAY; + my $final = undef; + $final = $swash{'FINAL'}->IV if exists $swash{'FINAL'}; + my $none = $swash{"NONE"}->IV; + my $extra = $none + 1; + my(@from, @delfrom, @to); + my $line; + foreach $line (split /\n/, $swash{'LIST'}->PV) { + my($min, $max, $result) = split(/\t/, $line); + $min = hex $min; + if (length $max) { + $max = hex $max; + } else { + $max = $min; + } + $result = hex $result; + if ($result == $extra) { + push @delfrom, [$min, $max]; + } else { + push @from, [$min, $max]; + push @to, [$result, $result + $max - $min]; + } + } + for my $i (0 .. $#from) { + if ($from[$i][0] == ord '-') { + unshift @from, splice(@from, $i, 1); + unshift @to, splice(@to, $i, 1); + last; + } elsif ($from[$i][1] == ord '-') { + $from[$i][1]--; + $to[$i][1]--; + unshift @from, ord '-'; + unshift @to, ord '-'; + last; + } + } + for my $i (0 .. $#delfrom) { + if ($delfrom[$i][0] == ord '-') { + push @delfrom, splice(@delfrom, $i, 1); + last; + } elsif ($delfrom[$i][1] == ord '-') { + $delfrom[$i][1]--; + push @delfrom, ord '-'; + last; + } + } + if (defined $final and $to[$#to][1] != $final) { + push @to, [$final, $final]; + } + push @from, @delfrom; + if ($flags & OPpTRANS_COMPLEMENT) { + my @newfrom; + my $next = 0; + for my $i (0 .. $#from) { + push @newfrom, [$next, $from[$i][0] - 1]; + $next = $from[$i][1] + 1; + } + @from = (); + for my $range (@newfrom) { + if ($range->[0] <= $range->[1]) { + push @from, $range; + } + } + } + my($from, $to, $diff); + for my $chunk (@from) { + $diff = $chunk->[1] - $chunk->[0]; + if ($diff > 1) { + $from .= tr_chr($chunk->[0]) . "-" . tr_chr($chunk->[1]); + } elsif ($diff == 1) { + $from .= tr_chr($chunk->[0]) . tr_chr($chunk->[1]); + } else { + $from .= tr_chr($chunk->[0]); + } + } + for my $chunk (@to) { + $diff = $chunk->[1] - $chunk->[0]; + if ($diff > 1) { + $to .= tr_chr($chunk->[0]) . "-" . tr_chr($chunk->[1]); + } elsif ($diff == 1) { + $to .= tr_chr($chunk->[0]) . tr_chr($chunk->[1]); + } else { + $to .= tr_chr($chunk->[0]); + } + } + #$final = sprintf("%04x", $final) if defined $final; + #$none = sprintf("%04x", $none) if defined $none; + #$extra = sprintf("%04x", $extra) if defined $extra; + #print STDERR "final: $final\n none: $none\nextra: $extra\n"; + #print STDERR $swash{'LIST'}->PV; + return (escape_str($from), escape_str($to)); +} + +sub pp_trans { + my $self = shift; + my($op, $cx) = @_; + my($from, $to); + if (class($op) eq "PVOP") { + ($from, $to) = tr_decode_byte($op->pv, $op->private); + } else { # class($op) eq "SVOP" + ($from, $to) = tr_decode_utf8($op->sv->RV, $op->private); + } + my $flags = ""; + $flags .= "c" if $op->private & OPpTRANS_COMPLEMENT; + $flags .= "d" if $op->private & OPpTRANS_DELETE; + $to = "" if $from eq $to and $flags eq ""; + $flags .= "s" if $op->private & OPpTRANS_SQUASH; return "tr" . double_delim($from, $to) . $flags; } @@ -2382,22 +2676,22 @@ sub pp_trans { sub re_dq { my $self = shift; my $op = shift; - my $type = $op->ppaddr; - if ($type eq "pp_const") { - return uninterp($op->sv->PV); - } elsif ($type eq "pp_concat") { + my $type = $op->name; + if ($type eq "const") { + return uninterp($self->const_sv($op)->PV); + } elsif ($type eq "concat") { return $self->re_dq($op->first) . $self->re_dq($op->last); - } elsif ($type eq "pp_uc") { + } elsif ($type eq "uc") { return '\U' . $self->re_dq($op->first->sibling) . '\E'; - } elsif ($type eq "pp_lc") { + } elsif ($type eq "lc") { return '\L' . $self->re_dq($op->first->sibling) . '\E'; - } elsif ($type eq "pp_ucfirst") { + } elsif ($type eq "ucfirst") { return '\u' . $self->re_dq($op->first->sibling); - } elsif ($type eq "pp_lcfirst") { + } elsif ($type eq "lcfirst") { return '\l' . $self->re_dq($op->first->sibling); - } elsif ($type eq "pp_quotemeta") { + } elsif ($type eq "quotemeta") { return '\Q' . $self->re_dq($op->first->sibling) . '\E'; - } elsif ($type eq "pp_join") { + } elsif ($type eq "join") { return $self->deparse($op->last, 26); # was join($", @ary) } else { return $self->deparse($op, 26); @@ -2408,26 +2702,11 @@ sub pp_regcomp { my $self = shift; my($op, $cx) = @_; my $kid = $op->first; - $kid = $kid->first if $kid->ppaddr eq "pp_regcmaybe"; - $kid = $kid->first if $kid->ppaddr eq "pp_regcreset"; + $kid = $kid->first if $kid->name eq "regcmaybe"; + $kid = $kid->first if $kid->name eq "regcreset"; return $self->re_dq($kid); } -sub OPp_RUNTIME () { 64 } - -sub PMf_ONCE () { 0x2 } -sub PMf_SKIPWHITE () { 0x10 } -sub PMf_CONST () { 0x40 } -sub PMf_KEEP () { 0x80 } -sub PMf_GLOBAL () { 0x100 } -sub PMf_CONTINUE () { 0x200 } -sub PMf_EVAL () { 0x400 } -sub PMf_LOCALE () { 0x800 } -sub PMf_MULTILINE () { 0x1000 } -sub PMf_SINGLELINE () { 0x2000 } -sub PMf_FOLD () { 0x4000 } -sub PMf_EXTENDED () { 0x8000 } - # osmic acid -- see osmium tetroxide my %matchwords; @@ -2522,11 +2801,15 @@ sub pp_subst { $kid = $kid->sibling; } else { $repl = $op->pmreplroot->first; # skip substcont - while ($repl->ppaddr eq "pp_entereval") { + while ($repl->name eq "entereval") { $repl = $repl->first; $flags .= "e"; } - $repl = $self->dq($repl); + if ($op->pmflags & PMf_EVAL) { + $repl = $self->deparse($repl, 0); + } else { + $repl = $self->dq($repl); + } } if (null $kid) { $re = re_uninterp(escape_str($op->precomp)); @@ -2559,7 +2842,8 @@ B::Deparse - Perl compiler backend to produce perl code =head1 SYNOPSIS -B B<-MO=Deparse>[B<,-u>I][B<,-p>][B<,-l>][B<,-s>I] I +B B<-MO=Deparse>[B<,-u>I][B<,-p>][B<,-q>][B<,-l>][B<,-s>I] + I =head1 DESCRIPTION @@ -2584,6 +2868,11 @@ the '-MO=Deparse', separated by a comma but not any white space. =over 4 +=item B<-l> + +Add '#line' declarations to the output based on the line and file +locations of the original code. + =item B<-p> Print extra parentheses. Without this option, B::Deparse includes @@ -2607,29 +2896,44 @@ C will print which probably isn't what you intended (the C<'???'> is a sign that perl optimized away a constant value). +=item B<-q> + +Expand double-quoted strings into the corresponding combinations of +concatenation, uc, ucfirst, lc, lcfirst, quotemeta, and join. For +instance, print + + print "Hello, $world, @ladies, \u$gentlemen\E, \u\L$me!"; + +as + + print 'Hello, ' . $world . ', ' . join($", @ladies) . ', ' + . ucfirst($gentlemen) . ', ' . ucfirst(lc $me . '!'); + +Note that the expanded form represents the way perl handles such +constructions internally -- this option actually turns off the reverse +translation that B::Deparse usually does. On the other hand, note that +C<$x = "$y"> is not the same as C<$x = $y>: the former makes the value +of $y into a string before doing the assignment. + =item B<-u>I Normally, B::Deparse deparses the main code of a program, all the subs called by the main program (and all the subs called by them, recursively), and any other subs in the main:: package. To include subs in other packages that aren't called directly, such as AUTOLOAD, -DESTROY, other subs called automatically by perl, and methods, which -aren't resolved to subs until runtime, use the B<-u> option. The +DESTROY, other subs called automatically by perl, and methods (which +aren't resolved to subs until runtime), use the B<-u> option. The argument to B<-u> is the name of a package, and should follow directly after the 'u'. Multiple B<-u> options may be given, separated by commas. Note that unlike some other backends, B::Deparse doesn't (yet) try to guess automatically when B<-u> is needed -- you must invoke it yourself. -=item B<-l> - -Add '#line' declarations to the output based on the line and file -locations of the original code. - =item B<-s>I -Tweak the style of B::Deparse's output. At the moment, only one style -option is implemented: +Tweak the style of B::Deparse's output. The letters should follow +directly after the 's', with no space or punctuation. The following +options are available: =over 4 @@ -2654,17 +2958,85 @@ instead of The default is not to cuddle. +=item BI + +Indent lines by multiples of I columns. The default is 4 columns. + +=item B + +Use tabs for each 8 columns of indent. The default is to use only spaces. +For instance, if the style options are B<-si4T>, a line that's indented +3 times will be preceded by one tab and four spaces; if the options were +B<-si8T>, the same line would be preceded by three tabs. + +=item BIB<.> + +Print I for the value of a constant that can't be determined +because it was optimized away (mnemonic: this happens when a constant +is used in Boid context). The end of the string is marked by a period. +The string should be a valid perl expression, generally a constant. +Note that unless it's a number, it probably needs to be quoted, and on +a command line quotes need to be protected from the shell. Some +conventional values include 0, 1, 42, '', 'foo', and +'Useless use of constant omitted' (which may need to be +B<-sv"'Useless use of constant omitted'."> +or something similar depending on your shell). The default is '???'. +If you're using B::Deparse on a module or other file that's require'd, +you shouldn't use a value that evaluates to false, since the customary +true constant at the end of a module will be in void context when the +file is compiled as a main program. + =back =back +=head1 USING B::Deparse AS A MODULE + +=head2 Synopsis + + use B::Deparse; + $deparse = B::Deparse->new("-p", "-sC"); + $body = $deparse->coderef2text(\&func); + eval "sub func $body"; # the inverse operation + +=head2 Description + +B::Deparse can also be used on a sub-by-sub basis from other perl +programs. + +=head2 new + + $deparse = B::Deparse->new(OPTIONS) + +Create an object to store the state of a deparsing operation and any +options. The options are the same as those that can be given on the +command line (see L); options that are separated by commas +after B<-MO=Deparse> should be given as separate strings. Some +options, like B<-u>, don't make sense for a single subroutine, so +don't pass them. + +=head2 coderef2text + + $body = $deparse->coderef2text(\&func) + $body = $deparse->coderef2text(sub ($$) { ... }) + +Return source code for the body of a subroutine (a block, optionally +preceded by a prototype in parens), given a reference to the +sub. Because a subroutine can have no names, or more than one name, +this method doesn't return a complete subroutine definition -- if you +want to eval the result, you should prepend "sub subname ", or "sub " +for an anonymous function constructor. Unless the sub was defined in +the main:: package, the code will include a package declaration. + =head1 BUGS See the 'to do' list at the beginning of the module file. =head1 AUTHOR -Stephen McCamant , based on an earlier version by -Malcolm Beattie . +Stephen McCamant , based on an earlier +version by Malcolm Beattie , with +contributions from Gisle Aas, James Duncan, Albert Dvornik, Hugo van +der Sanden, Gurusamy Sarathy, and Nick Ing-Simmons. =cut diff --git a/contrib/perl5/ext/B/B/Disassembler.pm b/contrib/perl5/ext/B/B/Disassembler.pm index 4a008a3750cf..d054a2d16473 100644 --- a/contrib/perl5/ext/B/B/Disassembler.pm +++ b/contrib/perl5/ext/B/B/Disassembler.pm @@ -52,6 +52,20 @@ sub GET_objindex { return unpack("N", $str); } +sub GET_opindex { + my $fh = shift; + my $str = $fh->readn(4); + croak "reached EOF while reading opindex" unless length($str) == 4; + return unpack("N", $str); +} + +sub GET_svindex { + my $fh = shift; + my $str = $fh->readn(4); + croak "reached EOF while reading svindex" unless length($str) == 4; + return unpack("N", $str); +} + sub GET_strconst { my $fh = shift; my ($str, $c); diff --git a/contrib/perl5/ext/B/B/Lint.pm b/contrib/perl5/ext/B/B/Lint.pm index d34bd7792bca..ed0d07dfcbd6 100644 --- a/contrib/perl5/ext/B/B/Lint.pm +++ b/contrib/perl5/ext/B/B/Lint.pm @@ -116,13 +116,9 @@ Malcolm Beattie, mbeattie@sable.ox.ac.uk. =cut use strict; -use B qw(walkoptree_slow main_root walksymtable svref_2object parents); - -# Constants (should probably be elsewhere) -sub G_ARRAY () { 1 } -sub OPf_LIST () { 1 } -sub OPf_KNOW () { 2 } -sub OPf_STACKED () { 64 } +use B qw(walkoptree_slow main_root walksymtable svref_2object parents + OPf_WANT_LIST OPf_WANT OPf_STACKED G_ARRAY + ); my $file = "unknown"; # shadows current filename my $line = 0; # shadows current line number @@ -133,8 +129,8 @@ my %check; my %implies_ok_context; BEGIN { map($implies_ok_context{$_}++, - qw(pp_scalar pp_av2arylen pp_aelem pp_aslice pp_helem pp_hslice - pp_keys pp_values pp_hslice pp_defined pp_undef pp_delete)); + qw(scalar av2arylen aelem aslice helem hslice + keys values hslice defined undef delete)); } # Lint checks turned on by default @@ -165,8 +161,8 @@ sub warning { sub gimme { my $op = shift; my $flags = $op->flags; - if ($flags & OPf_KNOW) { - return(($flags & OPf_LIST) ? 1 : 0); + if ($flags & OPf_WANT) { + return(($flags & OPf_WANT_LIST) ? 1 : 0); } return undef; } @@ -175,8 +171,8 @@ sub B::OP::lint {} sub B::COP::lint { my $op = shift; - if ($op->ppaddr eq "pp_nextstate") { - $file = $op->filegv->SV->PV; + if ($op->name eq "nextstate") { + $file = $op->file; $line = $op->line; $curstash = $op->stash->NAME; } @@ -184,24 +180,24 @@ sub B::COP::lint { sub B::UNOP::lint { my $op = shift; - my $ppaddr = $op->ppaddr; - if ($check{context} && ($ppaddr eq "pp_rv2av" || $ppaddr eq "pp_rv2hv")) { + my $opname = $op->name; + if ($check{context} && ($opname eq "rv2av" || $opname eq "rv2hv")) { my $parent = parents->[0]; - my $pname = $parent->ppaddr; + my $pname = $parent->name; return if gimme($op) || $implies_ok_context{$pname}; # Two special cases to deal with: "foreach (@foo)" and "delete $a{$b}" # null out the parent so we have to check for a parent of pp_null and # a grandparent of pp_enteriter or pp_delete - if ($pname eq "pp_null") { - my $gpname = parents->[1]->ppaddr; - return if $gpname eq "pp_enteriter" || $gpname eq "pp_delete"; + if ($pname eq "null") { + my $gpname = parents->[1]->name; + return if $gpname eq "enteriter" || $gpname eq "delete"; } warning("Implicit scalar context for %s in %s", - $ppaddr eq "pp_rv2av" ? "array" : "hash", $parent->desc); + $opname eq "rv2av" ? "array" : "hash", $parent->desc); } - if ($check{private_names} && $ppaddr eq "pp_method") { + if ($check{private_names} && $opname eq "method") { my $methop = $op->first; - if ($methop->ppaddr eq "pp_const") { + if ($methop->name eq "const") { my $method = $methop->sv->PV; if ($method =~ /^_/ && !defined(&{"$curstash\::$method"})) { warning("Illegal reference to private method name $method"); @@ -213,14 +209,12 @@ sub B::UNOP::lint { sub B::PMOP::lint { my $op = shift; if ($check{implicit_read}) { - my $ppaddr = $op->ppaddr; - if ($ppaddr eq "pp_match" && !($op->flags & OPf_STACKED)) { + if ($op->name eq "match" && !($op->flags & OPf_STACKED)) { warning('Implicit match on $_'); } } if ($check{implicit_write}) { - my $ppaddr = $op->ppaddr; - if ($ppaddr eq "pp_subst" && !($op->flags & OPf_STACKED)) { + if ($op->name eq "subst" && !($op->flags & OPf_STACKED)) { warning('Implicit substitution on $_'); } } @@ -229,34 +223,35 @@ sub B::PMOP::lint { sub B::LOOP::lint { my $op = shift; if ($check{implicit_read} || $check{implicit_write}) { - my $ppaddr = $op->ppaddr; - if ($ppaddr eq "pp_enteriter") { + if ($op->name eq "enteriter") { my $last = $op->last; - if ($last->ppaddr eq "pp_gv" && $last->gv->NAME eq "_") { + if ($last->name eq "gv" && $last->gv->NAME eq "_") { warning('Implicit use of $_ in foreach'); } } } } -sub B::GVOP::lint { +sub B::SVOP::lint { my $op = shift; - if ($check{dollar_underscore} && $op->ppaddr eq "pp_gvsv" + if ($check{dollar_underscore} && $op->name eq "gvsv" && $op->gv->NAME eq "_") { warning('Use of $_'); } if ($check{private_names}) { - my $ppaddr = $op->ppaddr; - my $gv = $op->gv; - if (($ppaddr eq "pp_gv" || $ppaddr eq "pp_gvsv") - && $gv->NAME =~ /^_./ && $gv->STASH->NAME ne $curstash) - { - warning('Illegal reference to private name %s', $gv->NAME); + my $opname = $op->name; + if ($opname eq "gv" || $opname eq "gvsv") { + my $gv = $op->gv; + if ($gv->NAME =~ /^_./ && $gv->STASH->NAME ne $curstash) { + warning('Illegal reference to private name %s', $gv->NAME); + } } } if ($check{undefined_subs}) { - if ($op->ppaddr eq "pp_gv" && $op->next->ppaddr eq "pp_entersub") { + if ($op->name eq "gv" + && $op->next->name eq "entersub") + { my $gv = $op->gv; my $subname = $gv->STASH->NAME . "::" . $gv->NAME; no strict 'refs'; @@ -266,7 +261,7 @@ sub B::GVOP::lint { } } } - if ($check{regexp_variables} && $op->ppaddr eq "pp_gvsv") { + if ($check{regexp_variables} && $op->name eq "gvsv") { my $name = $op->gv->NAME; if ($name =~ /^[&'`]$/) { warning('Use of regexp variable $%s', $name); diff --git a/contrib/perl5/ext/B/B/Stackobj.pm b/contrib/perl5/ext/B/B/Stackobj.pm index eea966ceb6b7..0db3e33de81a 100644 --- a/contrib/perl5/ext/B/B/Stackobj.pm +++ b/contrib/perl5/ext/B/B/Stackobj.pm @@ -5,34 +5,35 @@ # You may distribute under the terms of either the GNU General Public # License or the Artistic License, as specified in the README file. # -package B::Stackobj; +package B::Stackobj; use Exporter (); @ISA = qw(Exporter); -@EXPORT_OK = qw(set_callback T_UNKNOWN T_DOUBLE T_INT +@EXPORT_OK = qw(set_callback T_UNKNOWN T_DOUBLE T_INT VALID_UNSIGNED VALID_INT VALID_DOUBLE VALID_SV REGISTER TEMPORARY); %EXPORT_TAGS = (types => [qw(T_UNKNOWN T_DOUBLE T_INT)], flags => [qw(VALID_INT VALID_DOUBLE VALID_SV - REGISTER TEMPORARY)]); + VALID_UNSIGNED REGISTER TEMPORARY)]); use Carp qw(confess); use strict; -use B qw(class); - -# Perl internal constants that I should probably define elsewhere. -sub SVf_IOK () { 0x10000 } -sub SVf_NOK () { 0x20000 } +use B qw(class SVf_IOK SVf_NOK SVf_IVisUV); # Types sub T_UNKNOWN () { 0 } sub T_DOUBLE () { 1 } sub T_INT () { 2 } +sub T_SPECIAL () { 3 } # Flags sub VALID_INT () { 0x01 } -sub VALID_DOUBLE () { 0x02 } -sub VALID_SV () { 0x04 } -sub REGISTER () { 0x08 } # no implicit write-back when calling subs -sub TEMPORARY () { 0x10 } # no implicit write-back needed at all +sub VALID_UNSIGNED () { 0x02 } +sub VALID_DOUBLE () { 0x04 } +sub VALID_SV () { 0x08 } +sub REGISTER () { 0x10 } # no implicit write-back when calling subs +sub TEMPORARY () { 0x20 } # no implicit write-back needed at all +sub SAVE_INT () { 0x40 } #if int part needs to be saved at all +sub SAVE_DOUBLE () { 0x80 } #if double part needs to be saved at all + # # Callback for runtime code generation @@ -47,7 +48,7 @@ sub runtime { &$runtime_callback(@_) } sub write_back { confess "stack object does not implement write_back" } -sub invalidate { shift->{flags} &= ~(VALID_INT | VALID_DOUBLE) } +sub invalidate { shift->{flags} &= ~(VALID_INT |VALID_UNSIGNED | VALID_DOUBLE) } sub as_sv { my $obj = shift; @@ -62,7 +63,7 @@ sub as_int { my $obj = shift; if (!($obj->{flags} & VALID_INT)) { $obj->load_int; - $obj->{flags} |= VALID_INT; + $obj->{flags} |= VALID_INT|SAVE_INT; } return $obj->{iv}; } @@ -71,7 +72,7 @@ sub as_double { my $obj = shift; if (!($obj->{flags} & VALID_DOUBLE)) { $obj->load_double; - $obj->{flags} |= VALID_DOUBLE; + $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE; } return $obj->{nv}; } @@ -81,6 +82,17 @@ sub as_numeric { return $obj->{type} == T_INT ? $obj->as_int : $obj->as_double; } +sub as_bool { + my $obj=shift; + if ($obj->{flags} & VALID_INT ){ + return $obj->{iv}; + } + if ($obj->{flags} & VALID_DOUBLE ){ + return $obj->{nv}; + } + return sprintf("(SvTRUE(%s))", $obj->as_sv) ; +} + # # Debugging methods # @@ -126,17 +138,18 @@ sub minipeek { # set_numeric and set_sv are only invoked on legal lvalues. # sub set_int { - my ($obj, $expr) = @_; + my ($obj, $expr,$unsigned) = @_; runtime("$obj->{iv} = $expr;"); $obj->{flags} &= ~(VALID_SV | VALID_DOUBLE); - $obj->{flags} |= VALID_INT; + $obj->{flags} |= VALID_INT|SAVE_INT; + $obj->{flags} |= VALID_UNSIGNED if $unsigned; } sub set_double { my ($obj, $expr) = @_; runtime("$obj->{nv} = $expr;"); $obj->{flags} &= ~(VALID_SV | VALID_INT); - $obj->{flags} |= VALID_DOUBLE; + $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE; } sub set_numeric { @@ -162,6 +175,8 @@ sub set_sv { @B::Stackobj::Padsv::ISA = 'B::Stackobj'; sub B::Stackobj::Padsv::new { my ($class, $type, $extra_flags, $ix, $iname, $dname) = @_; + $extra_flags |= SAVE_INT if $extra_flags & VALID_INT; + $extra_flags |= SAVE_DOUBLE if $extra_flags & VALID_DOUBLE; bless { type => $type, flags => VALID_SV | $extra_flags, @@ -178,14 +193,23 @@ sub B::Stackobj::Padsv::load_int { } else { runtime("$obj->{iv} = SvIV($obj->{sv});"); } - $obj->{flags} |= VALID_INT; + $obj->{flags} |= VALID_INT|SAVE_INT; } sub B::Stackobj::Padsv::load_double { my $obj = shift; $obj->write_back; runtime("$obj->{nv} = SvNV($obj->{sv});"); - $obj->{flags} |= VALID_DOUBLE; + $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE; +} +sub B::Stackobj::Padsv::save_int { + my $obj = shift; + return $obj->{flags} & SAVE_INT; +} + +sub B::Stackobj::Padsv::save_double { + my $obj = shift; + return $obj->{flags} & SAVE_DOUBLE; } sub B::Stackobj::Padsv::write_back { @@ -193,7 +217,11 @@ sub B::Stackobj::Padsv::write_back { my $flags = $obj->{flags}; return if $flags & VALID_SV; if ($flags & VALID_INT) { - runtime("sv_setiv($obj->{sv}, $obj->{iv});"); + if ($flags & VALID_UNSIGNED ){ + runtime("sv_setuv($obj->{sv}, $obj->{iv});"); + }else{ + runtime("sv_setiv($obj->{sv}, $obj->{iv});"); + } } elsif ($flags & VALID_DOUBLE) { runtime("sv_setnv($obj->{sv}, $obj->{nv});"); } else { @@ -213,17 +241,26 @@ sub B::Stackobj::Const::new { flags => 0, sv => $sv # holds the SV object until write_back happens }, $class; - my $svflags = $sv->FLAGS; - if ($svflags & SVf_IOK) { - $obj->{flags} = VALID_INT|VALID_DOUBLE; - $obj->{type} = T_INT; - $obj->{nv} = $obj->{iv} = $sv->IV; - } elsif ($svflags & SVf_NOK) { - $obj->{flags} = VALID_INT|VALID_DOUBLE; - $obj->{type} = T_DOUBLE; - $obj->{iv} = $obj->{nv} = $sv->NV; - } else { - $obj->{type} = T_UNKNOWN; + if ( ref($sv) eq "B::SPECIAL" ){ + $obj->{type}= T_SPECIAL; + }else{ + my $svflags = $sv->FLAGS; + if ($svflags & SVf_IOK) { + $obj->{flags} = VALID_INT|VALID_DOUBLE; + $obj->{type} = T_INT; + if ($svflags & SVf_IVisUV){ + $obj->{flags} |= VALID_UNSIGNED; + $obj->{nv} = $obj->{iv} = $sv->UVX; + }else{ + $obj->{nv} = $obj->{iv} = $sv->IV; + } + } elsif ($svflags & SVf_NOK) { + $obj->{flags} = VALID_INT|VALID_DOUBLE; + $obj->{type} = T_DOUBLE; + $obj->{iv} = $obj->{nv} = $sv->NV; + } else { + $obj->{type} = T_UNKNOWN; + } } return $obj; } @@ -238,13 +275,21 @@ sub B::Stackobj::Const::write_back { sub B::Stackobj::Const::load_int { my $obj = shift; - $obj->{iv} = int($obj->{sv}->PV); + if (ref($obj->{sv}) eq "B::RV"){ + $obj->{iv} = int($obj->{sv}->RV->PV); + }else{ + $obj->{iv} = int($obj->{sv}->PV); + } $obj->{flags} |= VALID_INT; } sub B::Stackobj::Const::load_double { my $obj = shift; - $obj->{nv} = $obj->{sv}->PV + 0.0; + if (ref($obj->{sv}) eq "B::RV"){ + $obj->{nv} = $obj->{sv}->RV->PV + 0.0; + }else{ + $obj->{nv} = $obj->{sv}->PV + 0.0; + } $obj->{flags} |= VALID_DOUBLE; } diff --git a/contrib/perl5/ext/B/B/Stash.pm b/contrib/perl5/ext/B/B/Stash.pm new file mode 100644 index 000000000000..0a3543eed41e --- /dev/null +++ b/contrib/perl5/ext/B/B/Stash.pm @@ -0,0 +1,42 @@ +# Stash.pm -- show what stashes are loaded +# vishalb@hotmail.com +package B::Stash; + +BEGIN { %Seen = %INC } + +CHECK { + my @arr=scan($main::{"main::"}); + @arr=map{s/\:\:$//;$_;} @arr; + print "-umain,-u", join (",-u",@arr) ,"\n"; +} +sub scan{ + my $start=shift; + my $prefix=shift; + $prefix = '' unless defined $prefix; + my @return; + foreach my $key ( keys %{$start}){ +# print $prefix,$key,"\n"; + if ($key =~ /::$/){ + unless ($start eq ${$start}{$key} or $key eq "B::" ){ + push @return, $key unless omit($prefix.$key); + foreach my $subscan ( scan(${$start}{$key},$prefix.$key)){ + push @return, "$key".$subscan; + } + } + } + } + return @return; +} +sub omit{ + my $module = shift; + my %omit=("DynaLoader::" => 1 , "XSLoader::" => 1, "CORE::" => 1 , + "CORE::GLOBAL::" => 1, "UNIVERSAL::" => 1 ); + return 1 if $omit{$module}; + if ($module eq "IO::" or $module eq "IO::Handle::"){ + $module =~ s/::/\//g; + return 1 unless $INC{$module}; + } + + return 0; +} +1; diff --git a/contrib/perl5/ext/B/B/Terse.pm b/contrib/perl5/ext/B/B/Terse.pm index 93757f34ce88..66b5cfc2f2f0 100644 --- a/contrib/perl5/ext/B/B/Terse.pm +++ b/contrib/perl5/ext/B/B/Terse.pm @@ -17,6 +17,7 @@ sub terse { sub compile { my $order = shift; my @options = @_; + B::clearsym(); if (@options) { return sub { my $objname; @@ -53,10 +54,9 @@ sub B::SVOP::terse { $op->sv->terse(0); } -sub B::GVOP::terse { +sub B::PADOP::terse { my ($op, $level) = @_; - print indent($level), peekop($op), " "; - $op->gv->terse(0); + print indent($level), peekop($op), " ", $op->padix, "\n"; } sub B::PMOP::terse { @@ -78,7 +78,7 @@ sub B::COP::terse { if ($label) { $label = " label ".cstring($label); } - print indent($level), peekop($op), $label, "\n"; + print indent($level), peekop($op), $label || "", "\n"; } sub B::PV::terse { diff --git a/contrib/perl5/ext/B/B/Xref.pm b/contrib/perl5/ext/B/B/Xref.pm index 0102856919ac..b4078b8bd39a 100644 --- a/contrib/perl5/ext/B/B/Xref.pm +++ b/contrib/perl5/ext/B/B/Xref.pm @@ -85,11 +85,10 @@ Malcolm Beattie, mbeattie@sable.ox.ac.uk. =cut use strict; -use B qw(peekop class comppadlist main_start svref_2object walksymtable); - -# Constants (should probably be elsewhere) -sub OPpLVAL_INTRO () { 128 } -sub SVf_POK () { 0x40000 } +use Config; +use B qw(peekop class comppadlist main_start svref_2object walksymtable + OPpLVAL_INTRO SVf_POK + ); sub UNKNOWN { ["?", "?", "?"] } @@ -135,17 +134,28 @@ sub process { sub load_pad { my $padlist = shift; - my ($namelistav, @namelist, $ix); + my ($namelistav, $vallistav, @namelist, $ix); @pad = (); return if class($padlist) eq "SPECIAL"; - ($namelistav) = $padlist->ARRAY; + ($namelistav,$vallistav) = $padlist->ARRAY; @namelist = $namelistav->ARRAY; for ($ix = 1; $ix < @namelist; $ix++) { my $namesv = $namelist[$ix]; next if class($namesv) eq "SPECIAL"; - my ($type, $name) = $namesv->PV =~ /^(.)(.*)$/; + my ($type, $name) = $namesv->PV =~ /^(.)([^\0]*)(\0.*)?$/; $pad[$ix] = ["(lexical)", $type, $name]; } + if ($Config{useithreads}) { + my (@vallist); + @vallist = $vallistav->ARRAY; + for ($ix = 1; $ix < @vallist; $ix++) { + my $valsv = $vallist[$ix]; + next unless class($valsv) eq "GV"; + # these pad GVs don't have corresponding names, so same @pad + # array can be used without collisions + $pad[$ix] = [$valsv->STASH->NAME, "*", $valsv->NAME]; + } + } } sub xref { @@ -155,28 +165,24 @@ sub xref { last if $done{$$op}++; warn sprintf("top = [%s, %s, %s]\n", @$top) if $debug_top; warn peekop($op), "\n" if $debug_op; - my $ppname = $op->ppaddr; - if ($ppname =~ /^pp_(or|and|mapwhile|grepwhile)$/) { + my $opname = $op->name; + if ($opname =~ /^(or|and|mapwhile|grepwhile|range|cond_expr)$/) { xref($op->other); - } elsif ($ppname eq "pp_match" || $ppname eq "pp_subst") { + } elsif ($opname eq "match" || $opname eq "subst") { xref($op->pmreplstart); - } elsif ($ppname eq "pp_substcont") { + } elsif ($opname eq "substcont") { xref($op->other->pmreplstart); $op = $op->other; redo; - } elsif ($ppname eq "pp_cond_expr") { - # pp_cond_expr never returns op_next - xref($op->true); - $op = $op->false; - redo; - } elsif ($ppname eq "pp_enterloop") { + } elsif ($opname eq "enterloop") { xref($op->redoop); xref($op->nextop); xref($op->lastop); - } elsif ($ppname eq "pp_subst") { + } elsif ($opname eq "subst") { xref($op->pmreplstart); } else { no strict 'refs'; + my $ppname = "pp_$opname"; &$ppname($op) if defined(&$ppname); } } @@ -207,7 +213,7 @@ sub xref_main { sub pp_nextstate { my $op = shift; - $file = $op->filegv->SV->PV; + $file = $op->file; $line = $op->line; $top = UNKNOWN; } @@ -235,23 +241,45 @@ sub pp_rv2gv { deref($top, "*"); } sub pp_gvsv { my $op = shift; - my $gv = $op->gv; - $top = [$gv->STASH->NAME, '$', $gv->NAME]; + my $gv; + if ($Config{useithreads}) { + $top = $pad[$op->padix]; + $top = UNKNOWN unless $top; + $top->[1] = '$'; + } + else { + $gv = $op->gv; + $top = [$gv->STASH->NAME, '$', $gv->NAME]; + } process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used"); } sub pp_gv { my $op = shift; - my $gv = $op->gv; - $top = [$gv->STASH->NAME, "*", $gv->NAME]; + my $gv; + if ($Config{useithreads}) { + $top = $pad[$op->padix]; + $top = UNKNOWN unless $top; + $top->[1] = '*'; + } + else { + $gv = $op->gv; + $top = [$gv->STASH->NAME, "*", $gv->NAME]; + } process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used"); } sub pp_const { my $op = shift; my $sv = $op->sv; - $top = ["?", "", - (class($sv) ne "SPECIAL" && $sv->FLAGS & SVf_POK) ? $sv->PV : "?"]; + # constant could be in the pad (under useithreads) + if ($$sv) { + $top = ["?", "", + (class($sv) ne "SPECIAL" && $sv->FLAGS & SVf_POK) ? $sv->PV : "?"]; + } + else { + $top = $pad[$op->targ]; + } } sub pp_method { @@ -278,7 +306,7 @@ sub B::GV::xref { my $cv = $gv->CV; if ($$cv) { #return if $done{$$cv}++; - $file = $gv->FILEGV->SV->PV; + $file = $gv->FILE; $line = $gv->LINE; process([$gv->STASH->NAME, "&", $gv->NAME], "subdef"); push(@todo, $cv); @@ -286,7 +314,7 @@ sub B::GV::xref { my $form = $gv->FORM; if ($$form) { return if $done{$$form}++; - $file = $gv->FILEGV->SV->PV; + $file = $gv->FILE; $line = $gv->LINE; process([$gv->STASH->NAME, "", $gv->NAME], "formdef"); } @@ -296,7 +324,7 @@ sub xref_definitions { my ($pack, %exclude); return if $nodefs; $subname = "(definitions)"; - foreach $pack (qw(B O AutoLoader DynaLoader Config DB VMS + foreach $pack (qw(B O AutoLoader DynaLoader XSLoader Config DB VMS strict vars FileHandle Exporter Carp)) { $exclude{$pack."::"} = 1; } diff --git a/contrib/perl5/ext/B/Makefile.PL b/contrib/perl5/ext/B/Makefile.PL index 80e5e1b905d4..cb9696bf4164 100644 --- a/contrib/perl5/ext/B/Makefile.PL +++ b/contrib/perl5/ext/B/Makefile.PL @@ -16,31 +16,21 @@ if ($^O eq 'MSWin32') { WriteMakefile( NAME => "B", VERSION => "a5", - MAN3PODS => {}, + PL_FILES => { 'defsubs_h.PL' => 'defsubs.h' }, + MAN3PODS => {}, clean => { - FILES => "perl$e byteperl$e *$o B.c *~" + FILES => "perl$e *$o B.c defsubs.h *~" } -); +); -sub MY::post_constants { - "\nLIBS = $Config{libs}\n" +package MY; + +sub post_constants { + "\nLIBS = $Config::Config{libs}\n" +} + +sub postamble { +' +B$(OBJ_EXT) : defsubs.h +' } - -# Leave out doing byteperl for now. Probably should be built in the -# core directory or somewhere else rather than here -#sub MY::top_targets { -# my $self = shift; -# my $targets = $self->MM::top_targets(); -# $targets =~ s/^(all ::.*)$/$1 byteperl$e/m; -# return <<"EOT" . $targets; - -# -# byteperl is *not* a standard perl+XSUB executable. It's a special -# program for running standalone bytecode executables. It isn't an XSUB -# at the moment because a standlone Perl program needs to set up curpad -# which is overwritten on exit from an XSUB. -# -#byteperl$e : byteperl$o B$o \$(PERL_SRC)/byterun$o -# \$(CC) ${exeout_flag}byteperl$e byteperl$o B$o byterun$o \$(LDFLAGS) \$(PERL_ARCHLIB)/CORE/$Config{libperl} \$(LIBS) -#EOT -#} diff --git a/contrib/perl5/ext/B/NOTES b/contrib/perl5/ext/B/NOTES index ee10ba03e974..89d03ba9a231 100644 --- a/contrib/perl5/ext/B/NOTES +++ b/contrib/perl5/ext/B/NOTES @@ -161,8 +161,8 @@ O module it should return a sub ref (usually a closure) to perform the actual compilation. When O regains control, it ensures that the "-c" option is forced (so that the program being compiled doesn't - end up running) and registers an END block to call back the sub ref + end up running) and registers a CHECK block to call back the sub ref returned from the backend's compile(). Perl then continues by parsing prog.pl (just as it would with "perl -c prog.pl") and after - doing so, assuming there are no parse-time errors, the END block + doing so, assuming there are no parse-time errors, the CHECK block of O gets called and the actual backend compilation happens. Phew. diff --git a/contrib/perl5/ext/B/O.pm b/contrib/perl5/ext/B/O.pm index ad391a3f4a4f..352f8d42069e 100644 --- a/contrib/perl5/ext/B/O.pm +++ b/contrib/perl5/ext/B/O.pm @@ -11,7 +11,7 @@ sub import { my $compilesub = &{"B::${backend}::compile"}(@options); if (ref($compilesub) eq "CODE") { minus_c; - eval 'END { &$compilesub() }'; + eval 'CHECK { &$compilesub() }'; } else { die $compilesub; } @@ -59,7 +59,7 @@ C module and calls the C function in that package, passing it OPTIONS. That function is expected to return a sub reference which we'll call CALLBACK. Next, the "compile-only" flag is switched on (equivalent to the command-line option C<-c>) -and an END block is registered which calls CALLBACK. Thus the main +and a CHECK block is registered which calls CALLBACK. Thus the main Perl program mentioned on the command-line is read in, parsed and compiled into internal syntax tree form. Since the C<-c> flag is set, the program does not start running (excepting BEGIN blocks of diff --git a/contrib/perl5/ext/B/defsubs_h.PL b/contrib/perl5/ext/B/defsubs_h.PL new file mode 100644 index 000000000000..80ef936fcecf --- /dev/null +++ b/contrib/perl5/ext/B/defsubs_h.PL @@ -0,0 +1,35 @@ +# Do not remove the following line; MakeMaker relies on it to identify +# this file as a template for defsubs.h +# Extracting defsubs.h (with variable substitutions) +#!perl +my ($out) = __FILE__ =~ /(^.*)\.PL/i; +$out =~ s/_h$/.h/; +open(OUT,">$out") || die "Cannot open $file:$!"; +print "Extracting $out...\n"; +foreach my $const (qw(AVf_REAL + HEf_SVKEY + SVf_IOK SVf_IVisUV SVf_NOK SVf_POK + SVf_ROK SVp_IOK SVp_POK )) + { + doconst($const); + } +foreach my $file (qw(op.h cop.h)) + { + open(OPH,"../../$file") || die "Cannot open ../../$file:$!"; + while () + { + doconst($1) if (/#define\s+(\w+)\s+([\(\)\|\dx]+)\s*(?:$|\/\*)/); + } + close(OPH); + } +close(OUT); + +sub doconst +{ + my $sym = shift; + my $l = length($sym); + print OUT <<"END"; + newCONSTSUB(stash,"$sym",newSViv($sym)); + av_push(export_ok,newSVpvn("$sym",$l)); +END +} diff --git a/contrib/perl5/ext/B/ramblings/flip-flop b/contrib/perl5/ext/B/ramblings/flip-flop index 183d541b9827..e0cb8ff62052 100644 --- a/contrib/perl5/ext/B/ramblings/flip-flop +++ b/contrib/perl5/ext/B/ramblings/flip-flop @@ -1,21 +1,24 @@ PP(pp_range) { if (GIMME == G_ARRAY) - return cCONDOP->op_true; - return SvTRUEx(PAD_SV(op->op_targ)) ? cCONDOP->op_false : cCONDOP->op_true; + return NORMAL; + if (SvTRUEx(PAD_SV(PL_op->op_targ))) + return cLOGOP->op_other; + else + return NORMAL; } -pp_range is a CONDOP. -In array context, it just returns op_true. +pp_range is a LOGOP. +In array context, it just returns op_next. In scalar context it checks the truth of targ and returns -op_false if true, op_true if false. +op_other if true, op_next if false. flip is an UNOP. -It "looks after" its child which is always a pp_range CONDOP. -In array context, it just returns the child's op_false. +It "looks after" its child which is always a pp_range LOGOP. +In array context, it just returns the child's op_other. In scalar context, there are three possible outcomes: (1) set child's targ to 1, our targ to 1 and return op_next. - (2) set child's targ to 1, our targ to 0, sp-- and return child's op_false. + (2) set child's targ to 1, our targ to 0, sp-- and return child's op_other. (3) Blank targ and TOPs and return op_next. Case 1 happens for a "..." with a matching lineno... or true TOPs. Case 2 happens for a ".." with a matching lineno... or true TOPs. @@ -37,14 +40,14 @@ Case 3 happens for a non-matching lineno or false TOPs. /* range */ if (SvTRUE(curpad[op->op_targ])) - goto label(op_false); -/* op_true */ + goto label(op_other); +/* op_next */ ... /* flip */ -/* For "..." returns op_next. For ".." returns op_next or op_first->op_false */ +/* For "..." returns op_next. For ".." returns op_next or op_first->op_other */ /* end of basic block */ goto out; -label(range op_false): +label(range op_other): ... /* flop */ out: diff --git a/contrib/perl5/ext/B/ramblings/runtime.porting b/contrib/perl5/ext/B/ramblings/runtime.porting index 4699b255cf4a..d58b01105e6b 100644 --- a/contrib/perl5/ext/B/ramblings/runtime.porting +++ b/contrib/perl5/ext/B/ramblings/runtime.porting @@ -33,8 +33,10 @@ glob 5 2 do_readline readline 8 2 do_readline rcatline 8 2 regcmaybe 8 1 +regcreset 8 1 regcomp 8 9 pregcomp match 8 10 +qr 8 1 subst 8 10 substcont 8 7 trans 7 4 do_trans @@ -170,6 +172,7 @@ orassign 7 3 modifies flow of control method 8 5 entersub 10 7 leavesub 10 5 +leavesublv caller 2 8 warn 9 3 die 9 3 @@ -212,6 +215,7 @@ leavewrite 4 5 prtf 4 4 do_sprintf print 8 6 sysopen 8 2 +sysseek 8 2 sysread 8 4 syswrite 8 4 pp_send send 8 4 @@ -347,4 +351,7 @@ sgrent egrent getlogin syscall - \ No newline at end of file +lock 6 1 +threadsv 6 2 unused if not USE_THREADS +setstate 1 1 currently unused anywhere +method_named 10 2 diff --git a/contrib/perl5/ext/B/typemap b/contrib/perl5/ext/B/typemap index 7206a6a2e112..bafba1c8e4b5 100644 --- a/contrib/perl5/ext/B/typemap +++ b/contrib/perl5/ext/B/typemap @@ -4,11 +4,10 @@ B::OP T_OP_OBJ B::UNOP T_OP_OBJ B::BINOP T_OP_OBJ B::LOGOP T_OP_OBJ -B::CONDOP T_OP_OBJ B::LISTOP T_OP_OBJ B::PMOP T_OP_OBJ B::SVOP T_OP_OBJ -B::GVOP T_OP_OBJ +B::PADOP T_OP_OBJ B::PVOP T_OP_OBJ B::CVOP T_OP_OBJ B::LOOP T_OP_OBJ @@ -31,12 +30,13 @@ B::IO T_SV_OBJ B::MAGIC T_MG_OBJ SSize_t T_IV STRLEN T_IV +PADOFFSET T_UV INPUT T_OP_OBJ if (SvROK($arg)) { IV tmp = SvIV((SV*)SvRV($arg)); - $var = ($type) tmp; + $var = INT2PTR($type,tmp); } else croak(\"$var is not a reference\") @@ -44,7 +44,7 @@ T_OP_OBJ T_SV_OBJ if (SvROK($arg)) { IV tmp = SvIV((SV*)SvRV($arg)); - $var = ($type) tmp; + $var = INT2PTR($type,tmp); } else croak(\"$var is not a reference\") @@ -52,18 +52,18 @@ T_SV_OBJ T_MG_OBJ if (SvROK($arg)) { IV tmp = SvIV((SV*)SvRV($arg)); - $var = ($type) tmp; + $var = INT2PTR($type,tmp); } else croak(\"$var is not a reference\") OUTPUT T_OP_OBJ - sv_setiv(newSVrv($arg, cc_opclassname((OP*)$var)), (IV)$var); + sv_setiv(newSVrv($arg, cc_opclassname(aTHX_ (OP*)$var)), PTR2IV($var)); T_SV_OBJ - make_sv_object(($arg), (SV*)($var)); + make_sv_object(aTHX_ ($arg), (SV*)($var)); T_MG_OBJ - sv_setiv(newSVrv($arg, "B::MAGIC"), (IV)$var); + sv_setiv(newSVrv($arg, "B::MAGIC"), PTR2IV($var)); diff --git a/contrib/perl5/ext/ByteLoader/ByteLoader.pm b/contrib/perl5/ext/ByteLoader/ByteLoader.pm new file mode 100644 index 000000000000..286d74697eec --- /dev/null +++ b/contrib/perl5/ext/ByteLoader/ByteLoader.pm @@ -0,0 +1,40 @@ +package ByteLoader; + +use XSLoader (); + +$VERSION = 0.03; + +XSLoader::load 'ByteLoader', $VERSION; + +# Preloaded methods go here. + +1; +__END__ + +=head1 NAME + +ByteLoader - load byte compiled perl code + +=head1 SYNOPSIS + + use ByteLoader 0.03; + + + use ByteLoader 0.03; + + +=head1 DESCRIPTION + +This module is used to load byte compiled perl code. It uses the source +filter mechanism to read the byte code and insert it into the compiled +code at the appropriate point. + +=head1 AUTHOR + +Tom Hughes based on the ideas of Tim Bunce and others. + +=head1 SEE ALSO + +perl(1). + +=cut diff --git a/contrib/perl5/ext/ByteLoader/ByteLoader.xs b/contrib/perl5/ext/ByteLoader/ByteLoader.xs new file mode 100644 index 000000000000..7c3746bba70d --- /dev/null +++ b/contrib/perl5/ext/ByteLoader/ByteLoader.xs @@ -0,0 +1,79 @@ +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" +#include "byterun.h" + +static int +xgetc(PerlIO *io) +{ + dTHX; + return PerlIO_getc(io); +} + +static int +xfread(char *buf, size_t size, size_t n, PerlIO *io) +{ + dTHX; + int i = PerlIO_read(io, buf, n * size); + if (i > 0) + i /= size; + return i; +} + +static void +freadpv(U32 len, void *data, XPV *pv) +{ + dTHX; + New(666, pv->xpv_pv, len, char); + PerlIO_read((PerlIO*)data, (void*)pv->xpv_pv, len); + pv->xpv_len = len; + pv->xpv_cur = len - 1; +} + +static I32 +byteloader_filter(pTHXo_ int idx, SV *buf_sv, int maxlen) +{ + dTHR; + OP *saveroot = PL_main_root; + OP *savestart = PL_main_start; + struct bytestream bs; + + bs.data = PL_rsfp; + bs.pfgetc = (int(*) (void*))xgetc; + bs.pfread = (int(*) (char*,size_t,size_t,void*))xfread; + bs.pfreadpv = freadpv; + + byterun(aTHXo_ bs); + + if (PL_in_eval) { + OP *o; + + PL_eval_start = PL_main_start; + + o = newSVOP(OP_CONST, 0, newSViv(1)); + PL_eval_root = newLISTOP(OP_LINESEQ, 0, PL_main_root, o); + PL_main_root->op_next = o; + PL_eval_root = newUNOP(OP_LEAVEEVAL, 0, PL_eval_root); + o->op_next = PL_eval_root; + + PL_main_root = saveroot; + PL_main_start = savestart; + } + + return 0; +} + +MODULE = ByteLoader PACKAGE = ByteLoader + +PROTOTYPES: ENABLE + +void +import(...) + PPCODE: + filter_add(byteloader_filter, NULL); + +void +unimport(...) + PPCODE: + filter_del(byteloader_filter); diff --git a/contrib/perl5/ext/ByteLoader/Makefile.PL b/contrib/perl5/ext/ByteLoader/Makefile.PL new file mode 100644 index 000000000000..c3cfcc7c2fe5 --- /dev/null +++ b/contrib/perl5/ext/ByteLoader/Makefile.PL @@ -0,0 +1,9 @@ +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => 'ByteLoader', + VERSION_FROM => 'ByteLoader.pm', + XSPROTOARG => '-noprototypes', + MAN3PODS => {}, # Pods will be built by installman. + OBJECT => 'byterun$(OBJ_EXT) ByteLoader$(OBJ_EXT)', +); diff --git a/contrib/perl5/ext/ByteLoader/bytecode.h b/contrib/perl5/ext/ByteLoader/bytecode.h new file mode 100644 index 000000000000..1621fed4eba4 --- /dev/null +++ b/contrib/perl5/ext/ByteLoader/bytecode.h @@ -0,0 +1,161 @@ +typedef char *pvcontents; +typedef char *strconst; +typedef U32 PV; +typedef char *op_tr_array; +typedef int comment_t; +typedef SV *svindex; +typedef OP *opindex; +typedef IV IV64; + +#define BGET_FREAD(argp, len, nelem) \ + bs.pfread((char*)(argp),(len),(nelem),bs.data) +#define BGET_FGETC() bs.pfgetc(bs.data) + +#define BGET_U32(arg) \ + BGET_FREAD(&arg, sizeof(U32), 1); arg = PerlSock_ntohl((U32)arg) +#define BGET_I32(arg) \ + BGET_FREAD(&arg, sizeof(I32), 1); arg = (I32)PerlSock_ntohl((U32)arg) +#define BGET_U16(arg) \ + BGET_FREAD(&arg, sizeof(U16), 1); arg = PerlSock_ntohs((U16)arg) +#define BGET_U8(arg) arg = BGET_FGETC() + +#define BGET_PV(arg) STMT_START { \ + BGET_U32(arg); \ + if (arg) \ + bs.pfreadpv(arg, bs.data, &bytecode_pv); \ + else { \ + bytecode_pv.xpv_pv = 0; \ + bytecode_pv.xpv_len = 0; \ + bytecode_pv.xpv_cur = 0; \ + } \ + } STMT_END + +#ifdef BYTELOADER_LOG_COMMENTS +# define BGET_comment_t(arg) \ + STMT_START { \ + char buf[1024]; \ + int i = 0; \ + do { \ + arg = BGET_FGETC(); \ + buf[i++] = (char)arg; \ + } while (arg != '\n' && arg != EOF); \ + buf[i] = '\0'; \ + PerlIO_printf(PerlIO_stderr(), "%s", buf); \ + } STMT_END +#else +# define BGET_comment_t(arg) \ + do { arg = BGET_FGETC(); } while (arg != '\n' && arg != EOF) +#endif + +/* + * In the following, sizeof(IV)*4 is just a way of encoding 32 on 64-bit-IV + * machines such that 32-bit machine compilers don't whine about the shift + * count being too high even though the code is never reached there. + */ +#define BGET_IV64(arg) STMT_START { \ + U32 hi, lo; \ + BGET_U32(hi); \ + BGET_U32(lo); \ + if (sizeof(IV) == 8) \ + arg = ((IV)hi << (sizeof(IV)*4) | (IV)lo); \ + else if (((I32)hi == -1 && (I32)lo < 0) \ + || ((I32)hi == 0 && (I32)lo >= 0)) { \ + arg = (I32)lo; \ + } \ + else { \ + bytecode_iv_overflows++; \ + arg = 0; \ + } \ + } STMT_END + +#define BGET_op_tr_array(arg) do { \ + unsigned short *ary; \ + int i; \ + New(666, ary, 256, unsigned short); \ + BGET_FREAD(ary, 256, 2); \ + for (i = 0; i < 256; i++) \ + ary[i] = PerlSock_ntohs(ary[i]); \ + arg = (char *) ary; \ + } while (0) + +#define BGET_pvcontents(arg) arg = bytecode_pv.xpv_pv +#define BGET_strconst(arg) STMT_START { \ + for (arg = PL_tokenbuf; (*arg = BGET_FGETC()); arg++) /* nothing */; \ + arg = PL_tokenbuf; \ + } STMT_END + +#define BGET_NV(arg) STMT_START { \ + char *str; \ + BGET_strconst(str); \ + arg = Atof(str); \ + } STMT_END + +#define BGET_objindex(arg, type) STMT_START { \ + U32 ix; \ + BGET_U32(ix); \ + arg = (type)bytecode_obj_list[ix]; \ + } STMT_END +#define BGET_svindex(arg) BGET_objindex(arg, svindex) +#define BGET_opindex(arg) BGET_objindex(arg, opindex) + +#define BSET_ldspecsv(sv, arg) sv = specialsv_list[arg] + +#define BSET_sv_refcnt_add(svrefcnt, arg) svrefcnt += arg +#define BSET_gp_refcnt_add(gprefcnt, arg) gprefcnt += arg +#define BSET_gp_share(sv, arg) STMT_START { \ + gp_free((GV*)sv); \ + GvGP(sv) = GvGP(arg); \ + } STMT_END + +#define BSET_gv_fetchpv(sv, arg) sv = (SV*)gv_fetchpv(arg, TRUE, SVt_PV) +#define BSET_gv_stashpv(sv, arg) sv = (SV*)gv_stashpv(arg, TRUE) +#define BSET_sv_magic(sv, arg) sv_magic(sv, Nullsv, arg, 0, 0) +#define BSET_mg_pv(mg, arg) mg->mg_ptr = arg; mg->mg_len = bytecode_pv.xpv_cur +#define BSET_sv_upgrade(sv, arg) (void)SvUPGRADE(sv, arg) +#define BSET_xpv(sv) do { \ + SvPV_set(sv, bytecode_pv.xpv_pv); \ + SvCUR_set(sv, bytecode_pv.xpv_cur); \ + SvLEN_set(sv, bytecode_pv.xpv_len); \ + } while (0) +#define BSET_av_extend(sv, arg) av_extend((AV*)sv, arg) + +#define BSET_av_push(sv, arg) av_push((AV*)sv, arg) +#define BSET_hv_store(sv, arg) \ + hv_store((HV*)sv, bytecode_pv.xpv_pv, bytecode_pv.xpv_cur, arg, 0) +#define BSET_pv_free(pv) Safefree(pv.xpv_pv) +#define BSET_pregcomp(o, arg) \ + ((PMOP*)o)->op_pmregexp = arg ? \ + CALLREGCOMP(aTHX_ arg, arg + bytecode_pv.xpv_cur, ((PMOP*)o)) : 0 +#define BSET_newsv(sv, arg) sv = NEWSV(666,0); SvUPGRADE(sv, arg) +#define BSET_newop(o, arg) ((o = (OP*)safemalloc(optype_size[arg])), \ + memzero((char*)o,optype_size[arg])) +#define BSET_newopn(o, arg) STMT_START { \ + OP *oldop = o; \ + BSET_newop(o, arg); \ + oldop->op_next = o; \ + } STMT_END + +#define BSET_ret(foo) return + +/* + * Kludge special-case workaround for OP_MAPSTART + * which needs the ppaddr for OP_GREPSTART. Blech. + */ +#define BSET_op_type(o, arg) STMT_START { \ + o->op_type = arg; \ + if (arg == OP_MAPSTART) \ + arg = OP_GREPSTART; \ + o->op_ppaddr = PL_ppaddr[arg]; \ + } STMT_END +#define BSET_op_ppaddr(o, arg) Perl_croak(aTHX_ "op_ppaddr not yet implemented") +#define BSET_curpad(pad, arg) STMT_START { \ + PL_comppad = (AV *)arg; \ + pad = AvARRAY(arg); \ + } STMT_END +#define BSET_cop_file(cop, arg) CopFILE_set(cop,arg) +#define BSET_cop_line(cop, arg) CopLINE_set(cop,arg) +#define BSET_cop_stashpv(cop, arg) CopSTASHPV_set(cop,arg) + +#define BSET_OBJ_STORE(obj, ix) \ + (I32)ix > bytecode_obj_list_fill ? \ + bset_obj_store(aTHXo_ obj, (I32)ix) : (bytecode_obj_list[ix] = obj) diff --git a/contrib/perl5/ext/ByteLoader/byterun.c b/contrib/perl5/ext/ByteLoader/byterun.c new file mode 100644 index 000000000000..a1044ab2c0f2 --- /dev/null +++ b/contrib/perl5/ext/ByteLoader/byterun.c @@ -0,0 +1,899 @@ +/* + * Copyright (c) 1996-1999 Malcolm Beattie + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + */ +/* + * This file is autogenerated from bytecode.pl. Changes made here will be lost. + */ + +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#define NO_XSLOCKS +#include "XSUB.h" + +#ifdef PERL_OBJECT +#undef CALL_FPTR +#define CALL_FPTR(fptr) (pPerl->*fptr) +#undef PL_ppaddr +#define PL_ppaddr (*get_ppaddr()) +#endif + +#include "byterun.h" +#include "bytecode.h" + + +static int optype_size[] = { + sizeof(OP), + sizeof(UNOP), + sizeof(BINOP), + sizeof(LOGOP), + sizeof(LISTOP), + sizeof(PMOP), + sizeof(SVOP), + sizeof(PADOP), + sizeof(PVOP), + sizeof(LOOP), + sizeof(COP) +}; + +static SV *specialsv_list[4]; + +static int bytecode_iv_overflows = 0; +static SV *bytecode_sv; +static XPV bytecode_pv; +static void **bytecode_obj_list; +static I32 bytecode_obj_list_fill = -1; + +void * +bset_obj_store(pTHXo_ void *obj, I32 ix) +{ + if (ix > bytecode_obj_list_fill) { + if (bytecode_obj_list_fill == -1) + New(666, bytecode_obj_list, ix + 1, void*); + else + Renew(bytecode_obj_list, ix + 1, void*); + bytecode_obj_list_fill = ix; + } + bytecode_obj_list[ix] = obj; + return obj; +} + +void +byterun(pTHXo_ struct bytestream bs) +{ + dTHR; + int insn; + + specialsv_list[0] = Nullsv; + specialsv_list[1] = &PL_sv_undef; + specialsv_list[2] = &PL_sv_yes; + specialsv_list[3] = &PL_sv_no; + + while ((insn = BGET_FGETC()) != EOF) { + switch (insn) { + case INSN_COMMENT: /* 35 */ + { + comment_t arg; + BGET_comment_t(arg); + arg = arg; + break; + } + case INSN_NOP: /* 10 */ + { + break; + } + case INSN_RET: /* 0 */ + { + BSET_ret(none); + break; + } + case INSN_LDSV: /* 1 */ + { + svindex arg; + BGET_svindex(arg); + bytecode_sv = arg; + break; + } + case INSN_LDOP: /* 2 */ + { + opindex arg; + BGET_opindex(arg); + PL_op = arg; + break; + } + case INSN_STSV: /* 3 */ + { + U32 arg; + BGET_U32(arg); + BSET_OBJ_STORE(bytecode_sv, arg); + break; + } + case INSN_STOP: /* 4 */ + { + U32 arg; + BGET_U32(arg); + BSET_OBJ_STORE(PL_op, arg); + break; + } + case INSN_LDSPECSV: /* 5 */ + { + U8 arg; + BGET_U8(arg); + BSET_ldspecsv(bytecode_sv, arg); + break; + } + case INSN_NEWSV: /* 6 */ + { + U8 arg; + BGET_U8(arg); + BSET_newsv(bytecode_sv, arg); + break; + } + case INSN_NEWOP: /* 7 */ + { + U8 arg; + BGET_U8(arg); + BSET_newop(PL_op, arg); + break; + } + case INSN_NEWOPN: /* 8 */ + { + U8 arg; + BGET_U8(arg); + BSET_newopn(PL_op, arg); + break; + } + case INSN_NEWPV: /* 9 */ + { + PV arg; + BGET_PV(arg); + break; + } + case INSN_PV_CUR: /* 11 */ + { + STRLEN arg; + BGET_U32(arg); + bytecode_pv.xpv_cur = arg; + break; + } + case INSN_PV_FREE: /* 12 */ + { + BSET_pv_free(bytecode_pv); + break; + } + case INSN_SV_UPGRADE: /* 13 */ + { + char arg; + BGET_U8(arg); + BSET_sv_upgrade(bytecode_sv, arg); + break; + } + case INSN_SV_REFCNT: /* 14 */ + { + U32 arg; + BGET_U32(arg); + SvREFCNT(bytecode_sv) = arg; + break; + } + case INSN_SV_REFCNT_ADD: /* 15 */ + { + I32 arg; + BGET_I32(arg); + BSET_sv_refcnt_add(SvREFCNT(bytecode_sv), arg); + break; + } + case INSN_SV_FLAGS: /* 16 */ + { + U32 arg; + BGET_U32(arg); + SvFLAGS(bytecode_sv) = arg; + break; + } + case INSN_XRV: /* 17 */ + { + svindex arg; + BGET_svindex(arg); + SvRV(bytecode_sv) = arg; + break; + } + case INSN_XPV: /* 18 */ + { + BSET_xpv(bytecode_sv); + break; + } + case INSN_XIV32: /* 19 */ + { + I32 arg; + BGET_I32(arg); + SvIVX(bytecode_sv) = arg; + break; + } + case INSN_XIV64: /* 20 */ + { + IV64 arg; + BGET_IV64(arg); + SvIVX(bytecode_sv) = arg; + break; + } + case INSN_XNV: /* 21 */ + { + NV arg; + BGET_NV(arg); + SvNVX(bytecode_sv) = arg; + break; + } + case INSN_XLV_TARGOFF: /* 22 */ + { + STRLEN arg; + BGET_U32(arg); + LvTARGOFF(bytecode_sv) = arg; + break; + } + case INSN_XLV_TARGLEN: /* 23 */ + { + STRLEN arg; + BGET_U32(arg); + LvTARGLEN(bytecode_sv) = arg; + break; + } + case INSN_XLV_TARG: /* 24 */ + { + svindex arg; + BGET_svindex(arg); + LvTARG(bytecode_sv) = arg; + break; + } + case INSN_XLV_TYPE: /* 25 */ + { + char arg; + BGET_U8(arg); + LvTYPE(bytecode_sv) = arg; + break; + } + case INSN_XBM_USEFUL: /* 26 */ + { + I32 arg; + BGET_I32(arg); + BmUSEFUL(bytecode_sv) = arg; + break; + } + case INSN_XBM_PREVIOUS: /* 27 */ + { + U16 arg; + BGET_U16(arg); + BmPREVIOUS(bytecode_sv) = arg; + break; + } + case INSN_XBM_RARE: /* 28 */ + { + U8 arg; + BGET_U8(arg); + BmRARE(bytecode_sv) = arg; + break; + } + case INSN_XFM_LINES: /* 29 */ + { + I32 arg; + BGET_I32(arg); + FmLINES(bytecode_sv) = arg; + break; + } + case INSN_XIO_LINES: /* 30 */ + { + long arg; + BGET_I32(arg); + IoLINES(bytecode_sv) = arg; + break; + } + case INSN_XIO_PAGE: /* 31 */ + { + long arg; + BGET_I32(arg); + IoPAGE(bytecode_sv) = arg; + break; + } + case INSN_XIO_PAGE_LEN: /* 32 */ + { + long arg; + BGET_I32(arg); + IoPAGE_LEN(bytecode_sv) = arg; + break; + } + case INSN_XIO_LINES_LEFT: /* 33 */ + { + long arg; + BGET_I32(arg); + IoLINES_LEFT(bytecode_sv) = arg; + break; + } + case INSN_XIO_TOP_NAME: /* 34 */ + { + pvcontents arg; + BGET_pvcontents(arg); + IoTOP_NAME(bytecode_sv) = arg; + break; + } + case INSN_XIO_TOP_GV: /* 36 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&IoTOP_GV(bytecode_sv) = arg; + break; + } + case INSN_XIO_FMT_NAME: /* 37 */ + { + pvcontents arg; + BGET_pvcontents(arg); + IoFMT_NAME(bytecode_sv) = arg; + break; + } + case INSN_XIO_FMT_GV: /* 38 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&IoFMT_GV(bytecode_sv) = arg; + break; + } + case INSN_XIO_BOTTOM_NAME: /* 39 */ + { + pvcontents arg; + BGET_pvcontents(arg); + IoBOTTOM_NAME(bytecode_sv) = arg; + break; + } + case INSN_XIO_BOTTOM_GV: /* 40 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&IoBOTTOM_GV(bytecode_sv) = arg; + break; + } + case INSN_XIO_SUBPROCESS: /* 41 */ + { + short arg; + BGET_U16(arg); + IoSUBPROCESS(bytecode_sv) = arg; + break; + } + case INSN_XIO_TYPE: /* 42 */ + { + char arg; + BGET_U8(arg); + IoTYPE(bytecode_sv) = arg; + break; + } + case INSN_XIO_FLAGS: /* 43 */ + { + char arg; + BGET_U8(arg); + IoFLAGS(bytecode_sv) = arg; + break; + } + case INSN_XCV_STASH: /* 44 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&CvSTASH(bytecode_sv) = arg; + break; + } + case INSN_XCV_START: /* 45 */ + { + opindex arg; + BGET_opindex(arg); + CvSTART(bytecode_sv) = arg; + break; + } + case INSN_XCV_ROOT: /* 46 */ + { + opindex arg; + BGET_opindex(arg); + CvROOT(bytecode_sv) = arg; + break; + } + case INSN_XCV_GV: /* 47 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&CvGV(bytecode_sv) = arg; + break; + } + case INSN_XCV_FILE: /* 48 */ + { + pvcontents arg; + BGET_pvcontents(arg); + CvFILE(bytecode_sv) = arg; + break; + } + case INSN_XCV_DEPTH: /* 49 */ + { + long arg; + BGET_I32(arg); + CvDEPTH(bytecode_sv) = arg; + break; + } + case INSN_XCV_PADLIST: /* 50 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&CvPADLIST(bytecode_sv) = arg; + break; + } + case INSN_XCV_OUTSIDE: /* 51 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&CvOUTSIDE(bytecode_sv) = arg; + break; + } + case INSN_XCV_FLAGS: /* 52 */ + { + U16 arg; + BGET_U16(arg); + CvFLAGS(bytecode_sv) = arg; + break; + } + case INSN_AV_EXTEND: /* 53 */ + { + SSize_t arg; + BGET_I32(arg); + BSET_av_extend(bytecode_sv, arg); + break; + } + case INSN_AV_PUSH: /* 54 */ + { + svindex arg; + BGET_svindex(arg); + BSET_av_push(bytecode_sv, arg); + break; + } + case INSN_XAV_FILL: /* 55 */ + { + SSize_t arg; + BGET_I32(arg); + AvFILLp(bytecode_sv) = arg; + break; + } + case INSN_XAV_MAX: /* 56 */ + { + SSize_t arg; + BGET_I32(arg); + AvMAX(bytecode_sv) = arg; + break; + } + case INSN_XAV_FLAGS: /* 57 */ + { + U8 arg; + BGET_U8(arg); + AvFLAGS(bytecode_sv) = arg; + break; + } + case INSN_XHV_RITER: /* 58 */ + { + I32 arg; + BGET_I32(arg); + HvRITER(bytecode_sv) = arg; + break; + } + case INSN_XHV_NAME: /* 59 */ + { + pvcontents arg; + BGET_pvcontents(arg); + HvNAME(bytecode_sv) = arg; + break; + } + case INSN_HV_STORE: /* 60 */ + { + svindex arg; + BGET_svindex(arg); + BSET_hv_store(bytecode_sv, arg); + break; + } + case INSN_SV_MAGIC: /* 61 */ + { + char arg; + BGET_U8(arg); + BSET_sv_magic(bytecode_sv, arg); + break; + } + case INSN_MG_OBJ: /* 62 */ + { + svindex arg; + BGET_svindex(arg); + SvMAGIC(bytecode_sv)->mg_obj = arg; + break; + } + case INSN_MG_PRIVATE: /* 63 */ + { + U16 arg; + BGET_U16(arg); + SvMAGIC(bytecode_sv)->mg_private = arg; + break; + } + case INSN_MG_FLAGS: /* 64 */ + { + U8 arg; + BGET_U8(arg); + SvMAGIC(bytecode_sv)->mg_flags = arg; + break; + } + case INSN_MG_PV: /* 65 */ + { + pvcontents arg; + BGET_pvcontents(arg); + BSET_mg_pv(SvMAGIC(bytecode_sv), arg); + break; + } + case INSN_XMG_STASH: /* 66 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&SvSTASH(bytecode_sv) = arg; + break; + } + case INSN_GV_FETCHPV: /* 67 */ + { + strconst arg; + BGET_strconst(arg); + BSET_gv_fetchpv(bytecode_sv, arg); + break; + } + case INSN_GV_STASHPV: /* 68 */ + { + strconst arg; + BGET_strconst(arg); + BSET_gv_stashpv(bytecode_sv, arg); + break; + } + case INSN_GP_SV: /* 69 */ + { + svindex arg; + BGET_svindex(arg); + GvSV(bytecode_sv) = arg; + break; + } + case INSN_GP_REFCNT: /* 70 */ + { + U32 arg; + BGET_U32(arg); + GvREFCNT(bytecode_sv) = arg; + break; + } + case INSN_GP_REFCNT_ADD: /* 71 */ + { + I32 arg; + BGET_I32(arg); + BSET_gp_refcnt_add(GvREFCNT(bytecode_sv), arg); + break; + } + case INSN_GP_AV: /* 72 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&GvAV(bytecode_sv) = arg; + break; + } + case INSN_GP_HV: /* 73 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&GvHV(bytecode_sv) = arg; + break; + } + case INSN_GP_CV: /* 74 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&GvCV(bytecode_sv) = arg; + break; + } + case INSN_GP_FILE: /* 75 */ + { + pvcontents arg; + BGET_pvcontents(arg); + GvFILE(bytecode_sv) = arg; + break; + } + case INSN_GP_IO: /* 76 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&GvIOp(bytecode_sv) = arg; + break; + } + case INSN_GP_FORM: /* 77 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&GvFORM(bytecode_sv) = arg; + break; + } + case INSN_GP_CVGEN: /* 78 */ + { + U32 arg; + BGET_U32(arg); + GvCVGEN(bytecode_sv) = arg; + break; + } + case INSN_GP_LINE: /* 79 */ + { + line_t arg; + BGET_U16(arg); + GvLINE(bytecode_sv) = arg; + break; + } + case INSN_GP_SHARE: /* 80 */ + { + svindex arg; + BGET_svindex(arg); + BSET_gp_share(bytecode_sv, arg); + break; + } + case INSN_XGV_FLAGS: /* 81 */ + { + U8 arg; + BGET_U8(arg); + GvFLAGS(bytecode_sv) = arg; + break; + } + case INSN_OP_NEXT: /* 82 */ + { + opindex arg; + BGET_opindex(arg); + PL_op->op_next = arg; + break; + } + case INSN_OP_SIBLING: /* 83 */ + { + opindex arg; + BGET_opindex(arg); + PL_op->op_sibling = arg; + break; + } + case INSN_OP_PPADDR: /* 84 */ + { + strconst arg; + BGET_strconst(arg); + BSET_op_ppaddr(PL_op->op_ppaddr, arg); + break; + } + case INSN_OP_TARG: /* 85 */ + { + PADOFFSET arg; + BGET_U32(arg); + PL_op->op_targ = arg; + break; + } + case INSN_OP_TYPE: /* 86 */ + { + OPCODE arg; + BGET_U16(arg); + BSET_op_type(PL_op, arg); + break; + } + case INSN_OP_SEQ: /* 87 */ + { + U16 arg; + BGET_U16(arg); + PL_op->op_seq = arg; + break; + } + case INSN_OP_FLAGS: /* 88 */ + { + U8 arg; + BGET_U8(arg); + PL_op->op_flags = arg; + break; + } + case INSN_OP_PRIVATE: /* 89 */ + { + U8 arg; + BGET_U8(arg); + PL_op->op_private = arg; + break; + } + case INSN_OP_FIRST: /* 90 */ + { + opindex arg; + BGET_opindex(arg); + cUNOP->op_first = arg; + break; + } + case INSN_OP_LAST: /* 91 */ + { + opindex arg; + BGET_opindex(arg); + cBINOP->op_last = arg; + break; + } + case INSN_OP_OTHER: /* 92 */ + { + opindex arg; + BGET_opindex(arg); + cLOGOP->op_other = arg; + break; + } + case INSN_OP_CHILDREN: /* 93 */ + { + U32 arg; + BGET_U32(arg); + cLISTOP->op_children = arg; + break; + } + case INSN_OP_PMREPLROOT: /* 94 */ + { + opindex arg; + BGET_opindex(arg); + cPMOP->op_pmreplroot = arg; + break; + } + case INSN_OP_PMREPLROOTGV: /* 95 */ + { + svindex arg; + BGET_svindex(arg); + *(SV**)&cPMOP->op_pmreplroot = arg; + break; + } + case INSN_OP_PMREPLSTART: /* 96 */ + { + opindex arg; + BGET_opindex(arg); + cPMOP->op_pmreplstart = arg; + break; + } + case INSN_OP_PMNEXT: /* 97 */ + { + opindex arg; + BGET_opindex(arg); + *(OP**)&cPMOP->op_pmnext = arg; + break; + } + case INSN_PREGCOMP: /* 98 */ + { + pvcontents arg; + BGET_pvcontents(arg); + BSET_pregcomp(PL_op, arg); + break; + } + case INSN_OP_PMFLAGS: /* 99 */ + { + U16 arg; + BGET_U16(arg); + cPMOP->op_pmflags = arg; + break; + } + case INSN_OP_PMPERMFLAGS: /* 100 */ + { + U16 arg; + BGET_U16(arg); + cPMOP->op_pmpermflags = arg; + break; + } + case INSN_OP_SV: /* 101 */ + { + svindex arg; + BGET_svindex(arg); + cSVOP->op_sv = arg; + break; + } + case INSN_OP_PADIX: /* 102 */ + { + PADOFFSET arg; + BGET_U32(arg); + cPADOP->op_padix = arg; + break; + } + case INSN_OP_PV: /* 103 */ + { + pvcontents arg; + BGET_pvcontents(arg); + cPVOP->op_pv = arg; + break; + } + case INSN_OP_PV_TR: /* 104 */ + { + op_tr_array arg; + BGET_op_tr_array(arg); + cPVOP->op_pv = arg; + break; + } + case INSN_OP_REDOOP: /* 105 */ + { + opindex arg; + BGET_opindex(arg); + cLOOP->op_redoop = arg; + break; + } + case INSN_OP_NEXTOP: /* 106 */ + { + opindex arg; + BGET_opindex(arg); + cLOOP->op_nextop = arg; + break; + } + case INSN_OP_LASTOP: /* 107 */ + { + opindex arg; + BGET_opindex(arg); + cLOOP->op_lastop = arg; + break; + } + case INSN_COP_LABEL: /* 108 */ + { + pvcontents arg; + BGET_pvcontents(arg); + cCOP->cop_label = arg; + break; + } + case INSN_COP_STASHPV: /* 109 */ + { + pvcontents arg; + BGET_pvcontents(arg); + BSET_cop_stashpv(cCOP, arg); + break; + } + case INSN_COP_FILE: /* 110 */ + { + pvcontents arg; + BGET_pvcontents(arg); + BSET_cop_file(cCOP, arg); + break; + } + case INSN_COP_SEQ: /* 111 */ + { + U32 arg; + BGET_U32(arg); + cCOP->cop_seq = arg; + break; + } + case INSN_COP_ARYBASE: /* 112 */ + { + I32 arg; + BGET_I32(arg); + cCOP->cop_arybase = arg; + break; + } + case INSN_COP_LINE: /* 113 */ + { + line_t arg; + BGET_U16(arg); + BSET_cop_line(cCOP, arg); + break; + } + case INSN_COP_WARNINGS: /* 114 */ + { + svindex arg; + BGET_svindex(arg); + cCOP->cop_warnings = arg; + break; + } + case INSN_MAIN_START: /* 115 */ + { + opindex arg; + BGET_opindex(arg); + PL_main_start = arg; + break; + } + case INSN_MAIN_ROOT: /* 116 */ + { + opindex arg; + BGET_opindex(arg); + PL_main_root = arg; + break; + } + case INSN_CURPAD: /* 117 */ + { + svindex arg; + BGET_svindex(arg); + BSET_curpad(PL_curpad, arg); + break; + } + default: + Perl_croak(aTHX_ "Illegal bytecode instruction %d\n", insn); + /* NOTREACHED */ + } + } +} diff --git a/contrib/perl5/ext/ByteLoader/byterun.h b/contrib/perl5/ext/ByteLoader/byterun.h new file mode 100644 index 000000000000..f0de6b482044 --- /dev/null +++ b/contrib/perl5/ext/ByteLoader/byterun.h @@ -0,0 +1,161 @@ +/* + * Copyright (c) 1996-1999 Malcolm Beattie + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + */ +/* + * This file is autogenerated from bytecode.pl. Changes made here will be lost. + */ +struct bytestream { + void *data; + int (*pfgetc)(void *); + int (*pfread)(char *, size_t, size_t, void *); + void (*pfreadpv)(U32, void *, XPV *); +}; + +enum { + INSN_RET, /* 0 */ + INSN_LDSV, /* 1 */ + INSN_LDOP, /* 2 */ + INSN_STSV, /* 3 */ + INSN_STOP, /* 4 */ + INSN_LDSPECSV, /* 5 */ + INSN_NEWSV, /* 6 */ + INSN_NEWOP, /* 7 */ + INSN_NEWOPN, /* 8 */ + INSN_NEWPV, /* 9 */ + INSN_NOP, /* 10 */ + INSN_PV_CUR, /* 11 */ + INSN_PV_FREE, /* 12 */ + INSN_SV_UPGRADE, /* 13 */ + INSN_SV_REFCNT, /* 14 */ + INSN_SV_REFCNT_ADD, /* 15 */ + INSN_SV_FLAGS, /* 16 */ + INSN_XRV, /* 17 */ + INSN_XPV, /* 18 */ + INSN_XIV32, /* 19 */ + INSN_XIV64, /* 20 */ + INSN_XNV, /* 21 */ + INSN_XLV_TARGOFF, /* 22 */ + INSN_XLV_TARGLEN, /* 23 */ + INSN_XLV_TARG, /* 24 */ + INSN_XLV_TYPE, /* 25 */ + INSN_XBM_USEFUL, /* 26 */ + INSN_XBM_PREVIOUS, /* 27 */ + INSN_XBM_RARE, /* 28 */ + INSN_XFM_LINES, /* 29 */ + INSN_XIO_LINES, /* 30 */ + INSN_XIO_PAGE, /* 31 */ + INSN_XIO_PAGE_LEN, /* 32 */ + INSN_XIO_LINES_LEFT, /* 33 */ + INSN_XIO_TOP_NAME, /* 34 */ + INSN_COMMENT, /* 35 */ + INSN_XIO_TOP_GV, /* 36 */ + INSN_XIO_FMT_NAME, /* 37 */ + INSN_XIO_FMT_GV, /* 38 */ + INSN_XIO_BOTTOM_NAME, /* 39 */ + INSN_XIO_BOTTOM_GV, /* 40 */ + INSN_XIO_SUBPROCESS, /* 41 */ + INSN_XIO_TYPE, /* 42 */ + INSN_XIO_FLAGS, /* 43 */ + INSN_XCV_STASH, /* 44 */ + INSN_XCV_START, /* 45 */ + INSN_XCV_ROOT, /* 46 */ + INSN_XCV_GV, /* 47 */ + INSN_XCV_FILE, /* 48 */ + INSN_XCV_DEPTH, /* 49 */ + INSN_XCV_PADLIST, /* 50 */ + INSN_XCV_OUTSIDE, /* 51 */ + INSN_XCV_FLAGS, /* 52 */ + INSN_AV_EXTEND, /* 53 */ + INSN_AV_PUSH, /* 54 */ + INSN_XAV_FILL, /* 55 */ + INSN_XAV_MAX, /* 56 */ + INSN_XAV_FLAGS, /* 57 */ + INSN_XHV_RITER, /* 58 */ + INSN_XHV_NAME, /* 59 */ + INSN_HV_STORE, /* 60 */ + INSN_SV_MAGIC, /* 61 */ + INSN_MG_OBJ, /* 62 */ + INSN_MG_PRIVATE, /* 63 */ + INSN_MG_FLAGS, /* 64 */ + INSN_MG_PV, /* 65 */ + INSN_XMG_STASH, /* 66 */ + INSN_GV_FETCHPV, /* 67 */ + INSN_GV_STASHPV, /* 68 */ + INSN_GP_SV, /* 69 */ + INSN_GP_REFCNT, /* 70 */ + INSN_GP_REFCNT_ADD, /* 71 */ + INSN_GP_AV, /* 72 */ + INSN_GP_HV, /* 73 */ + INSN_GP_CV, /* 74 */ + INSN_GP_FILE, /* 75 */ + INSN_GP_IO, /* 76 */ + INSN_GP_FORM, /* 77 */ + INSN_GP_CVGEN, /* 78 */ + INSN_GP_LINE, /* 79 */ + INSN_GP_SHARE, /* 80 */ + INSN_XGV_FLAGS, /* 81 */ + INSN_OP_NEXT, /* 82 */ + INSN_OP_SIBLING, /* 83 */ + INSN_OP_PPADDR, /* 84 */ + INSN_OP_TARG, /* 85 */ + INSN_OP_TYPE, /* 86 */ + INSN_OP_SEQ, /* 87 */ + INSN_OP_FLAGS, /* 88 */ + INSN_OP_PRIVATE, /* 89 */ + INSN_OP_FIRST, /* 90 */ + INSN_OP_LAST, /* 91 */ + INSN_OP_OTHER, /* 92 */ + INSN_OP_CHILDREN, /* 93 */ + INSN_OP_PMREPLROOT, /* 94 */ + INSN_OP_PMREPLROOTGV, /* 95 */ + INSN_OP_PMREPLSTART, /* 96 */ + INSN_OP_PMNEXT, /* 97 */ + INSN_PREGCOMP, /* 98 */ + INSN_OP_PMFLAGS, /* 99 */ + INSN_OP_PMPERMFLAGS, /* 100 */ + INSN_OP_SV, /* 101 */ + INSN_OP_PADIX, /* 102 */ + INSN_OP_PV, /* 103 */ + INSN_OP_PV_TR, /* 104 */ + INSN_OP_REDOOP, /* 105 */ + INSN_OP_NEXTOP, /* 106 */ + INSN_OP_LASTOP, /* 107 */ + INSN_COP_LABEL, /* 108 */ + INSN_COP_STASHPV, /* 109 */ + INSN_COP_FILE, /* 110 */ + INSN_COP_SEQ, /* 111 */ + INSN_COP_ARYBASE, /* 112 */ + INSN_COP_LINE, /* 113 */ + INSN_COP_WARNINGS, /* 114 */ + INSN_MAIN_START, /* 115 */ + INSN_MAIN_ROOT, /* 116 */ + INSN_CURPAD, /* 117 */ + MAX_INSN = 117 +}; + +enum { + OPt_OP, /* 0 */ + OPt_UNOP, /* 1 */ + OPt_BINOP, /* 2 */ + OPt_LOGOP, /* 3 */ + OPt_LISTOP, /* 4 */ + OPt_PMOP, /* 5 */ + OPt_SVOP, /* 6 */ + OPt_PADOP, /* 7 */ + OPt_PVOP, /* 8 */ + OPt_LOOP, /* 9 */ + OPt_COP /* 10 */ +}; + +extern void byterun(pTHXo_ struct bytestream bs); + +#define INIT_SPECIALSV_LIST STMT_START { \ + PL_specialsv_list[0] = Nullsv; \ + PL_specialsv_list[1] = &PL_sv_undef; \ + PL_specialsv_list[2] = &PL_sv_yes; \ + PL_specialsv_list[3] = &PL_sv_no; \ + } STMT_END diff --git a/contrib/perl5/ext/ByteLoader/hints/sunos.pl b/contrib/perl5/ext/ByteLoader/hints/sunos.pl new file mode 100644 index 000000000000..3faf498ecc61 --- /dev/null +++ b/contrib/perl5/ext/ByteLoader/hints/sunos.pl @@ -0,0 +1,2 @@ +$self->{CCFLAGS} = $Config{ccflags} . ' -DNEED_FGETC_PROTOTYPE -DNEED_FREAD_PROTOTYPE'; + diff --git a/contrib/perl5/ext/DB_File/Changes b/contrib/perl5/ext/DB_File/Changes index 2fab91922904..95eb487e5659 100644 --- a/contrib/perl5/ext/DB_File/Changes +++ b/contrib/perl5/ext/DB_File/Changes @@ -230,5 +230,64 @@ * Updated the message that db-recno.t prints when tests 51, 53 or 55 fail. 1.65 6th March 1999 + * Fixed a bug in the recno PUSH logic. * The BOOT version check now needs 2.3.4 when using Berkeley DB version 2 + +1.66 15th March 1999 + + * Added DBM Filter code + +1.67 6th June 1999 + + * Added DBM Filter documentation to DB_File.pm + + * Fixed DBM Filter code to work with 5.004 + + * A few instances of newSVpvn were used in 1.66. This isn't available in + Perl 5.004_04 or earlier. Replaced with newSVpv. + +1.68 22nd July 1999 + + * Merged changes from 5.005_58 + + * Fixed a bug in R_IBEFORE & R_IAFTER procesing in Berkeley DB + 2 databases. + + * Added some of the examples in the POD into the test harness. + +1.69 3rd August 1999 + + * fixed a bug in push -- DB_APPEND wasn't working properly. + + * Fixed the R_SETCURSOR bug introduced in 1.68 + + * Added a new Perl variable $DB_File::db_ver + +1.70 4th August 1999 + + * Initialise $DB_File::db_ver and $DB_File::db_version with + GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons. + + * Added a BOOT check to test for equivalent versions of db.h & + libdb.a/so. + +1.71 7th September 1999 + + * Fixed a bug that prevented 1.70 from compiling under win32 + + * Updated to support Berkeley DB 3.x + + * Updated dbinfo for Berkeley DB 3.x file formats. + +1.72 16th January 2000 + + * Added hints/sco.pl + + * The module will now use XSLoader when it is available. When it + isn't it will use DynaLoader. + + * The locking section in DB_File.pm has been discredited. Many thanks + to David Harris for spotting the underlying problem, contributing + the updates to the documentation and writing DB_File::Lock (available + on CPAN). diff --git a/contrib/perl5/ext/DB_File/DB_File.pm b/contrib/perl5/ext/DB_File/DB_File.pm index e5759ff55856..00b24b90e611 100644 --- a/contrib/perl5/ext/DB_File/DB_File.pm +++ b/contrib/perl5/ext/DB_File/DB_File.pm @@ -1,10 +1,10 @@ # DB_File.pm -- Perl 5 interface to Berkeley DB # # written by Paul Marquess (Paul.Marquess@btinternet.com) -# last modified 6th March 1999 -# version 1.65 +# last modified 16th January 2000 +# version 1.72 # -# Copyright (c) 1995-9 Paul Marquess. All rights reserved. +# Copyright (c) 1995-2000 Paul Marquess. All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. @@ -141,11 +141,13 @@ sub TIEHASH package DB_File ; use strict; -use vars qw($VERSION @ISA @EXPORT $AUTOLOAD $DB_BTREE $DB_HASH $DB_RECNO $db_version) ; +use vars qw($VERSION @ISA @EXPORT $AUTOLOAD $DB_BTREE $DB_HASH $DB_RECNO + $db_version $use_XSLoader + ) ; use Carp; -$VERSION = "1.65" ; +$VERSION = "1.72" ; #typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE; $DB_BTREE = new DB_File::BTREEINFO ; @@ -155,8 +157,18 @@ $DB_RECNO = new DB_File::RECNOINFO ; require Tie::Hash; require Exporter; use AutoLoader; -require DynaLoader; -@ISA = qw(Tie::Hash Exporter DynaLoader); +BEGIN { + $use_XSLoader = 1 ; + eval { require XSLoader } ; + + if ($@) { + $use_XSLoader = 0 ; + require DynaLoader; + @ISA = qw(DynaLoader); + } +} + +push @ISA, qw(Tie::Hash Exporter); @EXPORT = qw( $DB_BTREE $DB_HASH $DB_RECNO @@ -196,7 +208,7 @@ sub AUTOLOAD { ($constname = $AUTOLOAD) =~ s/.*:://; my $val = constant($constname, @_ ? $_[0] : 0); if ($! != 0) { - if ($! =~ /Invalid/) { + if ($! =~ /Invalid/ || $!{EINVAL}) { $AutoLoader::AUTOLOAD = $AUTOLOAD; goto &AutoLoader::AUTOLOAD; } @@ -219,19 +231,10 @@ eval { push(@EXPORT, @O); }; -## import borrowed from IO::File -## exports Fcntl constants if available. -#sub import { -# my $pkg = shift; -# my $callpkg = caller; -# Exporter::export $pkg, $callpkg, @_; -# eval { -# require Fcntl; -# Exporter::export 'Fcntl', $callpkg, '/^O_/'; -# }; -#} - -bootstrap DB_File $VERSION; +if ($use_XSLoader) + { XSLoader::load("DB_File", $VERSION)} +else + { bootstrap DB_File $VERSION } # Preloaded methods go here. Autoload methods go after __END__, and are # processed by the autosplit program. @@ -408,6 +411,12 @@ DB_File - Perl5 access to Berkeley DB version 1.x $a = $X->shift; $X->unshift(list); + # DBM Filters + $old_filter = $db->filter_store_key ( sub { ... } ) ; + $old_filter = $db->filter_store_value( sub { ... } ) ; + $old_filter = $db->filter_fetch_key ( sub { ... } ) ; + $old_filter = $db->filter_fetch_value( sub { ... } ) ; + untie %hash ; untie @array ; @@ -415,10 +424,10 @@ DB_File - Perl5 access to Berkeley DB version 1.x B is a module which allows Perl programs to make use of the facilities provided by Berkeley DB version 1.x (if you have a newer -version of DB, see L). It is -assumed that you have a copy of the Berkeley DB manual pages at hand -when reading this documentation. The interface defined here mirrors the -Berkeley DB interface closely. +version of DB, see L). +It is assumed that you have a copy of the Berkeley DB manual pages at +hand when reading this documentation. The interface defined here +mirrors the Berkeley DB interface closely. Berkeley DB is a C library which provides a consistent interface to a number of database formats. B provides an interface to all @@ -459,32 +468,28 @@ number. =back -=head2 Using DB_File with Berkeley DB version 2 +=head2 Using DB_File with Berkeley DB version 2 or 3 Although B is intended to be used with Berkeley DB version 1, -it can also be used with version 2. In this case the interface is +it can also be used with version 2.or 3 In this case the interface is limited to the functionality provided by Berkeley DB 1.x. Anywhere the -version 2 interface differs, B arranges for it to work like -version 1. This feature allows B scripts that were built with -version 1 to be migrated to version 2 without any changes. +version 2 or 3 interface differs, B arranges for it to work +like version 1. This feature allows B scripts that were built +with version 1 to be migrated to version 2 or 3 without any changes. If you want to make use of the new features available in Berkeley DB -2.x, use the Perl module B instead. +2.x or greater, use the Perl module B instead. -At the time of writing this document the B module is still -alpha quality (the version number is < 1.0), and so unsuitable for use -in any serious development work. Once its version number is >= 1.0, it -is considered stable enough for real work. - -B The database file format has changed in Berkeley DB version 2. -If you cannot recreate your databases, you must dump any existing -databases with the C utility that comes with Berkeley DB. -Once you have rebuilt DB_File to use Berkeley DB version 2, your +B The database file format has changed in both Berkeley DB +version 2 and 3. If you cannot recreate your databases, you must dump +any existing databases with the C utility that comes with +Berkeley DB. +Once you have rebuilt DB_File to use Berkeley DB version 2 or 3, your databases can be recreated using C. Refer to the Berkeley DB documentation for further details. -Please read L<"COPYRIGHT"> before using version 2.x of Berkeley DB with -DB_File. +Please read L<"COPYRIGHT"> before using version 2.x or 3.x of Berkeley +DB with DB_File. =head2 Interface to Berkeley DB @@ -664,6 +669,7 @@ contents of the database. use DB_File ; use vars qw( %h $k $v ) ; + unlink "fruit" ; tie %h, "DB_File", "fruit", O_RDWR|O_CREAT, 0640, $DB_HASH or die "Cannot open file 'fruit': $!\n"; @@ -723,6 +729,7 @@ insensitive compare function will be used. # specify the Perl sub that will do the comparison $DB_BTREE->{'compare'} = \&Compare ; + unlink "tree" ; tie %h, "DB_File", "tree", O_RDWR|O_CREAT, 0640, $DB_BTREE or die "Cannot open file 'tree': $!\n" ; @@ -799,7 +806,7 @@ code: # iterate through the associative array # and print each key/value pair. - foreach (keys %h) + foreach (sort keys %h) { print "$_ -> $h{$_}\n" } untie %h ; @@ -901,6 +908,19 @@ particular value occurred in the BTREE. So assuming the database created above, we can use C like this: + use strict ; + use DB_File ; + + use vars qw($filename $x %h ) ; + + $filename = "tree" ; + + # Enable duplicate records + $DB_BTREE->{'flags'} = R_DUP ; + + $x = tie %h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE + or die "Cannot open $filename: $!\n"; + my $cnt = $x->get_dup("Wall") ; print "Wall occurred $cnt times\n" ; @@ -908,7 +928,7 @@ this: print "Larry is there\n" if $hash{'Larry'} ; print "There are $hash{'Brick'} Brick Walls\n" ; - my @list = $x->get_dup("Wall") ; + my @list = sort $x->get_dup("Wall") ; print "Wall => [@list]\n" ; @list = $x->get_dup("Smith") ; @@ -931,7 +951,7 @@ and it will print: $status = $X->find_dup($key, $value) ; -This method checks for the existance of a specific key/value pair. If the +This method checks for the existence of a specific key/value pair. If the pair exists, the cursor is left pointing to the pair and the method returns 0. Otherwise the method returns a non-zero value. @@ -961,7 +981,7 @@ Assuming the database from the previous example: prints this - Larry Wall is there + Larry Wall is there Harry Wall is not there @@ -973,7 +993,7 @@ This method deletes a specific key/value pair. It returns 0 if they exist and have been deleted successfully. Otherwise the method returns a non-zero value. -Again assuming the existance of the C database +Again assuming the existence of the C database use strict ; use DB_File ; @@ -1053,7 +1073,7 @@ and print the first matching key/value pair given a partial key. $st == 0 ; $st = $x->seq($key, $value, R_NEXT) ) - { print "$key -> $value\n" } + { print "$key -> $value\n" } print "\nPARTIAL MATCH\n" ; @@ -1126,8 +1146,11 @@ L for a workaround). use strict ; use DB_File ; + my $filename = "text" ; + unlink $filename ; + my @h ; - tie @h, "DB_File", "text", O_RDWR|O_CREAT, 0640, $DB_RECNO + tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO or die "Cannot open file 'text': $!\n" ; # Add a few key/value pairs to the file @@ -1160,7 +1183,7 @@ Here is the output from the script: The array contains 5 entries popped black - unshifted white + shifted white Element 1 Exists with value blue The last element is green The 2nd last element is yellow @@ -1466,8 +1489,8 @@ R_CURSOR is the only valid flag at present. Returns the file descriptor for the underlying database. -See L for an example of how to make use of the -C method to lock your database. +See L for an explanation for why you should +not use C to lock your database. =item B<$status = $X-Eseq($key, $value, $flags) ;> @@ -1488,67 +1511,262 @@ R_RECNOSYNC is the only valid flag at present. =back +=head1 DBM FILTERS + +A DBM Filter is a piece of code that is be used when you I +want to make the same transformation to all keys and/or values in a +DBM database. + +There are four methods associated with DBM Filters. All work identically, +and each is used to install (or uninstall) a single DBM Filter. Each +expects a single parameter, namely a reference to a sub. The only +difference between them is the place that the filter is installed. + +To summarise: + +=over 5 + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a key to a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you write a value to a DBM database. + + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a key from a DBM database. + +=item B + +If a filter has been installed with this method, it will be invoked +every time you read a value from a DBM database. + +=back + +You can use any combination of the methods, from none, to all four. + +All filter methods return the existing filter, if present, or C +in not. + +To delete a filter pass C to it. + +=head2 The Filter + +When each filter is called by Perl, a local copy of C<$_> will contain +the key or value to be filtered. Filtering is achieved by modifying +the contents of C<$_>. The return code from the filter is ignored. + +=head2 An Example -- the NULL termination problem. + +Consider the following scenario. You have a DBM database +that you need to share with a third-party C application. The C application +assumes that I keys and values are NULL terminated. Unfortunately +when Perl writes to DBM databases it doesn't use NULL termination, so +your Perl application will have to manage NULL termination itself. When +you write to the database you will have to use something like this: + + $hash{"$key\0"} = "$value\0" ; + +Similarly the NULL needs to be taken into account when you are considering +the length of existing keys/values. + +It would be much better if you could ignore the NULL terminations issue +in the main application code and have a mechanism that automatically +added the terminating NULL to all keys and values whenever you write to +the database and have them removed when you read from the database. As I'm +sure you have already guessed, this is a problem that DBM Filters can +fix very easily. + + use strict ; + use DB_File ; + + my %hash ; + my $filename = "/tmp/filt" ; + unlink $filename ; + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + # Install DBM Filters + $db->filter_fetch_key ( sub { s/\0$// } ) ; + $db->filter_store_key ( sub { $_ .= "\0" } ) ; + $db->filter_fetch_value( sub { s/\0$// } ) ; + $db->filter_store_value( sub { $_ .= "\0" } ) ; + + $hash{"abc"} = "def" ; + my $a = $hash{"ABC"} ; + # ... + undef $db ; + untie %hash ; + +Hopefully the contents of each of the filters should be +self-explanatory. Both "fetch" filters remove the terminating NULL, +and both "store" filters add a terminating NULL. + + +=head2 Another Example -- Key is a C int. + +Here is another real-life example. By default, whenever Perl writes to +a DBM database it always writes the key and value as strings. So when +you use this: + + $hash{12345} = "soemthing" ; + +the key 12345 will get stored in the DBM database as the 5 byte string +"12345". If you actually want the key to be stored in the DBM database +as a C int, you will have to use C when writing, and C +when reading. + +Here is a DBM Filter that does it: + + use strict ; + use DB_File ; + my %hash ; + my $filename = "/tmp/filt" ; + unlink $filename ; + + + my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH + or die "Cannot open $filename: $!\n" ; + + $db->filter_fetch_key ( sub { $_ = unpack("i", $_) } ) ; + $db->filter_store_key ( sub { $_ = pack ("i", $_) } ) ; + $hash{123} = "def" ; + # ... + undef $db ; + untie %hash ; + +This time only two filters have been used -- we only need to manipulate +the contents of the key, so it wasn't necessary to install any value +filters. + =head1 HINTS AND TIPS -=head2 Locking Databases +=head2 Locking: The Trouble with fd -Concurrent access of a read-write database by several parties requires -them all to use some kind of locking. Here's an example of Tom's that -uses the I method to get the file descriptor, and then a careful -open() to give something Perl will flock() for you. Run this repeatedly -in the background to watch the locks granted in proper order. +Until version 1.72 of this module, the recommended technique for locking +B databases was to flock the filehandle returned from the "fd" +function. Unfortunately this technique has been shown to be fundamentally +flawed (Kudos to David Harris for tracking this down). Use it at your own +peril! - use DB_File; +The locking technique went like this. - use strict; - - sub LOCK_SH { 1 } - sub LOCK_EX { 2 } - sub LOCK_NB { 4 } - sub LOCK_UN { 8 } - - my($oldval, $fd, $db, %db, $value, $key); - - $key = shift || 'default'; - $value = shift || 'magic'; - - $value .= " $$"; - - $db = tie(%db, 'DB_File', '/tmp/foo.db', O_CREAT|O_RDWR, 0644) - || die "dbcreat /tmp/foo.db $!"; + $db = tie(%db, 'DB_File', '/tmp/foo.db', O_CREAT|O_RDWR, 0644) + || die "dbcreat /tmp/foo.db $!"; $fd = $db->fd; - print "$$: db fd is $fd\n"; open(DB_FH, "+<&=$fd") || die "dup $!"; - - - unless (flock (DB_FH, LOCK_SH | LOCK_NB)) { - print "$$: CONTENTION; can't read during write update! - Waiting for read lock ($!) ...."; - unless (flock (DB_FH, LOCK_SH)) { die "flock: $!" } - } - print "$$: Read lock granted\n"; - - $oldval = $db{$key}; - print "$$: Old value was $oldval\n"; - flock(DB_FH, LOCK_UN); - - unless (flock (DB_FH, LOCK_EX | LOCK_NB)) { - print "$$: CONTENTION; must have exclusive lock! - Waiting for write lock ($!) ...."; - unless (flock (DB_FH, LOCK_EX)) { die "flock: $!" } - } - - print "$$: Write lock granted\n"; - $db{$key} = $value; - $db->sync; # to flush - sleep 10; - + flock (DB_FH, LOCK_EX) || die "flock: $!"; + ... + $db{"Tom"} = "Jerry" ; + ... flock(DB_FH, LOCK_UN); undef $db; untie %db; close(DB_FH); - print "$$: Updated db to $key=$value\n"; + +In simple terms, this is what happens: + +=over 5 + +=item 1. + +Use "tie" to open the database. + +=item 2. + +Lock the database with fd & flock. + +=item 3. + +Read & Write to the database. + +=item 4. + +Unlock and close the database. + +=back + +Here is the crux of the problem. A side-effect of opening the B +database in step 2 is that an initial block from the database will get +read from disk and cached in memory. + +To see why this is a problem, consider what can happen when two processes, +say "A" and "B", both want to update the same B database +using the locking steps outlined above. Assume process "A" has already +opened the database and has a write lock, but it hasn't actually updated +the database yet (it has finished step 2, but not started step 3 yet). Now +process "B" tries to open the same database - step 1 will succeed, +but it will block on step 2 until process "A" releases the lock. The +important thing to notice here is that at this point in time both +processes will have cached identical initial blocks from the database. + +Now process "A" updates the database and happens to change some of the +data held in the initial buffer. Process "A" terminates, flushing +all cached data to disk and releasing the database lock. At this point +the database on disk will correctly reflect the changes made by process +"A". + +With the lock released, process "B" can now continue. It also updates the +database and unfortunately it too modifies the data that was in its +initial buffer. Once that data gets flushed to disk it will overwrite +some/all of the changes process "A" made to the database. + +The result of this scenario is at best a database that doesn't contain +what you expect. At worst the database will corrupt. + +The above won't happen every time competing process update the same +B database, but it does illustrate why the technique should +not be used. + +=head2 Safe ways to lock a database + +Starting with version 2.x, Berkeley DB has internal support for locking. +The companion module to this one, B, provides an interface +to this locking functionality. If you are serious about locking +Berkeley DB databases, I strongly recommend using B. + +If using B isn't an option, there are a number of modules +available on CPAN that can be used to implement locking. Each one +implements locking differently and has different goals in mind. It is +therefore worth knowing the difference, so that you can pick the right +one for your application. Here are the three locking wrappers: + +=over 5 + +=item B + +A B wrapper which creates copies of the database file for +read access, so that you have a kind of a multiversioning concurrent read +system. However, updates are still serial. Use for databases where reads +may be lengthy and consistency problems may occur. + +=item B + +A B wrapper that has the ability to lock and unlock the database +while it is being used. Avoids the tie-before-flock problem by simply +re-tie-ing the database when you get or drop a lock. Because of the +flexibility in dropping and re-acquiring the lock in the middle of a +session, this can be massaged into a system that will work with long +updates and/or reads if the application follows the hints in the POD +documentation. + +=item B + +An extremely lightweight B wrapper that simply flocks a lockfile +before tie-ing the database and drops the lock after the untie. Allows +one to use the same lockfile for multiple databases to avoid deadlock +problems, if desired. Use for databases where updates are reads are +quick and simple flock locking semantics are enough. + +=back =head2 Sharing Databases With C Applications @@ -1557,7 +1775,7 @@ shared by both a Perl and a C application. The vast majority of problems that are reported in this area boil down to the fact that C strings are NULL terminated, whilst Perl strings are -not. +not. See L for a generic way to work around this problem. Here is a real example. Netscape 2.0 keeps a record of the locations you visit along with the time you last visited them in a DB_HASH database. @@ -1654,7 +1872,7 @@ C<%x>, and C<$X> above hold a reference to the object. The call to untie() will destroy the first, but C<$X> still holds a valid reference, so the destructor will not get called and the database file F will remain open. The fact that Berkeley DB then reports the -attempt to open a database that is alreday open via the catch-all +attempt to open a database that is already open via the catch-all "Invalid argument" doesn't help. If you run the script with the C<-w> flag the error message becomes: @@ -1746,6 +1964,19 @@ double quotes, like this: Although it might seem like a real pain, it is really worth the effort of having a C in all your scripts. +=head1 REFERENCES + +Articles that are either about B or make use of it. + +=over 5 + +=item 1. + +I, Tim Kientzle (tkientzle@ddj.com), +Dr. Dobb's Journal, Issue 295, January 1999, pp 34-41 + +=back + =head1 HISTORY Moved to the Changes file. @@ -1768,13 +1999,12 @@ date, so the most recent version can always be found on CPAN (see L for details), in the directory F. -This version of B will work with either version 1.x or 2.x of -Berkeley DB, but is limited to the functionality provided by version 1. +This version of B will work with either version 1.x, 2.x or +3.x of Berkeley DB, but is limited to the functionality provided by +version 1. -The official web site for Berkeley DB is -F. The ftp equivalent is -F. Both versions 1 and 2 of Berkeley DB are -available there. +The official web site for Berkeley DB is F. +All versions of Berkeley DB are available there. Alternatively, Berkeley DB version 1 is available at your nearest CPAN archive in F. @@ -1785,7 +2015,7 @@ compile properly on IRIX 5.3. =head1 COPYRIGHT -Copyright (c) 1995-9 Paul Marquess. All rights reserved. This program +Copyright (c) 1995-1999 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. @@ -1794,7 +2024,7 @@ makes use of, namely Berkeley DB, is not. Berkeley DB has its own copyright and its own license. Please take the time to read it. Here are are few words taken from the Berkeley DB FAQ (at -http://www.sleepycat.com) regarding the license: +F) regarding the license: Do I have to license DB to use it in Perl scripts? @@ -1811,7 +2041,8 @@ Berkeley DB authors or the author of DB_File. See L<"AUTHOR"> for details. =head1 SEE ALSO -L, L, L, L, L +L, L, L, L, L, +L =head1 AUTHOR diff --git a/contrib/perl5/ext/DB_File/DB_File.xs b/contrib/perl5/ext/DB_File/DB_File.xs index 94113eb4e28d..2b76bab72263 100644 --- a/contrib/perl5/ext/DB_File/DB_File.xs +++ b/contrib/perl5/ext/DB_File/DB_File.xs @@ -3,12 +3,12 @@ DB_File.xs -- Perl 5 interface to Berkeley DB written by Paul Marquess - last modified 6th March 1999 - version 1.65 + last modified 16th January 2000 + version 1.72 All comments/suggestions/problems are welcome - Copyright (c) 1995-9 Paul Marquess. All rights reserved. + Copyright (c) 1995-2000 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. @@ -65,8 +65,23 @@ to fix a flag mapping problem with O_RDONLY on the Hurd 1.65 - Fixed a bug in the PUSH logic. Added BOOT check that using 2.3.4 or greater - - + 1.66 - Added DBM filter code + 1.67 - Backed off the use of newSVpvn. + Fixed DBM Filter code for Perl 5.004. + Fixed a small memory leak in the filter code. + 1.68 - fixed backward compatability bug with R_IAFTER & R_IBEFORE + merged in the 5.005_58 changes + 1.69 - fixed a bug in push -- DB_APPEND wasn't working properly. + Fixed the R_SETCURSOR bug introduced in 1.68 + Added a new Perl variable $DB_File::db_ver + 1.70 - Initialise $DB_File::db_ver and $DB_File::db_version with + GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons. + Added a BOOT check to test for equivalent versions of db.h & + libdb.a/so. + 1.71 - Support for Berkeley DB version 3. + Support for Berkeley DB 2/3's backward compatability mode. + Rewrote push + 1.72 - No change to DB_File.xs */ @@ -75,10 +90,10 @@ #include "XSUB.h" #ifndef PERL_VERSION -#include "patchlevel.h" -#define PERL_REVISION 5 -#define PERL_VERSION PATCHLEVEL -#define PERL_SUBVERSION SUBVERSION +# include "patchlevel.h" +# define PERL_REVISION 5 +# define PERL_VERSION PATCHLEVEL +# define PERL_SUBVERSION SUBVERSION #endif #if PERL_REVISION == 5 && (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION <= 75 )) @@ -88,6 +103,11 @@ #endif +/* DEFSV appears first in 5.004_56 */ +#ifndef DEFSV +# define DEFSV GvSV(defgv) +#endif + /* Being the Berkeley DB we prefer the (which will be * shortly #included by the ) __attribute__ to the possibly * already defined __attribute__, for example by GNUC or by Perl. */ @@ -98,33 +118,65 @@ be defined here. This clashes with a field name in db.h, so get rid of it. */ #ifdef op -#undef op +# undef op +#endif + +#ifdef COMPAT185 +# include +#else +# include +#endif + +#ifndef pTHX +# define pTHX +# define pTHX_ +# define aTHX +# define aTHX_ +#endif + +#ifndef newSVpvn +# define newSVpvn(a,b) newSVpv(a,b) #endif -#include #include /* #define TRACE */ +#define DBM_FILTERING + +#ifdef TRACE +# define Trace(x) printf x +#else +# define Trace(x) +#endif +#define DBT_clear(x) Zero(&x, 1, DBT) ; #ifdef DB_VERSION_MAJOR +#if DB_VERSION_MAJOR == 2 +# define BERKELEY_DB_1_OR_2 +#endif + /* map version 2 features & constants onto their version 1 equivalent */ #ifdef DB_Prefix_t -#undef DB_Prefix_t +# undef DB_Prefix_t #endif #define DB_Prefix_t size_t #ifdef DB_Hash_t -#undef DB_Hash_t +# undef DB_Hash_t #endif #define DB_Hash_t u_int32_t /* DBTYPE stays the same */ /* HASHINFO, RECNOINFO and BTREEINFO map to DB_INFO */ -typedef DB_INFO INFO ; +#if DB_VERSION_MAJOR == 2 + typedef DB_INFO INFO ; +#else /* DB_VERSION_MAJOR > 2 */ +# define DB_FIXEDLEN (0x8000) +#endif /* DB_VERSION_MAJOR == 2 */ /* version 2 has db_recno_t in place of recno_t */ typedef db_recno_t recno_t; @@ -138,11 +190,18 @@ typedef db_recno_t recno_t; #define R_NEXT DB_NEXT #define R_NOOVERWRITE DB_NOOVERWRITE #define R_PREV DB_PREV -#define R_SETCURSOR 0 + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5 +# define R_SETCURSOR 0x800000 +#else +# define R_SETCURSOR (-100) +#endif + #define R_RECNOSYNC 0 #define R_FIXEDLEN DB_FIXEDLEN #define R_DUP DB_DUP + #define db_HA_hash h_hash #define db_HA_ffactor h_ffactor #define db_HA_nelem h_nelem @@ -177,13 +236,15 @@ typedef db_recno_t recno_t; #define DB_flags(x, v) x |= v #if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5 -#define flagSet(flags, bitmask) ((flags) & (bitmask)) +# define flagSet(flags, bitmask) ((flags) & (bitmask)) #else -#define flagSet(flags, bitmask) (((flags) & DB_OPFLAGS_MASK) == (bitmask)) +# define flagSet(flags, bitmask) (((flags) & DB_OPFLAGS_MASK) == (bitmask)) #endif #else /* db version 1.x */ +#define BERKELEY_DB_1_OR_2 + typedef union INFO { HASHINFO hash ; RECNOINFO recno ; @@ -192,17 +253,17 @@ typedef union INFO { #ifdef mDB_Prefix_t -#ifdef DB_Prefix_t -#undef DB_Prefix_t -#endif -#define DB_Prefix_t mDB_Prefix_t +# ifdef DB_Prefix_t +# undef DB_Prefix_t +# endif +# define DB_Prefix_t mDB_Prefix_t #endif #ifdef mDB_Hash_t -#ifdef DB_Hash_t -#undef DB_Hash_t -#endif -#define DB_Hash_t mDB_Hash_t +# ifdef DB_Hash_t +# undef DB_Hash_t +# endif +# define DB_Hash_t mDB_Hash_t #endif #define db_HA_hash hash.hash @@ -248,20 +309,21 @@ typedef union INFO { #define db_get(db, key, value, flags) ((db->dbp)->get)(db->dbp, TXN &key, &value, flags) #ifdef DB_VERSION_MAJOR -#define db_DESTROY(db) ((db->dbp)->close)(db->dbp, 0) +#define db_DESTROY(db) ( db->cursor->c_close(db->cursor),\ + (db->dbp->close)(db->dbp, 0) ) #define db_close(db) ((db->dbp)->close)(db->dbp, 0) #define db_del(db, key, flags) (flagSet(flags, R_CURSOR) \ ? ((db->cursor)->c_del)(db->cursor, 0) \ : ((db->dbp)->del)(db->dbp, NULL, &key, flags) ) -#else +#else /* ! DB_VERSION_MAJOR */ #define db_DESTROY(db) ((db->dbp)->close)(db->dbp) #define db_close(db) ((db->dbp)->close)(db->dbp) #define db_del(db, key, flags) ((db->dbp)->del)(db->dbp, &key, flags) #define db_put(db, key, value, flags) ((db->dbp)->put)(db->dbp, &key, &value, flags) -#endif +#endif /* ! DB_VERSION_MAJOR */ #define db_seq(db, key, value, flags) do_SEQ(db, key, value, flags) @@ -273,32 +335,70 @@ typedef struct { SV * prefix ; SV * hash ; int in_memory ; +#ifdef BERKELEY_DB_1_OR_2 INFO info ; +#endif #ifdef DB_VERSION_MAJOR DBC * cursor ; #endif +#ifdef DBM_FILTERING + SV * filter_fetch_key ; + SV * filter_store_key ; + SV * filter_fetch_value ; + SV * filter_store_value ; + int filtering ; +#endif /* DBM_FILTERING */ + } DB_File_type; typedef DB_File_type * DB_File ; typedef DBT DBTKEY ; -#define my_sv_setpvn(sv, d, s) sv_setpvn(sv, (s ? d : (void*)""), s) +#ifdef DBM_FILTERING -#define OutputValue(arg, name) \ - { if (RETVAL == 0) { \ - my_sv_setpvn(arg, name.data, name.size) ; \ - } \ +#define ckFilter(arg,type,name) \ + if (db->type) { \ + SV * save_defsv ; \ + /* printf("filtering %s\n", name) ;*/ \ + if (db->filtering) \ + croak("recursion detected in %s", name) ; \ + db->filtering = TRUE ; \ + save_defsv = newSVsv(DEFSV) ; \ + sv_setsv(DEFSV, arg) ; \ + PUSHMARK(sp) ; \ + (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS); \ + sv_setsv(arg, DEFSV) ; \ + sv_setsv(DEFSV, save_defsv) ; \ + SvREFCNT_dec(save_defsv) ; \ + db->filtering = FALSE ; \ + /*printf("end of filtering %s\n", name) ;*/ \ } -#define OutputKey(arg, name) \ - { if (RETVAL == 0) \ - { \ - if (db->type != DB_RECNO) { \ - my_sv_setpvn(arg, name.data, name.size); \ - } \ - else \ - sv_setiv(arg, (I32)*(I32*)name.data - 1); \ - } \ +#else + +#define ckFilter(arg,type, name) + +#endif /* DBM_FILTERING */ + +#define my_sv_setpvn(sv, d, s) sv_setpvn(sv, (s ? d : (void*)""), s) + +#define OutputValue(arg, name) \ + { if (RETVAL == 0) { \ + my_sv_setpvn(arg, name.data, name.size) ; \ + ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \ + } \ + } + +#define OutputKey(arg, name) \ + { if (RETVAL == 0) \ + { \ + if (db->type != DB_RECNO) { \ + my_sv_setpvn(arg, name.data, name.size); \ + } \ + else \ + sv_setiv(arg, (I32)*(I32*)name.data - 1); \ + ckFilter(arg, filter_fetch_key,"filter_fetch_key") ; \ + } \ } @@ -311,26 +411,57 @@ static DBTKEY empty ; #ifdef DB_VERSION_MAJOR static int +#ifdef CAN_PROTOTYPE +db_put(DB_File db, DBTKEY key, DBT value, u_int flags) +#else db_put(db, key, value, flags) DB_File db ; DBTKEY key ; DBT value ; u_int flags ; - +#endif { int status ; - if (flagSet(flags, R_CURSOR)) { - status = ((db->cursor)->c_del)(db->cursor, 0); - if (status != 0) - return status ; - -#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 5 - flags &= ~R_CURSOR ; + if (flagSet(flags, R_IAFTER) || flagSet(flags, R_IBEFORE)) { + DBC * temp_cursor ; + DBT l_key, l_value; + +#if DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR < 6 + if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor) != 0) #else - flags &= ~DB_OPFLAGS_MASK ; + if (((db->dbp)->cursor)(db->dbp, NULL, &temp_cursor, 0) != 0) #endif + return (-1) ; + memset(&l_key, 0, sizeof(l_key)); + l_key.data = key.data; + l_key.size = key.size; + memset(&l_value, 0, sizeof(l_value)); + l_value.data = value.data; + l_value.size = value.size; + + if ( temp_cursor->c_get(temp_cursor, &l_key, &l_value, DB_SET) != 0) { + (void)temp_cursor->c_close(temp_cursor); + return (-1); + } + + status = temp_cursor->c_put(temp_cursor, &key, &value, flags); + (void)temp_cursor->c_close(temp_cursor); + + return (status) ; + } + + + if (flagSet(flags, R_CURSOR)) { + return ((db->cursor)->c_put)(db->cursor, &key, &value, DB_CURRENT); + } + + if (flagSet(flags, R_SETCURSOR)) { + if ((db->dbp)->put(db->dbp, NULL, &key, &value, 0) != 0) + return -1 ; + return ((db->cursor)->c_get)(db->cursor, &key, &value, DB_SET_RANGE); + } return ((db->dbp)->put)(db->dbp, NULL, &key, &value, flags) ; @@ -339,42 +470,19 @@ u_int flags ; #endif /* DB_VERSION_MAJOR */ -static void -GetVersionInfo() -{ - SV * ver_sv = perl_get_sv("DB_File::db_version", TRUE) ; -#ifdef DB_VERSION_MAJOR - int Major, Minor, Patch ; - - (void)db_version(&Major, &Minor, &Patch) ; - - /* check that libdb is recent enough -- we need 2.3.4 or greater */ - if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4))) - croak("DB_File needs Berkeley DB 2.3.4 or greater, you have %d.%d.%d\n", - Major, Minor, Patch) ; - -#if PERL_VERSION > 3 - sv_setpvf(ver_sv, "%d.%d", Major, Minor) ; -#else - { - char buffer[40] ; - sprintf(buffer, "%d.%d", Major, Minor) ; - sv_setpv(ver_sv, buffer) ; - } -#endif - -#else - sv_setiv(ver_sv, 1) ; -#endif - -} - static int +#ifdef CAN_PROTOTYPE +btree_compare(const DBT *key1, const DBT *key2) +#else btree_compare(key1, key2) const DBT * key1 ; const DBT * key2 ; +#endif { +#ifdef dTHX + dTHX; +#endif dSP ; void * data1, * data2 ; int retval ; @@ -383,6 +491,7 @@ const DBT * key2 ; data1 = key1->data ; data2 = key2->data ; +#ifndef newSVpvn /* As newSVpv will assume that the data pointer is a null terminated C string if the size parameter is 0, make sure that data points to an empty string if the length is 0 @@ -391,14 +500,15 @@ const DBT * key2 ; data1 = "" ; if (key2->size == 0) data2 = "" ; +#endif ENTER ; SAVETMPS; PUSHMARK(SP) ; EXTEND(SP,2) ; - PUSHs(sv_2mortal(newSVpv(data1,key1->size))); - PUSHs(sv_2mortal(newSVpv(data2,key2->size))); + PUSHs(sv_2mortal(newSVpvn(data1,key1->size))); + PUSHs(sv_2mortal(newSVpvn(data2,key2->size))); PUTBACK ; count = perl_call_sv(CurrentDB->compare, G_SCALAR); @@ -418,10 +528,17 @@ const DBT * key2 ; } static DB_Prefix_t +#ifdef CAN_PROTOTYPE +btree_prefix(const DBT *key1, const DBT *key2) +#else btree_prefix(key1, key2) const DBT * key1 ; const DBT * key2 ; +#endif { +#ifdef dTHX + dTHX; +#endif dSP ; void * data1, * data2 ; int retval ; @@ -430,6 +547,7 @@ const DBT * key2 ; data1 = key1->data ; data2 = key2->data ; +#ifndef newSVpvn /* As newSVpv will assume that the data pointer is a null terminated C string if the size parameter is 0, make sure that data points to an empty string if the length is 0 @@ -438,14 +556,15 @@ const DBT * key2 ; data1 = "" ; if (key2->size == 0) data2 = "" ; +#endif ENTER ; SAVETMPS; PUSHMARK(SP) ; EXTEND(SP,2) ; - PUSHs(sv_2mortal(newSVpv(data1,key1->size))); - PUSHs(sv_2mortal(newSVpv(data2,key2->size))); + PUSHs(sv_2mortal(newSVpvn(data1,key1->size))); + PUSHs(sv_2mortal(newSVpvn(data2,key2->size))); PUTBACK ; count = perl_call_sv(CurrentDB->prefix, G_SCALAR); @@ -465,16 +584,25 @@ const DBT * key2 ; } static DB_Hash_t +#ifdef CAN_PROTOTYPE +hash_cb(const void *data, size_t size) +#else hash_cb(data, size) const void * data ; size_t size ; +#endif { +#ifdef dTHX + dTHX; +#endif dSP ; int retval ; int count ; +#ifndef newSVpvn if (size == 0) data = "" ; +#endif /* DGH - Next two lines added to fix corrupted stack problem */ ENTER ; @@ -482,7 +610,7 @@ size_t size ; PUSHMARK(SP) ; - XPUSHs(sv_2mortal(newSVpv((char*)data,size))); + XPUSHs(sv_2mortal(newSVpvn((char*)data,size))); PUTBACK ; count = perl_call_sv(CurrentDB->hash, G_SCALAR); @@ -502,11 +630,15 @@ size_t size ; } -#ifdef TRACE +#if defined(TRACE) && defined(BERKELEY_DB_1_OR_2) static void +#ifdef CAN_PROTOTYPE +PrintHash(INFO *hash) +#else PrintHash(hash) INFO * hash ; +#endif { printf ("HASH Info\n") ; printf (" hash = %s\n", @@ -520,8 +652,12 @@ INFO * hash ; } static void +#ifdef CAN_PROTOTYPE +PrintRecno(INFO *recno) +#else PrintRecno(recno) INFO * recno ; +#endif { printf ("RECNO Info\n") ; printf (" flags = %d\n", recno->db_RE_flags) ; @@ -534,8 +670,12 @@ INFO * recno ; } static void +#ifdef CAN_PROTOTYPE +PrintBtree(INFO *btree) +#else PrintBtree(btree) INFO * btree ; +#endif { printf ("BTREE Info\n") ; printf (" compare = %s\n", @@ -562,15 +702,19 @@ INFO * btree ; static I32 +#ifdef CAN_PROTOTYPE +GetArrayLength(pTHX_ DB_File db) +#else GetArrayLength(db) DB_File db ; +#endif { DBT key ; DBT value ; int RETVAL ; - DBT_flags(key) ; - DBT_flags(value) ; + DBT_clear(key) ; + DBT_clear(value) ; RETVAL = do_SEQ(db, key, value, R_LAST) ; if (RETVAL == 0) RETVAL = *(I32 *)key.data ; @@ -581,13 +725,17 @@ DB_File db ; } static recno_t +#ifdef CAN_PROTOTYPE +GetRecnoKey(pTHX_ DB_File db, I32 value) +#else GetRecnoKey(db, value) DB_File db ; I32 value ; +#endif { if (value < 0) { /* Get the length of the array */ - I32 length = GetArrayLength(db) ; + I32 length = GetArrayLength(aTHX_ db) ; /* check for attempt to write before start of array */ if (length + value + 1 <= 0) @@ -601,14 +749,22 @@ I32 value ; return value ; } + static DB_File +#ifdef CAN_PROTOTYPE +ParseOpenInfo(pTHX_ int isHASH, char *name, int flags, int mode, SV *sv) +#else ParseOpenInfo(isHASH, name, flags, mode, sv) int isHASH ; char * name ; int flags ; int mode ; SV * sv ; +#endif { + +#ifdef BERKELEY_DB_1_OR_2 /* Berkeley DB Version 1 or 2 */ + SV ** svp; HV * action ; DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ; @@ -620,6 +776,11 @@ SV * sv ; Zero(RETVAL, 1, DB_File_type) ; /* Default to HASH */ +#ifdef DBM_FILTERING + RETVAL->filtering = 0 ; + RETVAL->filter_fetch_key = RETVAL->filter_store_key = + RETVAL->filter_fetch_value = RETVAL->filter_store_value = +#endif /* DBM_FILTERING */ RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; RETVAL->type = DB_HASH ; @@ -864,25 +1025,275 @@ SV * sv ; } #else + +#if defined(DB_LIBRARY_COMPATIBILITY_API) && DB_VERSION_MAJOR > 2 + RETVAL->dbp = __db185_open(name, flags, mode, RETVAL->type, openinfo) ; +#else RETVAL->dbp = dbopen(name, flags, mode, RETVAL->type, openinfo) ; +#endif /* DB_LIBRARY_COMPATIBILITY_API */ + #endif return (RETVAL) ; -} +#else /* Berkeley DB Version > 2 */ + + SV ** svp; + HV * action ; + DB_File RETVAL = (DB_File)safemalloc(sizeof(DB_File_type)) ; + DB * dbp ; + STRLEN n_a; + int status ; + +/* printf("In ParseOpenInfo name=[%s] flags=[%d] mode = [%d]\n", name, flags, mode) ; */ + Zero(RETVAL, 1, DB_File_type) ; + + /* Default to HASH */ +#ifdef DBM_FILTERING + RETVAL->filtering = 0 ; + RETVAL->filter_fetch_key = RETVAL->filter_store_key = + RETVAL->filter_fetch_value = RETVAL->filter_store_value = +#endif /* DBM_FILTERING */ + RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; + RETVAL->type = DB_HASH ; + + /* DGH - Next line added to avoid SEGV on existing hash DB */ + CurrentDB = RETVAL; + + /* fd for 1.86 hash in memory files doesn't return -1 like 1.85 */ + RETVAL->in_memory = (name == NULL) ; + + status = db_create(&RETVAL->dbp, NULL,0) ; + /* printf("db_create returned %d %s\n", status, db_strerror(status)) ; */ + if (status) { + RETVAL->dbp = NULL ; + return (RETVAL) ; + } + dbp = RETVAL->dbp ; + + if (sv) + { + if (! SvROK(sv) ) + croak ("type parameter is not a reference") ; + + svp = hv_fetch( (HV*)SvRV(sv), "GOT", 3, FALSE) ; + if (svp && SvOK(*svp)) + action = (HV*) SvRV(*svp) ; + else + croak("internal error") ; + + if (sv_isa(sv, "DB_File::HASHINFO")) + { + + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_HASH database") ; + + RETVAL->type = DB_HASH ; + + svp = hv_fetch(action, "hash", 4, FALSE); + + if (svp && SvOK(*svp)) + { + (void)dbp->set_h_hash(dbp, hash_cb) ; + RETVAL->hash = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "ffactor", 7, FALSE); + if (svp) + (void)dbp->set_h_ffactor(dbp, SvIV(*svp)) ; + + svp = hv_fetch(action, "nelem", 5, FALSE); + if (svp) + (void)dbp->set_h_nelem(dbp, SvIV(*svp)) ; + + svp = hv_fetch(action, "bsize", 5, FALSE); + if (svp) + (void)dbp->set_pagesize(dbp, SvIV(*svp)); + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) + (void)dbp->set_cachesize(dbp, 0, SvIV(*svp), 0) ; + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) + (void)dbp->set_lorder(dbp, SvIV(*svp)) ; + + PrintHash(info) ; + } + else if (sv_isa(sv, "DB_File::BTREEINFO")) + { + if (!isHASH) + croak("DB_File can only tie an associative array to a DB_BTREE database"); + + RETVAL->type = DB_BTREE ; + + svp = hv_fetch(action, "compare", 7, FALSE); + if (svp && SvOK(*svp)) + { + (void)dbp->set_bt_compare(dbp, btree_compare) ; + RETVAL->compare = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "prefix", 6, FALSE); + if (svp && SvOK(*svp)) + { + (void)dbp->set_bt_prefix(dbp, btree_prefix) ; + RETVAL->prefix = newSVsv(*svp) ; + } + + svp = hv_fetch(action, "flags", 5, FALSE); + if (svp) + (void)dbp->set_flags(dbp, SvIV(*svp)) ; + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) + (void)dbp->set_cachesize(dbp, 0, SvIV(*svp), 0) ; + + svp = hv_fetch(action, "psize", 5, FALSE); + if (svp) + (void)dbp->set_pagesize(dbp, SvIV(*svp)) ; + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) + (void)dbp->set_lorder(dbp, SvIV(*svp)) ; + + PrintBtree(info) ; + + } + else if (sv_isa(sv, "DB_File::RECNOINFO")) + { + int fixed = FALSE ; + + if (isHASH) + croak("DB_File can only tie an array to a DB_RECNO database"); + + RETVAL->type = DB_RECNO ; + + svp = hv_fetch(action, "flags", 5, FALSE); + if (svp) { + int flags = SvIV(*svp) ; + /* remove FIXDLEN, if present */ + if (flags & DB_FIXEDLEN) { + fixed = TRUE ; + flags &= ~DB_FIXEDLEN ; + } + } + + svp = hv_fetch(action, "cachesize", 9, FALSE); + if (svp) { + status = dbp->set_cachesize(dbp, 0, SvIV(*svp), 0) ; + } + + svp = hv_fetch(action, "psize", 5, FALSE); + if (svp) { + status = dbp->set_pagesize(dbp, SvIV(*svp)) ; + } + + svp = hv_fetch(action, "lorder", 6, FALSE); + if (svp) { + status = dbp->set_lorder(dbp, SvIV(*svp)) ; + } + + svp = hv_fetch(action, "bval", 4, FALSE); + if (svp && SvOK(*svp)) + { + int value ; + if (SvPOK(*svp)) + value = (int)*SvPV(*svp, n_a) ; + else + value = SvIV(*svp) ; + + if (fixed) { + status = dbp->set_re_pad(dbp, value) ; + } + else { + status = dbp->set_re_delim(dbp, value) ; + } + + } + + if (fixed) { + svp = hv_fetch(action, "reclen", 6, FALSE); + if (svp) { + u_int32_t len = (u_int32_t)SvIV(*svp) ; + status = dbp->set_re_len(dbp, len) ; + } + } + + if (name != NULL) { + status = dbp->set_re_source(dbp, name) ; + name = NULL ; + } + + svp = hv_fetch(action, "bfname", 6, FALSE); + if (svp && SvOK(*svp)) { + char * ptr = SvPV(*svp,n_a) ; + name = (char*) n_a ? ptr : NULL ; + } + else + name = NULL ; + + + status = dbp->set_flags(dbp, DB_RENUMBER) ; + + if (flags){ + (void)dbp->set_flags(dbp, flags) ; + } + PrintRecno(info) ; + } + else + croak("type is not of type DB_File::HASHINFO, DB_File::BTREEINFO or DB_File::RECNOINFO"); + } + + { + int Flags = 0 ; + int status ; + + /* Map 1.x flags to 3.x flags */ + if ((flags & O_CREAT) == O_CREAT) + Flags |= DB_CREATE ; + +#if O_RDONLY == 0 + if (flags == O_RDONLY) +#else + if ((flags & O_RDONLY) == O_RDONLY && (flags & O_RDWR) != O_RDWR) +#endif + Flags |= DB_RDONLY ; + +#ifdef O_TRUNC + if ((flags & O_TRUNC) == O_TRUNC) + Flags |= DB_TRUNCATE ; +#endif + + status = RETVAL->dbp->open(RETVAL->dbp, name, NULL, RETVAL->type, + Flags, mode) ; + /* printf("open returned %d %s\n", status, db_strerror(status)) ; */ + + if (status == 0) + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor, + 0) ; + /* printf("cursor returned %d %s\n", status, db_strerror(status)) ; */ + + if (status) + RETVAL->dbp = NULL ; + + } + + return (RETVAL) ; + +#endif /* Berkeley DB Version > 2 */ + +} /* ParseOpenInfo */ -static int -not_here(s) -char *s; -{ - croak("DB_File::%s not implemented on this architecture", s); - return -1; -} static double +#ifdef CAN_PROTOTYPE +constant(char *name, int arg) +#else constant(name, arg) char *name; int arg; +#endif { errno = 0; switch (*name) { @@ -1115,11 +1526,11 @@ MODULE = DB_File PACKAGE = DB_File PREFIX = db_ BOOT: { - GetVersionInfo() ; + __getBerkeleyDBInfo() ; + DBT_clear(empty) ; empty.data = &zero ; empty.size = sizeof(recno_t) ; - DBT_flags(empty) ; } double @@ -1146,7 +1557,7 @@ db_DoTie_(isHASH, dbtype, name=undef, flags=O_CREAT|O_RDWR, mode=0666, type=DB_H if (items == 6) sv = ST(5) ; - RETVAL = ParseOpenInfo(isHASH, name, flags, mode, sv) ; + RETVAL = ParseOpenInfo(aTHX_ isHASH, name, flags, mode, sv) ; if (RETVAL->dbp == NULL) RETVAL = NULL ; } @@ -1165,7 +1576,17 @@ db_DESTROY(db) SvREFCNT_dec(db->compare) ; if (db->prefix) SvREFCNT_dec(db->prefix) ; - Safefree(db) ; +#ifdef DBM_FILTERING + if (db->filter_fetch_key) + SvREFCNT_dec(db->filter_fetch_key) ; + if (db->filter_store_key) + SvREFCNT_dec(db->filter_store_key) ; + if (db->filter_fetch_value) + SvREFCNT_dec(db->filter_fetch_value) ; + if (db->filter_store_value) + SvREFCNT_dec(db->filter_store_value) ; +#endif /* DBM_FILTERING */ + safefree(db) ; #ifdef DB_VERSION_MAJOR if (RETVAL > 0) RETVAL = -1 ; @@ -1189,7 +1610,7 @@ db_EXISTS(db, key) { DBT value ; - DBT_flags(value) ; + DBT_clear(value) ; CurrentDB = db ; RETVAL = (((db->dbp)->get)(db->dbp, TXN &key, &value, 0) == 0) ; } @@ -1205,7 +1626,7 @@ db_FETCH(db, key, flags=0) { DBT value ; - DBT_flags(value) ; + DBT_clear(value) ; CurrentDB = db ; /* RETVAL = ((db->dbp)->get)(db->dbp, TXN &key, &value, flags) ; */ RETVAL = db_get(db, key, value, flags) ; @@ -1231,8 +1652,8 @@ db_FIRSTKEY(db) DBTKEY key ; DBT value ; - DBT_flags(key) ; - DBT_flags(value) ; + DBT_clear(key) ; + DBT_clear(value) ; CurrentDB = db ; RETVAL = do_SEQ(db, key, value, R_FIRST) ; ST(0) = sv_newmortal(); @@ -1247,7 +1668,7 @@ db_NEXTKEY(db, key) { DBT value ; - DBT_flags(value) ; + DBT_clear(value) ; CurrentDB = db ; RETVAL = do_SEQ(db, key, value, R_NEXT) ; ST(0) = sv_newmortal(); @@ -1271,8 +1692,8 @@ unshift(db, ...) DB * Db = db->dbp ; STRLEN n_a; - DBT_flags(key) ; - DBT_flags(value) ; + DBT_clear(key) ; + DBT_clear(value) ; CurrentDB = db ; #ifdef DB_VERSION_MAJOR /* get the first value */ @@ -1309,8 +1730,8 @@ pop(db) DBTKEY key ; DBT value ; - DBT_flags(key) ; - DBT_flags(value) ; + DBT_clear(key) ; + DBT_clear(value) ; CurrentDB = db ; /* First get the final value */ @@ -1336,8 +1757,8 @@ shift(db) DBT value ; DBTKEY key ; - DBT_flags(key) ; - DBT_flags(value) ; + DBT_clear(key) ; + DBT_clear(value) ; CurrentDB = db ; /* get the first value */ RETVAL = do_SEQ(db, key, value, R_FIRST) ; @@ -1365,50 +1786,44 @@ push(db, ...) DB * Db = db->dbp ; int i ; STRLEN n_a; + int keyval ; DBT_flags(key) ; DBT_flags(value) ; CurrentDB = db ; -#ifdef DB_VERSION_MAJOR - RETVAL = 0 ; - key = empty ; - for (i = 1 ; i < items ; ++i) - { - value.data = SvPV(ST(i), n_a) ; - value.size = n_a ; - RETVAL = (Db->put)(Db, NULL, &key, &value, DB_APPEND) ; - if (RETVAL != 0) - break; - } -#else /* Set the Cursor to the Last element */ RETVAL = do_SEQ(db, key, value, R_LAST) ; +#ifndef DB_VERSION_MAJOR if (RETVAL >= 0) +#endif { - if (RETVAL == 1) - key = empty ; - for (i = items - 1 ; i > 0 ; --i) + if (RETVAL == 0) + keyval = *(int*)key.data ; + else + keyval = 0 ; + for (i = 1 ; i < items ; ++i) { value.data = SvPV(ST(i), n_a) ; value.size = n_a ; - RETVAL = (Db->put)(Db, &key, &value, R_IAFTER) ; + ++ keyval ; + key.data = &keyval ; + key.size = sizeof(int) ; + RETVAL = (Db->put)(Db, TXN &key, &value, 0) ; if (RETVAL != 0) break; } } -#endif } OUTPUT: RETVAL - I32 length(db) DB_File db ALIAS: FETCHSIZE = 1 CODE: CurrentDB = db ; - RETVAL = GetArrayLength(db) ; + RETVAL = GetArrayLength(aTHX_ db) ; OUTPUT: RETVAL @@ -1443,7 +1858,7 @@ db_get(db, key, value, flags=0) u_int flags CODE: CurrentDB = db ; - DBT_flags(value) ; + DBT_clear(value) ; RETVAL = db_get(db, key, value, flags) ; #ifdef DB_VERSION_MAJOR if (RETVAL > 0) @@ -1518,7 +1933,7 @@ db_seq(db, key, value, flags) u_int flags CODE: CurrentDB = db ; - DBT_flags(value) ; + DBT_clear(value) ; RETVAL = db_seq(db, key, value, flags); #ifdef DB_VERSION_MAJOR if (RETVAL > 0) @@ -1531,3 +1946,56 @@ db_seq(db, key, value, flags) key value +#ifdef DBM_FILTERING + +#define setFilter(type) \ + { \ + if (db->type) \ + RETVAL = sv_mortalcopy(db->type) ; \ + ST(0) = RETVAL ; \ + if (db->type && (code == &PL_sv_undef)) { \ + SvREFCNT_dec(db->type) ; \ + db->type = NULL ; \ + } \ + else if (code) { \ + if (db->type) \ + sv_setsv(db->type, code) ; \ + else \ + db->type = newSVsv(code) ; \ + } \ + } + + +SV * +filter_fetch_key(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_key) ; + +SV * +filter_store_key(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_key) ; + +SV * +filter_fetch_value(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_value) ; + +SV * +filter_store_value(db, code) + DB_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_value) ; + +#endif /* DBM_FILTERING */ diff --git a/contrib/perl5/ext/DB_File/Makefile.PL b/contrib/perl5/ext/DB_File/Makefile.PL index 1a13e0bbd8ee..cac6578bb308 100644 --- a/contrib/perl5/ext/DB_File/Makefile.PL +++ b/contrib/perl5/ext/DB_File/Makefile.PL @@ -14,7 +14,15 @@ WriteMakefile( MAN3PODS => {}, # Pods will be built by installman. #INC => '-I/usr/local/include', VERSION_FROM => 'DB_File.pm', + OBJECT => 'version$(OBJ_EXT) DB_File$(OBJ_EXT)', XSPROTOARG => '-noprototypes', - DEFINE => "$OS2", + DEFINE => $OS2 || "", ); +sub MY::postamble { + ' +version$(OBJ_EXT): version.c + +' ; +} + diff --git a/contrib/perl5/ext/DB_File/dbinfo b/contrib/perl5/ext/DB_File/dbinfo index 24a794448f84..701ac612b62b 100644 --- a/contrib/perl5/ext/DB_File/dbinfo +++ b/contrib/perl5/ext/DB_File/dbinfo @@ -4,8 +4,8 @@ # a database file # # Author: Paul Marquess -# Version: 1.01 -# Date 16th April 1998 +# Version: 1.02 +# Date 20th August 1999 # # Copyright (c) 1998 Paul Marquess. All rights reserved. # This program is free software; you can redistribute it and/or @@ -19,7 +19,7 @@ use strict ; my %Data = ( 0x053162 => { - Type => "Btree", + Type => "Btree", Versions => { 1 => "Unknown (older than 1.71)", @@ -27,18 +27,27 @@ my %Data = 3 => "1.71 -> 1.85, 1.86", 4 => "Unknown", 5 => "2.0.0 -> 2.3.0", - 6 => "2.3.1 or greater", + 6 => "2.3.1 -> 2.7.7", + 7 => "3.0.0 or greater", } }, 0x061561 => { - Type => "Hash", + Type => "Hash", Versions => { 1 => "Unknown (older than 1.71)", 2 => "1.71 -> 1.85", 3 => "1.86", 4 => "2.0.0 -> 2.1.0", - 5 => "2.2.6 or greater", + 5 => "2.2.6 -> 2.7.7", + 6 => "3.0.0 or greater", + } + }, + 0x042253 => { + Type => "Queue", + Versions => + { + 1 => "3.0.0 or greater", } }, ) ; diff --git a/contrib/perl5/ext/DB_File/hints/sco.pl b/contrib/perl5/ext/DB_File/hints/sco.pl new file mode 100644 index 000000000000..ff604409496e --- /dev/null +++ b/contrib/perl5/ext/DB_File/hints/sco.pl @@ -0,0 +1,2 @@ +# osr5 needs to explicitly link against libc to pull in some static symbols +$self->{LIBS} = ['-ldb -lc'] if $Config{'osvers'} =~ '3\.2v5\.0\..' ; diff --git a/contrib/perl5/ext/DB_File/typemap b/contrib/perl5/ext/DB_File/typemap index 994ba272323b..41a24f4a8638 100644 --- a/contrib/perl5/ext/DB_File/typemap +++ b/contrib/perl5/ext/DB_File/typemap @@ -1,8 +1,8 @@ # typemap for Perl 5 interface to Berkeley # # written by Paul Marquess -# last modified 21st February 1999 -# version 1.65 +# last modified 7th September 1999 +# version 1.71 # #################################### DB SECTION # @@ -15,21 +15,23 @@ DBTKEY T_dbtkeydatum INPUT T_dbtkeydatum + ckFilter($arg, filter_store_key, \"filter_store_key\"); + DBT_clear($var) ; if (db->type != DB_RECNO) { $var.data = SvPV($arg, PL_na); $var.size = (int)PL_na; - DBT_flags($var); } else { - Value = GetRecnoKey(db, SvIV($arg)) ; + Value = GetRecnoKey(aTHX_ db, SvIV($arg)) ; $var.data = & Value; $var.size = (int)sizeof(recno_t); - DBT_flags($var); } T_dbtdatum + ckFilter($arg, filter_store_value, \"filter_store_value\"); + DBT_clear($var) ; $var.data = SvPV($arg, PL_na); $var.size = (int)PL_na; - DBT_flags($var); + OUTPUT diff --git a/contrib/perl5/ext/DB_File/version.c b/contrib/perl5/ext/DB_File/version.c new file mode 100644 index 000000000000..f8c6cac9af78 --- /dev/null +++ b/contrib/perl5/ext/DB_File/version.c @@ -0,0 +1,71 @@ +/* + + version.c -- Perl 5 interface to Berkeley DB + + written by Paul Marquess + last modified 16th January 2000 + version 1.72 + + All comments/suggestions/problems are welcome + + Copyright (c) 1995-2000 Paul Marquess. All rights reserved. + This program is free software; you can redistribute it and/or + modify it under the same terms as Perl itself. + + Changes: + 1.71 - Support for Berkeley DB version 3. + Support for Berkeley DB 2/3's backward compatability mode. + 1.72 - No change. + +*/ + +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#include + +void +__getBerkeleyDBInfo() +{ + SV * version_sv = perl_get_sv("DB_File::db_version", GV_ADD|GV_ADDMULTI) ; + SV * ver_sv = perl_get_sv("DB_File::db_ver", GV_ADD|GV_ADDMULTI) ; + SV * compat_sv = perl_get_sv("DB_File::db_185_compat", GV_ADD|GV_ADDMULTI) ; + +#ifdef DB_VERSION_MAJOR + int Major, Minor, Patch ; + + (void)db_version(&Major, &Minor, &Patch) ; + + /* Check that the versions of db.h and libdb.a are the same */ + if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR + || Patch != DB_VERSION_PATCH) + croak("\nDB_File needs compatible versions of libdb & db.h\n\tyou have db.h version %d.%d.%d and libdb version %d.%d.%d\n", + DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, + Major, Minor, Patch) ; + + /* check that libdb is recent enough -- we need 2.3.4 or greater */ + if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4))) + croak("DB_File needs Berkeley DB 2.3.4 or greater, you have %d.%d.%d\n", + Major, Minor, Patch) ; + + { + char buffer[40] ; + sprintf(buffer, "%d.%d", Major, Minor) ; + sv_setpv(version_sv, buffer) ; + sprintf(buffer, "%d.%03d%03d", Major, Minor, Patch) ; + sv_setpv(ver_sv, buffer) ; + } + +#else /* ! DB_VERSION_MAJOR */ + sv_setiv(version_sv, 1) ; + sv_setiv(ver_sv, 1) ; +#endif /* ! DB_VERSION_MAJOR */ + +#ifdef COMPAT185 + sv_setiv(compat_sv, 1) ; +#else /* ! COMPAT185 */ + sv_setiv(compat_sv, 0) ; +#endif /* ! COMPAT185 */ + +} diff --git a/contrib/perl5/ext/Data/Dumper/Changes b/contrib/perl5/ext/Data/Dumper/Changes index 9a96edab8dd9..161aba940b63 100644 --- a/contrib/perl5/ext/Data/Dumper/Changes +++ b/contrib/perl5/ext/Data/Dumper/Changes @@ -6,6 +6,21 @@ HISTORY - public release history for Data::Dumper =over 8 +=item 2.11 (unreleased) + +C<0> is now dumped as such, not as C<'0'>. + +qr// objects are now dumped correctly (provided a post-5.005_58) +overload.pm exists). + +Implemented $Data::Dumper::Maxdepth, which was on the Todo list. +Thanks to John Nolan . + +=item 2.101 (30 Apr 1999) + +Minor release to sync with version in 5.005_03. Fixes dump of +dummy coderefs. + =item 2.10 (31 Oct 1998) Bugfixes for dumping related undef values, globs, and better double diff --git a/contrib/perl5/ext/Data/Dumper/Dumper.pm b/contrib/perl5/ext/Data/Dumper/Dumper.pm index b1fd2b790ae2..93b87f9aba96 100644 --- a/contrib/perl5/ext/Data/Dumper/Dumper.pm +++ b/contrib/perl5/ext/Data/Dumper/Dumper.pm @@ -9,22 +9,22 @@ package Data::Dumper; -$VERSION = $VERSION = '2.101'; +$VERSION = '2.101'; #$| = 1; -require 5.004; +require 5.005_64; require Exporter; -require DynaLoader; +use XSLoader (); require overload; use Carp; -@ISA = qw(Exporter DynaLoader); +@ISA = qw(Exporter); @EXPORT = qw(Dumper); @EXPORT_OK = qw(DumperX); -bootstrap Data::Dumper; +XSLoader::load 'Data::Dumper'; # module vars and their defaults $Indent = 2 unless defined $Indent; @@ -39,7 +39,7 @@ $Deepcopy = 0 unless defined $Deepcopy; $Quotekeys = 1 unless defined $Quotekeys; $Bless = "bless" unless defined $Bless; #$Expdepth = 0 unless defined $Expdepth; -#$Maxdepth = 0 unless defined $Maxdepth; +$Maxdepth = 0 unless defined $Maxdepth; # # expects an arrayref of values to be dumped. @@ -74,7 +74,7 @@ sub new { quotekeys => $Quotekeys, # quote hash keys 'bless' => $Bless, # keyword to use for "bless" # expdepth => $Expdepth, # cutoff depth for explicit dumping -# maxdepth => $Maxdepth, # depth beyond which we give up + maxdepth => $Maxdepth, # depth beyond which we give up }; if ($Indent > 0) { @@ -146,11 +146,17 @@ sub Names { sub DESTROY {} +sub Dump { + return &Dumpxs + unless $Data::Dumper::Useqq || (ref($_[0]) && $_[0]->{useqq}); + return &Dumpperl; +} + # # dump the refs in the current dumper object. # expects same args as new() if called via package name. # -sub Dump { +sub Dumpperl { my($s) = shift; my(@out, $val, $name); my($i) = 0; @@ -214,14 +220,13 @@ sub _dump { if ($type) { # prep it, if it looks like an object - if ($type =~ /[a-z_:]/) { - my $freezer = $s->{freezer}; - $val->$freezer() if $freezer && UNIVERSAL::can($val, $freezer); + if (my $freezer = $s->{freezer}) { + $val->$freezer() if UNIVERSAL::can($val, $freezer); } ($realpack, $realtype, $id) = (overload::StrVal($val) =~ /^(?:(.*)\=)?([^=]*)\(([^\(]*)\)$/); - + # if it has a name, we need to either look it up, or keep a tab # on it so we know when we hit it later if (defined($name) and length($name)) { @@ -231,7 +236,7 @@ sub _dump { if ($s->{purity} and $s->{level} > 0) { $out = ($realtype eq 'HASH') ? '{}' : ($realtype eq 'ARRAY') ? '[]' : - "''" ; + 'do{my $o}' ; push @post, $name . " = " . $s->{seen}{$id}[0]; } else { @@ -259,14 +264,33 @@ sub _dump { } } - $s->{level}++; - $ipad = $s->{xpad} x $s->{level}; + if ($realpack and $realpack eq 'Regexp') { + $out = "$val"; + $out =~ s,/,\\/,g; + return "qr/$out/"; + } - if ($realpack) { # we have a blessed ref + # If purity is not set and maxdepth is set, then check depth: + # if we have reached maximum depth, return the string + # representation of the thing we are currently examining + # at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)'). + if (!$s->{purity} + and $s->{maxdepth} > 0 + and $s->{level} >= $s->{maxdepth}) + { + return qq['$val']; + } + + # we have a blessed ref + if ($realpack) { $out = $s->{'bless'} . '( '; $blesspad = $s->{apad}; $s->{apad} .= ' ' if ($s->{indent} >= 2); } + + $s->{level}++; + $ipad = $s->{xpad} x $s->{level}; + if ($realtype eq 'SCALAR') { if ($realpack) { @@ -389,7 +413,7 @@ sub _dump { elsif (!defined($val)) { $out .= "undef"; } - elsif ($val =~ /^-?[1-9]\d{0,8}$/) { # safe decimal number + elsif ($val =~ /^(?:0|-?[1-9]\d{0,8})$/) { # safe decimal number $out .= $val; } else { # string @@ -422,9 +446,7 @@ sub Dumper { return Data::Dumper->Dump([@_]); } -# -# same, only calls the XS version -# +# compat stub sub DumperX { return Data::Dumper->Dumpxs([@_], []); } @@ -511,6 +533,12 @@ sub Bless { defined($v) ? (($s->{'bless'} = $v), return $s) : $s->{'bless'}; } +sub Maxdepth { + my($s, $v) = @_; + defined($v) ? (($s->{'maxdepth'} = $v), return $s) : $s->{'maxdepth'}; +} + + # used by qquote below my %esc = ( "\a" => "\\a", @@ -526,25 +554,35 @@ my %esc = ( sub qquote { local($_) = shift; s/([\\\"\@\$])/\\$1/g; - return qq("$_") unless /[^\040-\176]/; # fast exit + return qq("$_") unless + /[^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~]/; # fast exit my $high = shift || ""; s/([\a\b\t\n\f\r\e])/$esc{$1}/g; - # no need for 3 digits in escape for these - s/([\0-\037])(?!\d)/'\\'.sprintf('%o',ord($1))/eg; - - s/([\0-\037\177])/'\\'.sprintf('%03o',ord($1))/eg; - if ($high eq "iso8859") { - s/([\200-\240])/'\\'.sprintf('%o',ord($1))/eg; - } elsif ($high eq "utf8") { -# use utf8; -# $str =~ s/([^\040-\176])/sprintf "\\x{%04x}", ord($1)/ge; - } elsif ($high eq "8bit") { - # leave it as it is - } else { - s/([\0-\037\177-\377])/'\\'.sprintf('%03o',ord($1))/eg; + if (ord('^')==94) { # ascii + # no need for 3 digits in escape for these + s/([\0-\037])(?!\d)/'\\'.sprintf('%o',ord($1))/eg; + s/([\0-\037\177])/'\\'.sprintf('%03o',ord($1))/eg; + # all but last branch below not supported --BEHAVIOR SUBJECT TO CHANGE-- + if ($high eq "iso8859") { + s/([\200-\240])/'\\'.sprintf('%o',ord($1))/eg; + } elsif ($high eq "utf8") { +# use utf8; +# $str =~ s/([^\040-\176])/sprintf "\\x{%04x}", ord($1)/ge; + } elsif ($high eq "8bit") { + # leave it as it is + } else { + s/([\200-\377])/'\\'.sprintf('%03o',ord($1))/eg; + } } + else { # ebcdic + s{([^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~])(?!\d)} + {my $v = ord($1); '\\'.sprintf(($v <= 037 ? '%o' : '%03o'), $v)}eg; + s{([^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~])} + {'\\'.sprintf('%03o',ord($1))}eg; + } + return qq("$_"); } @@ -653,12 +691,6 @@ of strings corresponding to the supplied values. The second form, for convenience, simply calls the C method on its arguments before dumping the object immediately. -=item I<$OBJ>->Dumpxs I I->Dumpxs(I, I) - -This method is available if you were able to compile and install the XSUB -extension to C. It is exactly identical to the C method -above, only about 4 to 5 times faster, since it is written entirely in C. - =item I<$OBJ>->Seen(I<[HASHREF]>) Queries or adds to the internal table of already encountered references. @@ -702,12 +734,6 @@ configuration options below. The values will be named C<$VAR>I in the output, where I is a numeric suffix. Will return a list of strings in an array context. -=item DumperX(I) - -Identical to the C function above, but this calls the XSUB -implementation. Only available if you were able to compile and install -the XSUB extensions in C. - =back =head2 Configuration Variables or Methods @@ -763,8 +789,8 @@ When set, enables the use of double quotes for representing string values. Whitespace other than space will be represented as C<[\n\t\r]>, "unsafe" characters will be backslashed, and unprintable characters will be output as quoted octal integers. Since setting this variable imposes a performance -penalty, the default is 0. The C method does not honor this -flag yet. +penalty, the default is 0. C will run slower if this flag is set, +since the fast XSUB implementation doesn't support it yet. =item $Data::Dumper::Terse I I<$OBJ>->Terse(I<[NEWVAL]>) @@ -814,6 +840,14 @@ builtin operator used to create objects. A function with the specified name should exist, and should accept the same arguments as the builtin. Default is C. +=item $Data::Dumper::Maxdepth I $I->Maxdepth(I<[NEWVAL]>) + +Can be set to a positive integer that specifies the depth beyond which +which we don't venture into a structure. Has no effect when +C is set. (Useful in debugger when we often don't +want to see more than enough). Default is 0, which means there is +no maximum depth. + =back =head2 Exports @@ -847,7 +881,7 @@ distribution for more examples.) $boo = [ 1, [], "abcd", \*foo, {1 => 'a', 023 => 'b', 0x45 => 'c'}, \\"p\q\'r", $foo, $fuz]; - + ######## # simple usage ######## @@ -868,12 +902,12 @@ distribution for more examples.) $Data::Dumper::Useqq = 1; # print strings in double quotes print Dumper($boo); - - + + ######## # recursive structures ######## - + @c = ('c'); $c = \@c; $b = {}; @@ -882,37 +916,52 @@ distribution for more examples.) $b->{b} = $a->[1]; $b->{c} = $a->[2]; print Data::Dumper->Dump([$a,$b,$c], [qw(a b c)]); - - + + $Data::Dumper::Purity = 1; # fill in the holes for eval print Data::Dumper->Dump([$a, $b], [qw(*a b)]); # print as @a print Data::Dumper->Dump([$b, $a], [qw(*b a)]); # print as %b - - + + $Data::Dumper::Deepcopy = 1; # avoid cross-refs print Data::Dumper->Dump([$b, $a], [qw(*b a)]); - - + + $Data::Dumper::Purity = 0; # avoid cross-refs print Data::Dumper->Dump([$b, $a], [qw(*b a)]); - - + + ######## + # deep structures + ######## + + $a = "pearl"; + $b = [ $a ]; + $c = { 'b' => $b }; + $d = [ $c ]; + $e = { 'd' => $d }; + $f = { 'e' => $e }; + print Data::Dumper->Dump([$f], [qw(f)]); + + $Data::Dumper::Maxdepth = 3; # no deeper than 3 refs down + print Data::Dumper->Dump([$f], [qw(f)]); + + ######## # object-oriented usage ######## - + $d = Data::Dumper->new([$a,$b], [qw(a b)]); $d->Seen({'*c' => $c}); # stash a ref without printing it $d->Indent(3); print $d->Dump; $d->Reset->Purity(0); # empty the seen cache print join "----\n", $d->Dump; - - + + ######## # persistence ######## - + package Foo; sub new { bless { state => 'awake' }, shift } sub Freeze { @@ -921,7 +970,7 @@ distribution for more examples.) $s->{state} = 'asleep'; return bless $s, 'Foo::ZZZ'; } - + package Foo::ZZZ; sub Thaw { my $s = shift; @@ -929,7 +978,7 @@ distribution for more examples.) $s->{state} = 'awake'; return bless $s, 'Foo'; } - + package Foo; use Data::Dumper; $a = Foo->new; @@ -940,12 +989,12 @@ distribution for more examples.) print $c; $d = eval $c; print Data::Dumper->Dump([$d], ['d']); - - + + ######## # symbol substitution (useful for recreating CODE refs) ######## - + sub foo { print "foo speaking\n" } *other = \&foo; $bar = [ \&other ]; @@ -974,15 +1023,15 @@ to have, you can use the C method to pre-seed the internal reference table and make the dumped output point to them, instead. See L above. -The C flag is not honored by C (it always outputs -strings in single quotes). +The C flag makes Dump() run slower, since the XSUB implementation +does not support it. SCALAR objects have the weirdest looking C workaround. =head1 AUTHOR -Gurusamy Sarathy gsar@umich.edu +Gurusamy Sarathy gsar@activestate.com Copyright (c) 1996-98 Gurusamy Sarathy. All rights reserved. This program is free software; you can redistribute it and/or @@ -991,7 +1040,7 @@ modify it under the same terms as Perl itself. =head1 VERSION -Version 2.10 (31 Oct 1998) +Version 2.11 (unreleased) =head1 SEE ALSO diff --git a/contrib/perl5/ext/Data/Dumper/Dumper.xs b/contrib/perl5/ext/Data/Dumper/Dumper.xs index a3da110453d2..990ea7469931 100644 --- a/contrib/perl5/ext/Data/Dumper/Dumper.xs +++ b/contrib/perl5/ext/Data/Dumper/Dumper.xs @@ -1,10 +1,14 @@ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" +#ifndef PERL_VERSION #include "patchlevel.h" +#define PERL_VERSION PATCHLEVEL +#endif -#if PATCHLEVEL < 5 +#if PERL_VERSION < 5 # ifndef PL_sv_undef # define PL_sv_undef sv_undef # endif @@ -16,14 +20,15 @@ # endif #endif -static I32 num_q _((char *s, STRLEN slen)); -static I32 esc_q _((char *dest, char *src, STRLEN slen)); -static SV *sv_x _((SV *sv, char *str, STRLEN len, I32 n)); -static I32 DD_dump _((SV *val, char *name, STRLEN namelen, SV *retval, - HV *seenhv, AV *postav, I32 *levelp, I32 indent, - SV *pad, SV *xpad, SV *apad, SV *sep, - SV *freezer, SV *toaster, - I32 purity, I32 deepcopy, I32 quotekeys, SV *bless)); +static I32 num_q (char *s, STRLEN slen); +static I32 esc_q (char *dest, char *src, STRLEN slen); +static SV *sv_x (pTHX_ SV *sv, char *str, STRLEN len, I32 n); +static I32 DD_dump (pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, + HV *seenhv, AV *postav, I32 *levelp, I32 indent, + SV *pad, SV *xpad, SV *apad, SV *sep, + SV *freezer, SV *toaster, + I32 purity, I32 deepcopy, I32 quotekeys, SV *bless, + I32 maxdepth); /* does a string need to be protected? */ static I32 @@ -40,11 +45,12 @@ TOP: } if (isIDFIRST(*s)) { while (*++s) - if (!isALNUM(*s)) + if (!isALNUM(*s)) { if (*s == ':') goto TOP; else return 1; + } } else return 1; @@ -92,7 +98,7 @@ esc_q(register char *d, register char *s, register STRLEN slen) /* append a repeated string to an SV */ static SV * -sv_x(SV *sv, register char *str, STRLEN len, I32 n) +sv_x(pTHX_ SV *sv, register char *str, STRLEN len, I32 n) { if (sv == Nullsv) sv = newSVpvn("", 0); @@ -123,10 +129,10 @@ sv_x(SV *sv, register char *str, STRLEN len, I32 n) * efficiency raisins.) Ugggh! */ static I32 -DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, +DD_dump(pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, AV *postav, I32 *levelp, I32 indent, SV *pad, SV *xpad, SV *apad, SV *sep, SV *freezer, SV *toaster, I32 purity, - I32 deepcopy, I32 quotekeys, SV *bless) + I32 deepcopy, I32 quotekeys, SV *bless, I32 maxdepth) { char tmpbuf[128]; U32 i; @@ -196,7 +202,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, else if (realtype == SVt_PVAV) sv_catpvn(retval, "[]", 2); else - sv_catpvn(retval, "''", 2); + sv_catpvn(retval, "do{my $o}", 9); postentry = newSVpvn(name, namelen); sv_catpvn(postentry, " = ", 3); sv_catsv(postentry, othername); @@ -248,11 +254,39 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, SvREFCNT_dec(seenentry); } } - - (*levelp)++; - ipad = sv_x(Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp); - if (realpack) { /* we have a blessed ref */ + if (realpack && *realpack == 'R' && strEQ(realpack, "Regexp")) { + STRLEN rlen; + char *rval = SvPV(val, rlen); + char *slash = strchr(rval, '/'); + sv_catpvn(retval, "qr/", 3); + while (slash) { + sv_catpvn(retval, rval, slash-rval); + sv_catpvn(retval, "\\/", 2); + rlen -= slash-rval+1; + rval = slash+1; + slash = strchr(rval, '/'); + } + sv_catpvn(retval, rval, rlen); + sv_catpvn(retval, "/", 1); + return 1; + } + + /* If purity is not set and maxdepth is set, then check depth: + * if we have reached maximum depth, return the string + * representation of the thing we are currently examining + * at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)'). + */ + if (!purity && maxdepth > 0 && *levelp >= maxdepth) { + STRLEN vallen; + char *valstr = SvPV(val,vallen); + sv_catpvn(retval, "'", 1); + sv_catpvn(retval, valstr, vallen); + sv_catpvn(retval, "'", 1); + return 1; + } + + if (realpack) { /* we have a blessed ref */ STRLEN blesslen; char *blessstr = SvPV(bless, blesslen); sv_catpvn(retval, blessstr, blesslen); @@ -260,26 +294,31 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, if (indent >= 2) { blesspad = apad; apad = newSVsv(apad); - sv_x(apad, " ", 1, blesslen+2); + sv_x(aTHX_ apad, " ", 1, blesslen+2); } } + (*levelp)++; + ipad = sv_x(aTHX_ Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp); + if (realtype <= SVt_PVBM) { /* scalar ref */ SV *namesv = newSVpvn("${", 2); sv_catpvn(namesv, name, namelen); sv_catpvn(namesv, "}", 1); if (realpack) { /* blessed */ sv_catpvn(retval, "do{\\(my $o = ", 13); - DD_dump(ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv, + DD_dump(aTHX_ ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv, postav, levelp, indent, pad, xpad, apad, sep, - freezer, toaster, purity, deepcopy, quotekeys, bless); + freezer, toaster, purity, deepcopy, quotekeys, bless, + maxdepth); sv_catpvn(retval, ")}", 2); } /* plain */ else { sv_catpvn(retval, "\\", 1); - DD_dump(ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv, + DD_dump(aTHX_ ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv, postav, levelp, indent, pad, xpad, apad, sep, - freezer, toaster, purity, deepcopy, quotekeys, bless); + freezer, toaster, purity, deepcopy, quotekeys, bless, + maxdepth); } SvREFCNT_dec(namesv); } @@ -288,9 +327,10 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, sv_catpvn(namesv, name, namelen); sv_catpvn(namesv, "}", 1); sv_catpvn(retval, "\\", 1); - DD_dump(ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv, + DD_dump(aTHX_ ival, SvPVX(namesv), SvCUR(namesv), retval, seenhv, postav, levelp, indent, pad, xpad, apad, sep, - freezer, toaster, purity, deepcopy, quotekeys, bless); + freezer, toaster, purity, deepcopy, quotekeys, bless, + maxdepth); SvREFCNT_dec(namesv); } else if (realtype == SVt_PVAV) { @@ -345,7 +385,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, ilen = inamelen; sv_setiv(ixsv, ix); - (void) sprintf(iname+ilen, "%ld", ix); + (void) sprintf(iname+ilen, "%"IVdf, (IV)ix); ilen = strlen(iname); iname[ilen++] = ']'; iname[ilen] = '\0'; if (indent >= 3) { @@ -356,14 +396,15 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, } sv_catsv(retval, totpad); sv_catsv(retval, ipad); - DD_dump(elem, iname, ilen, retval, seenhv, postav, + DD_dump(aTHX_ elem, iname, ilen, retval, seenhv, postav, levelp, indent, pad, xpad, apad, sep, - freezer, toaster, purity, deepcopy, quotekeys, bless); + freezer, toaster, purity, deepcopy, quotekeys, bless, + maxdepth); if (ix < ixmax) sv_catpvn(retval, ",", 1); } if (ixmax >= 0) { - SV *opad = sv_x(Nullsv, SvPVX(xpad), SvCUR(xpad), (*levelp)-1); + SV *opad = sv_x(aTHX_ Nullsv, SvPVX(xpad), SvCUR(xpad), (*levelp)-1); sv_catsv(retval, totpad); sv_catsv(retval, opad); SvREFCNT_dec(opad); @@ -462,16 +503,17 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, else newapad = apad; - DD_dump(hval, SvPVX(sname), SvCUR(sname), retval, seenhv, + DD_dump(aTHX_ hval, SvPVX(sname), SvCUR(sname), retval, seenhv, postav, levelp, indent, pad, xpad, newapad, sep, - freezer, toaster, purity, deepcopy, quotekeys, bless); + freezer, toaster, purity, deepcopy, quotekeys, bless, + maxdepth); SvREFCNT_dec(sname); Safefree(nkey); if (indent >= 2) SvREFCNT_dec(newapad); } if (i) { - SV *opad = sv_x(Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp-1); + SV *opad = sv_x(aTHX_ Nullsv, SvPVX(xpad), SvCUR(xpad), *levelp-1); sv_catsv(retval, totpad); sv_catsv(retval, opad); SvREFCNT_dec(opad); @@ -543,7 +585,7 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, if (SvIOK(val)) { STRLEN len; i = SvIV(val); - (void) sprintf(tmpbuf, "%d", i); + (void) sprintf(tmpbuf, "%"IVdf, (IV)i); len = strlen(tmpbuf); sv_catpvn(retval, tmpbuf, len); } @@ -599,12 +641,12 @@ DD_dump(SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv, SvCUR(newapad) = 0; if (indent >= 2) - (void)sv_x(newapad, " ", 1, SvCUR(postentry)); + (void)sv_x(aTHX_ newapad, " ", 1, SvCUR(postentry)); - DD_dump(e, SvPVX(nname), SvCUR(nname), postentry, + DD_dump(aTHX_ e, SvPVX(nname), SvCUR(nname), postentry, seenhv, postav, &nlevel, indent, pad, xpad, newapad, sep, freezer, toaster, purity, - deepcopy, quotekeys, bless); + deepcopy, quotekeys, bless, maxdepth); SvREFCNT_dec(e); } } @@ -664,28 +706,22 @@ Data_Dumper_Dumpxs(href, ...) SV **svp; SV *val, *name, *pad, *xpad, *apad, *sep, *tmp, *varname; SV *freezer, *toaster, *bless; - I32 purity, deepcopy, quotekeys; + I32 purity, deepcopy, quotekeys, maxdepth = 0; char tmpbuf[1024]; I32 gimme = GIMME; if (!SvROK(href)) { /* call new to get an object first */ - SV *valarray; - SV *namearray; - - if (items == 3) { - valarray = ST(1); - namearray = ST(2); - } - else - croak("Usage: Data::Dumper::Dumpxs(PACKAGE, VAL_ARY_REF, NAME_ARY_REF)"); + if (items < 2) + croak("Usage: Data::Dumper::Dumpxs(PACKAGE, VAL_ARY_REF, [NAME_ARY_REF])"); ENTER; SAVETMPS; PUSHMARK(sp); XPUSHs(href); - XPUSHs(sv_2mortal(newSVsv(valarray))); - XPUSHs(sv_2mortal(newSVsv(namearray))); + XPUSHs(sv_2mortal(newSVsv(ST(1)))); + if (items >= 3) + XPUSHs(sv_2mortal(newSVsv(ST(2)))); PUTBACK; i = perl_call_method("new", G_SCALAR); SPAGAIN; @@ -747,6 +783,8 @@ Data_Dumper_Dumpxs(href, ...) quotekeys = SvTRUE(*svp); if ((svp = hv_fetch(hv, "bless", 5, FALSE))) bless = *svp; + if ((svp = hv_fetch(hv, "maxdepth", 8, FALSE))) + maxdepth = SvIV(*svp); postav = newAV(); if (todumpav) @@ -795,13 +833,13 @@ Data_Dumper_Dumpxs(href, ...) STRLEN nchars = 0; sv_setpvn(name, "$", 1); sv_catsv(name, varname); - (void) sprintf(tmpbuf, "%ld", i+1); + (void) sprintf(tmpbuf, "%"IVdf, (IV)(i+1)); nchars = strlen(tmpbuf); sv_catpvn(name, tmpbuf, nchars); } if (indent >= 2) { - SV *tmpsv = sv_x(Nullsv, " ", 1, SvCUR(name)+3); + SV *tmpsv = sv_x(aTHX_ Nullsv, " ", 1, SvCUR(name)+3); newapad = newSVsv(apad); sv_catsv(newapad, tmpsv); SvREFCNT_dec(tmpsv); @@ -809,10 +847,10 @@ Data_Dumper_Dumpxs(href, ...) else newapad = apad; - DD_dump(val, SvPVX(name), SvCUR(name), valstr, seenhv, + DD_dump(aTHX_ val, SvPVX(name), SvCUR(name), valstr, seenhv, postav, &level, indent, pad, xpad, newapad, sep, freezer, toaster, purity, deepcopy, quotekeys, - bless); + bless, maxdepth); if (indent >= 2) SvREFCNT_dec(newapad); diff --git a/contrib/perl5/ext/Data/Dumper/Todo b/contrib/perl5/ext/Data/Dumper/Todo index 7dcd40b8e3e0..bd76e65b0381 100644 --- a/contrib/perl5/ext/Data/Dumper/Todo +++ b/contrib/perl5/ext/Data/Dumper/Todo @@ -8,12 +8,6 @@ The following functionality will be supported in the next few releases. =over 4 -=item $Data::Dumper::Maxdepth I $I->Maxdepth(I) - -Depth beyond which we don't venture into a structure. Has no effect when -C is set. (useful in debugger when we often don't -want to see more than enough). - =item $Data::Dumper::Expdepth I $I->Expdepth(I) Dump contents explicitly up to a certain depth and then use names for diff --git a/contrib/perl5/ext/Devel/DProf/Changes b/contrib/perl5/ext/Devel/DProf/Changes new file mode 100644 index 000000000000..216498ba62e0 --- /dev/null +++ b/contrib/perl5/ext/Devel/DProf/Changes @@ -0,0 +1,176 @@ +1999 Jan 8 + + Ilya Zakharevich: + Newer perls: Add PERL_POLLUTE and dTHR. + +1998 Nov 10 +This version of DProf should work with older Perls too, but to get +full benefits some patches to 5.004_55 are needed. Patches take effect +after new version of Perl is installed, and DProf recompiled. + +Without these patches the overhead of DProf is too big, thus the statistic +may be very skewed. + +Oct 98: + Ilya Zakharevich: + DProf.xs + - correct defstash to PL_defstash + - nonlocal exits work + dprofpp + - nonlocal exits work + DProf.pm + - documentation updated + t/test6.* + - added + +Nov-Dec 97: + Jason E. Holt and Ilya Zakharevich: + DProf.xs + - will not wait until completion to write the output, size of buffer + regulated by PERL_DPROF_BUFFER, default 2**14 words; + + Ilya Zakharevich: + dprofpp + - smarter in fixing garbled profiles; + - subtracts DProf output overhead, and suggested profiler overhead; + - new options -A, -R, -g subroutine, -S; + - handles 'goto' too; + DProf.xs + - 7x denser output (time separated from name, ids for subs); + - outputs report-write overhead; + - optional higher-resolution (currently OS/2 only, cannot grok VMS code); + - outputs suggested profiler overhead; + - handles 'goto' too; + - handles PERL_DPROF_TICKS (on OS/2, VMS may be easily modified too) + +Jun 14, 97 andreas koenig adds the compatibility notes to the README +and lets the Makefile.PL die on $] < 5.004. + +Jun 06, 97 andreas koenig applies a patch by gurusamy sarathy because +Dean is not available for comments at that time. The patch is available +from CPAN in the authors/id/GSAR directory for inspection. + +Sep 30, 96 dmr + DProf.xs + - added Ilya's patches to fix "&bar as &bar(@_)" bug. This also fixes + the coredumps people have seen when using this with 5.003+. + DProf.pm + - updated manpage + t/bug.t + - moved to test5 + Makefile.PL + - remove special case for bug.t + +Jun 26, 96 dmr + dprofpp.PL + - smarter r.e. to find VERSION in Makefile (for MM5.27). + DProf.pm + - updated manpage + DProf.xs + - keep pid of profiled process, if process forks then only the + parent is profiled. Added test4 for this. + +Mar 2, 96 dmr + README + - updated + dprofpp + - updated manpage, point to DProf for raw profile description. + DProf.pm + - update manpage, update raw profile description with XS_VERSION. + - update manpage for AUTOLOAD changes. + DProf.xs + - smart handling of &AUTOLOAD--looks in $AUTOLOAD for the sub name. + this fixes one problem with corrupt profiles. + +Feb 5, 96 dmr + dprofpp + - updated manpage + - added -E/-I for exclusive/inclusive times + - added DPROFPP_OPTS -- lazily + - added -p/-Q for profile-then-analyze + - added version check + dprofpp.PL + - pull dprofpp's version id from the makefile + DProf.pm + - added version to bootstrap + - updated doc + - updated doc, DProf and -w are now friendly to each other + DProf.xs + - using savepv + - added Tim's patch to check for DBsub, avoids -MDevel::DProf coredump + - turn off warnings during newXS("DB::sub") + tests + - added Tim's patch to ignore Loader::import in results + - added Tim's patch to aid readability of test?.v output + + +-- from those days when I kept a unique changelog for each module -- + +# Devel::DProf - a Perl code profiler +# 31oct95 +# +# changes/bugs fixed since 5apr95 version -dmr: +# -added VMS patches from CharlesB. +# -now open ./tmon.out in BOOT. +# changes/bugs fixed since 2apr95 version -dmr: +# -now mallocing an extra byte for the \0 :) +# changes/bugs fixed since 01mar95 version -dmr: +# -stringified code ref is used for name of anonymous sub. +# -include stash name with stringified code ref. +# -use perl.c's DBsingle and DBsub. +# -now using croak() and warn(). +# -print "timer is on" before turning timer on. +# -use safefree() instead of free(). +# -rely on PM to provide full path name to tmon.out. +# -print errno if unable to write tmon.out. +# changes/bugs fixed since 03feb95 version -dmr: +# -comments +# changes/bugs fixed since 31dec94 version -dmr: +# -added patches from AndyD. +# + +# Devel::DProf - a Perl code profiler +# 31oct95 +# +# changes/bugs fixed since 05apr95 version -dmr: +# - VMS-related prob; now let tmon.out name be handled in XS. +# changes/bugs fixed since 01mar95 version -dmr: +# - record $pwd and build pathname for tmon.out +# changes/bugs fixed since 03feb95 version -dmr: +# - fixed some doc bugs +# - added require 5.000 +# - added -w note to bugs section of pod +# changes/bugs fixed since 31dec94 version -dmr: +# - podified +# + + +# dprofpp - display perl profile data +# 31oct95 +# +# changes/bugs fixed since 7oct95 version -dmr: +# - PL'd +# changes/bugs fixed since 5apr95 version -dmr: +# - touch up handling of exit timestamps. +# - suggests -F when exit timestamps are missing. +# - added compressed execution tree patches from AchimB, put under -t. +# now -z is the default action; user+system time. +# - doc changes. +# changes/bugs fixed since 10feb95 version -dmr: +# - summary info is printed by default, opt_c is gone. +# - fixed some doc bugs +# - changed name to dprofpp +# changes/bugs fixed since 03feb95 version -dmr: +# - fixed division by zero. +# - replace many local()s with my(). +# - now prints user+system times by default +# now -u prints user time, -U prints unsorted. +# - fixed documentation +# - fixed output, to clarify that times are given in seconds. +# - can now fake exit timestamps if the profile is garbled. +# changes/bugs fixed since 17jun94 version -dmr: +# - podified. +# - correct old documentation flaws. +# - added AndyD's patches. +# + diff --git a/contrib/perl5/ext/Devel/DProf/DProf.pm b/contrib/perl5/ext/Devel/DProf/DProf.pm new file mode 100644 index 000000000000..38082fce5125 --- /dev/null +++ b/contrib/perl5/ext/Devel/DProf/DProf.pm @@ -0,0 +1,196 @@ +require 5.005_64; + +=head1 NAME + +Devel::DProf - a Perl code profiler + +=head1 SYNOPSIS + + perl5 -d:DProf test.pl + +=head1 DESCRIPTION + +The Devel::DProf package is a Perl code profiler. This will collect +information on the execution time of a Perl script and of the subs in that +script. This information can be used to determine which subroutines are +using the most time and which subroutines are being called most often. This +information can also be used to create an execution graph of the script, +showing subroutine relationships. + +To profile a Perl script run the perl interpreter with the B<-d> debugging +switch. The profiler uses the debugging hooks. So to profile script +F the following command should be used: + + perl5 -d:DProf test.pl + +When the script terminates (or when the output buffer is filled) the +profiler will dump the profile information to a file called +F. A tool like I can be used to interpret the +information which is in that profile. The following command will +print the top 15 subroutines which used the most time: + + dprofpp + +To print an execution graph of the subroutines in the script use the +following command: + + dprofpp -T + +Consult L for other options. + +=head1 PROFILE FORMAT + +The old profile is a text file which looks like this: + + #fOrTyTwO + $hz=100; + $XS_VERSION='DProf 19970606'; + # All values are given in HZ + $rrun_utime=2; $rrun_stime=0; $rrun_rtime=7 + PART2 + + 26 28 566822884 DynaLoader::import + - 26 28 566822884 DynaLoader::import + + 27 28 566822885 main::bar + - 27 28 566822886 main::bar + + 27 28 566822886 main::baz + + 27 28 566822887 main::bar + - 27 28 566822888 main::bar + [....] + +The first line is the magic number. The second line is the hertz value, or +clock ticks, of the machine where the profile was collected. The third line +is the name and version identifier of the tool which created the profile. +The fourth line is a comment. The fifth line contains three variables +holding the user time, system time, and realtime of the process while it was +being profiled. The sixth line indicates the beginning of the sub +entry/exit profile section. + +The columns in B are: + + sub entry(+)/exit(-) mark + app's user time at sub entry/exit mark, in ticks + app's system time at sub entry/exit mark, in ticks + app's realtime at sub entry/exit mark, in ticks + fully-qualified sub name, when possible + +With newer perls another format is used, which may look like this: + + #fOrTyTwO + $hz=10000; + $XS_VERSION='DProf 19971213'; + # All values are given in HZ + $over_utime=5917; $over_stime=0; $over_rtime=5917; + $over_tests=10000; + $rrun_utime=1284; $rrun_stime=0; $rrun_rtime=1284; + $total_marks=6; + + PART2 + @ 406 0 406 + & 2 main bar + + 2 + @ 456 0 456 + - 2 + @ 1 0 1 + & 3 main baz + + 3 + @ 141 0 141 + + 2 + @ 141 0 141 + - 2 + @ 1 0 1 + & 4 main foo + + 4 + @ 142 0 142 + + & Devel::DProf::write + @ 5 0 5 + - & Devel::DProf::write + +(with high value of $ENV{PERL_DPROF_TICKS}). + +New C<$over_*> values show the measured overhead of making $over_tests +calls to the profiler These values are used by the profiler to +subtract the overhead from the runtimes. + +The lines starting with C<@> mark time passed from the previous C<@> +line. The lines starting with C<&> introduce new subroutine I and +show the package and the subroutine name of this id. Lines starting +with C<+>, C<-> and C<*> mark entering and exit of subroutines by +Is, and C. + +The I C<+>- and C<->-lines are used to mark the overhead +related to writing to profiler-output file. + +=head1 AUTOLOAD + +When Devel::DProf finds a call to an C<&AUTOLOAD> subroutine it looks at the +C<$AUTOLOAD> variable to find the real name of the sub being called. See +L. + +=head1 ENVIRONMENT + +C sets size of output buffer in words. Defaults to 2**14. + +C sets number of ticks per second on some systems where +a replacement for times() is used. Defaults to the value of C macro. + +C sets the name of the output file. If not set, +defaults to tmon.out. + +=head1 BUGS + +Builtin functions cannot be measured by Devel::DProf. + +With a newer Perl DProf relies on the fact that the numeric slot of +$DB::sub contains an address of a subroutine. Excessive manipulation +of this variable may overwrite this slot, as in + + $DB::sub = 'current_sub'; + ... + $addr = $DB::sub + 0; + +will set this numeric slot to numeric value of the string +C, i.e., to C<0>. This will cause a segfault on the exit +from this subroutine. Note that the first assignment above does not +change the numeric slot (it will I it as invalid, but will not +write over it). + +Mail bug reports and feature requests to the perl5-porters mailing list at +Fperl5-porters@perl.orgE>. + +=head1 SEE ALSO + +L, L, times(2) + +=cut + +# This sub is needed for calibration. +package Devel::DProf; + +sub NONESUCH_noxs { + return $Devel::DProf::VERSION; +} + +package DB; + +# +# As of perl5.003_20, &DB::sub stub is not needed (some versions +# even had problems if stub was redefined with XS version). +# + +# disable DB single-stepping +BEGIN { $single = 0; } + +# This sub is needed during startup. +sub DB { +# print "nonXS DBDB\n"; +} + +use XSLoader (); + +# Underscore to allow older Perls to access older version from CPAN +$Devel::DProf::VERSION = '20000000.00_00'; # this version not authorized by + # Dean Roehrich. See "Changes" file. + +XSLoader::load 'Devel::DProf', $Devel::DProf::VERSION; + +1; diff --git a/contrib/perl5/ext/Devel/DProf/DProf.xs b/contrib/perl5/ext/Devel/DProf/DProf.xs new file mode 100644 index 000000000000..31e984f929b7 --- /dev/null +++ b/contrib/perl5/ext/Devel/DProf/DProf.xs @@ -0,0 +1,689 @@ +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +/* For older Perls */ +#ifndef dTHR +# define dTHR int dummy_thr +#endif /* dTHR */ + +/*#define DBG_SUB 1 */ +/*#define DBG_TIMER 1 */ + +#ifdef DBG_SUB +# define DBG_SUB_NOTIFY(A,B) warn(A, B) +#else +# define DBG_SUB_NOTIFY(A,B) /* nothing */ +#endif + +#ifdef DBG_TIMER +# define DBG_TIMER_NOTIFY(A) warn(A) +#else +# define DBG_TIMER_NOTIFY(A) /* nothing */ +#endif + +/* HZ == clock ticks per second */ +#ifdef VMS +# define HZ ((I32)CLK_TCK) +# define DPROF_HZ HZ +# include /* prototype for sys$gettim() */ +# define Times(ptr) (dprof_times(aTHX_ ptr)) +#else +# ifndef HZ +# ifdef CLK_TCK +# define HZ ((I32)CLK_TCK) +# else +# define HZ 60 +# endif +# endif +# ifdef OS2 /* times() has significant overhead */ +# define Times(ptr) (dprof_times(aTHX_ ptr)) +# define INCL_DOSPROFILE +# define INCL_DOSERRORS +# include +# define toLongLong(arg) (*(long long*)&(arg)) +# define DPROF_HZ g_dprof_ticks +# else +# define Times(ptr) (times(ptr)) +# define DPROF_HZ HZ +# endif +#endif + +XS(XS_Devel__DProf_END); /* used by prof_mark() */ + +/* Everything is built on times(2). See its manpage for a description + * of the timings. + */ + +union prof_any { + clock_t tms_utime; /* cpu time spent in user space */ + clock_t tms_stime; /* cpu time spent in system */ + clock_t realtime; /* elapsed real time, in ticks */ + char *name; + U32 id; + opcode ptype; +}; + +typedef union prof_any PROFANY; + +typedef struct { + U32 dprof_ticks; + char* out_file_name; /* output file (defaults to tmon.out) */ + PerlIO* fp; /* pointer to tmon.out file */ + long TIMES_LOCATION; /* Where in the file to store the time totals */ + int SAVE_STACK; /* How much data to buffer until end of run */ + int prof_pid; /* pid of profiled process */ + struct tms prof_start; + struct tms prof_end; + clock_t rprof_start; /* elapsed real time ticks */ + clock_t rprof_end; + clock_t wprof_u; + clock_t wprof_s; + clock_t wprof_r; + clock_t otms_utime; + clock_t otms_stime; + clock_t orealtime; + PROFANY* profstack; + int profstack_max; + int profstack_ix; + HV* cv_hash; + U32 total; + U32 lastid; + U32 default_perldb; + U32 depth; +#ifdef OS2 + ULONG frequ; + long long start_cnt; +#endif +#ifdef PERL_IMPLICIT_CONTEXT +# define register + pTHX; +# undef register +#endif +} prof_state_t; + +prof_state_t g_prof_state; + +#define g_dprof_ticks g_prof_state.dprof_ticks +#define g_out_file_name g_prof_state.out_file_name +#define g_fp g_prof_state.fp +#define g_TIMES_LOCATION g_prof_state.TIMES_LOCATION +#define g_SAVE_STACK g_prof_state.SAVE_STACK +#define g_prof_pid g_prof_state.prof_pid +#define g_prof_start g_prof_state.prof_start +#define g_prof_end g_prof_state.prof_end +#define g_rprof_start g_prof_state.rprof_start +#define g_rprof_end g_prof_state.rprof_end +#define g_wprof_u g_prof_state.wprof_u +#define g_wprof_s g_prof_state.wprof_s +#define g_wprof_r g_prof_state.wprof_r +#define g_otms_utime g_prof_state.otms_utime +#define g_otms_stime g_prof_state.otms_stime +#define g_orealtime g_prof_state.orealtime +#define g_profstack g_prof_state.profstack +#define g_profstack_max g_prof_state.profstack_max +#define g_profstack_ix g_prof_state.profstack_ix +#define g_cv_hash g_prof_state.cv_hash +#define g_total g_prof_state.total +#define g_lastid g_prof_state.lastid +#define g_default_perldb g_prof_state.default_perldb +#define g_depth g_prof_state.depth +#ifdef PERL_IMPLICIT_CONTEXT +# define g_THX g_prof_state.aTHX +#endif +#ifdef OS2 +# define g_frequ g_prof_state.frequ +# define g_start_cnt g_prof_state.start_cnt +#endif + +clock_t +dprof_times(pTHX_ struct tms *t) +{ +#ifdef OS2 + ULONG rc; + QWORD cnt; + STRLEN n_a; + + if (!g_frequ) { + if (CheckOSError(DosTmrQueryFreq(&g_frequ))) + croak("DosTmrQueryFreq: %s", SvPV(perl_get_sv("!",TRUE),n_a)); + else + g_frequ = g_frequ/DPROF_HZ; /* count per tick */ + if (CheckOSError(DosTmrQueryTime(&cnt))) + croak("DosTmrQueryTime: %s", + SvPV(perl_get_sv("!",TRUE), n_a)); + g_start_cnt = toLongLong(cnt); + } + + if (CheckOSError(DosTmrQueryTime(&cnt))) + croak("DosTmrQueryTime: %s", SvPV(perl_get_sv("!",TRUE), n_a)); + t->tms_stime = 0; + return (t->tms_utime = (toLongLong(cnt) - g_start_cnt)/g_frequ); +#else /* !OS2 */ +# ifdef VMS + clock_t retval; + /* Get wall time and convert to 10 ms intervals to + * produce the return value dprof expects */ +# if defined(__DECC) && defined (__ALPHA) +# include + uint64 vmstime; + _ckvmssts(sys$gettim(&vmstime)); + vmstime /= 100000; + retval = vmstime & 0x7fffffff; +# else + /* (Older hw or ccs don't have an atomic 64-bit type, so we + * juggle 32-bit ints (and a float) to produce a time_t result + * with minimal loss of information.) */ + long int vmstime[2],remainder,divisor = 100000; + _ckvmssts(sys$gettim((unsigned long int *)vmstime)); + vmstime[1] &= 0x7fff; /* prevent overflow in EDIV */ + _ckvmssts(lib$ediv(&divisor,vmstime,(long int *)&retval,&remainder)); +# endif + /* Fill in the struct tms using the CRTL routine . . .*/ + times((tbuffer_t *)t); + return (clock_t) retval; +# else /* !VMS && !OS2 */ + return times(t); +# endif +#endif +} + +static void +prof_dumpa(pTHX_ opcode ptype, U32 id) +{ + if (ptype == OP_LEAVESUB) { + PerlIO_printf(g_fp,"- %"UVxf"\n", (UV)id); + } + else if(ptype == OP_ENTERSUB) { + PerlIO_printf(g_fp,"+ %"UVxf"\n", (UV)id); + } + else if(ptype == OP_GOTO) { + PerlIO_printf(g_fp,"* %"UVxf"\n", (UV)id); + } + else if(ptype == OP_DIE) { + PerlIO_printf(g_fp,"/ %"UVxf"\n", (UV)id); + } + else { + PerlIO_printf(g_fp,"Profiler unknown prof code %d\n", ptype); + } +} + +static void +prof_dumps(pTHX_ U32 id, char *pname, char *gname) +{ + PerlIO_printf(g_fp,"& %"UVxf" %s %s\n", (UV)id, pname, gname); +} + +static void +prof_dumpt(pTHX_ long tms_utime, long tms_stime, long realtime) +{ + PerlIO_printf(g_fp,"@ %ld %ld %ld\n", tms_utime, tms_stime, realtime); +} + +static void +prof_dump_until(pTHX_ long ix) +{ + long base = 0; + struct tms t1, t2; + clock_t realtime1, realtime2; + + realtime1 = Times(&t1); + + while (base < ix) { + opcode ptype = g_profstack[base++].ptype; + if (ptype == OP_TIME) { + long tms_utime = g_profstack[base++].tms_utime; + long tms_stime = g_profstack[base++].tms_stime; + long realtime = g_profstack[base++].realtime; + + prof_dumpt(aTHX_ tms_utime, tms_stime, realtime); + } + else if (ptype == OP_GV) { + U32 id = g_profstack[base++].id; + char *pname = g_profstack[base++].name; + char *gname = g_profstack[base++].name; + + prof_dumps(aTHX_ id, pname, gname); + } + else { + U32 id = g_profstack[base++].id; + prof_dumpa(aTHX_ ptype, id); + } + } + PerlIO_flush(g_fp); + realtime2 = Times(&t2); + if (realtime2 != realtime1 || t1.tms_utime != t2.tms_utime + || t1.tms_stime != t2.tms_stime) { + g_wprof_r += realtime2 - realtime1; + g_wprof_u += t2.tms_utime - t1.tms_utime; + g_wprof_s += t2.tms_stime - t1.tms_stime; + + PerlIO_printf(g_fp,"+ & Devel::DProf::write\n"); + PerlIO_printf(g_fp,"@ %"IVdf" %"IVdf" %"IVdf"\n", + /* The (IV) casts are one possibility: + * the Painfully Correct Way would be to + * have Clock_t_f. */ + (IV)(t2.tms_utime - t1.tms_utime), + (IV)(t2.tms_stime - t1.tms_stime), + (IV)(realtime2 - realtime1)); + PerlIO_printf(g_fp,"- & Devel::DProf::write\n"); + g_otms_utime = t2.tms_utime; + g_otms_stime = t2.tms_stime; + g_orealtime = realtime2; + PerlIO_flush(g_fp); + } +} + +static void +prof_mark(pTHX_ opcode ptype) +{ + struct tms t; + clock_t realtime, rdelta, udelta, sdelta; + char *name, *pv; + char *hvname; + STRLEN len; + SV *sv; + U32 id; + SV *Sub = GvSV(PL_DBsub); /* name of current sub */ + + if (g_SAVE_STACK) { + if (g_profstack_ix + 5 > g_profstack_max) { + g_profstack_max = g_profstack_max * 3 / 2; + Renew(g_profstack, g_profstack_max, PROFANY); + } + } + + realtime = Times(&t); + rdelta = realtime - g_orealtime; + udelta = t.tms_utime - g_otms_utime; + sdelta = t.tms_stime - g_otms_stime; + if (rdelta || udelta || sdelta) { + if (g_SAVE_STACK) { + g_profstack[g_profstack_ix++].ptype = OP_TIME; + g_profstack[g_profstack_ix++].tms_utime = udelta; + g_profstack[g_profstack_ix++].tms_stime = sdelta; + g_profstack[g_profstack_ix++].realtime = rdelta; + } + else { /* Write it to disk now so's not to eat up core */ + if (g_prof_pid == (int)getpid()) { + prof_dumpt(aTHX_ udelta, sdelta, rdelta); + PerlIO_flush(g_fp); + } + } + g_orealtime = realtime; + g_otms_stime = t.tms_stime; + g_otms_utime = t.tms_utime; + } + + { + SV **svp; + char *gname, *pname; + CV *cv; + + cv = INT2PTR(CV*,SvIVX(Sub)); + svp = hv_fetch(g_cv_hash, (char*)&cv, sizeof(CV*), TRUE); + if (!SvOK(*svp)) { + GV *gv = CvGV(cv); + + sv_setiv(*svp, id = ++g_lastid); + pname = ((GvSTASH(gv) && HvNAME(GvSTASH(gv))) + ? HvNAME(GvSTASH(gv)) + : "(null)"); + gname = GvNAME(gv); + if (CvXSUB(cv) == XS_Devel__DProf_END) + return; + if (g_SAVE_STACK) { /* Store it for later recording -JH */ + g_profstack[g_profstack_ix++].ptype = OP_GV; + g_profstack[g_profstack_ix++].id = id; + g_profstack[g_profstack_ix++].name = pname; + g_profstack[g_profstack_ix++].name = gname; + } + else { /* Write it to disk now so's not to eat up core */ + /* Only record the parent's info */ + if (g_prof_pid == (int)getpid()) { + prof_dumps(aTHX_ id, pname, gname); + PerlIO_flush(g_fp); + } + else + PL_perldb = 0; /* Do not debug the kid. */ + } + } + else { + id = SvIV(*svp); + } + } + + g_total++; + if (g_SAVE_STACK) { /* Store it for later recording -JH */ + g_profstack[g_profstack_ix++].ptype = ptype; + g_profstack[g_profstack_ix++].id = id; + + /* Only record the parent's info */ + if (g_SAVE_STACK < g_profstack_ix) { + if (g_prof_pid == (int)getpid()) + prof_dump_until(aTHX_ g_profstack_ix); + else + PL_perldb = 0; /* Do not debug the kid. */ + g_profstack_ix = 0; + } + } + else { /* Write it to disk now so's not to eat up core */ + + /* Only record the parent's info */ + if (g_prof_pid == (int)getpid()) { + prof_dumpa(aTHX_ ptype, id); + PerlIO_flush(g_fp); + } + else + PL_perldb = 0; /* Do not debug the kid. */ + } +} + +#ifdef PL_NEEDED +# define defstash PL_defstash +#endif + +/* Counts overhead of prof_mark and extra XS call. */ +static void +test_time(pTHX_ clock_t *r, clock_t *u, clock_t *s) +{ + dTHR; + CV *cv = perl_get_cv("Devel::DProf::NONESUCH_noxs", FALSE); + int i, j, k = 0; + HV *oldstash = PL_curstash; + struct tms t1, t2; + clock_t realtime1, realtime2; + U32 ototal = g_total; + U32 ostack = g_SAVE_STACK; + U32 operldb = PL_perldb; + + g_SAVE_STACK = 1000000; + realtime1 = Times(&t1); + + while (k < 2) { + i = 0; + /* Disable debugging of perl_call_sv on second pass: */ + PL_curstash = (k == 0 ? PL_defstash : PL_debstash); + PL_perldb = g_default_perldb; + while (++i <= 100) { + j = 0; + g_profstack_ix = 0; /* Do not let the stack grow */ + while (++j <= 100) { +/* prof_mark(aTHX_ OP_ENTERSUB); */ + + PUSHMARK(PL_stack_sp); + perl_call_sv((SV*)cv, G_SCALAR); + PL_stack_sp--; +/* prof_mark(aTHX_ OP_LEAVESUB); */ + } + } + PL_curstash = oldstash; + if (k == 0) { /* Put time with debugging */ + realtime2 = Times(&t2); + *r = realtime2 - realtime1; + *u = t2.tms_utime - t1.tms_utime; + *s = t2.tms_stime - t1.tms_stime; + } + else { /* Subtract time without debug */ + realtime1 = Times(&t1); + *r -= realtime1 - realtime2; + *u -= t1.tms_utime - t2.tms_utime; + *s -= t1.tms_stime - t2.tms_stime; + } + k++; + } + g_total = ototal; + g_SAVE_STACK = ostack; + PL_perldb = operldb; +} + +static void +prof_recordheader(pTHX) +{ + clock_t r, u, s; + + /* g_fp is opened in the BOOT section */ + PerlIO_printf(g_fp, "#fOrTyTwO\n"); + PerlIO_printf(g_fp, "$hz=%"IVdf";\n", (IV)DPROF_HZ); + PerlIO_printf(g_fp, "$XS_VERSION='DProf %s';\n", XS_VERSION); + PerlIO_printf(g_fp, "# All values are given in HZ\n"); + test_time(aTHX_ &r, &u, &s); + PerlIO_printf(g_fp, + "$over_utime=%"IVdf"; $over_stime=%"IVdf"; $over_rtime=%"IVdf";\n", + /* The (IV) casts are one possibility: + * the Painfully Correct Way would be to + * have Clock_t_f. */ + (IV)u, (IV)s, (IV)r); + PerlIO_printf(g_fp, "$over_tests=10000;\n"); + + g_TIMES_LOCATION = PerlIO_tell(g_fp); + + /* Pad with whitespace. */ + /* This should be enough even for very large numbers. */ + PerlIO_printf(g_fp, "%*s\n", 240 , ""); + + PerlIO_printf(g_fp, "\n"); + PerlIO_printf(g_fp, "PART2\n"); + + PerlIO_flush(g_fp); +} + +static void +prof_record(pTHX) +{ + /* g_fp is opened in the BOOT section */ + + /* Now that we know the runtimes, fill them in at the recorded + location -JH */ + + clock_t r, u, s; + + if (g_SAVE_STACK) { + prof_dump_until(aTHX_ g_profstack_ix); + } + PerlIO_seek(g_fp, g_TIMES_LOCATION, SEEK_SET); + /* Write into reserved 240 bytes: */ + PerlIO_printf(g_fp, + "$rrun_utime=%"IVdf"; $rrun_stime=%"IVdf"; $rrun_rtime=%"IVdf";", + /* The (IV) casts are one possibility: + * the Painfully Correct Way would be to + * have Clock_t_f. */ + (IV)(g_prof_end.tms_utime-g_prof_start.tms_utime-g_wprof_u), + (IV)(g_prof_end.tms_stime-g_prof_start.tms_stime-g_wprof_s), + (IV)(g_rprof_end-g_rprof_start-g_wprof_r)); + PerlIO_printf(g_fp, "\n$total_marks=%"IVdf, (IV)g_total); + + PerlIO_close(g_fp); +} + +#define NONESUCH() + +static void +check_depth(pTHX_ void *foo) +{ + U32 need_depth = (U32)foo; + if (need_depth != g_depth) { + if (need_depth > g_depth) { + warn("garbled call depth when profiling"); + } + else { + I32 marks = g_depth - need_depth; + +/* warn("Check_depth: got %d, expected %d\n", g_depth, need_depth); */ + while (marks--) { + prof_mark(aTHX_ OP_DIE); + } + g_depth = need_depth; + } + } +} + +#define for_real +#ifdef for_real + +XS(XS_DB_sub) +{ + dXSARGS; + dORIGMARK; + SV *Sub = GvSV(PL_DBsub); /* name of current sub */ + +#ifdef PERL_IMPLICIT_CONTEXT + /* profile only the interpreter that loaded us */ + if (g_THX != aTHX) { + PUSHMARK(ORIGMARK); + perl_call_sv(INT2PTR(SV*,SvIV(Sub)), GIMME | G_NODEBUG); + } + else +#endif + { + HV *oldstash = PL_curstash; + + DBG_SUB_NOTIFY("XS DBsub(%s)\n", SvPV_nolen(Sub)); + + SAVEDESTRUCTOR_X(check_depth, (void*)g_depth); + g_depth++; + + prof_mark(aTHX_ OP_ENTERSUB); + PUSHMARK(ORIGMARK); + perl_call_sv(INT2PTR(SV*,SvIV(Sub)), GIMME | G_NODEBUG); + prof_mark(aTHX_ OP_LEAVESUB); + g_depth--; + } + return; +} + +XS(XS_DB_goto) +{ +#ifdef PERL_IMPLICIT_CONTEXT + if (g_THX == aTHX) +#endif + { + prof_mark(aTHX_ OP_GOTO); + return; + } +} + +#endif /* for_real */ + +#ifdef testing + + MODULE = Devel::DProf PACKAGE = DB + + void + sub(...) + PPCODE: + { + dORIGMARK; + HV *oldstash = PL_curstash; + SV *Sub = GvSV(PL_DBsub); /* name of current sub */ + /* SP -= items; added by xsubpp */ + DBG_SUB_NOTIFY("XS DBsub(%s)\n", SvPV_nolen(Sub)); + + sv_setiv(PL_DBsingle, 0); /* disable DB single-stepping */ + + prof_mark(aTHX_ OP_ENTERSUB); + PUSHMARK(ORIGMARK); + + PL_curstash = PL_debstash; /* To disable debugging of perl_call_sv */ + perl_call_sv(Sub, GIMME); + PL_curstash = oldstash; + + prof_mark(aTHX_ OP_LEAVESUB); + SPAGAIN; + /* PUTBACK; added by xsubpp */ + } + +#endif /* testing */ + +MODULE = Devel::DProf PACKAGE = Devel::DProf + +void +END() +PPCODE: + { + if (PL_DBsub) { + /* maybe the process forked--we want only + * the parent's profile. + */ + if ( +#ifdef PERL_IMPLICIT_CONTEXT + g_THX == aTHX && +#endif + g_prof_pid == (int)getpid()) + { + g_rprof_end = Times(&g_prof_end); + DBG_TIMER_NOTIFY("Profiler timer is off.\n"); + prof_record(aTHX); + } + } + } + +void +NONESUCH() + +BOOT: + { + g_TIMES_LOCATION = 42; + g_SAVE_STACK = 1<<14; + g_profstack_max = 128; +#ifdef PERL_IMPLICIT_CONTEXT + g_THX = aTHX; +#endif + + /* Before we go anywhere make sure we were invoked + * properly, else we'll dump core. + */ + if (!PL_DBsub) + croak("DProf: run perl with -d to use DProf.\n"); + + /* When we hook up the XS DB::sub we'll be redefining + * the DB::sub from the PM file. Turn off warnings + * while we do this. + */ + { + I32 warn_tmp = PL_dowarn; + PL_dowarn = 0; + newXS("DB::sub", XS_DB_sub, file); + newXS("DB::goto", XS_DB_goto, file); + PL_dowarn = warn_tmp; + } + + sv_setiv(PL_DBsingle, 0); /* disable DB single-stepping */ + + { + char *buffer = getenv("PERL_DPROF_BUFFER"); + + if (buffer) { + g_SAVE_STACK = atoi(buffer); + } + + buffer = getenv("PERL_DPROF_TICKS"); + + if (buffer) { + g_dprof_ticks = atoi(buffer); /* Used under OS/2 only */ + } + else { + g_dprof_ticks = HZ; + } + + buffer = getenv("PERL_DPROF_OUT_FILE_NAME"); + g_out_file_name = savepv(buffer ? buffer : "tmon.out"); + } + + if ((g_fp = PerlIO_open(g_out_file_name, "w")) == NULL) + croak("DProf: unable to write '%s', errno = %d\n", + g_out_file_name, errno); + + g_default_perldb = PERLDBf_NONAME | PERLDBf_SUB | PERLDBf_GOTO; + g_cv_hash = newHV(); + g_prof_pid = (int)getpid(); + + New(0, g_profstack, g_profstack_max, PROFANY); + prof_recordheader(aTHX); + DBG_TIMER_NOTIFY("Profiler timer is on.\n"); + g_orealtime = g_rprof_start = Times(&g_prof_start); + g_otms_utime = g_prof_start.tms_utime; + g_otms_stime = g_prof_start.tms_stime; + PL_perldb = g_default_perldb; + } diff --git a/contrib/perl5/ext/Devel/DProf/Makefile.PL b/contrib/perl5/ext/Devel/DProf/Makefile.PL new file mode 100644 index 000000000000..667cc529137f --- /dev/null +++ b/contrib/perl5/ext/Devel/DProf/Makefile.PL @@ -0,0 +1,17 @@ +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => 'Devel::DProf', + DISTNAME => 'DProf', + VERSION_FROM => 'DProf.pm', + clean => { 'FILES' => 'tmon.out t/tmon.out t/err'}, + XSPROTOARG => '-noprototypes', + DEFINE => '-DPERLDBf_NONAME=0x40 -DPERLDBf_GOTO=0x80 ' + .'-DG_NODEBUG=32 -DPL_NEEDED', + dist => { + COMPRESS => 'gzip -9f', + SUFFIX => 'gz', + DIST_DEFAULT => 'all tardist', + }, + MAN3PODS => {}, +); diff --git a/contrib/perl5/ext/Devel/DProf/Todo b/contrib/perl5/ext/Devel/DProf/Todo new file mode 100644 index 000000000000..0e003471d63c --- /dev/null +++ b/contrib/perl5/ext/Devel/DProf/Todo @@ -0,0 +1,13 @@ +- work on test suite. +- localize the depth to guard against non-local exits. +Current overhead (with PERLDBf_NONAME) wrt non-debugging run (estimates): + 8% extra call frame on DB::sub + 7% output of subroutine data + 70% output of timing data (on OS/2, 35% with custom dprof_times()) +(Additional 17% are spent to write the output, but they are counted + and subtracted.) + +With compensation for DProf overhead all but some odd 12% are subtracted ?! + +- Calculate overhead/count for XS calls and Perl calls separately. +- goto &XSUB in pp_ctl.c; diff --git a/contrib/perl5/ext/Devel/Peek/Changes b/contrib/perl5/ext/Devel/Peek/Changes new file mode 100644 index 000000000000..e143f878cf3d --- /dev/null +++ b/contrib/perl5/ext/Devel/Peek/Changes @@ -0,0 +1,64 @@ +0.3: Some functions return SV * now. +0.4: Hashes dumped recursively. + Additional fields for CV added. +0.5: Prototypes for functions supported. + Strings are consostently in quotes now. + Name changed to Devel::Peek (former ExtUtils::Peek). +0.7: + New function mstat added. + Docs added (thanks to Dean Roehrich). + +0.8: + Exports Dump and mstat. + Docs list more details. + Arrays print addresses of SV. + CV: STASH renamed to COMP_STASH. The package of GV is printed now. + Updated for newer overloading implementation (but will not report + packages with overloading). +0.81: + Implements and exports DeadCode(). + Buglet in the definition of mstat for malloc-less perl corrected. +0.82: + New style PADless CV allowed. +0.83: + DumpArray added. + Compatible with PerlIO. + When calculating junk inside subs, divide by refcount. +0.84: + Indented output. +0.85: + By Gisle Aas: format SvPVX, print magic (but not unrefcounted mg_obj); + A lot of new fields stolen from sv_dump(); +0.86: + By Gisle Aas: + - Updated the documentation. + - Move string printer to it's own function: fprintpv() + - Use it to print PVs, HV keys, MG_PTR + - Don't print IV for hashes as KEY is the same field + - Tag GvSTASH as "GvSTASH" in order to not confuse it with + the other STASH field, e.g. Dump(bless \*foo, "bar") +0.87: + Extra indentation of SvRV. + AMAGIC removed. + Head of OOK data printed too. +0.88: + PADLIST and OUTSIDE of CVs itemized. + Prints the value of the hash of HV keys. + Changes by Gisle: do not print both if AvARRAY == AvALLOC; + print hash fill statistics. +0.89: + Changes by Gisle: optree dump. +0.90: + DumpWithOP, DumpProg exported. + Better indent for AV, HV elts. + Address of SV printed. + Corrected Zero code which was causing segfaults. +0.91: + Compiles, runs test under 5.005beta2. + Update DEBUGGING_MSTATS-less MSTATS. +0.92: + Should compile without MYMALLOC too. +0.94: + Had problems with HEf_SVKEY magic. +0.95: + Added "hash quality" output to estimate Perl's hash functions. diff --git a/contrib/perl5/ext/Devel/Peek/Makefile.PL b/contrib/perl5/ext/Devel/Peek/Makefile.PL new file mode 100644 index 000000000000..3c6dbf545d1c --- /dev/null +++ b/contrib/perl5/ext/Devel/Peek/Makefile.PL @@ -0,0 +1,11 @@ +use ExtUtils::MakeMaker; +WriteMakefile( + NAME => "Devel::Peek", + VERSION_FROM => 'Peek.pm', + 'dist' => { + COMPRESS => 'gzip -9f', + SUFFIX => 'gz', + DIST_DEFAULT => 'all tardist', + }, + MAN3PODS => {}, +); diff --git a/contrib/perl5/ext/Devel/Peek/Peek.pm b/contrib/perl5/ext/Devel/Peek/Peek.pm new file mode 100644 index 000000000000..080251bb5e87 --- /dev/null +++ b/contrib/perl5/ext/Devel/Peek/Peek.pm @@ -0,0 +1,432 @@ +# Devel::Peek - A data debugging tool for the XS programmer +# The documentation is after the __END__ + +package Devel::Peek; + +# Underscore to allow older Perls to access older version from CPAN +$VERSION = '1.00_01'; + +require Exporter; +use XSLoader (); + +@ISA = qw(Exporter); +@EXPORT = qw(Dump mstat DeadCode DumpArray DumpWithOP DumpProg); +@EXPORT_OK = qw(SvREFCNT SvREFCNT_inc SvREFCNT_dec CvGV); +%EXPORT_TAGS = ('ALL' => [@EXPORT, @EXPORT_OK]); + +XSLoader::load 'Devel::Peek'; + +sub DumpWithOP ($;$) { + local($Devel::Peek::dump_ops)=1; + my $depth = @_ > 1 ? $_[1] : 4 ; + Dump($_[0],$depth); +} + +1; +__END__ + +=head1 NAME + +Devel::Peek - A data debugging tool for the XS programmer + +=head1 SYNOPSIS + + use Devel::Peek; + Dump( $a ); + Dump( $a, 5 ); + DumpArray( 5, $a, $b, ... ); + mstat "Point 5"; + +=head1 DESCRIPTION + +Devel::Peek contains functions which allows raw Perl datatypes to be +manipulated from a Perl script. This is used by those who do XS programming +to check that the data they are sending from C to Perl looks as they think +it should look. The trick, then, is to know what the raw datatype is +supposed to look like when it gets to Perl. This document offers some tips +and hints to describe good and bad raw data. + +It is very possible that this document will fall far short of being useful +to the casual reader. The reader is expected to understand the material in +the first few sections of L. + +Devel::Peek supplies a C function which can dump a raw Perl +datatype, and C function to report on memory usage +(if perl is compiled with corresponding option). The function +DeadCode() provides statistics on the data "frozen" into inactive +C. Devel::Peek also supplies C, C, and +C which can query, increment, and decrement reference +counts on SVs. This document will take a passive, and safe, approach +to data debugging and for that it will describe only the C +function. For format of output of mstats() see +L>. + +Function C allows dumping of multiple values (useful when you +need to analize returns of functions). + +The global variable $Devel::Peek::pv_limit can be set to limit the +number of character printed in various string values. Setting it to 0 +means no limit. + +=head1 EXAMPLES + +The following examples don't attempt to show everything as that would be a +monumental task, and, frankly, we don't want this manpage to be an internals +document for Perl. The examples do demonstrate some basics of the raw Perl +datatypes, and should suffice to get most determined people on their way. +There are no guidewires or safety nets, nor blazed trails, so be prepared to +travel alone from this point and on and, if at all possible, don't fall into +the quicksand (it's bad for business). + +Oh, one final bit of advice: take L with you. When you return we +expect to see it well-thumbed. + +=head2 A simple scalar string + +Let's begin by looking a simple scalar which is holding a string. + + use Devel::Peek; + $a = "hello"; + Dump $a; + +The output: + + SV = PVIV(0xbc288) + REFCNT = 1 + FLAGS = (POK,pPOK) + IV = 0 + PV = 0xb2048 "hello"\0 + CUR = 5 + LEN = 6 + +This says C<$a> is an SV, a scalar. The scalar is a PVIV, a string. +Its reference count is 1. It has the C flag set, meaning its +current PV field is valid. Because POK is set we look at the PV item +to see what is in the scalar. The \0 at the end indicate that this +PV is properly NUL-terminated. +If the FLAGS had been IOK we would look +at the IV item. CUR indicates the number of characters in the PV. +LEN indicates the number of bytes requested for the PV (one more than +CUR, in this case, because LEN includes an extra byte for the +end-of-string marker). + +=head2 A simple scalar number + +If the scalar contains a number the raw SV will be leaner. + + use Devel::Peek; + $a = 42; + Dump $a; + +The output: + + SV = IV(0xbc818) + REFCNT = 1 + FLAGS = (IOK,pIOK) + IV = 42 + +This says C<$a> is an SV, a scalar. The scalar is an IV, a number. Its +reference count is 1. It has the C flag set, meaning it is currently +being evaluated as a number. Because IOK is set we look at the IV item to +see what is in the scalar. + +=head2 A simple scalar with an extra reference + +If the scalar from the previous example had an extra reference: + + use Devel::Peek; + $a = 42; + $b = \$a; + Dump $a; + +The output: + + SV = IV(0xbe860) + REFCNT = 2 + FLAGS = (IOK,pIOK) + IV = 42 + +Notice that this example differs from the previous example only in its +reference count. Compare this to the next example, where we dump C<$b> +instead of C<$a>. + +=head2 A reference to a simple scalar + +This shows what a reference looks like when it references a simple scalar. + + use Devel::Peek; + $a = 42; + $b = \$a; + Dump $b; + +The output: + + SV = RV(0xf041c) + REFCNT = 1 + FLAGS = (ROK) + RV = 0xbab08 + SV = IV(0xbe860) + REFCNT = 2 + FLAGS = (IOK,pIOK) + IV = 42 + +Starting from the top, this says C<$b> is an SV. The scalar is an RV, a +reference. It has the C flag set, meaning it is a reference. Because +ROK is set we have an RV item rather than an IV or PV. Notice that Dump +follows the reference and shows us what C<$b> was referencing. We see the +same C<$a> that we found in the previous example. + +Note that the value of C coincides with the numbers we see when we +stringify $b. The addresses inside RV() and IV() are addresses of +C structure which holds the current state of an C. This +address may change during lifetime of an SV. + +=head2 A reference to an array + +This shows what a reference to an array looks like. + + use Devel::Peek; + $a = [42]; + Dump $a; + +The output: + + SV = RV(0xf041c) + REFCNT = 1 + FLAGS = (ROK) + RV = 0xb2850 + SV = PVAV(0xbd448) + REFCNT = 1 + FLAGS = () + IV = 0 + NV = 0 + ARRAY = 0xb2048 + ALLOC = 0xb2048 + FILL = 0 + MAX = 0 + ARYLEN = 0x0 + FLAGS = (REAL) + Elt No. 0 0xb5658 + SV = IV(0xbe860) + REFCNT = 1 + FLAGS = (IOK,pIOK) + IV = 42 + +This says C<$a> is an SV and that it is an RV. That RV points to +another SV which is a PVAV, an array. The array has one element, +element zero, which is another SV. The field C above indicates +the last element in the array, similar to C<$#$a>. + +If C<$a> pointed to an array of two elements then we would see the +following. + + use Devel::Peek 'Dump'; + $a = [42,24]; + Dump $a; + +The output: + + SV = RV(0xf041c) + REFCNT = 1 + FLAGS = (ROK) + RV = 0xb2850 + SV = PVAV(0xbd448) + REFCNT = 1 + FLAGS = () + IV = 0 + NV = 0 + ARRAY = 0xb2048 + ALLOC = 0xb2048 + FILL = 0 + MAX = 0 + ARYLEN = 0x0 + FLAGS = (REAL) + Elt No. 0 0xb5658 + SV = IV(0xbe860) + REFCNT = 1 + FLAGS = (IOK,pIOK) + IV = 42 + Elt No. 1 0xb5680 + SV = IV(0xbe818) + REFCNT = 1 + FLAGS = (IOK,pIOK) + IV = 24 + +Note that C will not report I the elements in the array, +only several first (depending on how deep it already went into the +report tree). + +=head2 A reference to a hash + +The following shows the raw form of a reference to a hash. + + use Devel::Peek; + $a = {hello=>42}; + Dump $a; + +The output: + + SV = RV(0xf041c) + REFCNT = 1 + FLAGS = (ROK) + RV = 0xb2850 + SV = PVHV(0xbd448) + REFCNT = 1 + FLAGS = () + NV = 0 + ARRAY = 0xbd748 + KEYS = 1 + FILL = 1 + MAX = 7 + RITER = -1 + EITER = 0x0 + Elt "hello" => 0xbaaf0 + SV = IV(0xbe860) + REFCNT = 1 + FLAGS = (IOK,pIOK) + IV = 42 + +This shows C<$a> is a reference pointing to an SV. That SV is a PVHV, a +hash. Fields RITER and EITER are used by C>. + +=head2 Dumping a large array or hash + +The C function, by default, dumps up to 4 elements from a +toplevel array or hash. This number can be increased by supplying a +second argument to the function. + + use Devel::Peek; + $a = [10,11,12,13,14]; + Dump $a; + +Notice that C prints only elements 10 through 13 in the above code. +The following code will print all of the elements. + + use Devel::Peek 'Dump'; + $a = [10,11,12,13,14]; + Dump $a, 5; + +=head2 A reference to an SV which holds a C pointer + +This is what you really need to know as an XS programmer, of course. When +an XSUB returns a pointer to a C structure that pointer is stored in an SV +and a reference to that SV is placed on the XSUB stack. So the output from +an XSUB which uses something like the T_PTROBJ map might look something like +this: + + SV = RV(0xf381c) + REFCNT = 1 + FLAGS = (ROK) + RV = 0xb8ad8 + SV = PVMG(0xbb3c8) + REFCNT = 1 + FLAGS = (OBJECT,IOK,pIOK) + IV = 729160 + NV = 0 + PV = 0 + STASH = 0xc1d10 "CookBookB::Opaque" + +This shows that we have an SV which is an RV. That RV points at another +SV. In this case that second SV is a PVMG, a blessed scalar. Because it is +blessed it has the C flag set. Note that an SV which holds a C +pointer also has the C flag set. The C is set to the package +name which this SV was blessed into. + +The output from an XSUB which uses something like the T_PTRREF map, which +doesn't bless the object, might look something like this: + + SV = RV(0xf381c) + REFCNT = 1 + FLAGS = (ROK) + RV = 0xb8ad8 + SV = PVMG(0xbb3c8) + REFCNT = 1 + FLAGS = (IOK,pIOK) + IV = 729160 + NV = 0 + PV = 0 + +=head2 A reference to a subroutine + +Looks like this: + + SV = RV(0x798ec) + REFCNT = 1 + FLAGS = (TEMP,ROK) + RV = 0x1d453c + SV = PVCV(0x1c768c) + REFCNT = 2 + FLAGS = () + IV = 0 + NV = 0 + COMP_STASH = 0x31068 "main" + START = 0xb20e0 + ROOT = 0xbece0 + XSUB = 0x0 + XSUBANY = 0 + GVGV::GV = 0x1d44e8 "MY" :: "top_targets" + FILE = "(eval 5)" + DEPTH = 0 + PADLIST = 0x1c9338 + +This shows that + +=over + +=item * + +the subroutine is not an XSUB (since C and C are +non-zero, and C is zero); + +=item * + +that it was compiled in the package C
      ; + +=item * + +under the name C; + +=item * + +inside a 5th eval in the program; + +=item * + +it is not currently executed (see C); + +=item * + +it has no prototype (C field is missing). + +=back + +=head1 EXPORTS + +C, C, C, C, C and +C by default. Additionally available C, +C and C. + +=head1 BUGS + +Readers have been known to skip important parts of L, causing much +frustration for all. + +=head1 AUTHOR + +Ilya Zakharevich ilya@math.ohio-state.edu + +Copyright (c) 1995-98 Ilya Zakharevich. All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +Author of this software makes no claim whatsoever about suitability, +reliability, edability, editability or usability of this product, and +should not be kept liable for any damage resulting from the use of +it. If you can use it, you are in luck, if not, I should not be kept +responsible. Keep a handy copy of your backup tape at hand. + +=head1 SEE ALSO + +L, and L, again. + +=cut diff --git a/contrib/perl5/ext/Devel/Peek/Peek.xs b/contrib/perl5/ext/Devel/Peek/Peek.xs new file mode 100644 index 000000000000..9837e9ceb216 --- /dev/null +++ b/contrib/perl5/ext/Devel/Peek/Peek.xs @@ -0,0 +1,218 @@ +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +SV * +DeadCode(pTHX) +{ +#ifdef PURIFY + return Nullsv; +#else + SV* sva; + SV* sv, *dbg; + SV* ret = newRV_noinc((SV*)newAV()); + register SV* svend; + int tm = 0, tref = 0, ts = 0, ta = 0, tas = 0; + + for (sva = PL_sv_arenaroot; sva; sva = (SV*)SvANY(sva)) { + svend = &sva[SvREFCNT(sva)]; + for (sv = sva + 1; sv < svend; ++sv) { + if (SvTYPE(sv) == SVt_PVCV) { + CV *cv = (CV*)sv; + AV* padlist = CvPADLIST(cv), *argav; + SV** svp; + SV** pad; + int i = 0, j, levelm, totm = 0, levelref, totref = 0; + int levels, tots = 0, levela, tota = 0, levelas, totas = 0; + int dumpit = 0; + + if (CvXSUB(sv)) { + continue; /* XSUB */ + } + if (!CvGV(sv)) { + continue; /* file-level scope. */ + } + if (!CvROOT(cv)) { + /* PerlIO_printf(Perl_debug_log, " no root?!\n"); */ + continue; /* autoloading stub. */ + } + do_gvgv_dump(0, Perl_debug_log, "GVGV::GV", CvGV(sv)); + if (CvDEPTH(cv)) { + PerlIO_printf(Perl_debug_log, " busy\n"); + continue; + } + svp = AvARRAY(padlist); + while (++i <= AvFILL(padlist)) { /* Depth. */ + SV **args; + + pad = AvARRAY((AV*)svp[i]); + argav = (AV*)pad[0]; + if (!argav || (SV*)argav == &PL_sv_undef) { + PerlIO_printf(Perl_debug_log, " closure-template\n"); + continue; + } + args = AvARRAY(argav); + levelm = levels = levelref = levelas = 0; + levela = sizeof(SV*) * (AvMAX(argav) + 1); + if (AvREAL(argav)) { + for (j = 0; j < AvFILL(argav); j++) { + if (SvROK(args[j])) { + PerlIO_printf(Perl_debug_log, " ref in args!\n"); + levelref++; + } + /* else if (SvPOK(args[j]) && SvPVX(args[j])) { */ + else if (SvTYPE(args[j]) >= SVt_PV && SvLEN(args[j])) { + levelas += SvLEN(args[j])/SvREFCNT(args[j]); + } + } + } + for (j = 1; j < AvFILL((AV*)svp[1]); j++) { /* Vars. */ + if (SvROK(pad[j])) { + levelref++; + do_sv_dump(0, Perl_debug_log, pad[j], 0, 4, 0, 0); + dumpit = 1; + } + /* else if (SvPOK(pad[j]) && SvPVX(pad[j])) { */ + else if (SvTYPE(pad[j]) >= SVt_PVAV) { + if (!SvPADMY(pad[j])) { + levelref++; + do_sv_dump(0, Perl_debug_log, pad[j], 0, 4, 0, 0); + dumpit = 1; + } + } + else if (SvTYPE(pad[j]) >= SVt_PV && SvLEN(pad[j])) { + int db_len = SvLEN(pad[j]); + SV *db_sv = pad[j]; + levels++; + levelm += SvLEN(pad[j])/SvREFCNT(pad[j]); + /* Dump(pad[j],4); */ + } + } + PerlIO_printf(Perl_debug_log, " level %i: refs: %i, strings: %i in %i,\targsarray: %i, argsstrings: %i\n", + i, levelref, levelm, levels, levela, levelas); + totm += levelm; + tota += levela; + totas += levelas; + tots += levels; + totref += levelref; + if (dumpit) + do_sv_dump(0, Perl_debug_log, (SV*)cv, 0, 2, 0, 0); + } + if (AvFILL(padlist) > 1) { + PerlIO_printf(Perl_debug_log, " total: refs: %i, strings: %i in %i,\targsarrays: %i, argsstrings: %i\n", + totref, totm, tots, tota, totas); + } + tref += totref; + tm += totm; + ts += tots; + ta += tota; + tas += totas; + } + } + } + PerlIO_printf(Perl_debug_log, "total: refs: %i, strings: %i in %i\targsarray: %i, argsstrings: %i\n", tref, tm, ts, ta, tas); + + return ret; +#endif /* !PURIFY */ +} + +#if defined(PERL_DEBUGGING_MSTATS) || defined(DEBUGGING_MSTATS) \ + || (defined(MYMALLOC) && !defined(PLAIN_MALLOC)) +# define mstat(str) dump_mstats(str) +#else +# define mstat(str) \ + PerlIO_printf(Perl_debug_log, "%s: perl not compiled with DEBUGGING_MSTATS\n",str); +#endif + +#define _CvGV(cv) \ + (SvROK(cv) && (SvTYPE(SvRV(cv))==SVt_PVCV) \ + ? SvREFCNT_inc(CvGV((CV*)SvRV(cv))) : &PL_sv_undef) + +MODULE = Devel::Peek PACKAGE = Devel::Peek + +void +mstat(str="Devel::Peek::mstat: ") +char *str + +void +Dump(sv,lim=4) +SV * sv +I32 lim +PPCODE: +{ + SV *pv_lim_sv = perl_get_sv("Devel::Peek::pv_limit", FALSE); + STRLEN pv_lim = pv_lim_sv ? SvIV(pv_lim_sv) : 0; + SV *dumpop = perl_get_sv("Devel::Peek::dump_ops", FALSE); + I32 save_dumpindent = PL_dumpindent; + PL_dumpindent = 2; + do_sv_dump(0, Perl_debug_log, sv, 0, lim, dumpop && SvTRUE(dumpop), pv_lim); + PL_dumpindent = save_dumpindent; +} + +void +DumpArray(lim,...) +I32 lim +PPCODE: +{ + long i; + SV *pv_lim_sv = perl_get_sv("Devel::Peek::pv_limit", FALSE); + STRLEN pv_lim = pv_lim_sv ? SvIV(pv_lim_sv) : 0; + SV *dumpop = perl_get_sv("Devel::Peek::dump_ops", FALSE); + I32 save_dumpindent = PL_dumpindent; + PL_dumpindent = 2; + + for (i=1; idl_load_flags) or - croak("Can't load '$file' for module $module: ".dl_error()."\n"); + croak("Can't load '$file' for module $module: ".dl_error()); push(@dl_librefs,$libref); # record loaded object @@ -251,6 +282,12 @@ print OUT <<'EOT'; last arg unless wantarray; next; } + elsif ($Is_MacOS) { + if (m/:/ && -f $_) { + push(@found,$_); + last arg unless wantarray; + } + } elsif (m:/: && -f $_ && !$do_expand) { push(@found,$_); last arg unless wantarray; @@ -261,6 +298,30 @@ print OUT <<'EOT'; # Using a -L prefix is the preferred option (faster and more robust) if (m:^-L:) { s/^-L//; push(@dirs, $_); next; } + if ($Is_MacOS) { + # Otherwise we try to try to spot directories by a heuristic + # (this is a more complicated issue than it first appears) + if (m/:/ && -d $_) { push(@dirs, $_); next; } + # Only files should get this far... + my(@names, $name); # what filenames to look for + s/^-l//; + push(@names, $_); + foreach $dir (@dirs, @dl_library_path) { + next unless -d $dir; + $dir =~ s/^([^:]+)$/:$1/; + $dir =~ s/:$//; + foreach $name (@names) { + my($file) = "$dir:$name"; + print STDERR " checking in $dir for $name\n" if $dl_debug; + if (-f $file) { + push(@found, $file); + next arg; # no need to look any further + } + } + } + next; + } + # Otherwise we try to try to spot directories by a heuristic # (this is a more complicated issue than it first appears) if (m:/: && -d $_) { push(@dirs, $_); next; } @@ -350,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 @@ -402,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 @@ -579,6 +641,42 @@ 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 last-in, first-out order. + +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/contrib/perl5/ext/DynaLoader/Makefile.PL b/contrib/perl5/ext/DynaLoader/Makefile.PL index 2141fdeb2f66..83cbd770b065 100644 --- a/contrib/perl5/ext/DynaLoader/Makefile.PL +++ b/contrib/perl5/ext/DynaLoader/Makefile.PL @@ -8,14 +8,19 @@ WriteMakefile( SKIP => [qw(dynamic dynamic_lib dynamic_bs)], XSPROTOARG => '-noprototypes', # XXX remove later? VERSION_FROM => 'DynaLoader_pm.PL', - PL_FILES => {'DynaLoader_pm.PL'=>'DynaLoader.pm'}, - PM => {'DynaLoader.pm' => '$(INST_LIBDIR)/DynaLoader.pm'}, - clean => {FILES => 'DynaLoader.c DynaLoader.xs DynaLoader.pm'}, + PL_FILES => {'DynaLoader_pm.PL'=>'DynaLoader.pm', + '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'}, ); sub MY::postamble { ' DynaLoader.xs: $(DLSRC) + $(RM_F) $@ $(CP) $? $@ # Perform very simple tests just to check for major gaffs. diff --git a/contrib/perl5/ext/DynaLoader/XSLoader_pm.PL b/contrib/perl5/ext/DynaLoader/XSLoader_pm.PL new file mode 100644 index 000000000000..8cdfd634255e --- /dev/null +++ b/contrib/perl5/ext/DynaLoader/XSLoader_pm.PL @@ -0,0 +1,158 @@ +use Config; + +sub to_string { + my ($value) = @_; + $value =~ s/\\/\\\\/g; + $value =~ s/'/\\'/g; + return "'$value'"; +} + +unlink "XSLoader.pm" if -f "XSLoader.pm"; +open OUT, ">XSLoader.pm" or die $!; +print OUT <<'EOT'; +# Generated from XSLoader.pm.PL (resolved %Config::Config value) + +package XSLoader; + +# And Gandalf said: 'Many folk like to know beforehand what is to +# be set on the table; but those who have laboured to prepare the +# feast like to keep their secret; for wonder makes the words of +# praise louder.' + +# (Quote from Tolkien sugested by Anno Siegel.) +# +# See pod text at end of file for documentation. +# See also ext/DynaLoader/README in source tree for other information. +# +# Tim.Bunce@ig.co.uk, August 1994 + +$VERSION = "0.01"; # avoid typo warning + +# enable debug/trace messages from DynaLoader perl code +# $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug; + +EOT + +print OUT ' my $dl_dlext = ', to_string($Config::Config{'dlext'}), ";\n" ; + +print OUT <<'EOT'; + +# No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. +package DynaLoader; +boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && + !defined(&dl_load_file); +package XSLoader; + +1; # End of main code + +# The bootstrap function cannot be autoloaded (without complications) +# so we define it here: + +sub load { + package DynaLoader; + + my($module) = $_[0]; + + # work with static linking too + my $b = "$module\::bootstrap"; + goto &$b if defined &$b; + + goto retry unless $module and defined &dl_load_file; + + my @modparts = split(/::/,$module); + my $modfname = $modparts[-1]; + +EOT + +print OUT <<'EOT' if defined &DynaLoader::mod2fname; + # Some systems have restrictions on files names for DLL's etc. + # mod2fname returns appropriate file base name (typically truncated) + # It may also edit @modparts if required. + $modfname = &mod2fname(\@modparts) if defined &mod2fname; + +EOT + +print OUT <<'EOT'; + my $modpname = join('/',@modparts); + my $modlibname = (caller())[1]; + my $c = @modparts; + $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename + my $file = "$modlibname/auto/$modpname/$modfname.$dl_dlext"; + +# print STDERR "XSLoader::load for $module ($file)\n" if $dl_debug; + + my $bs = $file; + $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library + + goto retry if not -f $file or -s $bs; + + my $bootname = "boot_$module"; + $bootname =~ s/\W/_/g; + @dl_require_symbols = ($bootname); + + # Many dynamic extension loading problems will appear to come from + # this section of code: XYZ failed at line 123 of DynaLoader.pm. + # Often these errors are actually occurring in the initialisation + # C code of the extension XS file. Perl reports the error as being + # in this perl code simply because this was the last perl code + # it executed. + + my $libref = dl_load_file($file, 0) or do { + require Carp; + Carp::croak("Can't load '$file' for module $module: " . dl_error()); + }; + push(@dl_librefs,$libref); # record loaded object + + my @unresolved = dl_undef_symbols(); + if (@unresolved) { + require Carp; + Carp::carp("Undefined symbols present after loading $file: @unresolved\n"); + } + + my $boot_symbol_ref = dl_find_symbol($libref, $bootname) or do { + require Carp; + Carp::croak("Can't find '$bootname' symbol in $file\n"); + }; + + my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); + + push(@dl_modules, $module); # record loaded module + + # See comment block above + return &$xs(@_); + + retry: + require DynaLoader; + goto &DynaLoader::bootstrap_inherit; +} + +__END__ + +=head1 NAME + +XSLoader - Dynamically load C libraries into Perl code + +=head1 SYNOPSIS + + package YourPackage; + use XSLoader; + + XSLoader::load 'YourPackage', @args; + +=head1 DESCRIPTION + +This module defines a standard I interface to the dynamic +linking mechanisms available on many platforms. Its primary purpose is +to implement cheap automatic dynamic loading of Perl modules. + +For more complicated interface see L. + +=head1 AUTHOR + +Ilya Zakharevich: extraction from DynaLoader. + +=cut +EOT + +close OUT or die $!; + diff --git a/contrib/perl5/ext/DynaLoader/dl_aix.xs b/contrib/perl5/ext/DynaLoader/dl_aix.xs index ea5040857d05..35242ed652da 100644 --- a/contrib/perl5/ext/DynaLoader/dl_aix.xs +++ b/contrib/perl5/ext/DynaLoader/dl_aix.xs @@ -20,6 +20,15 @@ #include "perl.h" #include "XSUB.h" +/* When building as a 64-bit binary on AIX, define this to get the + * correct structure definitions. Also determines the field-name + * macros and gates some logic in readEntries(). -- Steven N. Hirsch + * */ +#ifdef USE_64_BIT_ALL +# define __XCOFF64__ +# define __XCOFF32__ +#endif + #include #include #include @@ -29,6 +38,39 @@ #include #include +#ifdef USE_64_BIT_ALL +# define AIX_SCNHDR SCNHDR_64 +# define AIX_LDHDR LDHDR_64 +# define AIX_LDSYM LDSYM_64 +# define AIX_LDHDRSZ LDHDRSZ_64 +#else +# define AIX_SCNHDR SCNHDR +# define AIX_LDHDR LDHDR +# define AIX_LDSYM LDSYM +# define AIX_LDHDRSZ LDHDRSZ +#endif + +/* When using Perl extensions written in C++ the longer versions + * of load() and unload() from libC and libC_r need to be used, + * otherwise statics in the extensions won't get initialized right. + * -- Stephanie Beals */ + +/* Older AIX C compilers cannot deal with C++ double-slash comments in + the ibmcxx and/or xlC includes. Since we only need a single file, + be more fine-grained about what's included */ +#ifdef USE_libC /* The define comes, when it comes, from hints/aix.pl. */ +# define LOAD loadAndInit +# define UNLOAD terminateAndUnload +# if defined(USE_xlC_load_h) +# include "/usr/lpp/xlC/include/load.h" +# elif defined(USE_ibmcxx_load_h) +# include "/usr/ibmcxx/include/load.h" +# endif +#else +# define LOAD load +# define UNLOAD unload +#endif + /* * AIX 4.3 does remove some useful definitions from ldfcn.h. Define * these here to compensate for that lossage. @@ -77,19 +119,18 @@ typedef struct Module { * We keep a list of all loaded modules to be able to call the fini * handlers at atexit() time. */ -static ModulePtr modList; +static ModulePtr modList; /* XXX threaded */ /* * The last error from one of the dl* routines is kept in static * variables here. Each error is returned only once to the caller. */ -static char errbuf[BUFSIZ]; -static int errvalid; +static char errbuf[BUFSIZ]; /* XXX threaded */ +static int errvalid; /* XXX threaded */ static void caterr(char *); static int readExports(ModulePtr); static void terminate(void); -static void *findMain(void); static char *strerror_failed = "(strerror failed)"; static char *strerror_r_failed = "(strerror_r failed)"; @@ -104,7 +145,7 @@ char *strerrorcat(char *str, int err) { if (buf == 0) return 0; - if (strerror_r(err, buf, sizeof(buf)) == 0) + if (strerror_r(err, buf, BUFSIZ) == 0) msg = buf; else msg = strerror_r_failed; @@ -132,7 +173,7 @@ char *strerrorcpy(char *str, int err) { if (buf == 0) return 0; - if (strerror_r(err, buf, sizeof(buf)) == 0) + if (strerror_r(err, buf, BUFSIZ) == 0) msg = buf; else msg = strerror_r_failed; @@ -154,17 +195,16 @@ char *strerrorcpy(char *str, int err) { /* ARGSUSED */ void *dlopen(char *path, int mode) { + dTHX; register ModulePtr mp; - static void *mainModule; + static int inited; /* XXX threaded */ /* * Upon the first call register a terminate handler that will - * close all libraries. Also get a reference to the main module - * for use with loadbind. + * close all libraries. */ - if (!mainModule) { - if ((mainModule = findMain()) == NULL) - return NULL; + if (!inited) { + inited++; atexit(terminate); } /* @@ -190,11 +230,19 @@ void *dlopen(char *path, int mode) safefree(mp); return NULL; } + /* * load should be declared load(const char *...). Thus we * cast the path to a normal char *. Ugly. */ - if ((mp->entry = (void *)load((char *)path, L_NOAUTODEFER, NULL)) == NULL) { + if ((mp->entry = (void *)LOAD((char *)path, +#ifdef L_LIBPATH_EXEC + L_LIBPATH_EXEC | +#endif + L_NOAUTODEFER, + NULL)) == NULL) { + int saverrno = errno; + safefree(mp->name); safefree(mp); errvalid++; @@ -206,27 +254,34 @@ void *dlopen(char *path, int mode) * can be further described by querying the loader about * the last error. */ - if (errno == ENOEXEC) { - char *tmp[BUFSIZ/sizeof(char *)]; - if (loadquery(L_GETMESSAGES, tmp, sizeof(tmp)) == -1) - strerrorcpy(errbuf, errno); + if (saverrno == ENOEXEC) { + char *moreinfo[BUFSIZ/sizeof(char *)]; + if (loadquery(L_GETMESSAGES, moreinfo, sizeof(moreinfo)) == -1) + strerrorcpy(errbuf, saverrno); else { char **p; - for (p = tmp; *p; p++) + for (p = moreinfo; *p; p++) caterr(*p); } } else - strerrorcat(errbuf, errno); + strerrorcat(errbuf, saverrno); return NULL; } mp->refCnt = 1; mp->next = modList; modList = mp; - if (loadbind(0, mainModule, mp->entry) == -1) { + /* + * Assume anonymous exports come from the module this dlopen + * is linked into, that holds true as long as dlopen and all + * of the perl core are in the same shared object. + */ + if (loadbind(0, (void *)dlopen, mp->entry) == -1) { + int saverrno = errno; + dlclose(mp); errvalid++; strcpy(errbuf, "loadbind: "); - strerrorcat(errbuf, errno); + strerrorcat(errbuf, saverrno); return NULL; } if (readExports(mp) == -1) { @@ -311,7 +366,7 @@ int dlclose(void *handle) if (--mp->refCnt > 0) return 0; - result = unload(mp->entry); + result = UNLOAD(mp->entry); if (result == -1) { errvalid++; strerrorcpy(errbuf, errno); @@ -364,11 +419,12 @@ void *calloc(size_t ne, size_t sz) */ static int readExports(ModulePtr mp) { + dTHX; LDFILE *ldp = NULL; - SCNHDR sh; - LDHDR *lhp; + AIX_SCNHDR sh; + AIX_LDHDR *lhp; char *ldbuf; - LDSYM *ls; + AIX_LDSYM *ls; int i; ExportPtr ep; @@ -412,7 +468,7 @@ static int readExports(ModulePtr mp) } /* * Traverse the list of loaded modules. The entry point - * returned by load() does actually point to the data + * returned by LOAD() does actually point to the data * segment origin. */ lp = (struct ld_info *)buf; @@ -434,7 +490,11 @@ static int readExports(ModulePtr mp) return -1; } } +#ifdef USE_64_BIT_ALL + if (TYPE(ldp) != U803XTOCMAGIC) { +#else if (TYPE(ldp) != U802TOCMAGIC) { +#endif errvalid++; strcpy(errbuf, "readExports: bad magic"); while(ldclose(ldp) == FAILURE) @@ -482,8 +542,8 @@ static int readExports(ModulePtr mp) ; return -1; } - lhp = (LDHDR *)ldbuf; - ls = (LDSYM *)(ldbuf+LDHDRSZ); + lhp = (AIX_LDHDR *)ldbuf; + ls = (AIX_LDSYM *)(ldbuf+AIX_LDHDRSZ); /* * Count the number of exports to include in our export table. */ @@ -507,15 +567,19 @@ static int readExports(ModulePtr mp) * the entry point we got from load. */ ep = mp->exports; - ls = (LDSYM *)(ldbuf+LDHDRSZ); + ls = (AIX_LDSYM *)(ldbuf+AIX_LDHDRSZ); for (i = lhp->l_nsyms; i; i--, ls++) { char *symname; if (!LDR_EXPORT(*ls)) continue; +#ifndef USE_64_BIT_ALL if (ls->l_zeroes == 0) +#endif symname = ls->l_offset+lhp->l_stoff+ldbuf; +#ifndef USE_64_BIT_ALL else symname = ls->l_name; +#endif ep->name = savepv(symname); ep->addr = (void *)((unsigned long)mp->entry + ls->l_value); ep++; @@ -526,56 +590,10 @@ static int readExports(ModulePtr mp) return 0; } -/* - * Find the main modules entry point. This is used as export pointer - * for loadbind() to be able to resolve references to the main part. - */ -static void * findMain(void) -{ - struct ld_info *lp; - char *buf; - int size = 4*1024; - int i; - void *ret; - - if ((buf = safemalloc(size)) == NULL) { - errvalid++; - strcpy(errbuf, "findMain: "); - strerrorcat(errbuf, errno); - return NULL; - } - while ((i = loadquery(L_GETINFO, buf, size)) == -1 && errno == ENOMEM) { - safefree(buf); - size += 4*1024; - if ((buf = safemalloc(size)) == NULL) { - errvalid++; - strcpy(errbuf, "findMain: "); - strerrorcat(errbuf, errno); - return NULL; - } - } - if (i == -1) { - errvalid++; - strcpy(errbuf, "findMain: "); - strerrorcat(errbuf, errno); - safefree(buf); - return NULL; - } - /* - * The first entry is the main module. The entry point - * returned by load() does actually point to the data - * segment origin. - */ - lp = (struct ld_info *)buf; - ret = lp->ldinfo_dataorg; - safefree(buf); - return ret; -} - /* dl_dlopen.xs * * Platform: SunOS/Solaris, possibly others which use dlopen. - * Author: Paul Marquess (pmarquess@bfsec.bt.co.uk) + * Author: Paul Marquess (Paul.Marquess@btinternet.com) * Created: 10th July 1994 * * Modified: @@ -597,15 +615,15 @@ static void * findMain(void) static void -dl_private_init() +dl_private_init(pTHX) { - (void)dl_generic_private_init(); + (void)dl_generic_private_init(aTHX); } MODULE = DynaLoader PACKAGE = DynaLoader BOOT: - (void)dl_private_init(); + (void)dl_private_init(aTHX); void * @@ -613,16 +631,16 @@ dl_load_file(filename, flags=0) char * filename int flags CODE: - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); if (flags & 0x01) - warn("Can't make loaded symbols global on this platform while loading %s",filename); + Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); RETVAL = dlopen(filename, 1) ; - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%x\n", RETVAL)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) - SaveError("%s",dlerror()) ; + SaveError(aTHX_ "%s",dlerror()) ; else - sv_setiv( ST(0), (IV)RETVAL); + sv_setiv( ST(0), PTR2IV(RETVAL) ); void * @@ -630,15 +648,15 @@ dl_find_symbol(libhandle, symbolname) void * libhandle char * symbolname CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_find_symbol(handle=%x, symbol=%s)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_find_symbol(handle=%x, symbol=%s)\n", libhandle, symbolname)); RETVAL = dlsym(libhandle, symbolname); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " symbolref = %x\n", RETVAL)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " symbolref = %x\n", RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) - SaveError("%s",dlerror()) ; + SaveError(aTHX_ "%s",dlerror()) ; else - sv_setiv( ST(0), (IV)RETVAL); + sv_setiv( ST(0), PTR2IV(RETVAL)); void @@ -655,9 +673,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%x)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%x)\n", perl_name, symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)())symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * diff --git a/contrib/perl5/ext/DynaLoader/dl_beos.xs b/contrib/perl5/ext/DynaLoader/dl_beos.xs index 42a27cb1f17a..705c8bc4d07d 100644 --- a/contrib/perl5/ext/DynaLoader/dl_beos.xs +++ b/contrib/perl5/ext/DynaLoader/dl_beos.xs @@ -18,15 +18,15 @@ #include "dlutils.c" /* SaveError() etc */ static void -dl_private_init() +dl_private_init(pTHX) { - (void)dl_generic_private_init(); + (void)dl_generic_private_init(aTHX); } MODULE = DynaLoader PACKAGE = DynaLoader BOOT: - (void)dl_private_init(); + (void)dl_private_init(aTHX); void * @@ -45,16 +45,16 @@ dl_load_file(filename, flags=0) strcpy(path, filename); } - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", path, flags)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", path, flags)); bogo = load_add_on(path); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%lx\n", (unsigned long) RETVAL)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) RETVAL)); ST(0) = sv_newmortal() ; if (bogo < 0) { - SaveError("%s", strerror(bogo)); - PerlIO_printf(PerlIO_stderr(), "load_add_on(%s) : %d (%s)\n", path, bogo, strerror(bogo)); + SaveError(aTHX_ "%s", strerror(bogo)); + PerlIO_printf(Perl_debug_log, "load_add_on(%s) : %d (%s)\n", path, bogo, strerror(bogo)); } else { RETVAL = (void *) bogo; - sv_setiv( ST(0), (IV)RETVAL); + sv_setiv( ST(0), PTR2IV(RETVAL) ); } free(path); } @@ -67,23 +67,23 @@ dl_find_symbol(libhandle, symbolname) status_t retcode; void *adr = 0; #ifdef DLSYM_NEEDS_UNDERSCORE - symbolname = form("_%s", symbolname); + symbolname = Perl_form_nocontext("_%s", symbolname); #endif RETVAL = NULL; - DLDEBUG(2, PerlIO_printf(PerlIO_stderr(), + DLDEBUG(2, PerlIO_printf(Perl_debug_log, "dl_find_symbol(handle=%lx, symbol=%s)\n", (unsigned long) libhandle, symbolname)); retcode = get_image_symbol((image_id) libhandle, symbolname, B_SYMBOL_TYPE_TEXT, (void **) &adr); RETVAL = adr; - DLDEBUG(2, PerlIO_printf(PerlIO_stderr(), + DLDEBUG(2, PerlIO_printf(Perl_debug_log, " symbolref = %lx\n", (unsigned long) RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) { - SaveError("%s", strerror(retcode)) ; - PerlIO_printf(PerlIO_stderr(), "retcode = %p (%s)\n", retcode, strerror(retcode)); + SaveError(aTHX_ "%s", strerror(retcode)) ; + PerlIO_printf(Perl_debug_log, "retcode = %p (%s)\n", retcode, strerror(retcode)); } else - sv_setiv( ST(0), (IV)RETVAL); + sv_setiv( ST(0), PTR2IV(RETVAL)); void @@ -100,9 +100,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%lx)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%lx)\n", perl_name, (unsigned long) symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)_((CV *)))symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * diff --git a/contrib/perl5/ext/DynaLoader/dl_dld.xs b/contrib/perl5/ext/DynaLoader/dl_dld.xs index 2443ab0d6946..d8fad2ac5e27 100644 --- a/contrib/perl5/ext/DynaLoader/dl_dld.xs +++ b/contrib/perl5/ext/DynaLoader/dl_dld.xs @@ -48,12 +48,12 @@ static AV *dl_resolve_using = Nullav; static AV *dl_require_symbols = Nullav; static void -dl_private_init() +dl_private_init(pTHX) { int dlderr; - dl_generic_private_init(); - dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4); - dl_require_symbols = perl_get_av("DynaLoader::dl_require_symbols", 0x4); + dl_generic_private_init(aTHX); + dl_resolve_using = get_av("DynaLoader::dl_resolve_using", GV_ADDMULTI); + dl_require_symbols = get_av("DynaLoader::dl_require_symbols", GV_ADDMULTI); #ifdef __linux__ dlderr = dld_init("/proc/self/exe"); if (dlderr) { @@ -61,8 +61,8 @@ dl_private_init() dlderr = dld_init(dld_find_executable(PL_origargv[0])); if (dlderr) { char *msg = dld_strerror(dlderr); - SaveError("dld_init(%s) failed: %s", PL_origargv[0], msg); - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "%s", LastError)); + SaveError(aTHX_ "dld_init(%s) failed: %s", PL_origargv[0], msg); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "%s", LastError)); } #ifdef __linux__ } @@ -85,40 +85,40 @@ dl_load_file(filename, flags=0) GV *gv; CODE: RETVAL = filename; - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); if (flags & 0x01) - croak("Can't make loaded symbols global on this platform while loading %s",filename); + Perl_croak(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); max = AvFILL(dl_require_symbols); for (x = 0; x <= max; x++) { char *sym = SvPVX(*av_fetch(dl_require_symbols, x, 0)); - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dld_create_ref(%s)\n", sym)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dld_create_ref(%s)\n", sym)); if (dlderr = dld_create_reference(sym)) { - SaveError("dld_create_reference(%s): %s", sym, + SaveError(aTHX_ "dld_create_reference(%s): %s", sym, dld_strerror(dlderr)); goto haverror; } } - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dld_link(%s)\n", filename)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dld_link(%s)\n", filename)); if (dlderr = dld_link(filename)) { - SaveError("dld_link(%s): %s", filename, dld_strerror(dlderr)); + SaveError(aTHX_ "dld_link(%s): %s", filename, dld_strerror(dlderr)); goto haverror; } max = AvFILL(dl_resolve_using); for (x = 0; x <= max; x++) { char *sym = SvPVX(*av_fetch(dl_resolve_using, x, 0)); - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dld_link(%s)\n", sym)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dld_link(%s)\n", sym)); if (dlderr = dld_link(sym)) { - SaveError("dld_link(%s): %s", sym, dld_strerror(dlderr)); + SaveError(aTHX_ "dld_link(%s): %s", sym, dld_strerror(dlderr)); goto haverror; } } - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "libref=%s\n", RETVAL)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "libref=%s\n", RETVAL)); haverror: ST(0) = sv_newmortal() ; if (dlderr == 0) - sv_setiv(ST(0), (IV)RETVAL); + sv_setiv(ST(0), PTR2IV(RETVAL)); void * @@ -126,16 +126,16 @@ dl_find_symbol(libhandle, symbolname) void * libhandle char * symbolname CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_find_symbol(handle=%x, symbol=%s)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_find_symbol(handle=%x, symbol=%s)\n", libhandle, symbolname)); RETVAL = (void *)dld_get_func(symbolname); /* if RETVAL==NULL we should try looking for a non-function symbol */ - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " symbolref = %x\n", RETVAL)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " symbolref = %x\n", RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) - SaveError("dl_find_symbol: Unable to find '%s' symbol", symbolname) ; + SaveError(aTHX_ "dl_find_symbol: Unable to find '%s' symbol", symbolname) ; else - sv_setiv(ST(0), (IV)RETVAL); + sv_setiv(ST(0), PTR2IV(RETVAL)); void @@ -160,9 +160,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%x)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%x)\n", perl_name, symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)())symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * diff --git a/contrib/perl5/ext/DynaLoader/dl_dlopen.xs b/contrib/perl5/ext/DynaLoader/dl_dlopen.xs index 245920565312..8e4936d128d9 100644 --- a/contrib/perl5/ext/DynaLoader/dl_dlopen.xs +++ b/contrib/perl5/ext/DynaLoader/dl_dlopen.xs @@ -1,15 +1,17 @@ /* dl_dlopen.xs * * Platform: SunOS/Solaris, possibly others which use dlopen. - * Author: Paul Marquess (pmarquess@bfsec.bt.co.uk) + * Author: Paul Marquess (Paul.Marquess@btinternet.com) * 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 @@ -131,24 +144,35 @@ static void -dl_private_init() +dl_private_init(pTHX) { - (void)dl_generic_private_init(); + (void)dl_generic_private_init(aTHX); } MODULE = DynaLoader PACKAGE = DynaLoader BOOT: - (void)dl_private_init(); + (void)dl_private_init(aTHX); void * dl_load_file(filename, flags=0) char * filename int flags - PREINIT: + PREINIT: int mode = RTLD_LAZY; - CODE: + CODE: +{ +#if defined(DLOPEN_WONT_DO_RELATIVE_PATHS) + char pathbuf[PATH_MAX + 2]; + if (*filename != '/' && strchr(filename, '/')) { + if (getcwd(pathbuf, PATH_MAX - strlen(filename))) { + strcat(pathbuf, "/"); + strcat(pathbuf, filename); + filename = pathbuf; + } + } +#endif #ifdef RTLD_NOW if (dl_nonlazy) mode = RTLD_NOW; @@ -157,16 +181,30 @@ dl_load_file(filename, flags=0) #ifdef RTLD_GLOBAL mode |= RTLD_GLOBAL; #else - warn("Can't make loaded symbols global on this platform while loading %s",filename); + Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); #endif - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); RETVAL = dlopen(filename, mode) ; - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%lx\n", (unsigned long) RETVAL)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) - SaveError("%s",dlerror()) ; + SaveError(aTHX_ "%s",dlerror()) ; else - sv_setiv( ST(0), (IV)RETVAL); + 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 * @@ -175,19 +213,19 @@ dl_find_symbol(libhandle, symbolname) char * symbolname CODE: #ifdef DLSYM_NEEDS_UNDERSCORE - symbolname = form("_%s", symbolname); + symbolname = Perl_form_nocontext("_%s", symbolname); #endif - DLDEBUG(2, PerlIO_printf(PerlIO_stderr(), + DLDEBUG(2, PerlIO_printf(Perl_debug_log, "dl_find_symbol(handle=%lx, symbol=%s)\n", (unsigned long) libhandle, symbolname)); RETVAL = dlsym(libhandle, symbolname); - DLDEBUG(2, PerlIO_printf(PerlIO_stderr(), + DLDEBUG(2, PerlIO_printf(Perl_debug_log, " symbolref = %lx\n", (unsigned long) RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) - SaveError("%s",dlerror()) ; + SaveError(aTHX_ "%s",dlerror()) ; else - sv_setiv( ST(0), (IV)RETVAL); + sv_setiv( ST(0), PTR2IV(RETVAL)); void @@ -204,9 +242,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%lx)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%lx)\n", perl_name, (unsigned long) symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)_((CV *)))symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * diff --git a/contrib/perl5/ext/DynaLoader/dl_dyld.xs b/contrib/perl5/ext/DynaLoader/dl_dyld.xs new file mode 100644 index 000000000000..688e4745f8e5 --- /dev/null +++ b/contrib/perl5/ext/DynaLoader/dl_dyld.xs @@ -0,0 +1,226 @@ +/* dl_dyld.xs + * + * Platform: Darwin (Mac OS) + * Author: Wilfredo Sanchez + * Based on: dl_next.xs by Paul Marquess + * Based on: dl_dlopen.xs by Anno Siegel + * Created: Aug 15th, 1994 + * + */ + +/* + And Gandalf said: 'Many folk like to know beforehand what is to + be set on the table; but those who have laboured to prepare the + feast like to keep their secret; for wonder makes the words of + praise louder.' +*/ + +/* Porting notes: + +dl_dyld.xs is based on dl_next.xs by Anno Siegel. + +dl_next.xs is in turn a port from dl_dlopen.xs by Paul Marquess. It +should not be used as a base for further ports though it may be used +as an example for how dl_dlopen.xs can be ported to other platforms. + +The method used here is just to supply the sun style dlopen etc. +functions in terms of NeXT's/Apple's dyld. The xs code proper is +unchanged from Paul's original. + +The port could use some streamlining. For one, error handling could +be simplified. + +This should be useable as a replacement for dl_next.xs, but it has not +been tested on NeXT platforms. + + Wilfredo Sanchez + +*/ + +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#define DL_LOADONCEONLY + +#include "dlutils.c" /* SaveError() etc */ + +#undef environ +#undef bool +#import + +static char * dl_last_error = (char *) 0; +static AV *dl_resolve_using = Nullav; + +static char *dlerror() +{ + return dl_last_error; +} + +int dlclose(handle) /* stub only */ +void *handle; +{ + return 0; +} + +enum dyldErrorSource +{ + OFImage, +}; + +static void TranslateError + (const char *path, enum dyldErrorSource type, int number) +{ + dTHX; + char *error; + unsigned int index; + static char *OFIErrorStrings[] = + { + "%s(%d): Object Image Load Failure\n", + "%s(%d): Object Image Load Success\n", + "%s(%d): Not an recognisable object file\n", + "%s(%d): No valid architecture\n", + "%s(%d): Object image has an invalid format\n", + "%s(%d): Invalid access (permissions?)\n", + "%s(%d): Unknown error code from NSCreateObjectFileImageFromFile\n", + }; +#define NUM_OFI_ERRORS (sizeof(OFIErrorStrings) / sizeof(OFIErrorStrings[0])) + + switch (type) + { + case OFImage: + index = number; + if (index > NUM_OFI_ERRORS - 1) + index = NUM_OFI_ERRORS - 1; + error = Perl_form_nocontext(OFIErrorStrings[index], path, number); + break; + + default: + error = Perl_form_nocontext("%s(%d): Totally unknown error type %d\n", + path, number, type); + break; + } + safefree(dl_last_error); + dl_last_error = savepv(error); +} + +static char *dlopen(char *path, int mode /* mode is ignored */) +{ + int dyld_result; + NSObjectFileImage ofile; + NSModule handle = NULL; + + dyld_result = NSCreateObjectFileImageFromFile(path, &ofile); + if (dyld_result != NSObjectFileImageSuccess) + TranslateError(path, OFImage, dyld_result); + else + { + // NSLinkModule will cause the run to abort on any link error's + // not very friendly but the error recovery functionality is limited. + handle = NSLinkModule(ofile, path, TRUE); + } + + return handle; +} + +void * +dlsym(handle, symbol) +void *handle; +char *symbol; +{ + void *addr; + + if (NSIsSymbolNameDefined(symbol)) + addr = NSAddressOfSymbol(NSLookupAndBindSymbol(symbol)); + else + addr = NULL; + + return addr; +} + + + +/* ----- code from dl_dlopen.xs below here ----- */ + + +static void +dl_private_init(pTHX) +{ + (void)dl_generic_private_init(aTHX); + dl_resolve_using = get_av("DynaLoader::dl_resolve_using", GV_ADDMULTI); +} + +MODULE = DynaLoader PACKAGE = DynaLoader + +BOOT: + (void)dl_private_init(aTHX); + + + +void * +dl_load_file(filename, flags=0) + char * filename + int flags + PREINIT: + int mode = 1; + CODE: + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); + if (flags & 0x01) + Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); + RETVAL = dlopen(filename, mode) ; + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL)); + ST(0) = sv_newmortal() ; + if (RETVAL == NULL) + SaveError(aTHX_ "%s",dlerror()) ; + else + sv_setiv( ST(0), PTR2IV(RETVAL) ); + + +void * +dl_find_symbol(libhandle, symbolname) + void * libhandle + char * symbolname + CODE: + symbolname = Perl_form_nocontext("_%s", symbolname); + DLDEBUG(2, PerlIO_printf(Perl_debug_log, + "dl_find_symbol(handle=%lx, symbol=%s)\n", + (unsigned long) libhandle, symbolname)); + RETVAL = dlsym(libhandle, symbolname); + DLDEBUG(2, PerlIO_printf(Perl_debug_log, + " symbolref = %lx\n", (unsigned long) RETVAL)); + ST(0) = sv_newmortal() ; + if (RETVAL == NULL) + SaveError(aTHX_ "%s",dlerror()) ; + else + sv_setiv( ST(0), PTR2IV(RETVAL) ); + + +void +dl_undef_symbols() + PPCODE: + + + +# These functions should not need changing on any platform: + +void +dl_install_xsub(perl_name, symref, filename="$Package") + char * perl_name + void * symref + char * filename + CODE: + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%x)\n", + perl_name, symref)); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); + + +char * +dl_error() + CODE: + RETVAL = LastError ; + OUTPUT: + RETVAL + +# end. diff --git a/contrib/perl5/ext/DynaLoader/dl_hpux.xs b/contrib/perl5/ext/DynaLoader/dl_hpux.xs index a82e0eac1112..582c047be87f 100644 --- a/contrib/perl5/ext/DynaLoader/dl_hpux.xs +++ b/contrib/perl5/ext/DynaLoader/dl_hpux.xs @@ -33,16 +33,16 @@ static AV *dl_resolve_using = Nullav; static void -dl_private_init() +dl_private_init(pTHX) { - (void)dl_generic_private_init(); - dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4); + (void)dl_generic_private_init(aTHX); + dl_resolve_using = get_av("DynaLoader::dl_resolve_using", GV_ADDMULTI); } MODULE = DynaLoader PACKAGE = DynaLoader BOOT: - (void)dl_private_init(); + (void)dl_private_init(aTHX); void * @@ -53,9 +53,9 @@ dl_load_file(filename, flags=0) shl_t obj = NULL; int i, max, bind_type; CODE: - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); if (flags & 0x01) - warn("Can't make loaded symbols global on this platform while loading %s",filename); + Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); if (dl_nonlazy) { bind_type = BIND_IMMEDIATE|BIND_VERBOSE; } else { @@ -76,23 +76,23 @@ dl_load_file(filename, flags=0) max = AvFILL(dl_resolve_using); for (i = 0; i <= max; i++) { char *sym = SvPVX(*av_fetch(dl_resolve_using, i, 0)); - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s) (dependent)\n", sym)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s) (dependent)\n", sym)); obj = shl_load(sym, bind_type, 0L); if (obj == NULL) { goto end; } } - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s): ", filename)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s): ", filename)); obj = shl_load(filename, bind_type, 0L); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%x\n", obj)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", obj)); end: ST(0) = sv_newmortal() ; if (obj == NULL) - SaveError("%s",Strerror(errno)); + SaveError(aTHX_ "%s",Strerror(errno)); else - sv_setiv( ST(0), (IV)obj); + sv_setiv( ST(0), PTR2IV(obj) ); void * @@ -104,9 +104,9 @@ dl_find_symbol(libhandle, symbolname) void *symaddr = NULL; int status; #ifdef __hp9000s300 - symbolname = form("_%s", symbolname); + symbolname = Perl_form_nocontext("_%s", symbolname); #endif - DLDEBUG(2, PerlIO_printf(PerlIO_stderr(), + DLDEBUG(2, PerlIO_printf(Perl_debug_log, "dl_find_symbol(handle=%lx, symbol=%s)\n", (unsigned long) libhandle, symbolname)); @@ -114,17 +114,17 @@ dl_find_symbol(libhandle, symbolname) errno = 0; status = shl_findsym(&obj, symbolname, TYPE_PROCEDURE, &symaddr); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " symbolref(PROCEDURE) = %x\n", symaddr)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " symbolref(PROCEDURE) = %x\n", symaddr)); if (status == -1 && errno == 0) { /* try TYPE_DATA instead */ status = shl_findsym(&obj, symbolname, TYPE_DATA, &symaddr); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " symbolref(DATA) = %x\n", symaddr)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " symbolref(DATA) = %x\n", symaddr)); } if (status == -1) { - SaveError("%s",(errno) ? Strerror(errno) : "Symbol not found") ; + SaveError(aTHX_ "%s",(errno) ? Strerror(errno) : "Symbol not found") ; } else { - sv_setiv( ST(0), (IV)symaddr); + sv_setiv( ST(0), PTR2IV(symaddr) ); } @@ -142,9 +142,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%x)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%x)\n", perl_name, symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)())symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * diff --git a/contrib/perl5/ext/DynaLoader/dl_mpeix.xs b/contrib/perl5/ext/DynaLoader/dl_mpeix.xs index 4cc07ec4c3cc..7d27901e6570 100644 --- a/contrib/perl5/ext/DynaLoader/dl_mpeix.xs +++ b/contrib/perl5/ext/DynaLoader/dl_mpeix.xs @@ -33,16 +33,16 @@ typedef struct { static AV *dl_resolve_using = Nullav; static void -dl_private_init() +dl_private_init(pTHX) { - (void)dl_generic_private_init(); - dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4); + (void)dl_generic_private_init(aTHX); + dl_resolve_using = get_av("DynaLoader::dl_resolve_using", GV_ADDMULTI); } MODULE = DynaLoader PACKAGE = DynaLoader BOOT: - (void)dl_private_init(); + (void)dl_private_init(aTHX); void * dl_load_file(filename, flags=0) @@ -53,10 +53,10 @@ dl_load_file(filename, flags=0) p_mpe_dld obj = NULL; int i; CODE: - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename, + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename, flags)); if (flags & 0x01) - warn("Can't make loaded symbols global on this platform while loading %s + Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s ",filename); obj = (p_mpe_dld) safemalloc(sizeof(t_mpe_dld)); memzero(obj, sizeof(t_mpe_dld)); @@ -68,13 +68,13 @@ flags)); else sprintf(obj->filename," %s ",filename); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr()," libref=%x\n", obj)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", obj)); ST(0) = sv_newmortal() ; if (obj == NULL) - SaveError("%s",Strerror(errno)); + SaveError(aTHX_"%s",Strerror(errno)); else - sv_setiv( ST(0), (IV)obj); + sv_setiv( ST(0), PTR2IV(obj) ); void * dl_find_symbol(libhandle, symbolname) @@ -86,7 +86,7 @@ dl_find_symbol(libhandle, symbolname) char symname[PATH_MAX + 3]; void * symaddr = NULL; int status; - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(),"dl_find_symbol(handle=%x, symbol=%s)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log,"dl_find_symbol(handle=%x, symbol=%s)\n", libhandle, symbolname)); ST(0) = sv_newmortal() ; errno = 0; @@ -95,12 +95,12 @@ dl_find_symbol(libhandle, symbolname) HPGETPROCPLABEL(8, symname, &symaddr, &status, obj->filename, 1, 0, &datalen, 1, 0, 0); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr()," symbolref(PROCEDURE) = %x, status=%x\n", symaddr, status)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log," symbolref(PROCEDURE) = %x, status=%x\n", symaddr, status)); if (status != 0) { - SaveError("%s",(errno) ? Strerror(errno) : "Symbol not found") ; + SaveError(aTHX_"%s",(errno) ? Strerror(errno) : "Symbol not found") ; } else { - sv_setiv( ST(0), (IV)symaddr); + sv_setiv( ST(0), PTR2IV(symaddr) ); } void @@ -115,9 +115,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(),"dl_install_xsub(name=%s, symref=%x)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log,"dl_install_xsub(name=%s, symref=%x)\n", perl_name, symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)())symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * dl_error() diff --git a/contrib/perl5/ext/DynaLoader/dl_next.xs b/contrib/perl5/ext/DynaLoader/dl_next.xs index dfa8a3eac8c7..b8c19f203ec7 100644 --- a/contrib/perl5/ext/DynaLoader/dl_next.xs +++ b/contrib/perl5/ext/DynaLoader/dl_next.xs @@ -72,6 +72,7 @@ enum dyldErrorSource static void TranslateError (const char *path, enum dyldErrorSource type, int number) { + dTHX; char *error; unsigned int index; static char *OFIErrorStrings[] = @@ -92,11 +93,11 @@ static void TranslateError index = number; if (index > NUM_OFI_ERRORS - 1) index = NUM_OFI_ERRORS - 1; - error = form(OFIErrorStrings[index], path, number); + error = Perl_form_nocontext(OFIErrorStrings[index], path, number); break; default: - error = form("%s(%d): Totally unknown error type %d\n", + error = Perl_form_nocontext("%s(%d): Totally unknown error type %d\n", path, number, type); break; } @@ -209,7 +210,7 @@ char *symbol; NXStream *nxerr = OpenError(); unsigned long symref = 0; - if (!rld_lookup(nxerr, form("_%s", symbol), &symref)) + if (!rld_lookup(nxerr, Perl_form_nocontext("_%s", symbol), &symref)) TransferError(nxerr); CloseError(nxerr); return (void*) symref; @@ -222,16 +223,16 @@ char *symbol; static void -dl_private_init() +dl_private_init(pTHX) { - (void)dl_generic_private_init(); - dl_resolve_using = perl_get_av("DynaLoader::dl_resolve_using", 0x4); + (void)dl_generic_private_init(aTHX); + dl_resolve_using = get_av("DynaLoader::dl_resolve_using", GV_ADDMULTI); } MODULE = DynaLoader PACKAGE = DynaLoader BOOT: - (void)dl_private_init(); + (void)dl_private_init(aTHX); @@ -242,16 +243,16 @@ dl_load_file(filename, flags=0) PREINIT: int mode = 1; CODE: - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filename,flags)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); if (flags & 0x01) - warn("Can't make loaded symbols global on this platform while loading %s",filename); + Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); RETVAL = dlopen(filename, mode) ; - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), " libref=%x\n", RETVAL)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) - SaveError("%s",dlerror()) ; + SaveError(aTHX_ "%s",dlerror()) ; else - sv_setiv( ST(0), (IV)RETVAL); + sv_setiv( ST(0), PTR2IV(RETVAL) ); void * @@ -260,19 +261,19 @@ dl_find_symbol(libhandle, symbolname) char * symbolname CODE: #if NS_TARGET_MAJOR >= 4 - symbolname = form("_%s", symbolname); + symbolname = Perl_form_nocontext("_%s", symbolname); #endif - DLDEBUG(2, PerlIO_printf(PerlIO_stderr(), + DLDEBUG(2, PerlIO_printf(Perl_debug_log, "dl_find_symbol(handle=%lx, symbol=%s)\n", (unsigned long) libhandle, symbolname)); RETVAL = dlsym(libhandle, symbolname); - DLDEBUG(2, PerlIO_printf(PerlIO_stderr(), + DLDEBUG(2, PerlIO_printf(Perl_debug_log, " symbolref = %lx\n", (unsigned long) RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) - SaveError("%s",dlerror()) ; + SaveError(aTHX_ "%s",dlerror()) ; else - sv_setiv( ST(0), (IV)RETVAL); + sv_setiv( ST(0), PTR2IV(RETVAL) ); void @@ -289,9 +290,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%x)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%x)\n", perl_name, symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)())symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * diff --git a/contrib/perl5/ext/DynaLoader/dl_vmesa.xs b/contrib/perl5/ext/DynaLoader/dl_vmesa.xs new file mode 100644 index 000000000000..8595e440a694 --- /dev/null +++ b/contrib/perl5/ext/DynaLoader/dl_vmesa.xs @@ -0,0 +1,175 @@ +/* dl_vmesa.xs + * + * Platform: VM/ESA, possibly others which use dllload etc. + * Author: Neale Ferguson (neale@mailbox.tabnsw.com.au) + * Created: 23rd Septemer, 1998 + * + * + */ + +/* Porting notes: + + + Definition of VM/ESA dynamic Linking functions + ============================================== + In order to make this implementation easier to understand here is a + quick definition of the VM/ESA Dynamic Linking functions which are + used here. + + dlopen + ------ + void * + dlopen(const char *path) + + This function takes the name of a dynamic object file and returns + a descriptor which can be used by dlsym later. It returns NULL on + error. + + + dllsym + ------ + void * + dlsym(void *handle, char *symbol) + + Takes the handle returned from dlopen and the name of a symbol to + get the address of. If the symbol was found a pointer is + returned. It returns NULL on error. + + dlerror + ------- + char * dlerror() + + Returns a null-terminated string which describes the last error + that occurred with the other dll functions. 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. + + + Return Types + ============ + In this implementation the two functions, dl_load_file & + dl_find_symbol, return void *. This is because the underlying SunOS + dynamic linker calls also return void *. This is not necessarily + the case for all architectures. For example, some implementation + will want to return a char * for dl_load_file. + + If void * is not appropriate for your architecture, you will have to + change the void * to whatever you require. If you are not certain of + how Perl handles C data types, I suggest you start by consulting + Dean Roerich's Perl 5 API document. Also, have a look in the typemap + file (in the ext directory) for a fairly comprehensive list of types + that are already supported. If you are completely stuck, I suggest you + post a message to perl5-porters, comp.lang.perl.misc or if you are really + desperate to me. + + Remember when you are making any changes that the return value from + dl_load_file is used as a parameter in the dl_find_symbol + function. Also the return value from find_symbol is used as a parameter + to install_xsub. + + + Dealing with Error Messages + ============================ + In order to make the handling of dynamic linking errors as generic as + possible you should store any error messages associated with your + implementation with the StoreError function. + + In the case of VM/ESA the function dlerror returns the error message + associated with the last dynamic link error. As the VM/ESA dynamic + linker functions return NULL on error every call to a VM/ESA dynamic + dynamic link routine is coded like this + + RETVAL = dlopen(filename) ; + if (RETVAL == NULL) + SaveError(aTHX_ "%s",dlerror()) ; + + Note that SaveError() takes a printf format string. Use a "%s" as + the first parameter if the error may contain and % characters. + +*/ + +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" +#include + + +#include "dlutils.c" /* SaveError() etc */ + + +static void +dl_private_init(pTHX) +{ + (void)dl_generic_private_init(aTHX); +} + +MODULE = DynaLoader PACKAGE = DynaLoader + +BOOT: + (void)dl_private_init(aTHX); + + +void * +dl_load_file(filename, flags=0) + char * filename + int flags + CODE: + if (flags & 0x01) + Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); + RETVAL = dlopen(filename) ; + DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) RETVAL)); + ST(0) = sv_newmortal() ; + if (RETVAL == NULL) + SaveError(aTHX_ "%s",dlerror()) ; + else + sv_setiv( ST(0), PTR2IV(RETVAL) ); + + +void * +dl_find_symbol(libhandle, symbolname) + void * libhandle + char * symbolname + CODE: + DLDEBUG(2, PerlIO_printf(Perl_debug_log, + "dl_find_symbol(handle=%lx, symbol=%s)\n", + (unsigned long) libhandle, symbolname)); + RETVAL = dlsym(libhandle, symbolname); + DLDEBUG(2, PerlIO_printf(Perl_debug_log, + " symbolref = %lx\n", (unsigned long) RETVAL)); + ST(0) = sv_newmortal() ; + if (RETVAL == NULL) + SaveError(aTHX_ "%s",dlerror()) ; + else + sv_setiv( ST(0), PTR2IV(RETVAL) ); + + +void +dl_undef_symbols() + PPCODE: + + + +# These functions should not need changing on any platform: + +void +dl_install_xsub(perl_name, symref, filename="$Package") + char * perl_name + void * symref + char * filename + CODE: + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%lx)\n", + perl_name, (unsigned long) symref)); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); + + +char * +dl_error() + CODE: + RETVAL = LastError ; + OUTPUT: + RETVAL + +# end. diff --git a/contrib/perl5/ext/DynaLoader/dl_vms.xs b/contrib/perl5/ext/DynaLoader/dl_vms.xs index 08fd2f3f460a..d7a1f863f34d 100644 --- a/contrib/perl5/ext/DynaLoader/dl_vms.xs +++ b/contrib/perl5/ext/DynaLoader/dl_vms.xs @@ -65,6 +65,12 @@ static AV *dl_require_symbols = Nullav; #include #include +#if defined(VMS_WE_ARE_CASE_SENSITIVE) +#define DL_CASE_SENSITIVE 1<<4 +#else +#define DL_CASE_SENSITIVE 0 +#endif + typedef unsigned long int vmssts; struct libref { @@ -112,6 +118,7 @@ dl_set_error(sts,stv) vmssts stv; { vmssts vec[3]; + dTHX; vec[0] = stv ? 2 : 1; vec[1] = sts; vec[2] = stv; @@ -121,12 +128,13 @@ dl_set_error(sts,stv) static unsigned int findsym_handler(void *sig, void *mech) { + dTHX; unsigned long int myvec[8],args, *usig = (unsigned long int *) sig; /* Be paranoid and assume signal vector passed in might be readonly */ myvec[0] = args = usig[0] > 10 ? 9 : usig[0] - 1; while (--args) myvec[args] = usig[args]; _ckvmssts(sys$putmsg(myvec,copy_errmsg,0,0)); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "findsym_handler: received\n\t%s\n",LastError)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "findsym_handler: received\n\t%s\n",LastError)); return SS$_CONTINUE; } @@ -140,16 +148,16 @@ my_find_image_symbol(struct dsc$descriptor_s *imgname, { unsigned long int retsts; VAXC$ESTABLISH(findsym_handler); - retsts = lib$find_image_symbol(imgname,symname,entry,defspec); + retsts = lib$find_image_symbol(imgname,symname,entry,defspec,DL_CASE_SENSITIVE); return retsts; } static void -dl_private_init() +dl_private_init(pTHX) { - dl_generic_private_init(); - dl_require_symbols = perl_get_av("DynaLoader::dl_require_symbols", 0x4); + dl_generic_private_init(aTHX); + dl_require_symbols = get_av("DynaLoader::dl_require_symbols", 0x4); /* Set up the static control blocks for dl_expand_filespec() */ dlfab = cc$rms_fab; dlnam = cc$rms_nam; @@ -162,7 +170,7 @@ dl_private_init() MODULE = DynaLoader PACKAGE = DynaLoader BOOT: - (void)dl_private_init(); + (void)dl_private_init(aTHX); void dl_expandspec(filespec) @@ -177,11 +185,11 @@ dl_expandspec(filespec) dlfab.fab$b_fns = strlen(vmsspec); dlfab.fab$l_dna = 0; dlfab.fab$b_dns = 0; - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_expand_filespec(%s):\n",vmsspec)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_expand_filespec(%s):\n",vmsspec)); /* On the first pass, just parse the specification string */ dlnam.nam$b_nop = NAM$M_SYNCHK; sts = sys$parse(&dlfab); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tSYNCHK sys$parse = %d\n",sts)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tSYNCHK sys$parse = %d\n",sts)); if (!(sts & 1)) { dl_set_error(dlfab.fab$l_sts,dlfab.fab$l_stv); ST(0) = &PL_sv_undef; @@ -194,7 +202,7 @@ dl_expandspec(filespec) dlnam.nam$b_type + dlnam.nam$b_ver); deflen += dlnam.nam$b_type + dlnam.nam$b_ver; memcpy(vmsspec,dlnam.nam$l_name,dlnam.nam$b_name); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tsplit filespec: name = %.*s, default = %.*s\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tsplit filespec: name = %.*s, default = %.*s\n", dlnam.nam$b_name,vmsspec,deflen,defspec)); /* . . . and go back to expand it */ dlnam.nam$b_nop = 0; @@ -202,7 +210,7 @@ dl_expandspec(filespec) dlfab.fab$b_dns = deflen; dlfab.fab$b_fns = dlnam.nam$b_name; sts = sys$parse(&dlfab); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tname/default sys$parse = %d\n",sts)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tname/default sys$parse = %d\n",sts)); if (!(sts & 1)) { dl_set_error(dlfab.fab$l_sts,dlfab.fab$l_stv); ST(0) = &PL_sv_undef; @@ -210,14 +218,14 @@ dl_expandspec(filespec) else { /* Now find the actual file */ sts = sys$search(&dlfab); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tsys$search = %d\n",sts)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tsys$search = %d\n",sts)); if (!(sts & 1)) { dl_set_error(dlfab.fab$l_sts,dlfab.fab$l_stv); ST(0) = &PL_sv_undef; } else { - ST(0) = sv_2mortal(newSVpv(dlnam.nam$l_rsa,dlnam.nam$b_rsl)); - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "\tresult = \\%.*s\\\n", + ST(0) = sv_2mortal(newSVpvn(dlnam.nam$l_rsa,dlnam.nam$b_rsl)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "\tresult = \\%.*s\\\n", dlnam.nam$b_rsl,dlnam.nam$l_rsa)); } } @@ -228,6 +236,7 @@ dl_load_file(filespec, flags) char * filespec int flags PREINIT: + dTHX; char vmsspec[NAM$C_MAXRSS]; SV *reqSV, **reqSVhndl; STRLEN deflen; @@ -244,16 +253,16 @@ dl_load_file(filespec, flags) void (*entry)(); CODE: - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_load_file(%s,%x):\n", filespec,flags)); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filespec,flags)); specdsc.dsc$a_pointer = tovmsspec(filespec,vmsspec); specdsc.dsc$w_length = strlen(specdsc.dsc$a_pointer); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tVMS-ified filespec is %s\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tVMS-ified filespec is %s\n", specdsc.dsc$a_pointer)); New(1399,dlptr,1,struct libref); dlptr->name.dsc$b_dtype = dlptr->defspec.dsc$b_dtype = DSC$K_DTYPE_T; dlptr->name.dsc$b_class = dlptr->defspec.dsc$b_class = DSC$K_CLASS_S; sts = sys$filescan(&specdsc,namlst,0); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tsys$filescan: returns %d, name is %.*s\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tsys$filescan: returns %d, name is %.*s\n", sts,namlst[0].len,namlst[0].string)); if (!(sts & 1)) { failed = 1; @@ -269,21 +278,21 @@ dl_load_file(filespec, flags) memcpy(dlptr->defspec.dsc$a_pointer + deflen, namlst[0].string + namlst[0].len, dlptr->defspec.dsc$w_length - deflen); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tlibref = name: %s, defspec: %.*s\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tlibref = name: %s, defspec: %.*s\n", dlptr->name.dsc$a_pointer, dlptr->defspec.dsc$w_length, dlptr->defspec.dsc$a_pointer)); if (!(reqSVhndl = av_fetch(dl_require_symbols,0,FALSE)) || !(reqSV = *reqSVhndl)) { - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\t@dl_require_symbols empty, returning untested libref\n")); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\t@dl_require_symbols empty, returning untested libref\n")); } else { symdsc.dsc$w_length = SvCUR(reqSV); symdsc.dsc$a_pointer = SvPVX(reqSV); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\t$dl_require_symbols[0] = %.*s\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\t$dl_require_symbols[0] = %.*s\n", symdsc.dsc$w_length, symdsc.dsc$a_pointer)); sts = my_find_image_symbol(&(dlptr->name),&symdsc, &entry,&(dlptr->defspec)); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tlib$find_image_symbol returns %d\n",sts)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tlib$find_image_symbol returns %d\n",sts)); if (!(sts&1)) { failed = 1; dl_set_error(sts,0); @@ -298,7 +307,7 @@ dl_load_file(filespec, flags) ST(0) = &PL_sv_undef; } else { - ST(0) = sv_2mortal(newSViv((IV) dlptr)); + ST(0) = sv_2mortal(newSViv(PTR2IV(dlptr))); } @@ -313,19 +322,19 @@ dl_find_symbol(librefptr,symname) void (*entry)(); vmssts sts; - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "dl_find_dymbol(%.*s,%.*s):\n", + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_find_dymbol(%.*s,%.*s):\n", thislib.name.dsc$w_length, thislib.name.dsc$a_pointer, symdsc.dsc$w_length,symdsc.dsc$a_pointer)); sts = my_find_image_symbol(&(thislib.name),&symdsc, &entry,&(thislib.defspec)); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tlib$find_image_symbol returns %d\n",sts)); - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "\tentry point is %d\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tlib$find_image_symbol returns %d\n",sts)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "\tentry point is %d\n", (unsigned long int) entry)); if (!(sts & 1)) { /* error message already saved by findsym_handler */ ST(0) = &PL_sv_undef; } - else ST(0) = sv_2mortal(newSViv((IV) entry)); + else ST(0) = sv_2mortal(newSViv(PTR2IV(entry))); void @@ -341,9 +350,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") void * symref char * filename CODE: - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "dl_install_xsub(name=%s, symref=%x)\n", + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%x)\n", perl_name, symref)); - ST(0)=sv_2mortal(newRV((SV*)newXS(perl_name, (void(*)())symref, filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, + (void(*)(pTHX_ CV *))symref, + filename))); char * diff --git a/contrib/perl5/ext/DynaLoader/dlutils.c b/contrib/perl5/ext/DynaLoader/dlutils.c index bfa1f78ac0ad..9d88f5fdadf8 100644 --- a/contrib/perl5/ext/DynaLoader/dlutils.c +++ b/contrib/perl5/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 */ @@ -18,46 +21,77 @@ static HV *dl_loaded_files = Nullhv; /* only needed on a few systems */ #ifdef DEBUGGING -static int dl_debug = 0; /* value copied from $DynaLoader::dl_error */ +static int dl_debug = 0; /* value copied from $DynaLoader::dl_debug */ #define DLDEBUG(level,code) if (dl_debug>=level) { code; } #else #define DLDEBUG(level,code) #endif +/* Close all dlopen'd files */ static void -dl_generic_private_init(CPERLarg) /* called by dl_*.xs dl_private_init() */ +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 | G_NODEBUG); + FREETMPS; + LEAVE; + } + } +} + + +static void +dl_generic_private_init(pTHXo) /* called by dl_*.xs dl_private_init() */ { char *perl_dl_nonlazy; #ifdef DEBUGGING - dl_debug = SvIV( perl_get_sv("DynaLoader::dl_debug", 0x04) ); + SV *sv = get_sv("DynaLoader::dl_debug", 0); + dl_debug = sv ? SvIV(sv) : 0; #endif if ( (perl_dl_nonlazy = getenv("PERL_DL_NONLAZY")) != NULL ) dl_nonlazy = atoi(perl_dl_nonlazy); if (dl_nonlazy) - DLDEBUG(1,PerlIO_printf(PerlIO_stderr(), "DynaLoader bind mode is 'non-lazy'\n")); + DLDEBUG(1,PerlIO_printf(Perl_debug_log, "DynaLoader bind mode is 'non-lazy'\n")); #ifdef DL_LOADONCEONLY if (!dl_loaded_files) dl_loaded_files = newHV(); /* provide cache for dl_*.xs if needed */ #endif +#ifdef DL_UNLOAD_ALL_AT_EXIT + call_atexit(&dl_unload_all_files, (void*)0); +#endif } /* SaveError() takes printf style args and saves the result in LastError */ static void -SaveError(CPERLarg_ char* pat, ...) +SaveError(pTHXo_ char* pat, ...) { va_list args; + SV *msv; char *message; - int len; + STRLEN len; /* This code is based on croak/warn, see mess() in util.c */ va_start(args, pat); - message = mess(pat, &args); + msv = vmess(pat, &args); va_end(args); - len = strlen(message) + 1 ; /* include terminating null char */ + message = SvPV(msv,len); + len++; /* include terminating null char */ /* Allocate some memory for the error message */ if (LastError) @@ -67,6 +101,6 @@ SaveError(CPERLarg_ char* pat, ...) /* Copy message into LastError (including terminating null char) */ strncpy(LastError, message, len) ; - DLDEBUG(2,PerlIO_printf(PerlIO_stderr(), "DynaLoader: stored error msg '%s'\n",LastError)); + DLDEBUG(2,PerlIO_printf(Perl_debug_log, "DynaLoader: stored error msg '%s'\n",LastError)); } diff --git a/contrib/perl5/ext/DynaLoader/hints/aix.pl b/contrib/perl5/ext/DynaLoader/hints/aix.pl new file mode 100644 index 000000000000..7dde941b43d6 --- /dev/null +++ b/contrib/perl5/ext/DynaLoader/hints/aix.pl @@ -0,0 +1,10 @@ +# See dl_aix.xs for details. +use Config; +if ($Config{libs} =~ /-lC/ && -f '/lib/libC.a') { + $self->{CCFLAGS} = $Config{ccflags} . ' -DUSE_libC'; + if (-f '/usr/ibmcxx/include/load.h') { + $self->{CCFLAGS} .= ' -DUSE_ibmcxx_load_h'; + } elsif (-f '/usr/lpp/xlC/include/load.h') { + $self->{CCFLAGS} .= ' -DUSE_xlC_load_h'; + } +} diff --git a/contrib/perl5/ext/DynaLoader/hints/linux.pl b/contrib/perl5/ext/DynaLoader/hints/linux.pl new file mode 100644 index 000000000000..06f4f4c1f820 --- /dev/null +++ b/contrib/perl5/ext/DynaLoader/hints/linux.pl @@ -0,0 +1,4 @@ +# XXX Configure test needed. +# Some Linux releases like to hide their +$self->{CCFLAGS} = $Config{ccflags} . ' -I/usr/include/libelf' + if -f "/usr/include/libelf/nlist.h"; diff --git a/contrib/perl5/ext/DynaLoader/hints/openbsd.pl b/contrib/perl5/ext/DynaLoader/hints/openbsd.pl new file mode 100644 index 000000000000..aeaa92c5a521 --- /dev/null +++ b/contrib/perl5/ext/DynaLoader/hints/openbsd.pl @@ -0,0 +1,3 @@ +# XXX Configure test needed? +# Some OpenBSDs seem to have a dlopen() that won't accept relative paths +$self->{CCFLAGS} = $Config{ccflags} . ' -DDLOPEN_WONT_DO_RELATIVE_PATHS'; diff --git a/contrib/perl5/ext/Errno/Errno_pm.PL b/contrib/perl5/ext/Errno/Errno_pm.PL index c1f26fc1c7ee..df68dc3bda60 100644 --- a/contrib/perl5/ext/Errno/Errno_pm.PL +++ b/contrib/perl5/ext/Errno/Errno_pm.PL @@ -180,8 +180,9 @@ use Exporter (); use Config; use strict; -\$Config{'myarchname'} eq "$Config{'myarchname'}" or - die "Errno architecture ($Config{'myarchname'}) does not match executable architecture (\$Config{'myarchname'})"; +"\$Config{'archname'}-\$Config{'osvers'}" eq +"$Config{'archname'}-$Config{'osvers'}" or + die "Errno architecture ($Config{'archname'}-$Config{'osvers'}) does not match executable architecture (\$Config{'archname'}-\$Config{'osvers'})"; \$VERSION = "$VERSION"; \@ISA = qw(Exporter); @@ -230,13 +231,14 @@ sub TIEHASH { bless [] } sub FETCH { my ($self, $errname) = @_; my $proto = prototype("Errno::$errname"); + my $errno = ""; if (defined($proto) && $proto eq "") { no strict 'refs'; - return $! == &$errname; + $errno = &$errname; + $errno = 0 unless $! == $errno; } - require Carp; - Carp::confess("No errno $errname"); -} + return $errno; +} sub STORE { require Carp; @@ -251,13 +253,12 @@ sub NEXTKEY { while(($k,$v) = each %Errno::) { my $proto = prototype("Errno::$k"); last if (defined($proto) && $proto eq ""); - } $k } sub FIRSTKEY { - my $s = scalar keys %Errno::; + my $s = scalar keys %Errno::; # initialize iterator goto &NEXTKEY; } @@ -286,11 +287,11 @@ C defines and conditionally exports all the error constants defined in your system C include file. It has a single export tag, C<:POSIX>, which will export all POSIX defined error numbers. -C also makes C<%!> magic such that each element of C<%!> has a non-zero -value only if C<$!> is set to that value, eg +C also makes C<%!> magic such that each element of C<%!> has a +non-zero value only if C<$!> is set to that value. For example: use Errno; - + unless (open(FH, "/fangorn/spouse")) { if ($!{ENOENT}) { warn "Get a wife!\n"; @@ -299,6 +300,20 @@ value only if C<$!> is set to that value, eg } } +If a specified constant C does not exist on the system, C<$!{EFOO}> +returns C<"">. You may use C to check whether the +constant is available on the system. + +=head1 CAVEATS + +Importing a particular constant may not be very portable, because the +import will fail on platforms that do not have that constant. A more +portable way to set C<$!> to a valid value is to use: + + if (exists &Errno::EFOO) { + $! = &Errno::EFOO; + } + =head1 AUTHOR Graham Barr diff --git a/contrib/perl5/ext/Fcntl/Fcntl.pm b/contrib/perl5/ext/Fcntl/Fcntl.pm index f1edb8ed79d7..92103a1eaf54 100644 --- a/contrib/perl5/ext/Fcntl/Fcntl.pm +++ b/contrib/perl5/ext/Fcntl/Fcntl.pm @@ -37,55 +37,99 @@ applications the newer versions of these constants are suggested (O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK, O_SYNC, O_TRUNC). -Please refer to your native fcntl() and open() documentation to see -what constants are implemented in your system. +For ease of use also the SEEK_* constants (for seek() and sysseek(), +e.g. SEEK_END) and the S_I* constants (for chmod() and stat()) are +available for import. They can be imported either separately or using +the tags C<:seek> and C<:mode>. + +Please refer to your native fcntl(2), open(2), fseek(3), lseek(2) +(equal to Perl's seek() and sysseek(), respectively), and chmod(2) +documentation to see what constants are implemented in your system. + +See L to learn about the uses of the O_* constants +with sysopen(). + +See L and L about the SEEK_* constants. + +See L about the S_I* constants. =cut -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD); +our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $AUTOLOAD); require Exporter; -require DynaLoader; -@ISA = qw(Exporter DynaLoader); +use XSLoader (); +@ISA = qw(Exporter); $VERSION = "1.03"; # Items to export into callers namespace by default # (move infrequently used names to @EXPORT_OK below) @EXPORT = qw( FD_CLOEXEC + F_ALLOCSP + F_ALLOCSP64 + F_COMPAT + F_DUP2FD F_DUPFD F_EXLCK + F_FREESP + F_FREESP64 + F_FSYNC + F_FSYNC64 F_GETFD F_GETFL F_GETLK + F_GETLK64 F_GETOWN + F_NODNY F_POSIX + F_RDACC + F_RDDNY F_RDLCK + F_RWACC + F_RWDNY F_SETFD F_SETFL F_SETLK + F_SETLK64 F_SETLKW + F_SETLKW64 F_SETOWN + F_SHARE F_SHLCK F_UNLCK + F_UNSHARE + F_WRACC + F_WRDNY F_WRLCK O_ACCMODE + O_ALIAS O_APPEND O_ASYNC O_BINARY O_CREAT O_DEFER + O_DIRECT + O_DIRECTORY O_DSYNC O_EXCL O_EXLOCK + O_LARGEFILE O_NDELAY O_NOCTTY + O_NOFOLLOW + O_NOINHERIT O_NONBLOCK + O_RANDOM + O_RAW O_RDONLY O_RDWR + O_RSRC O_RSYNC + O_SEQUENTIAL O_SHLOCK O_SYNC + O_TEMPORARY O_TEXT O_TRUNC O_WRONLY @@ -97,28 +141,69 @@ $VERSION = "1.03"; FASYNC FCREAT FDEFER + FDSYNC FEXCL + FLARGEFILE FNDELAY FNONBLOCK + FRSYNC FSYNC FTRUNC LOCK_EX LOCK_NB LOCK_SH LOCK_UN + S_ISUID S_ISGID S_ISVTX S_ISTXT + _S_IFMT S_IFREG S_IFDIR S_IFLNK + S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT + S_IRUSR S_IWUSR S_IXUSR S_IRWXU + S_IRGRP S_IWGRP S_IXGRP S_IRWXG + S_IROTH S_IWOTH S_IXOTH S_IRWXO + S_IREAD S_IWRITE S_IEXEC + &S_ISREG &S_ISDIR &S_ISLNK &S_ISSOCK &S_ISBLK &S_ISCHR &S_ISFIFO + &S_ISWHT &S_ISENFMT &S_IFMT &S_IMODE + SEEK_SET + SEEK_CUR + SEEK_END ); # Named groups of exports %EXPORT_TAGS = ( 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)], - 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FEXCL - FNDELAY FNONBLOCK FSYNC FTRUNC)], + 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE + FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)], + 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)], + 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT + _S_IFMT S_IFREG S_IFDIR S_IFLNK + S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT + S_IRUSR S_IWUSR S_IXUSR S_IRWXU + S_IRGRP S_IWGRP S_IXGRP S_IRWXG + S_IROTH S_IWOTH S_IXOTH S_IRWXO + S_IREAD S_IWRITE S_IEXEC + S_ISREG S_ISDIR S_ISLNK S_ISSOCK + S_ISBLK S_ISCHR S_ISFIFO + S_ISWHT S_ISENFMT + S_IFMT S_IMODE + )], ); +sub S_IFMT { @_ ? ( $_[0] & _S_IFMT() ) : _S_IFMT() } +sub S_IMODE { $_[0] & 07777 } + +sub S_ISREG { ( $_[0] & _S_IFMT() ) == S_IFREG() } +sub S_ISDIR { ( $_[0] & _S_IFMT() ) == S_IFDIR() } +sub S_ISLNK { ( $_[0] & _S_IFMT() ) == S_IFLNK() } +sub S_ISSOCK { ( $_[0] & _S_IFMT() ) == S_IFSOCK() } +sub S_ISBLK { ( $_[0] & _S_IFMT() ) == S_IFBLK() } +sub S_ISCHR { ( $_[0] & _S_IFMT() ) == S_IFCHR() } +sub S_ISFIFO { ( $_[0] & _S_IFMT() ) == S_IFIFO() } +sub S_ISWHT { ( $_[0] & _S_IFMT() ) == S_IFWHT() } +sub S_ISENFMT { ( $_[0] & _S_IFMT() ) == S_IFENFMT() } + sub AUTOLOAD { (my $constname = $AUTOLOAD) =~ s/.*:://; my $val = constant($constname, 0); if ($! != 0) { - if ($! =~ /Invalid/) { + if ($! =~ /Invalid/ || $!{EINVAL}) { $AutoLoader::AUTOLOAD = $AUTOLOAD; goto &AutoLoader::AUTOLOAD; } @@ -132,6 +217,6 @@ sub AUTOLOAD { goto &$AUTOLOAD; } -bootstrap Fcntl $VERSION; +XSLoader::load 'Fcntl', $VERSION; 1; diff --git a/contrib/perl5/ext/Fcntl/Fcntl.xs b/contrib/perl5/ext/Fcntl/Fcntl.xs index 5149444b6855..b597e03c1a1b 100644 --- a/contrib/perl5/ext/Fcntl/Fcntl.xs +++ b/contrib/perl5/ext/Fcntl/Fcntl.xs @@ -1,3 +1,4 @@ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" @@ -14,6 +15,10 @@ #endif #endif +#ifdef I_UNISTD +#include +#endif + /* This comment is a kludge to get metaconfig to see the symbols VAL_O_NONBLOCK VAL_EAGAIN @@ -40,8 +45,40 @@ constant(char *name, int arg) { errno = 0; switch (*name) { + case '_': + if (strEQ(name, "_S_IFMT")) /* Yes, on name _S_IFMT return S_IFMT. */ +#ifdef S_IFMT + return S_IFMT; +#else + goto not_there; +#endif + break; case 'F': if (strnEQ(name, "F_", 2)) { + if (strEQ(name, "F_ALLOCSP")) +#ifdef F_ALLOCSP + return F_ALLOCSP; +#else + goto not_there; +#endif + if (strEQ(name, "F_ALLOCSP64")) +#ifdef F_ALLOCSP64 + return F_ALLOCSP64; +#else + goto not_there; +#endif + if (strEQ(name, "F_COMPAT")) +#ifdef F_COMPAT + return F_COMPAT; +#else + goto not_there; +#endif + if (strEQ(name, "F_DUP2FD")) +#ifdef F_DUP2FD + return F_DUP2FD; +#else + goto not_there; +#endif if (strEQ(name, "F_DUPFD")) #ifdef F_DUPFD return F_DUPFD; @@ -53,6 +90,30 @@ constant(char *name, int arg) return F_EXLCK; #else goto not_there; +#endif + if (strEQ(name, "F_FREESP")) +#ifdef F_FREESP + return F_FREESP; +#else + goto not_there; +#endif + if (strEQ(name, "F_FREESP64")) +#ifdef F_FREESP64 + return F_FREESP64; +#else + goto not_there; +#endif + if (strEQ(name, "F_FSYNC")) +#ifdef F_FSYNC + return F_FSYNC; +#else + goto not_there; +#endif + if (strEQ(name, "F_FSYNC64")) +#ifdef F_FSYNC64 + return F_FSYNC64; +#else + goto not_there; #endif if (strEQ(name, "F_GETFD")) #ifdef F_GETFD @@ -71,24 +132,60 @@ constant(char *name, int arg) return F_GETLK; #else goto not_there; +#endif + if (strEQ(name, "F_GETLK64")) +#ifdef F_GETLK64 + return F_GETLK64; +#else + goto not_there; #endif if (strEQ(name, "F_GETOWN")) #ifdef F_GETOWN return F_GETOWN; #else goto not_there; +#endif + if (strEQ(name, "F_NODNY")) +#ifdef F_NODNY + return F_NODNY; +#else + goto not_there; #endif if (strEQ(name, "F_POSIX")) #ifdef F_POSIX return F_POSIX; #else goto not_there; +#endif + if (strEQ(name, "F_RDACC")) +#ifdef F_RDACC + return F_RDACC; +#else + goto not_there; +#endif + if (strEQ(name, "F_RDDNY")) +#ifdef F_RDDNY + return F_RDDNY; +#else + goto not_there; #endif if (strEQ(name, "F_RDLCK")) #ifdef F_RDLCK return F_RDLCK; #else goto not_there; +#endif + if (strEQ(name, "F_RWACC")) +#ifdef F_RWACC + return F_RWACC; +#else + goto not_there; +#endif + if (strEQ(name, "F_RWDNY")) +#ifdef F_RWDNY + return F_RWDNY; +#else + goto not_there; #endif if (strEQ(name, "F_SETFD")) #ifdef F_SETFD @@ -107,18 +204,36 @@ constant(char *name, int arg) return F_SETLK; #else goto not_there; +#endif + if (strEQ(name, "F_SETLK64")) +#ifdef F_SETLK64 + return F_SETLK64; +#else + goto not_there; #endif if (strEQ(name, "F_SETLKW")) #ifdef F_SETLKW return F_SETLKW; #else goto not_there; +#endif + if (strEQ(name, "F_SETLKW64")) +#ifdef F_SETLKW64 + return F_SETLKW64; +#else + goto not_there; #endif if (strEQ(name, "F_SETOWN")) #ifdef F_SETOWN return F_SETOWN; #else goto not_there; +#endif + if (strEQ(name, "F_SHARE")) +#ifdef F_SHARE + return F_SHARE; +#else + goto not_there; #endif if (strEQ(name, "F_SHLCK")) #ifdef F_SHLCK @@ -131,6 +246,24 @@ constant(char *name, int arg) return F_UNLCK; #else goto not_there; +#endif + if (strEQ(name, "F_UNSHARE")) +#ifdef F_UNSHARE + return F_UNSHARE; +#else + goto not_there; +#endif + if (strEQ(name, "F_WRACC")) +#ifdef F_WRACC + return F_WRACC; +#else + goto not_there; +#endif + if (strEQ(name, "F_WRDNY")) +#ifdef F_WRDNY + return F_WRDNY; +#else + goto not_there; #endif if (strEQ(name, "F_WRLCK")) #ifdef F_WRLCK @@ -170,12 +303,24 @@ constant(char *name, int arg) return FDEFER; #else goto not_there; +#endif + if (strEQ(name, "FDSYNC")) +#ifdef FDSYNC + return FDSYNC; +#else + goto not_there; #endif if (strEQ(name, "FEXCL")) #ifdef FEXCL return FEXCL; #else goto not_there; +#endif + if (strEQ(name, "FLARGEFILE")) +#ifdef FLARGEFILE + return FLARGEFILE; +#else + goto not_there; #endif if (strEQ(name, "FNDELAY")) #ifdef FNDELAY @@ -188,6 +333,12 @@ constant(char *name, int arg) return FNONBLOCK; #else goto not_there; +#endif + if (strEQ(name, "FRSYNC")) +#ifdef FRSYNC + return FRSYNC; +#else + goto not_there; #endif if (strEQ(name, "FSYNC")) #ifdef FSYNC @@ -270,6 +421,18 @@ constant(char *name, int arg) return O_DEFER; #else goto not_there; +#endif + if (strEQ(name, "O_DIRECT")) +#ifdef O_DIRECT + return O_DIRECT; +#else + goto not_there; +#endif + if (strEQ(name, "O_DIRECTORY")) +#ifdef O_DIRECTORY + return O_DIRECTORY; +#else + goto not_there; #endif if (strEQ(name, "O_DSYNC")) #ifdef O_DSYNC @@ -288,6 +451,12 @@ constant(char *name, int arg) return O_EXLOCK; #else goto not_there; +#endif + if (strEQ(name, "O_LARGEFILE")) +#ifdef O_LARGEFILE + return O_LARGEFILE; +#else + goto not_there; #endif if (strEQ(name, "O_NDELAY")) #ifdef O_NDELAY @@ -300,12 +469,36 @@ constant(char *name, int arg) return O_NOCTTY; #else goto not_there; +#endif + if (strEQ(name, "O_NOFOLLOW")) +#ifdef O_NOFOLLOW + return O_NOFOLLOW; +#else + goto not_there; +#endif + if (strEQ(name, "O_NOINHERIT")) +#ifdef O_NOINHERIT + return O_NOINHERIT; +#else + goto not_there; #endif if (strEQ(name, "O_NONBLOCK")) #ifdef O_NONBLOCK return O_NONBLOCK; #else goto not_there; +#endif + if (strEQ(name, "O_RANDOM")) +#ifdef O_RANDOM + return O_RANDOM; +#else + goto not_there; +#endif + if (strEQ(name, "O_RAW")) +#ifdef O_RAW + return O_RAW; +#else + goto not_there; #endif if (strEQ(name, "O_RDONLY")) #ifdef O_RDONLY @@ -324,6 +517,12 @@ constant(char *name, int arg) return O_RSYNC; #else goto not_there; +#endif + if (strEQ(name, "O_SEQUENTIAL")) +#ifdef O_SEQUENTIAL + return O_SEQUENTIAL; +#else + goto not_there; #endif if (strEQ(name, "O_SHLOCK")) #ifdef O_SHLOCK @@ -336,6 +535,12 @@ constant(char *name, int arg) return O_SYNC; #else goto not_there; +#endif + if (strEQ(name, "O_TEMPORARY")) +#ifdef O_TEMPORARY + return O_TEMPORARY; +#else + goto not_there; #endif if (strEQ(name, "O_TEXT")) #ifdef O_TEXT @@ -354,10 +559,215 @@ constant(char *name, int arg) return O_WRONLY; #else goto not_there; +#endif + if (strEQ(name, "O_ALIAS")) +#ifdef O_ALIAS + return O_ALIAS; +#else + goto not_there; +#endif + if (strEQ(name, "O_RSRC")) +#ifdef O_RSRC + return O_RSRC; +#else + goto not_there; #endif } else goto not_there; break; + case 'S': + switch (name[1]) { + case '_': + if (strEQ(name, "S_ISUID")) +#ifdef S_ISUID + return S_ISUID; +#else + goto not_there; +#endif + if (strEQ(name, "S_ISGID")) +#ifdef S_ISGID + return S_ISGID; +#else + goto not_there; +#endif + if (strEQ(name, "S_ISVTX")) +#ifdef S_ISVTX + return S_ISVTX; +#else + goto not_there; +#endif + if (strEQ(name, "S_ISTXT")) +#ifdef S_ISTXT + return S_ISTXT; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFREG")) +#ifdef S_IFREG + return S_IFREG; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFDIR")) +#ifdef S_IFDIR + return S_IFDIR; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFLNK")) +#ifdef S_IFLNK + return S_IFLNK; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFSOCK")) +#ifdef S_IFSOCK + return S_IFSOCK; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFBLK")) +#ifdef S_IFBLK + return S_IFBLK; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFCHR")) +#ifdef S_IFCHR + return S_IFCHR; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFIFO")) +#ifdef S_IFIFO + return S_IFIFO; +#else + goto not_there; +#endif + if (strEQ(name, "S_IFWHT")) +#ifdef S_IFWHT + return S_IFWHT; +#else + goto not_there; +#endif + if (strEQ(name, "S_ENFMT")) +#ifdef S_ENFMT + return S_ENFMT; +#else + goto not_there; +#endif + if (strEQ(name, "S_IRUSR")) +#ifdef S_IRUSR + return S_IRUSR; +#else + goto not_there; +#endif + if (strEQ(name, "S_IWUSR")) +#ifdef S_IWUSR + return S_IWUSR; +#else + goto not_there; +#endif + if (strEQ(name, "S_IXUSR")) +#ifdef S_IXUSR + return S_IXUSR; +#else + goto not_there; +#endif + if (strEQ(name, "S_IRWXU")) +#ifdef S_IRWXU + return S_IRWXU; +#else + goto not_there; +#endif + if (strEQ(name, "S_IRGRP")) +#ifdef S_IRGRP + return S_IRGRP; +#else + goto not_there; +#endif + if (strEQ(name, "S_IWGRP")) +#ifdef S_IWGRP + return S_IWGRP; +#else + goto not_there; +#endif + if (strEQ(name, "S_IXGRP")) +#ifdef S_IXGRP + return S_IXGRP; +#else + goto not_there; +#endif + if (strEQ(name, "S_IRWXG")) +#ifdef S_IRWXG + return S_IRWXG; +#else + goto not_there; +#endif + if (strEQ(name, "S_IROTH")) +#ifdef S_IROTH + return S_IROTH; +#else + goto not_there; +#endif + if (strEQ(name, "S_IWOTH")) +#ifdef S_IWOTH + return S_IWOTH; +#else + goto not_there; +#endif + if (strEQ(name, "S_IXOTH")) +#ifdef S_IXOTH + return S_IXOTH; +#else + goto not_there; +#endif + if (strEQ(name, "S_IRWXO")) +#ifdef S_IRWXO + return S_IRWXO; +#else + goto not_there; +#endif + if (strEQ(name, "S_IREAD")) +#ifdef S_IREAD + return S_IREAD; +#else + goto not_there; +#endif + if (strEQ(name, "S_IWRITE")) +#ifdef S_IWRITE + return S_IWRITE; +#else + goto not_there; +#endif + if (strEQ(name, "S_IEXEC")) +#ifdef S_IEXEC + return S_IEXEC; +#else + goto not_there; +#endif + break; + case 'E': + if (strEQ(name, "SEEK_CUR")) +#ifdef SEEK_CUR + return SEEK_CUR; +#else + return 1; +#endif + if (strEQ(name, "SEEK_END")) +#ifdef SEEK_END + return SEEK_END; +#else + return 2; +#endif + if (strEQ(name, "SEEK_SET")) +#ifdef SEEK_SET + return SEEK_SET; +#else + return 0; +#endif + break; + } } errno = EINVAL; return 0; diff --git a/contrib/perl5/ext/File/Glob/Changes b/contrib/perl5/ext/File/Glob/Changes new file mode 100644 index 000000000000..e246c6d6840f --- /dev/null +++ b/contrib/perl5/ext/File/Glob/Changes @@ -0,0 +1,47 @@ +Revision history for Perl extension File::Glob + +0.00 Tue Dec 17 10:51:33 1996 + - original version; created by h2xs 1.16 + +0.90 Tue Dec 17 13:58:32 MST 1996 + - implemented first pass access to glob(3), + but it's clumsy and it looks like it leaks + memory. + +0.91 Thu Sep 4 08:43:55 CDT 1997 + - included CORE/config.h portability macros + - s/glob/bsd_glob/ to avoid calling and including the + system's glob stuff + - added GLOB_DEBUG for (surprise!) glob debugging + - tainted all filenames returned from &Glob::BSD::glob + +0.92 Tue Sep 30 08:31:57 CDT 1997 + - only use lstat if HAS_LSTAT is defined + - renamed the glob flags to GLOB_* + - added GLOB_CSH convenience macro for csh(1) globbing + These changes thanks to Hans Mulder + - fixed an incompatibility with csh(1) globbing where a + pattern like {A*,b,c} wouldn't expand properly + - various compatibility changes + - fixed and added tests + +0.93 Wed Jul 1 10:39:47 CDT 1998 + - renamed module to File::BSDGlob + - enabled 'globally' import directive to override the core + glob + - added Sarathy's tests for File::DosGlob +0.99 Tue Oct 12 06:42:02 PDT 1999 + - renamed module to File::Glob for incorporation into the + Perl source distribution + - ansified prototypes + - s/struct stat/Stat_t/ + - split on spaces to make <*.c *.h> work (for compatibility) +0.991 Tue Oct 26 09:48:00 BST 1999 + - Add case-insensitive matching (GLOB_NOCASE) + - Make glob_csh case insensitive by default on Win32, VMS, + OS/2, DOS, RISC OS, and Mac OS + - Add support for :case and :nocase tags + - Hack to make patterns like C:* work on DOSISH systems + - Add support for either \ or / as separators on DOSISH systems + - Limit effect of \ as a quoting operator on DOSISH systems to + when it precedes one of []{}-~\ (to minimise backslashitis). diff --git a/contrib/perl5/ext/File/Glob/Glob.pm b/contrib/perl5/ext/File/Glob/Glob.pm new file mode 100644 index 000000000000..4b7e54b9e3ea --- /dev/null +++ b/contrib/perl5/ext/File/Glob/Glob.pm @@ -0,0 +1,378 @@ +package File::Glob; + +use strict; +use Carp; +our($VERSION, @ISA, @EXPORT_OK, @EXPORT_FAIL, %EXPORT_TAGS, + $AUTOLOAD, $DEFAULT_FLAGS); + +require Exporter; +use XSLoader (); +require AutoLoader; + +@ISA = qw(Exporter AutoLoader); + +@EXPORT_OK = qw( + csh_glob + glob + GLOB_ABEND + GLOB_ALTDIRFUNC + GLOB_BRACE + GLOB_CSH + GLOB_ERR + GLOB_ERROR + GLOB_MARK + GLOB_NOCASE + GLOB_NOCHECK + GLOB_NOMAGIC + GLOB_NOSORT + GLOB_NOSPACE + GLOB_QUOTE + GLOB_TILDE +); + +%EXPORT_TAGS = ( + 'glob' => [ qw( + GLOB_ABEND + GLOB_ALTDIRFUNC + GLOB_BRACE + GLOB_CSH + GLOB_ERR + GLOB_ERROR + GLOB_MARK + GLOB_NOCASE + GLOB_NOCHECK + GLOB_NOMAGIC + GLOB_NOSORT + GLOB_NOSPACE + GLOB_QUOTE + GLOB_TILDE + glob + ) ], +); + +$VERSION = '0.991'; + +sub import { + my $i = 1; + while ($i < @_) { + if ($_[$i] =~ /^:(case|nocase|globally)$/) { + splice(@_, $i, 1); + $DEFAULT_FLAGS &= ~GLOB_NOCASE() if $1 eq 'case'; + $DEFAULT_FLAGS |= GLOB_NOCASE() if $1 eq 'nocase'; + if ($1 eq 'globally') { + no warnings; + *CORE::GLOBAL::glob = \&File::Glob::csh_glob; + } + next; + } + ++$i; + } + goto &Exporter::import; +} + +sub AUTOLOAD { + # This AUTOLOAD is used to 'autoload' constants from the constant() + # XS function. If a constant is not found then control is passed + # to the AUTOLOAD in AutoLoader. + + my $constname; + ($constname = $AUTOLOAD) =~ s/.*:://; + my $val = constant($constname, @_ ? $_[0] : 0); + if ($! != 0) { + if ($! =~ /Invalid/) { + $AutoLoader::AUTOLOAD = $AUTOLOAD; + goto &AutoLoader::AUTOLOAD; + } + else { + croak "Your vendor has not defined File::Glob macro $constname"; + } + } + eval "sub $AUTOLOAD { $val }"; + goto &$AUTOLOAD; +} + +XSLoader::load 'File::Glob', $VERSION; + +# Preloaded methods go here. + +sub GLOB_ERROR { + return constant('GLOB_ERROR', 0); +} + +sub GLOB_CSH () { GLOB_BRACE() | GLOB_NOMAGIC() | GLOB_QUOTE() | GLOB_TILDE() } + +$DEFAULT_FLAGS = GLOB_CSH(); +if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos|MacOS)$/) { + $DEFAULT_FLAGS |= GLOB_NOCASE(); +} + +# Autoload methods go after =cut, and are processed by the autosplit program. + +sub glob { + my ($pat,$flags) = @_; + $flags = $DEFAULT_FLAGS if @_ < 2; + return doglob($pat,$flags); +} + +## borrowed heavily from gsar's File::DosGlob +my %iter; +my %entries; + +sub csh_glob { + my $pat = shift; + my $cxix = shift; + my @pat; + + # glob without args defaults to $_ + $pat = $_ unless defined $pat; + + # extract patterns + if ($pat =~ /\s/) { + # XXX this is needed for compatibility with the csh + # implementation in Perl. Need to support a flag + # to disable this behavior. + require Text::ParseWords; + @pat = Text::ParseWords::parse_line('\s+',0,$pat); + } + + # assume global context if not provided one + $cxix = '_G_' unless defined $cxix; + $iter{$cxix} = 0 unless exists $iter{$cxix}; + + # if we're just beginning, do it all first + if ($iter{$cxix} == 0) { + if (@pat) { + $entries{$cxix} = [ map { doglob($_, $DEFAULT_FLAGS) } @pat ]; + } + else { + $entries{$cxix} = [ doglob($pat, $DEFAULT_FLAGS) ]; + } + } + + # chuck it all out, quick or slow + if (wantarray) { + delete $iter{$cxix}; + return @{delete $entries{$cxix}}; + } + else { + if ($iter{$cxix} = scalar @{$entries{$cxix}}) { + return shift @{$entries{$cxix}}; + } + else { + # return undef for EOL + delete $iter{$cxix}; + delete $entries{$cxix}; + return undef; + } + } +} + +1; +__END__ + +=head1 NAME + +File::Glob - Perl extension for BSD glob routine + +=head1 SYNOPSIS + + use File::Glob ':glob'; + @list = glob('*.[ch]'); + $homedir = glob('~gnat', GLOB_TILDE | GLOB_ERR); + if (GLOB_ERROR) { + # an error occurred reading $homedir + } + + ## override the core glob (core glob() does this automatically + ## by default anyway, since v5.6.0) + use File::Glob ':globally'; + my @sources = <*.{c,h,y}> + + ## override the core glob, forcing case sensitivity + use File::Glob qw(:globally :case); + my @sources = <*.{c,h,y}> + + ## override the core glob forcing case insensitivity + use File::Glob qw(:globally :nocase); + my @sources = <*.{c,h,y}> + +=head1 DESCRIPTION + +File::Glob implements the FreeBSD glob(3) routine, which is a superset +of the POSIX glob() (described in IEEE Std 1003.2 "POSIX.2"). The +glob() routine takes a mandatory C argument, and an optional +C argument, and returns a list of filenames matching the +pattern, with interpretation of the pattern modified by the C +variable. The POSIX defined flags are: + +=over 4 + +=item C + +Force glob() to return an error when it encounters a directory it +cannot open or read. Ordinarily glob() continues to find matches. + +=item C + +Each pathname that is a directory that matches the pattern has a slash +appended. + +=item C + +By default, file names are assumed to be case sensitive; this flag +makes glob() treat case differences as not significant. + +=item C + +If the pattern does not match any pathname, then glob() returns a list +consisting of only the pattern. If C is set, its effect +is present in the pattern returned. + +=item C + +By default, the pathnames are sorted in ascending ASCII order; this +flag prevents that sorting (speeding up glob()). + +=back + +The FreeBSD extensions to the POSIX standard are the following flags: + +=over 4 + +=item C + +Pre-process the string to expand C<{pat,pat,...}> strings like csh(1). +The pattern '{}' is left unexpanded for historical reasons (and csh(1) +does the same thing to ease typing of find(1) patterns). + +=item C + +Same as C but it only returns the pattern if it does not +contain any of the special characters "*", "?" or "[". C is +provided to simplify implementing the historic csh(1) globbing +behaviour and should probably not be used anywhere else. + +=item C + +Use the backslash ('\') character for quoting: every occurrence of a +backslash followed by a character in the pattern is replaced by that +character, avoiding any special interpretation of the character. +(But see below for exceptions on DOSISH systems). + +=item C + +Expand patterns that start with '~' to user name home directories. + +=item C + +For convenience, C is a synonym for +C. + +=back + +The POSIX provided C, C, and the FreeBSD +extensions C, and C flags have not been +implemented in the Perl version because they involve more complex +interaction with the underlying C structures. + +=head1 DIAGNOSTICS + +glob() returns a list of matching paths, possibly zero length. If an +error occurred, &File::Glob::GLOB_ERROR will be non-zero and C<$!> will be +set. &File::Glob::GLOB_ERROR is guaranteed to be zero if no error occurred, +or one of the following values otherwise: + +=over 4 + +=item C + +An attempt to allocate memory failed. + +=item C + +The glob was stopped because an error was encountered. + +=back + +In the case where glob() has found some matching paths, but is +interrupted by an error, glob() will return a list of filenames B +set &File::Glob::ERROR. + +Note that glob() deviates from POSIX and FreeBSD glob(3) behaviour by +not considering C and C as errors - glob() will +continue processing despite those errors, unless the C flag is +set. + +Be aware that all filenames returned from File::Glob are tainted. + +=head1 NOTES + +=over 4 + +=item * + +If you want to use multiple patterns, e.g. C, you should +probably throw them in a set as in C. This is because +the argument to glob isn't subjected to parsing by the C shell. Remember +that you can use a backslash to escape things. + +=item * + +On DOSISH systems, backslash is a valid directory separator character. +In this case, use of backslash as a quoting character (via GLOB_QUOTE) +interferes with the use of backslash as a directory separator. The +best (simplest, most portable) solution is to use forward slashes for +directory separators, and backslashes for quoting. However, this does +not match "normal practice" on these systems. As a concession to user +expectation, therefore, backslashes (under GLOB_QUOTE) only quote the +glob metacharacters '[', ']', '{', '}', '-', '~', and backslash itself. +All other backslashes are passed through unchanged. + +=item * + +Win32 users should use the real slash. If you really want to use +backslashes, consider using Sarathy's File::DosGlob, which comes with +the standard Perl distribution. + +=back + +=head1 AUTHOR + +The Perl interface was written by Nathan Torkington Egnat@frii.comE, +and is released under the artistic license. Further modifications were +made by Greg Bacon Egbacon@cs.uah.eduE and Gurusamy Sarathy +Egsar@activestate.comE. The C glob code has the +following copyright: + + Copyright (c) 1989, 1993 The Regents of the University of California. + All rights reserved. + + This code is derived from software contributed to Berkeley by + Guido van Rossum. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +=cut diff --git a/contrib/perl5/ext/File/Glob/Glob.xs b/contrib/perl5/ext/File/Glob/Glob.xs new file mode 100644 index 000000000000..e01ae7e85a94 --- /dev/null +++ b/contrib/perl5/ext/File/Glob/Glob.xs @@ -0,0 +1,209 @@ +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#include "bsd_glob.h" + +static int GLOB_ERROR = 0; + +static int +not_here(char *s) +{ + croak("%s not implemented on this architecture", s); + return -1; +} + + +static double +constant(char *name, int arg) +{ + errno = 0; + if (strlen(name) <= 5) + goto not_there; + switch (*(name+5)) { + case 'A': + if (strEQ(name, "GLOB_ABEND")) +#ifdef GLOB_ABEND + return GLOB_ABEND; +#else + goto not_there; +#endif + if (strEQ(name, "GLOB_ALTDIRFUNC")) +#ifdef GLOB_ALTDIRFUNC + return GLOB_ALTDIRFUNC; +#else + goto not_there; +#endif + break; + case 'B': + if (strEQ(name, "GLOB_BRACE")) +#ifdef GLOB_BRACE + return GLOB_BRACE; +#else + goto not_there; +#endif + break; + case 'C': + break; + case 'D': + break; + case 'E': + if (strEQ(name, "GLOB_ERR")) +#ifdef GLOB_ERR + return GLOB_ERR; +#else + goto not_there; +#endif + if (strEQ(name, "GLOB_ERROR")) + return GLOB_ERROR; + break; + case 'F': + break; + case 'G': + break; + case 'H': + break; + case 'I': + break; + case 'J': + break; + case 'K': + break; + case 'L': + break; + case 'M': + if (strEQ(name, "GLOB_MARK")) +#ifdef GLOB_MARK + return GLOB_MARK; +#else + goto not_there; +#endif + break; + case 'N': + if (strEQ(name, "GLOB_NOCASE")) +#ifdef GLOB_NOCASE + return GLOB_NOCASE; +#else + goto not_there; +#endif + if (strEQ(name, "GLOB_NOCHECK")) +#ifdef GLOB_NOCHECK + return GLOB_NOCHECK; +#else + goto not_there; +#endif + if (strEQ(name, "GLOB_NOMAGIC")) +#ifdef GLOB_NOMAGIC + return GLOB_NOMAGIC; +#else + goto not_there; +#endif + if (strEQ(name, "GLOB_NOSORT")) +#ifdef GLOB_NOSORT + return GLOB_NOSORT; +#else + goto not_there; +#endif + if (strEQ(name, "GLOB_NOSPACE")) +#ifdef GLOB_NOSPACE + return GLOB_NOSPACE; +#else + goto not_there; +#endif + break; + case 'O': + break; + case 'P': + break; + case 'Q': + if (strEQ(name, "GLOB_QUOTE")) +#ifdef GLOB_QUOTE + return GLOB_QUOTE; +#else + goto not_there; +#endif + break; + case 'R': + break; + case 'S': + break; + case 'T': + if (strEQ(name, "GLOB_TILDE")) +#ifdef GLOB_TILDE + return GLOB_TILDE; +#else + goto not_there; +#endif + break; + case 'U': + break; + case 'V': + break; + case 'W': + break; + case 'X': + break; + case 'Y': + break; + case 'Z': + break; + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +#ifdef WIN32 +#define errfunc NULL +#else +int +errfunc(const char *foo, int bar) { + return !(bar == ENOENT || bar == ENOTDIR); +} +#endif + +MODULE = File::Glob PACKAGE = File::Glob + +void +doglob(pattern,...) + char *pattern +PROTOTYPE: $;$ +PREINIT: + glob_t pglob; + int i; + int retval; + int flags = 0; + SV *tmp; +PPCODE: + { + /* allow for optional flags argument */ + if (items > 1) { + flags = (int) SvIV(ST(1)); + } + + /* call glob */ + retval = bsd_glob(pattern, flags, errfunc, &pglob); + GLOB_ERROR = retval; + + /* return any matches found */ + EXTEND(sp, pglob.gl_pathc); + for (i = 0; i < pglob.gl_pathc; i++) { + /* printf("# bsd_glob: %s\n", pglob.gl_pathv[i]); */ + tmp = sv_2mortal(newSVpvn(pglob.gl_pathv[i], + strlen(pglob.gl_pathv[i]))); + TAINT; + SvTAINT(tmp); + PUSHs(tmp); + } + + bsd_globfree(&pglob); + } + +double +constant(name,arg) + char *name + int arg +PROTOTYPE: $$ diff --git a/contrib/perl5/ext/File/Glob/Makefile.PL b/contrib/perl5/ext/File/Glob/Makefile.PL new file mode 100644 index 000000000000..98781c98e7b0 --- /dev/null +++ b/contrib/perl5/ext/File/Glob/Makefile.PL @@ -0,0 +1,21 @@ +use ExtUtils::MakeMaker; +WriteMakefile( + NAME => 'File::Glob', + VERSION_FROM => 'Glob.pm', + MAN3PODS => {}, # Pods will be built by installman. + OBJECT => 'bsd_glob$(OBJ_EXT) Glob$(OBJ_EXT)', + +## uncomment for glob debugging (will cause make test to fail) +# DEFINE => '-DGLOB_DEBUG', +# OPTIMIZE => '-g', +); +use Config; +sub MY::cflags { + package MY; + my $inherited = shift->SUPER::cflags(@_); + if ($Config::Config{archname} =~ /^aix/ and + $Config::Config{use64bitall} eq 'define') { + $inherited =~ s/\s-O\d?//m; + } + $inherited; +} diff --git a/contrib/perl5/ext/File/Glob/TODO b/contrib/perl5/ext/File/Glob/TODO new file mode 100644 index 000000000000..ef2547fa4118 --- /dev/null +++ b/contrib/perl5/ext/File/Glob/TODO @@ -0,0 +1,21 @@ +Some issues left to take care of: + + o sane ~ handling on non-Unix platforms + + Currently on non-Unix, when the glob code encounters a tilde glob + (.e.g ~user/foo or ~/.cshrc), it simply returns that pattern + without doing any expansion (meaning perl will weed it out since a + file of that name isn't likely to exist). + + Please, if you have strong feelings about how tilde expansion + should be done on your favorite non-Unix platform(s), submit a + patch. + + o path separator handling + + Guido's code contains the assumption that the path separator is one + character (byte, probably) in length. Win32 doesn't object to the + true slash as a separator. I imagine MacPerl could change the SEP + cpp #define to ":". I have no idea what it is for VMS. Again, if + you have ideas and especially patches, please feel free to share + them. diff --git a/contrib/perl5/ext/File/Glob/bsd_glob.c b/contrib/perl5/ext/File/Glob/bsd_glob.c new file mode 100644 index 000000000000..62bfe4f80c8a --- /dev/null +++ b/contrib/perl5/ext/File/Glob/bsd_glob.c @@ -0,0 +1,945 @@ +/* + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Guido van Rossum. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)glob.c 8.3 (Berkeley) 10/13/93"; +#endif /* LIBC_SCCS and not lint */ + +/* + * glob(3) -- a superset of the one defined in POSIX 1003.2. + * + * The [!...] convention to negate a range is supported (SysV, Posix, ksh). + * + * Optional extra services, controlled by flags not defined by POSIX: + * + * GLOB_QUOTE: + * Escaping convention: \ inhibits any special meaning the following + * character might have (except \ at end of string is retained). + * GLOB_MAGCHAR: + * Set in gl_flags if pattern contained a globbing character. + * GLOB_NOMAGIC: + * Same as GLOB_NOCHECK, but it will only append pattern if it did + * not contain any magic characters. [Used in csh style globbing] + * GLOB_ALTDIRFUNC: + * Use alternately specified directory access functions. + * GLOB_TILDE: + * expand ~user/foo to the /home/dir/of/user/foo + * GLOB_BRACE: + * expand {1,2}{a,b} to 1a 1b 2a 2b + * gl_matchc: + * Number of matches in the current invocation of glob. + */ + +#include +#include +#include + +#include "bsd_glob.h" +#ifdef I_PWD +# include +#else +#ifdef HAS_PASSWD + struct passwd *getpwnam(char *); + struct passwd *getpwuid(Uid_t); +#endif +#endif + +#ifndef MAXPATHLEN +# ifdef PATH_MAX +# define MAXPATHLEN PATH_MAX +# else +# define MAXPATHLEN 1024 +# endif +#endif + +#define BG_DOLLAR '$' +#define BG_DOT '.' +#define BG_EOS '\0' +#define BG_LBRACKET '[' +#define BG_NOT '!' +#define BG_QUESTION '?' +#define BG_QUOTE '\\' +#define BG_RANGE '-' +#define BG_RBRACKET ']' +#define BG_SEP '/' +#ifdef DOSISH +#define BG_SEP2 '\\' +#endif +#define BG_STAR '*' +#define BG_TILDE '~' +#define BG_UNDERSCORE '_' +#define BG_LBRACE '{' +#define BG_RBRACE '}' +#define BG_SLASH '/' +#define BG_COMMA ',' + +#ifndef GLOB_DEBUG + +#define M_QUOTE 0x8000 +#define M_PROTECT 0x4000 +#define M_MASK 0xffff +#define M_ASCII 0x00ff + +typedef U16 Char; + +#else + +#define M_QUOTE 0x80 +#define M_PROTECT 0x40 +#define M_MASK 0xff +#define M_ASCII 0x7f + +typedef U8 Char; + +#endif /* !GLOB_DEBUG */ + + +#define CHAR(c) ((Char)((c)&M_ASCII)) +#define META(c) ((Char)((c)|M_QUOTE)) +#define M_ALL META('*') +#define M_END META(']') +#define M_NOT META('!') +#define M_ONE META('?') +#define M_RNG META('-') +#define M_SET META('[') +#define ismeta(c) (((c)&M_QUOTE) != 0) + + +static int compare(const void *, const void *); +static int ci_compare(const void *, const void *); +static void g_Ctoc(const Char *, char *); +static int g_lstat(Char *, Stat_t *, glob_t *); +static DIR *g_opendir(Char *, glob_t *); +static Char *g_strchr(Char *, int); +#ifdef notdef +static Char *g_strcat(Char *, const Char *); +#endif +static int g_stat(Char *, Stat_t *, glob_t *); +static int glob0(const Char *, glob_t *); +static int glob1(Char *, glob_t *); +static int glob2(Char *, Char *, Char *, glob_t *); +static int glob3(Char *, Char *, Char *, Char *, glob_t *); +static int globextend(const Char *, glob_t *); +static const Char * globtilde(const Char *, Char *, glob_t *); +static int globexp1(const Char *, glob_t *); +static int globexp2(const Char *, const Char *, glob_t *, int *); +static int match(Char *, Char *, Char *, int); +#ifdef GLOB_DEBUG +static void qprintf(const char *, Char *); +#endif /* GLOB_DEBUG */ + +#ifdef PERL_IMPLICIT_CONTEXT +static Direntry_t * my_readdir(DIR*); + +static Direntry_t * +my_readdir(DIR *d) +{ + return PerlDir_read(d); +} +#else +#define my_readdir readdir +#endif + +int +bsd_glob(const char *pattern, int flags, + int (*errfunc)(const char *, int), glob_t *pglob) +{ + const U8 *patnext; + int c; + Char *bufnext, *bufend, patbuf[MAXPATHLEN+1]; + + patnext = (U8 *) pattern; + if (!(flags & GLOB_APPEND)) { + pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; + if (!(flags & GLOB_DOOFFS)) + pglob->gl_offs = 0; + } + pglob->gl_flags = flags & ~GLOB_MAGCHAR; + pglob->gl_errfunc = errfunc; + pglob->gl_matchc = 0; + + bufnext = patbuf; + bufend = bufnext + MAXPATHLEN; +#ifdef DOSISH + /* Nasty hack to treat patterns like "C:*" correctly. In this + * case, the * should match any file in the current directory + * on the C: drive. However, the glob code does not treat the + * colon specially, so it looks for files beginning "C:" in + * the current directory. To fix this, change the pattern to + * add an explicit "./" at the start (just after the drive + * letter and colon - ie change to "C:./*"). + */ + if (isalpha(pattern[0]) && pattern[1] == ':' && + pattern[2] != BG_SEP && pattern[2] != BG_SEP2 && + bufend - bufnext > 4) { + *bufnext++ = pattern[0]; + *bufnext++ = ':'; + *bufnext++ = '.'; + *bufnext++ = BG_SEP; + patnext += 2; + } +#endif + if (flags & GLOB_QUOTE) { + /* Protect the quoted characters. */ + while (bufnext < bufend && (c = *patnext++) != BG_EOS) + if (c == BG_QUOTE) { +#ifdef DOSISH + /* To avoid backslashitis on Win32, + * we only treat \ as a quoting character + * if it precedes one of the + * metacharacters []-{}~\ + */ + if ((c = *patnext++) != '[' && c != ']' && + c != '-' && c != '{' && c != '}' && + c != '~' && c != '\\') { +#else + if ((c = *patnext++) == BG_EOS) { +#endif + c = BG_QUOTE; + --patnext; + } + *bufnext++ = c | M_PROTECT; + } + else + *bufnext++ = c; + } + else + while (bufnext < bufend && (c = *patnext++) != BG_EOS) + *bufnext++ = c; + *bufnext = BG_EOS; + + if (flags & GLOB_BRACE) + return globexp1(patbuf, pglob); + else + return glob0(patbuf, pglob); +} + +/* + * Expand recursively a glob {} pattern. When there is no more expansion + * invoke the standard globbing routine to glob the rest of the magic + * characters + */ +static int globexp1(const Char *pattern, glob_t *pglob) +{ + const Char* ptr = pattern; + int rv; + + /* Protect a single {}, for find(1), like csh */ + if (pattern[0] == BG_LBRACE && pattern[1] == BG_RBRACE && pattern[2] == BG_EOS) + return glob0(pattern, pglob); + + while ((ptr = (const Char *) g_strchr((Char *) ptr, BG_LBRACE)) != NULL) + if (!globexp2(ptr, pattern, pglob, &rv)) + return rv; + + return glob0(pattern, pglob); +} + + +/* + * Recursive brace globbing helper. Tries to expand a single brace. + * If it succeeds then it invokes globexp1 with the new pattern. + * If it fails then it tries to glob the rest of the pattern and returns. + */ +static int globexp2(const Char *ptr, const Char *pattern, + glob_t *pglob, int *rv) +{ + int i; + Char *lm, *ls; + const Char *pe, *pm, *pl; + Char patbuf[MAXPATHLEN + 1]; + + /* copy part up to the brace */ + for (lm = patbuf, pm = pattern; pm != ptr; *lm++ = *pm++) + continue; + ls = lm; + + /* Find the balanced brace */ + for (i = 0, pe = ++ptr; *pe; pe++) + if (*pe == BG_LBRACKET) { + /* Ignore everything between [] */ + for (pm = pe++; *pe != BG_RBRACKET && *pe != BG_EOS; pe++) + continue; + if (*pe == BG_EOS) { + /* + * We could not find a matching BG_RBRACKET. + * Ignore and just look for BG_RBRACE + */ + pe = pm; + } + } + else if (*pe == BG_LBRACE) + i++; + else if (*pe == BG_RBRACE) { + if (i == 0) + break; + i--; + } + + /* Non matching braces; just glob the pattern */ + if (i != 0 || *pe == BG_EOS) { + *rv = glob0(patbuf, pglob); + return 0; + } + + for (i = 0, pl = pm = ptr; pm <= pe; pm++) + switch (*pm) { + case BG_LBRACKET: + /* Ignore everything between [] */ + for (pl = pm++; *pm != BG_RBRACKET && *pm != BG_EOS; pm++) + continue; + if (*pm == BG_EOS) { + /* + * We could not find a matching BG_RBRACKET. + * Ignore and just look for BG_RBRACE + */ + pm = pl; + } + break; + + case BG_LBRACE: + i++; + break; + + case BG_RBRACE: + if (i) { + i--; + break; + } + /* FALLTHROUGH */ + case BG_COMMA: + if (i && *pm == BG_COMMA) + break; + else { + /* Append the current string */ + for (lm = ls; (pl < pm); *lm++ = *pl++) + continue; + /* + * Append the rest of the pattern after the + * closing brace + */ + for (pl = pe + 1; (*lm++ = *pl++) != BG_EOS;) + continue; + + /* Expand the current pattern */ +#ifdef GLOB_DEBUG + qprintf("globexp2:", patbuf); +#endif /* GLOB_DEBUG */ + *rv = globexp1(patbuf, pglob); + + /* move after the comma, to the next string */ + pl = pm + 1; + } + break; + + default: + break; + } + *rv = 0; + return 0; +} + + + +/* + * expand tilde from the passwd file. + */ +static const Char * +globtilde(const Char *pattern, Char *patbuf, glob_t *pglob) +{ + struct passwd *pwd; + char *h; + const Char *p; + Char *b; + + if (*pattern != BG_TILDE || !(pglob->gl_flags & GLOB_TILDE)) + return pattern; + + /* Copy up to the end of the string or / */ + for (p = pattern + 1, h = (char *) patbuf; *p && *p != BG_SLASH; + *h++ = *p++) + continue; + + *h = BG_EOS; + + if (((char *) patbuf)[0] == BG_EOS) { + /* + * handle a plain ~ or ~/ by expanding $HOME + * first and then trying the password file + */ + if ((h = getenv("HOME")) == NULL) { +#ifdef HAS_PASSWD + if ((pwd = getpwuid(getuid())) == NULL) + return pattern; + else + h = pwd->pw_dir; +#else + return pattern; +#endif + } + } + else { + /* + * Expand a ~user + */ +#ifdef HAS_PASSWD + if ((pwd = getpwnam((char*) patbuf)) == NULL) + return pattern; + else + h = pwd->pw_dir; +#else + return pattern; +#endif + } + + /* Copy the home directory */ + for (b = patbuf; *h; *b++ = *h++) + continue; + + /* Append the rest of the pattern */ + while ((*b++ = *p++) != BG_EOS) + continue; + + return patbuf; +} + + +/* + * The main glob() routine: compiles the pattern (optionally processing + * quotes), calls glob1() to do the real pattern matching, and finally + * sorts the list (unless unsorted operation is requested). Returns 0 + * if things went well, nonzero if errors occurred. It is not an error + * to find no matches. + */ +static int +glob0(const Char *pattern, glob_t *pglob) +{ + const Char *qpat, *qpatnext; + int c, err, oldflags, oldpathc; + Char *bufnext, patbuf[MAXPATHLEN+1]; + + qpat = globtilde(pattern, patbuf, pglob); + qpatnext = qpat; + oldflags = pglob->gl_flags; + oldpathc = pglob->gl_pathc; + bufnext = patbuf; + + /* We don't need to check for buffer overflow any more. */ + while ((c = *qpatnext++) != BG_EOS) { + switch (c) { + case BG_LBRACKET: + c = *qpatnext; + if (c == BG_NOT) + ++qpatnext; + if (*qpatnext == BG_EOS || + g_strchr((Char *) qpatnext+1, BG_RBRACKET) == NULL) { + *bufnext++ = BG_LBRACKET; + if (c == BG_NOT) + --qpatnext; + break; + } + *bufnext++ = M_SET; + if (c == BG_NOT) + *bufnext++ = M_NOT; + c = *qpatnext++; + do { + *bufnext++ = CHAR(c); + if (*qpatnext == BG_RANGE && + (c = qpatnext[1]) != BG_RBRACKET) { + *bufnext++ = M_RNG; + *bufnext++ = CHAR(c); + qpatnext += 2; + } + } while ((c = *qpatnext++) != BG_RBRACKET); + pglob->gl_flags |= GLOB_MAGCHAR; + *bufnext++ = M_END; + break; + case BG_QUESTION: + pglob->gl_flags |= GLOB_MAGCHAR; + *bufnext++ = M_ONE; + break; + case BG_STAR: + pglob->gl_flags |= GLOB_MAGCHAR; + /* collapse adjacent stars to one, + * to avoid exponential behavior + */ + if (bufnext == patbuf || bufnext[-1] != M_ALL) + *bufnext++ = M_ALL; + break; + default: + *bufnext++ = CHAR(c); + break; + } + } + *bufnext = BG_EOS; +#ifdef GLOB_DEBUG + qprintf("glob0:", patbuf); +#endif /* GLOB_DEBUG */ + + if ((err = glob1(patbuf, pglob)) != 0) { + pglob->gl_flags = oldflags; + return(err); + } + + /* + * If there was no match we are going to append the pattern + * if GLOB_NOCHECK was specified or if GLOB_NOMAGIC was specified + * and the pattern did not contain any magic characters + * GLOB_NOMAGIC is there just for compatibility with csh. + */ + if (pglob->gl_pathc == oldpathc && + ((pglob->gl_flags & GLOB_NOCHECK) || + ((pglob->gl_flags & GLOB_NOMAGIC) && + !(pglob->gl_flags & GLOB_MAGCHAR)))) + { +#ifdef GLOB_DEBUG + printf("calling globextend from glob0\n"); +#endif /* GLOB_DEBUG */ + pglob->gl_flags = oldflags; + return(globextend(qpat, pglob)); + } + else if (!(pglob->gl_flags & GLOB_NOSORT)) + qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc, + pglob->gl_pathc - oldpathc, sizeof(char *), + (pglob->gl_flags & GLOB_NOCASE) ? ci_compare : compare); + pglob->gl_flags = oldflags; + return(0); +} + +static int +ci_compare(const void *p, const void *q) +{ + const char *pp = *(const char **)p; + const char *qq = *(const char **)q; + while (*pp && *qq) { + if (tolower(*pp) != tolower(*qq)) + break; + ++pp; + ++qq; + } + return (tolower(*pp) - tolower(*qq)); +} + +static int +compare(const void *p, const void *q) +{ + return(strcmp(*(char **)p, *(char **)q)); +} + +static int +glob1(Char *pattern, glob_t *pglob) +{ + Char pathbuf[MAXPATHLEN+1]; + + /* A null pathname is invalid -- POSIX 1003.1 sect. 2.4. */ + if (*pattern == BG_EOS) + return(0); + return(glob2(pathbuf, pathbuf, pattern, pglob)); +} + +/* + * The functions glob2 and glob3 are mutually recursive; there is one level + * of recursion for each segment in the pattern that contains one or more + * meta characters. + */ +static int +glob2(Char *pathbuf, Char *pathend, Char *pattern, glob_t *pglob) +{ + Stat_t sb; + Char *p, *q; + int anymeta; + + /* + * Loop over pattern segments until end of pattern or until + * segment with meta character found. + */ + for (anymeta = 0;;) { + if (*pattern == BG_EOS) { /* End of pattern? */ + *pathend = BG_EOS; + + if (g_lstat(pathbuf, &sb, pglob)) + return(0); + + if (((pglob->gl_flags & GLOB_MARK) && + pathend[-1] != BG_SEP +#ifdef DOSISH + && pathend[-1] != BG_SEP2 +#endif + ) && (S_ISDIR(sb.st_mode) + || (S_ISLNK(sb.st_mode) && + (g_stat(pathbuf, &sb, pglob) == 0) && + S_ISDIR(sb.st_mode)))) { + *pathend++ = BG_SEP; + *pathend = BG_EOS; + } + ++pglob->gl_matchc; +#ifdef GLOB_DEBUG + printf("calling globextend from glob2\n"); +#endif /* GLOB_DEBUG */ + return(globextend(pathbuf, pglob)); + } + + /* Find end of next segment, copy tentatively to pathend. */ + q = pathend; + p = pattern; + while (*p != BG_EOS && *p != BG_SEP +#ifdef DOSISH + && *p != BG_SEP2 +#endif + ) { + if (ismeta(*p)) + anymeta = 1; + *q++ = *p++; + } + + if (!anymeta) { /* No expansion, do next segment. */ + pathend = q; + pattern = p; + while (*pattern == BG_SEP +#ifdef DOSISH + || *pattern == BG_SEP2 +#endif + ) + *pathend++ = *pattern++; + } else /* Need expansion, recurse. */ + return(glob3(pathbuf, pathend, pattern, p, pglob)); + } + /* NOTREACHED */ +} + +static int +glob3(Char *pathbuf, Char *pathend, Char *pattern, + Char *restpattern, glob_t *pglob) +{ + register Direntry_t *dp; + DIR *dirp; + int err; + int nocase; + char buf[MAXPATHLEN]; + + /* + * The readdirfunc declaration can't be prototyped, because it is + * assigned, below, to two functions which are prototyped in glob.h + * and dirent.h as taking pointers to differently typed opaque + * structures. + */ + Direntry_t *(*readdirfunc)(); + + *pathend = BG_EOS; + errno = 0; + +#ifdef VMS + { + Char *q = pathend; + if (q - pathbuf > 5) { + q -= 5; + if (q[0] == '.' && tolower(q[1]) == 'd' && tolower(q[2]) == 'i' + && tolower(q[3]) == 'r' && q[4] == '/') + { + q[0] = '/'; + q[1] = BG_EOS; + pathend = q+1; + } + } + } +#endif + if ((dirp = g_opendir(pathbuf, pglob)) == NULL) { + /* TODO: don't call for ENOENT or ENOTDIR? */ + if (pglob->gl_errfunc) { + g_Ctoc(pathbuf, buf); + if (pglob->gl_errfunc(buf, errno) || + (pglob->gl_flags & GLOB_ERR)) + return (GLOB_ABEND); + } + return(0); + } + + err = 0; + nocase = ((pglob->gl_flags & GLOB_NOCASE) != 0); + + /* Search directory for matching names. */ + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + readdirfunc = pglob->gl_readdir; + else + readdirfunc = my_readdir; + while ((dp = (*readdirfunc)(dirp))) { + register U8 *sc; + register Char *dc; + + /* Initial BG_DOT must be matched literally. */ + if (dp->d_name[0] == BG_DOT && *pattern != BG_DOT) + continue; + for (sc = (U8 *) dp->d_name, dc = pathend; + (*dc++ = *sc++) != BG_EOS;) + continue; + if (!match(pathend, pattern, restpattern, nocase)) { + *pathend = BG_EOS; + continue; + } + err = glob2(pathbuf, --dc, restpattern, pglob); + if (err) + break; + } + + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + (*pglob->gl_closedir)(dirp); + else + PerlDir_close(dirp); + return(err); +} + + +/* + * Extend the gl_pathv member of a glob_t structure to accomodate a new item, + * add the new item, and update gl_pathc. + * + * This assumes the BSD realloc, which only copies the block when its size + * crosses a power-of-two boundary; for v7 realloc, this would cause quadratic + * behavior. + * + * Return 0 if new item added, error code if memory couldn't be allocated. + * + * Invariant of the glob_t structure: + * Either gl_pathc is zero and gl_pathv is NULL; or gl_pathc > 0 and + * gl_pathv points to (gl_offs + gl_pathc + 1) items. + */ +static int +globextend(const Char *path, glob_t *pglob) +{ + register char **pathv; + register int i; + char *copy; + const Char *p; + +#ifdef GLOB_DEBUG + printf("Adding "); + for (p = path; *p; p++) + (void)printf("%c", CHAR(*p)); + printf("\n"); +#endif /* GLOB_DEBUG */ + + if (pglob->gl_pathv) + pathv = Renew(pglob->gl_pathv, + (2 + pglob->gl_pathc + pglob->gl_offs),char*); + else + New(0,pathv,(2 + pglob->gl_pathc + pglob->gl_offs),char*); + if (pathv == NULL) + return(GLOB_NOSPACE); + + if (pglob->gl_pathv == NULL && pglob->gl_offs > 0) { + /* first time around -- clear initial gl_offs items */ + pathv += pglob->gl_offs; + for (i = pglob->gl_offs; --i >= 0; ) + *--pathv = NULL; + } + pglob->gl_pathv = pathv; + + for (p = path; *p++;) + continue; + New(0, copy, p-path, char); + if (copy != NULL) { + g_Ctoc(path, copy); + pathv[pglob->gl_offs + pglob->gl_pathc++] = copy; + } + pathv[pglob->gl_offs + pglob->gl_pathc] = NULL; + return(copy == NULL ? GLOB_NOSPACE : 0); +} + + +/* + * pattern matching function for filenames. Each occurrence of the * + * pattern causes a recursion level. + */ +static int +match(register Char *name, register Char *pat, register Char *patend, int nocase) +{ + int ok, negate_range; + Char c, k; + + while (pat < patend) { + c = *pat++; + switch (c & M_MASK) { + case M_ALL: + if (pat == patend) + return(1); + do + if (match(name, pat, patend, nocase)) + return(1); + while (*name++ != BG_EOS); + return(0); + case M_ONE: + if (*name++ == BG_EOS) + return(0); + break; + case M_SET: + ok = 0; + if ((k = *name++) == BG_EOS) + return(0); + if ((negate_range = ((*pat & M_MASK) == M_NOT)) != BG_EOS) + ++pat; + while (((c = *pat++) & M_MASK) != M_END) + if ((*pat & M_MASK) == M_RNG) { + if (nocase) { + if (tolower(c) <= tolower(k) && tolower(k) <= tolower(pat[1])) + ok = 1; + } else { + if (c <= k && k <= pat[1]) + ok = 1; + } + pat += 2; + } else if (nocase ? (tolower(c) == tolower(k)) : (c == k)) + ok = 1; + if (ok == negate_range) + return(0); + break; + default: + k = *name++; + if (nocase ? (tolower(k) != tolower(c)) : (k != c)) + return(0); + break; + } + } + return(*name == BG_EOS); +} + +/* Free allocated data belonging to a glob_t structure. */ +void +bsd_globfree(glob_t *pglob) +{ + register int i; + register char **pp; + + if (pglob->gl_pathv != NULL) { + pp = pglob->gl_pathv + pglob->gl_offs; + for (i = pglob->gl_pathc; i--; ++pp) + if (*pp) + Safefree(*pp); + Safefree(pglob->gl_pathv); + } +} + +static DIR * +g_opendir(register Char *str, glob_t *pglob) +{ + char buf[MAXPATHLEN]; + + if (!*str) + strcpy(buf, "."); + else + g_Ctoc(str, buf); + + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + return((*pglob->gl_opendir)(buf)); + else + return(PerlDir_open(buf)); +} + +static int +g_lstat(register Char *fn, Stat_t *sb, glob_t *pglob) +{ + char buf[MAXPATHLEN]; + + g_Ctoc(fn, buf); + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + return((*pglob->gl_lstat)(buf, sb)); +#ifdef HAS_LSTAT + return(PerlLIO_lstat(buf, sb)); +#else + return(PerlLIO_stat(buf, sb)); +#endif /* HAS_LSTAT */ +} + +static int +g_stat(register Char *fn, Stat_t *sb, glob_t *pglob) +{ + char buf[MAXPATHLEN]; + + g_Ctoc(fn, buf); + if (pglob->gl_flags & GLOB_ALTDIRFUNC) + return((*pglob->gl_stat)(buf, sb)); + return(PerlLIO_stat(buf, sb)); +} + +static Char * +g_strchr(Char *str, int ch) +{ + do { + if (*str == ch) + return (str); + } while (*str++); + return (NULL); +} + +#ifdef notdef +static Char * +g_strcat(Char *dst, const Char *src) +{ + Char *sdst = dst; + + while (*dst++) + continue; + --dst; + while((*dst++ = *src++) != BG_EOS) + continue; + + return (sdst); +} +#endif + +static void +g_Ctoc(register const Char *str, char *buf) +{ + register char *dc; + + for (dc = buf; (*dc++ = *str++) != BG_EOS;) + continue; +} + +#ifdef GLOB_DEBUG +static void +qprintf(const char *str, register Char *s) +{ + register Char *p; + + (void)printf("%s:\n", str); + for (p = s; *p; p++) + (void)printf("%c", CHAR(*p)); + (void)printf("\n"); + for (p = s; *p; p++) + (void)printf("%c", *p & M_PROTECT ? '"' : ' '); + (void)printf("\n"); + for (p = s; *p; p++) + (void)printf("%c", ismeta(*p) ? '_' : ' '); + (void)printf("\n"); +} +#endif /* GLOB_DEBUG */ diff --git a/contrib/perl5/ext/File/Glob/bsd_glob.h b/contrib/perl5/ext/File/Glob/bsd_glob.h new file mode 100644 index 000000000000..10d1de534c64 --- /dev/null +++ b/contrib/perl5/ext/File/Glob/bsd_glob.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Guido van Rossum. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)glob.h 8.1 (Berkeley) 6/2/93 + */ + +#ifndef _BSD_GLOB_H_ +#define _BSD_GLOB_H_ + +/* #include */ + +typedef struct { + int gl_pathc; /* Count of total paths so far. */ + int gl_matchc; /* Count of paths matching pattern. */ + int gl_offs; /* Reserved at beginning of gl_pathv. */ + int gl_flags; /* Copy of flags parameter to glob. */ + char **gl_pathv; /* List of paths matching pattern. */ + /* Copy of errfunc parameter to glob. */ + int (*gl_errfunc)(const char *, int); + + /* + * Alternate filesystem access methods for glob; replacement + * versions of closedir(3), readdir(3), opendir(3), stat(2) + * and lstat(2). + */ + void (*gl_closedir)(void *); + Direntry_t *(*gl_readdir)(void *); + void *(*gl_opendir)(const char *); + int (*gl_lstat)(const char *, Stat_t *); + int (*gl_stat)(const char *, Stat_t *); +} glob_t; + +#define GLOB_APPEND 0x0001 /* Append to output from previous call. */ +#define GLOB_DOOFFS 0x0002 /* Use gl_offs. */ +#define GLOB_ERR 0x0004 /* Return on error. */ +#define GLOB_MARK 0x0008 /* Append / to matching directories. */ +#define GLOB_NOCHECK 0x0010 /* Return pattern itself if nothing matches. */ +#define GLOB_NOSORT 0x0020 /* Don't sort. */ + +#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */ +#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */ +#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */ +#define GLOB_NOMAGIC 0x0200 /* GLOB_NOCHECK without magic chars (csh). */ +#define GLOB_QUOTE 0x0400 /* Quote special chars with \. */ +#define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */ +#define GLOB_NOCASE 0x1000 /* Treat filenames without regard for case. */ + +#define GLOB_NOSPACE (-1) /* Malloc call failed. */ +#define GLOB_ABEND (-2) /* Unignored error. */ + +int bsd_glob(const char *, int, int (*)(const char *, int), glob_t *); +void bsd_globfree(glob_t *); + +#endif /* !_BSD_GLOB_H_ */ diff --git a/contrib/perl5/ext/GDBM_File/GDBM_File.pm b/contrib/perl5/ext/GDBM_File/GDBM_File.pm index 09df4373fb65..ab866eecabed 100644 --- a/contrib/perl5/ext/GDBM_File/GDBM_File.pm +++ b/contrib/perl5/ext/GDBM_File/GDBM_File.pm @@ -33,21 +33,21 @@ The available functions and the gdbm/perl interface need to be documented. =head1 SEE ALSO -L, L. +L, L, L. =cut package GDBM_File; use strict; -use vars qw($VERSION @ISA @EXPORT $AUTOLOAD); +our($VERSION, @ISA, @EXPORT, $AUTOLOAD); require Carp; require Tie::Hash; require Exporter; use AutoLoader; -require DynaLoader; -@ISA = qw(Tie::Hash Exporter DynaLoader); +use XSLoader (); +@ISA = qw(Tie::Hash Exporter); @EXPORT = qw( GDBM_CACHESIZE GDBM_FAST @@ -59,14 +59,14 @@ require DynaLoader; GDBM_WRITER ); -$VERSION = "1.00"; +$VERSION = "1.03"; sub AUTOLOAD { my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my $val = constant($constname, @_ ? $_[0] : 0); if ($! != 0) { - if ($! =~ /Invalid/) { + if ($! =~ /Invalid/ || $!{EINVAL}) { $AutoLoader::AUTOLOAD = $AUTOLOAD; goto &AutoLoader::AUTOLOAD; } @@ -78,7 +78,7 @@ sub AUTOLOAD { goto &$AUTOLOAD; } -bootstrap GDBM_File $VERSION; +XSLoader::load 'GDBM_File', $VERSION; # Preloaded methods go here. Autoload methods go after __END__, and are # processed by the autosplit program. diff --git a/contrib/perl5/ext/GDBM_File/GDBM_File.xs b/contrib/perl5/ext/GDBM_File/GDBM_File.xs index ac1ca8c68d9b..870f056c9bf0 100644 --- a/contrib/perl5/ext/GDBM_File/GDBM_File.xs +++ b/contrib/perl5/ext/GDBM_File/GDBM_File.xs @@ -5,20 +5,40 @@ #include #include -typedef GDBM_FILE GDBM_File; +typedef struct { + GDBM_FILE dbp ; + SV * filter_fetch_key ; + SV * filter_store_key ; + SV * filter_fetch_value ; + SV * filter_store_value ; + int filtering ; + } GDBM_File_type; + +typedef GDBM_File_type * GDBM_File ; +typedef datum datum_key ; +typedef datum datum_value ; + +#define ckFilter(arg,type,name) \ + if (db->type) { \ + SV * save_defsv ; \ + /* printf("filtering %s\n", name) ;*/ \ + if (db->filtering) \ + croak("recursion detected in %s", name) ; \ + db->filtering = TRUE ; \ + save_defsv = newSVsv(DEFSV) ; \ + sv_setsv(DEFSV, arg) ; \ + PUSHMARK(sp) ; \ + (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS); \ + sv_setsv(arg, DEFSV) ; \ + sv_setsv(DEFSV, save_defsv) ; \ + SvREFCNT_dec(save_defsv) ; \ + db->filtering = FALSE ; \ + /*printf("end of filtering %s\n", name) ;*/ \ + } + + #define GDBM_BLOCKSIZE 0 /* gdbm defaults to stat blocksize */ -#define gdbm_TIEHASH(dbtype, name, read_write, mode, fatal_func) \ - gdbm_open(name, GDBM_BLOCKSIZE, read_write, mode, fatal_func) - -#define gdbm_FETCH(db,key) gdbm_fetch(db,key) -#define gdbm_STORE(db,key,value,flags) gdbm_store(db,key,value,flags) -#define gdbm_DELETE(db,key) gdbm_delete(db,key) -#define gdbm_FIRSTKEY(db) gdbm_firstkey(db) -#define gdbm_NEXTKEY(db,key) gdbm_nextkey(db,key) -#define gdbm_EXISTS(db,key) gdbm_exists(db,key) - -typedef datum gdatum; typedef void (*FATALFUNC)(); @@ -29,6 +49,21 @@ not_here(char *s) return -1; } +/* GDBM allocates the datum with system malloc() and expects the user + * to free() it. So we either have to free() it immediately, or have + * perl free() it when it deallocates the SV, depending on whether + * perl uses malloc()/free() or not. */ +static void +output_datum(pTHX_ SV *arg, char *str, int size) +{ +#if !defined(MYMALLOC) || (defined(MYMALLOC) && defined(PERL_POLLUTE_MALLOC)) + sv_usepvn(arg, str, size); +#else + sv_setpvn(arg, str, size); + safesysfree(str); +#endif +} + /* Versions of gdbm prior to 1.7x might not have the gdbm_sync, gdbm_exists, and gdbm_setopt functions. Apparently Slackware (Linux) 2.1 contains gdbm-1.5 (which dates back to 1991). @@ -174,7 +209,23 @@ gdbm_TIEHASH(dbtype, name, read_write, mode, fatal_func = (FATALFUNC)croak) int read_write int mode FATALFUNC fatal_func + CODE: + { + GDBM_FILE dbp ; + RETVAL = NULL ; + if (dbp = gdbm_open(name, GDBM_BLOCKSIZE, read_write, mode, fatal_func)) { + RETVAL = (GDBM_File)safemalloc(sizeof(GDBM_File_type)) ; + Zero(RETVAL, 1, GDBM_File_type) ; + RETVAL->dbp = dbp ; + } + + } + OUTPUT: + RETVAL + + +#define gdbm_close(db) gdbm_close(db->dbp) void gdbm_close(db) GDBM_File db @@ -185,17 +236,20 @@ gdbm_DESTROY(db) GDBM_File db CODE: gdbm_close(db); + safefree(db); -gdatum +#define gdbm_FETCH(db,key) gdbm_fetch(db->dbp,key) +datum_value gdbm_FETCH(db, key) GDBM_File db - datum key + datum_key key +#define gdbm_STORE(db,key,value,flags) gdbm_store(db->dbp,key,value,flags) int gdbm_STORE(db, key, value, flags = GDBM_REPLACE) GDBM_File db - datum key - datum value + datum_key key + datum_value value int flags CLEANUP: if (RETVAL) { @@ -203,37 +257,43 @@ gdbm_STORE(db, key, value, flags = GDBM_REPLACE) croak("No write permission to gdbm file"); croak("gdbm store returned %d, errno %d, key \"%.*s\"", RETVAL,errno,key.dsize,key.dptr); - /* gdbm_clearerr(db); */ } +#define gdbm_DELETE(db,key) gdbm_delete(db->dbp,key) int gdbm_DELETE(db, key) GDBM_File db - datum key + datum_key key -gdatum +#define gdbm_FIRSTKEY(db) gdbm_firstkey(db->dbp) +datum_key gdbm_FIRSTKEY(db) GDBM_File db -gdatum +#define gdbm_NEXTKEY(db,key) gdbm_nextkey(db->dbp,key) +datum_key gdbm_NEXTKEY(db, key) GDBM_File db - datum key + datum_key key +#define gdbm_reorganize(db) gdbm_reorganize(db->dbp) int gdbm_reorganize(db) GDBM_File db +#define gdbm_sync(db) gdbm_sync(db->dbp) void gdbm_sync(db) GDBM_File db +#define gdbm_EXISTS(db,key) gdbm_exists(db->dbp,key) int gdbm_EXISTS(db, key) GDBM_File db - datum key + datum_key key +#define gdbm_setopt(db,optflag, optval, optlen) gdbm_setopt(db->dbp,optflag, optval, optlen) int gdbm_setopt (db, optflag, optval, optlen) GDBM_File db @@ -241,3 +301,55 @@ gdbm_setopt (db, optflag, optval, optlen) int &optval int optlen + +#define setFilter(type) \ + { \ + if (db->type) \ + RETVAL = sv_mortalcopy(db->type) ; \ + ST(0) = RETVAL ; \ + if (db->type && (code == &PL_sv_undef)) { \ + SvREFCNT_dec(db->type) ; \ + db->type = NULL ; \ + } \ + else if (code) { \ + if (db->type) \ + sv_setsv(db->type, code) ; \ + else \ + db->type = newSVsv(code) ; \ + } \ + } + + + +SV * +filter_fetch_key(db, code) + GDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_key) ; + +SV * +filter_store_key(db, code) + GDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_key) ; + +SV * +filter_fetch_value(db, code) + GDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_value) ; + +SV * +filter_store_value(db, code) + GDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_value) ; + diff --git a/contrib/perl5/ext/GDBM_File/typemap b/contrib/perl5/ext/GDBM_File/typemap index 317a8f3886cb..4f79ae3e32a5 100644 --- a/contrib/perl5/ext/GDBM_File/typemap +++ b/contrib/perl5/ext/GDBM_File/typemap @@ -2,8 +2,8 @@ #################################### DBM SECTION # -datum T_DATUM -gdatum T_GDATUM +datum_key T_DATUM_K +datum_value T_DATUM_V NDBM_File T_PTROBJ GDBM_File T_PTROBJ SDBM_File T_PTROBJ @@ -13,15 +13,20 @@ DBZ_File T_PTROBJ FATALFUNC T_OPAQUEPTR INPUT -T_DATUM +T_DATUM_K + ckFilter($arg, filter_store_key, \"filter_store_key\"); + $var.dptr = SvPV($arg, PL_na); + $var.dsize = (int)PL_na; +T_DATUM_V + ckFilter($arg, filter_store_value, \"filter_store_value\"); $var.dptr = SvPV($arg, PL_na); $var.dsize = (int)PL_na; -T_GDATUM - UNIMPLEMENTED OUTPUT -T_DATUM - sv_setpvn($arg, $var.dptr, $var.dsize); -T_GDATUM - sv_usepvn($arg, $var.dptr, $var.dsize); +T_DATUM_K + output_datum(aTHX_ $arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_key,\"filter_fetch_key\"); +T_DATUM_V + output_datum(aTHX_ $arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_value,\"filter_fetch_value\"); T_PTROBJ sv_setref_pv($arg, dbtype, (void*)$var); diff --git a/contrib/perl5/ext/IO/ChangeLog b/contrib/perl5/ext/IO/ChangeLog new file mode 100644 index 000000000000..c45e7853264b --- /dev/null +++ b/contrib/perl5/ext/IO/ChangeLog @@ -0,0 +1,318 @@ +For more recent changes, see the Perl Changes* file(s). + +Change 173 on 1998/07/14 by (Graham Barr) + + IO::Socket + - Added method connected + + IO.xs + - Added check that file * is not null + + t/io_udp.t + - Added check for connected + - Made change to catch recv not returning the address, and added a fix to + ensure test does not hang + + t/io_sock.t + - Added check for connected. + +Change 137 on 1998/05/21 by (Graham Barr) + + IO::Socket::INET + - Added checks to all peer* and host* methods for undef + +Change 134 on 1998/05/09 by (Graham Barr) + + t/io_sock.t + - fix race condition on Solaris & SunOS + + IO::Handle + - Applied patch from Gisle Aas for + documentation update + - Applied patch from Kuma + changed input_line_number to be on a per-handle basis. + + IO::File + - Applied patch from Gisle Aas for + documentation update + + IO::Seekable + - Applied patch from Gisle Aas for + documentation update + added sysseek + + IO, IO::Socket::INET + - documentation update + + IO.xs + - Applied patch from Gisle Aas for + blocking + +Change 133 on 1998/05/09 by (Graham Barr) + + t/io_sock.t + - Added checks for blocking() + +Sun Apr 12 1998 (Graham Barr) + + IO.xs + - enclosed newCONSTSUB in #ifdef as _64 now defines it. + +Thu Mar 19 1998 (Graham Barr) + + All + - Changed copyright/distribution policy back to be the same as perl + +Sun Feb 15 1998 (Graham Barr) + + IO::Socket + - Fix to ->accept, accept() returns false on error not undef. + +*** Release 1.19 + +Thu Feb 5 1998 (Graham Barr) + + All + - change copyright notice + + IO::Socket::INET + - changed configure to accept PeerHost and LocalHost as well as the + PeerAddr and LocalAddr arguments. + +Mon Feb 2 1998 (Graham Barr) + + IO::Handle + - Added printflush so that flush.pl can be depreciated + + IO::Socket + - Remove C statement as it was not needed + +Tue Jan 27 1998 (Graham Barr) + + IO::Socket::INET + - removed carp if $^W + +*** Patch 1.1804 + +Sat Jan 17 1998 (Graham Barr) + + t/io_sock.t + - Replaced C 0> with C 'localhost'> + + IO/Socket/INET.pm + - Modified the MultiHomed code. Now each address for a given host has + a timeout of C. + - added _get_addr method for doing hostname lookups. Now Net::DNS can be + use by sub-classing IO::Socket::INET, Thanks Gisle Aas + + t/io_multihomed.t + - new test added. Thanks Gisle Aas. + +*** Patch 1.1803 + +Mon Nov 17 1997 (Graham Barr) + + poll.c + - Added #ifdef I_* tests + + IO::Socket + - Changed initialization of @domain2pkg to fix problem of Domain option + not working + - Added patch for multi-homed hosts, Thanks to Gisle Aas + + IO::Socket::INET + - Change default proto to getprotobyname instead of 'tcp' constant string + - Added patch for multi-homed hosts, Thanks to Gisle Aas + + t/io_sock.t + - Change to test fix for Domain problem fixed in IO::Socket and be + more comprehensive, Thanks to Gisle Aas + + t/io_unix.t + - New test, Thanks to Gisle Aas + +*** Patch 1.1802 + +Wed Nov 12 1997 (Graham Barr) + + t/io_poll.t + - test 4 made an assumption that was not portable, fixed. + +*** Patch 1.1801 + +Wed Oct 22 1997 (Graham Barr) + + IO.xs + - change #ifdef's to allow compilation with 5.002 + + IO::Socket + - Fix to ensure that socket is not returned as non-blocking + unless the user asks for it + + t/io_udp.t + - Fix to stop endless loop + +*** Release 1.18 + +Mon Oct 13 1997 (Graham Barr) + + IO.xs, IO::Handle + - 1.17 broke compatability with 5.003, small tweaks to restore + compatability + + t/io_const.t + - Added new test to ensure backwards compatability with constants + is not broken + +Wed Oct 8 1997 (Graham Barr) + + IO.xs + - Added #define's to cope with argument changes to start_subparse + from 5.003_22, _23 and _24 + + IO::Select + - Renamed has_error to be has_exception which is more correct, + has_error is a wrapper around has_exception with a warning if + $^W is set. + + Makefile.PL + - Remove 'linkext' option to WriteMakefile so that static linking + should work properly, cannot remember why I added it. + +Sun Oct 5 1997 (Graham Barr) + + IO::Pipe + - GLOB assignment does not copy the fileno while under -T + added checks for undefined fileno, and added fdopen + - reader and write can now be called as static methods + + Makefile.PL + - Attempt to locate and define I_POLL if found + +*** Release 1.17 + +Fri Sep 26 1997 (Graham Barr) + + IO.xs + - Fix bug in _poll for ANSI C compilers + + IO::Socket + - Split IO::Socket::INET and IO::Socket::UNIX into separate files + + IO::File + - Patch to open() for when file is in current directory. + +*** Release 1.16 + +Mon 15 Sep 1997 Graham Barr + + o New modules + - IO::Dir + - IO::Poll + + o IO::Socket + - Changed new to call autoflush on the new socket + - IO::Socket::INET->new now accepts a single argument + - IO::Socket::INET default to protocol 'tcp' + + o IO::File + - Added doc for new_tmpfile + + o IO::Handle + - Removed use of AutoLoader for constants, constants are + now defined as constant XS subs + - Added fsync, but will not be avaliable for use + unless HAS_FSYNC is defined, perls configure does not define + this yet. + - Moved bootstrap of IO.xs to IO.pm. IO::Handle no longer + contains an AUTOLOAD sub in it's ISA hier + + o IO::Seekable + - Remove clearerr, as it is defined in IO.xs + + o IO.xs + - Patched IO.xs with patch from Chip for setvbuf warning + - Added XS sub "constant" for backwards compatability + + o Misc + - Fixed IO::Socket::configure, it was not passing $arg to domain + specific package + - Changed all $fh variables in IO::Handle to $io and all $fh + variables in IO::Socket to $sock as Chip suggested + - Fixed usage messages to be consistant + +*** Release 1.15 + +Sun 19 Jan 1997 Graham Barr + + o Updated PODs for IO::Handle and IO::File + o Modified IO.xs so that DESTROY gets called on IO::File + objects that were created with IO::File->new_tmpfile + o Modified the domain2pkg code in IO::Socket so that it + does not use blessd refs + o Created a new package IO::Pipe::End so that pipe specific + stuff can be moved out of IO::Handle. + o Added Ilya's OS/2 changes to Pipe.pm and io_pipe.t + + o These changes happened somtime before the release of 1.15 + - added shutdown to IO::Socket + - modified connect to not use alarm + - modified accept and connect to use IO::Select + +*** Release 1.14 + +Tue 24 Dec 1996 Graham Barr + + o Updated to patches in perl core dist. + o Added C to all modules + o Modified t/io_sock.t, hopefully the race condition has gone + o Added close statements to reader/writer in IO::Pipe + o IO::Handle::syswrite was calling sysread, fixed :-) + +*** Release 1.12 + +Thu 19 Sep 1996 Graham Barr + + o Modified IO.xs so that it will compile with pre perlio version + of perl (ie pre perl5.003_02) + o Modified IO::Socket::send so not to pass 4 arguments to send + if the socket is connected + +*** Release 1.10 + +Mon 11 Sep 1996 Graham Barr + + o Fixed a bug in IO::Socket which caused DESTROY to be called + on a partly initialised connection + o Changed IO.xs to use Perlio + o Modified usage message to report correct package + o Added IO::File::new changes from Chip, to allow PERM to be passed + o Added sysread and syswrite methods to IO::Handle + o Updated documentation + o Fixed a bug in IO::Select that caused a hang if the last handle + was removed. + o Added count method to IO::Select + o Renamed and modified tests so that they can be copied into the + perl distribution + o Added fcntl and ioctl methods to IO::Handle + +Thu 25 Jul 1996 Graham Barr + + o It is now not necessary to call the domain sub-classes of + IO::Socket. when connect is called it notes the domain. + Domain specific methods, which are normally non-critical, are + called via this note-ing. + o Added methods to IO::Socket to retrieve the domain, type and + protocol of a given socket + +Tue 23 Jul 1996 Graham Barr + + o IO::Socket::connect changed how we do timeouts, as it did not work + + o IO::Handle::new_from_fd removed method call to _ref_fd, which was + a leftover from FileHandle + +Fri 28 Jun 1996 Graham Barr + + o Modified IO::Socket::UNIX::configure to default to using a socket + type of SOCK_STREAM if no type is specified. diff --git a/contrib/perl5/ext/IO/IO.pm b/contrib/perl5/ext/IO/IO.pm index 4d4c81ce4053..0087530c7e63 100644 --- a/contrib/perl5/ext/IO/IO.pm +++ b/contrib/perl5/ext/IO/IO.pm @@ -2,6 +2,24 @@ package IO; +use XSLoader (); +use Carp; + +$VERSION = "1.20"; +XSLoader::load 'IO', $VERSION; + +sub import { + shift; + my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir); + + eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l) + or croak $@; +} + +1; + +__END__ + =head1 NAME IO - load various IO modules @@ -20,17 +38,10 @@ Currently this includes: IO::File IO::Pipe IO::Socket + IO::Dir For more information on any of these modules, please see its respective documentation. =cut -use IO::Handle; -use IO::Seekable; -use IO::File; -use IO::Pipe; -use IO::Socket; - -1; - diff --git a/contrib/perl5/ext/IO/IO.xs b/contrib/perl5/ext/IO/IO.xs index 300581ed4e29..1b79cfd4c093 100644 --- a/contrib/perl5/ext/IO/IO.xs +++ b/contrib/perl5/ext/IO/IO.xs @@ -1,20 +1,20 @@ +/* + * Copyright (c) 1997-8 Graham Barr . All rights reserved. + * This program is free software; you can redistribute it and/or + * modify it under the same terms as Perl itself. + */ + +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #define PERLIO_NOT_STDIO 1 #include "perl.h" #include "XSUB.h" - +#include "poll.h" #ifdef I_UNISTD # include #endif -#ifdef I_FCNTL -#if defined(__GNUC__) && defined(__cplusplus) && defined(WIN32) -#define _NO_OLDNAMES -#endif +#if defined(I_FCNTL) || defined(HAS_FCNTL) # include -#if defined(__GNUC__) && defined(__cplusplus) && defined(WIN32) -#undef _NO_OLDNAMES -#endif - #endif #ifdef PerlIO @@ -28,6 +28,12 @@ typedef FILE * InputStream; typedef FILE * OutputStream; #endif +#define MY_start_subparse(fmt,flags) start_subparse(fmt,flags) + +#ifndef gv_stashpvn +#define gv_stashpvn(str,len,flags) gv_stashpv(str,flags) +#endif + static int not_here(char *s) { @@ -35,56 +41,99 @@ not_here(char *s) return -1; } -static bool -constant(char *name, IV *pval) + +#ifndef PerlIO +#define PerlIO_fileno(f) fileno(f) +#endif + +static int +io_blocking(InputStream f, int block) { - switch (*name) { - case '_': - if (strEQ(name, "_IOFBF")) -#ifdef _IOFBF - { *pval = _IOFBF; return TRUE; } -#else - return FALSE; -#endif - if (strEQ(name, "_IOLBF")) -#ifdef _IOLBF - { *pval = _IOLBF; return TRUE; } -#else - return FALSE; -#endif - if (strEQ(name, "_IONBF")) -#ifdef _IONBF - { *pval = _IONBF; return TRUE; } -#else - return FALSE; -#endif - break; - case 'S': - if (strEQ(name, "SEEK_SET")) -#ifdef SEEK_SET - { *pval = SEEK_SET; return TRUE; } -#else - return FALSE; -#endif - if (strEQ(name, "SEEK_CUR")) -#ifdef SEEK_CUR - { *pval = SEEK_CUR; return TRUE; } -#else - return FALSE; -#endif - if (strEQ(name, "SEEK_END")) -#ifdef SEEK_END - { *pval = SEEK_END; return TRUE; } -#else - return FALSE; -#endif - break; + int RETVAL; + if(!f) { + errno = EBADF; + return -1; } +#if defined(HAS_FCNTL) + RETVAL = fcntl(PerlIO_fileno(f), F_GETFL, 0); + if (RETVAL >= 0) { + int mode = RETVAL; +#ifdef O_NONBLOCK + /* POSIX style */ +#if defined(O_NDELAY) && O_NDELAY != O_NONBLOCK + /* Ooops has O_NDELAY too - make sure we don't + * get SysV behaviour by mistake. */ - return FALSE; + /* E.g. In UNICOS and UNICOS/mk a F_GETFL returns an O_NDELAY + * after a successful F_SETFL of an O_NONBLOCK. */ + RETVAL = RETVAL & (O_NONBLOCK | O_NDELAY) ? 0 : 1; + + if (block >= 0) { + if ((mode & O_NDELAY) || ((block == 0) && !(mode & O_NONBLOCK))) { + int ret; + mode = (mode & ~O_NDELAY) | O_NONBLOCK; + ret = fcntl(PerlIO_fileno(f),F_SETFL,mode); + if(ret < 0) + RETVAL = ret; + } + else + if ((mode & O_NDELAY) || ((block > 0) && (mode & O_NONBLOCK))) { + int ret; + mode &= ~(O_NONBLOCK | O_NDELAY); + ret = fcntl(PerlIO_fileno(f),F_SETFL,mode); + if(ret < 0) + RETVAL = ret; + } + } +#else + /* Standard POSIX */ + RETVAL = RETVAL & O_NONBLOCK ? 0 : 1; + + if ((block == 0) && !(mode & O_NONBLOCK)) { + int ret; + mode |= O_NONBLOCK; + ret = fcntl(PerlIO_fileno(f),F_SETFL,mode); + if(ret < 0) + RETVAL = ret; + } + else if ((block > 0) && (mode & O_NONBLOCK)) { + int ret; + mode &= ~O_NONBLOCK; + ret = fcntl(PerlIO_fileno(f),F_SETFL,mode); + if(ret < 0) + RETVAL = ret; + } +#endif +#else + /* Not POSIX - better have O_NDELAY or we can't cope. + * for BSD-ish machines this is an acceptable alternative + * for SysV we can't tell "would block" from EOF but that is + * the way SysV is... + */ + RETVAL = RETVAL & O_NDELAY ? 0 : 1; + + if ((block == 0) && !(mode & O_NDELAY)) { + int ret; + mode |= O_NDELAY; + ret = fcntl(PerlIO_fileno(f),F_SETFL,mode); + if(ret < 0) + RETVAL = ret; + } + else if ((block > 0) && (mode & O_NDELAY)) { + int ret; + mode &= ~O_NDELAY; + ret = fcntl(PerlIO_fileno(f),F_SETFL,mode); + if(ret < 0) + RETVAL = ret; + } +#endif + } + return RETVAL; +#else + return -1; +#endif } - MODULE = IO PACKAGE = IO::Seekable PREFIX = f SV * @@ -110,9 +159,9 @@ fsetpos(handle, pos) InputStream handle SV * pos CODE: - char *p; - STRLEN n_a; - if (handle && (p = SvPVx(pos, n_a)) && n_a == sizeof(Fpos_t)) + char *p; + STRLEN len; + if (handle && (p = SvPV(pos,len)) && len == sizeof(Fpos_t)) #ifdef PerlIO RETVAL = PerlIO_setpos(handle, (Fpos_t*)p); #else @@ -144,24 +193,63 @@ new_tmpfile(packname = "IO::File") if (do_open(gv, "+>&", 3, FALSE, 0, 0, fp)) { ST(0) = sv_2mortal(newRV((SV*)gv)); sv_bless(ST(0), gv_stashpv(packname, TRUE)); - SvREFCNT_dec(gv); /* undo increment in newRV() */ + SvREFCNT_dec(gv); /* undo increment in newRV() */ } else { ST(0) = &PL_sv_undef; SvREFCNT_dec(gv); } +MODULE = IO PACKAGE = IO::Poll + +void +_poll(timeout,...) + int timeout; +PPCODE: +{ +#ifdef HAS_POLL + int nfd = (items - 1) / 2; + SV *tmpsv = NEWSV(999,nfd * sizeof(struct pollfd)); + struct pollfd *fds = (struct pollfd *)SvPVX(tmpsv); + int i,j,ret; + for(i=1, j=0 ; j < nfd ; j++) { + fds[j].fd = SvIV(ST(i)); + i++; + fds[j].events = SvIV(ST(i)); + i++; + fds[j].revents = 0; + } + if((ret = poll(fds,nfd,timeout)) >= 0) { + for(i=1, j=0 ; j < nfd ; j++) { + sv_setiv(ST(i), fds[j].fd); i++; + sv_setiv(ST(i), fds[j].revents); i++; + } + } + SvREFCNT_dec(tmpsv); + XSRETURN_IV(ret); +#else + not_here("IO::Poll::poll"); +#endif +} + +MODULE = IO PACKAGE = IO::Handle PREFIX = io_ + +void +io_blocking(handle,blk=-1) + InputStream handle + int blk +PROTOTYPE: $;$ +CODE: +{ + int ret = io_blocking(handle, items == 1 ? -1 : blk ? 1 : 0); + if(ret >= 0) + XSRETURN_IV(ret); + else + XSRETURN_UNDEF; +} + MODULE = IO PACKAGE = IO::Handle PREFIX = f -SV * -constant(name) - char * name - CODE: - IV i; - if (constant(name, &i)) - ST(0) = sv_2mortal(newSViv(i)); - else - ST(0) = &PL_sv_undef; int ungetc(handle, c) @@ -274,8 +362,7 @@ setvbuf(handle, buf, type, size) int type int size CODE: -/* Should check HAS_SETVBUF once Configure tests for that */ -#if defined(PERLIO_IS_STDIO) && defined(_IOFBF) +#if defined(PERLIO_IS_STDIO) && defined(_IOFBF) && defined(HAS_SETVBUF) if (!handle) /* Try input stream. */ handle = IoIFP(sv_2io(ST(0))); if (handle) @@ -291,3 +378,84 @@ setvbuf(handle, buf, type, size) RETVAL +SysRet +fsync(handle) + OutputStream handle + CODE: +#ifdef HAS_FSYNC + if(handle) + RETVAL = fsync(PerlIO_fileno(handle)); + else { + RETVAL = -1; + errno = EINVAL; + } +#else + RETVAL = (SysRet) not_here("IO::Handle::sync"); +#endif + OUTPUT: + RETVAL + + +BOOT: +{ + HV *stash; + /* + * constant subs for IO::Poll + */ + stash = gv_stashpvn("IO::Poll", 8, TRUE); +#ifdef POLLIN + newCONSTSUB(stash,"POLLIN",newSViv(POLLIN)); +#endif +#ifdef POLLPRI + newCONSTSUB(stash,"POLLPRI", newSViv(POLLPRI)); +#endif +#ifdef POLLOUT + newCONSTSUB(stash,"POLLOUT", newSViv(POLLOUT)); +#endif +#ifdef POLLRDNORM + newCONSTSUB(stash,"POLLRDNORM", newSViv(POLLRDNORM)); +#endif +#ifdef POLLWRNORM + newCONSTSUB(stash,"POLLWRNORM", newSViv(POLLWRNORM)); +#endif +#ifdef POLLRDBAND + newCONSTSUB(stash,"POLLRDBAND", newSViv(POLLRDBAND)); +#endif +#ifdef POLLWRBAND + newCONSTSUB(stash,"POLLWRBAND", newSViv(POLLWRBAND)); +#endif +#ifdef POLLNORM + newCONSTSUB(stash,"POLLNORM", newSViv(POLLNORM)); +#endif +#ifdef POLLERR + newCONSTSUB(stash,"POLLERR", newSViv(POLLERR)); +#endif +#ifdef POLLHUP + newCONSTSUB(stash,"POLLHUP", newSViv(POLLHUP)); +#endif +#ifdef POLLNVAL + newCONSTSUB(stash,"POLLNVAL", newSViv(POLLNVAL)); +#endif + /* + * constant subs for IO::Handle + */ + stash = gv_stashpvn("IO::Handle", 10, TRUE); +#ifdef _IOFBF + newCONSTSUB(stash,"_IOFBF", newSViv(_IOFBF)); +#endif +#ifdef _IOLBF + newCONSTSUB(stash,"_IOLBF", newSViv(_IOLBF)); +#endif +#ifdef _IONBF + newCONSTSUB(stash,"_IONBF", newSViv(_IONBF)); +#endif +#ifdef SEEK_SET + newCONSTSUB(stash,"SEEK_SET", newSViv(SEEK_SET)); +#endif +#ifdef SEEK_CUR + newCONSTSUB(stash,"SEEK_CUR", newSViv(SEEK_CUR)); +#endif +#ifdef SEEK_END + newCONSTSUB(stash,"SEEK_END", newSViv(SEEK_END)); +#endif +} diff --git a/contrib/perl5/ext/IO/Makefile.PL b/contrib/perl5/ext/IO/Makefile.PL index 6a2d50dc83cd..095d7c2b5110 100644 --- a/contrib/perl5/ext/IO/Makefile.PL +++ b/contrib/perl5/ext/IO/Makefile.PL @@ -1,8 +1,9 @@ use ExtUtils::MakeMaker; +use Config qw(%Config); + WriteMakefile( - NAME => 'IO', - MAN3PODS => {}, # Pods will be built by installman. - XSPROTOARG => '-noprototypes', # XXX remove later? - VERSION_FROM => 'lib/IO/Handle.pm', - XS_VERSION => 1.15 + VERSION_FROM => "IO.pm", + NAME => "IO", + OBJECT => '$(O_FILES)', + MAN3PODS => {}, # Pods will be built by installman. ); diff --git a/contrib/perl5/ext/IO/README b/contrib/perl5/ext/IO/README index e855afade40a..191d5504bc19 100644 --- a/contrib/perl5/ext/IO/README +++ b/contrib/perl5/ext/IO/README @@ -1,4 +1,5 @@ -This directory contains files from the IO distribution maintained by -Graham Barr . If you find that you have to modify -any files in this directory then please forward him a patch for only -the files in this directory. +This directory contains files from the IO distribution created by +Graham Barr. It is currently maintained by the Perl Porters as part +of the Perl source distribution. If you find that you have to modify +any files in this directory then please forward them a patch at +. diff --git a/contrib/perl5/ext/IO/lib/IO/Dir.pm b/contrib/perl5/ext/IO/lib/IO/Dir.pm new file mode 100644 index 000000000000..1fa07ed6b8b5 --- /dev/null +++ b/contrib/perl5/ext/IO/lib/IO/Dir.pm @@ -0,0 +1,239 @@ +# IO::Dir.pm +# +# Copyright (c) 1997-8 Graham Barr . All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + +package IO::Dir; + +use 5.003_26; + +use strict; +use Carp; +use Symbol; +use Exporter; +use IO::File; +our(@ISA, $VERSION, @EXPORT_OK); +use Tie::Hash; +use File::stat; + +@ISA = qw(Tie::Hash Exporter); +$VERSION = "1.03"; +@EXPORT_OK = qw(DIR_UNLINK); + +sub DIR_UNLINK () { 1 } + +sub new { + @_ >= 1 && @_ <= 2 or croak 'usage: new IO::Dir [DIRNAME]'; + my $class = shift; + my $dh = gensym; + if (@_) { + IO::Dir::open($dh, $_[0]) + or return undef; + } + bless $dh, $class; +} + +sub DESTROY { + my ($dh) = @_; + closedir($dh); +} + +sub open { + @_ == 2 or croak 'usage: $dh->open(DIRNAME)'; + my ($dh, $dirname) = @_; + return undef + unless opendir($dh, $dirname); + ${*$dh}{io_dir_path} = $dirname; + 1; +} + +sub close { + @_ == 1 or croak 'usage: $dh->close()'; + my ($dh) = @_; + closedir($dh); +} + +sub read { + @_ == 1 or croak 'usage: $dh->read()'; + my ($dh) = @_; + readdir($dh); +} + +sub seek { + @_ == 2 or croak 'usage: $dh->seek(POS)'; + my ($dh,$pos) = @_; + seekdir($dh,$pos); +} + +sub tell { + @_ == 1 or croak 'usage: $dh->tell()'; + my ($dh) = @_; + telldir($dh); +} + +sub rewind { + @_ == 1 or croak 'usage: $dh->rewind()'; + my ($dh) = @_; + rewinddir($dh); +} + +sub TIEHASH { + my($class,$dir,$options) = @_; + + my $dh = $class->new($dir) + or return undef; + + $options ||= 0; + + ${*$dh}{io_dir_unlink} = $options & DIR_UNLINK; + $dh; +} + +sub FIRSTKEY { + my($dh) = @_; + $dh->rewind; + scalar $dh->read; +} + +sub NEXTKEY { + my($dh) = @_; + scalar $dh->read; +} + +sub EXISTS { + my($dh,$key) = @_; + -e ${*$dh}{io_dir_path} . "/" . $key; +} + +sub FETCH { + my($dh,$key) = @_; + &lstat(${*$dh}{io_dir_path} . "/" . $key); +} + +sub STORE { + my($dh,$key,$data) = @_; + my($atime,$mtime) = ref($data) ? @$data : ($data,$data); + my $file = ${*$dh}{io_dir_path} . "/" . $key; + unless(-e $file) { + my $io = IO::File->new($file,O_CREAT | O_RDWR); + $io->close if $io; + } + utime($atime,$mtime, $file); +} + +sub DELETE { + my($dh,$key) = @_; + # Only unlink if unlink-ing is enabled + my $file = ${*$dh}{io_dir_path} . "/" . $key; + + return 0 + unless ${*$dh}{io_dir_unlink}; + + -d $file + ? rmdir($file) + : unlink($file); +} + +1; + +__END__ + +=head1 NAME + +IO::Dir - supply object methods for directory handles + +=head1 SYNOPSIS + + use IO::Dir; + $d = new IO::Dir "."; + if (defined $d) { + while (defined($_ = $d->read)) { something($_); } + $d->rewind; + while (defined($_ = $d->read)) { something_else($_); } + undef $d; + } + + tie %dir, IO::Dir, "."; + foreach (keys %dir) { + print $_, " " , $dir{$_}->size,"\n"; + } + +=head1 DESCRIPTION + +The C package provides two interfaces to perl's directory reading +routines. + +The first interface is an object approach. C provides an object +constructor and methods, which are just wrappers around perl's built in +directory reading routines. + +=over 4 + +=item new ( [ DIRNAME ] ) + +C is the constuctor for C objects. It accepts one optional +argument which, if given, C will pass to C + +=back + +The following methods are wrappers for the directory related functions built +into perl (the trailing `dir' has been removed from the names). See L +for details of these functions. + +=over 4 + +=item open ( DIRNAME ) + +=item read () + +=item seek ( POS ) + +=item tell () + +=item rewind () + +=item close () + +=back + +C also provides a interface to reading directories via a tied +HASH. The tied HASH extends the interface beyond just the directory +reading routines by the use of C, from the C package, +C, C and C. + +=over 4 + +=item tie %hash, IO::Dir, DIRNAME [, OPTIONS ] + +=back + +The keys of the HASH will be the names of the entries in the directory. +Reading a value from the hash will be the result of calling +C. Deleting an element from the hash will call C +providing that C is passed in the C. + +Assigning to an entry in the HASH will cause the time stamps of the file +to be modified. If the file does not exist then it will be created. Assigning +a single integer to a HASH element will cause both the access and +modification times to be changed to that value. Alternatively a reference to +an array of two values can be passed. The first array element will be used to +set the access time and the second element will be used to set the modification +time. + +=head1 SEE ALSO + +L + +=head1 AUTHOR + +Graham Barr. Currently maintained by the Perl Porters. Please report all +bugs to . + +=head1 COPYRIGHT + +Copyright (c) 1997-8 Graham Barr . All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut diff --git a/contrib/perl5/ext/IO/lib/IO/File.pm b/contrib/perl5/ext/IO/lib/IO/File.pm index de7fabc6f257..569c2800f808 100644 --- a/contrib/perl5/ext/IO/lib/IO/File.pm +++ b/contrib/perl5/ext/IO/lib/IO/File.pm @@ -49,7 +49,7 @@ these classes with methods that are specific to file handles. =over 4 -=item new ([ ARGS ] ) +=item new ( FILENAME [,MODE [,PERMS]] ) Creates a C. If it receives any parameters, they are passed to the method C; if the open fails, the object is destroyed. Otherwise, @@ -72,20 +72,21 @@ Otherwise, it is returned to the caller. =item open( FILENAME [,MODE [,PERMS]] ) C accepts one, two or three parameters. With one parameter, -it is just a front end for the built-in C function. With two +it is just a front end for the built-in C function. With two or three parameters, the first parameter is a filename that may include whitespace or other special characters, and the second parameter is the open mode, optionally followed by a file permission value. If C receives a Perl mode string ("E", "+E", etc.) -or a POSIX fopen() mode string ("w", "r+", etc.), it uses the basic -Perl C operator. +or a ANSI C fopen() mode string ("w", "r+", etc.), it uses the basic +Perl C operator (but protects any special characters). If C is given a numeric mode, it passes that mode and the optional permissions value to the Perl C operator. -For convenience, C tries to import the O_XXX -constants from the Fcntl module. If dynamic loading is not available, -this may fail, but the rest of IO::File will still work. +The permissions default to 0666. + +For convenience, C exports the O_XXX constants from the +Fcntl module, if this module is available. =back @@ -98,24 +99,24 @@ L =head1 HISTORY -Derived from FileHandle.pm by Graham Barr EFE. +Derived from FileHandle.pm by Graham Barr EFE. =cut -require 5.000; +require 5.005_64; use strict; -use vars qw($VERSION @EXPORT @EXPORT_OK $AUTOLOAD @ISA); +our($VERSION, @EXPORT, @EXPORT_OK, @ISA); use Carp; use Symbol; use SelectSaver; use IO::Seekable; +use File::Spec; require Exporter; -require DynaLoader; -@ISA = qw(IO::Handle IO::Seekable Exporter DynaLoader); +@ISA = qw(IO::Handle IO::Seekable Exporter); -$VERSION = "1.06021"; +$VERSION = "1.08"; @EXPORT = @IO::Seekable::EXPORT; @@ -127,7 +128,6 @@ eval { push(@EXPORT, @O); }; - ################################################ ## Constructor ## @@ -158,7 +158,9 @@ sub open { defined $perms or $perms = 0666; return sysopen($fh, $file, $mode, $perms); } - $file = './' . $file if $file =~ m{\A[^\\/\w]}; + if (! File::Spec->file_name_is_absolute($file)) { + $file = File::Spec->catfile(File::Spec->curdir(),$file); + } $file = IO::Handle::_open_mode_string($mode) . " $file\0"; } open($fh, $file); diff --git a/contrib/perl5/ext/IO/lib/IO/Handle.pm b/contrib/perl5/ext/IO/lib/IO/Handle.pm index 7927641f7f16..930df55fec8b 100644 --- a/contrib/perl5/ext/IO/lib/IO/Handle.pm +++ b/contrib/perl5/ext/IO/lib/IO/Handle.pm @@ -9,21 +9,21 @@ IO::Handle - supply object methods for I/O handles use IO::Handle; - $fh = new IO::Handle; - if ($fh->fdopen(fileno(STDIN),"r")) { - print $fh->getline; - $fh->close; + $io = new IO::Handle; + if ($io->fdopen(fileno(STDIN),"r")) { + print $io->getline; + $io->close; } - $fh = new IO::Handle; - if ($fh->fdopen(fileno(STDOUT),"w")) { - $fh->print("Some text\n"); + $io = new IO::Handle; + if ($io->fdopen(fileno(STDOUT),"w")) { + $io->print("Some text\n"); } use IO::Handle '_IOLBF'; - $fh->setvbuf($buffer_var, _IOLBF, 1024); + $io->setvbuf($buffer_var, _IOLBF, 1024); - undef $fh; # automatically closes the file if it's open + undef $io; # automatically closes the file if it's open autoflush STDOUT 1; @@ -36,9 +36,7 @@ in the IO hierarchy. If you are reading this documentation, looking for a replacement for the C package, then I suggest you read the documentation -for C - -A C object is a reference to a symbol (see the C package) +for C too. =head1 CONSTRUCTOR @@ -63,87 +61,123 @@ See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: - close - fileno - getc - eof - read - truncate - stat - print - printf - sysread - syswrite + $io->close + $io->eof + $io->fileno + $io->format_write( [FORMAT_NAME] ) + $io->getc + $io->read ( BUF, LEN, [OFFSET] ) + $io->print ( ARGS ) + $io->printf ( FMT, [ARGS] ) + $io->stat + $io->sysread ( BUF, LEN, [OFFSET] ) + $io->syswrite ( BUF, LEN, [OFFSET] ) + $io->truncate ( LEN ) See L for complete descriptions of each of the following -supported C methods: +supported C methods. All of them return the previous +value of the attribute and takes an optional single argument that when +given will set the value. If no argument is given the previous value +is unchanged (except for $io->autoflush will actually turn ON +autoflush by default). - autoflush - output_field_separator - output_record_separator - input_record_separator - input_line_number - format_page_number - format_lines_per_page - format_lines_left - format_name - format_top_name - format_line_break_characters - format_formfeed - format_write + $io->autoflush ( [BOOL] ) $| + $io->format_page_number( [NUM] ) $% + $io->format_lines_per_page( [NUM] ) $= + $io->format_lines_left( [NUM] ) $- + $io->format_name( [STR] ) $~ + $io->format_top_name( [STR] ) $^ + $io->input_line_number( [NUM]) $. + +The following methods are not supported on a per-filehandle basis. + + IO::Handle->format_line_break_characters( [STR] ) $: + IO::Handle->format_formfeed( [STR]) $^L + IO::Handle->output_field_separator( [STR] ) $, + IO::Handle->output_record_separator( [STR] ) $\ + + IO::Handle->input_record_separator( [STR] ) $/ Furthermore, for doing normal I/O you might need these: =over -=item $fh->fdopen ( FD, MODE ) +=item $io->fdopen ( FD, MODE ) C is like an ordinary C except that its first parameter is not a filename but rather a file handle name, a IO::Handle object, or a file descriptor number. -=item $fh->opened +=item $io->opened Returns true if the object is currently a valid file descriptor. -=item $fh->getline +=item $io->getline -This works like <$fh> described in L +This works like <$io> described in L except that it's more readable and can be safely called in an array context but still returns just one line. -=item $fh->getlines +=item $io->getlines -This works like <$fh> when called in an array context to +This works like <$io> when called in an array context to read all the remaining lines in a file, except that it's more readable. It will also croak() if accidentally called in a scalar context. -=item $fh->ungetc ( ORD ) +=item $io->ungetc ( ORD ) Pushes a character with the given ordinal value back onto the given -handle's input stream. +handle's input stream. Only one character of pushback per handle is +guaranteed. -=item $fh->write ( BUF, LEN [, OFFSET }\] ) +=item $io->write ( BUF, LEN [, OFFSET ] ) This C is like C found in C, that is it is the opposite of read. The wrapper for the perl C function is called C. -=item $fh->flush - -Flush the given handle's buffer. - -=item $fh->error +=item $io->error Returns a true value if the given handle has experienced any errors since it was opened or since the last call to C. -=item $fh->clearerr +=item $io->clearerr Clear the given handle's error indicator. +=item $io->sync + +C synchronizes a file's in-memory state with that on the +physical medium. C does not operate at the perlio api level, but +operates on the file descriptor, this means that any data held at the +perlio api level will not be synchronized. To synchronize data that is +buffered at the perlio api level you must use the flush method. C +is not implemented on all platforms. See L. + +=item $io->flush + +C causes perl to flush any buffered data at the perlio api level. +Any unread data in the buffer will be discarded, and any unwritten data +will be written to the underlying file descriptor. + +=item $io->printflush ( ARGS ) + +Turns on autoflush, print ARGS and then restores the autoflush status of the +C object. + +=item $io->blocking ( [ BOOL ] ) + +If called with an argument C will turn on non-blocking IO if +C is false, and turn it off if C is true. + +C will return the value of the previous setting, or the +current setting if C is not given. + +If an error occurs C will return undef and C<$!> will be set. + =back + If the C functions setbuf() and/or setvbuf() are available, then C and C set the buffering policy for an IO::Handle. The calling sequences for the Perl functions @@ -152,7 +186,7 @@ C<_IOLBF>, and C<_IONBF> for setvbuf()--except that the buffer parameter specifies a scalar variable to use as a buffer. WARNING: A variable used as a buffer by C or C must not be modified in any way until the IO::Handle is closed or C or C is called -again, or memory corruption may result! Note that you need to import +again, or memory corruption may result! Note that you need to import the constants C<_IOFBF>, C<_IOLBF>, and C<_IONBF> explicitly. Lastly, there is a special method for working under B<-T> and setuid/gid @@ -160,7 +194,7 @@ scripts: =over -=item $fh->untaint +=item $io->untaint Marks the object as taint-clean, and as such data read from it will also be considered taint-clean. Note that this is a very trusting action to @@ -171,7 +205,8 @@ vulnerability should be kept in mind. =head1 NOTE -A C object is a GLOB reference. Some modules that +A C object is a reference to a symbol/GLOB reference (see +the C package). Some modules that inherit from C may want to keep object related variables in the hash table part of the GLOB. In an attempt to prevent modules trampling on each other I propose the that any such module should prefix @@ -193,22 +228,22 @@ class from C and inherit those methods. =head1 HISTORY -Derived from FileHandle.pm by Graham Barr EFE +Derived from FileHandle.pm by Graham Barr EFE =cut -require 5.000; +require 5.005_64; use strict; -use vars qw($VERSION $XS_VERSION @EXPORT_OK $AUTOLOAD @ISA); +our($VERSION, @EXPORT_OK, @ISA); use Carp; use Symbol; use SelectSaver; +use IO (); # Load the XS module require Exporter; @ISA = qw(Exporter); -$VERSION = "1.1505"; -$XS_VERSION = "1.15"; +$VERSION = "1.21"; @EXPORT_OK = qw( autoflush @@ -230,6 +265,9 @@ $XS_VERSION = "1.15"; getline getlines + printflush + flush + SEEK_SET SEEK_CUR SEEK_END @@ -238,30 +276,6 @@ $XS_VERSION = "1.15"; _IONBF ); - -################################################ -## Interaction with the XS. -## - -require DynaLoader; -@IO::ISA = qw(DynaLoader); -bootstrap IO $XS_VERSION; - -sub AUTOLOAD { - if ($AUTOLOAD =~ /::(_?[a-z])/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD - } - my $constname = $AUTOLOAD; - $constname =~ s/.*:://; - my $val = constant($constname); - defined $val or croak "$constname is not a valid IO::Handle macro"; - no strict 'refs'; - *$AUTOLOAD = sub { $val }; - goto &$AUTOLOAD; -} - - ################################################ ## Constructors, destructors. ## @@ -269,18 +283,18 @@ sub AUTOLOAD { sub new { my $class = ref($_[0]) || $_[0] || "IO::Handle"; @_ == 1 or croak "usage: new $class"; - my $fh = gensym; - bless $fh, $class; + my $io = gensym; + bless $io, $class; } sub new_from_fd { my $class = ref($_[0]) || $_[0] || "IO::Handle"; @_ == 3 or croak "usage: new_from_fd $class FD, MODE"; - my $fh = gensym; + my $io = gensym; shift; - IO::Handle::fdopen($fh, @_) + IO::Handle::fdopen($io, @_) or return undef; - bless $fh, $class; + bless $io, $class; } # @@ -307,8 +321,8 @@ sub _open_mode_string { } sub fdopen { - @_ == 3 or croak 'usage: $fh->fdopen(FD, MODE)'; - my ($fh, $fd, $mode) = @_; + @_ == 3 or croak 'usage: $io->fdopen(FD, MODE)'; + my ($io, $fd, $mode) = @_; local(*GLOB); if (ref($fd) && "".$fd =~ /GLOB\(/o) { @@ -321,15 +335,15 @@ sub fdopen { $fd = "=$fd"; } - open($fh, _open_mode_string($mode) . '&' . $fd) - ? $fh : undef; + open($io, _open_mode_string($mode) . '&' . $fd) + ? $io : undef; } sub close { - @_ == 1 or croak 'usage: $fh->close()'; - my($fh) = @_; + @_ == 1 or croak 'usage: $io->close()'; + my($io) = @_; - close($fh); + close($io); } ################################################ @@ -340,39 +354,39 @@ sub close { # select sub opened { - @_ == 1 or croak 'usage: $fh->opened()'; + @_ == 1 or croak 'usage: $io->opened()'; defined fileno($_[0]); } sub fileno { - @_ == 1 or croak 'usage: $fh->fileno()'; + @_ == 1 or croak 'usage: $io->fileno()'; fileno($_[0]); } sub getc { - @_ == 1 or croak 'usage: $fh->getc()'; + @_ == 1 or croak 'usage: $io->getc()'; getc($_[0]); } sub eof { - @_ == 1 or croak 'usage: $fh->eof()'; + @_ == 1 or croak 'usage: $io->eof()'; eof($_[0]); } sub print { - @_ or croak 'usage: $fh->print([ARGS])'; + @_ or croak 'usage: $io->print(ARGS)'; my $this = shift; print $this @_; } sub printf { - @_ >= 2 or croak 'usage: $fh->printf(FMT,[ARGS])'; + @_ >= 2 or croak 'usage: $io->printf(FMT,[ARGS])'; my $this = shift; printf $this @_; } sub getline { - @_ == 1 or croak 'usage: $fh->getline'; + @_ == 1 or croak 'usage: $io->getline()'; my $this = shift; return scalar <$this>; } @@ -380,41 +394,43 @@ sub getline { *gets = \&getline; # deprecated sub getlines { - @_ == 1 or croak 'usage: $fh->getline()'; + @_ == 1 or croak 'usage: $io->getlines()'; wantarray or - croak 'Can\'t call $fh->getlines in a scalar context, use $fh->getline'; + croak 'Can\'t call $io->getlines in a scalar context, use $io->getline'; my $this = shift; return <$this>; } sub truncate { - @_ == 2 or croak 'usage: $fh->truncate(LEN)'; + @_ == 2 or croak 'usage: $io->truncate(LEN)'; truncate($_[0], $_[1]); } sub read { - @_ == 3 || @_ == 4 or croak '$fh->read(BUF, LEN [, OFFSET])'; + @_ == 3 || @_ == 4 or croak 'usage: $io->read(BUF, LEN [, OFFSET])'; read($_[0], $_[1], $_[2], $_[3] || 0); } sub sysread { - @_ == 3 || @_ == 4 or croak '$fh->sysread(BUF, LEN [, OFFSET])'; + @_ == 3 || @_ == 4 or croak 'usage: $io->sysread(BUF, LEN [, OFFSET])'; sysread($_[0], $_[1], $_[2], $_[3] || 0); } sub write { - @_ == 3 || @_ == 4 or croak '$fh->write(BUF, LEN [, OFFSET])'; + @_ >= 2 && @_ <= 4 or croak 'usage: $io->write(BUF [, LEN [, OFFSET]])'; local($\) = ""; + $_[2] = length($_[1]) unless defined $_[2]; print { $_[0] } substr($_[1], $_[3] || 0, $_[2]); } sub syswrite { - @_ == 3 || @_ == 4 or croak '$fh->syswrite(BUF, LEN [, OFFSET])'; + @_ >= 2 && @_ <= 4 or croak 'usage: $io->syswrite(BUF [, LEN [, OFFSET]])'; + $_[2] = length($_[1]) unless defined $_[2]; syswrite($_[0], $_[1], $_[2], $_[3] || 0); } sub stat { - @_ == 1 or croak 'usage: $fh->stat()'; + @_ == 1 or croak 'usage: $io->stat()'; stat($_[0]); } @@ -423,32 +439,39 @@ sub stat { ## sub autoflush { - my $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); + my $old = new SelectSaver qualify($_[0], caller); my $prev = $|; $| = @_ > 1 ? $_[1] : 1; $prev; } sub output_field_separator { + carp "output_field_separator is not supported on a per-handle basis" + if ref($_[0]); my $prev = $,; $, = $_[1] if @_ > 1; $prev; } sub output_record_separator { + carp "output_record_separator is not supported on a per-handle basis" + if ref($_[0]); my $prev = $\; $\ = $_[1] if @_ > 1; $prev; } sub input_record_separator { + carp "input_record_separator is not supported on a per-handle basis" + if ref($_[0]); my $prev = $/; $/ = $_[1] if @_ > 1; $prev; } sub input_line_number { - # localizing $. doesn't work as advertised. grrrrrr. + local $.; + my $tell = tell qualify($_[0], caller) if ref($_[0]); my $prev = $.; $. = $_[1] if @_ > 1; $prev; @@ -490,50 +513,82 @@ sub format_top_name { } sub format_line_break_characters { + carp "format_line_break_characters is not supported on a per-handle basis" + if ref($_[0]); my $prev = $:; $: = $_[1] if @_ > 1; $prev; } sub format_formfeed { + carp "format_formfeed is not supported on a per-handle basis" + if ref($_[0]); my $prev = $^L; $^L = $_[1] if @_ > 1; $prev; } sub formline { - my $fh = shift; + my $io = shift; my $picture = shift; local($^A) = $^A; local($\) = ""; formline($picture, @_); - print $fh $^A; + print $io $^A; } sub format_write { - @_ < 3 || croak 'usage: $fh->write( [FORMAT_NAME] )'; + @_ < 3 || croak 'usage: $io->write( [FORMAT_NAME] )'; if (@_ == 2) { - my ($fh, $fmt) = @_; - my $oldfmt = $fh->format_name($fmt); - CORE::write($fh); - $fh->format_name($oldfmt); + my ($io, $fmt) = @_; + my $oldfmt = $io->format_name($fmt); + CORE::write($io); + $io->format_name($oldfmt); } else { CORE::write($_[0]); } } +# XXX undocumented sub fcntl { - @_ == 3 || croak 'usage: $fh->fcntl( OP, VALUE );'; - my ($fh, $op, $val) = @_; - my $r = fcntl($fh, $op, $val); - defined $r && $r eq "0 but true" ? 0 : $r; + @_ == 3 || croak 'usage: $io->fcntl( OP, VALUE );'; + my ($io, $op) = @_; + return fcntl($io, $op, $_[2]); } +# XXX undocumented sub ioctl { - @_ == 3 || croak 'usage: $fh->ioctl( OP, VALUE );'; - my ($fh, $op, $val) = @_; - my $r = ioctl($fh, $op, $val); - defined $r && $r eq "0 but true" ? 0 : $r; + @_ == 3 || croak 'usage: $io->ioctl( OP, VALUE );'; + my ($io, $op) = @_; + return ioctl($io, $op, $_[2]); +} + +# this sub is for compatability with older releases of IO that used +# a sub called constant to detemine if a constant existed -- GMB +# +# The SEEK_* and _IO?BF constants were the only constants at that time +# any new code should just chech defined(&CONSTANT_NAME) + +sub constant { + no strict 'refs'; + my $name = shift; + (($name =~ /^(SEEK_(SET|CUR|END)|_IO[FLN]BF)$/) && defined &{$name}) + ? &{$name}() : undef; +} + + +# so that flush.pl can be depriciated + +sub printflush { + my $io = shift; + my $old = new SelectSaver qualify($io, caller) if ref($io); + local $| = 1; + if(ref($io)) { + print $io @_; + } + else { + print @_; + } } 1; diff --git a/contrib/perl5/ext/IO/lib/IO/Pipe.pm b/contrib/perl5/ext/IO/lib/IO/Pipe.pm index 23c51b083190..27b5ad03e1ad 100644 --- a/contrib/perl5/ext/IO/lib/IO/Pipe.pm +++ b/contrib/perl5/ext/IO/lib/IO/Pipe.pm @@ -1,20 +1,20 @@ # IO::Pipe.pm # -# Copyright (c) 1996 Graham Barr . All rights -# reserved. This program is free software; you can redistribute it and/or +# Copyright (c) 1996-8 Graham Barr . All rights reserved. +# This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. package IO::Pipe; -require 5.000; +require 5.005_64; use IO::Handle; use strict; -use vars qw($VERSION); +our($VERSION); use Carp; use Symbol; -$VERSION = "1.0902"; +$VERSION = "1.121"; sub new { my $type = shift; @@ -65,7 +65,7 @@ sub _doit { } bless $io, "IO::Handle"; $io->fdopen($fh, $mode); - $fh->close; + $fh->close; if ($do_spawn) { $pid = eval { system 1, @_ }; # 1 == P_NOWAIT @@ -88,8 +88,12 @@ sub _doit { } sub reader { - @_ >= 1 or croak 'usage: $pipe->reader()'; + @_ >= 1 or croak 'usage: $pipe->reader( [SUB_COMMAND_ARGS] )'; my $me = shift; + + return undef + unless(ref($me) || ref($me = $me->new)); + my $fh = ${*$me}[0]; my $pid = $me->_doit(0, $fh, @_) if(@_); @@ -97,6 +101,8 @@ sub reader { close ${*$me}[1]; bless $me, ref($fh); *$me = *$fh; # Alias self to handle + $me->fdopen($fh->fileno,"r") + unless defined($me->fileno); bless $fh; # Really wan't un-bless here ${*$me}{'io_pipe_pid'} = $pid if defined $pid; @@ -105,8 +111,12 @@ sub reader { } sub writer { - @_ >= 1 or croak 'usage: $pipe->writer()'; + @_ >= 1 or croak 'usage: $pipe->writer( [SUB_COMMAND_ARGS] )'; my $me = shift; + + return undef + unless(ref($me) || ref($me = $me->new)); + my $fh = ${*$me}[1]; my $pid = $me->_doit(1, $fh, @_) if(@_); @@ -114,6 +124,8 @@ sub writer { close ${*$me}[0]; bless $me, ref($fh); *$me = *$fh; # Alias self to handle + $me->fdopen($fh->fileno,"w") + unless defined($me->fileno); bless $fh; # Really wan't un-bless here ${*$me}{'io_pipe_pid'} = $pid if defined $pid; @@ -123,7 +135,7 @@ sub writer { package IO::Pipe::End; -use vars qw(@ISA); +our(@ISA); @ISA = qw(IO::Handle); @@ -143,7 +155,7 @@ __END__ =head1 NAME -IO::pipe - supply object methods for pipes +IO::Pipe - supply object methods for pipes =head1 SYNOPSIS @@ -228,12 +240,13 @@ L =head1 AUTHOR -Graham Barr +Graham Barr. Currently maintained by the Perl Porters. Please report all +bugs to . =head1 COPYRIGHT -Copyright (c) 1996 Graham Barr. All rights reserved. This program is free -software; you can redistribute it and/or modify it under the same terms -as Perl itself. +Copyright (c) 1996-8 Graham Barr . All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. =cut diff --git a/contrib/perl5/ext/IO/lib/IO/Poll.pm b/contrib/perl5/ext/IO/lib/IO/Poll.pm new file mode 100644 index 000000000000..687664b9abfa --- /dev/null +++ b/contrib/perl5/ext/IO/lib/IO/Poll.pm @@ -0,0 +1,205 @@ +# IO::Poll.pm +# +# Copyright (c) 1997-8 Graham Barr . All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + +package IO::Poll; + +use strict; +use IO::Handle; +use Exporter (); +our(@ISA, @EXPORT_OK, @EXPORT, $VERSION); + +@ISA = qw(Exporter); +$VERSION = "0.01"; + +@EXPORT = qw(poll); + +@EXPORT_OK = qw( + POLLIN + POLLPRI + POLLOUT + POLLRDNORM + POLLWRNORM + POLLRDBAND + POLLWRBAND + POLLNORM + POLLERR + POLLHUP + POLLNVAL +); + +sub new { + my $class = shift; + + my $self = bless [{},{}], $class; + + $self; +} + +sub mask { + my $self = shift; + my $io = shift; + my $fd = fileno($io); + if(@_) { + my $mask = shift; + $self->[0]{$fd} ||= {}; + if($mask) { + $self->[0]{$fd}{$io} = $mask; + } + else { + delete $self->[0]{$fd}{$io}; + } + } + elsif(exists $self->[0]{$fd}{$io}) { + return $self->[0]{$fd}{$io}; + } + return; +} + + +sub poll { + my($self,$timeout) = @_; + + $self->[1] = {}; + + my($fd,$ref); + my @poll = (); + + while(($fd,$ref) = each %{$self->[0]}) { + my $events = 0; + map { $events |= $_ } values %{$ref}; + push(@poll,$fd, $events); + } + + my $ret = @poll ? _poll(defined($timeout) ? $timeout * 1000 : -1,@poll) : 0; + + return $ret + unless $ret > 0; + + while(@poll) { + my($fd,$got) = splice(@poll,0,2); + $self->[1]{$fd} = $got + if $got; + } + + return $ret; +} + +sub events { + my $self = shift; + my $io = shift; + my $fd = fileno($io); + + exists $self->[1]{$fd} && exists $self->[0]{$fd}{$io} + ? $self->[1]{$fd} & $self->[0]{$fd}{$io} + : 0; +} + +sub remove { + my $self = shift; + my $io = shift; + $self->mask($io,0); +} + +sub handles { + my $self = shift; + + return map { keys %$_ } values %{$self->[0]} + unless(@_); + + my $events = shift || 0; + my($fd,$ev,$io,$mask); + my @handles = (); + + while(($fd,$ev) = each %{$self->[1]}) { + if($ev & $events) { + while(($io,$mask) = each %{$self->[0][$fd]}) { + push(@handles, $io) + if $events & $mask; + } + } + } + return @handles; +} + +1; + +__END__ + +=head1 NAME + +IO::Poll - Object interface to system poll call + +=head1 SYNOPSIS + + use IO::Poll qw(POLLRDNORM POLLWRNORM POLLIN POLLHUP); + + $poll = new IO::Poll; + + $poll->mask($input_handle => POLLRDNORM | POLLIN | POLLHUP); + $poll->mask($output_handle => POLLWRNORM); + + $poll->poll($timeout); + + $ev = $poll->events($input); + +=head1 DESCRIPTION + +C is a simple interface to the system level poll routine. + +=head1 METHODS + +=over 4 + +=item mask ( IO [, EVENT_MASK ] ) + +If EVENT_MASK is given, then, if EVENT_MASK is non-zero, IO is added to the +list of file descriptors and the next call to poll will check for +any event specified in EVENT_MASK. If EVENT_MASK is zero then IO will be +removed from the list of file descriptors. + +If EVENT_MASK is not given then the return value will be the current +event mask value for IO. + +=item poll ( [ TIMEOUT ] ) + +Call the system level poll routine. If TIMEOUT is not specified then the +call will block. Returns the number of handles which had events +happen, or -1 on error. + +=item events ( IO ) + +Returns the event mask which represents the events that happend on IO +during the last call to C. + +=item remove ( IO ) + +Remove IO from the list of file descriptors for the next poll. + +=item handles( [ EVENT_MASK ] ) + +Returns a list of handles. If EVENT_MASK is not given then a list of all +handles known will be returned. If EVENT_MASK is given then a list +of handles will be returned which had one of the events specified by +EVENT_MASK happen during the last call ti C + +=back + +=head1 SEE ALSO + +L, L, L + +=head1 AUTHOR + +Graham Barr. Currently maintained by the Perl Porters. Please report all +bugs to . + +=head1 COPYRIGHT + +Copyright (c) 1997-8 Graham Barr . All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut diff --git a/contrib/perl5/ext/IO/lib/IO/Seekable.pm b/contrib/perl5/ext/IO/lib/IO/Seekable.pm index 86154c5722d2..e09d48b9bff8 100644 --- a/contrib/perl5/ext/IO/lib/IO/Seekable.pm +++ b/contrib/perl5/ext/IO/lib/IO/Seekable.pm @@ -19,16 +19,17 @@ be inherited by other C based objects. It provides methods which allow seeking of the file descriptors. If the C functions fgetpos() and fsetpos() are available, then -C returns an opaque value that represents the -current position of the IO::File, and C uses +C<$io-Egetpos> returns an opaque value that represents the +current position of the IO::File, and C<$io-Esetpos(POS)> uses that value to return to a previously visited position. See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: - seek - tell + $io->seek( POS, WHENCE ) + $io->sysseek( POS, WHENCE ) + $io->tell =head1 SEE ALSO @@ -39,29 +40,37 @@ L =head1 HISTORY -Derived from FileHandle.pm by Graham Barr Ebodg@tiuk.ti.comE +Derived from FileHandle.pm by Graham Barr Egbarr@pobox.comE =cut -require 5.000; +require 5.005_64; use Carp; use strict; -use vars qw($VERSION @EXPORT @ISA); -use IO::Handle qw(SEEK_SET SEEK_CUR SEEK_END); +our($VERSION, @EXPORT, @ISA); +use IO::Handle (); +# XXX we can't get these from IO::Handle or we'll get prototype +# mismatch warnings on C :-( +use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); require Exporter; @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END); @ISA = qw(Exporter); -$VERSION = "1.06"; +$VERSION = "1.08"; sub seek { - @_ == 3 or croak 'usage: $fh->seek(POS, WHENCE)'; + @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)'; seek($_[0], $_[1], $_[2]); } +sub sysseek { + @_ == 3 or croak 'usage: $io->sysseek(POS, WHENCE)'; + sysseek($_[0], $_[1], $_[2]); +} + sub tell { - @_ == 1 or croak 'usage: $fh->tell()'; + @_ == 1 or croak 'usage: $io->tell()'; tell($_[0]); } diff --git a/contrib/perl5/ext/IO/lib/IO/Select.pm b/contrib/perl5/ext/IO/lib/IO/Select.pm index dea684a62eda..df92b04b74f3 100644 --- a/contrib/perl5/ext/IO/lib/IO/Select.pm +++ b/contrib/perl5/ext/IO/lib/IO/Select.pm @@ -1,163 +1,17 @@ # IO::Select.pm # -# Copyright (c) 1995 Graham Barr. All rights reserved. This program is free -# software; you can redistribute it and/or modify it under the same terms -# as Perl itself. +# Copyright (c) 1997-8 Graham Barr . All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. package IO::Select; -=head1 NAME - -IO::Select - OO interface to the select system call - -=head1 SYNOPSIS - - use IO::Select; - - $s = IO::Select->new(); - - $s->add(\*STDIN); - $s->add($some_handle); - - @ready = $s->can_read($timeout); - - @ready = IO::Select->new(@handles)->read(0); - -=head1 DESCRIPTION - -The C package implements an object approach to the system C static method. - -=item bits() - -Return the bit string suitable as argument to the core select() call. - -=item bits() - -Return the bit string suitable as argument to the core select() call. - -=item select ( READ, WRITE, ERROR [, TIMEOUT ] ) - -C +function call. It allows the user to see what IO handles, see L, +are ready for reading, writing or have an error condition pending. + +=head1 CONSTRUCTOR + +=over 4 + +=item new ( [ HANDLES ] ) + +The constructor creates a new object and optionally initialises it with a set +of handles. + +=back + +=head1 METHODS + +=over 4 + +=item add ( HANDLES ) + +Add the list of handles to the C object. It is these values that +will be returned when an event occurs. C keeps these values in a +cache which is indexed by the C of the handle, so if more than one +handle with the same C is specified then only the last one is cached. + +Each handle can be an C object, an integer or an array +reference where the first element is a C or an integer. + +=item remove ( HANDLES ) + +Remove all the given handles from the object. This method also works +by the C of the handles. So the exact handles that were added +need not be passed, just handles that have an equivalent C + +=item exists ( HANDLE ) + +Returns a true value (actually the handle itself) if it is present. +Returns undef otherwise. + +=item handles + +Return an array of all registered handles. + +=item can_read ( [ TIMEOUT ] ) + +Return an array of handles that are ready for reading. C is +the maximum amount of time to wait before returning an empty list. If +C is not given and any handles are registered then the call +will block. + +=item can_write ( [ TIMEOUT ] ) + +Same as C except check for handles that can be written to. + +=item has_exception ( [ TIMEOUT ] ) + +Same as C except check for handles that have an exception +condition, for example pending out-of-band data. + +=item count () + +Returns the number of handles that the object will check for when +one of the C methods is called or the object is passed to +the C is a static method, that is you call it with the package +name like C. C, C and C are either C +or C objects. C is optional and has the same +effect as for the core select call. + +The result will be an array of 3 elements, each a reference to an array +which will hold the handles that are ready for reading, writing and have +error conditions respectively. Upon error an empty array is returned. + +=back + +=head1 EXAMPLE + +Here is a short example which shows how C could be used +to write a server which communicates with several sockets while also +listening for more connections on a listen socket + + use IO::Select; + use IO::Socket; + + $lsn = new IO::Socket::INET(Listen => 1, LocalPort => 8080); + $sel = new IO::Select( $lsn ); + + while(@ready = $sel->can_read) { + foreach $fh (@ready) { + if($fh == $lsn) { + # Create a new socket + $new = $lsn->accept; + $sel->add($new); + } + else { + # Process socket + + # Maybe we have finished with the socket + $sel->remove($fh); + $fh->close; + } + } + } + +=head1 AUTHOR + +Graham Barr. Currently maintained by the Perl Porters. Please report all +bugs to . + +=head1 COPYRIGHT + +Copyright (c) 1997-8 Graham Barr . All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut + diff --git a/contrib/perl5/ext/IO/lib/IO/Socket.pm b/contrib/perl5/ext/IO/lib/IO/Socket.pm index 2b4bc49daf7e..6884f02cf868 100644 --- a/contrib/perl5/ext/IO/lib/IO/Socket.pm +++ b/contrib/perl5/ext/IO/lib/IO/Socket.pm @@ -1,11 +1,296 @@ # IO::Socket.pm # -# Copyright (c) 1996 Graham Barr . All rights -# reserved. This program is free software; you can redistribute it and/or +# Copyright (c) 1997-8 Graham Barr . All rights reserved. +# This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. package IO::Socket; +require 5.005_64; + +use IO::Handle; +use Socket 1.3; +use Carp; +use strict; +our(@ISA, $VERSION); +use Exporter; +use Errno; + +# legacy + +require IO::Socket::INET; +require IO::Socket::UNIX if ($^O ne 'epoc'); + +@ISA = qw(IO::Handle); + +$VERSION = "1.26"; + +sub import { + my $pkg = shift; + my $callpkg = caller; + Exporter::export 'Socket', $callpkg, @_; +} + +sub new { + my($class,%arg) = @_; + my $sock = $class->SUPER::new(); + + $sock->autoflush(1); + + ${*$sock}{'io_socket_timeout'} = delete $arg{Timeout}; + + return scalar(%arg) ? $sock->configure(\%arg) + : $sock; +} + +my @domain2pkg; + +sub register_domain { + my($p,$d) = @_; + $domain2pkg[$d] = $p; +} + +sub configure { + my($sock,$arg) = @_; + my $domain = delete $arg->{Domain}; + + croak 'IO::Socket: Cannot configure a generic socket' + unless defined $domain; + + croak "IO::Socket: Unsupported socket domain" + unless defined $domain2pkg[$domain]; + + croak "IO::Socket: Cannot configure socket in domain '$domain'" + unless ref($sock) eq "IO::Socket"; + + bless($sock, $domain2pkg[$domain]); + $sock->configure($arg); +} + +sub socket { + @_ == 4 or croak 'usage: $sock->socket(DOMAIN, TYPE, PROTOCOL)'; + my($sock,$domain,$type,$protocol) = @_; + + socket($sock,$domain,$type,$protocol) or + return undef; + + ${*$sock}{'io_socket_domain'} = $domain; + ${*$sock}{'io_socket_type'} = $type; + ${*$sock}{'io_socket_proto'} = $protocol; + + $sock; +} + +sub socketpair { + @_ == 4 || croak 'usage: IO::Socket->socketpair(DOMAIN, TYPE, PROTOCOL)'; + my($class,$domain,$type,$protocol) = @_; + my $sock1 = $class->new(); + my $sock2 = $class->new(); + + socketpair($sock1,$sock2,$domain,$type,$protocol) or + return (); + + ${*$sock1}{'io_socket_type'} = ${*$sock2}{'io_socket_type'} = $type; + ${*$sock1}{'io_socket_proto'} = ${*$sock2}{'io_socket_proto'} = $protocol; + + ($sock1,$sock2); +} + +sub connect { + @_ == 2 or croak 'usage: $sock->connect(NAME)'; + my $sock = shift; + my $addr = shift; + my $timeout = ${*$sock}{'io_socket_timeout'}; + my $err; + my $blocking; + $blocking = $sock->blocking(0) if $timeout; + + if (!connect($sock, $addr)) { + if ($timeout && $!{EINPROGRESS}) { + require IO::Select; + + my $sel = new IO::Select $sock; + + if (!$sel->can_write($timeout)) { + $err = $! || (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1); + $@ = "connect: timeout"; + } + elsif(!connect($sock,$addr) && not $!{EISCONN}) { + # Some systems refuse to re-connect() to + # an already open socket and set errno to EISCONN. + $err = $!; + $@ = "connect: $!"; + } + } + else { + $err = $!; + $@ = "connect: $!"; + } + } + + $sock->blocking(1) if $blocking; + + $! = $err if $err; + + $err ? undef : $sock; +} + +sub bind { + @_ == 2 or croak 'usage: $sock->bind(NAME)'; + my $sock = shift; + my $addr = shift; + + return bind($sock, $addr) ? $sock + : undef; +} + +sub listen { + @_ >= 1 && @_ <= 2 or croak 'usage: $sock->listen([QUEUE])'; + my($sock,$queue) = @_; + $queue = 5 + unless $queue && $queue > 0; + + return listen($sock, $queue) ? $sock + : undef; +} + +sub accept { + @_ == 1 || @_ == 2 or croak 'usage $sock->accept([PKG])'; + my $sock = shift; + my $pkg = shift || $sock; + my $timeout = ${*$sock}{'io_socket_timeout'}; + my $new = $pkg->new(Timeout => $timeout); + my $peer = undef; + + if($timeout) { + require IO::Select; + + my $sel = new IO::Select $sock; + + unless ($sel->can_read($timeout)) { + $@ = 'accept: timeout'; + $! = (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1); + return; + } + } + + $peer = accept($new,$sock) + or return; + + return wantarray ? ($new, $peer) + : $new; +} + +sub sockname { + @_ == 1 or croak 'usage: $sock->sockname()'; + getsockname($_[0]); +} + +sub peername { + @_ == 1 or croak 'usage: $sock->peername()'; + my($sock) = @_; + getpeername($sock) + || ${*$sock}{'io_socket_peername'} + || undef; +} + +sub connected { + @_ == 1 or croak 'usage: $sock->connected()'; + my($sock) = @_; + getpeername($sock); +} + +sub send { + @_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]])'; + my $sock = $_[0]; + my $flags = $_[2] || 0; + my $peer = $_[3] || $sock->peername; + + croak 'send: Cannot determine peer address' + unless($peer); + + my $r = defined(getpeername($sock)) + ? send($sock, $_[1], $flags) + : send($sock, $_[1], $flags, $peer); + + # remember who we send to, if it was sucessful + ${*$sock}{'io_socket_peername'} = $peer + if(@_ == 4 && defined $r); + + $r; +} + +sub recv { + @_ == 3 || @_ == 4 or croak 'usage: $sock->recv(BUF, LEN [, FLAGS])'; + my $sock = $_[0]; + my $len = $_[2]; + my $flags = $_[3] || 0; + + # remember who we recv'd from + ${*$sock}{'io_socket_peername'} = recv($sock, $_[1]='', $len, $flags); +} + +sub shutdown { + @_ == 2 or croak 'usage: $sock->shutdown(HOW)'; + my($sock, $how) = @_; + shutdown($sock, $how); +} + +sub setsockopt { + @_ == 4 or croak '$sock->setsockopt(LEVEL, OPTNAME)'; + setsockopt($_[0],$_[1],$_[2],$_[3]); +} + +my $intsize = length(pack("i",0)); + +sub getsockopt { + @_ == 3 or croak '$sock->getsockopt(LEVEL, OPTNAME)'; + my $r = getsockopt($_[0],$_[1],$_[2]); + # Just a guess + $r = unpack("i", $r) + if(defined $r && length($r) == $intsize); + $r; +} + +sub sockopt { + my $sock = shift; + @_ == 1 ? $sock->getsockopt(SOL_SOCKET,@_) + : $sock->setsockopt(SOL_SOCKET,@_); +} + +sub timeout { + @_ == 1 || @_ == 2 or croak 'usage: $sock->timeout([VALUE])'; + my($sock,$val) = @_; + my $r = ${*$sock}{'io_socket_timeout'} || undef; + + ${*$sock}{'io_socket_timeout'} = 0 + $val + if(@_ == 2); + + $r; +} + +sub sockdomain { + @_ == 1 or croak 'usage: $sock->sockdomain()'; + my $sock = shift; + ${*$sock}{'io_socket_domain'}; +} + +sub socktype { + @_ == 1 or croak 'usage: $sock->socktype()'; + my $sock = shift; + ${*$sock}{'io_socket_type'} +} + +sub protocol { + @_ == 1 or croak 'usage: $sock->protocol()'; + my($sock) = @_; + ${*$sock}{'io_socket_proto'}; +} + +1; + +__END__ + =head1 NAME IO::Socket - Object interface to socket communications @@ -39,10 +324,12 @@ C only looks for one key C which tells new which domain the socket will be in. All other arguments will be passed to the configuration method of the package for that domain, See below. -Cs will be in autoflush mode after creation. Note that -versions of IO::Socket prior to 1.1603 (as shipped with Perl 5.004_04) -did not do this. So if you need backward compatibility, you should -set autoflush explicitly. + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + +As of VERSION 1.18 all IO::Socket objects have autoflush turned on +by default. This was not the case with earlier releases. + + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE =back @@ -61,6 +348,7 @@ corresponding built-in functions: recv peername (getpeername) sockname (getsockname) + shutdown Some methods take slightly different arguments to those defined in L in attempt to make the interface more flexible. These are @@ -74,10 +362,19 @@ new object will be created in the same class as the listen socket, unless C is specified. This object can be used to communicate with the client that was trying to connect. In a scalar context the new socket is returned, or undef upon failure. In an array context a two-element array is returned -containing the new socket and the peer address, the list will +containing the new socket and the peer address; the list will be empty upon failure. -Additional methods that are provided are +=item socketpair(DOMAIN, TYPE, PROTOCOL) + +Call C and return a list of two sockets created, or an +empty list on failure. + +=back + +Additional methods that are provided are: + +=over 4 =item timeout([VAL]) @@ -106,623 +403,26 @@ Returns the numerical number for the protocol being used on the socket, if known. If the protocol is unknown, as with an AF_UNIX socket, zero is returned. -=back +=item connected -=cut - - -require 5.000; - -use Config; -use IO::Handle; -use Socket 1.3; -use Carp; -use strict; -use vars qw(@ISA $VERSION); -use Exporter; - -@ISA = qw(IO::Handle); - -$VERSION = "1.1603"; - -sub import { - my $pkg = shift; - my $callpkg = caller; - Exporter::export 'Socket', $callpkg, @_; -} - -sub new { - my($class,%arg) = @_; - my $fh = $class->SUPER::new(); - $fh->autoflush; - - ${*$fh}{'io_socket_timeout'} = delete $arg{Timeout}; - - return scalar(%arg) ? $fh->configure(\%arg) - : $fh; -} - -my @domain2pkg = (); - -sub register_domain { - my($p,$d) = @_; - $domain2pkg[$d] = $p; -} - -sub configure { - my($fh,$arg) = @_; - my $domain = delete $arg->{Domain}; - - croak 'IO::Socket: Cannot configure a generic socket' - unless defined $domain; - - croak "IO::Socket: Unsupported socket domain" - unless defined $domain2pkg[$domain]; - - croak "IO::Socket: Cannot configure socket in domain '$domain'" - unless ref($fh) eq "IO::Socket"; - - bless($fh, $domain2pkg[$domain]); - $fh->configure($arg); -} - -sub socket { - @_ == 4 or croak 'usage: $fh->socket(DOMAIN, TYPE, PROTOCOL)'; - my($fh,$domain,$type,$protocol) = @_; - - socket($fh,$domain,$type,$protocol) or - return undef; - - ${*$fh}{'io_socket_domain'} = $domain; - ${*$fh}{'io_socket_type'} = $type; - ${*$fh}{'io_socket_proto'} = $protocol; - - $fh; -} - -sub socketpair { - @_ == 4 || croak 'usage: IO::Socket->pair(DOMAIN, TYPE, PROTOCOL)'; - my($class,$domain,$type,$protocol) = @_; - my $fh1 = $class->new(); - my $fh2 = $class->new(); - - socketpair($fh1,$fh2,$domain,$type,$protocol) or - return (); - - ${*$fh1}{'io_socket_type'} = ${*$fh2}{'io_socket_type'} = $type; - ${*$fh1}{'io_socket_proto'} = ${*$fh2}{'io_socket_proto'} = $protocol; - - ($fh1,$fh2); -} - -sub connect { - @_ == 2 || @_ == 3 or croak 'usage: $fh->connect(NAME) or $fh->connect(PORT, ADDR)'; - my $fh = shift; - my $addr = @_ == 1 ? shift : sockaddr_in(@_); - my $timeout = ${*$fh}{'io_socket_timeout'}; - local($SIG{ALRM}) = $timeout ? sub { undef $fh; } - : $SIG{ALRM} || 'DEFAULT'; - - eval { - croak 'connect: Bad address' - if(@_ == 2 && !defined $_[1]); - - if($timeout) { - defined $Config{d_alarm} && defined alarm($timeout) or - $timeout = 0; - } - - my $ok = connect($fh, $addr); - - alarm(0) - if($timeout); - - croak "connect: timeout" - unless defined $fh; - - undef $fh unless $ok; - }; - - $fh; -} - -sub bind { - @_ == 2 || @_ == 3 or croak 'usage: $fh->bind(NAME) or $fh->bind(PORT, ADDR)'; - my $fh = shift; - my $addr = @_ == 1 ? shift : sockaddr_in(@_); - - return bind($fh, $addr) ? $fh - : undef; -} - -sub listen { - @_ >= 1 && @_ <= 2 or croak 'usage: $fh->listen([QUEUE])'; - my($fh,$queue) = @_; - $queue = 5 - unless $queue && $queue > 0; - - return listen($fh, $queue) ? $fh - : undef; -} - -sub accept { - @_ == 1 || @_ == 2 or croak 'usage $fh->accept([PKG])'; - my $fh = shift; - my $pkg = shift || $fh; - my $timeout = ${*$fh}{'io_socket_timeout'}; - my $new = $pkg->new(Timeout => $timeout); - my $peer = undef; - - eval { - if($timeout) { - my $fdset = ""; - vec($fdset, $fh->fileno,1) = 1; - croak "accept: timeout" - unless select($fdset,undef,undef,$timeout); - } - $peer = accept($new,$fh); - }; - - return wantarray ? defined $peer ? ($new, $peer) - : () - : defined $peer ? $new - : undef; -} - -sub sockname { - @_ == 1 or croak 'usage: $fh->sockname()'; - getsockname($_[0]); -} - -sub peername { - @_ == 1 or croak 'usage: $fh->peername()'; - my($fh) = @_; - getpeername($fh) - || ${*$fh}{'io_socket_peername'} - || undef; -} - -sub send { - @_ >= 2 && @_ <= 4 or croak 'usage: $fh->send(BUF, [FLAGS, [TO]])'; - my $fh = $_[0]; - my $flags = $_[2] || 0; - my $peer = $_[3] || $fh->peername; - - croak 'send: Cannot determine peer address' - unless($peer); - - my $r = defined(getpeername($fh)) - ? send($fh, $_[1], $flags) - : send($fh, $_[1], $flags, $peer); - - # remember who we send to, if it was sucessful - ${*$fh}{'io_socket_peername'} = $peer - if(@_ == 4 && defined $r); - - $r; -} - -sub recv { - @_ == 3 || @_ == 4 or croak 'usage: $fh->recv(BUF, LEN [, FLAGS])'; - my $sock = $_[0]; - my $len = $_[2]; - my $flags = $_[3] || 0; - - # remember who we recv'd from - ${*$sock}{'io_socket_peername'} = recv($sock, $_[1]='', $len, $flags); -} - - -sub setsockopt { - @_ == 4 or croak '$fh->setsockopt(LEVEL, OPTNAME)'; - setsockopt($_[0],$_[1],$_[2],$_[3]); -} - -my $intsize = length(pack("i",0)); - -sub getsockopt { - @_ == 3 or croak '$fh->getsockopt(LEVEL, OPTNAME)'; - my $r = getsockopt($_[0],$_[1],$_[2]); - # Just a guess - $r = unpack("i", $r) - if(defined $r && length($r) == $intsize); - $r; -} - -sub sockopt { - my $fh = shift; - @_ == 1 ? $fh->getsockopt(SOL_SOCKET,@_) - : $fh->setsockopt(SOL_SOCKET,@_); -} - -sub timeout { - @_ == 1 || @_ == 2 or croak 'usage: $fh->timeout([VALUE])'; - my($fh,$val) = @_; - my $r = ${*$fh}{'io_socket_timeout'} || undef; - - ${*$fh}{'io_socket_timeout'} = 0 + $val - if(@_ == 2); - - $r; -} - -sub sockdomain { - @_ == 1 or croak 'usage: $fh->sockdomain()'; - my $fh = shift; - ${*$fh}{'io_socket_domain'}; -} - -sub socktype { - @_ == 1 or croak 'usage: $fh->socktype()'; - my $fh = shift; - ${*$fh}{'io_socket_type'} -} - -sub protocol { - @_ == 1 or croak 'usage: $fh->protocol()'; - my($fh) = @_; - ${*$fh}{'io_socket_protocol'}; -} - -=head1 SUB-CLASSES - -=cut - -## -## AF_INET -## - -package IO::Socket::INET; - -use strict; -use vars qw(@ISA); -use Socket; -use Carp; -use Exporter; - -@ISA = qw(IO::Socket); - -IO::Socket::INET->register_domain( AF_INET ); - -my %socket_type = ( tcp => SOCK_STREAM, - udp => SOCK_DGRAM, - icmp => SOCK_RAW, - ); - -=head2 IO::Socket::INET - -C provides a constructor to create an AF_INET domain socket -and some related methods. The constructor can take the following options - - PeerAddr Remote host address [:] - PeerPort Remote port or service [()] | - LocalAddr Local host bind address hostname[:port] - LocalPort Local host bind port [()] | - Proto Protocol name (or number) "tcp" | "udp" | ... - Type Socket type SOCK_STREAM | SOCK_DGRAM | ... - Listen Queue size for listen - Reuse Set SO_REUSEADDR before binding - Timeout Timeout value for various operations - - -If C is defined then a listen socket is created, else if the -socket type, which is derived from the protocol, is SOCK_STREAM then -connect() is called. - -The C can be a hostname or the IP-address on the -"xx.xx.xx.xx" form. The C can be a number or a symbolic -service name. The service name might be followed by a number in -parenthesis which is used if the service is not known by the system. -The C specification can also be embedded in the C -by preceding it with a ":". - -If C is not given and you specify a symbolic C port, -then the constructor will try to derive C from the service -name. As a last resort C "tcp" is assumed. The C -parameter will be deduced from C if not specified. - -If the constructor is only passed a single argument, it is assumed to -be a C specification. - -Examples: - - $sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org', - PeerPort => 'http(80)', - Proto => 'tcp'); - - $sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)'); - - $sock = IO::Socket::INET->new(Listen => 5, - LocalAddr => 'localhost', - LocalPort => 9000, - Proto => 'tcp'); - - $sock = IO::Socket::INET->new('127.0.0.1:25'); - - -=head2 METHODS - -=over 4 - -=item sockaddr () - -Return the address part of the sockaddr structure for the socket - -=item sockport () - -Return the port number that the socket is using on the local host - -=item sockhost () - -Return the address part of the sockaddr structure for the socket in a -text form xx.xx.xx.xx - -=item peeraddr () - -Return the address part of the sockaddr structure for the socket on -the peer host - -=item peerport () - -Return the port number for the socket on the peer host. - -=item peerhost () - -Return the address part of the sockaddr structure for the socket on the -peer host in a text form xx.xx.xx.xx +If the socket is in a connected state the the peer address is returned. +If the socket is not in a connected state then undef will be returned. =back -=cut - -sub new -{ - my $class = shift; - unshift(@_, "PeerAddr") if @_ == 1; - return $class->SUPER::new(@_); -} - -sub _sock_info { - my($addr,$port,$proto) = @_; - my @proto = (); - my @serv = (); - - $port = $1 - if(defined $addr && $addr =~ s,:([\w\(\)/]+)$,,); - - if(defined $proto) { - @proto = $proto =~ m,\D, ? getprotobyname($proto) - : getprotobynumber($proto); - - $proto = $proto[2] || undef; - } - - if(defined $port) { - $port =~ s,\((\d+)\)$,,; - - my $defport = $1 || undef; - my $pnum = ($port =~ m,^(\d+)$,)[0]; - - @serv= getservbyname($port, $proto[0] || "") - if($port =~ m,\D,); - - $port = $pnum || $serv[2] || $defport || undef; - - $proto = (getprotobyname($serv[3]))[2] || undef - if @serv && !$proto; - } - - return ($addr || undef, - $port || undef, - $proto || undef - ); -} - -sub _error { - my $fh = shift; - $@ = join("",ref($fh),": ",@_); - carp $@ if $^W; - close($fh) - if(defined fileno($fh)); - return undef; -} - -sub configure { - my($fh,$arg) = @_; - my($lport,$rport,$laddr,$raddr,$proto,$type); - - - ($laddr,$lport,$proto) = _sock_info($arg->{LocalAddr}, - $arg->{LocalPort}, - $arg->{Proto}); - - $laddr = defined $laddr ? inet_aton($laddr) - : INADDR_ANY; - - return _error($fh,"Bad hostname '",$arg->{LocalAddr},"'") - unless(defined $laddr); - - unless(exists $arg->{Listen}) { - ($raddr,$rport,$proto) = _sock_info($arg->{PeerAddr}, - $arg->{PeerPort}, - $proto); - } - - if(defined $raddr) { - $raddr = inet_aton($raddr); - return _error($fh,"Bad hostname '",$arg->{PeerAddr},"'") - unless(defined $raddr); - } - - $proto ||= (getprotobyname "tcp")[2]; - return _error($fh,'Cannot determine protocol') - unless($proto); - - my $pname = (getprotobynumber($proto))[0]; - $type = $arg->{Type} || $socket_type{$pname}; - - $fh->socket(AF_INET, $type, $proto) or - return _error($fh,"$!"); - - if ($arg->{Reuse}) { - $fh->sockopt(SO_REUSEADDR,1) or - return _error($fh); - } - - $fh->bind($lport || 0, $laddr) or - return _error($fh,"$!"); - - if(exists $arg->{Listen}) { - $fh->listen($arg->{Listen} || 5) or - return _error($fh,"$!"); - } - else { - return _error($fh,'Cannot determine remote port') - unless($rport || $type == SOCK_DGRAM || $type == SOCK_RAW); - - if($type == SOCK_STREAM || defined $raddr) { - return _error($fh,'Bad peer address') - unless(defined $raddr); - - $fh->connect($rport,$raddr) or - return _error($fh,"$!"); - } - } - - $fh; -} - -sub sockaddr { - @_ == 1 or croak 'usage: $fh->sockaddr()'; - my($fh) = @_; - (sockaddr_in($fh->sockname))[1]; -} - -sub sockport { - @_ == 1 or croak 'usage: $fh->sockport()'; - my($fh) = @_; - (sockaddr_in($fh->sockname))[0]; -} - -sub sockhost { - @_ == 1 or croak 'usage: $fh->sockhost()'; - my($fh) = @_; - inet_ntoa($fh->sockaddr); -} - -sub peeraddr { - @_ == 1 or croak 'usage: $fh->peeraddr()'; - my($fh) = @_; - (sockaddr_in($fh->peername))[1]; -} - -sub peerport { - @_ == 1 or croak 'usage: $fh->peerport()'; - my($fh) = @_; - (sockaddr_in($fh->peername))[0]; -} - -sub peerhost { - @_ == 1 or croak 'usage: $fh->peerhost()'; - my($fh) = @_; - inet_ntoa($fh->peeraddr); -} - -## -## AF_UNIX -## - -package IO::Socket::UNIX; - -use strict; -use vars qw(@ISA $VERSION); -use Socket; -use Carp; -use Exporter; - -@ISA = qw(IO::Socket); - -IO::Socket::UNIX->register_domain( AF_UNIX ); - -=head2 IO::Socket::UNIX - -C provides a constructor to create an AF_UNIX domain socket -and some related methods. The constructor can take the following options - - Type Type of socket (eg SOCK_STREAM or SOCK_DGRAM) - Local Path to local fifo - Peer Path to peer fifo - Listen Create a listen socket - -=head2 METHODS - -=over 4 - -=item hostpath() - -Returns the pathname to the fifo at the local end - -=item peerpath() - -Returns the pathname to the fifo at the peer end - -=back - -=cut - -sub configure { - my($fh,$arg) = @_; - my($bport,$cport); - - my $type = $arg->{Type} || SOCK_STREAM; - - $fh->socket(AF_UNIX, $type, 0) or - return undef; - - if(exists $arg->{Local}) { - my $addr = sockaddr_un($arg->{Local}); - $fh->bind($addr) or - return undef; - } - if(exists $arg->{Listen}) { - $fh->listen($arg->{Listen} || 5) or - return undef; - } - elsif(exists $arg->{Peer}) { - my $addr = sockaddr_un($arg->{Peer}); - $fh->connect($addr) or - return undef; - } - - $fh; -} - -sub hostpath { - @_ == 1 or croak 'usage: $fh->hostpath()'; - my $n = $_[0]->sockname || return undef; - (sockaddr_un($n))[0]; -} - -sub peerpath { - @_ == 1 or croak 'usage: $fh->peerpath()'; - my $n = $_[0]->peername || return undef; - (sockaddr_un($n))[0]; -} - =head1 SEE ALSO -L, L +L, L, L, L =head1 AUTHOR -Graham Barr EFE +Graham Barr. Currently maintained by the Perl Porters. Please report all +bugs to . =head1 COPYRIGHT -Copyright (c) 1996 Graham Barr. All rights reserved. This program is free -software; you can redistribute it and/or modify it under the same terms -as Perl itself. +Copyright (c) 1997-8 Graham Barr . All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. =cut - -1; # Keep require happy diff --git a/contrib/perl5/ext/IO/lib/IO/Socket/INET.pm b/contrib/perl5/ext/IO/lib/IO/Socket/INET.pm new file mode 100644 index 000000000000..27a3d4d847ee --- /dev/null +++ b/contrib/perl5/ext/IO/lib/IO/Socket/INET.pm @@ -0,0 +1,406 @@ +# IO::Socket::INET.pm +# +# Copyright (c) 1997-8 Graham Barr . All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + +package IO::Socket::INET; + +use strict; +our(@ISA, $VERSION); +use IO::Socket; +use Socket; +use Carp; +use Exporter; +use Errno; + +@ISA = qw(IO::Socket); +$VERSION = "1.25"; + +my $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1; + +IO::Socket::INET->register_domain( AF_INET ); + +my %socket_type = ( tcp => SOCK_STREAM, + udp => SOCK_DGRAM, + icmp => SOCK_RAW + ); + +sub new { + my $class = shift; + unshift(@_, "PeerAddr") if @_ == 1; + return $class->SUPER::new(@_); +} + +sub _sock_info { + my($addr,$port,$proto) = @_; + my @proto = (); + my @serv = (); + + $port = $1 + if(defined $addr && $addr =~ s,:([\w\(\)/]+)$,,); + + if(defined $proto) { + if (@proto = ( $proto =~ m,\D, + ? getprotobyname($proto) + : getprotobynumber($proto)) + ) { + $proto = $proto[2] || undef; + } + else { + $@ = "Bad protocol '$proto'"; + return; + } + } + + if(defined $port) { + $port =~ s,\((\d+)\)$,,; + + my $defport = $1 || undef; + my $pnum = ($port =~ m,^(\d+)$,)[0]; + + if ($port =~ m,\D,) { + unless (@serv = getservbyname($port, $proto[0] || "")) { + $@ = "Bad service '$port'"; + return; + } + } + + $port = $pnum || $serv[2] || $defport || undef; + + $proto = (getprotobyname($serv[3]))[2] || undef + if @serv && !$proto; + } + + return ($addr || undef, + $port || undef, + $proto || undef + ); +} + +sub _error { + my $sock = shift; + my $err = shift; + { + local($!); + $@ = join("",ref($sock),": ",@_); + close($sock) + if(defined fileno($sock)); + } + $! = $err; + return undef; +} + +sub _get_addr { + my($sock,$addr_str, $multi) = @_; + my @addr; + if ($multi && $addr_str !~ /^\d+(?:\.\d+){3}$/) { + (undef, undef, undef, undef, @addr) = gethostbyname($addr_str); + } else { + my $h = inet_aton($addr_str); + push(@addr, $h) if defined $h; + } + @addr; +} + +sub configure { + my($sock,$arg) = @_; + my($lport,$rport,$laddr,$raddr,$proto,$type); + + + $arg->{LocalAddr} = $arg->{LocalHost} + if exists $arg->{LocalHost} && !exists $arg->{LocalAddr}; + + ($laddr,$lport,$proto) = _sock_info($arg->{LocalAddr}, + $arg->{LocalPort}, + $arg->{Proto}) + or return _error($sock, $!, $@); + + $laddr = defined $laddr ? inet_aton($laddr) + : INADDR_ANY; + + return _error($sock, $EINVAL, "Bad hostname '",$arg->{LocalAddr},"'") + unless(defined $laddr); + + $arg->{PeerAddr} = $arg->{PeerHost} + if exists $arg->{PeerHost} && !exists $arg->{PeerAddr}; + + unless(exists $arg->{Listen}) { + ($raddr,$rport,$proto) = _sock_info($arg->{PeerAddr}, + $arg->{PeerPort}, + $proto) + or return _error($sock, $!, $@); + } + + $proto ||= (getprotobyname('tcp'))[2]; + + my $pname = (getprotobynumber($proto))[0]; + $type = $arg->{Type} || $socket_type{$pname}; + + my @raddr = (); + + if(defined $raddr) { + @raddr = $sock->_get_addr($raddr, $arg->{MultiHomed}); + return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'") + unless @raddr; + } + + while(1) { + + $sock->socket(AF_INET, $type, $proto) or + return _error($sock, $!, "$!"); + + if ($arg->{Reuse}) { + $sock->sockopt(SO_REUSEADDR,1) or + return _error($sock, $!, "$!"); + } + + if($lport || ($laddr ne INADDR_ANY) || exists $arg->{Listen}) { + $sock->bind($lport || 0, $laddr) or + return _error($sock, $!, "$!"); + } + + if(exists $arg->{Listen}) { + $sock->listen($arg->{Listen} || 5) or + return _error($sock, $!, "$!"); + last; + } + + # don't try to connect unless we're given a PeerAddr + last unless exists($arg->{PeerAddr}); + + $raddr = shift @raddr; + + return _error($sock, $EINVAL, 'Cannot determine remote port') + unless($rport || $type == SOCK_DGRAM || $type == SOCK_RAW); + + last + unless($type == SOCK_STREAM || defined $raddr); + + return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'") + unless defined $raddr; + +# my $timeout = ${*$sock}{'io_socket_timeout'}; +# my $before = time() if $timeout; + + if ($sock->connect(pack_sockaddr_in($rport, $raddr))) { +# ${*$sock}{'io_socket_timeout'} = $timeout; + return $sock; + } + + return _error($sock, $!, "Timeout") + unless @raddr; + +# if ($timeout) { +# my $new_timeout = $timeout - (time() - $before); +# return _error($sock, +# (exists(&Errno::ETIMEDOUT) ? Errno::ETIMEDOUT() : $EINVAL), +# "Timeout") if $new_timeout <= 0; +# ${*$sock}{'io_socket_timeout'} = $new_timeout; +# } + + } + + $sock; +} + +sub connect { + @_ == 2 || @_ == 3 or + croak 'usage: $sock->connect(NAME) or $sock->connect(PORT, ADDR)'; + my $sock = shift; + return $sock->SUPER::connect(@_ == 1 ? shift : pack_sockaddr_in(@_)); +} + +sub bind { + @_ == 2 || @_ == 3 or + croak 'usage: $sock->bind(NAME) or $sock->bind(PORT, ADDR)'; + my $sock = shift; + return $sock->SUPER::bind(@_ == 1 ? shift : pack_sockaddr_in(@_)) +} + +sub sockaddr { + @_ == 1 or croak 'usage: $sock->sockaddr()'; + my($sock) = @_; + my $name = $sock->sockname; + $name ? (sockaddr_in($name))[1] : undef; +} + +sub sockport { + @_ == 1 or croak 'usage: $sock->sockport()'; + my($sock) = @_; + my $name = $sock->sockname; + $name ? (sockaddr_in($name))[0] : undef; +} + +sub sockhost { + @_ == 1 or croak 'usage: $sock->sockhost()'; + my($sock) = @_; + my $addr = $sock->sockaddr; + $addr ? inet_ntoa($addr) : undef; +} + +sub peeraddr { + @_ == 1 or croak 'usage: $sock->peeraddr()'; + my($sock) = @_; + my $name = $sock->peername; + $name ? (sockaddr_in($name))[1] : undef; +} + +sub peerport { + @_ == 1 or croak 'usage: $sock->peerport()'; + my($sock) = @_; + my $name = $sock->peername; + $name ? (sockaddr_in($name))[0] : undef; +} + +sub peerhost { + @_ == 1 or croak 'usage: $sock->peerhost()'; + my($sock) = @_; + my $addr = $sock->peeraddr; + $addr ? inet_ntoa($addr) : undef; +} + +1; + +__END__ + +=head1 NAME + +IO::Socket::INET - Object interface for AF_INET domain sockets + +=head1 SYNOPSIS + + use IO::Socket::INET; + +=head1 DESCRIPTION + +C provides an object interface to creating and using sockets +in the AF_INET domain. It is built upon the L interface and +inherits all the methods defined by L. + +=head1 CONSTRUCTOR + +=over 4 + +=item new ( [ARGS] ) + +Creates an C object, which is a reference to a +newly created symbol (see the C package). C +optionally takes arguments, these arguments are in key-value pairs. + +In addition to the key-value pairs accepted by L, +C provides. + + + PeerAddr Remote host address [:] + PeerHost Synonym for PeerAddr + PeerPort Remote port or service [()] | + LocalAddr Local host bind address hostname[:port] + LocalHost Synonym for LocalAddr + LocalPort Local host bind port [()] | + Proto Protocol name (or number) "tcp" | "udp" | ... + Type Socket type SOCK_STREAM | SOCK_DGRAM | ... + Listen Queue size for listen + Reuse Set SO_REUSEADDR before binding + Timeout Timeout value for various operations + MultiHomed Try all adresses for multi-homed hosts + + +If C is defined then a listen socket is created, else if the +socket type, which is derived from the protocol, is SOCK_STREAM then +connect() is called. + +Although it is not illegal, the use of C on a socket +which is in non-blocking mode is of little use. This is because the +first connect will never fail with a timeout as the connaect call +will not block. + +The C can be a hostname or the IP-address on the +"xx.xx.xx.xx" form. The C can be a number or a symbolic +service name. The service name might be followed by a number in +parenthesis which is used if the service is not known by the system. +The C specification can also be embedded in the C +by preceding it with a ":". + +If C is not given and you specify a symbolic C port, +then the constructor will try to derive C from the service +name. As a last resort C "tcp" is assumed. The C +parameter will be deduced from C if not specified. + +If the constructor is only passed a single argument, it is assumed to +be a C specification. + +Examples: + + $sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org', + PeerPort => 'http(80)', + Proto => 'tcp'); + + $sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)'); + + $sock = IO::Socket::INET->new(Listen => 5, + LocalAddr => 'localhost', + LocalPort => 9000, + Proto => 'tcp'); + + $sock = IO::Socket::INET->new('127.0.0.1:25'); + + + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + +As of VERSION 1.18 all IO::Socket objects have autoflush turned on +by default. This was not the case with earlier releases. + + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + +=back + +=head2 METHODS + +=over 4 + +=item sockaddr () + +Return the address part of the sockaddr structure for the socket + +=item sockport () + +Return the port number that the socket is using on the local host + +=item sockhost () + +Return the address part of the sockaddr structure for the socket in a +text form xx.xx.xx.xx + +=item peeraddr () + +Return the address part of the sockaddr structure for the socket on +the peer host + +=item peerport () + +Return the port number for the socket on the peer host. + +=item peerhost () + +Return the address part of the sockaddr structure for the socket on the +peer host in a text form xx.xx.xx.xx + +=back + +=head1 SEE ALSO + +L, L + +=head1 AUTHOR + +Graham Barr. Currently maintained by the Perl Porters. Please report all +bugs to . + +=head1 COPYRIGHT + +Copyright (c) 1996-8 Graham Barr . All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut diff --git a/contrib/perl5/ext/IO/lib/IO/Socket/UNIX.pm b/contrib/perl5/ext/IO/lib/IO/Socket/UNIX.pm new file mode 100644 index 000000000000..d083f48b78f7 --- /dev/null +++ b/contrib/perl5/ext/IO/lib/IO/Socket/UNIX.pm @@ -0,0 +1,143 @@ +# IO::Socket::UNIX.pm +# +# Copyright (c) 1997-8 Graham Barr . All rights reserved. +# This program is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. + +package IO::Socket::UNIX; + +use strict; +our(@ISA, $VERSION); +use IO::Socket; +use Socket; +use Carp; + +@ISA = qw(IO::Socket); +$VERSION = "1.20"; + +IO::Socket::UNIX->register_domain( AF_UNIX ); + +sub new { + my $class = shift; + unshift(@_, "Peer") if @_ == 1; + return $class->SUPER::new(@_); +} + +sub configure { + my($sock,$arg) = @_; + my($bport,$cport); + + my $type = $arg->{Type} || SOCK_STREAM; + + $sock->socket(AF_UNIX, $type, 0) or + return undef; + + if(exists $arg->{Local}) { + my $addr = sockaddr_un($arg->{Local}); + $sock->bind($addr) or + return undef; + } + if(exists $arg->{Listen}) { + $sock->listen($arg->{Listen} || 5) or + return undef; + } + elsif(exists $arg->{Peer}) { + my $addr = sockaddr_un($arg->{Peer}); + $sock->connect($addr) or + return undef; + } + + $sock; +} + +sub hostpath { + @_ == 1 or croak 'usage: $sock->hostpath()'; + my $n = $_[0]->sockname || return undef; + (sockaddr_un($n))[0]; +} + +sub peerpath { + @_ == 1 or croak 'usage: $sock->peerpath()'; + my $n = $_[0]->peername || return undef; + (sockaddr_un($n))[0]; +} + +1; # Keep require happy + +__END__ + +=head1 NAME + +IO::Socket::UNIX - Object interface for AF_UNIX domain sockets + +=head1 SYNOPSIS + + use IO::Socket::UNIX; + +=head1 DESCRIPTION + +C provides an object interface to creating and using sockets +in the AF_UNIX domain. It is built upon the L interface and +inherits all the methods defined by L. + +=head1 CONSTRUCTOR + +=over 4 + +=item new ( [ARGS] ) + +Creates an C object, which is a reference to a +newly created symbol (see the C package). C +optionally takes arguments, these arguments are in key-value pairs. + +In addition to the key-value pairs accepted by L, +C provides. + + Type Type of socket (eg SOCK_STREAM or SOCK_DGRAM) + Local Path to local fifo + Peer Path to peer fifo + Listen Create a listen socket + +If the constructor is only passed a single argument, it is assumed to +be a C specification. + + + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + +As of VERSION 1.18 all IO::Socket objects have autoflush turned on +by default. This was not the case with earlier releases. + + NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + +=back + +=head1 METHODS + +=over 4 + +=item hostpath() + +Returns the pathname to the fifo at the local end + +=item peerpath() + +Returns the pathanme to the fifo at the peer end + +=back + +=head1 SEE ALSO + +L, L + +=head1 AUTHOR + +Graham Barr. Currently maintained by the Perl Porters. Please report all +bugs to . + +=head1 COPYRIGHT + +Copyright (c) 1996-8 Graham Barr . All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut diff --git a/contrib/perl5/ext/IO/poll.c b/contrib/perl5/ext/IO/poll.c new file mode 100644 index 000000000000..024c52ff9f4a --- /dev/null +++ b/contrib/perl5/ext/IO/poll.c @@ -0,0 +1,135 @@ +/* + * poll.c + * + * Copyright (c) 1997-8 Graham Barr . All rights reserved. + * This program is free software; you can redistribute it and/or + * modify it under the same terms as Perl itself. + * + * For systems that do not have the poll() system call (for example Linux + * kernels < v2.1.23) try to emulate it as closely as possible using select() + * + */ + +#include "EXTERN.h" +#include "perl.h" +#include "poll.h" +#ifdef I_SYS_TIME +# include +#endif +#ifdef I_TIME +# include +#endif +#include +#if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */ +# include +#endif +#include +#include + +#ifdef HAS_SELECT +#ifdef I_SYS_SELECT +#include +#endif +#endif + +#ifdef EMULATE_POLL_WITH_SELECT + +# define POLL_CAN_READ (POLLIN | POLLRDNORM ) +# define POLL_CAN_WRITE (POLLOUT | POLLWRNORM | POLLWRBAND ) +# define POLL_HAS_EXCP (POLLRDBAND | POLLPRI ) + +# define POLL_EVENTS_MASK (POLL_CAN_READ | POLL_CAN_WRITE | POLL_HAS_EXCP) + +int +poll(struct pollfd *fds, unsigned long nfds, int timeout) +{ + int i,err; + fd_set rfd,wfd,efd,ifd; + struct timeval timebuf; + struct timeval *tbuf = (struct timeval *)0; + int n = 0; + int count; + + FD_ZERO(&ifd); + +again: + + FD_ZERO(&rfd); + FD_ZERO(&wfd); + FD_ZERO(&efd); + + for(i = 0 ; i < nfds ; i++) { + int events = fds[i].events; + int fd = fds[i].fd; + + fds[i].revents = 0; + + if(fd < 0 || FD_ISSET(fd, &ifd)) + continue; + + if(fd > n) + n = fd; + + if(events & POLL_CAN_READ) + FD_SET(fd, &rfd); + + if(events & POLL_CAN_WRITE) + FD_SET(fd, &wfd); + + if(events & POLL_HAS_EXCP) + FD_SET(fd, &efd); + } + + if(timeout >= 0) { + timebuf.tv_sec = timeout / 1000; + timebuf.tv_usec = (timeout % 1000) * 1000; + tbuf = &timebuf; + } + + err = select(n+1,&rfd,&wfd,&efd,tbuf); + + if(err < 0) { +#ifdef HAS_FSTAT + if(errno == EBADF) { + for(i = 0 ; i < nfds ; i++) { + struct stat buf; + if((fstat(fds[i].fd,&buf) < 0) && (errno == EBADF)) { + FD_SET(fds[i].fd, &ifd); + goto again; + } + } + } +#endif /* HAS_FSTAT */ + return err; + } + + count = 0; + + for(i = 0 ; i < nfds ; i++) { + int revents = (fds[i].events & POLL_EVENTS_MASK); + int fd = fds[i].fd; + + if(fd < 0) + continue; + + if(FD_ISSET(fd, &ifd)) + revents = POLLNVAL; + else { + if(!FD_ISSET(fd, &rfd)) + revents &= ~POLL_CAN_READ; + + if(!FD_ISSET(fd, &wfd)) + revents &= ~POLL_CAN_WRITE; + + if(!FD_ISSET(fd, &efd)) + revents &= ~POLL_HAS_EXCP; + } + + if((fds[i].revents = revents) != 0) + count++; + } + + return count; +} + +#endif /* EMULATE_POLL_WITH_SELECT */ diff --git a/contrib/perl5/ext/IO/poll.h b/contrib/perl5/ext/IO/poll.h new file mode 100644 index 000000000000..4055b4962483 --- /dev/null +++ b/contrib/perl5/ext/IO/poll.h @@ -0,0 +1,55 @@ +/* + * poll.h + * + * Copyright (c) 1997-8 Graham Barr . All rights reserved. + * This program is free software; you can redistribute it and/or + * modify it under the same terms as Perl itself. + * + */ + +#ifndef POLL_H +# define POLL_H + +#if (defined(HAS_POLL) && defined(I_POLL)) || defined(POLLWRBAND) +# include +#else +#ifdef HAS_SELECT + + +/* We shall emulate poll using select */ + +#define EMULATE_POLL_WITH_SELECT + +typedef struct pollfd { + int fd; + short events; + short revents; +} pollfd_t; + +#define POLLIN 0x0001 +#define POLLPRI 0x0002 +#define POLLOUT 0x0004 +#define POLLRDNORM 0x0040 +#define POLLWRNORM POLLOUT +#define POLLRDBAND 0x0080 +#define POLLWRBAND 0x0100 +#define POLLNORM POLLRDNORM + +/* Return ONLY events (NON testable) */ + +#define POLLERR 0x0008 +#define POLLHUP 0x0010 +#define POLLNVAL 0x0020 + +int poll (struct pollfd *, unsigned long, int); + +#ifndef HAS_POLL +# define HAS_POLL +#endif + +#endif /* HAS_SELECT */ + +#endif /* I_POLL */ + +#endif /* POLL_H */ + diff --git a/contrib/perl5/ext/IPC/SysV/Msg.pm b/contrib/perl5/ext/IPC/SysV/Msg.pm index a739ca236791..120a5b2d3a98 100644 --- a/contrib/perl5/ext/IPC/SysV/Msg.pm +++ b/contrib/perl5/ext/IPC/SysV/Msg.pm @@ -90,14 +90,14 @@ sub rcv { msgrcv($$self,$buf,$_[1],$_[2] || 0, $_[3] || 0) or return; my $type; - ($type,$_[0]) = unpack("L a*",$buf); + ($type,$_[0]) = unpack("l! a*",$buf); $type; } sub snd { @_ <= 4 && @_ >= 3 or croak '$msg->snd( TYPE, BUF, FLAGS )'; my $self = shift; - msgsnd($$self,pack("L a*",$_[0],$_[1]), $_[2] || 0); + msgsnd($$self,pack("l! a*",$_[0],$_[1]), $_[2] || 0); } @@ -111,17 +111,17 @@ IPC::Msg - SysV Msg IPC object class =head1 SYNOPSIS - use IPC::SysV qw(IPC_PRIVATE S_IRWXU S_IRWXG S_IRWXO); + use IPC::SysV qw(IPC_PRIVATE S_IRWXU); use IPC::Msg; - - $msg = new IPC::Msg(IPC_PRIVATE, S_IRWXU | S_IRWXG | S_IRWXO); - - $msg->snd(pack("L a*",$msgtype,$msg)); - + + $msg = new IPC::Msg(IPC_PRIVATE, S_IRWXU); + + $msg->snd(pack("l! a*",$msgtype,$msg)); + $msg->rcv($buf,256); - + $ds = $msg->stat; - + $msg->remove; =head1 DESCRIPTION @@ -157,8 +157,8 @@ Returns the system message queue identifier. =item rcv ( BUF, LEN [, TYPE [, FLAGS ]] ) -Read a message from the queue. Returns the type of the message read. See -L +Read a message from the queue. Returns the type of the message read. +See L. The BUF becomes tainted. =item remove diff --git a/contrib/perl5/ext/IPC/SysV/Semaphore.pm b/contrib/perl5/ext/IPC/SysV/Semaphore.pm index 464eb0bc1929..faf7411950b9 100644 --- a/contrib/perl5/ext/IPC/SysV/Semaphore.pm +++ b/contrib/perl5/ext/IPC/SysV/Semaphore.pm @@ -155,19 +155,19 @@ IPC::Semaphore - SysV Semaphore IPC object class use IPC::SysV qw(IPC_PRIVATE S_IRWXU IPC_CREAT); use IPC::Semaphore; - + $sem = new IPC::Semaphore(IPC_PRIVATE, 10, S_IRWXU | IPC_CREAT); - + $sem->setall( (0) x 10); - + @sem = $sem->getall; - + $ncnt = $sem->getncnt; - + $zcnt = $sem->getzcnt; - + $ds = $sem->stat; - + $sem->remove; =head1 DESCRIPTION diff --git a/contrib/perl5/ext/IPC/SysV/SysV.pm b/contrib/perl5/ext/IPC/SysV/SysV.pm index eb245937aa41..bebb8fd81bda 100644 --- a/contrib/perl5/ext/IPC/SysV/SysV.pm +++ b/contrib/perl5/ext/IPC/SysV/SysV.pm @@ -74,11 +74,15 @@ C defines and conditionally exports all the constants defined in your system include files which are needed by the SysV IPC calls. +=over + =item ftok( PATH, ID ) Return a key based on PATH and ID, which can be used as a key for C, C and C. See L +=back + =head1 SEE ALSO L, L, L diff --git a/contrib/perl5/ext/IPC/SysV/SysV.xs b/contrib/perl5/ext/IPC/SysV/SysV.xs index ecd52702222b..38062e028b5e 100644 --- a/contrib/perl5/ext/IPC/SysV/SysV.xs +++ b/contrib/perl5/ext/IPC/SysV/SysV.xs @@ -19,7 +19,7 @@ # endif # include # ifndef HAS_SHMAT_PROTOTYPE - extern Shmat_t shmat _((int, char *, int)); + extern Shmat_t shmat (int, char *, int); # endif # if defined(__sparc__) && (defined(__NetBSD__) || defined(__OpenBSD__)) # undef SHMLBA /* not static: determined at boot time */ @@ -30,7 +30,7 @@ /* Required to get 'struct pte' for SHMLBA on ULTRIX. */ #if defined(__ultrix) || defined(__ultrix__) || defined(ultrix) -# include +#include #endif /* Required in BSDI to get PAGE_SIZE definition for SHMLBA. @@ -69,7 +69,7 @@ PPCODE: sv = *av_fetch(list,1,TRUE); ds.msg_perm.gid = SvIV(sv); sv = *av_fetch(list,4,TRUE); ds.msg_perm.mode = SvIV(sv); sv = *av_fetch(list,6,TRUE); ds.msg_qbytes = SvIV(sv); - ST(0) = sv_2mortal(newSVpv((char *)&ds,sizeof(ds))); + ST(0) = sv_2mortal(newSVpvn((char *)&ds,sizeof(ds))); XSRETURN(1); #else croak("System V msgxxx is not implemented on this machine"); @@ -185,7 +185,7 @@ PPCODE: ds.sem_otime = SvIV(*sv_ptr); if((sv_ptr = av_fetch(list,7,TRUE)) && (sv = *sv_ptr)) ds.sem_nsems = SvIV(*sv_ptr); - ST(0) = sv_2mortal(newSVpv((char *)&ds,sizeof(ds))); + ST(0) = sv_2mortal(newSVpvn((char *)&ds,sizeof(ds))); XSRETURN(1); #else croak("System V semxxx is not implemented on this machine"); @@ -203,7 +203,7 @@ ftok(path, id) key_t k = ftok(path, id); ST(0) = k == (key_t) -1 ? &PL_sv_undef : sv_2mortal(newSViv(k)); #else - DIE(no_func, "ftok"); + DIE(PL_no_func, "ftok"); #endif int diff --git a/contrib/perl5/ext/IPC/SysV/hints/cygwin.pl b/contrib/perl5/ext/IPC/SysV/hints/cygwin.pl new file mode 100644 index 000000000000..e1a1dea217e2 --- /dev/null +++ b/contrib/perl5/ext/IPC/SysV/hints/cygwin.pl @@ -0,0 +1,2 @@ +# SysV IPC is an optional Cygwin package +$self->{LIBS} = ['-lcygipc'] diff --git a/contrib/perl5/ext/IPC/SysV/hints/next_3.pl b/contrib/perl5/ext/IPC/SysV/hints/next_3.pl new file mode 100644 index 000000000000..2290ac7400de --- /dev/null +++ b/contrib/perl5/ext/IPC/SysV/hints/next_3.pl @@ -0,0 +1 @@ +$self->{CCFLAGS} = $Config{ccflags} . ' -D_POSIX_SOURCE' ; diff --git a/contrib/perl5/ext/NDBM_File/NDBM_File.pm b/contrib/perl5/ext/NDBM_File/NDBM_File.pm index ed4fe2b36f9b..f98669f4860d 100644 --- a/contrib/perl5/ext/NDBM_File/NDBM_File.pm +++ b/contrib/perl5/ext/NDBM_File/NDBM_File.pm @@ -5,16 +5,14 @@ BEGIN { use strict; } } -use vars qw($VERSION @ISA); require Tie::Hash; -require DynaLoader; +use XSLoader (); -@ISA = qw(Tie::Hash DynaLoader); +our @ISA = qw(Tie::Hash); +our $VERSION = "1.03"; -$VERSION = "1.01"; - -bootstrap NDBM_File $VERSION; +XSLoader::load 'NDBM_File', $VERSION; 1; @@ -35,6 +33,6 @@ NDBM_File - Tied access to ndbm files =head1 DESCRIPTION -See L +See L, L =cut diff --git a/contrib/perl5/ext/NDBM_File/NDBM_File.xs b/contrib/perl5/ext/NDBM_File/NDBM_File.xs index d129a9c49053..49a1db5e5657 100644 --- a/contrib/perl5/ext/NDBM_File/NDBM_File.xs +++ b/contrib/perl5/ext/NDBM_File/NDBM_File.xs @@ -3,39 +3,80 @@ #include "XSUB.h" #include -typedef DBM* NDBM_File; -#define dbm_TIEHASH(dbtype,filename,flags,mode) dbm_open(filename,flags,mode) -#define dbm_FETCH(db,key) dbm_fetch(db,key) -#define dbm_STORE(db,key,value,flags) dbm_store(db,key,value,flags) -#define dbm_DELETE(db,key) dbm_delete(db,key) -#define dbm_FIRSTKEY(db) dbm_firstkey(db) -#define dbm_NEXTKEY(db,key) dbm_nextkey(db) +typedef struct { + DBM * dbp ; + SV * filter_fetch_key ; + SV * filter_store_key ; + SV * filter_fetch_value ; + SV * filter_store_value ; + int filtering ; + } NDBM_File_type; -MODULE = NDBM_File PACKAGE = NDBM_File PREFIX = dbm_ +typedef NDBM_File_type * NDBM_File ; +typedef datum datum_key ; +typedef datum datum_value ; + +#define ckFilter(arg,type,name) \ + if (db->type) { \ + SV * save_defsv ; \ + /* printf("filtering %s\n", name) ;*/ \ + if (db->filtering) \ + croak("recursion detected in %s", name) ; \ + db->filtering = TRUE ; \ + save_defsv = newSVsv(DEFSV) ; \ + sv_setsv(DEFSV, arg) ; \ + PUSHMARK(sp) ; \ + (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS); \ + sv_setsv(arg, DEFSV) ; \ + sv_setsv(DEFSV, save_defsv) ; \ + SvREFCNT_dec(save_defsv) ; \ + db->filtering = FALSE ; \ + /*printf("end of filtering %s\n", name) ;*/ \ + } + + +MODULE = NDBM_File PACKAGE = NDBM_File PREFIX = ndbm_ NDBM_File -dbm_TIEHASH(dbtype, filename, flags, mode) +ndbm_TIEHASH(dbtype, filename, flags, mode) char * dbtype char * filename int flags int mode + CODE: + { + DBM * dbp ; + + RETVAL = NULL ; + if (dbp = dbm_open(filename, flags, mode)) { + RETVAL = (NDBM_File)safemalloc(sizeof(NDBM_File_type)) ; + Zero(RETVAL, 1, NDBM_File_type) ; + RETVAL->dbp = dbp ; + } + + } + OUTPUT: + RETVAL void -dbm_DESTROY(db) +ndbm_DESTROY(db) NDBM_File db CODE: - dbm_close(db); + dbm_close(db->dbp); + safefree(db); -datum -dbm_FETCH(db, key) +#define ndbm_FETCH(db,key) dbm_fetch(db->dbp,key) +datum_value +ndbm_FETCH(db, key) NDBM_File db - datum key + datum_key key +#define ndbm_STORE(db,key,value,flags) dbm_store(db->dbp,key,value,flags) int -dbm_STORE(db, key, value, flags = DBM_REPLACE) +ndbm_STORE(db, key, value, flags = DBM_REPLACE) NDBM_File db - datum key - datum value + datum_key key + datum_value value int flags CLEANUP: if (RETVAL) { @@ -43,28 +84,85 @@ dbm_STORE(db, key, value, flags = DBM_REPLACE) croak("No write permission to ndbm file"); croak("ndbm store returned %d, errno %d, key \"%s\"", RETVAL,errno,key.dptr); - dbm_clearerr(db); + dbm_clearerr(db->dbp); } +#define ndbm_DELETE(db,key) dbm_delete(db->dbp,key) int -dbm_DELETE(db, key) +ndbm_DELETE(db, key) NDBM_File db - datum key + datum_key key -datum -dbm_FIRSTKEY(db) +#define ndbm_FIRSTKEY(db) dbm_firstkey(db->dbp) +datum_key +ndbm_FIRSTKEY(db) NDBM_File db -datum -dbm_NEXTKEY(db, key) +#define ndbm_NEXTKEY(db,key) dbm_nextkey(db->dbp) +datum_key +ndbm_NEXTKEY(db, key) NDBM_File db - datum key + datum_key key +#define ndbm_error(db) dbm_error(db->dbp) int -dbm_error(db) +ndbm_error(db) NDBM_File db +#define ndbm_clearerr(db) dbm_clearerr(db->dbp) void -dbm_clearerr(db) +ndbm_clearerr(db) NDBM_File db + +#define setFilter(type) \ + { \ + if (db->type) \ + RETVAL = sv_mortalcopy(db->type) ; \ + ST(0) = RETVAL ; \ + if (db->type && (code == &PL_sv_undef)) { \ + SvREFCNT_dec(db->type) ; \ + db->type = NULL ; \ + } \ + else if (code) { \ + if (db->type) \ + sv_setsv(db->type, code) ; \ + else \ + db->type = newSVsv(code) ; \ + } \ + } + + + +SV * +filter_fetch_key(db, code) + NDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_key) ; + +SV * +filter_store_key(db, code) + NDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_key) ; + +SV * +filter_fetch_value(db, code) + NDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_value) ; + +SV * +filter_store_value(db, code) + NDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_value) ; + diff --git a/contrib/perl5/ext/NDBM_File/hints/cygwin.pl b/contrib/perl5/ext/NDBM_File/hints/cygwin.pl new file mode 100644 index 000000000000..0a4b7628a496 --- /dev/null +++ b/contrib/perl5/ext/NDBM_File/hints/cygwin.pl @@ -0,0 +1,2 @@ +# uses GDBM ndbm compatibility feature +$self->{LIBS} = ['-lgdbm']; diff --git a/contrib/perl5/ext/NDBM_File/hints/sco.pl b/contrib/perl5/ext/NDBM_File/hints/sco.pl new file mode 100644 index 000000000000..f551578197d2 --- /dev/null +++ b/contrib/perl5/ext/NDBM_File/hints/sco.pl @@ -0,0 +1,4 @@ +# SCO ODT 3.2v4.2 has a -ldbm library that is missing dbmclose. +# This system should have a complete library installed as -ldbm.nfs which +# should be used instead (Probably need the networking product add-on) +$self->{LIBS} = ['-lndbm',-e "/usr/lib/libdbm.nfs.a"?'-ldbm.nfs':'-ldbm']; diff --git a/contrib/perl5/ext/NDBM_File/typemap b/contrib/perl5/ext/NDBM_File/typemap index 317a8f3886cb..eeb5d59027f5 100644 --- a/contrib/perl5/ext/NDBM_File/typemap +++ b/contrib/perl5/ext/NDBM_File/typemap @@ -2,7 +2,8 @@ #################################### DBM SECTION # -datum T_DATUM +datum_key T_DATUM_K +datum_value T_DATUM_V gdatum T_GDATUM NDBM_File T_PTROBJ GDBM_File T_PTROBJ @@ -13,14 +14,23 @@ DBZ_File T_PTROBJ FATALFUNC T_OPAQUEPTR INPUT -T_DATUM +T_DATUM_K + ckFilter($arg, filter_store_key, \"filter_store_key\"); + $var.dptr = SvPV($arg, PL_na); + $var.dsize = (int)PL_na; +T_DATUM_V + ckFilter($arg, filter_store_value, \"filter_store_value\"); $var.dptr = SvPV($arg, PL_na); $var.dsize = (int)PL_na; T_GDATUM UNIMPLEMENTED OUTPUT -T_DATUM +T_DATUM_K sv_setpvn($arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_key,\"filter_fetch_key\"); +T_DATUM_V + sv_setpvn($arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_value,\"filter_fetch_value\"); T_GDATUM sv_usepvn($arg, $var.dptr, $var.dsize); T_PTROBJ diff --git a/contrib/perl5/ext/ODBM_File/ODBM_File.pm b/contrib/perl5/ext/ODBM_File/ODBM_File.pm index 923640ff3481..57fe4c352ddd 100644 --- a/contrib/perl5/ext/ODBM_File/ODBM_File.pm +++ b/contrib/perl5/ext/ODBM_File/ODBM_File.pm @@ -1,16 +1,14 @@ package ODBM_File; use strict; -use vars qw($VERSION @ISA); require Tie::Hash; -require DynaLoader; +use XSLoader (); -@ISA = qw(Tie::Hash DynaLoader); +our @ISA = qw(Tie::Hash); +our $VERSION = "1.02"; -$VERSION = "1.00"; - -bootstrap ODBM_File $VERSION; +XSLoader::load 'ODBM_File', $VERSION; 1; @@ -30,6 +28,6 @@ ODBM_File - Tied access to odbm files =head1 DESCRIPTION -See L +See L, L =cut diff --git a/contrib/perl5/ext/ODBM_File/ODBM_File.xs b/contrib/perl5/ext/ODBM_File/ODBM_File.xs index 892c038a9ced..150f2ef89475 100644 --- a/contrib/perl5/ext/ODBM_File/ODBM_File.xs +++ b/contrib/perl5/ext/ODBM_File/ODBM_File.xs @@ -2,9 +2,6 @@ #include "perl.h" #include "XSUB.h" -#ifdef NULL -#undef NULL /* XXX Why? */ -#endif #ifdef I_DBM # include #else @@ -30,7 +27,37 @@ #include -typedef void* ODBM_File; +typedef struct { + void * dbp ; + SV * filter_fetch_key ; + SV * filter_store_key ; + SV * filter_fetch_value ; + SV * filter_store_value ; + int filtering ; + } ODBM_File_type; + +typedef ODBM_File_type * ODBM_File ; +typedef datum datum_key ; +typedef datum datum_value ; + +#define ckFilter(arg,type,name) \ + if (db->type) { \ + SV * save_defsv ; \ + /* printf("filtering %s\n", name) ;*/ \ + if (db->filtering) \ + croak("recursion detected in %s", name) ; \ + db->filtering = TRUE ; \ + save_defsv = newSVsv(DEFSV) ; \ + sv_setsv(DEFSV, arg) ; \ + PUSHMARK(sp) ; \ + (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS); \ + sv_setsv(arg, DEFSV) ; \ + sv_setsv(DEFSV, save_defsv) ; \ + SvREFCNT_dec(save_defsv) ; \ + db->filtering = FALSE ; \ + /*printf("end of filtering %s\n", name) ;*/ \ + } + #define odbm_FETCH(db,key) fetch(key) #define odbm_STORE(db,key,value,flags) store(key,value) @@ -46,10 +73,6 @@ static int dbmrefcnt; MODULE = ODBM_File PACKAGE = ODBM_File PREFIX = odbm_ -#ifndef NULL -# define NULL 0 -#endif - ODBM_File odbm_TIEHASH(dbtype, filename, flags, mode) char * dbtype @@ -59,6 +82,7 @@ odbm_TIEHASH(dbtype, filename, flags, mode) CODE: { char *tmpbuf; + void * dbp ; if (dbmrefcnt++) croak("Old dbm can only open one database"); New(0, tmpbuf, strlen(filename) + 5, char); @@ -75,7 +99,10 @@ odbm_TIEHASH(dbtype, filename, flags, mode) else croak("ODBM_FILE: Can't open %s", filename); } - RETVAL = (void*)(dbminit(filename) >= 0 ? &dbmrefcnt : 0); + dbp = (void*)(dbminit(filename) >= 0 ? &dbmrefcnt : 0); + RETVAL = (ODBM_File)safemalloc(sizeof(ODBM_File_type)) ; + Zero(RETVAL, 1, ODBM_File_type) ; + RETVAL->dbp = dbp ; ST(0) = sv_mortalcopy(&PL_sv_undef); sv_setptrobj(ST(0), RETVAL, dbtype); } @@ -86,17 +113,18 @@ DESTROY(db) CODE: dbmrefcnt--; dbmclose(); + safefree(db); -datum +datum_value odbm_FETCH(db, key) ODBM_File db - datum key + datum_key key int odbm_STORE(db, key, value, flags = DBM_REPLACE) ODBM_File db - datum key - datum value + datum_key key + datum_value value int flags CLEANUP: if (RETVAL) { @@ -109,14 +137,66 @@ odbm_STORE(db, key, value, flags = DBM_REPLACE) int odbm_DELETE(db, key) ODBM_File db - datum key + datum_key key -datum +datum_key odbm_FIRSTKEY(db) ODBM_File db -datum +datum_key odbm_NEXTKEY(db, key) ODBM_File db - datum key + datum_key key + + +#define setFilter(type) \ + { \ + if (db->type) \ + RETVAL = sv_mortalcopy(db->type) ; \ + ST(0) = RETVAL ; \ + if (db->type && (code == &PL_sv_undef)) { \ + SvREFCNT_dec(db->type) ; \ + db->type = Nullsv ; \ + } \ + else if (code) { \ + if (db->type) \ + sv_setsv(db->type, code) ; \ + else \ + db->type = newSVsv(code) ; \ + } \ + } + + + +SV * +filter_fetch_key(db, code) + ODBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_key) ; + +SV * +filter_store_key(db, code) + ODBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_key) ; + +SV * +filter_fetch_value(db, code) + ODBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_value) ; + +SV * +filter_store_value(db, code) + ODBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_value) ; diff --git a/contrib/perl5/ext/ODBM_File/hints/cygwin.pl b/contrib/perl5/ext/ODBM_File/hints/cygwin.pl new file mode 100644 index 000000000000..a0d33c880767 --- /dev/null +++ b/contrib/perl5/ext/ODBM_File/hints/cygwin.pl @@ -0,0 +1,2 @@ +# uses GDBM dbm compatibility feature +$self->{LIBS} = ['-lgdbm']; diff --git a/contrib/perl5/ext/ODBM_File/hints/sco.pl b/contrib/perl5/ext/ODBM_File/hints/sco.pl index 4664f2bee0f2..f551578197d2 100644 --- a/contrib/perl5/ext/ODBM_File/hints/sco.pl +++ b/contrib/perl5/ext/ODBM_File/hints/sco.pl @@ -1,4 +1,4 @@ -# Some versions of SCO contain a broken -ldbm library that is missing -# dbmclose. Some of those might have a fixed library installed as -# -ldbm.nfs. -$self->{LIBS} = ['-ldbm.nfs', '-ldbm']; +# SCO ODT 3.2v4.2 has a -ldbm library that is missing dbmclose. +# This system should have a complete library installed as -ldbm.nfs which +# should be used instead (Probably need the networking product add-on) +$self->{LIBS} = ['-lndbm',-e "/usr/lib/libdbm.nfs.a"?'-ldbm.nfs':'-ldbm']; diff --git a/contrib/perl5/ext/ODBM_File/typemap b/contrib/perl5/ext/ODBM_File/typemap index 5e12e739338d..7c23815ec75a 100644 --- a/contrib/perl5/ext/ODBM_File/typemap +++ b/contrib/perl5/ext/ODBM_File/typemap @@ -2,7 +2,8 @@ #################################### DBM SECTION # -datum T_DATUM +datum_key T_DATUM_K +datum_value T_DATUM_V gdatum T_GDATUM NDBM_File T_PTROBJ GDBM_File T_PTROBJ @@ -13,13 +14,22 @@ DBZ_File T_PTROBJ FATALFUNC T_OPAQUEPTR INPUT -T_DATUM +T_DATUM_K + ckFilter($arg, filter_store_key, \"filter_store_key\"); + $var.dptr = SvPV($arg, PL_na); + $var.dsize = (int)PL_na; +T_DATUM_V + ckFilter($arg, filter_store_value, \"filter_store_value\"); $var.dptr = SvPV($arg, PL_na); $var.dsize = (int)PL_na; T_GDATUM UNIMPLEMENTED OUTPUT -T_DATUM +T_DATUM_K sv_setpvn($arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_key,\"filter_fetch_key\"); +T_DATUM_V + sv_setpvn($arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_value,\"filter_fetch_value\"); T_GDATUM sv_usepvn($arg, $var.dptr, $var.dsize); diff --git a/contrib/perl5/ext/Opcode/Opcode.pm b/contrib/perl5/ext/Opcode/Opcode.pm index 0ee6be695592..9338d392fae2 100644 --- a/contrib/perl5/ext/Opcode/Opcode.pm +++ b/contrib/perl5/ext/Opcode/Opcode.pm @@ -1,8 +1,8 @@ package Opcode; -require 5.002; +require 5.005_64; -use vars qw($VERSION $XS_VERSION @ISA @EXPORT_OK); +our($VERSION, $XS_VERSION, @ISA, @EXPORT_OK); $VERSION = "1.04"; $XS_VERSION = "1.03"; @@ -10,8 +10,8 @@ $XS_VERSION = "1.03"; use strict; use Carp; use Exporter (); -use DynaLoader (); -@ISA = qw(Exporter DynaLoader); +use XSLoader (); +@ISA = qw(Exporter); BEGIN { @EXPORT_OK = qw( @@ -28,7 +28,7 @@ sub opset_to_hex ($); sub opdump (;$); use subs @EXPORT_OK; -bootstrap Opcode $XS_VERSION; +XSLoader::load 'Opcode', $XS_VERSION; _init_optags(); @@ -130,7 +130,7 @@ Your mileage will vary. If in any doubt B. =head1 Operator Names and Operator Lists The canonical list of operator names is the contents of the array -op_name defined and initialised in file F of the Perl +PL_op_name defined and initialised in file F of the Perl source distribution (and installed into the perl library). Each operator has both a terse name (its opname) and a more verbose or @@ -332,11 +332,11 @@ invert_opset function. cond_expr flip flop andassign orassign and or xor - warn die lineseq nextstate unstack scope enter leave + warn die lineseq nextstate scope enter leave setstate rv2cv anoncode prototype - entersub leavesub return method -- XXX loops via recursion? + entersub leavesub leavesublv return method method_named -- XXX loops via recursion? leaveeval -- needed for Safe to operate, is safe without entereval @@ -365,7 +365,7 @@ used to implement a resource attack (e.g., consume all available CPU time). grepstart grepwhile mapstart mapwhile enteriter iter - enterloop leaveloop + enterloop leaveloop unstack last next redo goto diff --git a/contrib/perl5/ext/Opcode/Opcode.xs b/contrib/perl5/ext/Opcode/Opcode.xs index e93b90046a32..581cbc94d939 100644 --- a/contrib/perl5/ext/Opcode/Opcode.xs +++ b/contrib/perl5/ext/Opcode/Opcode.xs @@ -1,3 +1,4 @@ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" @@ -11,11 +12,11 @@ static SV *opset_all; /* mask with all bits set */ static IV opset_len; /* length of opmasks in bytes */ static int opcode_debug = 0; -static SV *new_opset _((SV *old_opset)); -static int verify_opset _((SV *opset, int fatal)); -static void set_opset_bits _((char *bitmap, SV *bitspec, int on, char *opname)); -static void put_op_bitspec _((char *optag, STRLEN len, SV *opset)); -static SV *get_op_bitspec _((char *opname, STRLEN len, int fatal)); +static SV *new_opset (pTHX_ SV *old_opset); +static int verify_opset (pTHX_ SV *opset, int fatal); +static void set_opset_bits (pTHX_ char *bitmap, SV *bitspec, int on, char *opname); +static void put_op_bitspec (pTHX_ char *optag, STRLEN len, SV *opset); +static SV *get_op_bitspec (pTHX_ char *opname, STRLEN len, int fatal); /* Initialise our private op_named_bits HV. @@ -27,7 +28,7 @@ static SV *get_op_bitspec _((char *opname, STRLEN len, int fatal)); */ static void -op_names_init(void) +op_names_init(pTHX) { int i; STRLEN len; @@ -43,16 +44,16 @@ op_names_init(void) hv_store(op_named_bits, op_names[i], strlen(op_names[i]), sv, 0); } - put_op_bitspec(":none",0, sv_2mortal(new_opset(Nullsv))); + put_op_bitspec(aTHX_ ":none",0, sv_2mortal(new_opset(aTHX_ Nullsv))); - opset_all = new_opset(Nullsv); + opset_all = new_opset(aTHX_ Nullsv); bitmap = SvPV(opset_all, len); i = len-1; /* deal with last byte specially, see below */ while(i-- > 0) bitmap[i] = 0xFF; /* Take care to set the right number of bits in the last byte */ bitmap[len-1] = (PL_maxo & 0x07) ? ~(0xFF << (PL_maxo & 0x07)) : 0xFF; - put_op_bitspec(":all",0, opset_all); /* don't mortalise */ + put_op_bitspec(aTHX_ ":all",0, opset_all); /* don't mortalise */ } @@ -62,10 +63,10 @@ op_names_init(void) */ static void -put_op_bitspec(char *optag, STRLEN len, SV *mask) +put_op_bitspec(pTHX_ char *optag, STRLEN len, SV *mask) { SV **svp; - verify_opset(mask,1); + verify_opset(aTHX_ mask,1); if (!len) len = strlen(optag); svp = hv_fetch(op_named_bits, optag, len, 1); @@ -83,7 +84,7 @@ put_op_bitspec(char *optag, STRLEN len, SV *mask) */ static SV * -get_op_bitspec(char *opname, STRLEN len, int fatal) +get_op_bitspec(pTHX_ char *opname, STRLEN len, int fatal) { SV **svp; if (!len) @@ -106,11 +107,11 @@ get_op_bitspec(char *opname, STRLEN len, int fatal) static SV * -new_opset(SV *old_opset) +new_opset(pTHX_ SV *old_opset) { SV *opset; if (old_opset) { - verify_opset(old_opset,1); + verify_opset(aTHX_ old_opset,1); opset = newSVsv(old_opset); } else { @@ -125,7 +126,7 @@ new_opset(SV *old_opset) static int -verify_opset(SV *opset, int fatal) +verify_opset(pTHX_ SV *opset, int fatal) { char *err = Nullch; if (!SvOK(opset)) err = "undefined"; @@ -139,7 +140,7 @@ verify_opset(SV *opset, int fatal) static void -set_opset_bits(char *bitmap, SV *bitspec, int on, char *opname) +set_opset_bits(pTHX_ char *bitmap, SV *bitspec, int on, char *opname) { if (SvIOK(bitspec)) { int myopcode = SvIV(bitspec); @@ -173,14 +174,14 @@ set_opset_bits(char *bitmap, SV *bitspec, int on, char *opname) static void -opmask_add(SV *opset) /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF */ +opmask_add(pTHX_ SV *opset) /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF */ { int i,j; char *bitmask; STRLEN len; int myopcode = 0; - verify_opset(opset,1); /* croaks on bad opset */ + verify_opset(aTHX_ opset,1); /* croaks on bad opset */ if (!PL_op_mask) /* caller must ensure PL_op_mask exists */ croak("Can't add to uninitialised PL_op_mask"); @@ -200,23 +201,23 @@ opmask_add(SV *opset) /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF */ } static void -opmask_addlocal(SV *opset, char *op_mask_buf) /* Localise PL_op_mask then opmask_add() */ +opmask_addlocal(pTHX_ SV *opset, char *op_mask_buf) /* Localise PL_op_mask then opmask_add() */ { char *orig_op_mask = PL_op_mask; - SAVEPPTR(PL_op_mask); + SAVEVPTR(PL_op_mask); #if !defined(PERL_OBJECT) /* XXX casting to an ordinary function ptr from a member function ptr * is disallowed by Borland */ if (opcode_debug >= 2) - SAVEDESTRUCTOR((void(CPERLscope(*))_((void*)))warn,"PL_op_mask restored"); + SAVEDESTRUCTOR((void(*)(void*))Perl_warn,"PL_op_mask restored"); #endif PL_op_mask = &op_mask_buf[0]; if (orig_op_mask) Copy(orig_op_mask, PL_op_mask, PL_maxo, char); else Zero(PL_op_mask, PL_maxo, char); - opmask_add(opset); + opmask_add(aTHX_ opset); } @@ -230,7 +231,7 @@ BOOT: opset_len = (PL_maxo + 7) / 8; if (opcode_debug >= 1) warn("opset_len %ld\n", (long)opset_len); - op_names_init(); + op_names_init(aTHX); void @@ -244,7 +245,7 @@ PPCODE: ENTER; - opmask_addlocal(mask, op_mask_buf); + opmask_addlocal(aTHX_ mask, op_mask_buf); save_aptr(&PL_endav); PL_endav = (AV*)sv_2mortal((SV*)newAV()); /* ignore END blocks for now */ @@ -252,6 +253,8 @@ PPCODE: save_hptr(&PL_defstash); /* save current default stack */ /* the assignment to global defstash changes our sense of 'main' */ PL_defstash = gv_stashpv(Package, GV_ADDWARN); /* should exist already */ + save_hptr(&PL_curstash); + PL_curstash = PL_defstash; /* defstash must itself contain a main:: so we'll add that now */ /* take care with the ref counts (was cause of long standing bug) */ @@ -270,7 +273,10 @@ int verify_opset(opset, fatal = 0) SV *opset int fatal - +CODE: + RETVAL = verify_opset(aTHX_ opset,fatal); +OUTPUT: + RETVAL void invert_opset(opset) @@ -279,7 +285,7 @@ CODE: { char *bitmap; STRLEN len = opset_len; - opset = sv_2mortal(new_opset(opset)); /* verify and clone opset */ + opset = sv_2mortal(new_opset(aTHX_ opset)); /* verify and clone opset */ bitmap = SvPVX(opset); while(len-- > 0) bitmap[len] = ~bitmap[len]; @@ -300,7 +306,7 @@ PPCODE: int i, j, myopcode; char *bitmap = SvPV(opset, len); char **names = (desc) ? get_op_descs() : get_op_names(); - verify_opset(opset,1); + verify_opset(aTHX_ opset,1); for (myopcode=0, i=0; i < opset_len; i++) { U16 bits = bitmap[i]; for (j=0; j < 8 && myopcode < PL_maxo; j++, myopcode++) { @@ -318,21 +324,21 @@ CODE: SV *bitspec, *opset; char *bitmap; STRLEN len, on; - opset = sv_2mortal(new_opset(Nullsv)); + opset = sv_2mortal(new_opset(aTHX_ Nullsv)); bitmap = SvPVX(opset); for (i = 0; i < items; i++) { char *opname; on = 1; - if (verify_opset(ST(i),0)) { + if (verify_opset(aTHX_ ST(i),0)) { opname = "(opset)"; bitspec = ST(i); } else { opname = SvPV(ST(i), len); if (*opname == '!') { on=0; ++opname;--len; } - bitspec = get_op_bitspec(opname, len, 1); + bitspec = get_op_bitspec(aTHX_ opname, len, 1); } - set_opset_bits(bitmap, bitspec, on, opname); + set_opset_bits(aTHX_ bitmap, bitspec, on, opname); } ST(0) = opset; @@ -357,13 +363,13 @@ CODE: croak("Not a Safe object"); mask = *hv_fetch((HV*)SvRV(safe), "Mask",4, 1); if (ONLY_THESE) /* *_only = new mask, else edit current */ - sv_setsv(mask, sv_2mortal(new_opset(PERMITING ? opset_all : Nullsv))); + sv_setsv(mask, sv_2mortal(new_opset(aTHX_ PERMITING ? opset_all : Nullsv))); else - verify_opset(mask,1); /* croaks */ + verify_opset(aTHX_ mask,1); /* croaks */ bitmap = SvPVX(mask); for (i = 1; i < items; i++) { on = PERMITING ? 0 : 1; /* deny = mask bit on */ - if (verify_opset(ST(i),0)) { /* it's a valid mask */ + if (verify_opset(aTHX_ ST(i),0)) { /* it's a valid mask */ opname = "(opset)"; bitspec = ST(i); } @@ -371,9 +377,9 @@ CODE: opname = SvPV(ST(i), len); /* invert if op has ! prefix (only one allowed) */ if (*opname == '!') { on = !on; ++opname; --len; } - bitspec = get_op_bitspec(opname, len, 1); /* croaks */ + bitspec = get_op_bitspec(aTHX_ opname, len, 1); /* croaks */ } - set_opset_bits(bitmap, bitspec, on, opname); + set_opset_bits(aTHX_ bitmap, bitspec, on, opname); } ST(0) = &PL_sv_yes; @@ -388,10 +394,10 @@ PPCODE: char **op_desc = get_op_descs(); /* copy args to a scratch area since we may push output values onto */ /* the stack faster than we read values off it if masks are used. */ - args = (SV**)SvPVX(sv_2mortal(newSVpv((char*)&ST(0), items*sizeof(SV*)))); + args = (SV**)SvPVX(sv_2mortal(newSVpvn((char*)&ST(0), items*sizeof(SV*)))); for (i = 0; i < items; i++) { char *opname = SvPV(args[i], len); - SV *bitspec = get_op_bitspec(opname, len, 1); + SV *bitspec = get_op_bitspec(aTHX_ opname, len, 1); if (SvIOK(bitspec)) { myopcode = SvIV(bitspec); if (myopcode < 0 || myopcode >= PL_maxo) @@ -423,19 +429,19 @@ define_optag(optagsv, mask) CODE: STRLEN len; char *optag = SvPV(optagsv, len); - put_op_bitspec(optag, len, mask); /* croaks */ + put_op_bitspec(aTHX_ optag, len, mask); /* croaks */ ST(0) = &PL_sv_yes; void empty_opset() CODE: - ST(0) = sv_2mortal(new_opset(Nullsv)); + ST(0) = sv_2mortal(new_opset(aTHX_ Nullsv)); void full_opset() CODE: - ST(0) = sv_2mortal(new_opset(opset_all)); + ST(0) = sv_2mortal(new_opset(aTHX_ opset_all)); void opmask_add(opset) @@ -443,6 +449,8 @@ opmask_add(opset) PREINIT: if (!PL_op_mask) Newz(0, PL_op_mask, PL_maxo, char); +CODE: + opmask_add(aTHX_ opset); void opcodes() @@ -457,7 +465,7 @@ PPCODE: void opmask() CODE: - ST(0) = sv_2mortal(new_opset(Nullsv)); + ST(0) = sv_2mortal(new_opset(aTHX_ Nullsv)); if (PL_op_mask) { char *bitmap = SvPVX(ST(0)); int myopcode; diff --git a/contrib/perl5/ext/Opcode/Safe.pm b/contrib/perl5/ext/Opcode/Safe.pm index 2d09c2e5c74a..7e1d6a34a7d5 100644 --- a/contrib/perl5/ext/Opcode/Safe.pm +++ b/contrib/perl5/ext/Opcode/Safe.pm @@ -2,9 +2,8 @@ package Safe; use 5.003_11; use strict; -use vars qw($VERSION); -$VERSION = "2.06"; +our $VERSION = "2.06"; use Carp; @@ -235,7 +234,7 @@ sub rdo { 1; -__DATA__ +__END__ =head1 NAME diff --git a/contrib/perl5/ext/POSIX/Makefile.PL b/contrib/perl5/ext/POSIX/Makefile.PL index d379fdb908e0..55c5c1fbf3f6 100644 --- a/contrib/perl5/ext/POSIX/Makefile.PL +++ b/contrib/perl5/ext/POSIX/Makefile.PL @@ -1,7 +1,17 @@ use ExtUtils::MakeMaker; +use Config; +my @libs; +if ($^O ne 'MSWin32') { + if ($Config{archname} =~ /RM\d\d\d-svr4/) { + @libs = ('LIBS' => ["-lm -lc -lposix -lcposix"]); + } + else { + @libs = ('LIBS' => ["-lm -lposix -lcposix"]); + } +} WriteMakefile( NAME => 'POSIX', - ($^O eq 'MSWin32' ? () : (LIBS => ["-lm -lposix -lcposix"])), + @libs, MAN3PODS => {}, # Pods will be built by installman. XSPROTOARG => '-noprototypes', # XXX remove later? VERSION_FROM => 'POSIX.pm', diff --git a/contrib/perl5/ext/POSIX/POSIX.pm b/contrib/perl5/ext/POSIX/POSIX.pm index 84298cb69aa6..9416f70809ab 100644 --- a/contrib/perl5/ext/POSIX/POSIX.pm +++ b/contrib/perl5/ext/POSIX/POSIX.pm @@ -1,203 +1,34 @@ package POSIX; -use vars qw($VERSION @ISA %EXPORT_TAGS @EXPORT_OK $AUTOLOAD); +our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = (); -use Carp; use AutoLoader; -require Config; -use Symbol; -require Exporter; -require DynaLoader; -@ISA = qw(Exporter DynaLoader); +use XSLoader (); -$VERSION = "1.02" ; - -%EXPORT_TAGS = ( - - assert_h => [qw(assert NDEBUG)], - - ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower - isprint ispunct isspace isupper isxdigit tolower toupper)], - - dirent_h => [qw()], - - errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT - EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED - ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT - EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS - EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK - EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH - ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM - ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR - ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM - EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE - ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT - ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY - EUSERS EWOULDBLOCK EXDEV errno)], - - fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK - F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK - O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK - O_RDONLY O_RDWR O_TRUNC O_WRONLY - creat - SEEK_CUR SEEK_END SEEK_SET - S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU - S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID - S_IWGRP S_IWOTH S_IWUSR)], - - float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG - DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP - DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP - FLT_DIG FLT_EPSILON FLT_MANT_DIG - FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP - FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP - FLT_RADIX FLT_ROUNDS - LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG - LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP - LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)], - - grp_h => [qw()], - - limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX - INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON - MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX - PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN - SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX - ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX - _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT - _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX - _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX - _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)], - - locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC - LC_TIME NULL localeconv setlocale)], - - math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod - frexp ldexp log10 modf pow sinh tan tanh)], - - pwd_h => [qw()], - - setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)], - - signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK - SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM - SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL - SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN - SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR - SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal - sigpending sigprocmask sigsuspend)], - - stdarg_h => [qw()], - - stddef_h => [qw(NULL offsetof)], - - stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid - L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET - STREAM_MAX TMP_MAX stderr stdin stdout - clearerr fclose fdopen feof ferror fflush fgetc fgetpos - fgets fopen fprintf fputc fputs fread freopen - fscanf fseek fsetpos ftell fwrite getchar gets - perror putc putchar puts remove rewind - scanf setbuf setvbuf sscanf tmpfile tmpnam - ungetc vfprintf vprintf vsprintf)], - - stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX - abort atexit atof atoi atol bsearch calloc div - free getenv labs ldiv malloc mblen mbstowcs mbtowc - qsort realloc strtod strtol strtoul wcstombs wctomb)], - - string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat - strchr strcmp strcoll strcpy strcspn strerror strlen - strncat strncmp strncpy strpbrk strrchr strspn strstr - strtok strxfrm)], - - sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU - S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG - S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR - fstat mkfifo)], - - sys_times_h => [qw()], - - sys_types_h => [qw()], - - sys_utsname_h => [qw(uname)], - - sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED - WNOHANG WSTOPSIG WTERMSIG WUNTRACED)], - - termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400 - B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL - CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK - ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR - INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST - PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION - TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW - TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART - VSTOP VSUSP VTIME - cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain - tcflow tcflush tcgetattr tcsendbreak tcsetattr )], - - time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime - difftime mktime strftime tzset tzname)], - - unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET - STRERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK - _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON - _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX - _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED - _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS - _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX - _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL - _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_SAVED_IDS - _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION - _exit access ctermid cuserid - dup2 dup execl execle execlp execv execve execvp - fpathconf getcwd getegid geteuid getgid getgroups - getpid getuid isatty lseek pathconf pause setgid setpgid - setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)], - - utime_h => [qw()], - -); - -Exporter::export_tags(); - -@EXPORT_OK = qw( - closedir opendir readdir rewinddir - fcntl open - getgrgid getgrnam - atan2 cos exp log sin sqrt - getpwnam getpwuid - kill - fileno getc printf rename sprintf - abs exit rand srand system - chmod mkdir stat umask - times - wait waitpid - gmtime localtime time - alarm chdir chown close fork getlogin getppid getpgrp link - pipe read rmdir sleep unlink write - utime - nice -); +our $VERSION = "1.03" ; # Grandfather old foo_h form to new :foo_h form +my $loaded; + sub import { + load_imports() unless $loaded++; my $this = shift; my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_; local $Exporter::ExportLevel = 1; Exporter::import($this,@list); } +sub croak { require Carp; goto &Carp::croak } -bootstrap POSIX $VERSION; +XSLoader::load 'POSIX', $VERSION; my $EINVAL = constant("EINVAL", 0); my $EAGAIN = constant("EAGAIN", 0); sub AUTOLOAD { if ($AUTOLOAD =~ /::(_?[a-z])/) { + # require AutoLoader; $AutoLoader::AUTOLOAD = $AUTOLOAD; goto &AutoLoader::AUTOLOAD } @@ -273,7 +104,7 @@ sub closedir { sub opendir { usage "opendir(directory)" if @_ != 1; - my $dirhandle = gensym; + my $dirhandle; CORE::opendir($dirhandle, $_[0]) ? $dirhandle : undef; @@ -932,3 +763,178 @@ sub utime { CORE::utime($_[1], $_[2], $_[0]); } +sub load_imports { +%EXPORT_TAGS = ( + + assert_h => [qw(assert NDEBUG)], + + ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower + isprint ispunct isspace isupper isxdigit tolower toupper)], + + dirent_h => [qw()], + + errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT + EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED + ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT + EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS + EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK + EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH + ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM + ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR + ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM + EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE + ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT + ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY + EUSERS EWOULDBLOCK EXDEV errno)], + + fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK + F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK + O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK + O_RDONLY O_RDWR O_TRUNC O_WRONLY + creat + SEEK_CUR SEEK_END SEEK_SET + S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU + S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID + S_IWGRP S_IWOTH S_IWUSR)], + + float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG + DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP + DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP + FLT_DIG FLT_EPSILON FLT_MANT_DIG + FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP + FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP + FLT_RADIX FLT_ROUNDS + LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG + LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP + LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)], + + grp_h => [qw()], + + limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX + INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON + MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX + PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN + SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX + ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX + _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT + _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX + _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX + _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)], + + locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC + LC_TIME NULL localeconv setlocale)], + + math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod + frexp ldexp log10 modf pow sinh tan tanh)], + + pwd_h => [qw()], + + setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)], + + signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK + SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM + SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL + SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN + SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR + SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal + sigpending sigprocmask sigsuspend)], + + stdarg_h => [qw()], + + stddef_h => [qw(NULL offsetof)], + + stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid + L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET + STREAM_MAX TMP_MAX stderr stdin stdout + clearerr fclose fdopen feof ferror fflush fgetc fgetpos + fgets fopen fprintf fputc fputs fread freopen + fscanf fseek fsetpos ftell fwrite getchar gets + perror putc putchar puts remove rewind + scanf setbuf setvbuf sscanf tmpfile tmpnam + ungetc vfprintf vprintf vsprintf)], + + stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX + abort atexit atof atoi atol bsearch calloc div + free getenv labs ldiv malloc mblen mbstowcs mbtowc + qsort realloc strtod strtol strtoul wcstombs wctomb)], + + string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat + strchr strcmp strcoll strcpy strcspn strerror strlen + strncat strncmp strncpy strpbrk strrchr strspn strstr + strtok strxfrm)], + + sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU + S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG + S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR + fstat mkfifo)], + + sys_times_h => [qw()], + + sys_types_h => [qw()], + + sys_utsname_h => [qw(uname)], + + sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED + WNOHANG WSTOPSIG WTERMSIG WUNTRACED)], + + termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400 + B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL + CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK + ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR + INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST + PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION + TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW + TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART + VSTOP VSUSP VTIME + cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain + tcflow tcflush tcgetattr tcsendbreak tcsetattr )], + + time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime + difftime mktime strftime tzset tzname)], + + unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET + STRERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK + _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON + _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX + _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED + _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS + _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX + _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL + _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_SAVED_IDS + _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION + _exit access ctermid cuserid + dup2 dup execl execle execlp execv execve execvp + fpathconf getcwd getegid geteuid getgid getgroups + getpid getuid isatty lseek pathconf pause setgid setpgid + setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)], + + utime_h => [qw()], + +); + +# Exporter::export_tags(); +for (values %EXPORT_TAGS) { + push @EXPORT, @$_; +} + +@EXPORT_OK = qw( + closedir opendir readdir rewinddir + fcntl open + getgrgid getgrnam + atan2 cos exp log sin sqrt + getpwnam getpwuid + kill + fileno getc printf rename sprintf + abs exit rand srand system + chmod mkdir stat umask + times + wait waitpid + gmtime localtime time + alarm chdir chown close fork getlogin getppid getpgrp link + pipe read rmdir sleep unlink write + utime + nice +); + +require Exporter; +} diff --git a/contrib/perl5/ext/POSIX/POSIX.pod b/contrib/perl5/ext/POSIX/POSIX.pod index 6a4a61aca62e..08300e4337b6 100644 --- a/contrib/perl5/ext/POSIX/POSIX.pod +++ b/contrib/perl5/ext/POSIX/POSIX.pod @@ -847,31 +847,35 @@ setjmp() is C-specific: use eval {} instead. =item setlocale -Modifies and queries program's locale. +Modifies and queries program's locale. The following examples assume + + use POSIX qw(setlocale LC_ALL LC_CTYPE); + +has been issued. The following will set the traditional UNIX system locale behavior (the second argument C<"C">). - $loc = POSIX::setlocale( &POSIX::LC_ALL, "C" ); + $loc = setlocale( LC_ALL, "C" ); -The following will query (the missing second argument) the current -LC_CTYPE category. +The following will query the current LC_CTYPE category. (No second +argument means 'query'.) - $loc = POSIX::setlocale( &POSIX::LC_CTYPE); + $loc = setlocale( LC_CTYPE ); The following will set the LC_CTYPE behaviour according to the locale environment variables (the second argument C<"">). Please see your systems L documentation for the locale environment variables' meaning or consult L. - $loc = POSIX::setlocale( &POSIX::LC_CTYPE, ""); + $loc = setlocale( LC_CTYPE, "" ); The following will set the LC_COLLATE behaviour to Argentinian Spanish. B: The naming and availability of locales depends on your operating system. Please consult L for how to find out which locales are available in your system. - $loc = POSIX::setlocale( &POSIX::LC_ALL, "es_AR.ISO8859-1" ); + $loc = setlocale( LC_ALL, "es_AR.ISO8859-1" ); =item setpgid @@ -1015,8 +1019,13 @@ The month (C), weekday (C), and yearday (C) begin at zero. I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1. The year (C) is given in years since 1900. I.e., the year 1995 is 95; the year 2001 is 101. Consult your system's C manpage for details -about these and the other arguments. The given arguments are made consistent -by calling C before calling your system's C function. +about these and the other arguments. +If you want your code to be portable, your format (C) argument +should use only the conversion specifiers defined by the ANSI C +standard. These are C. +The given arguments are made consistent +as though by calling C before calling your system's +C function, except that the C value is not affected. The string for Tuesday, December 12, 1995. diff --git a/contrib/perl5/ext/POSIX/POSIX.xs b/contrib/perl5/ext/POSIX/POSIX.xs index 15e026e212b2..3a523d1d07a3 100644 --- a/contrib/perl5/ext/POSIX/POSIX.xs +++ b/contrib/perl5/ext/POSIX/POSIX.xs @@ -1,11 +1,14 @@ #ifdef WIN32 #define _POSIX_ #endif + +#define PERL_NO_GET_CONTEXT + #include "EXTERN.h" #define PERLIO_NOT_STDIO 1 #include "perl.h" #include "XSUB.h" -#ifdef PERL_OBJECT /* XXX _very_ temporary hacks */ +#if defined(PERL_OBJECT) || defined(PERL_CAPI) || defined(PERL_IMPLICIT_SYS) # undef signal # undef open # undef setmode @@ -78,6 +81,7 @@ /* The non-POSIX CRTL times() has void return type, so we just get the current time directly */ clock_t vms_times(struct tms *PL_bufptr) { + dTHX; clock_t retval; /* Get wall time and convert to 10 ms intervals to * produce the return value that the POSIX standard expects */ @@ -102,6 +106,9 @@ } # define times(t) vms_times(t) #else +#if defined (__CYGWIN__) +# define tzname _tzname +#endif #if defined (WIN32) # undef mkfifo # define mkfifo(a,b) not_here("mkfifo") @@ -135,8 +142,12 @@ #else # ifndef HAS_MKFIFO -# ifndef mkfifo -# define mkfifo(path, mode) (mknod((path), (mode) | S_IFIFO, 0)) +# ifdef OS2 +# define mkfifo(a,b) not_here("mkfifo") +# else /* !( defined OS2 ) */ +# ifndef mkfifo +# define mkfifo(path, mode) (mknod((path), (mode) | S_IFIFO, 0)) +# endif # endif # endif /* !HAS_MKFIFO */ @@ -177,10 +188,10 @@ typedef struct termios* POSIX__Termios; #endif /* Possibly needed prototypes */ -char *cuserid _((char *)); -double strtod _((const char *, char **)); -long strtol _((const char *, char **, int)); -unsigned long strtoul _((const char *, char **, int)); +char *cuserid (char *); +double strtod (const char *, char **); +long strtol (const char *, char **, int); +unsigned long strtoul (const char *, char **, int); #ifndef HAS_CUSERID #define cuserid(a) (char *) not_here("cuserid") @@ -278,7 +289,7 @@ unsigned long strtoul _((const char *, char **, int)); #endif #ifdef HAS_TZNAME -# ifndef WIN32 +# if !defined(WIN32) && !defined(__CYGWIN__) extern char *tzname[]; # endif #else @@ -303,14 +314,13 @@ char *tzname[] = { "" , "" }; */ #ifdef HAS_GNULIBC # ifndef STRUCT_TM_HASZONE -# define STRUCT_TM_HAS_ZONE +# define STRUCT_TM_HASZONE # endif #endif #ifdef STRUCT_TM_HASZONE static void -init_tm(ptm) /* see mktime, strftime and asctime */ - struct tm *ptm; +init_tm(struct tm *ptm) /* see mktime, strftime and asctime */ { Time_t now; (void)time(&now); @@ -321,6 +331,202 @@ init_tm(ptm) /* see mktime, strftime and asctime */ # define init_tm(ptm) #endif +/* + * mini_mktime - normalise struct tm values without the localtime() + * semantics (and overhead) of mktime(). + */ +static void +mini_mktime(struct tm *ptm) +{ + int yearday; + int secs; + int month, mday, year, jday; + int odd_cent, odd_year; + +#define DAYS_PER_YEAR 365 +#define DAYS_PER_QYEAR (4*DAYS_PER_YEAR+1) +#define DAYS_PER_CENT (25*DAYS_PER_QYEAR-1) +#define DAYS_PER_QCENT (4*DAYS_PER_CENT+1) +#define SECS_PER_HOUR (60*60) +#define SECS_PER_DAY (24*SECS_PER_HOUR) +/* parentheses deliberately absent on these two, otherwise they don't work */ +#define MONTH_TO_DAYS 153/5 +#define DAYS_TO_MONTH 5/153 +/* offset to bias by March (month 4) 1st between month/mday & year finding */ +#define YEAR_ADJUST (4*MONTH_TO_DAYS+1) +/* as used here, the algorithm leaves Sunday as day 1 unless we adjust it */ +#define WEEKDAY_BIAS 6 /* (1+6)%7 makes Sunday 0 again */ + +/* + * Year/day algorithm notes: + * + * With a suitable offset for numeric value of the month, one can find + * an offset into the year by considering months to have 30.6 (153/5) days, + * using integer arithmetic (i.e., with truncation). To avoid too much + * messing about with leap days, we consider January and February to be + * the 13th and 14th month of the previous year. After that transformation, + * we need the month index we use to be high by 1 from 'normal human' usage, + * so the month index values we use run from 4 through 15. + * + * Given that, and the rules for the Gregorian calendar (leap years are those + * divisible by 4 unless also divisible by 100, when they must be divisible + * by 400 instead), we can simply calculate the number of days since some + * arbitrary 'beginning of time' by futzing with the (adjusted) year number, + * the days we derive from our month index, and adding in the day of the + * month. The value used here is not adjusted for the actual origin which + * it normally would use (1 January A.D. 1), since we're not exposing it. + * We're only building the value so we can turn around and get the + * normalised values for the year, month, day-of-month, and day-of-year. + * + * For going backward, we need to bias the value we're using so that we find + * the right year value. (Basically, we don't want the contribution of + * March 1st to the number to apply while deriving the year). Having done + * that, we 'count up' the contribution to the year number by accounting for + * full quadracenturies (400-year periods) with their extra leap days, plus + * the contribution from full centuries (to avoid counting in the lost leap + * days), plus the contribution from full quad-years (to count in the normal + * leap days), plus the leftover contribution from any non-leap years. + * At this point, if we were working with an actual leap day, we'll have 0 + * days left over. This is also true for March 1st, however. So, we have + * to special-case that result, and (earlier) keep track of the 'odd' + * century and year contributions. If we got 4 extra centuries in a qcent, + * or 4 extra years in a qyear, then it's a leap day and we call it 29 Feb. + * Otherwise, we add back in the earlier bias we removed (the 123 from + * figuring in March 1st), find the month index (integer division by 30.6), + * and the remainder is the day-of-month. We then have to convert back to + * 'real' months (including fixing January and February from being 14/15 in + * the previous year to being in the proper year). After that, to get + * tm_yday, we work with the normalised year and get a new yearday value for + * January 1st, which we subtract from the yearday value we had earlier, + * representing the date we've re-built. This is done from January 1 + * because tm_yday is 0-origin. + * + * Since POSIX time routines are only guaranteed to work for times since the + * UNIX epoch (00:00:00 1 Jan 1970 UTC), the fact that this algorithm + * applies Gregorian calendar rules even to dates before the 16th century + * doesn't bother me. Besides, you'd need cultural context for a given + * date to know whether it was Julian or Gregorian calendar, and that's + * outside the scope for this routine. Since we convert back based on the + * same rules we used to build the yearday, you'll only get strange results + * for input which needed normalising, or for the 'odd' century years which + * were leap years in the Julian calander but not in the Gregorian one. + * I can live with that. + * + * This algorithm also fails to handle years before A.D. 1 gracefully, but + * that's still outside the scope for POSIX time manipulation, so I don't + * care. + */ + + year = 1900 + ptm->tm_year; + month = ptm->tm_mon; + mday = ptm->tm_mday; + /* allow given yday with no month & mday to dominate the result */ + if (ptm->tm_yday >= 0 && mday <= 0 && month <= 0) { + month = 0; + mday = 0; + jday = 1 + ptm->tm_yday; + } + else { + jday = 0; + } + if (month >= 2) + month+=2; + else + month+=14, year--; + yearday = DAYS_PER_YEAR * year + year/4 - year/100 + year/400; + yearday += month*MONTH_TO_DAYS + mday + jday; + /* + * Note that we don't know when leap-seconds were or will be, + * so we have to trust the user if we get something which looks + * like a sensible leap-second. Wild values for seconds will + * be rationalised, however. + */ + if ((unsigned) ptm->tm_sec <= 60) { + secs = 0; + } + else { + secs = ptm->tm_sec; + ptm->tm_sec = 0; + } + secs += 60 * ptm->tm_min; + secs += SECS_PER_HOUR * ptm->tm_hour; + if (secs < 0) { + if (secs-(secs/SECS_PER_DAY*SECS_PER_DAY) < 0) { + /* got negative remainder, but need positive time */ + /* back off an extra day to compensate */ + yearday += (secs/SECS_PER_DAY)-1; + secs -= SECS_PER_DAY * (secs/SECS_PER_DAY - 1); + } + else { + yearday += (secs/SECS_PER_DAY); + secs -= SECS_PER_DAY * (secs/SECS_PER_DAY); + } + } + else if (secs >= SECS_PER_DAY) { + yearday += (secs/SECS_PER_DAY); + secs %= SECS_PER_DAY; + } + ptm->tm_hour = secs/SECS_PER_HOUR; + secs %= SECS_PER_HOUR; + ptm->tm_min = secs/60; + secs %= 60; + ptm->tm_sec += secs; + /* done with time of day effects */ + /* + * The algorithm for yearday has (so far) left it high by 428. + * To avoid mistaking a legitimate Feb 29 as Mar 1, we need to + * bias it by 123 while trying to figure out what year it + * really represents. Even with this tweak, the reverse + * translation fails for years before A.D. 0001. + * It would still fail for Feb 29, but we catch that one below. + */ + jday = yearday; /* save for later fixup vis-a-vis Jan 1 */ + yearday -= YEAR_ADJUST; + year = (yearday / DAYS_PER_QCENT) * 400; + yearday %= DAYS_PER_QCENT; + odd_cent = yearday / DAYS_PER_CENT; + year += odd_cent * 100; + yearday %= DAYS_PER_CENT; + year += (yearday / DAYS_PER_QYEAR) * 4; + yearday %= DAYS_PER_QYEAR; + odd_year = yearday / DAYS_PER_YEAR; + year += odd_year; + yearday %= DAYS_PER_YEAR; + if (!yearday && (odd_cent==4 || odd_year==4)) { /* catch Feb 29 */ + month = 1; + yearday = 29; + } + else { + yearday += YEAR_ADJUST; /* recover March 1st crock */ + month = yearday*DAYS_TO_MONTH; + yearday -= month*MONTH_TO_DAYS; + /* recover other leap-year adjustment */ + if (month > 13) { + month-=14; + year++; + } + else { + month-=2; + } + } + ptm->tm_year = year - 1900; + if (yearday) { + ptm->tm_mday = yearday; + ptm->tm_mon = month; + } + else { + ptm->tm_mday = 31; + ptm->tm_mon = month - 1; + } + /* re-build yearday based on Jan 1 to get tm_yday */ + year--; + yearday = year*DAYS_PER_YEAR + year/4 - year/100 + year/400; + yearday += 14*MONTH_TO_DAYS + 1; + ptm->tm_yday = jday - yearday; + /* fix tm_wday if not overridden by caller */ + if ((unsigned)ptm->tm_wday > 6) + ptm->tm_wday = (jday + WEEKDAY_BIAS) % 7; +} #ifdef HAS_LONG_DOUBLE # if LONG_DOUBLESIZE > DOUBLESIZE @@ -348,7 +554,7 @@ not_here(char *s) } static -#ifdef HAS_LONG_DOUBLE +#if defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE) long double #else double @@ -1519,9 +1725,10 @@ constant(char *name, int arg) #else goto not_there; #endif - if (strEQ(name, "L_tmpname")) -#ifdef L_tmpname - return L_tmpname; + /* L_tmpnam[e] was a typo--retained for compatibility */ + if (strEQ(name, "L_tmpname") || strEQ(name, "L_tmpnam")) +#ifdef L_tmpnam + return L_tmpnam; #else goto not_there; #endif @@ -3045,7 +3252,7 @@ setlocale(category, locale = 0) else #endif newctype = RETVAL; - perl_new_ctype(newctype); + new_ctype(newctype); } #endif /* USE_LOCALE_CTYPE */ #ifdef USE_LOCALE_COLLATE @@ -3062,7 +3269,7 @@ setlocale(category, locale = 0) else #endif newcoll = RETVAL; - perl_new_collate(newcoll); + new_collate(newcoll); } #endif /* USE_LOCALE_COLLATE */ #ifdef USE_LOCALE_NUMERIC @@ -3079,7 +3286,7 @@ setlocale(category, locale = 0) else #endif newnum = RETVAL; - perl_new_numeric(newnum); + new_numeric(newnum); } #endif /* USE_LOCALE_NUMERIC */ } @@ -3167,17 +3374,15 @@ sigaction(sig, action, oldaction = 0) # This code is really grody because we're trying to make the signal # interface look beautiful, which is hard. - if (!PL_siggv) - gv_fetchpv("SIG", TRUE, SVt_PVHV); - { + GV *siggv = gv_fetchpv("SIG", TRUE, SVt_PVHV); struct sigaction act; struct sigaction oact; POSIX__SigSet sigset; SV** svp; - SV** sigsvp = hv_fetch(GvHVn(PL_siggv), - sig_name[sig], - strlen(sig_name[sig]), + SV** sigsvp = hv_fetch(GvHVn(siggv), + PL_sig_name[sig], + strlen(PL_sig_name[sig]), TRUE); STRLEN n_a; @@ -3196,7 +3401,7 @@ sigaction(sig, action, oldaction = 0) croak("Can't supply an action without a HANDLER"); sv_setpv(*sigsvp, SvPV(*svp, n_a)); mg_set(*sigsvp); /* handles DEFAULT and IGNORE */ - act.sa_handler = sighandler; + act.sa_handler = PL_sighandlerp; /* Set up any desired mask. */ svp = hv_fetch(action, "MASK", 4, FALSE); @@ -3262,7 +3467,7 @@ INIT: } else if (sv_derived_from(ST(2), "POSIX::SigSet")) { IV tmp = SvIV((SV*)SvRV(ST(2))); - oldsigset = (POSIX__SigSet) tmp; + oldsigset = INT2PTR(POSIX__SigSet,tmp); } else { New(0, oldsigset, 1, sigset_t); @@ -3367,9 +3572,18 @@ write(fd, buffer, nbytes) char * buffer size_t nbytes -char * -tmpnam(s = 0) - char * s = 0; +SV * +tmpnam() + PREINIT: + STRLEN i; + int len; + CODE: + RETVAL = newSVpvn("", 0); + SvGROW(RETVAL, L_tmpnam); + len = strlen(tmpnam(SvPV(RETVAL, i))); + SvCUR_set(RETVAL, len); + OUTPUT: + RETVAL void abort() @@ -3434,10 +3648,12 @@ strtol(str, base = 0) char *unparsed; PPCODE: num = strtol(str, &unparsed, base); - if (num >= IV_MIN && num <= IV_MAX) - PUSHs(sv_2mortal(newSViv((IV)num))); - else +#if IVSIZE <= LONGSIZE + if (num < IV_MIN || num > IV_MAX) PUSHs(sv_2mortal(newSVnv((double)num))); + else +#endif + PUSHs(sv_2mortal(newSViv((IV)num))); if (GIMME == G_ARRAY) { EXTEND(SP, 1); if (unparsed) @@ -3629,7 +3845,7 @@ strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1) mytm.tm_wday = wday; mytm.tm_yday = yday; mytm.tm_isdst = isdst; - (void) mktime(&mytm); + mini_mktime(&mytm); len = strftime(tmpbuf, sizeof tmpbuf, fmt, &mytm); /* ** The following is needed to handle to the situation where @@ -3645,28 +3861,35 @@ strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1) ** If there is a better way to make it portable, go ahead by ** all means. */ - if ( ( len > 0 && len < sizeof(tmpbuf) ) - || ( len == 0 && strlen(fmt) == 0 ) ) { + if ((len > 0 && len < sizeof(tmpbuf)) || (len == 0 && *fmt == '\0')) ST(0) = sv_2mortal(newSVpv(tmpbuf, len)); - } else { + else { /* Possibly buf overflowed - try again with a bigger buf */ - int bufsize = strlen(fmt) + sizeof(tmpbuf); + int fmtlen = strlen(fmt); + int bufsize = fmtlen + sizeof(tmpbuf); char* buf; int buflen; New(0, buf, bufsize, char); - while( buf ) { + while (buf) { buflen = strftime(buf, bufsize, fmt, &mytm); - if ( buflen > 0 && buflen < bufsize ) break; + if (buflen > 0 && buflen < bufsize) + break; + /* heuristic to prevent out-of-memory errors */ + if (bufsize > 100*fmtlen) { + Safefree(buf); + buf = NULL; + break; + } bufsize *= 2; Renew(buf, bufsize, char); } - if ( buf ) { - ST(0) = sv_2mortal(newSVpv(buf, buflen)); + if (buf) { + ST(0) = sv_2mortal(newSVpvn(buf, buflen)); Safefree(buf); - } else { - ST(0) = sv_2mortal(newSVpv(tmpbuf, len)); } + else + ST(0) = sv_2mortal(newSVpvn(tmpbuf, len)); } } @@ -3677,8 +3900,8 @@ void tzname() PPCODE: EXTEND(SP,2); - PUSHs(sv_2mortal(newSVpv(tzname[0],strlen(tzname[0])))); - PUSHs(sv_2mortal(newSVpv(tzname[1],strlen(tzname[1])))); + PUSHs(sv_2mortal(newSVpvn(tzname[0],strlen(tzname[0])))); + PUSHs(sv_2mortal(newSVpvn(tzname[1],strlen(tzname[1])))); SysRet access(filename, mode) diff --git a/contrib/perl5/ext/SDBM_File/Makefile.PL b/contrib/perl5/ext/SDBM_File/Makefile.PL index 749478551fe0..a1debb92a333 100644 --- a/contrib/perl5/ext/SDBM_File/Makefile.PL +++ b/contrib/perl5/ext/SDBM_File/Makefile.PL @@ -16,16 +16,30 @@ WriteMakefile( XSPROTOARG => '-noprototypes', # XXX remove later? VERSION_FROM => 'SDBM_File.pm', DEFINE => $define, + PERL_MALLOC_OK => 1, ); sub MY::postamble { - if ($^O ne 'VMS') { + if ($^O =~ /MSWin32/ && Win32::IsWin95()) { + # XXX: dmake-specific, like rest of Win95 port + return + ' +$(MYEXTLIB): sdbm/Makefile +@[ + cd sdbm + $(MAKE) all + cd .. +] +'; + } + elsif ($^O ne 'VMS') { ' $(MYEXTLIB): sdbm/Makefile cd sdbm && $(MAKE) all '; - } else { - ' + } + else { + ' $(MYEXTLIB) : [.sdbm]descrip.mms set def [.sdbm] $(MMS) all diff --git a/contrib/perl5/ext/SDBM_File/SDBM_File.pm b/contrib/perl5/ext/SDBM_File/SDBM_File.pm index a2d4df85587d..c5e26c8e04d8 100644 --- a/contrib/perl5/ext/SDBM_File/SDBM_File.pm +++ b/contrib/perl5/ext/SDBM_File/SDBM_File.pm @@ -1,16 +1,14 @@ package SDBM_File; use strict; -use vars qw($VERSION @ISA); require Tie::Hash; -require DynaLoader; +use XSLoader (); -@ISA = qw(Tie::Hash DynaLoader); +our @ISA = qw(Tie::Hash); +our $VERSION = "1.02" ; -$VERSION = "1.00" ; - -bootstrap SDBM_File $VERSION; +XSLoader::load 'SDBM_File', $VERSION; 1; @@ -30,6 +28,6 @@ SDBM_File - Tied access to sdbm files =head1 DESCRIPTION -See L +See L, L =cut diff --git a/contrib/perl5/ext/SDBM_File/SDBM_File.xs b/contrib/perl5/ext/SDBM_File/SDBM_File.xs index 38eaebf5c5ef..a4b90451a9bc 100644 --- a/contrib/perl5/ext/SDBM_File/SDBM_File.xs +++ b/contrib/perl5/ext/SDBM_File/SDBM_File.xs @@ -1,15 +1,47 @@ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "sdbm/sdbm.h" -typedef DBM* SDBM_File; +typedef struct { + DBM * dbp ; + SV * filter_fetch_key ; + SV * filter_store_key ; + SV * filter_fetch_value ; + SV * filter_store_value ; + int filtering ; + } SDBM_File_type; + +typedef SDBM_File_type * SDBM_File ; +typedef datum datum_key ; +typedef datum datum_value ; + +#define ckFilter(arg,type,name) \ + if (db->type) { \ + SV * save_defsv ; \ + /* printf("filtering %s\n", name) ;*/ \ + if (db->filtering) \ + croak("recursion detected in %s", name) ; \ + db->filtering = TRUE ; \ + save_defsv = newSVsv(DEFSV) ; \ + sv_setsv(DEFSV, arg) ; \ + PUSHMARK(sp) ; \ + (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS); \ + sv_setsv(arg, DEFSV) ; \ + sv_setsv(DEFSV, save_defsv) ; \ + SvREFCNT_dec(save_defsv) ; \ + db->filtering = FALSE ; \ + /*printf("end of filtering %s\n", name) ;*/ \ + } + #define sdbm_TIEHASH(dbtype,filename,flags,mode) sdbm_open(filename,flags,mode) -#define sdbm_FETCH(db,key) sdbm_fetch(db,key) -#define sdbm_STORE(db,key,value,flags) sdbm_store(db,key,value,flags) -#define sdbm_DELETE(db,key) sdbm_delete(db,key) -#define sdbm_FIRSTKEY(db) sdbm_firstkey(db) -#define sdbm_NEXTKEY(db,key) sdbm_nextkey(db) +#define sdbm_FETCH(db,key) sdbm_fetch(db->dbp,key) +#define sdbm_STORE(db,key,value,flags) sdbm_store(db->dbp,key,value,flags) +#define sdbm_DELETE(db,key) sdbm_delete(db->dbp,key) +#define sdbm_EXISTS(db,key) sdbm_exists(db->dbp,key) +#define sdbm_FIRSTKEY(db) sdbm_firstkey(db->dbp) +#define sdbm_NEXTKEY(db,key) sdbm_nextkey(db->dbp) MODULE = SDBM_File PACKAGE = SDBM_File PREFIX = sdbm_ @@ -20,23 +52,46 @@ sdbm_TIEHASH(dbtype, filename, flags, mode) char * filename int flags int mode + CODE: + { + DBM * dbp ; + + RETVAL = NULL ; + if (dbp = sdbm_open(filename,flags,mode) ) { + RETVAL = (SDBM_File)safemalloc(sizeof(SDBM_File_type)) ; + Zero(RETVAL, 1, SDBM_File_type) ; + RETVAL->dbp = dbp ; + } + + } + OUTPUT: + RETVAL void sdbm_DESTROY(db) SDBM_File db CODE: - sdbm_close(db); + sdbm_close(db->dbp); + if (db->filter_fetch_key) + SvREFCNT_dec(db->filter_fetch_key) ; + if (db->filter_store_key) + SvREFCNT_dec(db->filter_store_key) ; + if (db->filter_fetch_value) + SvREFCNT_dec(db->filter_fetch_value) ; + if (db->filter_store_value) + SvREFCNT_dec(db->filter_store_value) ; + safefree(db) ; -datum +datum_value sdbm_FETCH(db, key) SDBM_File db - datum key + datum_key key int sdbm_STORE(db, key, value, flags = DBM_REPLACE) SDBM_File db - datum key - datum value + datum_key key + datum_value value int flags CLEANUP: if (RETVAL) { @@ -44,28 +99,93 @@ sdbm_STORE(db, key, value, flags = DBM_REPLACE) croak("No write permission to sdbm file"); croak("sdbm store returned %d, errno %d, key \"%s\"", RETVAL,errno,key.dptr); - sdbm_clearerr(db); + sdbm_clearerr(db->dbp); } int sdbm_DELETE(db, key) SDBM_File db - datum key + datum_key key -datum +int +sdbm_EXISTS(db,key) + SDBM_File db + datum_key key + +datum_key sdbm_FIRSTKEY(db) SDBM_File db -datum +datum_key sdbm_NEXTKEY(db, key) SDBM_File db - datum key + datum_key key int sdbm_error(db) SDBM_File db + CODE: + RETVAL = sdbm_error(db->dbp) ; + OUTPUT: + RETVAL int sdbm_clearerr(db) SDBM_File db + CODE: + RETVAL = sdbm_clearerr(db->dbp) ; + OUTPUT: + RETVAL + + +#define setFilter(type) \ + { \ + if (db->type) \ + RETVAL = sv_mortalcopy(db->type) ; \ + ST(0) = RETVAL ; \ + if (db->type && (code == &PL_sv_undef)) { \ + SvREFCNT_dec(db->type) ; \ + db->type = NULL ; \ + } \ + else if (code) { \ + if (db->type) \ + sv_setsv(db->type, code) ; \ + else \ + db->type = newSVsv(code) ; \ + } \ + } + + + +SV * +filter_fetch_key(db, code) + SDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_key) ; + +SV * +filter_store_key(db, code) + SDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_key) ; + +SV * +filter_fetch_value(db, code) + SDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_fetch_value) ; + +SV * +filter_store_value(db, code) + SDBM_File db + SV * code + SV * RETVAL = &PL_sv_undef ; + CODE: + setFilter(filter_store_value) ; diff --git a/contrib/perl5/ext/SDBM_File/sdbm/Makefile.PL b/contrib/perl5/ext/SDBM_File/sdbm/Makefile.PL index e6fdcf93069e..4453dea1fda1 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/Makefile.PL +++ b/contrib/perl5/ext/SDBM_File/sdbm/Makefile.PL @@ -42,12 +42,14 @@ INST_STATIC = libsdbm$(LIB_EXT) } sub MY::top_targets { + my $noecho = shift->{NOECHO}; + my $r = ' all :: static - $(NOECHO) $(NOOP) + ' . $noecho . '$(NOOP) config :: - $(NOECHO) $(NOOP) + ' . $noecho . '$(NOOP) lint: lint -abchx $(LIBSRCS) @@ -58,7 +60,7 @@ lint: # variables into the environment so $(MYEXTLIB) is set in here to this # value which can not be built. sdbm/libsdbm.a: - $(NOECHO) $(NOOP) + ' . $noecho . '$(NOOP) ' unless $^O eq 'VMS'; return $r; diff --git a/contrib/perl5/ext/SDBM_File/sdbm/README.too b/contrib/perl5/ext/SDBM_File/sdbm/README.too index c2d095944da0..1fec3156ddc9 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/README.too +++ b/contrib/perl5/ext/SDBM_File/sdbm/README.too @@ -7,3 +7,8 @@ Fri Apr 15 10:15:30 EDT 1994. Additional portability/configuration changes for libsdbm by Andy Dougherty doughera@lafcol.lafayette.edu. + + +Mon Mar 22 03:24:47 PST 1999. + +sdbm_exists added to the library by Russ Allbery . diff --git a/contrib/perl5/ext/SDBM_File/sdbm/dba.c b/contrib/perl5/ext/SDBM_File/sdbm/dba.c index 05e70c8961c3..74067763985a 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/dba.c +++ b/contrib/perl5/ext/SDBM_File/sdbm/dba.c @@ -11,8 +11,7 @@ char *progname; extern void oops(); int -main(argc, argv) -char **argv; +main(int argc, char **argv) { int n; char *p; @@ -23,6 +22,9 @@ char **argv; if (p = argv[1]) { name = (char *) malloc((n = strlen(p)) + 5); + if (!name) + oops("cannot get memory"); + strcpy(name, p); strcpy(name + n, ".pag"); @@ -37,8 +39,8 @@ char **argv; return 0; } -sdump(pagf) -int pagf; +void +sdump(int pagf) { register b; register n = 0; @@ -67,8 +69,8 @@ int pagf; oops("read failed: block %d", n); } -pagestat(pag) -char *pag; +int +pagestat(char *pag) { register n; register free; diff --git a/contrib/perl5/ext/SDBM_File/sdbm/dbd.c b/contrib/perl5/ext/SDBM_File/sdbm/dbd.c index 04ab842e2d65..0a58d9a0f439 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/dbd.c +++ b/contrib/perl5/ext/SDBM_File/sdbm/dbd.c @@ -14,8 +14,7 @@ extern void oops(); #define empty(page) (((short *) page)[0] == 0) int -main(argc, argv) -char **argv; +main(int argc, char **argv) { int n; char *p; @@ -26,6 +25,9 @@ char **argv; if (p = argv[1]) { name = (char *) malloc((n = strlen(p)) + 5); + if (!name) + oops("cannot get memory"); + strcpy(name, p); strcpy(name + n, ".pag"); @@ -39,8 +41,8 @@ char **argv; return 0; } -sdump(pagf) -int pagf; +void +sdump(int pagf) { register r; register n = 0; @@ -65,8 +67,8 @@ int pagf; #ifdef OLD -dispage(pag) -char *pag; +int +dispage(char *pag) { register i, n; register off; @@ -87,8 +89,8 @@ char *pag; } } #else -dispage(pag) -char *pag; +void +dispage(char *pag) { register i, n; register off; diff --git a/contrib/perl5/ext/SDBM_File/sdbm/dbe.c b/contrib/perl5/ext/SDBM_File/sdbm/dbe.c index 2a306f276ecf..166e64efdf2f 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/dbe.c +++ b/contrib/perl5/ext/SDBM_File/sdbm/dbe.c @@ -52,10 +52,7 @@ char *optarg; /* Global argument pointer. */ #endif char -getopt(argc, argv, optstring) -int argc; -char **argv; -char *optstring; +getopt(int argc, char **argv, char *optstring) { register int c; register char *place; @@ -131,14 +128,13 @@ char *optstring; void -print_datum(db) -datum db; +print_datum(datum db) { int i; putchar('"'); for (i = 0; i < db.dsize; i++) { - if (isprint(db.dptr[i])) + if (isprint((unsigned char)db.dptr[i])) putchar(db.dptr[i]); else { putchar('\\'); @@ -152,8 +148,7 @@ datum db; datum -read_datum(s) -char *s; +read_datum(char *s) { datum db; char *p; @@ -161,6 +156,9 @@ char *s; db.dsize = 0; db.dptr = (char *) malloc(strlen(s) * sizeof(char)); + if (!db.dptr) + oops("cannot get memory"); + for (p = db.dptr; *s != '\0'; p++, db.dsize++, s++) { if (*s == '\\') { if (*++s == 'n') @@ -171,7 +169,10 @@ char *s; *p = '\f'; else if (*s == 't') *p = '\t'; - else if (isdigit(*s) && isdigit(*(s + 1)) && isdigit(*(s + 2))) { + else if (isdigit((unsigned char)*s) + && isdigit((unsigned char)*(s + 1)) + && isdigit((unsigned char)*(s + 2))) + { i = (*s++ - '0') << 6; i |= (*s++ - '0') << 3; i |= *s - '0'; @@ -191,22 +192,21 @@ char *s; char * -key2s(db) -datum db; +key2s(datum db) { char *buf; char *p1, *p2; buf = (char *) malloc((db.dsize + 1) * sizeof(char)); + if (!buf) + oops("cannot get memory"); for (p1 = buf, p2 = db.dptr; *p2 != '\0'; *p1++ = *p2++); *p1 = '\0'; return buf; } - -main(argc, argv) -int argc; -char **argv; +int +main(int argc, char **argv) { typedef enum { YOW, FETCH, STORE, DELETE, SCAN, REGEXP @@ -285,7 +285,7 @@ char **argv; } } - if (giveusage | what == YOW | argn < 1) { + if (giveusage || what == YOW || argn < 1) { fprintf(stderr, "Usage: %s databse [-m r|w|rw] [-crtx] -a|-d|-f|-F|-s [key [content]]\n", argv[0]); exit(-1); } diff --git a/contrib/perl5/ext/SDBM_File/sdbm/dbm.c b/contrib/perl5/ext/SDBM_File/sdbm/dbm.c index 1388230e2d31..dc47d7001dee 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/dbm.c +++ b/contrib/perl5/ext/SDBM_File/sdbm/dbm.c @@ -27,8 +27,8 @@ static DBM *cur_db = NODB; static char no_db[] = "dbm: no open database\n"; -dbminit(file) - char *file; +int +dbminit(char *file) { if (cur_db != NODB) dbm_close(cur_db); @@ -43,8 +43,7 @@ dbminit(file) } long -forder(key) -datum key; +forder(datum key) { if (cur_db == NODB) { printf(no_db); @@ -54,8 +53,7 @@ datum key; } datum -fetch(key) -datum key; +fetch(datum key) { datum item; @@ -67,8 +65,8 @@ datum key; return (dbm_fetch(cur_db, key)); } -delete(key) -datum key; +int +delete(datum key) { if (cur_db == NODB) { printf(no_db); @@ -79,8 +77,8 @@ datum key; return (dbm_delete(cur_db, key)); } -store(key, dat) -datum key, dat; +int +store(datum key, datum dat) { if (cur_db == NODB) { printf(no_db); @@ -93,7 +91,7 @@ datum key, dat; } datum -firstkey() +firstkey(void) { datum item; @@ -106,8 +104,7 @@ firstkey() } datum -nextkey(key) -datum key; +nextkey(datum key) { datum item; diff --git a/contrib/perl5/ext/SDBM_File/sdbm/dbu.c b/contrib/perl5/ext/SDBM_File/sdbm/dbu.c index a3c0004da9ff..e68b78de44ef 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/dbu.c +++ b/contrib/perl5/ext/SDBM_File/sdbm/dbu.c @@ -65,9 +65,7 @@ static cmd *parse(); static void badk(), doit(), prdatum(); int -main(argc, argv) -int argc; -char *argv[]; +main(int argc, char **argv) { int c; register cmd *act; @@ -98,9 +96,7 @@ char *argv[]; } static void -doit(act, file) -register cmd *act; -char *file; +doit(register cmd *act, char *file) { datum key; datum val; @@ -197,8 +193,7 @@ char *file; } static void -badk(word) -char *word; +badk(char *word) { register int i; @@ -214,8 +209,7 @@ char *word; } static cmd * -parse(str) -register char *str; +parse(register char *str) { register int i = CTABSIZ; register cmd *p; @@ -227,9 +221,7 @@ register char *str; } static void -prdatum(stream, d) -FILE *stream; -datum d; +prdatum(FILE *stream, datum d) { register int c; register char *p = d.dptr; diff --git a/contrib/perl5/ext/SDBM_File/sdbm/pair.c b/contrib/perl5/ext/SDBM_File/sdbm/pair.c index a9a805a4aa30..4f0fde230272 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/pair.c +++ b/contrib/perl5/ext/SDBM_File/sdbm/pair.c @@ -8,7 +8,11 @@ */ #include "config.h" -#include "EXTERN.h" +#ifdef __CYGWIN__ +# define EXTCONST extern const +#else +# include "EXTERN.h" +#endif #include "sdbm.h" #include "tune.h" #include "pair.h" @@ -102,6 +106,17 @@ getpair(char *pag, datum key) return val; } +int +exipair(char *pag, datum key) +{ + register short *ino = (short *) pag; + + if (ino[0] == 0) + return 0; + + return (seepair(pag, ino[0], key.dptr, key.dsize) != 0); +} + #ifdef SEEDUPS int duppair(char *pag, datum key) diff --git a/contrib/perl5/ext/SDBM_File/sdbm/pair.h b/contrib/perl5/ext/SDBM_File/sdbm/pair.h index 8a675b906598..b6944edd0715 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/pair.h +++ b/contrib/perl5/ext/SDBM_File/sdbm/pair.h @@ -2,6 +2,7 @@ #define chkpage sdbm__chkpage #define delpair sdbm__delpair #define duppair sdbm__duppair +#define exipair sdbm__exipair #define fitpair sdbm__fitpair #define getnkey sdbm__getnkey #define getpair sdbm__getpair @@ -11,6 +12,7 @@ extern int fitpair proto((char *, int)); extern void putpair proto((char *, datum, datum)); extern datum getpair proto((char *, datum)); +extern int exipair proto((char *, datum)); extern int delpair proto((char *, datum)); extern int chkpage proto((char *)); extern datum getnkey proto((char *, int)); diff --git a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 b/contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 index 7e5c1764042d..fe6fe76e2551 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 +++ b/contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 @@ -1,7 +1,7 @@ .\" $Id: sdbm.3,v 1.2 90/12/13 13:00:57 oz Exp $ .TH SDBM 3 "1 March 1990" .SH NAME -sdbm, sdbm_open, sdbm_prep, sdbm_close, sdbm_fetch, sdbm_store, sdbm_delete, sdbm_firstkey, sdbm_nextkey, sdbm_hash, sdbm_rdonly, sdbm_error, sdbm_clearerr, sdbm_dirfno, sdbm_pagfno \- data base subroutines +sdbm, sdbm_open, sdbm_prep, sdbm_close, sdbm_fetch, sdbm_store, sdbm_delete, sdbm_exists, sdbm_firstkey, sdbm_nextkey, sdbm_hash, sdbm_rdonly, sdbm_error, sdbm_clearerr, sdbm_dirfno, sdbm_pagfno \- data base subroutines .SH SYNOPSIS .nf .ft B @@ -26,6 +26,8 @@ int sdbm_store(\s-1DBM\s0 *db, datum key, datum val, int flags) .sp int sdbm_delete(\s-1DBM\s0 *db, datum key) .sp +int sdbm_exists(\s-1DBM\s0 *db, datum key) +.sp datum sdbm_firstkey(\s-1DBM\s0 *db) .sp datum sdbm_nextkey(\s-1DBM\s0 *db) @@ -47,6 +49,7 @@ int sdbm_pagfno(\s-1DBM\s0 *db) .IX sdbm_fetch "" "\fLsdbm_fetch\fR \(em fetch \fLsdbm\fR database data" .IX sdbm_store "" "\fLsdbm_store\fR \(em add data to \fLsdbm\fR database" .IX sdbm_delete "" "\fLsdbm_delete\fR \(em remove data from \fLsdbm\fR database" +.IX sdbm_exists "" "\fLsdbm_exists\fR \(em test \fLsdbm\fR key existence" .IX sdbm_firstkey "" "\fLsdbm_firstkey\fR \(em access \fLsdbm\fR database" .IX sdbm_nextkey "" "\fLsdbm_nextkey\fR \(em access \fLsdbm\fR database" .IX sdbm_hash "" "\fLsdbm_hash\fR \(em string hash for \fLsdbm\fR database" @@ -149,6 +152,8 @@ Given a handle, one can retrieve data associated with a key by using the routine, and associate data with a key by using the .BR sdbm_store (\|) routine. +.BR sdbm_exists (\|) +will say whether a given key exists in the database. .LP The values of the .I flags diff --git a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.c b/contrib/perl5/ext/SDBM_File/sdbm/sdbm.c index c147e45b43a0..64c75cbb2083 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.c +++ b/contrib/perl5/ext/SDBM_File/sdbm/sdbm.c @@ -9,6 +9,9 @@ #include "INTERN.h" #include "config.h" +#ifdef WIN32 +#include "io.h" +#endif #include "sdbm.h" #include "tune.h" #include "pair.h" @@ -36,7 +39,7 @@ extern int errno; extern Malloc_t malloc proto((MEM_SIZE)); extern Free_t free proto((Malloc_t)); -extern Off_t lseek(int, Off_t, int); + #endif /* @@ -125,7 +128,7 @@ sdbm_prep(char *dirname, char *pagname, int flags, int mode) * open the files in sequence, and stat the dirfile. * If we fail anywhere, undo everything, return NULL. */ -#if defined(OS2) || defined(MSDOS) || defined(WIN32) +#if defined(OS2) || defined(MSDOS) || defined(WIN32) || defined(__CYGWIN__) flags |= O_BINARY; # endif if ((db->pagf = open(pagname, flags, mode)) > -1) { @@ -181,6 +184,18 @@ sdbm_fetch(register DBM *db, datum key) return ioerr(db), nullitem; } +int +sdbm_exists(register DBM *db, datum key) +{ + if (db == NULL || bad(key)) + return errno = EINVAL, -1; + + if (getpage(db, exhash(key))) + return exipair(db->pagbuf, key); + + return ioerr(db), -1; +} + int sdbm_delete(register DBM *db, datum key) { @@ -416,9 +431,12 @@ getdbit(register DBM *db, register long int dbit) dirb = c / DBLKSIZ; if (dirb != db->dirbno) { + int got; if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 - || read(db->dirf, db->dirbuf, DBLKSIZ) < 0) + || (got=read(db->dirf, db->dirbuf, DBLKSIZ)) < 0) return 0; + if (got==0) + memset(db->dirbuf,0,DBLKSIZ); db->dirbno = dirb; debug(("dir read: %d\n", dirb)); @@ -437,10 +455,12 @@ setdbit(register DBM *db, register long int dbit) dirb = c / DBLKSIZ; if (dirb != db->dirbno) { - (void) memset(db->dirbuf, 0, DBLKSIZ); + int got; if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 - || read(db->dirf, db->dirbuf, DBLKSIZ) < 0) + || (got=read(db->dirf, db->dirbuf, DBLKSIZ)) < 0) return 0; + if (got==0) + memset(db->dirbuf,0,DBLKSIZ); db->dirbno = dirb; debug(("dir read: %d\n", dirb)); @@ -448,8 +468,13 @@ setdbit(register DBM *db, register long int dbit) db->dirbuf[c % DBLKSIZ] |= (1 << dbit % BYTESIZ); +#if 0 if (dbit >= db->maxbno) db->maxbno += DBLKSIZ * BYTESIZ; +#else + if (OFF_DIR((dirb+1))*BYTESIZ > db->maxbno) + db->maxbno=OFF_DIR((dirb+1))*BYTESIZ; +#endif if (lseek(db->dirf, OFF_DIR(dirb), SEEK_SET) < 0 || write(db->dirf, db->dirbuf, DBLKSIZ) < 0) diff --git a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.h b/contrib/perl5/ext/SDBM_File/sdbm/sdbm.h index 84d5f75468cd..86ba82d82fb6 100644 --- a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.h +++ b/contrib/perl5/ext/SDBM_File/sdbm/sdbm.h @@ -79,6 +79,7 @@ extern int sdbm_delete proto((DBM *, datum)); extern int sdbm_store proto((DBM *, datum, datum, int)); extern datum sdbm_firstkey proto((DBM *)); extern datum sdbm_nextkey proto((DBM *)); +extern int sdbm_exists proto((DBM *, datum)); /* * other @@ -98,8 +99,12 @@ extern long sdbm_hash proto((char *, int)); #define dbm_clearerr sdbm_clearerr #endif -/* Most of the following is stolen from perl.h. */ +/* Most of the following is stolen from perl.h. We don't include + perl.h here because we just want the portability parts of perl.h, + not everything else. +*/ #ifndef H_PERL /* Include guard */ +#include "embed.h" /* Follow all the global renamings. */ /* * The following contortions are brought to you on behalf of all the @@ -168,27 +173,17 @@ extern long sdbm_hash proto((char *, int)); /* This comes after so we don't try to change the standard * library prototypes; we'll use our own instead. */ -#if defined(MYMALLOC) && (defined(HIDEMYMALLOC) || defined(EMBEDMYMALLOC)) +#if defined(MYMALLOC) && !defined(PERL_POLLUTE_MALLOC) +# define malloc Perl_malloc +# define calloc Perl_calloc +# define realloc Perl_realloc +# define free Perl_mfree -# ifdef HIDEMYMALLOC -# define malloc Mymalloc -# define calloc Mycalloc -# define realloc Myremalloc -# define free Myfree -# endif -# ifdef EMBEDMYMALLOC -# define malloc Perl_malloc -# define calloc Perl_calloc -# define realloc Perl_realloc -# define free Perl_free -# endif - - Malloc_t malloc proto((MEM_SIZE nbytes)); - Malloc_t calloc proto((MEM_SIZE elements, MEM_SIZE size)); - Malloc_t realloc proto((Malloc_t where, MEM_SIZE nbytes)); - Free_t free proto((Malloc_t where)); - -#endif /* MYMALLOC && (HIDEMYMALLOC || EMBEDMYMALLOC) */ +Malloc_t Perl_malloc proto((MEM_SIZE nbytes)); +Malloc_t Perl_calloc proto((MEM_SIZE elements, MEM_SIZE size)); +Malloc_t Perl_realloc proto((Malloc_t where, MEM_SIZE nbytes)); +Free_t Perl_mfree proto((Malloc_t where)); +#endif /* MYMALLOC */ #ifdef I_STRING #include diff --git a/contrib/perl5/ext/SDBM_File/typemap b/contrib/perl5/ext/SDBM_File/typemap index 317a8f3886cb..eeb5d59027f5 100644 --- a/contrib/perl5/ext/SDBM_File/typemap +++ b/contrib/perl5/ext/SDBM_File/typemap @@ -2,7 +2,8 @@ #################################### DBM SECTION # -datum T_DATUM +datum_key T_DATUM_K +datum_value T_DATUM_V gdatum T_GDATUM NDBM_File T_PTROBJ GDBM_File T_PTROBJ @@ -13,14 +14,23 @@ DBZ_File T_PTROBJ FATALFUNC T_OPAQUEPTR INPUT -T_DATUM +T_DATUM_K + ckFilter($arg, filter_store_key, \"filter_store_key\"); + $var.dptr = SvPV($arg, PL_na); + $var.dsize = (int)PL_na; +T_DATUM_V + ckFilter($arg, filter_store_value, \"filter_store_value\"); $var.dptr = SvPV($arg, PL_na); $var.dsize = (int)PL_na; T_GDATUM UNIMPLEMENTED OUTPUT -T_DATUM +T_DATUM_K sv_setpvn($arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_key,\"filter_fetch_key\"); +T_DATUM_V + sv_setpvn($arg, $var.dptr, $var.dsize); + ckFilter($arg, filter_fetch_value,\"filter_fetch_value\"); T_GDATUM sv_usepvn($arg, $var.dptr, $var.dsize); T_PTROBJ diff --git a/contrib/perl5/ext/Socket/Makefile.PL b/contrib/perl5/ext/Socket/Makefile.PL index 3819143ac0e2..339c45a0a1a5 100644 --- a/contrib/perl5/ext/Socket/Makefile.PL +++ b/contrib/perl5/ext/Socket/Makefile.PL @@ -1,7 +1,9 @@ use ExtUtils::MakeMaker; +use Config; WriteMakefile( - NAME => 'Socket', + NAME => 'Socket', VERSION_FROM => 'Socket.pm', - MAN3PODS => {}, # Pods will be built by installman. - XSPROTOARG => '-noprototypes', # XXX remove later? + ($Config{libs} =~ /(-lsocks\S*)/ ? (LIBS => [ "$1" ] ) : ()), + MAN3PODS => {}, # Pods will be built by installman. + XSPROTOARG => '-noprototypes', # XXX remove later? ); diff --git a/contrib/perl5/ext/Socket/Socket.pm b/contrib/perl5/ext/Socket/Socket.pm index 1ed19f713d26..02f098df77c9 100644 --- a/contrib/perl5/ext/Socket/Socket.pm +++ b/contrib/perl5/ext/Socket/Socket.pm @@ -1,7 +1,7 @@ package Socket; -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); -$VERSION = "1.7"; +our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); +$VERSION = "1.72"; =head1 NAME @@ -160,10 +160,11 @@ have AF_UNIX in the right place. =cut use Carp; +use warnings::register; require Exporter; -require DynaLoader; -@ISA = qw(Exporter DynaLoader); +use XSLoader (); +@ISA = qw(Exporter); @EXPORT = qw( inet_aton inet_ntoa pack_sockaddr_in unpack_sockaddr_in pack_sockaddr_un unpack_sockaddr_un @@ -193,6 +194,8 @@ require DynaLoader; AF_UNIX AF_UNSPEC AF_X25 + IOV_MAX + MSG_BCAST MSG_CTLFLAGS MSG_CTLIGNORE MSG_CTRUNC @@ -203,6 +206,7 @@ require DynaLoader; MSG_ERRQUEUE MSG_FIN MSG_MAXIOVLEN + MSG_MCAST MSG_NOSIGNAL MSG_OOB MSG_PEEK @@ -241,6 +245,9 @@ require DynaLoader; SCM_CREDS SCM_RIGHTS SCM_TIMESTAMP + SHUT_RD + SHUT_RDWR + SHUT_WR SOCK_DGRAM SOCK_RAW SOCK_RDM @@ -266,9 +273,17 @@ require DynaLoader; SO_SNDTIMEO SO_TYPE SO_USELOOPBACK + UIO_MAXIOV ); -@EXPORT_OK = qw(CR LF CRLF $CR $LF $CRLF); +@EXPORT_OK = qw(CR LF CRLF $CR $LF $CRLF + + IPPROTO_TCP + TCP_KEEPALIVE + TCP_MAXRT + TCP_MAXSEG + TCP_NODELAY + TCP_STDURG); %EXPORT_TAGS = ( crlf => [qw(CR LF CRLF $CR $LF $CRLF)], @@ -288,7 +303,8 @@ BEGIN { sub sockaddr_in { if (@_ == 6 && !wantarray) { # perl5.001m compat; use this && die my($af, $port, @quad) = @_; - carp "6-ARG sockaddr_in call is deprecated" if $^W; + warnings::warn "6-ARG sockaddr_in call is deprecated" + if warnings::enabled(); pack_sockaddr_in($port, inet_aton(join('.', @quad))); } elsif (wantarray) { croak "usage: (port,iaddr) = sockaddr_in(sin_sv)" unless @_ == 1; @@ -309,6 +325,115 @@ sub sockaddr_un { } } +sub INADDR_ANY (); +sub INADDR_BROADCAST (); +sub INADDR_LOOPBACK (); +sub INADDR_LOOPBACK (); + +sub AF_802 (); +sub AF_APPLETALK (); +sub AF_CCITT (); +sub AF_CHAOS (); +sub AF_DATAKIT (); +sub AF_DECnet (); +sub AF_DLI (); +sub AF_ECMA (); +sub AF_GOSIP (); +sub AF_HYLINK (); +sub AF_IMPLINK (); +sub AF_INET (); +sub AF_LAT (); +sub AF_MAX (); +sub AF_NBS (); +sub AF_NIT (); +sub AF_NS (); +sub AF_OSI (); +sub AF_OSINET (); +sub AF_PUP (); +sub AF_SNA (); +sub AF_UNIX (); +sub AF_UNSPEC (); +sub AF_X25 (); +sub IOV_MAX (); +sub MSG_BCAST (); +sub MSG_CTLFLAGS (); +sub MSG_CTLIGNORE (); +sub MSG_CTRUNC (); +sub MSG_DONTROUTE (); +sub MSG_DONTWAIT (); +sub MSG_EOF (); +sub MSG_EOR (); +sub MSG_ERRQUEUE (); +sub MSG_FIN (); +sub MSG_MAXIOVLEN (); +sub MSG_MCAST (); +sub MSG_NOSIGNAL (); +sub MSG_OOB (); +sub MSG_PEEK (); +sub MSG_PROXY (); +sub MSG_RST (); +sub MSG_SYN (); +sub MSG_TRUNC (); +sub MSG_URG (); +sub MSG_WAITALL (); +sub PF_802 (); +sub PF_APPLETALK (); +sub PF_CCITT (); +sub PF_CHAOS (); +sub PF_DATAKIT (); +sub PF_DECnet (); +sub PF_DLI (); +sub PF_ECMA (); +sub PF_GOSIP (); +sub PF_HYLINK (); +sub PF_IMPLINK (); +sub PF_INET (); +sub PF_LAT (); +sub PF_MAX (); +sub PF_NBS (); +sub PF_NIT (); +sub PF_NS (); +sub PF_OSI (); +sub PF_OSINET (); +sub PF_PUP (); +sub PF_SNA (); +sub PF_UNIX (); +sub PF_UNSPEC (); +sub PF_X25 (); +sub SCM_CONNECT (); +sub SCM_CREDENTIALS (); +sub SCM_CREDS (); +sub SCM_RIGHTS (); +sub SCM_TIMESTAMP (); +sub SHUT_RD (); +sub SHUT_RDWR (); +sub SHUT_WR (); +sub SOCK_DGRAM (); +sub SOCK_RAW (); +sub SOCK_RDM (); +sub SOCK_SEQPACKET (); +sub SOCK_STREAM (); +sub SOL_SOCKET (); +sub SOMAXCONN (); +sub SO_ACCEPTCONN (); +sub SO_BROADCAST (); +sub SO_DEBUG (); +sub SO_DONTLINGER (); +sub SO_DONTROUTE (); +sub SO_ERROR (); +sub SO_KEEPALIVE (); +sub SO_LINGER (); +sub SO_OOBINLINE (); +sub SO_RCVBUF (); +sub SO_RCVLOWAT (); +sub SO_RCVTIMEO (); +sub SO_REUSEADDR (); +sub SO_SNDBUF (); +sub SO_SNDLOWAT (); +sub SO_SNDTIMEO (); +sub SO_TYPE (); +sub SO_USELOOPBACK (); +sub UIO_MAXIOV (); sub AUTOLOAD { my($constname); @@ -318,10 +443,10 @@ sub AUTOLOAD { my ($pack,$file,$line) = caller; croak "Your vendor has not defined Socket macro $constname, used"; } - eval "sub $AUTOLOAD { $val }"; + eval "sub $AUTOLOAD () { $val }"; goto &$AUTOLOAD; } -bootstrap Socket $VERSION; +XSLoader::load 'Socket', $VERSION; 1; diff --git a/contrib/perl5/ext/Socket/Socket.xs b/contrib/perl5/ext/Socket/Socket.xs index 0bd6e590570a..0584e785b529 100644 --- a/contrib/perl5/ext/Socket/Socket.xs +++ b/contrib/perl5/ext/Socket/Socket.xs @@ -1,3 +1,4 @@ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" @@ -6,42 +7,58 @@ # ifdef I_SYS_TYPES # include # endif -#include -#ifdef MPE -# define PF_INET AF_INET -# define PF_UNIX AF_UNIX -# define SOCK_RAW 3 -#endif -#ifdef I_SYS_UN -#include -#endif +# include +# if defined(USE_SOCKS) && defined(I_SOCKS) +# include +# endif +# ifdef MPE +# define PF_INET AF_INET +# define PF_UNIX AF_UNIX +# define SOCK_RAW 3 +# endif +# ifdef I_SYS_UN +# include +# endif +/* XXX Configure test for +# endif # ifdef I_NETINET_IN # include # endif -#include -#ifdef I_ARPA_INET -# include -#endif +# ifdef I_NETDB +# include +# endif +# ifdef I_ARPA_INET +# include +# endif +# ifdef I_NETINET_TCP +# include +# endif #else -#include "sockadapt.h" +# include "sockadapt.h" +#endif + +#ifdef I_SYSUIO +# include #endif #ifndef AF_NBS -#undef PF_NBS +# undef PF_NBS #endif #ifndef AF_X25 -#undef PF_X25 +# undef PF_X25 #endif #ifndef INADDR_NONE -#define INADDR_NONE 0xffffffff +# define INADDR_NONE 0xffffffff #endif /* INADDR_NONE */ #ifndef INADDR_BROADCAST -#define INADDR_BROADCAST 0xffffffff +# define INADDR_BROADCAST 0xffffffff #endif /* INADDR_BROADCAST */ #ifndef INADDR_LOOPBACK -#define INADDR_LOOPBACK 0x7F000001 +# define INADDR_LOOPBACK 0x7F000001 #endif /* INADDR_LOOPBACK */ #ifndef HAS_INET_ATON @@ -56,6 +73,7 @@ static int my_inet_aton(register const char *cp, struct in_addr *addr) { + dTHX; register U32 val; register int base; register char c; @@ -322,6 +340,18 @@ constant(char *name, int arg) case 'H': break; case 'I': + if (strEQ(name, "IOV_MAX")) +#ifdef IOV_MAX + return IOV_MAX; +#else + goto not_there; +#endif + if (strEQ(name, "IPPROTO_TCP")) +#ifdef IPPROTO_TCP + return IPPROTO_TCP; +#else + goto not_there; +#endif break; case 'J': break; @@ -330,6 +360,12 @@ constant(char *name, int arg) case 'L': break; case 'M': + if (strEQ(name, "MSG_BCAST")) +#ifdef MSG_BCAST + return MSG_BCAST; +#else + goto not_there; +#endif if (strEQ(name, "MSG_CTLFLAGS")) #ifdef MSG_CTLFLAGS return MSG_CTLFLAGS; @@ -389,6 +425,12 @@ constant(char *name, int arg) return MSG_MAXIOVLEN; #else goto not_there; +#endif + if (strEQ(name, "MSG_MCAST")) +#ifdef MSG_MCAST + return MSG_MCAST; +#else + goto not_there; #endif if (strEQ(name, "MSG_NOSIGNAL")) #ifdef MSG_NOSIGNAL @@ -623,6 +665,24 @@ constant(char *name, int arg) return SCM_TIMESTAMP; #else goto not_there; +#endif + if (strEQ(name, "SHUT_RD")) +#ifdef SHUT_RD + return SHUT_RD; +#else + return 0; +#endif + if (strEQ(name, "SHUT_RDWR")) +#ifdef SHUT_RDWR + return SHUT_RDWR; +#else + return 2; +#endif + if (strEQ(name, "SHUT_WR")) +#ifdef SHUT_WR + return SHUT_WR; +#else + return 1; #endif if (strEQ(name, "SOCK_DGRAM")) #ifdef SOCK_DGRAM @@ -782,8 +842,44 @@ constant(char *name, int arg) #endif break; case 'T': + if (strEQ(name, "TCP_KEEPALIVE")) +#ifdef TCP_KEEPALIVE + return TCP_KEEPALIVE; +#else + goto not_there; +#endif + if (strEQ(name, "TCP_MAXRT")) +#ifdef TCP_MAXRT + return TCP_MAXRT; +#else + goto not_there; +#endif + if (strEQ(name, "TCP_MAXSEG")) +#ifdef TCP_MAXSEG + return TCP_MAXSEG; +#else + goto not_there; +#endif + if (strEQ(name, "TCP_NODELAY")) +#ifdef TCP_NODELAY + return TCP_NODELAY; +#else + goto not_there; +#endif + if (strEQ(name, "TCP_STDURG")) +#ifdef TCP_STDURG + return TCP_STDURG; +#else + goto not_there; +#endif break; case 'U': + if (strEQ(name, "UIO_MAXIOV")) +#ifdef UIO_MAXIOV + return UIO_MAXIOV; +#else + goto not_there; +#endif break; case 'V': break; @@ -851,7 +947,7 @@ inet_ntoa(ip_address_sv) Copy( ip_address, &addr, sizeof addr, char ); addr_str = inet_ntoa(addr); - ST(0) = sv_2mortal(newSVpv(addr_str, strlen(addr_str))); + ST(0) = sv_2mortal(newSVpvn(addr_str, strlen(addr_str))); } void @@ -862,13 +958,38 @@ pack_sockaddr_un(pathname) #ifdef I_SYS_UN struct sockaddr_un sun_ad; /* fear using sun */ STRLEN len; + Zero( &sun_ad, sizeof sun_ad, char ); sun_ad.sun_family = AF_UNIX; len = strlen(pathname); if (len > sizeof(sun_ad.sun_path)) len = sizeof(sun_ad.sun_path); +# ifdef OS2 /* Name should start with \socket\ and contain backslashes! */ + { + int off; + char *s, *e; + + if (pathname[0] != '/' && pathname[0] != '\\') + croak("Relative UNIX domain socket name '%s' unsupported", pathname); + else if (len < 8 + || pathname[7] != '/' && pathname[7] != '\\' + || !strnicmp(pathname + 1, "socket", 6)) + off = 7; + else + off = 0; /* Preserve names starting with \socket\ */ + Copy( "\\socket", sun_ad.sun_path, off, char); + Copy( pathname, sun_ad.sun_path + off, len, char ); + + s = sun_ad.sun_path + off - 1; + e = s + len + 1; + while (++s < e) + if (*s = '/') + *s = '\\'; + } +# else /* !( defined OS2 ) */ Copy( pathname, sun_ad.sun_path, len, char ); - ST(0) = sv_2mortal(newSVpv((char *)&sun_ad, sizeof sun_ad)); +# endif + ST(0) = sv_2mortal(newSVpvn((char *)&sun_ad, sizeof sun_ad)); #else ST(0) = (SV *) not_here("pack_sockaddr_un"); #endif @@ -903,7 +1024,7 @@ unpack_sockaddr_un(sun_sv) e = addr.sun_path; while (*e && e < addr.sun_path + sizeof addr.sun_path) ++e; - ST(0) = sv_2mortal(newSVpv(addr.sun_path, e - addr.sun_path)); + ST(0) = sv_2mortal(newSVpvn(addr.sun_path, e - addr.sun_path)); #else ST(0) = (SV *) not_here("unpack_sockaddr_un"); #endif @@ -922,7 +1043,7 @@ pack_sockaddr_in(port,ip_address) sin.sin_port = htons(port); Copy( ip_address, &sin.sin_addr, sizeof sin.sin_addr, char ); - ST(0) = sv_2mortal(newSVpv((char *)&sin, sizeof sin)); + ST(0) = sv_2mortal(newSVpvn((char *)&sin, sizeof sin)); } void @@ -952,7 +1073,7 @@ unpack_sockaddr_in(sin_sv) EXTEND(SP, 2); PUSHs(sv_2mortal(newSViv((IV) port))); - PUSHs(sv_2mortal(newSVpv((char *)&ip_address,sizeof ip_address))); + PUSHs(sv_2mortal(newSVpvn((char *)&ip_address,sizeof ip_address))); } void @@ -961,7 +1082,7 @@ INADDR_ANY() { struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_ANY); - ST(0) = sv_2mortal(newSVpv((char *)&ip_address,sizeof ip_address )); + ST(0) = sv_2mortal(newSVpvn((char *)&ip_address,sizeof ip_address )); } void @@ -970,7 +1091,7 @@ INADDR_LOOPBACK() { struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_LOOPBACK); - ST(0) = sv_2mortal(newSVpv((char *)&ip_address,sizeof ip_address)); + ST(0) = sv_2mortal(newSVpvn((char *)&ip_address,sizeof ip_address)); } void @@ -979,7 +1100,7 @@ INADDR_NONE() { struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_NONE); - ST(0) = sv_2mortal(newSVpv((char *)&ip_address,sizeof ip_address)); + ST(0) = sv_2mortal(newSVpvn((char *)&ip_address,sizeof ip_address)); } void @@ -988,5 +1109,5 @@ INADDR_BROADCAST() { struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_BROADCAST); - ST(0) = sv_2mortal(newSVpv((char *)&ip_address,sizeof ip_address)); + ST(0) = sv_2mortal(newSVpvn((char *)&ip_address,sizeof ip_address)); } diff --git a/contrib/perl5/ext/Sys/Hostname/Hostname.pm b/contrib/perl5/ext/Sys/Hostname/Hostname.pm new file mode 100644 index 000000000000..1efc897c3b9f --- /dev/null +++ b/contrib/perl5/ext/Sys/Hostname/Hostname.pm @@ -0,0 +1,153 @@ +package Sys::Hostname; + +use strict; + +use Carp; + +require Exporter; +use XSLoader (); +require AutoLoader; + +our @ISA = qw/ Exporter AutoLoader /; +our @EXPORT = qw/ hostname /; + +our $VERSION = '1.1'; + +our $host; + +XSLoader::load 'Sys::Hostname', $VERSION; + +sub hostname { + + # method 1 - we already know it + return $host if defined $host; + + # method 1' - try to ask the system + $host = ghname(); + return $host if defined $host; + + if ($^O eq 'VMS') { + + # method 2 - no sockets ==> return DECnet node name + eval { local $SIG{__DIE__}; $host = (gethostbyname('me'))[0] }; + if ($@) { return $host = $ENV{'SYS$NODE'}; } + + # method 3 - has someone else done the job already? It's common for the + # TCP/IP stack to advertise the hostname via a logical name. (Are + # there any other logicals which TCP/IP stacks use for the host name?) + $host = $ENV{'ARPANET_HOST_NAME'} || $ENV{'INTERNET_HOST_NAME'} || + $ENV{'MULTINET_HOST_NAME'} || $ENV{'UCX$INET_HOST'} || + $ENV{'TCPWARE_DOMAINNAME'} || $ENV{'NEWS_ADDRESS'}; + return $host if $host; + + # method 4 - does hostname happen to work? + my($rslt) = `hostname`; + if ($rslt !~ /IVVERB/) { ($host) = $rslt =~ /^(\S+)/; } + return $host if $host; + + # rats! + $host = ''; + Carp::croak "Cannot get host name of local machine"; + + } + elsif ($^O eq 'MSWin32') { + ($host) = gethostbyname('localhost'); + chomp($host = `hostname 2> NUL`) unless defined $host; + return $host; + } + elsif ($^O eq 'epoc') { + $host = 'localhost'; + return $host; + } + else { # Unix + # is anyone going to make it here? + + # method 2 - syscall is preferred since it avoids tainting problems + # XXX: is it such a good idea to return hostname untainted? + eval { + local $SIG{__DIE__}; + require "syscall.ph"; + $host = "\0" x 65; ## preload scalar + syscall(&SYS_gethostname, $host, 65) == 0; + } + + # method 2a - syscall using systeminfo instead of gethostname + # -- needed on systems like Solaris + || eval { + local $SIG{__DIE__}; + require "sys/syscall.ph"; + require "sys/systeminfo.ph"; + $host = "\0" x 65; ## preload scalar + syscall(&SYS_systeminfo, &SI_HOSTNAME, $host, 65) != -1; + } + + # method 3 - trusty old hostname command + || eval { + local $SIG{__DIE__}; + local $SIG{CHLD}; + $host = `(hostname) 2>/dev/null`; # bsdish + } + + # method 4 - use POSIX::uname(), which strictly can't be expected to be + # correct + || eval { + local $SIG{__DIE__}; + require POSIX; + $host = (POSIX::uname())[1]; + } + + # method 5 - sysV uname command (may truncate) + || eval { + local $SIG{__DIE__}; + $host = `uname -n 2>/dev/null`; ## sysVish + } + + # method 6 - Apollo pre-SR10 + || eval { + local $SIG{__DIE__}; + my($a,$b,$c,$d); + ($host,$a,$b,$c,$d)=split(/[:\. ]/,`/com/host`,6); + } + + # bummer + || Carp::croak "Cannot get host name of local machine"; + + # remove garbage + $host =~ tr/\0\r\n//d; + $host; + } +} + +1; + +__END__ + +=head1 NAME + +Sys::Hostname - Try every conceivable way to get hostname + +=head1 SYNOPSIS + + use Sys::Hostname; + $host = hostname; + +=head1 DESCRIPTION + +Attempts several methods of getting the system hostname and +then caches the result. It tries the first available of the C +library's gethostname(), C<`$Config{aphostname}`>, uname(2), +C, C<`hostname`>, C<`uname -n`>, +and the file F. If all that fails it Cs. + +All NULs, returns, and newlines are removed from the result. + +=head1 AUTHOR + +David Sundstrom EFE + +Texas Instruments + +XS code added by Greg Bacon EFE + +=cut + diff --git a/contrib/perl5/ext/Sys/Hostname/Hostname.xs b/contrib/perl5/ext/Sys/Hostname/Hostname.xs new file mode 100644 index 000000000000..f1043837e9f5 --- /dev/null +++ b/contrib/perl5/ext/Sys/Hostname/Hostname.xs @@ -0,0 +1,76 @@ +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#if defined(I_UNISTD) && defined(HAS_GETHOSTNAME) +# include +#endif + +/* a reasonable default */ +#ifndef MAXHOSTNAMELEN +# define MAXHOSTNAMELEN 256 +#endif + +/* swiped from POSIX.xs */ +#if defined(__VMS) && !defined(__POSIX_SOURCE) +# if ((__VMS_VER >= 70000000) && (__DECC_VER >= 50200000)) || (__CRTL_VER >= 70000000) +# include +# endif +#endif + +#ifdef I_SYSUTSNAME +# include +#endif + +MODULE = Sys::Hostname PACKAGE = Sys::Hostname + +void +ghname() + PREINIT: + IV retval = -1; + SV *sv; + PPCODE: + EXTEND(SP, 1); +#ifdef HAS_GETHOSTNAME + { + char tmps[MAXHOSTNAMELEN]; + retval = PerlSock_gethostname(tmps, sizeof(tmps)); + sv = newSVpvn(tmps, strlen(tmps)); + } +#else +# ifdef HAS_PHOSTNAME + { + PerlIO *io; + char tmps[MAXHOSTNAMELEN]; + char *p = tmps; + char c; + io = PerlProc_popen(PHOSTNAME, "r"); + if (!io) + goto check_out; + while (PerlIO_read(io, &c, sizeof(c)) == 1) { + if (isSPACE(c) || p - tmps >= sizeof(tmps)) + break; + *p++ = c; + } + PerlProc_pclose(io); + *p = '\0'; + retval = 0; + sv = newSVpvn(tmps, strlen(tmps)); + } +# else +# ifdef HAS_UNAME + { + struct utsname u; + if (PerlEnv_uname(&u) == -1) + goto check_out; + sv = newSVpvn(u.nodename, strlen(u.nodename)); + retval = 0; + } +# endif +# endif +#endif + check_out: + if (retval == -1) + XSRETURN_UNDEF; + else + PUSHs(sv_2mortal(sv)); diff --git a/contrib/perl5/ext/Sys/Hostname/Makefile.PL b/contrib/perl5/ext/Sys/Hostname/Makefile.PL new file mode 100644 index 000000000000..a0892f643e55 --- /dev/null +++ b/contrib/perl5/ext/Sys/Hostname/Makefile.PL @@ -0,0 +1,8 @@ +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => 'Sys::Hostname', + VERSION_FROM => 'Hostname.pm', + MAN3PODS => {}, # Pods will be built by installman. + XSPROTOARG => '-noprototypes', +); diff --git a/contrib/perl5/ext/Sys/Syslog/Makefile.PL b/contrib/perl5/ext/Sys/Syslog/Makefile.PL new file mode 100644 index 000000000000..e5edf3e1ba75 --- /dev/null +++ b/contrib/perl5/ext/Sys/Syslog/Makefile.PL @@ -0,0 +1,8 @@ +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => 'Sys::Syslog', + VERSION_FROM => 'Syslog.pm', + MAN3PODS => {}, # Pods will be built by installman. + XSPROTOARG => '-noprototypes', +); diff --git a/contrib/perl5/ext/Sys/Syslog/Syslog.pm b/contrib/perl5/ext/Sys/Syslog/Syslog.pm new file mode 100644 index 000000000000..2a91354e8792 --- /dev/null +++ b/contrib/perl5/ext/Sys/Syslog/Syslog.pm @@ -0,0 +1,294 @@ +package Sys::Syslog; +require 5.000; +require Exporter; +require DynaLoader; +use Carp; + +@ISA = qw(Exporter DynaLoader); +@EXPORT = qw(openlog closelog setlogmask syslog); +@EXPORT_OK = qw(setlogsock); +$VERSION = '0.01'; + +use Socket; +use Sys::Hostname; + +# adapted from syslog.pl +# +# Tom Christiansen +# modified to use sockets by Larry Wall +# NOTE: openlog now takes three arguments, just like openlog(3) +# Modified to add UNIX domain sockets by Sean Robinson +# with support from Tim Bunce and the perl5-porters mailing list +# Modified to use an XS backend instead of syslog.ph by Tom Hughes + +# Todo: enable connect to try all three types before failing (auto setlogsock)? + +=head1 NAME + +Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl interface to the UNIX syslog(3) calls + +=head1 SYNOPSIS + + use Sys::Syslog; # all except setlogsock, or: + use Sys::Syslog qw(:DEFAULT setlogsock); # default set, plus setlogsock + + setlogsock $sock_type; + openlog $ident, $logopt, $facility; + syslog $priority, $format, @args; + $oldmask = setlogmask $mask_priority; + closelog; + +=head1 DESCRIPTION + +Sys::Syslog is an interface to the UNIX C program. +Call C with a string priority and a list of C args +just like C. + +Syslog provides the functions: + +=over + +=item openlog $ident, $logopt, $facility + +I<$ident> is prepended to every message. +I<$logopt> contains zero or more of the words I, I, I, I. +I<$facility> specifies the part of the system + +=item syslog $priority, $format, @args + +If I<$priority> permits, logs I<($format, @args)> +printed as by C, with the addition that I<%m> +is replaced with C<"$!"> (the latest error message). + +=item setlogmask $mask_priority + +Sets log mask I<$mask_priority> and returns the old mask. + +=item setlogsock $sock_type (added in 5.004_02) + +Sets the socket type to be used for the next call to +C or C and returns TRUE on success, +undef on failure. + +A value of 'unix' will connect to the UNIX domain socket returned by +C<_PATH_LOG> in F. A value of 'inet' will connect to an +INET socket returned by getservbyname(). Any other value croaks. + +The default is for the INET socket to be used. + +=item closelog + +Closes the log file. + +=back + +Note that C now takes three arguments, just like C. + +=head1 EXAMPLES + + openlog($program, 'cons,pid', 'user'); + syslog('info', 'this is another test'); + syslog('mail|warning', 'this is a better test: %d', time); + closelog(); + + syslog('debug', 'this is the last test'); + + setlogsock('unix'); + openlog("$program $$", 'ndelay', 'user'); + syslog('notice', 'fooprogram: this is really done'); + + setlogsock('inet'); + $! = 55; + syslog('info', 'problem was %m'); # %m == $! in syslog(3) + +=head1 SEE ALSO + +L + +=head1 AUTHOR + +Tom Christiansen EFE and Larry Wall EFE. +UNIX domain sockets added by Sean Robinson EFE +with support from Tim Bunce and the perl5-porters mailing list. +Dependency on F replaced with XS code bu Tom Hughes EFE. + +=cut + +sub AUTOLOAD { + # This AUTOLOAD is used to 'autoload' constants from the constant() + # XS function. + + my $constname; + our $AUTOLOAD; + ($constname = $AUTOLOAD) =~ s/.*:://; + croak "& not defined" if $constname eq 'constant'; + my $val = constant($constname); + if ($! != 0) { + croak "Your vendor has not defined Sys::Syslog macro $constname"; + } + *$AUTOLOAD = sub { $val }; + goto &$AUTOLOAD; +} + +bootstrap Sys::Syslog $VERSION; + +$maskpri = &LOG_UPTO(&LOG_DEBUG); + +sub openlog { + ($ident, $logopt, $facility) = @_; # package vars + $lo_pid = $logopt =~ /\bpid\b/; + $lo_ndelay = $logopt =~ /\bndelay\b/; + $lo_cons = $logopt =~ /\bcons\b/; + $lo_nowait = $logopt =~ /\bnowait\b/; + return 1 unless $lo_ndelay; + &connect; +} + +sub closelog { + $facility = $ident = ''; + &disconnect; +} + +sub setlogmask { + local($oldmask) = $maskpri; + $maskpri = shift; + $oldmask; +} + +sub setlogsock { + local($setsock) = shift; + &disconnect if $connected; + if (lc($setsock) eq 'unix') { + if (defined &_PATH_LOG) { + $sock_type = 1; + } else { + return undef; + } + } elsif (lc($setsock) eq 'inet') { + if (getservbyname('syslog','udp')) { + undef($sock_type); + } else { + return undef; + } + } else { + croak "Invalid argument passed to setlogsock; must be 'unix' or 'inet'"; + } + return 1; +} + +sub syslog { + local($priority) = shift; + local($mask) = shift; + local($message, $whoami); + local(@words, $num, $numpri, $numfac, $sum); + local($facility) = $facility; # may need to change temporarily. + + croak "syslog: expected both priority and mask" unless $mask && $priority; + + @words = split(/\W+/, $priority, 2);# Allow "level" or "level|facility". + undef $numpri; + undef $numfac; + foreach (@words) { + $num = &xlate($_); # Translate word to number. + if (/^kern$/ || $num < 0) { + croak "syslog: invalid level/facility: $_"; + } + elsif ($num <= &LOG_PRIMASK) { + croak "syslog: too many levels given: $_" if defined($numpri); + $numpri = $num; + return 0 unless &LOG_MASK($numpri) & $maskpri; + } + else { + croak "syslog: too many facilities given: $_" if defined($numfac); + $facility = $_; + $numfac = $num; + } + } + + croak "syslog: level must be given" unless defined($numpri); + + if (!defined($numfac)) { # Facility not specified in this call. + $facility = 'user' unless $facility; + $numfac = &xlate($facility); + } + + &connect unless $connected; + + $whoami = $ident; + + if (!$whoami && $mask =~ /^(\S.*?):\s?(.*)/) { + $whoami = $1; + $mask = $2; + } + + unless ($whoami) { + ($whoami = getlogin) || + ($whoami = getpwuid($<)) || + ($whoami = 'syslog'); + } + + $whoami .= "[$$]" if $lo_pid; + + $mask =~ s/%m/$!/g; + $mask .= "\n" unless $mask =~ /\n$/; + $message = sprintf ($mask, @_); + + $sum = $numpri + $numfac; + unless (send(SYSLOG,"<$sum>$whoami: $message\0",0)) { + if ($lo_cons) { + if ($pid = fork) { + unless ($lo_nowait) { + $died = waitpid($pid, 0); + } + } + else { + if (open(CONS,">/dev/console")) { + print CONS "<$facility.$priority>$whoami: $message\r"; + exit if defined $pid; # if fork failed, we're parent + close CONS; + } + } + } + } +} + +sub xlate { + local($name) = @_; + $name = uc $name; + $name = "LOG_$name" unless $name =~ /^LOG_/; + $name = "Sys::Syslog::$name"; + eval { &$name } || -1; +} + +sub connect { + unless ($host) { + require Sys::Hostname; + my($host_uniq) = Sys::Hostname::hostname(); + ($host) = $host_uniq =~ /([A-Za-z0-9_.-]+)/; # allow FQDN (inc _) + } + unless ( $sock_type ) { + my $udp = getprotobyname('udp'); + my $syslog = getservbyname('syslog','udp'); + my $this = sockaddr_in($syslog, INADDR_ANY); + my $that = sockaddr_in($syslog, inet_aton($host) || croak "Can't lookup $host"); + socket(SYSLOG,AF_INET,SOCK_DGRAM,$udp) || croak "socket: $!"; + connect(SYSLOG,$that) || croak "connect: $!"; + } else { + my $syslog = &_PATH_LOG || croak "_PATH_LOG not found in syslog.ph"; + my $that = sockaddr_un($syslog) || croak "Can't locate $syslog"; + socket(SYSLOG,AF_UNIX,SOCK_STREAM,0) || croak "socket: $!"; + if (!connect(SYSLOG,$that)) { + socket(SYSLOG,AF_UNIX,SOCK_DGRAM,0) || croak "socket: $!"; + connect(SYSLOG,$that) || croak "connect: $! (SOCK_DGRAM after trying SOCK_STREAM)"; + } + } + local($old) = select(SYSLOG); $| = 1; select($old); + $connected = 1; +} + +sub disconnect { + close SYSLOG; + $connected = 0; +} + +1; diff --git a/contrib/perl5/ext/Sys/Syslog/Syslog.xs b/contrib/perl5/ext/Sys/Syslog/Syslog.xs new file mode 100644 index 000000000000..f0573b8109aa --- /dev/null +++ b/contrib/perl5/ext/Sys/Syslog/Syslog.xs @@ -0,0 +1,642 @@ +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#ifdef I_SYSLOG +#include +#endif + +static double +constant_LOG_NO(char *name, int len) +{ + switch (name[6 + 0]) { + case 'T': + if (strEQ(name + 6, "TICE")) { /* LOG_NO removed */ +#ifdef LOG_NOTICE + return LOG_NOTICE; +#else + goto not_there; +#endif + } + case 'W': + if (strEQ(name + 6, "WAIT")) { /* LOG_NO removed */ +#ifdef LOG_NOWAIT + return LOG_NOWAIT; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_N(char *name, int len) +{ + switch (name[5 + 0]) { + case 'D': + if (strEQ(name + 5, "DELAY")) { /* LOG_N removed */ +#ifdef LOG_NDELAY + return LOG_NDELAY; +#else + goto not_there; +#endif + } + case 'E': + if (strEQ(name + 5, "EWS")) { /* LOG_N removed */ +#ifdef LOG_NEWS + return LOG_NEWS; +#else + goto not_there; +#endif + } + case 'F': + if (strEQ(name + 5, "FACILITIES")) { /* LOG_N removed */ +#ifdef LOG_NFACILITIES + return LOG_NFACILITIES; +#else + goto not_there; +#endif + } + case 'O': + return constant_LOG_NO(name, len); + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_P(char *name, int len) +{ + switch (name[5 + 0]) { + case 'I': + if (strEQ(name + 5, "ID")) { /* LOG_P removed */ +#ifdef LOG_PID + return LOG_PID; +#else + goto not_there; +#endif + } + case 'R': + if (strEQ(name + 5, "RIMASK")) { /* LOG_P removed */ +#ifdef LOG_PRIMASK + return LOG_PRIMASK; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_AU(char *name, int len) +{ + if (6 + 2 >= len ) { + errno = EINVAL; + return 0; + } + switch (name[6 + 2]) { + case '\0': + if (strEQ(name + 6, "TH")) { /* LOG_AU removed */ +#ifdef LOG_AUTH + return LOG_AUTH; +#else + goto not_there; +#endif + } + case 'P': + if (strEQ(name + 6, "THPRIV")) { /* LOG_AU removed */ +#ifdef LOG_AUTHPRIV + return LOG_AUTHPRIV; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_A(char *name, int len) +{ + switch (name[5 + 0]) { + case 'L': + if (strEQ(name + 5, "LERT")) { /* LOG_A removed */ +#ifdef LOG_ALERT + return LOG_ALERT; +#else + goto not_there; +#endif + } + case 'U': + return constant_LOG_AU(name, len); + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_CR(char *name, int len) +{ + switch (name[6 + 0]) { + case 'I': + if (strEQ(name + 6, "IT")) { /* LOG_CR removed */ +#ifdef LOG_CRIT + return LOG_CRIT; +#else + goto not_there; +#endif + } + case 'O': + if (strEQ(name + 6, "ON")) { /* LOG_CR removed */ +#ifdef LOG_CRON + return LOG_CRON; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_C(char *name, int len) +{ + switch (name[5 + 0]) { + case 'O': + if (strEQ(name + 5, "ONS")) { /* LOG_C removed */ +#ifdef LOG_CONS + return LOG_CONS; +#else + goto not_there; +#endif + } + case 'R': + return constant_LOG_CR(name, len); + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_D(char *name, int len) +{ + switch (name[5 + 0]) { + case 'A': + if (strEQ(name + 5, "AEMON")) { /* LOG_D removed */ +#ifdef LOG_DAEMON + return LOG_DAEMON; +#else + goto not_there; +#endif + } + case 'E': + if (strEQ(name + 5, "EBUG")) { /* LOG_D removed */ +#ifdef LOG_DEBUG + return LOG_DEBUG; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_U(char *name, int len) +{ + switch (name[5 + 0]) { + case 'S': + if (strEQ(name + 5, "SER")) { /* LOG_U removed */ +#ifdef LOG_USER + return LOG_USER; +#else + goto not_there; +#endif + } + case 'U': + if (strEQ(name + 5, "UCP")) { /* LOG_U removed */ +#ifdef LOG_UUCP + return LOG_UUCP; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_E(char *name, int len) +{ + switch (name[5 + 0]) { + case 'M': + if (strEQ(name + 5, "MERG")) { /* LOG_E removed */ +#ifdef LOG_EMERG + return LOG_EMERG; +#else + goto not_there; +#endif + } + case 'R': + if (strEQ(name + 5, "RR")) { /* LOG_E removed */ +#ifdef LOG_ERR + return LOG_ERR; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_F(char *name, int len) +{ + switch (name[5 + 0]) { + case 'A': + if (strEQ(name + 5, "ACMASK")) { /* LOG_F removed */ +#ifdef LOG_FACMASK + return LOG_FACMASK; +#else + goto not_there; +#endif + } + case 'T': + if (strEQ(name + 5, "TP")) { /* LOG_F removed */ +#ifdef LOG_FTP + return LOG_FTP; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_LO(char *name, int len) +{ + if (6 + 3 >= len ) { + errno = EINVAL; + return 0; + } + switch (name[6 + 3]) { + case '0': + if (strEQ(name + 6, "CAL0")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL0 + return LOG_LOCAL0; +#else + goto not_there; +#endif + } + case '1': + if (strEQ(name + 6, "CAL1")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL1 + return LOG_LOCAL1; +#else + goto not_there; +#endif + } + case '2': + if (strEQ(name + 6, "CAL2")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL2 + return LOG_LOCAL2; +#else + goto not_there; +#endif + } + case '3': + if (strEQ(name + 6, "CAL3")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL3 + return LOG_LOCAL3; +#else + goto not_there; +#endif + } + case '4': + if (strEQ(name + 6, "CAL4")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL4 + return LOG_LOCAL4; +#else + goto not_there; +#endif + } + case '5': + if (strEQ(name + 6, "CAL5")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL5 + return LOG_LOCAL5; +#else + goto not_there; +#endif + } + case '6': + if (strEQ(name + 6, "CAL6")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL6 + return LOG_LOCAL6; +#else + goto not_there; +#endif + } + case '7': + if (strEQ(name + 6, "CAL7")) { /* LOG_LO removed */ +#ifdef LOG_LOCAL7 + return LOG_LOCAL7; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant_LOG_L(char *name, int len) +{ + switch (name[5 + 0]) { + case 'F': + if (strEQ(name + 5, "FMT")) { /* LOG_L removed */ +#ifdef LOG_LFMT + return LOG_LFMT; +#else + goto not_there; +#endif + } + case 'O': + return constant_LOG_LO(name, len); + case 'P': + if (strEQ(name + 5, "PR")) { /* LOG_L removed */ +#ifdef LOG_LPR + return LOG_LPR; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + +static double +constant(char *name, int len) +{ + errno = 0; + if (0 + 4 >= len ) { + errno = EINVAL; + return 0; + } + switch (name[0 + 4]) { + case 'A': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_A(name, len); + case 'C': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_C(name, len); + case 'D': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_D(name, len); + case 'E': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_E(name, len); + case 'F': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_F(name, len); + case 'I': + if (strEQ(name + 0, "LOG_INFO")) { /* removed */ +#ifdef LOG_INFO + return LOG_INFO; +#else + goto not_there; +#endif + } + case 'K': + if (strEQ(name + 0, "LOG_KERN")) { /* removed */ +#ifdef LOG_KERN + return LOG_KERN; +#else + goto not_there; +#endif + } + case 'L': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_L(name, len); + case 'M': + if (strEQ(name + 0, "LOG_MAIL")) { /* removed */ +#ifdef LOG_MAIL + return LOG_MAIL; +#else + goto not_there; +#endif + } + case 'N': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_N(name, len); + case 'O': + if (strEQ(name + 0, "LOG_ODELAY")) { /* removed */ +#ifdef LOG_ODELAY + return LOG_ODELAY; +#else + goto not_there; +#endif + } + case 'P': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_P(name, len); + case 'S': + if (strEQ(name + 0, "LOG_SYSLOG")) { /* removed */ +#ifdef LOG_SYSLOG + return LOG_SYSLOG; +#else + goto not_there; +#endif + } + case 'U': + if (!strnEQ(name + 0,"LOG_", 4)) + break; + return constant_LOG_U(name, len); + case 'W': + if (strEQ(name + 0, "LOG_WARNING")) { /* removed */ +#ifdef LOG_WARNING + return LOG_WARNING; +#else + goto not_there; +#endif + } + } + errno = EINVAL; + return 0; + +not_there: + errno = ENOENT; + return 0; +} + + +MODULE = Sys::Syslog PACKAGE = Sys::Syslog + +char * +_PATH_LOG() + CODE: +#ifdef _PATH_LOG + RETVAL = _PATH_LOG; +#else + croak("Your vendor has not defined the Sys::Syslog macro _PATH_LOG"); + RETVAL = NULL; +#endif + OUTPUT: + RETVAL + +int +LOG_FAC(p) + INPUT: + int p + CODE: +#ifdef LOG_FAC + RETVAL = LOG_FAC(p); +#else + croak("Your vendor has not defined the Sys::Syslog macro LOG_FAC"); + RETVAL = -1; +#endif + OUTPUT: + RETVAL + +int +LOG_PRI(p) + INPUT: + int p + CODE: +#ifdef LOG_PRI + RETVAL = LOG_PRI(p); +#else + croak("Your vendor has not defined the Sys::Syslog macro LOG_PRI"); + RETVAL = -1; +#endif + OUTPUT: + RETVAL + +int +LOG_MAKEPRI(fac,pri) + INPUT: + int fac + int pri + CODE: +#ifdef LOG_MAKEPRI + RETVAL = LOG_MAKEPRI(fac,pri); +#else + croak("Your vendor has not defined the Sys::Syslog macro LOG_MAKEPRI"); + RETVAL = -1; +#endif + OUTPUT: + RETVAL + +int +LOG_MASK(pri) + INPUT: + int pri + CODE: +#ifdef LOG_MASK + RETVAL = LOG_MASK(pri); +#else + croak("Your vendor has not defined the Sys::Syslog macro LOG_MASK"); + RETVAL = -1; +#endif + OUTPUT: + RETVAL + +int +LOG_UPTO(pri) + INPUT: + int pri + CODE: +#ifdef LOG_UPTO + RETVAL = LOG_UPTO(pri); +#else + croak("Your vendor has not defined the Sys::Syslog macro LOG_UPTO"); + RETVAL = -1; +#endif + OUTPUT: + RETVAL + + +double +constant(sv) + PREINIT: + STRLEN len; + INPUT: + SV * sv + char * s = SvPV(sv, len); + CODE: + RETVAL = constant(s,len); + OUTPUT: + RETVAL + diff --git a/contrib/perl5/ext/Thread/Thread.pm b/contrib/perl5/ext/Thread/Thread.pm index c8bca0db7136..00cba8af6736 100644 --- a/contrib/perl5/ext/Thread/Thread.pm +++ b/contrib/perl5/ext/Thread/Thread.pm @@ -1,16 +1,16 @@ package Thread; require Exporter; -require DynaLoader; -use vars qw($VERSION @ISA @EXPORT); +use XSLoader (); +our($VERSION, @ISA, @EXPORT); $VERSION = "1.0"; -@ISA = qw(Exporter DynaLoader); +@ISA = qw(Exporter); @EXPORT_OK = qw(yield cond_signal cond_broadcast cond_wait async); =head1 NAME -Thread - multithreading +Thread - manipulate threads in Perl (EXPERIMENTAL, subject to change) =head1 SYNOPSIS @@ -18,20 +18,32 @@ Thread - multithreading my $t = new Thread \&start_sub, @start_args; - $t->join; + $result = $t->join; + $result = $t->eval; + $t->detach; + + if($t->equal($another_thread)) { + # ... + } my $tid = Thread->self->tid; - my $tlist = Thread->list; lock($scalar); + yield(); use Thread 'async'; - use Thread 'eval'; - =head1 DESCRIPTION + WARNING: Threading is an experimental feature. Both the interface + and implementation are subject to change drastically. In fact, this + documentation describes the flavor of threads that was in version + 5.005. Perl 5.6.0 and later have the beginnings of support for + interpreter threads, which (when finished) is expected to be + significantly different from what is described here. The information + contained here may therefore soon be obsolete. Use at your own risk! + The C module provides multithreading support for perl. =head1 FUNCTIONS @@ -70,8 +82,8 @@ of that container are not locked. For example, if a thread does a C a sub, using C. Any calls to that sub from another thread will block until the lock is released. This behaviour is not -equvalent to C in the sub. C -serializes access to a subroutine, but allows different threads +equivalent to declaring the sub with the C attribute. The C +attribute serializes access to a subroutine, but allows different threads non-simultaneous access. C, on the other hand, will not allow I other thread access for the duration of the lock. @@ -122,6 +134,11 @@ The C function works similarly to C. C, though, will unblock B the threads that are blocked in a C on the locked variable, rather than only one. +=item yield + +The C function allows another thread to take control of the +CPU. The exact results are implementation-dependent. + =back =head1 METHODS @@ -145,6 +162,18 @@ The C method wraps an C around a C, and so waits for a thread to exit, passing along any values the thread might have returned. Errors, of course, get placed into C<$@>. +=item detach + +C tells a thread that it is never going to be joined i.e. +that all traces of its existence can be removed once it stops running. +Errors in detached threads will not be visible anywhere - if you want +to catch them, you should use $SIG{__DIE__} or something like that. + +=item equal + +C tests whether two thread objects represent the same thread and +returns true if they do. + =item tid The C method returns the tid of a thread. The tid is a monotonically @@ -152,6 +181,8 @@ increasing integer assigned when a thread is created. The main thread of a program will have a tid of zero, while subsequent threads will have tids assigned starting with one. +=back + =head1 LIMITATIONS The sequence number used to assign tids is a simple integer, and no @@ -161,7 +192,7 @@ duplicate tids. This limitation may be lifted in a future version of Perl. =head1 SEE ALSO -L, L, L, L. +L, L, L, L. =cut @@ -180,6 +211,6 @@ sub eval { return eval { shift->join; }; } -bootstrap Thread; +XSLoader::load 'Thread'; 1; diff --git a/contrib/perl5/ext/Thread/Thread.xs b/contrib/perl5/ext/Thread/Thread.xs index 2337e8c38813..4b5e6db9f869 100644 --- a/contrib/perl5/ext/Thread/Thread.xs +++ b/contrib/perl5/ext/Thread/Thread.xs @@ -1,3 +1,4 @@ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" @@ -20,16 +21,17 @@ static int sig_pipe[2]; #endif static void -remove_thread(struct perl_thread *t) +remove_thread(pTHX_ struct perl_thread *t) { #ifdef USE_THREADS - DEBUG_S(WITH_THR(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(WITH_THR(PerlIO_printf(Perl_debug_log, "%p: remove_thread %p\n", thr, t))); MUTEX_LOCK(&PL_threads_mutex); MUTEX_DESTROY(&t->mutex); PL_nthreads--; t->prev->next = t->next; t->next->prev = t->prev; + SvREFCNT_dec(t->oursv); COND_BROADCAST(&PL_nthreads_cond); MUTEX_UNLOCK(&PL_threads_mutex); #endif @@ -48,7 +50,7 @@ threadstart(void *arg) AV *av; int i; - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "new thread %p starting at %s\n", + DEBUG_S(PerlIO_printf(Perl_debug_log, "new thread %p starting at %s\n", thr, SvPEEK(TOPs))); thr = (Thread) arg; savemark = TOPMARK; @@ -68,7 +70,7 @@ threadstart(void *arg) myop.op_flags |= OPf_WANT_LIST; PL_op = pp_entersub(ARGS); DEBUG_S(if (!PL_op) - PerlIO_printf(PerlIO_stderr(), "thread starts at Nullop\n")); + PerlIO_printf(Perl_debug_log, "thread starts at Nullop\n")); /* * When this thread is next scheduled, we start in the right * place. When the thread runs off the end of the sub, perl.c @@ -85,13 +87,18 @@ threadstart(void *arg) I32 oldscope = PL_scopestack_ix; I32 retval; SV *sv; - AV *av = newAV(); + AV *av; int i, ret; dJMPENV; - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "new thread %p waiting to start\n", + +#if defined(MULTIPLICITY) + PERL_SET_INTERP(thr->interp); +#endif + + DEBUG_S(PerlIO_printf(Perl_debug_log, "new thread %p waiting to start\n", thr)); - /* Don't call *anything* requiring dTHR until after SET_THR() */ + /* Don't call *anything* requiring dTHR until after PERL_SET_THX() */ /* * Wait until our creator releases us. If we didn't do this, then * it would be potentially possible for out thread to carry on and @@ -107,12 +114,13 @@ threadstart(void *arg) * from our pthread_t structure to our struct perl_thread, since * we're the only thread who can get at it anyway. */ - SET_THR(thr); + PERL_SET_THX(thr); /* Only now can we use SvPEEK (which calls sv_newmortal which does dTHR) */ - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "new thread %p starting at %s\n", + DEBUG_S(PerlIO_printf(Perl_debug_log, "new thread %p starting at %s\n", thr, SvPEEK(TOPs))); + av = newAV(); sv = POPs; PUTBACK; ENTER; @@ -122,18 +130,18 @@ threadstart(void *arg) retval = SP - (PL_stack_base + oldmark); SP = PL_stack_base + oldmark + 1; if (SvCUR(thr->errsv)) { - STRLEN n_a; MUTEX_LOCK(&thr->mutex); thr->flags |= THRf_DID_DIE; MUTEX_UNLOCK(&thr->mutex); av_store(av, 0, &PL_sv_no); av_store(av, 1, newSVsv(thr->errsv)); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p died: %s\n", - thr, SvPV(thr->errsv, n_a))); - } else { + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p died: %s\n", + thr, SvPV(thr->errsv, PL_na))); + } + else { DEBUG_S(STMT_START { for (i = 1; i <= retval; i++) { - PerlIO_printf(PerlIO_stderr(), "%p return[%d] = %s\n", + PerlIO_printf(Perl_debug_log, "%p return[%d] = %s\n", thr, i, SvPEEK(SP[i - 1])); } } STMT_END); @@ -153,7 +161,6 @@ threadstart(void *arg) SvREFCNT_dec(thr->threadsv); SvREFCNT_dec(thr->specific); SvREFCNT_dec(thr->errsv); - SvREFCNT_dec(thr->errhv); /*Safefree(cxstack);*/ while (PL_curstackinfo->si_next) @@ -175,37 +182,39 @@ threadstart(void *arg) SvREFCNT_dec(PL_rs); SvREFCNT_dec(PL_nrs); SvREFCNT_dec(PL_statname); + SvREFCNT_dec(PL_errors); Safefree(PL_screamfirst); Safefree(PL_screamnext); Safefree(PL_reg_start_tmp); SvREFCNT_dec(PL_lastscream); SvREFCNT_dec(PL_defoutgv); + Safefree(PL_reg_poscache); MUTEX_LOCK(&thr->mutex); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: threadstart finishing: state is %u\n", thr, ThrSTATE(thr))); switch (ThrSTATE(thr)) { case THRf_R_JOINABLE: ThrSETSTATE(thr, THRf_ZOMBIE); MUTEX_UNLOCK(&thr->mutex); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: R_JOINABLE thread finished\n", thr)); break; case THRf_R_JOINED: ThrSETSTATE(thr, THRf_DEAD); MUTEX_UNLOCK(&thr->mutex); - remove_thread(thr); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + remove_thread(aTHX_ thr); + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: R_JOINED thread finished\n", thr)); break; case THRf_R_DETACHED: ThrSETSTATE(thr, THRf_DEAD); MUTEX_UNLOCK(&thr->mutex); SvREFCNT_dec(av); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: DETACHED thread finished\n", thr)); - remove_thread(thr); /* This might trigger main thread to finish */ + remove_thread(aTHX_ thr); /* This might trigger main thread to finish */ break; default: MUTEX_UNLOCK(&thr->mutex); @@ -222,7 +231,7 @@ threadstart(void *arg) } static SV * -newthread (SV *startsv, AV *initargs, char *classname) +newthread (pTHX_ SV *startsv, AV *initargs, char *classname) { #ifdef USE_THREADS dSP; @@ -234,17 +243,18 @@ newthread (SV *startsv, AV *initargs, char *classname) static pthread_attr_t attr; static int attr_inited = 0; sigset_t fullmask, oldmask; + static int attr_joinable = PTHREAD_CREATE_JOINABLE; #endif - + savethread = thr; thr = new_struct_thread(thr); /* temporarily pretend to be the child thread in case the * XPUSHs() below want to grow the child's stack. This is * safe, since the other thread is not yet created, and we * are the only ones who know about it */ - SET_THR(thr); + PERL_SET_THX(thr); SPAGAIN; - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: newthread (%p), tid is %u, preparing stack\n", savethread, thr, thr->tid)); /* The following pushes the arg list and startsv onto the *new* stack */ @@ -256,7 +266,7 @@ newthread (SV *startsv, AV *initargs, char *classname) PUTBACK; /* On your marks... */ - SET_THR(savethread); + PERL_SET_THX(savethread); MUTEX_LOCK(&thr->mutex); #ifdef THREAD_CREATE @@ -269,39 +279,27 @@ newthread (SV *startsv, AV *initargs, char *classname) err = 0; if (!attr_inited) { attr_inited = 1; -#ifdef OLD_PTHREADS_API - err = pthread_attr_create(&attr); -#else err = pthread_attr_init(&attr); -#endif -#ifdef OLD_PTHREADS_API -#ifdef VMS -/* This is available with the old pthreads API, but only with */ -/* DecThreads (VMS and Digital Unix) */ +# ifdef PTHREAD_ATTR_SETDETACHSTATE if (err == 0) - err = pthread_attr_setdetach_np(&attr, ATTR_JOINABLE); -#endif -#else - if (err == 0) - err = pthread_attr_setdetachstate(&attr, ATTR_JOINABLE); -#endif + err = PTHREAD_ATTR_SETDETACHSTATE(&attr, attr_joinable); + +# else + croak("panic: can't pthread_attr_setdetachstate"); +# endif } if (err == 0) -#ifdef OLD_PTHREADS_API - err = pthread_create(&thr->self, attr, threadstart, (void*) thr); -#else - err = pthread_create(&thr->self, &attr, threadstart, (void*) thr); -#endif + err = PTHREAD_CREATE(&thr->self, attr, threadstart, (void*) thr); #endif + if (err) { MUTEX_UNLOCK(&thr->mutex); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: create of %p failed %d\n", savethread, thr, err)); /* Thread creation failed--clean up */ SvREFCNT_dec(thr->cvcache); - remove_thread(thr); - MUTEX_DESTROY(&thr->mutex); + remove_thread(aTHX_ thr); for (i = 0; i <= AvFILL(initargs); i++) SvREFCNT_dec(*av_fetch(initargs, i, FALSE)); SvREFCNT_dec(startsv); @@ -330,18 +328,19 @@ newthread (SV *startsv, AV *initargs, char *classname) #endif } -static Signal_t handle_thread_signal _((int sig)); +static Signal_t handle_thread_signal (int sig); static Signal_t handle_thread_signal(int sig) { + dTHXo; unsigned char c = (unsigned char) sig; /* * We're not really allowed to call fprintf in a signal handler * so don't be surprised if this isn't robust while debugging * with -DL. */ - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, "handle_thread_signal: got signal %d\n", sig);); write(sig_pipe[1], &c, 1); } @@ -355,7 +354,7 @@ new(classname, startsv, ...) SV * startsv AV * av = av_make(items - 2, &ST(2)); PPCODE: - XPUSHs(sv_2mortal(newthread(startsv, av, classname))); + XPUSHs(sv_2mortal(newthread(aTHX_ startsv, av, classname))); void join(t) @@ -364,7 +363,9 @@ join(t) int i = NO_INIT PPCODE: #ifdef USE_THREADS - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p: joining %p (state %u)\n", + if (t == thr) + croak("Attempt to join self"); + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: joining %p (state %u)\n", thr, t, ThrSTATE(t));); MUTEX_LOCK(&t->mutex); switch (ThrSTATE(t)) { @@ -376,7 +377,7 @@ join(t) case THRf_ZOMBIE: ThrSETSTATE(t, THRf_DEAD); MUTEX_UNLOCK(&t->mutex); - remove_thread(t); + remove_thread(aTHX_ t); break; default: MUTEX_UNLOCK(&t->mutex); @@ -385,14 +386,17 @@ join(t) } JOIN(t, &av); + sv_2mortal((SV*)av); + if (SvTRUE(*av_fetch(av, 0, FALSE))) { /* Could easily speed up the following if necessary */ for (i = 1; i <= AvFILL(av); i++) - XPUSHs(sv_2mortal(*av_fetch(av, i, FALSE))); - } else { + XPUSHs(*av_fetch(av, i, FALSE)); + } + else { STRLEN n_a; char *mess = SvPV(*av_fetch(av, 1, FALSE), n_a); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: join propagating die message: %s\n", thr, mess)); croak(mess); @@ -404,7 +408,7 @@ detach(t) Thread t CODE: #ifdef USE_THREADS - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p: detaching %p (state %u)\n", + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: detaching %p (state %u)\n", thr, t, ThrSTATE(t));); MUTEX_LOCK(&t->mutex); switch (ThrSTATE(t)) { @@ -419,7 +423,7 @@ detach(t) ThrSETSTATE(t, THRf_DEAD); DETACH(t); MUTEX_UNLOCK(&t->mutex); - remove_thread(t); + remove_thread(aTHX_ t); break; default: MUTEX_UNLOCK(&t->mutex); @@ -496,7 +500,7 @@ CODE: sv = SvRV(sv); mg = condpair_magic(sv); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p: cond_wait %p\n", thr, sv)); + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: cond_wait %p\n", thr, sv)); MUTEX_LOCK(MgMUTEXP(mg)); if (MgOWNER(mg) != thr) { MUTEX_UNLOCK(MgMUTEXP(mg)); @@ -521,7 +525,7 @@ CODE: sv = SvRV(sv); mg = condpair_magic(sv); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p: cond_signal %p\n",thr,sv)); + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: cond_signal %p\n",thr,sv)); MUTEX_LOCK(MgMUTEXP(mg)); if (MgOWNER(mg) != thr) { MUTEX_UNLOCK(MgMUTEXP(mg)); @@ -541,7 +545,7 @@ CODE: sv = SvRV(sv); mg = condpair_magic(sv); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), "%p: cond_broadcast %p\n", + DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: cond_broadcast %p\n", thr, sv)); MUTEX_LOCK(MgMUTEXP(mg)); if (MgOWNER(mg) != thr) { @@ -643,8 +647,8 @@ await_signal() croak("panic: await_signal"); ST(0) = sv_newmortal(); if (ret) - sv_setsv(ST(0), c ? psig_ptr[c] : &PL_sv_no); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + sv_setsv(ST(0), c ? PL_psig_ptr[c] : &PL_sv_no); + DEBUG_S(PerlIO_printf(Perl_debug_log, "await_signal returning %s\n", SvPEEK(ST(0)));); MODULE = Thread PACKAGE = Thread::Specific diff --git a/contrib/perl5/ext/Thread/Thread/Queue.pm b/contrib/perl5/ext/Thread/Thread/Queue.pm index 6d5f82be3444..831573c72658 100644 --- a/contrib/perl5/ext/Thread/Thread/Queue.pm +++ b/contrib/perl5/ext/Thread/Thread/Queue.pm @@ -67,15 +67,13 @@ sub new { return bless [@_], $class; } -sub dequeue { - use attrs qw(locked method); +sub dequeue : locked : method { my $q = shift; cond_wait $q until @$q; return shift @$q; } -sub dequeue_nb { - use attrs qw(locked method); +sub dequeue_nb : locked : method { my $q = shift; if (@$q) { return shift @$q; @@ -84,14 +82,12 @@ sub dequeue_nb { } } -sub enqueue { - use attrs qw(locked method); +sub enqueue : locked : method { my $q = shift; push(@$q, @_) and cond_broadcast $q; } -sub pending { - use attrs qw(locked method); +sub pending : locked : method { my $q = shift; return scalar(@$q); } diff --git a/contrib/perl5/ext/Thread/Thread/Semaphore.pm b/contrib/perl5/ext/Thread/Thread/Semaphore.pm index 915808cbed7e..3cd6338d4df8 100644 --- a/contrib/perl5/ext/Thread/Thread/Semaphore.pm +++ b/contrib/perl5/ext/Thread/Thread/Semaphore.pm @@ -69,16 +69,14 @@ sub new { bless \$val, $class; } -sub down { - use attrs qw(locked method); +sub down : locked : method { my $s = shift; my $inc = @_ ? shift : 1; cond_wait $s until $$s >= $inc; $$s -= $inc; } -sub up { - use attrs qw(locked method); +sub up : locked : method { my $s = shift; my $inc = @_ ? shift : 1; ($$s += $inc) > 0 and cond_broadcast $s; diff --git a/contrib/perl5/ext/Thread/Thread/Specific.pm b/contrib/perl5/ext/Thread/Thread/Specific.pm index 9c8a66a9e6a1..a6271a4ae4d1 100644 --- a/contrib/perl5/ext/Thread/Thread/Specific.pm +++ b/contrib/perl5/ext/Thread/Thread/Specific.pm @@ -15,14 +15,13 @@ C returns a unique thread-specific key. =cut -sub import { - use attrs qw(locked method); +sub import : locked : method { require fields; - fields->import(@_); + fields::->import(@_); } -sub key_create { - use attrs qw(locked method); +sub key_create : locked : method { + our %FIELDS; # suppress "used only once" return ++$FIELDS{__MAX__}; } diff --git a/contrib/perl5/ext/Thread/sync.t b/contrib/perl5/ext/Thread/sync.t index 9c2e5897da5c..6445b5579c58 100644 --- a/contrib/perl5/ext/Thread/sync.t +++ b/contrib/perl5/ext/Thread/sync.t @@ -2,8 +2,7 @@ use Thread; $level = 0; -sub single_file { - use attrs 'locked'; +sub single_file : locked { my $arg = shift; $level++; print "Level $level for $arg\n"; diff --git a/contrib/perl5/ext/Thread/sync2.t b/contrib/perl5/ext/Thread/sync2.t index 0901da46a0ab..ffc74b4ec186 100644 --- a/contrib/perl5/ext/Thread/sync2.t +++ b/contrib/perl5/ext/Thread/sync2.t @@ -2,8 +2,7 @@ use Thread; $global = undef; -sub single_file { - use attrs 'locked'; +sub single_file : locked { my $who = shift; my $i; diff --git a/contrib/perl5/ext/Thread/typemap b/contrib/perl5/ext/Thread/typemap index 21eb6c32409b..7ce7d5cce3e5 100644 --- a/contrib/perl5/ext/Thread/typemap +++ b/contrib/perl5/ext/Thread/typemap @@ -13,7 +13,7 @@ T_XSCPTR || mg->mg_private != ${ntype}_MAGIC_SIGNATURE) croak(\"XSUB ${func_name}: $var is a forged ${ntype} object\"); $var = ($type) SvPVX(mg->mg_obj); - DEBUG_S(PerlIO_printf(PerlIO_stderr(), + DEBUG_S(PerlIO_printf(Perl_debug_log, \"XSUB ${func_name}: %p\\n\", $var);) } STMT_END T_IVREF diff --git a/contrib/perl5/ext/attrs/attrs.pm b/contrib/perl5/ext/attrs/attrs.pm index fe2bf356e4fa..2070632558f4 100644 --- a/contrib/perl5/ext/attrs/attrs.pm +++ b/contrib/perl5/ext/attrs/attrs.pm @@ -1,14 +1,11 @@ package attrs; -require DynaLoader; -use vars '@ISA'; -@ISA = 'DynaLoader'; +use XSLoader (); -use vars qw($VERSION); $VERSION = "1.0"; =head1 NAME -attrs - set/get attributes of a subroutine +attrs - set/get attributes of a subroutine (deprecated) =head1 SYNOPSIS @@ -21,11 +18,17 @@ attrs - set/get attributes of a subroutine =head1 DESCRIPTION -This module lets you set and get attributes for subroutines. +NOTE: Use of this pragma is deprecated. Use the syntax + + sub foo : locked method { } + +to declare attributes instead. See also L. + +This pragma lets you set and get attributes for subroutines. Setting attributes takes place at compile time; trying to set invalid attribute names causes a compile-time error. Calling -C on a subroutine reference or name returns its list -of attribute names. Notice that C is not exported. +C on a subroutine reference or name returns its list +of attribute names. Notice that C is not exported. Valid attributes are as follows. =over @@ -50,6 +53,6 @@ subroutine is entered. =cut -bootstrap attrs $VERSION; +XSLoader::load 'attrs', $VERSION; 1; diff --git a/contrib/perl5/ext/attrs/attrs.xs b/contrib/perl5/ext/attrs/attrs.xs index 7f7970d207d7..4c00cd7cb267 100644 --- a/contrib/perl5/ext/attrs/attrs.xs +++ b/contrib/perl5/ext/attrs/attrs.xs @@ -1,3 +1,4 @@ +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" @@ -26,6 +27,10 @@ char * Class PPCODE: if (!PL_compcv || !(cv = CvOUTSIDE(PL_compcv))) croak("can't set attributes outside a subroutine scope"); + if (ckWARN(WARN_DEPRECATED)) + Perl_warner(aTHX_ WARN_DEPRECATED, + "pragma \"attrs\" is deprecated, " + "use \"sub NAME : ATTRS\" instead"); for (i = 1; i < items; i++) { STRLEN n_a; char *attr = SvPV(ST(i), n_a); @@ -55,7 +60,7 @@ SV * sub if (!sub) croak("invalid subroutine reference or name"); if (CvFLAGS(sub) & CVf_METHOD) - XPUSHs(sv_2mortal(newSVpv("method", 0))); + XPUSHs(sv_2mortal(newSVpvn("method", 6))); if (CvFLAGS(sub) & CVf_LOCKED) - XPUSHs(sv_2mortal(newSVpv("locked", 0))); + XPUSHs(sv_2mortal(newSVpvn("locked", 6))); diff --git a/contrib/perl5/ext/re/Makefile.PL b/contrib/perl5/ext/re/Makefile.PL index 040b085f4faa..bd0f1f741c19 100644 --- a/contrib/perl5/ext/re/Makefile.PL +++ b/contrib/perl5/ext/re/Makefile.PL @@ -5,7 +5,7 @@ WriteMakefile( MAN3PODS => {}, # Pods will be built by installman. XSPROTOARG => '-noprototypes', OBJECT => 're_exec$(OBJ_EXT) re_comp$(OBJ_EXT) re$(OBJ_EXT)', - DEFINE => '-DPERL_EXT_RE_BUILD', + DEFINE => '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG', clean => { FILES => '*$(OBJ_EXT) *.c ../../lib/re.pm' }, ); diff --git a/contrib/perl5/ext/re/re.pm b/contrib/perl5/ext/re/re.pm index 83e7dbafe569..3f142d9de485 100644 --- a/contrib/perl5/ext/re/re.pm +++ b/contrib/perl5/ext/re/re.pm @@ -41,11 +41,11 @@ on tainted data aren't meant to extract safe substrings, but to perform other transformations. When C is in effect, a regex is allowed to contain -C<(?{ ... })> zero-width assertions even if the regex contains -variable interpolation. This is normally disallowed, since it is a +C<(?{ ... })> zero-width assertions even if regular expression contains +variable interpolation. That is normally disallowed, since it is a potential security risk. Note that this pragma is ignored when the regular expression is obtained from tainted data, i.e. evaluation is always -disallowed with tainted regular expressions. See L. +disallowed with tainted regular expresssions. See L. For the purpose of this pragma, interpolation of precompiled regular expressions (i.e., the result of C) is I considered variable @@ -74,6 +74,8 @@ See L. =cut +# N.B. File::Basename contains a literal for 'taint' as a fallback. If +# taint is changed here, File::Basename must be updated as well. my %bitmask = ( taint => 0x00100000, eval => 0x00200000, @@ -84,16 +86,13 @@ sub setcolor { require Term::Cap; my $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning. - my $props = $ENV{PERL_RE_TC} || 'md,me,so,se'; # can use us/ue later + my $props = $ENV{PERL_RE_TC} || 'md,me,so,se,us,ue'; my @props = split /,/, $props; + my $colors = join "\t", map {$terminal->Tputs($_,1)} @props; - - $ENV{TERMCAP_COLORS} = join "\t", map {$terminal->Tputs($_,1)} @props; + $colors =~ s/\0//g; + $ENV{PERL_RE_COLORS} = $colors; }; - - not defined $ENV{TERMCAP_COLORS} or ($ENV{TERMCAP_COLORS} =~ tr/\t/\t/) >= 4 - or not defined $ENV{PERL_RE_TC} - or die "Not enough fields in \$ENV{PERL_RE_TC}=`$ENV{PERL_RE_TC}'"; } sub bits { @@ -106,9 +105,8 @@ sub bits { foreach my $s (@_){ if ($s eq 'debug' or $s eq 'debugcolor') { setcolor() if $s eq 'debugcolor'; - require DynaLoader; - @ISA = ('DynaLoader'); - bootstrap re; + require XSLoader; + XSLoader::load('re'); install() if $on; uninstall() unless $on; next; diff --git a/contrib/perl5/ext/re/re.xs b/contrib/perl5/ext/re/re.xs index 7230d626dc2a..04a5fdc7420e 100644 --- a/contrib/perl5/ext/re/re.xs +++ b/contrib/perl5/ext/re/re.xs @@ -3,36 +3,49 @@ # define DEBUGGING #endif +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" -extern regexp* my_regcomp _((char* exp, char* xend, PMOP* pm)); -extern I32 my_regexec _((regexp* prog, char* stringarg, char* strend, - char* strbeg, I32 minend, SV* screamer, - void* data, U32 flags)); +extern regexp* my_regcomp (pTHX_ char* exp, char* xend, PMOP* pm); +extern I32 my_regexec (pTHX_ regexp* prog, char* stringarg, char* strend, + char* strbeg, I32 minend, SV* screamer, + void* data, U32 flags); +extern void my_regfree (pTHX_ struct regexp* r); +extern char* my_re_intuit_start (pTHX_ regexp *prog, SV *sv, char *strpos, + char *strend, U32 flags, + struct re_scream_pos_data_s *data); +extern SV* my_re_intuit_string (pTHX_ regexp *prog); static int oldfl; #define R_DB 512 static void -deinstall(void) +deinstall(pTHX) { dTHR; - PL_regexecp = ®exec_flags; - PL_regcompp = &pregcomp; + PL_regexecp = Perl_regexec_flags; + PL_regcompp = Perl_pregcomp; + PL_regint_start = Perl_re_intuit_start; + PL_regint_string = Perl_re_intuit_string; + PL_regfree = Perl_pregfree; + if (!oldfl) PL_debug &= ~R_DB; } static void -install(void) +install(pTHX) { dTHR; PL_colorset = 0; /* Allow reinspection of ENV. */ PL_regexecp = &my_regexec; PL_regcompp = &my_regcomp; + PL_regint_start = &my_re_intuit_start; + PL_regint_string = &my_re_intuit_string; + PL_regfree = &my_regfree; oldfl = PL_debug & R_DB; PL_debug |= R_DB; } @@ -41,6 +54,10 @@ MODULE = re PACKAGE = re void install() + CODE: + install(aTHX); void deinstall() + CODE: + deinstall(aTHX); diff --git a/contrib/perl5/form.h b/contrib/perl5/form.h index 0d3053d78b7d..ca2a0c8433ef 100644 --- a/contrib/perl5/form.h +++ b/contrib/perl5/form.h @@ -1,6 +1,6 @@ /* form.h * - * Copyright (c) 1991-1999, Larry Wall + * Copyright (c) 1991-2000, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/contrib/perl5/global.sym b/contrib/perl5/global.sym index 99edf17782fe..95e7775609cb 100644 --- a/contrib/perl5/global.sym +++ b/contrib/perl5/global.sym @@ -1,1074 +1,539 @@ -# Global symbols that need to be hidden in embedded applications. +# +# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! +# This file is autogenerated from data in embed.pl. Edit that file +# and run 'make regen_headers' to effect changes. +# -# Variables - should not be here but in perlvars.h - -AMG_names -Error -abs_amg -add_amg -add_ass_amg -additem -atan2_amg -band_amg -block_type -bool__amg -bor_amg -bxor_amg -check -compl_amg -concat_amg -concat_ass_amg -cos_amg -dc -dec_amg -di -div_amg -div_ass_amg -do_binmode -ds -eq_amg -exp_amg -expectterm -fallback_amg -fold -fold_locale -freq -ge_amg -gt_amg -inc_amg -init_thread_intern -io_close -know_next -le_amg -log_amg -lshift_amg -lshift_ass_amg -lt_amg -mod_amg -mod_ass_amg -mult_amg -mult_ass_amg -ncmp_amg -ne_amg -neg_amg -new_struct_thread -new_stackinfo -no_aelem -no_dir_func -no_func -no_helem -no_mem -no_modify -no_myglob -no_security -no_sock_func -no_symref -no_usym -no_wrongref -nointrp -nomem -nomethod_amg -not_amg -numer_amg -op_const_sv -op_desc -op_name -opargs -pow_amg -pow_ass_amg -ppaddr -psig_name -psig_ptr -reall_srchlen -regkind -repeat_amg -repeat_ass_amg -rshift_amg -rshift_ass_amg -runops_debug -runops_standard -saw_return -scmp_amg -seq_amg -sge_amg -sgt_amg -sig_name -sig_num -simple -sin_amg -sle_amg -slt_amg -sne_amg -sqrt_amg -string_amg -subtr_amg -subtr_ass_amg -varies -vivify_defelem -vivify_ref -vtbl_amagic -vtbl_amagicelem -vtbl_arylen -vtbl_bm -vtbl_collxfrm -vtbl_dbline -vtbl_defelem -vtbl_env -vtbl_envelem -vtbl_fm -vtbl_glob -vtbl_isa -vtbl_isaelem -vtbl_mglob -vtbl_mutex -vtbl_nkeys -vtbl_pack -vtbl_packelem -vtbl_pos -vtbl_regexp -vtbl_sig -vtbl_sigelem -vtbl_substr -vtbl_sv -vtbl_taint -vtbl_uvar -vtbl_vec -warn_nl -warn_nosemi -warn_reserved -warn_uninit -watchaddr -watchok -yychar -yycheck -yydebug -yydefred -yydgoto -yyerrflag -yygindex -yylen -yylhs -yylval -yyname -yynerrs -yyrindex -yyrule -yysindex -yytable -yyval - -# Functions - -Gv_AMupdate -amagic_call -append_elem -append_list -apply -assertref -av_clear -av_extend -av_fake -av_fetch -av_fill -av_len -av_make -av_pop -av_push -av_reify -av_shift -av_store -av_undef -av_unshift -avhv_exists_ent -avhv_fetch_ent -avhv_iternext -avhv_iterval -avhv_keys -bind_match -block_end -block_gimme -block_start -boot_core_UNIVERSAL -bset_obj_store -byterun -call_list -cando -cast_ulong -check_uni -checkcomma -ck_aelem -ck_anoncode -ck_bitop -ck_concat -ck_delete -ck_eof -ck_eval -ck_exec -ck_exists -ck_ftst -ck_fun -ck_fun_locale -ck_glob -ck_grep -ck_gvconst -ck_index -ck_lengthconst -ck_lfun -ck_listiob -ck_match -ck_null -ck_repeat -ck_require -ck_retarget -ck_rfun -ck_rvconst -ck_scmp -ck_select -ck_shift -ck_sort -ck_spair -ck_split -ck_subr -ck_svconst -ck_trunc -condpair_magic -convert -croak -cv_ckproto -cv_clone -cv_const_sv -cv_undef -cx_dump -cxinc -deb -deb_growlevel -debop -debprofdump -debstack -debstackptrs -delimcpy -deprecate -die -die_where -do_aexec -do_chomp -do_chop -do_close -do_eof -do_exec -do_execfree -do_ipcctl -do_ipcget -do_join -do_kv -do_msgrcv -do_msgsnd -do_open -do_pipe -do_print -do_readline -do_seek -do_semop -do_shmio -do_sprintf -do_sysseek -do_tell -do_trans -do_vecset -do_vop -dofile -dofindlabel -dopoptoeval -dounwind -dowantarray -dump_all -dump_eval -dump_fds -dump_form -dump_gv -dump_mstats -dump_op -dump_packsubs -dump_pm -dump_sub -fbm_compile -fbm_instr -fetch_gv -fetch_io -filter_add -filter_del -filter_read -find_script -find_threadsv -fold_constants -force_ident -force_list -force_next -force_word -form -free_tmps -gen_constant_list -get_op_descs -get_op_names -get_no_modify -get_opargs -get_specialsv_list -get_vtbl -gp_free -gp_ref -gv_AVadd -gv_HVadd -gv_IOadd -gv_autoload4 -gv_check -gv_efullname -gv_efullname3 -gv_fetchfile -gv_fetchmeth -gv_fetchmethod -gv_fetchmethod_autoload -gv_fetchpv -gv_fullname -gv_fullname3 -gv_init -gv_stashpv -gv_stashpvn -gv_stashsv -hv_clear -hv_delayfree_ent -hv_delete -hv_delete_ent -hv_exists -hv_exists_ent -hv_fetch -hv_fetch_ent -hv_free_ent -hv_iterinit -hv_iterkey -hv_iterkeysv -hv_iternext -hv_iternextsv -hv_iterval -hv_ksplit -hv_magic -hv_stashpv -hv_store -hv_store_ent -hv_undef -ibcmp -ibcmp_locale -ingroup -init_stacks -instr -intro_my -intuit_more -invert -jmaybe -keyword -leave_scope -lex_end -lex_start -linklist -list -listkids -localize -looks_like_number -magic_clear_all_env -magic_clearenv -magic_clearpack -magic_clearsig -magic_existspack -magic_freeregexp -magic_get -magic_getarylen -magic_getdefelem -magic_getglob -magic_getnkeys -magic_getpack -magic_getpos -magic_getsig -magic_getsubstr -magic_gettaint -magic_getuvar -magic_getvec -magic_len -magic_mutexfree -magic_nextpack -magic_set -magic_set_all_env -magic_setamagic -magic_setarylen -magic_setbm -magic_setcollxfrm -magic_setdbline -magic_setdefelem -magic_setenv -magic_setfm -magic_setglob -magic_setisa -magic_setmglob -magic_setnkeys -magic_setpack -magic_setpos -magic_setsig -magic_setsubstr -magic_settaint -magic_setuvar -magic_setvec -magic_sizepack -magic_wipepack -magicname -malloced_size -markstack_grow -mem_collxfrm -mess -mg_clear -mg_copy -mg_find -mg_free -mg_get -mg_length -mg_magical -mg_set -mg_size -mod -modkids -moreswitches -mstats -my -my_bcopy -my_bzero -my_chsize -my_exit -my_failure_exit -my_htonl -my_lstat -my_memcmp -my_memset -my_ntohl -my_pclose -my_popen -my_setenv -my_stat -my_swap -my_unexec -newANONHASH -newANONLIST -newANONSUB -newASSIGNOP -newAV -newAVREF -newBINOP -newCONDOP -newCONSTSUB -newCVREF -newFORM -newFOROP -newGVOP -newGVREF -newGVgen -newHV -newHVREF -newHVhv -newIO -newLISTOP -newLOGOP -newLOOPEX -newLOOPOP -newNULLLIST -newOP -newPMOP -newPROG -newPVOP -newRANGE -newRV -newRV_noinc -newSLICEOP -newSTATEOP -newSUB -newSV -newSVOP -newSVREF -newSViv -newSVnv -newSVpv -newSVpvf -newSVpvn -newSVrv -newSVsv -newUNOP -newWHILEOP -newXS -newXSUB -nextargv -ninstr -no_fh_allowed -no_op -oopsAV -oopsCV -oopsHV -op_free -package -pad_alloc -pad_allocmy -pad_findmy -pad_free -pad_leavemy -pad_reset -pad_sv -pad_swipe -peep -pidgone -pmflag -pmruntime -pmtrans -pop_return -pop_scope -pp_aassign -pp_abs -pp_accept -pp_add -pp_aelem -pp_aelemfast -pp_alarm -pp_and -pp_andassign -pp_anoncode -pp_anonhash -pp_anonlist -pp_aslice -pp_atan2 -pp_av2arylen -pp_backtick -pp_bind -pp_binmode -pp_bit_and -pp_bit_or -pp_bit_xor -pp_bless -pp_caller -pp_chdir -pp_chmod -pp_chomp -pp_chop -pp_chown -pp_chr -pp_chroot -pp_close -pp_closedir -pp_complement -pp_concat -pp_cond_expr -pp_connect -pp_const -pp_cos -pp_crypt -pp_cswitch -pp_dbmclose -pp_dbmopen -pp_dbstate -pp_defined -pp_delete -pp_die -pp_divide -pp_dofile -pp_dump -pp_each -pp_egrent -pp_ehostent -pp_enetent -pp_enter -pp_entereval -pp_enteriter -pp_enterloop -pp_entersub -pp_entersubr -pp_entertry -pp_enterwrite -pp_eof -pp_eprotoent -pp_epwent -pp_eq -pp_eservent -pp_evalonce -pp_exec -pp_exists -pp_exit -pp_exp -pp_fcntl -pp_fileno -pp_flip -pp_flock -pp_flop -pp_fork -pp_formline -pp_ftatime -pp_ftbinary -pp_ftblk -pp_ftchr -pp_ftctime -pp_ftdir -pp_fteexec -pp_fteowned -pp_fteread -pp_ftewrite -pp_ftfile -pp_ftis -pp_ftlink -pp_ftmtime -pp_ftpipe -pp_ftrexec -pp_ftrowned -pp_ftrread -pp_ftrwrite -pp_ftsgid -pp_ftsize -pp_ftsock -pp_ftsuid -pp_ftsvtx -pp_fttext -pp_fttty -pp_ftzero -pp_ge -pp_gelem -pp_getc -pp_getlogin -pp_getpeername -pp_getpgrp -pp_getppid -pp_getpriority -pp_getsockname -pp_ggrent -pp_ggrgid -pp_ggrnam -pp_ghbyaddr -pp_ghbyname -pp_ghostent -pp_glob -pp_gmtime -pp_gnbyaddr -pp_gnbyname -pp_gnetent -pp_goto -pp_gpbyname -pp_gpbynumber -pp_gprotoent -pp_gpwent -pp_gpwnam -pp_gpwuid -pp_grepstart -pp_grepwhile -pp_gsbyname -pp_gsbyport -pp_gservent -pp_gsockopt -pp_gt -pp_gv -pp_gvsv -pp_helem -pp_hex -pp_hslice -pp_i_add -pp_i_divide -pp_i_eq -pp_i_ge -pp_i_gt -pp_i_le -pp_i_lt -pp_i_modulo -pp_i_multiply -pp_i_ncmp -pp_i_ne -pp_i_negate -pp_i_subtract -pp_index -pp_int -pp_interp -pp_ioctl -pp_iter -pp_join -pp_keys -pp_kill -pp_last -pp_lc -pp_lcfirst -pp_le -pp_leave -pp_leaveeval -pp_leaveloop -pp_leavesub -pp_leavetry -pp_leavewrite -pp_left_shift -pp_length -pp_lineseq -pp_link -pp_list -pp_listen -pp_localtime -pp_lock -pp_log -pp_lslice -pp_lstat -pp_lt -pp_map -pp_mapstart -pp_mapwhile -pp_match -pp_method -pp_mkdir -pp_modulo -pp_msgctl -pp_msgget -pp_msgrcv -pp_msgsnd -pp_multiply -pp_ncmp -pp_ne -pp_negate -pp_next -pp_nextstate -pp_not -pp_nswitch -pp_null -pp_oct -pp_open -pp_open_dir -pp_or -pp_orassign -pp_ord -pp_pack -pp_padany -pp_padav -pp_padhv -pp_padsv -pp_pipe_op -pp_pop -pp_pos -pp_postdec -pp_postinc -pp_pow -pp_predec -pp_preinc -pp_print -pp_prototype -pp_prtf -pp_push -pp_pushmark -pp_pushre -pp_qr -pp_quotemeta -pp_rand -pp_range -pp_rcatline -pp_read -pp_readdir -pp_readline -pp_readlink -pp_recv -pp_redo -pp_ref -pp_refgen -pp_regcmaybe -pp_regcreset -pp_regcomp -pp_rename -pp_repeat -pp_require -pp_reset -pp_return -pp_reverse -pp_rewinddir -pp_right_shift -pp_rindex -pp_rmdir -pp_rv2av -pp_rv2cv -pp_rv2gv -pp_rv2hv -pp_rv2sv -pp_sassign -pp_scalar -pp_schomp -pp_schop -pp_scmp -pp_scope -pp_seek -pp_seekdir -pp_select -pp_semctl -pp_semget -pp_semop -pp_send -pp_seq -pp_setpgrp -pp_setpriority -pp_sge -pp_sgrent -pp_sgt -pp_shift -pp_shmctl -pp_shmget -pp_shmread -pp_shmwrite -pp_shostent -pp_shutdown -pp_sin -pp_sle -pp_sleep -pp_slt -pp_sne -pp_snetent -pp_socket -pp_sockpair -pp_sort -pp_splice -pp_split -pp_sprintf -pp_sprotoent -pp_spwent -pp_sqrt -pp_srand -pp_srefgen -pp_sselect -pp_sservent -pp_ssockopt -pp_stat -pp_stringify -pp_stub -pp_study -pp_subst -pp_substcont -pp_substr -pp_subtract -pp_symlink -pp_syscall -pp_sysopen -pp_sysread -pp_sysseek -pp_system -pp_syswrite -pp_tell -pp_telldir -pp_threadsv -pp_tie -pp_tied -pp_time -pp_tms -pp_trans -pp_truncate -pp_uc -pp_ucfirst -pp_umask -pp_undef -pp_unlink -pp_unpack -pp_unshift -pp_unstack -pp_untie -pp_utime -pp_values -pp_vec -pp_wait -pp_waitpid -pp_wantarray -pp_warn -pp_xor -pregcomp -pregexec -pregfree -prepend_elem -push_return -push_scope -q -ref -refkids -regdump -regexec_flags -regnext -regprop -repeatcpy -rninstr -rsignal -rsignal_restore -rsignal_save -rsignal_state -rxres_free -rxres_restore -rxres_save -safecalloc -safefree -safemalloc -saferealloc -safexcalloc -safexfree -safexmalloc -safexrealloc -same_dirent -save_I16 -save_I32 -save_aelem -save_aptr -save_ary -save_clearsv -save_delete -save_destructor -save_freeop -save_freepv -save_freesv -save_generic_svref -save_gp -save_hash -save_helem -save_hints -save_hptr -save_int -save_item -save_iv -save_list -save_long -save_nogv -save_op -save_pptr -save_scalar -save_sptr -save_svref -save_threadsv -savepv -savepvn -savestack_grow -sawparens -scalar -scalarkids -scalarseq -scalarvoid -scan_const -scan_formline -scan_heredoc -scan_hex -scan_ident -scan_inputsymbol -scan_num -scan_oct -scan_pat -scan_prefix -scan_str -scan_subst -scan_trans -scan_word -scope -screaminstr -setdefout -setenv_getix -share_hek -sharepvn -sighandler -skipspace -stack_grow -start_subparse -sub_crush_depth -sv_2bool -sv_2cv -sv_2io -sv_2iv -sv_2mortal -sv_2nv -sv_2pv -sv_2uv -sv_add_arena -sv_backoff -sv_bless -sv_catpv -sv_catpv_mg -sv_catpvf -sv_catpvf_mg -sv_catpvn -sv_catpvn_mg -sv_catsv -sv_catsv_mg -sv_chop -sv_clean_all -sv_clean_objs -sv_clear -sv_cmp -sv_cmp_locale -sv_collxfrm -sv_compile_2op -sv_dec -sv_derived_from -sv_dump -sv_eq -sv_free -sv_free_arenas -sv_gets -sv_grow -sv_inc -sv_insert -sv_isa -sv_isobject -sv_iv -sv_len -sv_magic -sv_mortalcopy -sv_newmortal -sv_newref -sv_nv -sv_peek -sv_pvn -sv_pvn_force -sv_ref -sv_reftype -sv_replace -sv_report_used -sv_reset -sv_setiv -sv_setiv_mg -sv_setnv -sv_setnv_mg -sv_setptrobj -sv_setpv -sv_setpv_mg -sv_setpvf -sv_setpvf_mg -sv_setpviv -sv_setpviv_mg -sv_setpvn -sv_setpvn_mg -sv_setref_iv -sv_setref_nv -sv_setref_pv -sv_setref_pvn -sv_setsv -sv_setsv_mg -sv_setuv -sv_setuv_mg -sv_taint -sv_tainted -sv_true -sv_unmagic -sv_unref -sv_untaint -sv_upgrade -sv_usepvn -sv_usepvn_mg -sv_uv -sv_vcatpvfn -sv_vsetpvfn -taint_env -taint_proper -too_few_arguments -too_many_arguments -unlnk -unlock_condpair -unshare_hek -unsharepvn -utilize -wait4pid -warn -watch -whichsig -yydestruct -yyerror -yylex -yyparse -yywarn +perl_alloc_using +perl_alloc +perl_construct +perl_destruct +perl_free +perl_run +perl_parse +perl_clone +perl_clone_using +Perl_malloc +Perl_calloc +Perl_realloc +Perl_mfree +Perl_get_context +Perl_set_context +Perl_amagic_call +Perl_Gv_AMupdate +Perl_avhv_delete_ent +Perl_avhv_exists_ent +Perl_avhv_fetch_ent +Perl_avhv_store_ent +Perl_avhv_iternext +Perl_avhv_iterval +Perl_avhv_keys +Perl_av_clear +Perl_av_delete +Perl_av_exists +Perl_av_extend +Perl_av_fake +Perl_av_fetch +Perl_av_fill +Perl_av_len +Perl_av_make +Perl_av_pop +Perl_av_push +Perl_av_reify +Perl_av_shift +Perl_av_store +Perl_av_undef +Perl_av_unshift +Perl_block_gimme +Perl_call_list +Perl_cast_ulong +Perl_cast_i32 +Perl_cast_iv +Perl_cast_uv +Perl_my_chsize +Perl_condpair_magic +Perl_croak +Perl_vcroak +Perl_croak_nocontext +Perl_die_nocontext +Perl_deb_nocontext +Perl_form_nocontext +Perl_load_module_nocontext +Perl_mess_nocontext +Perl_warn_nocontext +Perl_warner_nocontext +Perl_newSVpvf_nocontext +Perl_sv_catpvf_nocontext +Perl_sv_setpvf_nocontext +Perl_sv_catpvf_mg_nocontext +Perl_sv_setpvf_mg_nocontext +Perl_fprintf_nocontext +Perl_cv_const_sv +Perl_cv_undef +Perl_cx_dump +Perl_filter_add +Perl_filter_del +Perl_filter_read +Perl_get_op_descs +Perl_get_op_names +Perl_get_ppaddr +Perl_deb +Perl_vdeb +Perl_debprofdump +Perl_debop +Perl_debstack +Perl_debstackptrs +Perl_delimcpy +Perl_die +Perl_dounwind +Perl_do_binmode +Perl_do_close +Perl_do_open +Perl_do_open9 +Perl_dowantarray +Perl_dump_all +Perl_dump_eval +Perl_dump_fds +Perl_dump_form +Perl_gv_dump +Perl_op_dump +Perl_pmop_dump +Perl_dump_packsubs +Perl_dump_sub +Perl_fbm_compile +Perl_fbm_instr +Perl_form +Perl_vform +Perl_free_tmps +Perl_gp_free +Perl_gp_ref +Perl_gv_AVadd +Perl_gv_HVadd +Perl_gv_IOadd +Perl_gv_autoload4 +Perl_gv_check +Perl_gv_efullname +Perl_gv_efullname3 +Perl_gv_fetchfile +Perl_gv_fetchmeth +Perl_gv_fetchmethod +Perl_gv_fetchmethod_autoload +Perl_gv_fetchpv +Perl_gv_fullname +Perl_gv_fullname3 +Perl_gv_init +Perl_gv_stashpv +Perl_gv_stashpvn +Perl_gv_stashsv +Perl_hv_clear +Perl_hv_delayfree_ent +Perl_hv_delete +Perl_hv_delete_ent +Perl_hv_exists +Perl_hv_exists_ent +Perl_hv_fetch +Perl_hv_fetch_ent +Perl_hv_free_ent +Perl_hv_iterinit +Perl_hv_iterkey +Perl_hv_iterkeysv +Perl_hv_iternext +Perl_hv_iternextsv +Perl_hv_iterval +Perl_hv_ksplit +Perl_hv_magic +Perl_hv_store +Perl_hv_store_ent +Perl_hv_undef +Perl_ibcmp +Perl_ibcmp_locale +Perl_init_stacks +Perl_instr +Perl_is_uni_alnum +Perl_is_uni_alnumc +Perl_is_uni_idfirst +Perl_is_uni_alpha +Perl_is_uni_ascii +Perl_is_uni_space +Perl_is_uni_cntrl +Perl_is_uni_graph +Perl_is_uni_digit +Perl_is_uni_upper +Perl_is_uni_lower +Perl_is_uni_print +Perl_is_uni_punct +Perl_is_uni_xdigit +Perl_to_uni_upper +Perl_to_uni_title +Perl_to_uni_lower +Perl_is_uni_alnum_lc +Perl_is_uni_alnumc_lc +Perl_is_uni_idfirst_lc +Perl_is_uni_alpha_lc +Perl_is_uni_ascii_lc +Perl_is_uni_space_lc +Perl_is_uni_cntrl_lc +Perl_is_uni_graph_lc +Perl_is_uni_digit_lc +Perl_is_uni_upper_lc +Perl_is_uni_lower_lc +Perl_is_uni_print_lc +Perl_is_uni_punct_lc +Perl_is_uni_xdigit_lc +Perl_to_uni_upper_lc +Perl_to_uni_title_lc +Perl_to_uni_lower_lc +Perl_is_utf8_char +Perl_is_utf8_alnum +Perl_is_utf8_alnumc +Perl_is_utf8_idfirst +Perl_is_utf8_alpha +Perl_is_utf8_ascii +Perl_is_utf8_space +Perl_is_utf8_cntrl +Perl_is_utf8_digit +Perl_is_utf8_graph +Perl_is_utf8_upper +Perl_is_utf8_lower +Perl_is_utf8_print +Perl_is_utf8_punct +Perl_is_utf8_xdigit +Perl_is_utf8_mark +Perl_leave_scope +Perl_load_module +Perl_vload_module +Perl_looks_like_number +Perl_markstack_grow +Perl_mess +Perl_vmess +Perl_mg_clear +Perl_mg_copy +Perl_mg_find +Perl_mg_free +Perl_mg_get +Perl_mg_length +Perl_mg_magical +Perl_mg_set +Perl_mg_size +Perl_moreswitches +Perl_my_atof +Perl_my_bcopy +Perl_my_bzero +Perl_my_exit +Perl_my_failure_exit +Perl_my_fflush_all +Perl_my_lstat +Perl_my_memcmp +Perl_my_memset +Perl_my_pclose +Perl_my_popen +Perl_my_setenv +Perl_my_stat +Perl_my_swap +Perl_my_htonl +Perl_my_ntohl +Perl_newANONLIST +Perl_newANONHASH +Perl_newANONSUB +Perl_newASSIGNOP +Perl_newCONDOP +Perl_newCONSTSUB +Perl_newFORM +Perl_newFOROP +Perl_newLOGOP +Perl_newLOOPEX +Perl_newLOOPOP +Perl_newNULLLIST +Perl_newOP +Perl_newPROG +Perl_newRANGE +Perl_newSLICEOP +Perl_newSTATEOP +Perl_newSUB +Perl_newXS +Perl_newAV +Perl_newAVREF +Perl_newBINOP +Perl_newCVREF +Perl_newGVOP +Perl_newGVgen +Perl_newGVREF +Perl_newHVREF +Perl_newHV +Perl_newHVhv +Perl_newIO +Perl_newLISTOP +Perl_newPADOP +Perl_newPMOP +Perl_newPVOP +Perl_newRV +Perl_newRV_noinc +Perl_newSV +Perl_newSVREF +Perl_newSVOP +Perl_newSViv +Perl_newSVuv +Perl_newSVnv +Perl_newSVpv +Perl_newSVpvn +Perl_newSVpvf +Perl_vnewSVpvf +Perl_newSVrv +Perl_newSVsv +Perl_newUNOP +Perl_newWHILEOP +Perl_new_stackinfo +Perl_ninstr +Perl_op_free +Perl_pad_sv +Perl_new_struct_thread +Perl_call_atexit +Perl_call_argv +Perl_call_method +Perl_call_pv +Perl_call_sv +Perl_eval_pv +Perl_eval_sv +Perl_get_sv +Perl_get_av +Perl_get_hv +Perl_get_cv +Perl_init_i18nl10n +Perl_init_i18nl14n +Perl_new_collate +Perl_new_ctype +Perl_new_numeric +Perl_set_numeric_local +Perl_set_numeric_radix +Perl_set_numeric_standard +Perl_require_pv +Perl_pmflag +Perl_pop_scope +Perl_push_scope +Perl_regdump +Perl_pregexec +Perl_pregfree +Perl_pregcomp +Perl_re_intuit_start +Perl_re_intuit_string +Perl_regexec_flags +Perl_regnext +Perl_repeatcpy +Perl_rninstr +Perl_savepv +Perl_savepvn +Perl_savestack_grow +Perl_save_aelem +Perl_save_alloc +Perl_save_aptr +Perl_save_ary +Perl_save_clearsv +Perl_save_delete +Perl_save_destructor +Perl_save_destructor_x +Perl_save_freesv +Perl_save_freepv +Perl_save_generic_svref +Perl_save_gp +Perl_save_hash +Perl_save_helem +Perl_save_hints +Perl_save_hptr +Perl_save_I16 +Perl_save_I32 +Perl_save_I8 +Perl_save_int +Perl_save_item +Perl_save_iv +Perl_save_list +Perl_save_long +Perl_save_nogv +Perl_save_scalar +Perl_save_pptr +Perl_save_vptr +Perl_save_re_context +Perl_save_sptr +Perl_save_svref +Perl_save_threadsv +Perl_scan_bin +Perl_scan_hex +Perl_scan_num +Perl_scan_oct +Perl_screaminstr +Perl_sharepvn +Perl_stack_grow +Perl_start_subparse +Perl_sv_2bool +Perl_sv_2cv +Perl_sv_2io +Perl_sv_2iv +Perl_sv_2mortal +Perl_sv_2nv +Perl_sv_2pv +Perl_sv_2pvutf8 +Perl_sv_2pvbyte +Perl_sv_2uv +Perl_sv_iv +Perl_sv_uv +Perl_sv_nv +Perl_sv_pvn +Perl_sv_pvutf8n +Perl_sv_pvbyten +Perl_sv_true +Perl_sv_backoff +Perl_sv_bless +Perl_sv_catpvf +Perl_sv_vcatpvf +Perl_sv_catpv +Perl_sv_catpvn +Perl_sv_catsv +Perl_sv_chop +Perl_sv_clear +Perl_sv_cmp +Perl_sv_cmp_locale +Perl_sv_collxfrm +Perl_sv_compile_2op +Perl_sv_dec +Perl_sv_dump +Perl_sv_derived_from +Perl_sv_eq +Perl_sv_free +Perl_sv_gets +Perl_sv_grow +Perl_sv_inc +Perl_sv_insert +Perl_sv_isa +Perl_sv_isobject +Perl_sv_len +Perl_sv_len_utf8 +Perl_sv_magic +Perl_sv_mortalcopy +Perl_sv_newmortal +Perl_sv_newref +Perl_sv_peek +Perl_sv_pos_u2b +Perl_sv_pos_b2u +Perl_sv_pvn_force +Perl_sv_pvutf8n_force +Perl_sv_pvbyten_force +Perl_sv_reftype +Perl_sv_replace +Perl_sv_report_used +Perl_sv_reset +Perl_sv_setpvf +Perl_sv_vsetpvf +Perl_sv_setiv +Perl_sv_setpviv +Perl_sv_setuv +Perl_sv_setnv +Perl_sv_setref_iv +Perl_sv_setref_nv +Perl_sv_setref_pv +Perl_sv_setref_pvn +Perl_sv_setpv +Perl_sv_setpvn +Perl_sv_setsv +Perl_sv_taint +Perl_sv_tainted +Perl_sv_unmagic +Perl_sv_unref +Perl_sv_untaint +Perl_sv_upgrade +Perl_sv_usepvn +Perl_sv_vcatpvfn +Perl_sv_vsetpvfn +Perl_str_to_version +Perl_swash_init +Perl_swash_fetch +Perl_taint_env +Perl_taint_proper +Perl_to_utf8_lower +Perl_to_utf8_upper +Perl_to_utf8_title +Perl_unlnk +Perl_unlock_condpair +Perl_unsharepvn +Perl_utf16_to_utf8 +Perl_utf16_to_utf8_reversed +Perl_utf8_distance +Perl_utf8_hop +Perl_utf8_to_uv +Perl_uv_to_utf8 +Perl_warn +Perl_vwarn +Perl_warner +Perl_vwarner +Perl_dump_mstats +Perl_get_mstats +Perl_safesysmalloc +Perl_safesyscalloc +Perl_safesysrealloc +Perl_safesysfree +Perl_safexmalloc +Perl_safexcalloc +Perl_safexrealloc +Perl_safexfree +Perl_GetVars +Perl_runops_standard +Perl_runops_debug +Perl_sv_catpvf_mg +Perl_sv_vcatpvf_mg +Perl_sv_catpv_mg +Perl_sv_catpvn_mg +Perl_sv_catsv_mg +Perl_sv_setpvf_mg +Perl_sv_vsetpvf_mg +Perl_sv_setiv_mg +Perl_sv_setpviv_mg +Perl_sv_setuv_mg +Perl_sv_setnv_mg +Perl_sv_setpv_mg +Perl_sv_setpvn_mg +Perl_sv_setsv_mg +Perl_sv_usepvn_mg +Perl_get_vtbl +Perl_dump_indent +Perl_dump_vindent +Perl_do_gv_dump +Perl_do_gvgv_dump +Perl_do_hv_dump +Perl_do_magic_dump +Perl_do_op_dump +Perl_do_pmop_dump +Perl_do_sv_dump +Perl_magic_dump +Perl_default_protect +Perl_vdefault_protect +Perl_reginitcolors +Perl_sv_2pv_nolen +Perl_sv_2pvutf8_nolen +Perl_sv_2pvbyte_nolen +Perl_sv_pv +Perl_sv_pvutf8 +Perl_sv_pvbyte +Perl_sv_utf8_upgrade +Perl_sv_utf8_downgrade +Perl_sv_utf8_encode +Perl_sv_utf8_decode +Perl_sv_force_normal +Perl_tmps_grow +Perl_sv_rvweaken +Perl_newANONATTRSUB +Perl_newATTRSUB +Perl_newMYSUB +Perl_cx_dup +Perl_si_dup +Perl_ss_dup +Perl_any_dup +Perl_he_dup +Perl_re_dup +Perl_fp_dup +Perl_dirp_dup +Perl_gp_dup +Perl_mg_dup +Perl_sv_dup +Perl_sys_intern_dup +Perl_ptr_table_new +Perl_ptr_table_fetch +Perl_ptr_table_store +Perl_ptr_table_split diff --git a/contrib/perl5/globals.c b/contrib/perl5/globals.c index 1d8ef9272d2f..0782eba226f6 100644 --- a/contrib/perl5/globals.c +++ b/contrib/perl5/globals.c @@ -1,1471 +1,82 @@ #include "INTERN.h" +#define PERL_IN_GLOBALS_C #include "perl.h" #ifdef PERL_OBJECT -#undef pp_null -#define pp_null CPerlObj::Perl_pp_null -#undef pp_stub -#define pp_stub CPerlObj::Perl_pp_stub -#undef pp_scalar -#define pp_scalar CPerlObj::Perl_pp_scalar -#undef pp_pushmark -#define pp_pushmark CPerlObj::Perl_pp_pushmark -#undef pp_wantarray -#define pp_wantarray CPerlObj::Perl_pp_wantarray -#undef pp_const -#define pp_const CPerlObj::Perl_pp_const -#undef pp_gvsv -#define pp_gvsv CPerlObj::Perl_pp_gvsv -#undef pp_gv -#define pp_gv CPerlObj::Perl_pp_gv -#undef pp_gelem -#define pp_gelem CPerlObj::Perl_pp_gelem -#undef pp_padsv -#define pp_padsv CPerlObj::Perl_pp_padsv -#undef pp_padav -#define pp_padav CPerlObj::Perl_pp_padav -#undef pp_padhv -#define pp_padhv CPerlObj::Perl_pp_padhv -#undef pp_padany -#define pp_padany CPerlObj::Perl_pp_padany -#undef pp_pushre -#define pp_pushre CPerlObj::Perl_pp_pushre -#undef pp_rv2gv -#define pp_rv2gv CPerlObj::Perl_pp_rv2gv -#undef pp_rv2sv -#define pp_rv2sv CPerlObj::Perl_pp_rv2sv -#undef pp_av2arylen -#define pp_av2arylen CPerlObj::Perl_pp_av2arylen -#undef pp_rv2cv -#define pp_rv2cv CPerlObj::Perl_pp_rv2cv -#undef pp_anoncode -#define pp_anoncode CPerlObj::Perl_pp_anoncode -#undef pp_prototype -#define pp_prototype CPerlObj::Perl_pp_prototype -#undef pp_refgen -#define pp_refgen CPerlObj::Perl_pp_refgen -#undef pp_srefgen -#define pp_srefgen CPerlObj::Perl_pp_srefgen -#undef pp_ref -#define pp_ref CPerlObj::Perl_pp_ref -#undef pp_bless -#define pp_bless CPerlObj::Perl_pp_bless -#undef pp_backtick -#define pp_backtick CPerlObj::Perl_pp_backtick -#undef pp_glob -#define pp_glob CPerlObj::Perl_pp_glob -#undef pp_readline -#define pp_readline CPerlObj::Perl_pp_readline -#undef pp_rcatline -#define pp_rcatline CPerlObj::Perl_pp_rcatline -#undef pp_regcmaybe -#define pp_regcmaybe CPerlObj::Perl_pp_regcmaybe -#undef pp_regcreset -#define pp_regcreset CPerlObj::Perl_pp_regcreset -#undef pp_regcomp -#define pp_regcomp CPerlObj::Perl_pp_regcomp -#undef pp_match -#define pp_match CPerlObj::Perl_pp_match -#undef pp_qr -#define pp_qr CPerlObj::Perl_pp_qr -#undef pp_subst -#define pp_subst CPerlObj::Perl_pp_subst -#undef pp_substcont -#define pp_substcont CPerlObj::Perl_pp_substcont -#undef pp_trans -#define pp_trans CPerlObj::Perl_pp_trans -#undef pp_sassign -#define pp_sassign CPerlObj::Perl_pp_sassign -#undef pp_aassign -#define pp_aassign CPerlObj::Perl_pp_aassign -#undef pp_chop -#define pp_chop CPerlObj::Perl_pp_chop -#undef pp_schop -#define pp_schop CPerlObj::Perl_pp_schop -#undef pp_chomp -#define pp_chomp CPerlObj::Perl_pp_chomp -#undef pp_schomp -#define pp_schomp CPerlObj::Perl_pp_schomp -#undef pp_defined -#define pp_defined CPerlObj::Perl_pp_defined -#undef pp_undef -#define pp_undef CPerlObj::Perl_pp_undef -#undef pp_study -#define pp_study CPerlObj::Perl_pp_study -#undef pp_pos -#define pp_pos CPerlObj::Perl_pp_pos -#undef pp_preinc -#define pp_preinc CPerlObj::Perl_pp_preinc -#undef pp_i_preinc -#define pp_i_preinc CPerlObj::Perl_pp_preinc -#undef pp_predec -#define pp_predec CPerlObj::Perl_pp_predec -#undef pp_i_predec -#define pp_i_predec CPerlObj::Perl_pp_predec -#undef pp_postinc -#define pp_postinc CPerlObj::Perl_pp_postinc -#undef pp_i_postinc -#define pp_i_postinc CPerlObj::Perl_pp_postinc -#undef pp_postdec -#define pp_postdec CPerlObj::Perl_pp_postdec -#undef pp_i_postdec -#define pp_i_postdec CPerlObj::Perl_pp_postdec -#undef pp_pow -#define pp_pow CPerlObj::Perl_pp_pow -#undef pp_multiply -#define pp_multiply CPerlObj::Perl_pp_multiply -#undef pp_i_multiply -#define pp_i_multiply CPerlObj::Perl_pp_i_multiply -#undef pp_divide -#define pp_divide CPerlObj::Perl_pp_divide -#undef pp_i_divide -#define pp_i_divide CPerlObj::Perl_pp_i_divide -#undef pp_modulo -#define pp_modulo CPerlObj::Perl_pp_modulo -#undef pp_i_modulo -#define pp_i_modulo CPerlObj::Perl_pp_i_modulo -#undef pp_repeat -#define pp_repeat CPerlObj::Perl_pp_repeat -#undef pp_add -#define pp_add CPerlObj::Perl_pp_add -#undef pp_i_add -#define pp_i_add CPerlObj::Perl_pp_i_add -#undef pp_subtract -#define pp_subtract CPerlObj::Perl_pp_subtract -#undef pp_i_subtract -#define pp_i_subtract CPerlObj::Perl_pp_i_subtract -#undef pp_concat -#define pp_concat CPerlObj::Perl_pp_concat -#undef pp_stringify -#define pp_stringify CPerlObj::Perl_pp_stringify -#undef pp_left_shift -#define pp_left_shift CPerlObj::Perl_pp_left_shift -#undef pp_right_shift -#define pp_right_shift CPerlObj::Perl_pp_right_shift -#undef pp_lt -#define pp_lt CPerlObj::Perl_pp_lt -#undef pp_i_lt -#define pp_i_lt CPerlObj::Perl_pp_i_lt -#undef pp_gt -#define pp_gt CPerlObj::Perl_pp_gt -#undef pp_i_gt -#define pp_i_gt CPerlObj::Perl_pp_i_gt -#undef pp_le -#define pp_le CPerlObj::Perl_pp_le -#undef pp_i_le -#define pp_i_le CPerlObj::Perl_pp_i_le -#undef pp_ge -#define pp_ge CPerlObj::Perl_pp_ge -#undef pp_i_ge -#define pp_i_ge CPerlObj::Perl_pp_i_ge -#undef pp_eq -#define pp_eq CPerlObj::Perl_pp_eq -#undef pp_i_eq -#define pp_i_eq CPerlObj::Perl_pp_i_eq -#undef pp_ne -#define pp_ne CPerlObj::Perl_pp_ne -#undef pp_i_ne -#define pp_i_ne CPerlObj::Perl_pp_i_ne -#undef pp_ncmp -#define pp_ncmp CPerlObj::Perl_pp_ncmp -#undef pp_i_ncmp -#define pp_i_ncmp CPerlObj::Perl_pp_i_ncmp -#undef pp_slt -#define pp_slt CPerlObj::Perl_pp_slt -#undef pp_sgt -#define pp_sgt CPerlObj::Perl_pp_sgt -#undef pp_sle -#define pp_sle CPerlObj::Perl_pp_sle -#undef pp_sge -#define pp_sge CPerlObj::Perl_pp_sge -#undef pp_seq -#define pp_seq CPerlObj::Perl_pp_seq -#undef pp_sne -#define pp_sne CPerlObj::Perl_pp_sne -#undef pp_scmp -#define pp_scmp CPerlObj::Perl_pp_scmp -#undef pp_bit_and -#define pp_bit_and CPerlObj::Perl_pp_bit_and -#undef pp_bit_xor -#define pp_bit_xor CPerlObj::Perl_pp_bit_xor -#undef pp_bit_or -#define pp_bit_or CPerlObj::Perl_pp_bit_or -#undef pp_negate -#define pp_negate CPerlObj::Perl_pp_negate -#undef pp_i_negate -#define pp_i_negate CPerlObj::Perl_pp_i_negate -#undef pp_not -#define pp_not CPerlObj::Perl_pp_not -#undef pp_complement -#define pp_complement CPerlObj::Perl_pp_complement -#undef pp_atan2 -#define pp_atan2 CPerlObj::Perl_pp_atan2 -#undef pp_sin -#define pp_sin CPerlObj::Perl_pp_sin -#undef pp_cos -#define pp_cos CPerlObj::Perl_pp_cos -#undef pp_rand -#define pp_rand CPerlObj::Perl_pp_rand -#undef pp_srand -#define pp_srand CPerlObj::Perl_pp_srand -#undef pp_exp -#define pp_exp CPerlObj::Perl_pp_exp -#undef pp_log -#define pp_log CPerlObj::Perl_pp_log -#undef pp_sqrt -#define pp_sqrt CPerlObj::Perl_pp_sqrt -#undef pp_int -#define pp_int CPerlObj::Perl_pp_int -#undef pp_hex -#define pp_hex CPerlObj::Perl_pp_hex -#undef pp_oct -#define pp_oct CPerlObj::Perl_pp_oct -#undef pp_abs -#define pp_abs CPerlObj::Perl_pp_abs -#undef pp_length -#define pp_length CPerlObj::Perl_pp_length -#undef pp_substr -#define pp_substr CPerlObj::Perl_pp_substr -#undef pp_vec -#define pp_vec CPerlObj::Perl_pp_vec -#undef pp_index -#define pp_index CPerlObj::Perl_pp_index -#undef pp_rindex -#define pp_rindex CPerlObj::Perl_pp_rindex -#undef pp_sprintf -#define pp_sprintf CPerlObj::Perl_pp_sprintf -#undef pp_formline -#define pp_formline CPerlObj::Perl_pp_formline -#undef pp_ord -#define pp_ord CPerlObj::Perl_pp_ord -#undef pp_chr -#define pp_chr CPerlObj::Perl_pp_chr -#undef pp_crypt -#define pp_crypt CPerlObj::Perl_pp_crypt -#undef pp_ucfirst -#define pp_ucfirst CPerlObj::Perl_pp_ucfirst -#undef pp_lcfirst -#define pp_lcfirst CPerlObj::Perl_pp_lcfirst -#undef pp_uc -#define pp_uc CPerlObj::Perl_pp_uc -#undef pp_lc -#define pp_lc CPerlObj::Perl_pp_lc -#undef pp_quotemeta -#define pp_quotemeta CPerlObj::Perl_pp_quotemeta -#undef pp_rv2av -#define pp_rv2av CPerlObj::Perl_pp_rv2av -#undef pp_aelemfast -#define pp_aelemfast CPerlObj::Perl_pp_aelemfast -#undef pp_aelem -#define pp_aelem CPerlObj::Perl_pp_aelem -#undef pp_aslice -#define pp_aslice CPerlObj::Perl_pp_aslice -#undef pp_each -#define pp_each CPerlObj::Perl_pp_each -#undef pp_values -#define pp_values CPerlObj::Perl_pp_values -#undef pp_keys -#define pp_keys CPerlObj::Perl_pp_keys -#undef pp_delete -#define pp_delete CPerlObj::Perl_pp_delete -#undef pp_exists -#define pp_exists CPerlObj::Perl_pp_exists -#undef pp_rv2hv -#define pp_rv2hv CPerlObj::Perl_pp_rv2hv -#undef pp_helem -#define pp_helem CPerlObj::Perl_pp_helem -#undef pp_hslice -#define pp_hslice CPerlObj::Perl_pp_hslice -#undef pp_unpack -#define pp_unpack CPerlObj::Perl_pp_unpack -#undef pp_pack -#define pp_pack CPerlObj::Perl_pp_pack -#undef pp_split -#define pp_split CPerlObj::Perl_pp_split -#undef pp_join -#define pp_join CPerlObj::Perl_pp_join -#undef pp_list -#define pp_list CPerlObj::Perl_pp_list -#undef pp_lslice -#define pp_lslice CPerlObj::Perl_pp_lslice -#undef pp_anonlist -#define pp_anonlist CPerlObj::Perl_pp_anonlist -#undef pp_anonhash -#define pp_anonhash CPerlObj::Perl_pp_anonhash -#undef pp_splice -#define pp_splice CPerlObj::Perl_pp_splice -#undef pp_push -#define pp_push CPerlObj::Perl_pp_push -#undef pp_pop -#define pp_pop CPerlObj::Perl_pp_pop -#undef pp_shift -#define pp_shift CPerlObj::Perl_pp_shift -#undef pp_unshift -#define pp_unshift CPerlObj::Perl_pp_unshift -#undef pp_sort -#define pp_sort CPerlObj::Perl_pp_sort -#undef pp_reverse -#define pp_reverse CPerlObj::Perl_pp_reverse -#undef pp_grepstart -#define pp_grepstart CPerlObj::Perl_pp_grepstart -#undef pp_grepwhile -#define pp_grepwhile CPerlObj::Perl_pp_grepwhile -#undef pp_mapstart -#define pp_mapstart CPerlObj::Perl_pp_mapstart -#undef pp_mapwhile -#define pp_mapwhile CPerlObj::Perl_pp_mapwhile -#undef pp_range -#define pp_range CPerlObj::Perl_pp_range -#undef pp_flip -#define pp_flip CPerlObj::Perl_pp_flip -#undef pp_flop -#define pp_flop CPerlObj::Perl_pp_flop -#undef pp_and -#define pp_and CPerlObj::Perl_pp_and -#undef pp_or -#define pp_or CPerlObj::Perl_pp_or -#undef pp_xor -#define pp_xor CPerlObj::Perl_pp_xor -#undef pp_cond_expr -#define pp_cond_expr CPerlObj::Perl_pp_cond_expr -#undef pp_andassign -#define pp_andassign CPerlObj::Perl_pp_andassign -#undef pp_orassign -#define pp_orassign CPerlObj::Perl_pp_orassign -#undef pp_method -#define pp_method CPerlObj::Perl_pp_method -#undef pp_entersub -#define pp_entersub CPerlObj::Perl_pp_entersub -#undef pp_leavesub -#define pp_leavesub CPerlObj::Perl_pp_leavesub -#undef pp_caller -#define pp_caller CPerlObj::Perl_pp_caller -#undef pp_warn -#define pp_warn CPerlObj::Perl_pp_warn -#undef pp_die -#define pp_die CPerlObj::Perl_pp_die -#undef pp_reset -#define pp_reset CPerlObj::Perl_pp_reset -#undef pp_lineseq -#define pp_lineseq CPerlObj::Perl_pp_lineseq -#undef pp_nextstate -#define pp_nextstate CPerlObj::Perl_pp_nextstate -#undef pp_dbstate -#define pp_dbstate CPerlObj::Perl_pp_dbstate -#undef pp_unstack -#define pp_unstack CPerlObj::Perl_pp_unstack -#undef pp_enter -#define pp_enter CPerlObj::Perl_pp_enter -#undef pp_leave -#define pp_leave CPerlObj::Perl_pp_leave -#undef pp_scope -#define pp_scope CPerlObj::Perl_pp_scope -#undef pp_enteriter -#define pp_enteriter CPerlObj::Perl_pp_enteriter -#undef pp_iter -#define pp_iter CPerlObj::Perl_pp_iter -#undef pp_enterloop -#define pp_enterloop CPerlObj::Perl_pp_enterloop -#undef pp_leaveloop -#define pp_leaveloop CPerlObj::Perl_pp_leaveloop -#undef pp_return -#define pp_return CPerlObj::Perl_pp_return -#undef pp_last -#define pp_last CPerlObj::Perl_pp_last -#undef pp_next -#define pp_next CPerlObj::Perl_pp_next -#undef pp_redo -#define pp_redo CPerlObj::Perl_pp_redo -#undef pp_dump -#define pp_dump CPerlObj::Perl_pp_dump -#undef pp_goto -#define pp_goto CPerlObj::Perl_pp_goto -#undef pp_exit -#define pp_exit CPerlObj::Perl_pp_exit -#undef pp_open -#define pp_open CPerlObj::Perl_pp_open -#undef pp_close -#define pp_close CPerlObj::Perl_pp_close -#undef pp_pipe_op -#define pp_pipe_op CPerlObj::Perl_pp_pipe_op -#undef pp_fileno -#define pp_fileno CPerlObj::Perl_pp_fileno -#undef pp_umask -#define pp_umask CPerlObj::Perl_pp_umask -#undef pp_binmode -#define pp_binmode CPerlObj::Perl_pp_binmode -#undef pp_tie -#define pp_tie CPerlObj::Perl_pp_tie -#undef pp_untie -#define pp_untie CPerlObj::Perl_pp_untie -#undef pp_tied -#define pp_tied CPerlObj::Perl_pp_tied -#undef pp_dbmopen -#define pp_dbmopen CPerlObj::Perl_pp_dbmopen -#undef pp_dbmclose -#define pp_dbmclose CPerlObj::Perl_pp_dbmclose -#undef pp_sselect -#define pp_sselect CPerlObj::Perl_pp_sselect -#undef pp_select -#define pp_select CPerlObj::Perl_pp_select -#undef pp_getc -#define pp_getc CPerlObj::Perl_pp_getc -#undef pp_read -#define pp_read CPerlObj::Perl_pp_read -#undef pp_enterwrite -#define pp_enterwrite CPerlObj::Perl_pp_enterwrite -#undef pp_leavewrite -#define pp_leavewrite CPerlObj::Perl_pp_leavewrite -#undef pp_prtf -#define pp_prtf CPerlObj::Perl_pp_prtf -#undef pp_print -#define pp_print CPerlObj::Perl_pp_print -#undef pp_sysopen -#define pp_sysopen CPerlObj::Perl_pp_sysopen -#undef pp_sysseek -#define pp_sysseek CPerlObj::Perl_pp_sysseek -#undef pp_sysread -#define pp_sysread CPerlObj::Perl_pp_sysread -#undef pp_syswrite -#define pp_syswrite CPerlObj::Perl_pp_syswrite -#undef pp_send -#define pp_send CPerlObj::Perl_pp_send -#undef pp_recv -#define pp_recv CPerlObj::Perl_pp_recv -#undef pp_eof -#define pp_eof CPerlObj::Perl_pp_eof -#undef pp_tell -#define pp_tell CPerlObj::Perl_pp_tell -#undef pp_seek -#define pp_seek CPerlObj::Perl_pp_seek -#undef pp_truncate -#define pp_truncate CPerlObj::Perl_pp_truncate -#undef pp_fcntl -#define pp_fcntl CPerlObj::Perl_pp_fcntl -#undef pp_ioctl -#define pp_ioctl CPerlObj::Perl_pp_ioctl -#undef pp_flock -#define pp_flock CPerlObj::Perl_pp_flock -#undef pp_socket -#define pp_socket CPerlObj::Perl_pp_socket -#undef pp_sockpair -#define pp_sockpair CPerlObj::Perl_pp_sockpair -#undef pp_bind -#define pp_bind CPerlObj::Perl_pp_bind -#undef pp_connect -#define pp_connect CPerlObj::Perl_pp_connect -#undef pp_listen -#define pp_listen CPerlObj::Perl_pp_listen -#undef pp_accept -#define pp_accept CPerlObj::Perl_pp_accept -#undef pp_shutdown -#define pp_shutdown CPerlObj::Perl_pp_shutdown -#undef pp_gsockopt -#define pp_gsockopt CPerlObj::Perl_pp_gsockopt -#undef pp_ssockopt -#define pp_ssockopt CPerlObj::Perl_pp_ssockopt -#undef pp_getsockname -#define pp_getsockname CPerlObj::Perl_pp_getsockname -#undef pp_getpeername -#define pp_getpeername CPerlObj::Perl_pp_getpeername -#undef pp_lstat -#define pp_lstat CPerlObj::Perl_pp_lstat -#undef pp_stat -#define pp_stat CPerlObj::Perl_pp_stat -#undef pp_ftrread -#define pp_ftrread CPerlObj::Perl_pp_ftrread -#undef pp_ftrwrite -#define pp_ftrwrite CPerlObj::Perl_pp_ftrwrite -#undef pp_ftrexec -#define pp_ftrexec CPerlObj::Perl_pp_ftrexec -#undef pp_fteread -#define pp_fteread CPerlObj::Perl_pp_fteread -#undef pp_ftewrite -#define pp_ftewrite CPerlObj::Perl_pp_ftewrite -#undef pp_fteexec -#define pp_fteexec CPerlObj::Perl_pp_fteexec -#undef pp_ftis -#define pp_ftis CPerlObj::Perl_pp_ftis -#undef pp_fteowned -#define pp_fteowned CPerlObj::Perl_pp_fteowned -#undef pp_ftrowned -#define pp_ftrowned CPerlObj::Perl_pp_ftrowned -#undef pp_ftzero -#define pp_ftzero CPerlObj::Perl_pp_ftzero -#undef pp_ftsize -#define pp_ftsize CPerlObj::Perl_pp_ftsize -#undef pp_ftmtime -#define pp_ftmtime CPerlObj::Perl_pp_ftmtime -#undef pp_ftatime -#define pp_ftatime CPerlObj::Perl_pp_ftatime -#undef pp_ftctime -#define pp_ftctime CPerlObj::Perl_pp_ftctime -#undef pp_ftsock -#define pp_ftsock CPerlObj::Perl_pp_ftsock -#undef pp_ftchr -#define pp_ftchr CPerlObj::Perl_pp_ftchr -#undef pp_ftblk -#define pp_ftblk CPerlObj::Perl_pp_ftblk -#undef pp_ftfile -#define pp_ftfile CPerlObj::Perl_pp_ftfile -#undef pp_ftdir -#define pp_ftdir CPerlObj::Perl_pp_ftdir -#undef pp_ftpipe -#define pp_ftpipe CPerlObj::Perl_pp_ftpipe -#undef pp_ftlink -#define pp_ftlink CPerlObj::Perl_pp_ftlink -#undef pp_ftsuid -#define pp_ftsuid CPerlObj::Perl_pp_ftsuid -#undef pp_ftsgid -#define pp_ftsgid CPerlObj::Perl_pp_ftsgid -#undef pp_ftsvtx -#define pp_ftsvtx CPerlObj::Perl_pp_ftsvtx -#undef pp_fttty -#define pp_fttty CPerlObj::Perl_pp_fttty -#undef pp_fttext -#define pp_fttext CPerlObj::Perl_pp_fttext -#undef pp_ftbinary -#define pp_ftbinary CPerlObj::Perl_pp_ftbinary -#undef pp_chdir -#define pp_chdir CPerlObj::Perl_pp_chdir -#undef pp_chown -#define pp_chown CPerlObj::Perl_pp_chown -#undef pp_chroot -#define pp_chroot CPerlObj::Perl_pp_chroot -#undef pp_unlink -#define pp_unlink CPerlObj::Perl_pp_unlink -#undef pp_chmod -#define pp_chmod CPerlObj::Perl_pp_chmod -#undef pp_utime -#define pp_utime CPerlObj::Perl_pp_utime -#undef pp_rename -#define pp_rename CPerlObj::Perl_pp_rename -#undef pp_link -#define pp_link CPerlObj::Perl_pp_link -#undef pp_symlink -#define pp_symlink CPerlObj::Perl_pp_symlink -#undef pp_readlink -#define pp_readlink CPerlObj::Perl_pp_readlink -#undef pp_mkdir -#define pp_mkdir CPerlObj::Perl_pp_mkdir -#undef pp_rmdir -#define pp_rmdir CPerlObj::Perl_pp_rmdir -#undef pp_open_dir -#define pp_open_dir CPerlObj::Perl_pp_open_dir -#undef pp_readdir -#define pp_readdir CPerlObj::Perl_pp_readdir -#undef pp_telldir -#define pp_telldir CPerlObj::Perl_pp_telldir -#undef pp_seekdir -#define pp_seekdir CPerlObj::Perl_pp_seekdir -#undef pp_rewinddir -#define pp_rewinddir CPerlObj::Perl_pp_rewinddir -#undef pp_closedir -#define pp_closedir CPerlObj::Perl_pp_closedir -#undef pp_fork -#define pp_fork CPerlObj::Perl_pp_fork -#undef pp_wait -#define pp_wait CPerlObj::Perl_pp_wait -#undef pp_waitpid -#define pp_waitpid CPerlObj::Perl_pp_waitpid -#undef pp_system -#define pp_system CPerlObj::Perl_pp_system -#undef pp_exec -#define pp_exec CPerlObj::Perl_pp_exec -#undef pp_kill -#define pp_kill CPerlObj::Perl_pp_kill -#undef pp_getppid -#define pp_getppid CPerlObj::Perl_pp_getppid -#undef pp_getpgrp -#define pp_getpgrp CPerlObj::Perl_pp_getpgrp -#undef pp_setpgrp -#define pp_setpgrp CPerlObj::Perl_pp_setpgrp -#undef pp_getpriority -#define pp_getpriority CPerlObj::Perl_pp_getpriority -#undef pp_setpriority -#define pp_setpriority CPerlObj::Perl_pp_setpriority -#undef pp_time -#define pp_time CPerlObj::Perl_pp_time -#undef pp_tms -#define pp_tms CPerlObj::Perl_pp_tms -#undef pp_localtime -#define pp_localtime CPerlObj::Perl_pp_localtime -#undef pp_gmtime -#define pp_gmtime CPerlObj::Perl_pp_gmtime -#undef pp_alarm -#define pp_alarm CPerlObj::Perl_pp_alarm -#undef pp_sleep -#define pp_sleep CPerlObj::Perl_pp_sleep -#undef pp_shmget -#define pp_shmget CPerlObj::Perl_pp_shmget -#undef pp_shmctl -#define pp_shmctl CPerlObj::Perl_pp_shmctl -#undef pp_shmread -#define pp_shmread CPerlObj::Perl_pp_shmread -#undef pp_shmwrite -#define pp_shmwrite CPerlObj::Perl_pp_shmwrite -#undef pp_msgget -#define pp_msgget CPerlObj::Perl_pp_msgget -#undef pp_msgctl -#define pp_msgctl CPerlObj::Perl_pp_msgctl -#undef pp_msgsnd -#define pp_msgsnd CPerlObj::Perl_pp_msgsnd -#undef pp_msgrcv -#define pp_msgrcv CPerlObj::Perl_pp_msgrcv -#undef pp_semget -#define pp_semget CPerlObj::Perl_pp_semget -#undef pp_semctl -#define pp_semctl CPerlObj::Perl_pp_semctl -#undef pp_semop -#define pp_semop CPerlObj::Perl_pp_semop -#undef pp_require -#define pp_require CPerlObj::Perl_pp_require -#undef pp_dofile -#define pp_dofile CPerlObj::Perl_pp_dofile -#undef pp_entereval -#define pp_entereval CPerlObj::Perl_pp_entereval -#undef pp_leaveeval -#define pp_leaveeval CPerlObj::Perl_pp_leaveeval -#undef pp_entertry -#define pp_entertry CPerlObj::Perl_pp_entertry -#undef pp_leavetry -#define pp_leavetry CPerlObj::Perl_pp_leavetry -#undef pp_ghbyname -#define pp_ghbyname CPerlObj::Perl_pp_ghbyname -#undef pp_ghbyaddr -#define pp_ghbyaddr CPerlObj::Perl_pp_ghbyaddr -#undef pp_ghostent -#define pp_ghostent CPerlObj::Perl_pp_ghostent -#undef pp_gnbyname -#define pp_gnbyname CPerlObj::Perl_pp_gnbyname -#undef pp_gnbyaddr -#define pp_gnbyaddr CPerlObj::Perl_pp_gnbyaddr -#undef pp_gnetent -#define pp_gnetent CPerlObj::Perl_pp_gnetent -#undef pp_gpbyname -#define pp_gpbyname CPerlObj::Perl_pp_gpbyname -#undef pp_gpbynumber -#define pp_gpbynumber CPerlObj::Perl_pp_gpbynumber -#undef pp_gprotoent -#define pp_gprotoent CPerlObj::Perl_pp_gprotoent -#undef pp_gsbyname -#define pp_gsbyname CPerlObj::Perl_pp_gsbyname -#undef pp_gsbyport -#define pp_gsbyport CPerlObj::Perl_pp_gsbyport -#undef pp_gservent -#define pp_gservent CPerlObj::Perl_pp_gservent -#undef pp_shostent -#define pp_shostent CPerlObj::Perl_pp_shostent -#undef pp_snetent -#define pp_snetent CPerlObj::Perl_pp_snetent -#undef pp_sprotoent -#define pp_sprotoent CPerlObj::Perl_pp_sprotoent -#undef pp_sservent -#define pp_sservent CPerlObj::Perl_pp_sservent -#undef pp_ehostent -#define pp_ehostent CPerlObj::Perl_pp_ehostent -#undef pp_enetent -#define pp_enetent CPerlObj::Perl_pp_enetent -#undef pp_eprotoent -#define pp_eprotoent CPerlObj::Perl_pp_eprotoent -#undef pp_eservent -#define pp_eservent CPerlObj::Perl_pp_eservent -#undef pp_gpwnam -#define pp_gpwnam CPerlObj::Perl_pp_gpwnam -#undef pp_gpwuid -#define pp_gpwuid CPerlObj::Perl_pp_gpwuid -#undef pp_gpwent -#define pp_gpwent CPerlObj::Perl_pp_gpwent -#undef pp_spwent -#define pp_spwent CPerlObj::Perl_pp_spwent -#undef pp_epwent -#define pp_epwent CPerlObj::Perl_pp_epwent -#undef pp_ggrnam -#define pp_ggrnam CPerlObj::Perl_pp_ggrnam -#undef pp_ggrgid -#define pp_ggrgid CPerlObj::Perl_pp_ggrgid -#undef pp_ggrent -#define pp_ggrent CPerlObj::Perl_pp_ggrent -#undef pp_sgrent -#define pp_sgrent CPerlObj::Perl_pp_sgrent -#undef pp_egrent -#define pp_egrent CPerlObj::Perl_pp_egrent -#undef pp_getlogin -#define pp_getlogin CPerlObj::Perl_pp_getlogin -#undef pp_syscall -#define pp_syscall CPerlObj::Perl_pp_syscall -#undef pp_lock -#define pp_lock CPerlObj::Perl_pp_lock -#undef pp_threadsv -#define pp_threadsv CPerlObj::Perl_pp_threadsv - -OP * (CPERLscope(*check)[]) _((OP *op)) = { - ck_null, /* null */ - ck_null, /* stub */ - ck_fun, /* scalar */ - ck_null, /* pushmark */ - ck_null, /* wantarray */ - ck_svconst, /* const */ - ck_null, /* gvsv */ - ck_null, /* gv */ - ck_null, /* gelem */ - ck_null, /* padsv */ - ck_null, /* padav */ - ck_null, /* padhv */ - ck_null, /* padany */ - ck_null, /* pushre */ - ck_rvconst, /* rv2gv */ - ck_rvconst, /* rv2sv */ - ck_null, /* av2arylen */ - ck_rvconst, /* rv2cv */ - ck_anoncode, /* anoncode */ - ck_null, /* prototype */ - ck_spair, /* refgen */ - ck_null, /* srefgen */ - ck_fun, /* ref */ - ck_fun, /* bless */ - ck_null, /* backtick */ - ck_glob, /* glob */ - ck_null, /* readline */ - ck_null, /* rcatline */ - ck_fun, /* regcmaybe */ - ck_fun, /* regcreset */ - ck_null, /* regcomp */ - ck_match, /* match */ - ck_match, /* qr */ - ck_null, /* subst */ - ck_null, /* substcont */ - ck_null, /* trans */ - ck_null, /* sassign */ - ck_null, /* aassign */ - ck_spair, /* chop */ - ck_null, /* schop */ - ck_spair, /* chomp */ - ck_null, /* schomp */ - ck_rfun, /* defined */ - ck_lfun, /* undef */ - ck_fun, /* study */ - ck_lfun, /* pos */ - ck_lfun, /* preinc */ - ck_lfun, /* i_preinc */ - ck_lfun, /* predec */ - ck_lfun, /* i_predec */ - ck_lfun, /* postinc */ - ck_lfun, /* i_postinc */ - ck_lfun, /* postdec */ - ck_lfun, /* i_postdec */ - ck_null, /* pow */ - ck_null, /* multiply */ - ck_null, /* i_multiply */ - ck_null, /* divide */ - ck_null, /* i_divide */ - ck_null, /* modulo */ - ck_null, /* i_modulo */ - ck_repeat, /* repeat */ - ck_null, /* add */ - ck_null, /* i_add */ - ck_null, /* subtract */ - ck_null, /* i_subtract */ - ck_concat, /* concat */ - ck_fun, /* stringify */ - ck_bitop, /* left_shift */ - ck_bitop, /* right_shift */ - ck_null, /* lt */ - ck_null, /* i_lt */ - ck_null, /* gt */ - ck_null, /* i_gt */ - ck_null, /* le */ - ck_null, /* i_le */ - ck_null, /* ge */ - ck_null, /* i_ge */ - ck_null, /* eq */ - ck_null, /* i_eq */ - ck_null, /* ne */ - ck_null, /* i_ne */ - ck_null, /* ncmp */ - ck_null, /* i_ncmp */ - ck_scmp, /* slt */ - ck_scmp, /* sgt */ - ck_scmp, /* sle */ - ck_scmp, /* sge */ - ck_null, /* seq */ - ck_null, /* sne */ - ck_scmp, /* scmp */ - ck_bitop, /* bit_and */ - ck_bitop, /* bit_xor */ - ck_bitop, /* bit_or */ - ck_null, /* negate */ - ck_null, /* i_negate */ - ck_null, /* not */ - ck_bitop, /* complement */ - ck_fun, /* atan2 */ - ck_fun, /* sin */ - ck_fun, /* cos */ - ck_fun, /* rand */ - ck_fun, /* srand */ - ck_fun, /* exp */ - ck_fun, /* log */ - ck_fun, /* sqrt */ - ck_fun, /* int */ - ck_fun, /* hex */ - ck_fun, /* oct */ - ck_fun, /* abs */ - ck_lengthconst, /* length */ - ck_fun, /* substr */ - ck_fun, /* vec */ - ck_index, /* index */ - ck_index, /* rindex */ - ck_fun_locale, /* sprintf */ - ck_fun, /* formline */ - ck_fun, /* ord */ - ck_fun, /* chr */ - ck_fun, /* crypt */ - ck_fun_locale, /* ucfirst */ - ck_fun_locale, /* lcfirst */ - ck_fun_locale, /* uc */ - ck_fun_locale, /* lc */ - ck_fun, /* quotemeta */ - ck_rvconst, /* rv2av */ - ck_null, /* aelemfast */ - ck_null, /* aelem */ - ck_null, /* aslice */ - ck_fun, /* each */ - ck_fun, /* values */ - ck_fun, /* keys */ - ck_delete, /* delete */ - ck_exists, /* exists */ - ck_rvconst, /* rv2hv */ - ck_null, /* helem */ - ck_null, /* hslice */ - ck_fun, /* unpack */ - ck_fun, /* pack */ - ck_split, /* split */ - ck_fun, /* join */ - ck_null, /* list */ - ck_null, /* lslice */ - ck_fun, /* anonlist */ - ck_fun, /* anonhash */ - ck_fun, /* splice */ - ck_fun, /* push */ - ck_shift, /* pop */ - ck_shift, /* shift */ - ck_fun, /* unshift */ - ck_sort, /* sort */ - ck_fun, /* reverse */ - ck_grep, /* grepstart */ - ck_null, /* grepwhile */ - ck_grep, /* mapstart */ - ck_null, /* mapwhile */ - ck_null, /* range */ - ck_null, /* flip */ - ck_null, /* flop */ - ck_null, /* and */ - ck_null, /* or */ - ck_null, /* xor */ - ck_null, /* cond_expr */ - ck_null, /* andassign */ - ck_null, /* orassign */ - ck_null, /* method */ - ck_subr, /* entersub */ - ck_null, /* leavesub */ - ck_fun, /* caller */ - ck_fun, /* warn */ - ck_fun, /* die */ - ck_fun, /* reset */ - ck_null, /* lineseq */ - ck_null, /* nextstate */ - ck_null, /* dbstate */ - ck_null, /* unstack */ - ck_null, /* enter */ - ck_null, /* leave */ - ck_null, /* scope */ - ck_null, /* enteriter */ - ck_null, /* iter */ - ck_null, /* enterloop */ - ck_null, /* leaveloop */ - ck_null, /* return */ - ck_null, /* last */ - ck_null, /* next */ - ck_null, /* redo */ - ck_null, /* dump */ - ck_null, /* goto */ - ck_fun, /* exit */ - ck_fun, /* open */ - ck_fun, /* close */ - ck_fun, /* pipe_op */ - ck_fun, /* fileno */ - ck_fun, /* umask */ - ck_fun, /* binmode */ - ck_fun, /* tie */ - ck_fun, /* untie */ - ck_fun, /* tied */ - ck_fun, /* dbmopen */ - ck_fun, /* dbmclose */ - ck_select, /* sselect */ - ck_select, /* select */ - ck_eof, /* getc */ - ck_fun, /* read */ - ck_fun, /* enterwrite */ - ck_null, /* leavewrite */ - ck_listiob, /* prtf */ - ck_listiob, /* print */ - ck_fun, /* sysopen */ - ck_fun, /* sysseek */ - ck_fun, /* sysread */ - ck_fun, /* syswrite */ - ck_fun, /* send */ - ck_fun, /* recv */ - ck_eof, /* eof */ - ck_fun, /* tell */ - ck_fun, /* seek */ - ck_trunc, /* truncate */ - ck_fun, /* fcntl */ - ck_fun, /* ioctl */ - ck_fun, /* flock */ - ck_fun, /* socket */ - ck_fun, /* sockpair */ - ck_fun, /* bind */ - ck_fun, /* connect */ - ck_fun, /* listen */ - ck_fun, /* accept */ - ck_fun, /* shutdown */ - ck_fun, /* gsockopt */ - ck_fun, /* ssockopt */ - ck_fun, /* getsockname */ - ck_fun, /* getpeername */ - ck_ftst, /* lstat */ - ck_ftst, /* stat */ - ck_ftst, /* ftrread */ - ck_ftst, /* ftrwrite */ - ck_ftst, /* ftrexec */ - ck_ftst, /* fteread */ - ck_ftst, /* ftewrite */ - ck_ftst, /* fteexec */ - ck_ftst, /* ftis */ - ck_ftst, /* fteowned */ - ck_ftst, /* ftrowned */ - ck_ftst, /* ftzero */ - ck_ftst, /* ftsize */ - ck_ftst, /* ftmtime */ - ck_ftst, /* ftatime */ - ck_ftst, /* ftctime */ - ck_ftst, /* ftsock */ - ck_ftst, /* ftchr */ - ck_ftst, /* ftblk */ - ck_ftst, /* ftfile */ - ck_ftst, /* ftdir */ - ck_ftst, /* ftpipe */ - ck_ftst, /* ftlink */ - ck_ftst, /* ftsuid */ - ck_ftst, /* ftsgid */ - ck_ftst, /* ftsvtx */ - ck_ftst, /* fttty */ - ck_ftst, /* fttext */ - ck_ftst, /* ftbinary */ - ck_fun, /* chdir */ - ck_fun, /* chown */ - ck_fun, /* chroot */ - ck_fun, /* unlink */ - ck_fun, /* chmod */ - ck_fun, /* utime */ - ck_fun, /* rename */ - ck_fun, /* link */ - ck_fun, /* symlink */ - ck_fun, /* readlink */ - ck_fun, /* mkdir */ - ck_fun, /* rmdir */ - ck_fun, /* open_dir */ - ck_fun, /* readdir */ - ck_fun, /* telldir */ - ck_fun, /* seekdir */ - ck_fun, /* rewinddir */ - ck_fun, /* closedir */ - ck_null, /* fork */ - ck_null, /* wait */ - ck_fun, /* waitpid */ - ck_exec, /* system */ - ck_exec, /* exec */ - ck_fun, /* kill */ - ck_null, /* getppid */ - ck_fun, /* getpgrp */ - ck_fun, /* setpgrp */ - ck_fun, /* getpriority */ - ck_fun, /* setpriority */ - ck_null, /* time */ - ck_null, /* tms */ - ck_fun, /* localtime */ - ck_fun, /* gmtime */ - ck_fun, /* alarm */ - ck_fun, /* sleep */ - ck_fun, /* shmget */ - ck_fun, /* shmctl */ - ck_fun, /* shmread */ - ck_fun, /* shmwrite */ - ck_fun, /* msgget */ - ck_fun, /* msgctl */ - ck_fun, /* msgsnd */ - ck_fun, /* msgrcv */ - ck_fun, /* semget */ - ck_fun, /* semctl */ - ck_fun, /* semop */ - ck_require, /* require */ - ck_fun, /* dofile */ - ck_eval, /* entereval */ - ck_null, /* leaveeval */ - ck_null, /* entertry */ - ck_null, /* leavetry */ - ck_fun, /* ghbyname */ - ck_fun, /* ghbyaddr */ - ck_null, /* ghostent */ - ck_fun, /* gnbyname */ - ck_fun, /* gnbyaddr */ - ck_null, /* gnetent */ - ck_fun, /* gpbyname */ - ck_fun, /* gpbynumber */ - ck_null, /* gprotoent */ - ck_fun, /* gsbyname */ - ck_fun, /* gsbyport */ - ck_null, /* gservent */ - ck_fun, /* shostent */ - ck_fun, /* snetent */ - ck_fun, /* sprotoent */ - ck_fun, /* sservent */ - ck_null, /* ehostent */ - ck_null, /* enetent */ - ck_null, /* eprotoent */ - ck_null, /* eservent */ - ck_fun, /* gpwnam */ - ck_fun, /* gpwuid */ - ck_null, /* gpwent */ - ck_null, /* spwent */ - ck_null, /* epwent */ - ck_fun, /* ggrnam */ - ck_fun, /* ggrgid */ - ck_null, /* ggrent */ - ck_null, /* sgrent */ - ck_null, /* egrent */ - ck_null, /* getlogin */ - ck_fun, /* syscall */ - ck_rfun, /* lock */ - ck_null, /* threadsv */ -}; - -OP * (CPERLscope(*ppaddr)[])(ARGSproto) = { - pp_null, - pp_stub, - pp_scalar, - pp_pushmark, - pp_wantarray, - pp_const, - pp_gvsv, - pp_gv, - pp_gelem, - pp_padsv, - pp_padav, - pp_padhv, - pp_padany, - pp_pushre, - pp_rv2gv, - pp_rv2sv, - pp_av2arylen, - pp_rv2cv, - pp_anoncode, - pp_prototype, - pp_refgen, - pp_srefgen, - pp_ref, - pp_bless, - pp_backtick, - pp_glob, - pp_readline, - pp_rcatline, - pp_regcmaybe, - pp_regcreset, - pp_regcomp, - pp_match, - pp_qr, - pp_subst, - pp_substcont, - pp_trans, - pp_sassign, - pp_aassign, - pp_chop, - pp_schop, - pp_chomp, - pp_schomp, - pp_defined, - pp_undef, - pp_study, - pp_pos, - pp_preinc, - pp_i_preinc, - pp_predec, - pp_i_predec, - pp_postinc, - pp_i_postinc, - pp_postdec, - pp_i_postdec, - pp_pow, - pp_multiply, - pp_i_multiply, - pp_divide, - pp_i_divide, - pp_modulo, - pp_i_modulo, - pp_repeat, - pp_add, - pp_i_add, - pp_subtract, - pp_i_subtract, - pp_concat, - pp_stringify, - pp_left_shift, - pp_right_shift, - pp_lt, - pp_i_lt, - pp_gt, - pp_i_gt, - pp_le, - pp_i_le, - pp_ge, - pp_i_ge, - pp_eq, - pp_i_eq, - pp_ne, - pp_i_ne, - pp_ncmp, - pp_i_ncmp, - pp_slt, - pp_sgt, - pp_sle, - pp_sge, - pp_seq, - pp_sne, - pp_scmp, - pp_bit_and, - pp_bit_xor, - pp_bit_or, - pp_negate, - pp_i_negate, - pp_not, - pp_complement, - pp_atan2, - pp_sin, - pp_cos, - pp_rand, - pp_srand, - pp_exp, - pp_log, - pp_sqrt, - pp_int, - pp_hex, - pp_oct, - pp_abs, - pp_length, - pp_substr, - pp_vec, - pp_index, - pp_rindex, - pp_sprintf, - pp_formline, - pp_ord, - pp_chr, - pp_crypt, - pp_ucfirst, - pp_lcfirst, - pp_uc, - pp_lc, - pp_quotemeta, - pp_rv2av, - pp_aelemfast, - pp_aelem, - pp_aslice, - pp_each, - pp_values, - pp_keys, - pp_delete, - pp_exists, - pp_rv2hv, - pp_helem, - pp_hslice, - pp_unpack, - pp_pack, - pp_split, - pp_join, - pp_list, - pp_lslice, - pp_anonlist, - pp_anonhash, - pp_splice, - pp_push, - pp_pop, - pp_shift, - pp_unshift, - pp_sort, - pp_reverse, - pp_grepstart, - pp_grepwhile, - pp_mapstart, - pp_mapwhile, - pp_range, - pp_flip, - pp_flop, - pp_and, - pp_or, - pp_xor, - pp_cond_expr, - pp_andassign, - pp_orassign, - pp_method, - pp_entersub, - pp_leavesub, - pp_caller, - pp_warn, - pp_die, - pp_reset, - pp_lineseq, - pp_nextstate, - pp_dbstate, - pp_unstack, - pp_enter, - pp_leave, - pp_scope, - pp_enteriter, - pp_iter, - pp_enterloop, - pp_leaveloop, - pp_return, - pp_last, - pp_next, - pp_redo, - pp_dump, - pp_goto, - pp_exit, - pp_open, - pp_close, - pp_pipe_op, - pp_fileno, - pp_umask, - pp_binmode, - pp_tie, - pp_untie, - pp_tied, - pp_dbmopen, - pp_dbmclose, - pp_sselect, - pp_select, - pp_getc, - pp_read, - pp_enterwrite, - pp_leavewrite, - pp_prtf, - pp_print, - pp_sysopen, - pp_sysseek, - pp_sysread, - pp_syswrite, - pp_send, - pp_recv, - pp_eof, - pp_tell, - pp_seek, - pp_truncate, - pp_fcntl, - pp_ioctl, - pp_flock, - pp_socket, - pp_sockpair, - pp_bind, - pp_connect, - pp_listen, - pp_accept, - pp_shutdown, - pp_gsockopt, - pp_ssockopt, - pp_getsockname, - pp_getpeername, - pp_lstat, - pp_stat, - pp_ftrread, - pp_ftrwrite, - pp_ftrexec, - pp_fteread, - pp_ftewrite, - pp_fteexec, - pp_ftis, - pp_fteowned, - pp_ftrowned, - pp_ftzero, - pp_ftsize, - pp_ftmtime, - pp_ftatime, - pp_ftctime, - pp_ftsock, - pp_ftchr, - pp_ftblk, - pp_ftfile, - pp_ftdir, - pp_ftpipe, - pp_ftlink, - pp_ftsuid, - pp_ftsgid, - pp_ftsvtx, - pp_fttty, - pp_fttext, - pp_ftbinary, - pp_chdir, - pp_chown, - pp_chroot, - pp_unlink, - pp_chmod, - pp_utime, - pp_rename, - pp_link, - pp_symlink, - pp_readlink, - pp_mkdir, - pp_rmdir, - pp_open_dir, - pp_readdir, - pp_telldir, - pp_seekdir, - pp_rewinddir, - pp_closedir, - pp_fork, - pp_wait, - pp_waitpid, - pp_system, - pp_exec, - pp_kill, - pp_getppid, - pp_getpgrp, - pp_setpgrp, - pp_getpriority, - pp_setpriority, - pp_time, - pp_tms, - pp_localtime, - pp_gmtime, - pp_alarm, - pp_sleep, - pp_shmget, - pp_shmctl, - pp_shmread, - pp_shmwrite, - pp_msgget, - pp_msgctl, - pp_msgsnd, - pp_msgrcv, - pp_semget, - pp_semctl, - pp_semop, - pp_require, - pp_dofile, - pp_entereval, - pp_leaveeval, - pp_entertry, - pp_leavetry, - pp_ghbyname, - pp_ghbyaddr, - pp_ghostent, - pp_gnbyname, - pp_gnbyaddr, - pp_gnetent, - pp_gpbyname, - pp_gpbynumber, - pp_gprotoent, - pp_gsbyname, - pp_gsbyport, - pp_gservent, - pp_shostent, - pp_snetent, - pp_sprotoent, - pp_sservent, - pp_ehostent, - pp_enetent, - pp_eprotoent, - pp_eservent, - pp_gpwnam, - pp_gpwuid, - pp_gpwent, - pp_spwent, - pp_epwent, - pp_ggrnam, - pp_ggrgid, - pp_ggrent, - pp_sgrent, - pp_egrent, - pp_getlogin, - pp_syscall, - pp_lock, - pp_threadsv, -}; - -int -fprintf(PerlIO *stream, const char *format, ...) -{ - va_list(arglist); - va_start(arglist, format); - return PerlIO_vprintf(stream, format, arglist); -} #undef PERLVAR #define PERLVAR(x, y) +#undef PERLVARA +#define PERLVARA(x, n, y) #undef PERLVARI -#define PERLVARI(x, y, z) PL_##x = z; +#define PERLVARI(x, y, z) interp.x = z; #undef PERLVARIC -#define PERLVARIC(x, y, z) PL_##x = z; +#define PERLVARIC(x, y, z) interp.x = z; -CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd, - IPerlLIO* ipLIO, IPerlDir* ipD, IPerlSock* ipS, IPerlProc* ipP) +CPerlObj::CPerlObj(IPerlMem* ipM, IPerlMem* ipMS, IPerlMem* ipMP, + IPerlEnv* ipE, IPerlStdIO* ipStd, + IPerlLIO* ipLIO, IPerlDir* ipD, IPerlSock* ipS, + IPerlProc* ipP) { memset(((char*)this)+sizeof(void*), 0, sizeof(CPerlObj)-sizeof(void*)); #include "thrdvar.h" #include "intrpvar.h" -#include "perlvars.h" - PL_piMem = ipM; - PL_piENV = ipE; - PL_piStdIO = ipStd; - PL_piLIO = ipLIO; - PL_piDir = ipD; - PL_piSock = ipS; - PL_piProc = ipP; + PL_Mem = ipM; + PL_MemShared = ipMS; + PL_MemParse = ipMP; + PL_Env = ipE; + PL_StdIO = ipStd; + PL_LIO = ipLIO; + PL_Dir = ipD; + PL_Sock = ipS; + PL_Proc = ipP; } void* CPerlObj::operator new(size_t nSize, IPerlMem *pvtbl) { - if(pvtbl != NULL) - return pvtbl->Malloc(nSize); - + if(pvtbl) + return pvtbl->pMalloc(pvtbl, nSize); +#ifndef __MINGW32__ + /* operator new is supposed to throw std::bad_alloc */ return NULL; +#endif } -int& -CPerlObj::ErrorNo(void) -{ - return errno; -} - +#ifndef __BORLANDC__ void -CPerlObj::Init(void) +CPerlObj::operator delete(void *pPerl, IPerlMem *pvtbl) { + if(pvtbl) + pvtbl->pFree(pvtbl, pPerl); } +#endif #ifdef WIN32 /* XXX why are these needed? */ bool -do_exec(char *cmd) +Perl_do_exec(char *cmd) { return PerlProc_Cmd(cmd); } int -do_aspawn(void *vreally, void **vmark, void **vsp) +CPerlObj::do_aspawn(void *vreally, void **vmark, void **vsp) { return PerlProc_aspawn(vreally, vmark, vsp); } #endif /* WIN32 */ #endif /* PERL_OBJECT */ + +int +Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...) +{ + dTHX; + va_list(arglist); + va_start(arglist, format); + return PerlIO_vprintf(stream, format, arglist); +} + +#include "perlapi.h" /* bring in PL_force_link_funcs */ diff --git a/contrib/perl5/globvar.sym b/contrib/perl5/globvar.sym new file mode 100644 index 000000000000..0d768889a85b --- /dev/null +++ b/contrib/perl5/globvar.sym @@ -0,0 +1,68 @@ +# Global variables that must be exported for embedded applications. + +# *** Only structures/arrays with constant initializers should go here. +# *** Usual globals initialized at runtime should be added in *var*.h. +# *** Do NOT add functions here, those go in global.sym. + +AMG_names +block_type +fold +fold_locale +freq +warn_uninit +warn_nosemi +warn_reserved +warn_nl +no_wrongref +no_symref +no_usym +no_aelem +no_helem +no_modify +no_mem +no_security +no_sock_func +no_dir_func +no_func +no_myglob +check +op_desc +op_name +opargs +ppaddr +sig_name +sig_num +regkind +simple +utf8skip +uuemap +varies +vtbl_sv +vtbl_env +vtbl_envelem +vtbl_sig +vtbl_sigelem +vtbl_pack +vtbl_packelem +vtbl_dbline +vtbl_isa +vtbl_isaelem +vtbl_arylen +vtbl_glob +vtbl_mglob +vtbl_nkeys +vtbl_taint +vtbl_substr +vtbl_vec +vtbl_pos +vtbl_bm +vtbl_fm +vtbl_uvar +vtbl_mutex +vtbl_defelem +vtbl_regexp +vtbl_regdata +vtbl_regdatum +vtbl_collxfrm +vtbl_amagic +vtbl_amagicelem diff --git a/contrib/perl5/gv.c b/contrib/perl5/gv.c index 1845058c36c6..be1935560e43 100644 --- a/contrib/perl5/gv.c +++ b/contrib/perl5/gv.c @@ -1,6 +1,6 @@ /* gv.c * - * Copyright (c) 1991-1999, Larry Wall + * Copyright (c) 1991-2000, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -17,40 +17,41 @@ */ #include "EXTERN.h" +#define PERL_IN_GV_C #include "perl.h" GV * -gv_AVadd(register GV *gv) +Perl_gv_AVadd(pTHX_ register GV *gv) { if (!gv || SvTYPE((SV*)gv) != SVt_PVGV) - croak("Bad symbol for array"); + Perl_croak(aTHX_ "Bad symbol for array"); if (!GvAV(gv)) GvAV(gv) = newAV(); return gv; } GV * -gv_HVadd(register GV *gv) +Perl_gv_HVadd(pTHX_ register GV *gv) { if (!gv || SvTYPE((SV*)gv) != SVt_PVGV) - croak("Bad symbol for hash"); + Perl_croak(aTHX_ "Bad symbol for hash"); if (!GvHV(gv)) GvHV(gv) = newHV(); return gv; } GV * -gv_IOadd(register GV *gv) +Perl_gv_IOadd(pTHX_ register GV *gv) { if (!gv || SvTYPE((SV*)gv) != SVt_PVGV) - croak("Bad symbol for filehandle"); + Perl_croak(aTHX_ "Bad symbol for filehandle"); if (!GvIOp(gv)) GvIOp(gv) = newIO(); return gv; } GV * -gv_fetchfile(char *name) +Perl_gv_fetchfile(pTHX_ const char *name) { dTHR; char smallbuf[256]; @@ -58,6 +59,9 @@ gv_fetchfile(char *name) STRLEN tmplen; GV *gv; + if (!PL_defstash) + return Nullgv; + tmplen = strlen(name) + 2; if (tmplen < sizeof smallbuf) tmpbuf = smallbuf; @@ -67,20 +71,19 @@ gv_fetchfile(char *name) tmpbuf[1] = '<'; strcpy(tmpbuf + 2, name); gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE); - if (!isGV(gv)) + if (!isGV(gv)) { gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE); + sv_setpv(GvSV(gv), name); + if (PERLDB_LINE) + hv_magic(GvHVn(gv_AVadd(gv)), gv, 'L'); + } if (tmpbuf != smallbuf) Safefree(tmpbuf); - sv_setpv(GvSV(gv), name); - if (*name == '/' && (instr(name, "/lib/") || instr(name, ".pm"))) - GvMULTI_on(gv); - if (PERLDB_LINE) - hv_magic(GvHVn(gv_AVadd(gv)), gv, 'L'); return gv; } void -gv_init(GV *gv, HV *stash, char *name, STRLEN len, int multi) +Perl_gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi) { dTHR; register GP *gp; @@ -99,8 +102,8 @@ gv_init(GV *gv, HV *stash, char *name, STRLEN len, int multi) Newz(602, gp, 1, GP); GvGP(gv) = gp_ref(gp); GvSV(gv) = NEWSV(72,0); - GvLINE(gv) = PL_curcop->cop_line; - GvFILEGV(gv) = PL_curcop->cop_filegv; + GvLINE(gv) = CopLINE(PL_curcop); + GvFILE(gv) = CopFILE(PL_curcop) ? CopFILE(PL_curcop) : ""; GvCVGEN(gv) = 0; GvEGV(gv) = gv; sv_magic((SV*)gv, (SV*)gv, '*', name, len); @@ -119,7 +122,7 @@ gv_init(GV *gv, HV *stash, char *name, STRLEN len, int multi) PL_sub_generation++; CvGV(GvCV(gv)) = (GV*)SvREFCNT_inc(gv); - CvFILEGV(GvCV(gv)) = PL_curcop->cop_filegv; + CvFILE(GvCV(gv)) = CopFILE(PL_curcop); CvSTASH(GvCV(gv)) = PL_curstash; #ifdef USE_THREADS CvOWNER(GvCV(gv)) = 0; @@ -136,7 +139,7 @@ gv_init(GV *gv, HV *stash, char *name, STRLEN len, int multi) } STATIC void -gv_init_sv(GV *gv, I32 sv_type) +S_gv_init_sv(pTHX_ GV *gv, I32 sv_type) { switch (sv_type) { case SVt_PVIO: @@ -151,8 +154,29 @@ gv_init_sv(GV *gv, I32 sv_type) } } +/* +=for apidoc gv_fetchmeth + +Returns the glob with the given C and a defined subroutine or +C. The glob lives in the given C, or in the stashes +accessible via @ISA and @UNIVERSAL. + +The argument C should be either 0 or -1. If C, as a +side-effect creates a glob with the given C in the given C +which in the case of success contains an alias for the subroutine, and sets +up caching info for this glob. Similarly for all the searched stashes. + +This function grants C<"SUPER"> token as a postfix of the stash name. The +GV returned from C may be a method cache entry, which is not +visible to Perl code. So when calling C, you should not use +the GV directly; instead, you should use the method's CV, which can be +obtained from the GV with the C macro. + +=cut +*/ + GV * -gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) +Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level) { AV* av; GV* topgv; @@ -163,10 +187,10 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) if (!stash) return 0; if ((level > 100) || (level < -100)) - croak("Recursive inheritance detected while looking for method '%s' in package '%s'", + Perl_croak(aTHX_ "Recursive inheritance detected while looking for method '%s' in package '%s'", name, HvNAME(stash)); - DEBUG_o( deb("Looking for method %s in package %s\n",name,HvNAME(stash)) ); + DEBUG_o( Perl_deb(aTHX_ "Looking for method %s in package %s\n",name,HvNAME(stash)) ); gvp = (GV**)hv_fetch(stash, name, len, (level >= 0)); if (!gvp) @@ -175,7 +199,7 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) topgv = *gvp; if (SvTYPE(topgv) != SVt_PVGV) gv_init(topgv, stash, name, len, TRUE); - if (cv = GvCV(topgv)) { + if ((cv = GvCV(topgv))) { /* If genuine method or valid cache entry, use it */ if (!GvCVGEN(topgv) || GvCVGEN(topgv) == PL_sub_generation) return topgv; @@ -206,7 +230,7 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) dTHR; /* just for SvREFCNT_dec */ gvp = (GV**)hv_fetch(stash, "ISA", 3, TRUE); if (!gvp || !(gv = *gvp)) - croak("Cannot create %s::ISA", HvNAME(stash)); + Perl_croak(aTHX_ "Cannot create %s::ISA", HvNAME(stash)); if (SvTYPE(gv) != SVt_PVGV) gv_init(gv, stash, "ISA", 3, TRUE); SvREFCNT_dec(GvAV(gv)); @@ -223,8 +247,9 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) SV* sv = *svp++; HV* basestash = gv_stashsv(sv, FALSE); if (!basestash) { - if (PL_dowarn) - warn("Can't locate package %s for @%s::ISA", + dTHR; /* just for ckWARN */ + if (ckWARN(WARN_MISC)) + Perl_warner(aTHX_ WARN_MISC, "Can't locate package %s for @%s::ISA", SvPVX(sv), HvNAME(stash)); continue; } @@ -240,9 +265,10 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) if (level == 0 || level == -1) { HV* lastchance; - if (lastchance = gv_stashpvn("UNIVERSAL", 9, FALSE)) { - if (gv = gv_fetchmeth(lastchance, name, len, - (level >= 0) ? level + 1 : level - 1)) { + if ((lastchance = gv_stashpvn("UNIVERSAL", 9, FALSE))) { + if ((gv = gv_fetchmeth(lastchance, name, len, + (level >= 0) ? level + 1 : level - 1))) + { gotcha: /* * Cache method in topgv if: @@ -254,7 +280,7 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) (cv = GvCV(gv)) && (CvROOT(cv) || CvXSUB(cv))) { - if (cv = GvCV(topgv)) + if ((cv = GvCV(topgv))) SvREFCNT_dec(cv); GvCV(topgv) = (CV*)SvREFCNT_inc(GvCV(gv)); GvCVGEN(topgv) = PL_sub_generation; @@ -271,18 +297,54 @@ gv_fetchmeth(HV *stash, char *name, STRLEN len, I32 level) return 0; } +/* +=for apidoc gv_fetchmethod + +See L. + +=cut +*/ + GV * -gv_fetchmethod(HV *stash, char *name) +Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name) { return gv_fetchmethod_autoload(stash, name, TRUE); } +/* +=for apidoc gv_fetchmethod_autoload + +Returns the glob which contains the subroutine to call to invoke the method +on the C. In fact in the presence of autoloading this may be the +glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is +already setup. + +The third parameter of C determines whether +AUTOLOAD lookup is performed if the given method is not present: non-zero +means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD. +Calling C is equivalent to calling C +with a non-zero C parameter. + +These functions grant C<"SUPER"> token as a prefix of the method name. Note +that if you want to keep the returned glob for a long time, you need to +check for it being "AUTOLOAD", since at the later time the call may load a +different subroutine due to $AUTOLOAD changing its value. Use the glob +created via a side effect to do this. + +These functions have the same side-effects and as C with +C. C should be writable if contains C<':'> or C<' +''>. The warning against passing the GV returned by C to +C apply equally to these functions. + +=cut +*/ + GV * -gv_fetchmethod_autoload(HV *stash, char *name, I32 autoload) +Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload) { dTHR; - register char *nend; - char *nsplit = 0; + register const char *nend; + const char *nsplit = 0; GV* gv; for (nend = name; *nend; nend++) { @@ -292,16 +354,16 @@ gv_fetchmethod_autoload(HV *stash, char *name, I32 autoload) nsplit = ++nend; } if (nsplit) { - char *origname = name; + const char *origname = name; name = nsplit + 1; if (*nsplit == ':') --nsplit; if ((nsplit - origname) == 5 && strnEQ(origname, "SUPER", 5)) { /* ->SUPER::method should really be looked up in original stash */ - SV *tmpstr = sv_2mortal(newSVpvf("%s::SUPER", - HvNAME(PL_curcop->cop_stash))); + SV *tmpstr = sv_2mortal(Perl_newSVpvf(aTHX_ "%s::SUPER", + CopSTASHPV(PL_curcop))); stash = gv_stashpvn(SvPVX(tmpstr), SvCUR(tmpstr), TRUE); - DEBUG_o( deb("Treating %s as %s::%s\n", + DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n", origname, HvNAME(stash), name) ); } else @@ -339,8 +401,9 @@ gv_fetchmethod_autoload(HV *stash, char *name, I32 autoload) } GV* -gv_autoload4(HV *stash, char *name, STRLEN len, I32 method) +Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method) { + dTHR; static char autoload[] = "AUTOLOAD"; static STRLEN autolen = 8; GV* gv; @@ -358,8 +421,9 @@ gv_autoload4(HV *stash, char *name, STRLEN len, I32 method) /* * Inheriting AUTOLOAD for non-methods works ... for now. */ - if (PL_dowarn && !method && (GvCVGEN(gv) || GvSTASH(gv) != stash)) - warn( + if (ckWARN(WARN_DEPRECATED) && !method && + (GvCVGEN(gv) || GvSTASH(gv) != stash)) + Perl_warner(aTHX_ WARN_DEPRECATED, "Use of inherited AUTOLOAD for non-method %s::%.*s() is deprecated", HvNAME(stash), (int)len, name); @@ -381,14 +445,25 @@ gv_autoload4(HV *stash, char *name, STRLEN len, I32 method) return gv; } +/* +=for apidoc gv_stashpv + +Returns a pointer to the stash for a specified package. C should +be a valid UTF-8 string. If C is set then the package will be +created if it does not already exist. If C is not set and the +package does not exist then NULL is returned. + +=cut +*/ + HV* -gv_stashpv(char *name, I32 create) +Perl_gv_stashpv(pTHX_ const char *name, I32 create) { return gv_stashpvn(name, strlen(name), create); } HV* -gv_stashpvn(char *name, U32 namelen, I32 create) +Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 create) { char smallbuf[256]; char *tmpbuf; @@ -416,8 +491,17 @@ gv_stashpvn(char *name, U32 namelen, I32 create) return stash; } +/* +=for apidoc gv_stashsv + +Returns a pointer to the stash for a specified package, which must be a +valid UTF-8 string. See C. + +=cut +*/ + HV* -gv_stashsv(SV *sv, I32 create) +Perl_gv_stashsv(pTHX_ SV *sv, I32 create) { register char *ptr; STRLEN len; @@ -427,14 +511,14 @@ gv_stashsv(SV *sv, I32 create) GV * -gv_fetchpv(char *nambeg, I32 add, I32 sv_type) +Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type) { dTHR; - register char *name = nambeg; + register const char *name = nambeg; register GV *gv = 0; GV**gvp; I32 len; - register char *namend; + register const char *namend; HV *stash = 0; U32 add_gvflags = 0; @@ -442,8 +526,8 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) name++; for (namend = name; *namend; namend++) { - if ((*namend == '\'' && namend[1]) || - (*namend == ':' && namend[1] == ':')) + if ((*namend == ':' && namend[1] == ':') + || (*namend == '\'' && namend[1])) { if (!stash) stash = PL_defstash; @@ -498,7 +582,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) /* No stash in name, so see how we can default */ if (!stash) { - if (isIDFIRST(*name)) { + if (isIDFIRST_lazy(name)) { bool global = FALSE; if (isUPPER(*name)) { @@ -538,22 +622,22 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) { stash = 0; } - else if (sv_type == SVt_PV && !GvIMPORTED_SV(*gvp) || - sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp) || - sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp) ) + else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) || + (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) || + (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) ) { - warn("Variable \"%c%s\" is not imported", + Perl_warn(aTHX_ "Variable \"%c%s\" is not imported", sv_type == SVt_PVAV ? '@' : sv_type == SVt_PVHV ? '%' : '$', name); if (GvCVu(*gvp)) - warn("(Did you mean &%s instead?)\n", name); + Perl_warn(aTHX_ "\t(Did you mean &%s instead?)\n", name); stash = 0; } } } else - stash = PL_curcop->cop_stash; + stash = CopSTASH(PL_curcop); } else stash = PL_defstash; @@ -562,26 +646,15 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) /* By this point we should have a stash and a name */ if (!stash) { - if (!add) - return Nullgv; - if (add & ~GV_ADDMULTI) { - char sv_type_char = ((sv_type == SVt_PV) ? '$' - : (sv_type == SVt_PVAV) ? '@' - : (sv_type == SVt_PVHV) ? '%' - : 0); - if (sv_type_char) - warn("Global symbol \"%c%s\" requires explicit package name", - sv_type_char, name); - else - warn("Global symbol \"%s\" requires explicit package name", - name); + if (add) { + qerror(Perl_mess(aTHX_ + "Global symbol \"%s%s\" requires explicit package name", + (sv_type == SVt_PV ? "$" + : sv_type == SVt_PVAV ? "@" + : sv_type == SVt_PVHV ? "%" + : ""), name)); } - ++PL_error_count; - stash = PL_curstash ? PL_curstash : PL_defstash; /* avoid core dumps */ - add_gvflags = ((sv_type == SVt_PV) ? GVf_IMPORTED_SV - : (sv_type == SVt_PVAV) ? GVf_IMPORTED_AV - : (sv_type == SVt_PVHV) ? GVf_IMPORTED_HV - : 0); + return Nullgv; } if (!SvREFCNT(stash)) /* symbol table under destruction */ @@ -603,12 +676,15 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) /* Adding a new symbol */ - if (add & GV_ADDWARN) - warn("Had to create %s unexpectedly", nambeg); + if (add & GV_ADDWARN && ckWARN_d(WARN_INTERNAL)) + Perl_warner(aTHX_ WARN_INTERNAL, "Had to create %s unexpectedly", nambeg); gv_init(gv, stash, name, len, add & GV_ADDMULTI); gv_init_sv(gv, sv_type); GvFLAGS(gv) |= add_gvflags; + if (isLEXWARN_on && isALPHA(name[0]) && ! ckWARN(WARN_ONCE)) + GvMULTI_on(gv) ; + /* set up magic where warranted */ switch (*name) { case 'A': @@ -630,20 +706,19 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) && AvFILLp(av) == -1) { char *pname; - av_push(av, newSVpv(pname = "NDBM_File",0)); + av_push(av, newSVpvn(pname = "NDBM_File",9)); gv_stashpvn(pname, 9, TRUE); - av_push(av, newSVpv(pname = "DB_File",0)); + av_push(av, newSVpvn(pname = "DB_File",7)); gv_stashpvn(pname, 7, TRUE); - av_push(av, newSVpv(pname = "GDBM_File",0)); + av_push(av, newSVpvn(pname = "GDBM_File",9)); gv_stashpvn(pname, 9, TRUE); - av_push(av, newSVpv(pname = "SDBM_File",0)); + av_push(av, newSVpvn(pname = "SDBM_File",9)); gv_stashpvn(pname, 9, TRUE); - av_push(av, newSVpv(pname = "ODBM_File",0)); + av_push(av, newSVpvn(pname = "ODBM_File",9)); gv_stashpvn(pname, 9, TRUE); } } break; -#ifdef OVERLOAD case 'O': if (strEQ(name, "OVERLOAD")) { HV* hv = GvHVn(gv); @@ -651,44 +726,48 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) hv_magic(hv, gv, 'A'); } break; -#endif /* OVERLOAD */ case 'S': if (strEQ(name, "SIG")) { HV *hv; I32 i; - PL_siggv = gv; - GvMULTI_on(PL_siggv); - hv = GvHVn(PL_siggv); - hv_magic(hv, PL_siggv, 'S'); - for(i=1;sig_name[i];i++) { + if (!PL_psig_ptr) { + int sig_num[] = { SIG_NUM }; + New(73, PL_psig_ptr, sizeof(sig_num)/sizeof(*sig_num), SV*); + New(73, PL_psig_name, sizeof(sig_num)/sizeof(*sig_num), SV*); + } + GvMULTI_on(gv); + hv = GvHVn(gv); + hv_magic(hv, gv, 'S'); + for (i = 1; PL_sig_name[i]; i++) { SV ** init; - init=hv_fetch(hv,sig_name[i],strlen(sig_name[i]),1); - if(init) - sv_setsv(*init,&PL_sv_undef); - psig_ptr[i] = 0; - psig_name[i] = 0; + init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1); + if (init) + sv_setsv(*init, &PL_sv_undef); + PL_psig_ptr[i] = 0; + PL_psig_name[i] = 0; } } break; + case 'V': + if (strEQ(name, "VERSION")) + GvMULTI_on(gv); + break; case '&': if (len > 1) break; - PL_ampergv = gv; PL_sawampersand = TRUE; goto ro_magicalize; case '`': if (len > 1) break; - PL_leftgv = gv; PL_sawampersand = TRUE; goto ro_magicalize; case '\'': if (len > 1) break; - PL_rightgv = gv; PL_sawampersand = TRUE; goto ro_magicalize; @@ -702,7 +781,7 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) if (len > 1) break; #ifdef COMPLEX_STATUS - sv_upgrade(GvSV(gv), SVt_PVLV); + (void)SvUPGRADE(GvSV(gv), SVt_PVLV); #endif goto magicalize; @@ -711,27 +790,34 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) break; if (sv_type > SVt_PV && PL_curcop != &PL_compiling) { HV* stash = gv_stashpvn("Errno",5,FALSE); - if(!stash || !(gv_fetchmethod(stash, "TIEHASH"))) { + if (!stash || !(gv_fetchmethod(stash, "TIEHASH"))) { dSP; PUTBACK; - perl_require_pv("Errno.pm"); + require_pv("Errno.pm"); SPAGAIN; stash = gv_stashpvn("Errno",5,FALSE); if (!stash || !(gv_fetchmethod(stash, "TIEHASH"))) - croak("Can't use %%! because Errno.pm is not available"); + Perl_croak(aTHX_ "Can't use %%! because Errno.pm is not available"); } } goto magicalize; + case '-': + if (len > 1) + break; + else { + AV* av = GvAVn(gv); + sv_magic((SV*)av, Nullsv, 'D', Nullch, 0); + } + goto magicalize; case '#': case '*': - if (PL_dowarn && len == 1 && sv_type == SVt_PV) - warn("Use of $%s is deprecated", name); + if (ckWARN(WARN_DEPRECATED) && len == 1 && sv_type == SVt_PV) + Perl_warner(aTHX_ WARN_DEPRECATED, "Use of $%s is deprecated", name); /* FALL THROUGH */ case '[': case '^': case '~': case '=': - case '-': case '%': case '.': case '(': @@ -742,22 +828,37 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) case '\\': case '/': case '|': - case '\001': - case '\003': - case '\004': - case '\005': - case '\006': - case '\010': - case '\011': /* NOT \t in EBCDIC */ - case '\017': - case '\020': - case '\024': - case '\027': + case '\001': /* $^A */ + case '\003': /* $^C */ + case '\004': /* $^D */ + case '\005': /* $^E */ + case '\006': /* $^F */ + case '\010': /* $^H */ + case '\011': /* $^I, NOT \t in EBCDIC */ + case '\017': /* $^O */ + case '\020': /* $^P */ + case '\024': /* $^T */ if (len > 1) break; goto magicalize; + case '\023': /* $^S */ + if (len > 1) + break; + goto ro_magicalize; + case '\027': /* $^W & $^WARNING_BITS */ + if (len > 1 && strNE(name, "\027ARNING_BITS") + && strNE(name, "\027IDE_SYSTEM_CALLS")) + break; + goto magicalize; case '+': + if (len > 1) + break; + else { + AV* av = GvAVn(gv); + sv_magic((SV*)av, (SV*)av, 'D', Nullch, 0); + } + /* FALL THROUGH */ case '1': case '2': case '3': @@ -767,14 +868,13 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) case '7': case '8': case '9': - case '\023': ro_magicalize: SvREADONLY_on(GvSV(gv)); magicalize: sv_magic(GvSV(gv), (SV*)gv, 0, name, len); break; - case '\014': + case '\014': /* $^L */ if (len > 1) break; sv_setpv(GvSV(gv),"\f"); @@ -788,22 +888,30 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) case ']': if (len == 1) { SV *sv = GvSV(gv); - sv_upgrade(sv, SVt_PVNV); - sv_setpv(sv, PL_patchlevel); - (void)sv_2nv(sv); + (void)SvUPGRADE(sv, SVt_PVNV); + SvNVX(sv) = SvNVX(PL_patchlevel); + SvNOK_on(sv); + (void)SvPV_nolen(sv); SvREADONLY_on(sv); } break; + case '\026': /* $^V */ + if (len == 1) { + SV *sv = GvSV(gv); + GvSV(gv) = SvREFCNT_inc(PL_patchlevel); + SvREFCNT_dec(sv); + } + break; } return gv; } void -gv_fullname3(SV *sv, GV *gv, char *prefix) +Perl_gv_fullname3(pTHX_ SV *sv, GV *gv, const char *prefix) { HV *hv = GvSTASH(gv); if (!hv) { - SvOK_off(sv); + (void)SvOK_off(sv); return; } sv_setpv(sv, prefix ? prefix : ""); @@ -813,7 +921,7 @@ gv_fullname3(SV *sv, GV *gv, char *prefix) } void -gv_efullname3(SV *sv, GV *gv, char *prefix) +Perl_gv_efullname3(pTHX_ SV *sv, GV *gv, const char *prefix) { GV *egv = GvEGV(gv); if (!egv) @@ -823,20 +931,20 @@ gv_efullname3(SV *sv, GV *gv, char *prefix) /* XXX compatibility with versions <= 5.003. */ void -gv_fullname(SV *sv, GV *gv) +Perl_gv_fullname(pTHX_ SV *sv, GV *gv) { gv_fullname3(sv, gv, sv == (SV*)gv ? "*" : ""); } /* XXX compatibility with versions <= 5.003. */ void -gv_efullname(SV *sv, GV *gv) +Perl_gv_efullname(pTHX_ SV *sv, GV *gv) { gv_efullname3(sv, gv, sv == (SV*)gv ? "*" : ""); } IO * -newIO(void) +Perl_newIO(pTHX) { dTHR; IO *io; @@ -855,14 +963,13 @@ newIO(void) } void -gv_check(HV *stash) +Perl_gv_check(pTHX_ HV *stash) { dTHR; register HE *entry; register I32 i; register GV *gv; HV *hv; - GV *filegv; if (!HvARRAY(stash)) return; @@ -871,19 +978,31 @@ gv_check(HV *stash) if (HeKEY(entry)[HeKLEN(entry)-1] == ':' && (gv = (GV*)HeVAL(entry)) && (hv = GvHV(gv)) && HvNAME(hv)) { - if (hv != PL_defstash) + if (hv != PL_defstash && hv != stash) gv_check(hv); /* nested package */ } else if (isALPHA(*HeKEY(entry))) { + char *file; gv = (GV*)HeVAL(entry); if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv)) continue; - PL_curcop->cop_line = GvLINE(gv); - filegv = GvFILEGV(gv); - PL_curcop->cop_filegv = filegv; - if (filegv && GvMULTI(filegv)) /* Filename began with slash */ + file = GvFILE(gv); + /* performance hack: if filename is absolute and it's a standard + * module, don't bother warning */ + if (file + && PERL_FILE_IS_ABSOLUTE(file) + && (instr(file, "/lib/") || instr(file, ".pm"))) + { continue; - warn("Name \"%s::%s\" used only once: possible typo", + } + CopLINE_set(PL_curcop, GvLINE(gv)); +#ifdef USE_ITHREADS + CopFILE(PL_curcop) = file; /* set for warning */ +#else + CopFILEGV(PL_curcop) = gv_fetchfile(file); +#endif + Perl_warner(aTHX_ WARN_ONCE, + "Name \"%s::%s\" used only once: possible typo", HvNAME(stash), GvNAME(gv)); } } @@ -891,17 +1010,19 @@ gv_check(HV *stash) } GV * -newGVgen(char *pack) +Perl_newGVgen(pTHX_ char *pack) { - return gv_fetchpv(form("%s::_GEN_%ld", pack, (long)PL_gensym++), + return gv_fetchpv(Perl_form(aTHX_ "%s::_GEN_%ld", pack, (long)PL_gensym++), TRUE, SVt_PVGV); } /* hopefully this is only called on local symbol table entries */ GP* -gp_ref(GP *gp) +Perl_gp_ref(pTHX_ GP *gp) { + if (!gp) + return (GP*)NULL; gp->gp_refcnt++; if (gp->gp_cv) { if (gp->gp_cvgen) { @@ -919,15 +1040,17 @@ gp_ref(GP *gp) } void -gp_free(GV *gv) +Perl_gp_free(pTHX_ GV *gv) { + dTHR; GP* gp; - CV* cv; if (!gv || !(gp = GvGP(gv))) return; if (gp->gp_refcnt == 0) { - warn("Attempt to free unreferenced glob pointers"); + if (ckWARN_d(WARN_INTERNAL)) + Perl_warner(aTHX_ WARN_INTERNAL, + "Attempt to free unreferenced glob pointers"); return; } if (gp->gp_cv) { @@ -975,21 +1098,22 @@ register GV *gv; } #endif /* Microport 2.4 hack */ -#ifdef OVERLOAD /* Updates and caches the CV's */ bool -Gv_AMupdate(HV *stash) +Perl_Gv_AMupdate(pTHX_ HV *stash) { - dTHR; - GV** gvp; - HV* hv; + dTHR; GV* gv; CV* cv; MAGIC* mg=mg_find((SV*)stash,'c'); AMT *amtp = (mg) ? (AMT*)mg->mg_ptr: (AMT *) NULL; AMT amt; STRLEN n_a; +#ifdef OVERLOAD_VIA_HASH + GV** gvp; + HV* hv; +#endif if (mg && amtp->was_ok_am == PL_amagic_generation && amtp->was_ok_sub == PL_sub_generation) @@ -1004,7 +1128,7 @@ Gv_AMupdate(HV *stash) } sv_unmagic((SV*)stash, 'c'); - DEBUG_o( deb("Recalcing overload magic in package %s\n",HvNAME(stash)) ); + DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME(stash)) ); amt.was_ok_am = PL_amagic_generation; amt.was_ok_sub = PL_sub_generation; @@ -1020,16 +1144,16 @@ Gv_AMupdate(HV *stash) SV* sv; SV** svp; - /* Work with "fallback" key, which we assume to be first in AMG_names */ + /* Work with "fallback" key, which we assume to be first in PL_AMG_names */ - if (( cp = (char *)AMG_names[0] ) && + if (( cp = (char *)PL_AMG_names[0] ) && (svp = (SV**)hv_fetch(hv,cp,strlen(cp),FALSE)) && (sv = *svp)) { if (SvTRUE(sv)) amt.fallback=AMGfallYES; else if (SvOK(sv)) amt.fallback=AMGfallNEVER; } for (i = 1; i < NofAMmeth; i++) { cv = 0; - cp = (char *)AMG_names[i]; + cp = (char *)PL_AMG_names[i]; svp = (SV**)hv_fetch(hv, cp, strlen(cp), FALSE); if (svp && ((sv = *svp) != &PL_sv_undef)) { @@ -1047,19 +1171,19 @@ Gv_AMupdate(HV *stash) /* FALL THROUGH */ case SVt_PVHV: case SVt_PVAV: - croak("Not a subroutine reference in overload table"); + Perl_croak(aTHX_ "Not a subroutine reference in overload table"); return FALSE; case SVt_PVCV: cv = (CV*)sv; break; case SVt_PVGV: if (!(cv = GvCVu((GV*)sv))) - cv = sv_2cv(sv, &stash, &gv, TRUE); + cv = sv_2cv(sv, &stash, &gv, FALSE); break; } if (cv) filled=1; else { - croak("Method for operation %s not found in package %.256s during blessing\n", + Perl_croak(aTHX_ "Method for operation %s not found in package %.256s during blessing\n", cp,HvNAME(stash)); return FALSE; } @@ -1070,23 +1194,26 @@ Gv_AMupdate(HV *stash) int i; const char *cp; SV* sv = NULL; - SV** svp; - /* Work with "fallback" key, which we assume to be first in AMG_names */ + /* Work with "fallback" key, which we assume to be first in PL_AMG_names */ - if ( cp = AMG_names[0] ) { + if ((cp = PL_AMG_names[0])) { /* Try to find via inheritance. */ gv = gv_fetchmeth(stash, "()", 2, -1); /* A cookie: "()". */ - if (gv) sv = GvSV(gv); + if (gv) + sv = GvSV(gv); - if (!gv) goto no_table; - else if (SvTRUE(sv)) amt.fallback=AMGfallYES; - else if (SvOK(sv)) amt.fallback=AMGfallNEVER; + if (!gv) + goto no_table; + else if (SvTRUE(sv)) + amt.fallback=AMGfallYES; + else if (SvOK(sv)) + amt.fallback=AMGfallNEVER; } for (i = 1; i < NofAMmeth; i++) { - SV *cookie = sv_2mortal(newSVpvf("(%s", cp = AMG_names[i])); - DEBUG_o( deb("Checking overloading of `%s' in package `%.256s'\n", + SV *cookie = sv_2mortal(Perl_newSVpvf(aTHX_ "(%s", cp = PL_AMG_names[i])); + DEBUG_o( Perl_deb(aTHX_ "Checking overloading of `%s' in package `%.256s'\n", cp, HvNAME(stash)) ); /* don't fill the cache while looking up! */ gv = gv_fetchmeth(stash, SvPVX(cookie), SvCUR(cookie), -1); @@ -1097,7 +1224,7 @@ Gv_AMupdate(HV *stash) /* GvSV contains the name of the method. */ GV *ngv; - DEBUG_o( deb("Resolving method `%.256s' for overloaded `%s' in package `%.256s'\n", + DEBUG_o( Perl_deb(aTHX_ "Resolving method `%.256s' for overloaded `%s' in package `%.256s'\n", SvPV(GvSV(gv), n_a), cp, HvNAME(stash)) ); if (!SvPOK(GvSV(gv)) || !(ngv = gv_fetchmethod_autoload(stash, SvPVX(GvSV(gv)), @@ -1105,17 +1232,17 @@ Gv_AMupdate(HV *stash) { /* Can be an import stub (created by `can'). */ if (GvCVGEN(gv)) { - croak("Stub found while resolving method `%.256s' overloading `%s' in package `%.256s'", + Perl_croak(aTHX_ "Stub found while resolving method `%.256s' overloading `%s' in package `%.256s'", (SvPOK(GvSV(gv)) ? SvPVX(GvSV(gv)) : "???" ), cp, HvNAME(stash)); } else - croak("Cannot resolve method `%.256s' overloading `%s' in package `%.256s'", + Perl_croak(aTHX_ "Can't resolve method `%.256s' overloading `%s' in package `%.256s'", (SvPOK(GvSV(gv)) ? SvPVX(GvSV(gv)) : "???" ), cp, HvNAME(stash)); } cv = GvCV(gv = ngv); } - DEBUG_o( deb("Overloading `%s' in package `%.256s' via `%.256s::%.256s' \n", + DEBUG_o( Perl_deb(aTHX_ "Overloading `%s' in package `%.256s' via `%.256s::%.256s' \n", cp, HvNAME(stash), HvNAME(GvSTASH(CvGV(cv))), GvNAME(CvGV(cv))) ); filled = 1; @@ -1137,7 +1264,7 @@ Gv_AMupdate(HV *stash) } SV* -amagic_call(SV *left, SV *right, int method, int flags) +Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) { dTHR; MAGIC *mg; @@ -1237,12 +1364,21 @@ amagic_call(SV *left, SV *right, int method, int flags) } break; case neg_amg: - if (cv = cvp[off=subtr_amg]) { + if ((cv = cvp[off=subtr_amg])) { right = left; left = sv_2mortal(newSViv(0)); lr = 1; } break; + case iter_amg: /* XXXX Eventually should do to_gv. */ + case to_sv_amg: + case to_av_amg: + case to_hv_amg: + case to_gv_amg: + case to_cv_amg: + /* FAIL safe */ + return NULL; /* Delegate operation to standard mechanisms. */ + break; default: goto not_found; } @@ -1296,9 +1432,9 @@ amagic_call(SV *left, SV *right, int method, int flags) } else { SV *msg; if (off==-1) off=method; - msg = sv_2mortal(newSVpvf( + msg = sv_2mortal(Perl_newSVpvf(aTHX_ "Operation `%s': no method found,%sargument %s%s%s%s", - AMG_names[method + assignshift], + PL_AMG_names[method + assignshift], (flags & AMGf_unary ? " " : "\n\tleft "), SvAMAGIC(left)? "in overloaded package ": @@ -1315,9 +1451,9 @@ amagic_call(SV *left, SV *right, int method, int flags) HvNAME(SvSTASH(SvRV(right))): "")); if (amtp && amtp->fallback >= AMGfallYES) { - DEBUG_o( deb("%s", SvPVX(msg)) ); + DEBUG_o( Perl_deb(aTHX_ "%s", SvPVX(msg)) ); } else { - croak("%_", msg); + Perl_croak(aTHX_ "%"SVf, msg); } return NULL; } @@ -1325,13 +1461,13 @@ amagic_call(SV *left, SV *right, int method, int flags) } } if (!notfound) { - DEBUG_o( deb( + DEBUG_o( Perl_deb(aTHX_ "Overloaded operator `%s'%s%s%s:\n\tmethod%s found%s in package %s%s\n", - AMG_names[off], + PL_AMG_names[off], method+assignshift==off? "" : " (initially `", method+assignshift==off? "" : - AMG_names[method+assignshift], + PL_AMG_names[method+assignshift], method+assignshift==off? "" : "')", flags & AMGf_unary? "" : lr==1 ? " for right argument": " for left argument", @@ -1384,24 +1520,25 @@ amagic_call(SV *left, SV *right, int method, int flags) if (PERLDB_SUB && PL_curstash != PL_debstash) PL_op->op_private |= OPpENTERSUB_DB; PUTBACK; - pp_pushmark(ARGS); + pp_pushmark(); EXTEND(SP, notfound + 5); PUSHs(lr>0? right: left); PUSHs(lr>0? left: right); PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no )); if (notfound) { - PUSHs( sv_2mortal(newSVpv((char *)AMG_names[method + assignshift],0)) ); + PUSHs( sv_2mortal(newSVpv((char *)PL_AMG_names[method + assignshift],0))); } PUSHs((SV*)cv); PUTBACK; - if (PL_op = pp_entersub(ARGS)) - CALLRUNOPS(); + if ((PL_op = Perl_pp_entersub(aTHX))) + CALLRUNOPS(aTHX); LEAVE; SPAGAIN; res=POPs; + PUTBACK; POPSTACK; CATCH_SET(oldcatch); @@ -1430,12 +1567,12 @@ amagic_call(SV *left, SV *right, int method, int flags) case dec_amg: SvSetSV(left,res); return left; case not_amg: - ans=!SvOK(res); break; + ans=!SvTRUE(res); break; } return boolSV(ans); } else if (method==copy_amg) { if (!SvROK(res)) { - croak("Copy method did not return a reference"); + Perl_croak(aTHX_ "Copy method did not return a reference"); } return SvREFCNT_inc(SvRV(res)); } else { @@ -1443,5 +1580,3 @@ amagic_call(SV *left, SV *right, int method, int flags) } } } -#endif /* OVERLOAD */ - diff --git a/contrib/perl5/gv.h b/contrib/perl5/gv.h index 0226513b5eeb..d2234a69b47b 100644 --- a/contrib/perl5/gv.h +++ b/contrib/perl5/gv.h @@ -1,6 +1,6 @@ /* gv.h * - * Copyright (c) 1991-1999, Larry Wall + * Copyright (c) 1991-2000, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -17,9 +17,9 @@ struct gp { GV * gp_egv; /* effective gv, if *glob */ CV * gp_cv; /* subroutine value */ U32 gp_cvgen; /* generational validity of cached gv_cv */ - I32 gp_lastexpr; /* used by nothing_in_common() */ + U32 gp_flags; /* XXX unused */ line_t gp_line; /* line first declared at (for -w) */ - GV * gp_filegv; /* file first declared in (for -w) */ + char * gp_file; /* file first declared in (for -w) */ }; #if defined(CRIPPLED_CC) && (defined(iAPX286) || defined(M_I286) || defined(I80286)) @@ -34,6 +34,14 @@ struct gp { #define GvSTASH(gv) (GvXPVGV(gv)->xgv_stash) #define GvFLAGS(gv) (GvXPVGV(gv)->xgv_flags) +/* +=for apidoc Am|SV*|GvSV|GV* gv + +Return the SV from the GV. + +=cut +*/ + #define GvSV(gv) (GvGP(gv)->gp_sv) #define GvREFCNT(gv) (GvGP(gv)->gp_refcnt) #define GvIO(gv) ((gv) && SvTYPE((SV*)gv) == SVt_PVGV ? GvIOp(gv) : 0) @@ -67,10 +75,11 @@ HV *GvHVn(); #define GvCVGEN(gv) (GvGP(gv)->gp_cvgen) #define GvCVu(gv) (GvGP(gv)->gp_cvgen ? Nullcv : GvGP(gv)->gp_cv) -#define GvLASTEXPR(gv) (GvGP(gv)->gp_lastexpr) +#define GvGPFLAGS(gv) (GvGP(gv)->gp_flags) #define GvLINE(gv) (GvGP(gv)->gp_line) -#define GvFILEGV(gv) (GvGP(gv)->gp_filegv) +#define GvFILE(gv) (GvGP(gv)->gp_file) +#define GvFILEGV(gv) (gv_fetchfile(GvFILE(gv))) #define GvEGV(gv) (GvGP(gv)->gp_egv) #define GvENAME(gv) GvNAME(GvEGV(gv) ? GvEGV(gv) : gv) @@ -79,6 +88,7 @@ HV *GvHVn(); #define GVf_INTRO 0x01 #define GVf_MULTI 0x02 #define GVf_ASSUMECV 0x04 +#define GVf_IN_PAD 0x08 #define GVf_IMPORTED 0xF0 #define GVf_IMPORTED_SV 0x10 #define GVf_IMPORTED_AV 0x20 @@ -117,6 +127,10 @@ HV *GvHVn(); #define GvIMPORTED_CV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_CV) #define GvIMPORTED_CV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_CV) +#define GvIN_PAD(gv) (GvFLAGS(gv) & GVf_IN_PAD) +#define GvIN_PAD_on(gv) (GvFLAGS(gv) |= GVf_IN_PAD) +#define GvIN_PAD_off(gv) (GvFLAGS(gv) &= ~GVf_IN_PAD) + #define Nullgv Null(GV*) #define DM_UID 0x003 @@ -128,7 +142,7 @@ HV *GvHVn(); #define DM_DELAY 0x100 /* - * symbol creation flags, for use in gv_fetchpv() and perl_get_*v() + * symbol creation flags, for use in gv_fetchpv() and get_*v() */ #define GV_ADD 0x01 /* add, if symbol not already there */ #define GV_ADDMULTI 0x02 /* add, pretending it has been added already */ diff --git a/contrib/perl5/handy.h b/contrib/perl5/handy.h index 7744c31e038f..2c5d706de48f 100644 --- a/contrib/perl5/handy.h +++ b/contrib/perl5/handy.h @@ -1,6 +1,6 @@ /* handy.h * - * Copyright (c) 1991-1999, Larry Wall + * Copyright (c) 1991-2000, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -19,6 +19,17 @@ #endif #define Null(type) ((type)NULL) + +/* +=for apidoc AmU||Nullch +Null character pointer. + +=for apidoc AmU||Nullsv +Null SV pointer. + +=cut +*/ + #define Nullch Null(char*) #define Nullfp Null(PerlIO*) #define Nullsv Null(SV*) @@ -37,24 +48,24 @@ just figure out all the headers such a test needs. Andy Dougherty August 1996 */ -/* bool is built-in for g++-2.6.3, which might be used for an extension. - If the extension includes <_G_config.h> before this file then - _G_HAVE_BOOL will be properly set. If, however, the extension includes - this file first, then you will have to manually set -DHAS_BOOL in - your command line to avoid a conflict. +/* bool is built-in for g++-2.6.3 and later, which might be used + for extensions. <_G_config.h> defines _G_HAVE_BOOL, but we can't + be sure _G_config.h will be included before this file. _G_config.h + also defines _G_HAVE_BOOL for both gcc and g++, but only g++ + actually has bool. Hence, _G_HAVE_BOOL is pretty useless for us. + g++ can be identified by __GNUG__. + Andy Dougherty February 2000 */ -#ifdef _G_HAVE_BOOL -# if _G_HAVE_BOOL +#ifdef __GNUG__ /* GNU g++ has bool built-in */ # ifndef HAS_BOOL -# define HAS_BOOL 1 +# define HAS_BOOL 1 # endif -# endif #endif /* The NeXT dynamic loader headers will not build with the bool macro So declare them now to clear confusion. */ -#ifdef NeXT +#if defined(NeXT) || defined(__NeXT__) # undef FALSE # undef TRUE typedef enum bool { FALSE = 0, TRUE = 1 } bool; @@ -62,7 +73,7 @@ # ifndef HAS_BOOL # define HAS_BOOL 1 # endif /* !HAS_BOOL */ -#endif /* NeXT */ +#endif /* NeXT || __NeXT__ */ #ifndef HAS_BOOL # if defined(UTS) || defined(VMS) @@ -70,6 +81,7 @@ # else # define bool char # endif +# define HAS_BOOL 1 #endif /* XXX A note on the perl source internal type system. The @@ -91,6 +103,7 @@ For dealing with issues that may arise from various 32/64-bit systems, we will ask Configure to check out + SHORTSIZE == sizeof(short) INTSIZE == sizeof(int) LONGSIZE == sizeof(long) @@ -98,49 +111,117 @@ PTRSIZE == sizeof(void *) DOUBLESIZE == sizeof(double) LONG_DOUBLESIZE == sizeof(long double) (if HAS_LONG_DOUBLE). - Most of these are currently unused, but they are mentioned here so - metaconfig will include the appropriate tests in Configure and - we can then start to consider how best to deal with long long - variables. - Andy Dougherty April 1998 + */ -typedef char I8; -typedef unsigned char U8; +typedef I8TYPE I8; +typedef U8TYPE U8; +typedef I16TYPE I16; +typedef U16TYPE U16; +typedef I32TYPE I32; +typedef U32TYPE U32; +#ifdef PERL_CORE +# ifdef HAS_QUAD +# if QUADKIND == QUAD_IS_INT64_T +# include +# ifdef I_INTTYPES /* e.g. Linux has int64_t without */ +# include +# endif +# endif +typedef I64TYPE I64; +typedef U64TYPE U64; +# endif +#endif /* PERL_CORE */ + +/* Mention I8SIZE, U8SIZE, I16SIZE, U16SIZE, I32SIZE, U32SIZE, + I64SIZE, and U64SIZE here so that metaconfig pulls them in. */ + +#if defined(UINT8_MAX) && defined(INT16_MAX) && defined(INT32_MAX) + +/* I8_MAX and I8_MIN constants are not defined, as I8 is an ambiguous type. + Please search CHAR_MAX in perl.h for further details. */ +#define U8_MAX UINT8_MAX +#define U8_MIN UINT8_MIN + +#define I16_MAX INT16_MAX +#define I16_MIN INT16_MIN +#define U16_MAX UINT16_MAX +#define U16_MIN UINT16_MIN + +#define I32_MAX INT32_MAX +#define I32_MIN INT32_MIN +#define U32_MAX UINT32_MAX +#define U32_MIN UINT32_MIN + +#else + /* I8_MAX and I8_MIN constants are not defined, as I8 is an ambiguous type. Please search CHAR_MAX in perl.h for further details. */ #define U8_MAX PERL_UCHAR_MAX #define U8_MIN PERL_UCHAR_MIN -typedef short I16; -typedef unsigned short U16; #define I16_MAX PERL_SHORT_MAX #define I16_MIN PERL_SHORT_MIN #define U16_MAX PERL_USHORT_MAX #define U16_MIN PERL_USHORT_MIN #if LONGSIZE > 4 - typedef int I32; - typedef unsigned int U32; # define I32_MAX PERL_INT_MAX # define I32_MIN PERL_INT_MIN # define U32_MAX PERL_UINT_MAX # define U32_MIN PERL_UINT_MIN #else - typedef long I32; - typedef unsigned long U32; # define I32_MAX PERL_LONG_MAX # define I32_MIN PERL_LONG_MIN # define U32_MAX PERL_ULONG_MAX # define U32_MIN PERL_ULONG_MIN #endif +#endif + #define BIT_DIGITS(N) (((N)*146)/485 + 1) /* log2(10) =~ 146/485 */ #define TYPE_DIGITS(T) BIT_DIGITS(sizeof(T) * 8) #define TYPE_CHARS(T) (TYPE_DIGITS(T) + 2) /* sign, NUL */ #define Ctl(ch) ((ch) & 037) +/* +=for apidoc Am|bool|strNE|char* s1|char* s2 +Test two strings to see if they are different. Returns true or +false. + +=for apidoc Am|bool|strEQ|char* s1|char* s2 +Test two strings to see if they are equal. Returns true or false. + +=for apidoc Am|bool|strLT|char* s1|char* s2 +Test two strings to see if the first, C, is less than the second, +C. Returns true or false. + +=for apidoc Am|bool|strLE|char* s1|char* s2 +Test two strings to see if the first, C, is less than or equal to the +second, C. Returns true or false. + +=for apidoc Am|bool|strGT|char* s1|char* s2 +Test two strings to see if the first, C, is greater than the second, +C. Returns true or false. + +=for apidoc Am|bool|strGE|char* s1|char* s2 +Test two strings to see if the first, C, is greater than or equal to +the second, C. Returns true or false. + +=for apidoc Am|bool|strnNE|char* s1|char* s2|STRLEN len +Test two strings to see if they are different. The C parameter +indicates the number of bytes to compare. Returns true or false. (A +wrapper for C). + +=for apidoc Am|bool|strnEQ|char* s1|char* s2|STRLEN len +Test two strings to see if they are equal. The C parameter indicates +the number of bytes to compare. Returns true or false. (A wrapper for +C). + +=cut +*/ + #define strNE(s1,s2) (strcmp(s1,s2)) #define strEQ(s1,s2) (!strcmp(s1,s2)) #define strLT(s1,s2) (strcmp(s1,s2) < 0) @@ -177,6 +258,39 @@ typedef unsigned short U16; # endif #endif +/* +=for apidoc Am|bool|isALNUM|char ch +Returns a boolean indicating whether the C C is an ascii alphanumeric +character or digit. + +=for apidoc Am|bool|isALPHA|char ch +Returns a boolean indicating whether the C C is an ascii alphabetic +character. + +=for apidoc Am|bool|isSPACE|char ch +Returns a boolean indicating whether the C C is whitespace. + +=for apidoc Am|bool|isDIGIT|char ch +Returns a boolean indicating whether the C C is an ascii +digit. + +=for apidoc Am|bool|isUPPER|char ch +Returns a boolean indicating whether the C C is an uppercase +character. + +=for apidoc Am|bool|isLOWER|char ch +Returns a boolean indicating whether the C C is a lowercase +character. + +=for apidoc Am|char|toUPPER|char ch +Converts the specified character to uppercase. + +=for apidoc Am|char|toLOWER|char ch +Converts the specified character to lowercase. + +=cut +*/ + #define isALNUM(c) (isALPHA(c) || isDIGIT(c) || (c) == '_') #define isIDFIRST(c) (isALPHA(c) || (c) == '_') #define isALPHA(c) (isUPPER(c) || isLOWER(c)) @@ -187,13 +301,25 @@ typedef unsigned short U16; /* In EBCDIC we do not do locales: therefore() isupper() is fine. */ # define isUPPER(c) isupper(c) # define isLOWER(c) islower(c) +# define isALNUMC(c) isalnum(c) +# define isASCII(c) isascii(c) +# define isCNTRL(c) iscntrl(c) +# define isGRAPH(c) isgraph(c) # define isPRINT(c) isprint(c) +# define isPUNCT(c) ispunct(c) +# define isXDIGIT(c) isxdigit(c) # define toUPPER(c) toupper(c) # define toLOWER(c) tolower(c) #else # define isUPPER(c) ((c) >= 'A' && (c) <= 'Z') # define isLOWER(c) ((c) >= 'a' && (c) <= 'z') +# define isALNUMC(c) (isALPHA(c) || isDIGIT(c)) +# define isASCII(c) ((c) <= 127) +# define isCNTRL(c) ((c) < ' ') +# define isGRAPH(c) (isALNUM(c) || isPUNCT(c)) # define isPRINT(c) (((c) > 32 && (c) < 127) || isSPACE(c)) +# define isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) +# define isXDIGIT(c) (isdigit(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) # define toUPPER(c) (isLOWER(c) ? (c) - ('a' - 'A') : (c)) # define toLOWER(c) (isUPPER(c) ? (c) + ('a' - 'A') : (c)) #endif @@ -201,8 +327,7 @@ typedef unsigned short U16; #ifdef USE_NEXT_CTYPE # define isALNUM_LC(c) \ - (NXIsAlpha((unsigned int)(c)) || NXIsDigit((unsigned int)(c)) || \ - (char)(c) == '_') + (NXIsAlNum((unsigned int)(c)) || (char)(c) == '_') # define isIDFIRST_LC(c) \ (NXIsAlpha((unsigned int)(c)) || (char)(c) == '_') # define isALPHA_LC(c) NXIsAlpha((unsigned int)(c)) @@ -210,45 +335,123 @@ typedef unsigned short U16; # define isDIGIT_LC(c) NXIsDigit((unsigned int)(c)) # define isUPPER_LC(c) NXIsUpper((unsigned int)(c)) # define isLOWER_LC(c) NXIsLower((unsigned int)(c)) +# define isALNUMC_LC(c) NXIsAlNum((unsigned int)(c)) +# define isCNTRL_LC(c) NXIsCntrl((unsigned int)(c)) +# define isGRAPH_LC(c) NXIsGraph((unsigned int)(c)) # define isPRINT_LC(c) NXIsPrint((unsigned int)(c)) +# define isPUNCT_LC(c) NXIsPunct((unsigned int)(c)) # define toUPPER_LC(c) NXToUpper((unsigned int)(c)) # define toLOWER_LC(c) NXToLower((unsigned int)(c)) #else /* !USE_NEXT_CTYPE */ + # if defined(CTYPE256) || (!defined(isascii) && !defined(HAS_ISASCII)) -# define isALNUM_LC(c) \ - (isalpha((unsigned char)(c)) || \ - isdigit((unsigned char)(c)) || (char)(c) == '_') +# define isALNUM_LC(c) (isalnum((unsigned char)(c)) || (char)(c) == '_') # define isIDFIRST_LC(c) (isalpha((unsigned char)(c)) || (char)(c) == '_') # define isALPHA_LC(c) isalpha((unsigned char)(c)) # define isSPACE_LC(c) isspace((unsigned char)(c)) # define isDIGIT_LC(c) isdigit((unsigned char)(c)) # define isUPPER_LC(c) isupper((unsigned char)(c)) # define isLOWER_LC(c) islower((unsigned char)(c)) +# define isALNUMC_LC(c) isalnum((unsigned char)(c)) +# define isCNTRL_LC(c) iscntrl((unsigned char)(c)) +# define isGRAPH_LC(c) isgraph((unsigned char)(c)) # define isPRINT_LC(c) isprint((unsigned char)(c)) +# define isPUNCT_LC(c) ispunct((unsigned char)(c)) # define toUPPER_LC(c) toupper((unsigned char)(c)) # define toLOWER_LC(c) tolower((unsigned char)(c)) # else -# define isALNUM_LC(c) \ - (isascii(c) && (isalpha(c) || isdigit(c) || (c) == '_')) +# define isALNUM_LC(c) (isascii(c) && (isalnum(c) || (c) == '_')) # define isIDFIRST_LC(c) (isascii(c) && (isalpha(c) || (c) == '_')) # define isALPHA_LC(c) (isascii(c) && isalpha(c)) # define isSPACE_LC(c) (isascii(c) && isspace(c)) # define isDIGIT_LC(c) (isascii(c) && isdigit(c)) # define isUPPER_LC(c) (isascii(c) && isupper(c)) # define isLOWER_LC(c) (isascii(c) && islower(c)) +# define isALNUMC_LC(c) (isascii(c) && isalnum(c)) +# define isCNTRL_LC(c) (isascii(c) && iscntrl(c)) +# define isGRAPH_LC(c) (isascii(c) && isgraph(c)) # define isPRINT_LC(c) (isascii(c) && isprint(c)) +# define isPUNCT_LC(c) (isascii(c) && ispunct(c)) # define toUPPER_LC(c) toupper(c) # define toLOWER_LC(c) tolower(c) # endif #endif /* USE_NEXT_CTYPE */ +#define isALNUM_uni(c) is_uni_alnum(c) +#define isIDFIRST_uni(c) is_uni_idfirst(c) +#define isALPHA_uni(c) is_uni_alpha(c) +#define isSPACE_uni(c) is_uni_space(c) +#define isDIGIT_uni(c) is_uni_digit(c) +#define isUPPER_uni(c) is_uni_upper(c) +#define isLOWER_uni(c) is_uni_lower(c) +#define isALNUMC_uni(c) is_uni_alnumc(c) +#define isASCII_uni(c) is_uni_ascii(c) +#define isCNTRL_uni(c) is_uni_cntrl(c) +#define isGRAPH_uni(c) is_uni_graph(c) +#define isPRINT_uni(c) is_uni_print(c) +#define isPUNCT_uni(c) is_uni_punct(c) +#define isXDIGIT_uni(c) is_uni_xdigit(c) +#define toUPPER_uni(c) to_uni_upper(c) +#define toTITLE_uni(c) to_uni_title(c) +#define toLOWER_uni(c) to_uni_lower(c) + +#define isALNUM_LC_uni(c) (c < 256 ? isALNUM_LC(c) : is_uni_alnum_lc(c)) +#define isIDFIRST_LC_uni(c) (c < 256 ? isIDFIRST_LC(c) : is_uni_idfirst_lc(c)) +#define isALPHA_LC_uni(c) (c < 256 ? isALPHA_LC(c) : is_uni_alpha_lc(c)) +#define isSPACE_LC_uni(c) (c < 256 ? isSPACE_LC(c) : is_uni_space_lc(c)) +#define isDIGIT_LC_uni(c) (c < 256 ? isDIGIT_LC(c) : is_uni_digit_lc(c)) +#define isUPPER_LC_uni(c) (c < 256 ? isUPPER_LC(c) : is_uni_upper_lc(c)) +#define isLOWER_LC_uni(c) (c < 256 ? isLOWER_LC(c) : is_uni_lower_lc(c)) +#define isALNUMC_LC_uni(c) (c < 256 ? isALNUMC_LC(c) : is_uni_alnumc_lc(c)) +#define isCNTRL_LC_uni(c) (c < 256 ? isCNTRL_LC(c) : is_uni_cntrl_lc(c)) +#define isGRAPH_LC_uni(c) (c < 256 ? isGRAPH_LC(c) : is_uni_graph_lc(c)) +#define isPRINT_LC_uni(c) (c < 256 ? isPRINT_LC(c) : is_uni_print_lc(c)) +#define isPUNCT_LC_uni(c) (c < 256 ? isPUNCT_LC(c) : is_uni_punct_lc(c)) +#define toUPPER_LC_uni(c) (c < 256 ? toUPPER_LC(c) : to_uni_upper_lc(c)) +#define toTITLE_LC_uni(c) (c < 256 ? toUPPER_LC(c) : to_uni_title_lc(c)) +#define toLOWER_LC_uni(c) (c < 256 ? toLOWER_LC(c) : to_uni_lower_lc(c)) + +#define isALNUM_utf8(p) is_utf8_alnum(p) +#define isIDFIRST_utf8(p) is_utf8_idfirst(p) +#define isALPHA_utf8(p) is_utf8_alpha(p) +#define isSPACE_utf8(p) is_utf8_space(p) +#define isDIGIT_utf8(p) is_utf8_digit(p) +#define isUPPER_utf8(p) is_utf8_upper(p) +#define isLOWER_utf8(p) is_utf8_lower(p) +#define isALNUMC_utf8(p) is_utf8_alnumc(p) +#define isASCII_utf8(p) is_utf8_ascii(p) +#define isCNTRL_utf8(p) is_utf8_cntrl(p) +#define isGRAPH_utf8(p) is_utf8_graph(p) +#define isPRINT_utf8(p) is_utf8_print(p) +#define isPUNCT_utf8(p) is_utf8_punct(p) +#define isXDIGIT_utf8(p) is_utf8_xdigit(p) +#define toUPPER_utf8(p) to_utf8_upper(p) +#define toTITLE_utf8(p) to_utf8_title(p) +#define toLOWER_utf8(p) to_utf8_lower(p) + +#define isALNUM_LC_utf8(p) isALNUM_LC_uni(utf8_to_uv(p, 0)) +#define isIDFIRST_LC_utf8(p) isIDFIRST_LC_uni(utf8_to_uv(p, 0)) +#define isALPHA_LC_utf8(p) isALPHA_LC_uni(utf8_to_uv(p, 0)) +#define isSPACE_LC_utf8(p) isSPACE_LC_uni(utf8_to_uv(p, 0)) +#define isDIGIT_LC_utf8(p) isDIGIT_LC_uni(utf8_to_uv(p, 0)) +#define isUPPER_LC_utf8(p) isUPPER_LC_uni(utf8_to_uv(p, 0)) +#define isLOWER_LC_utf8(p) isLOWER_LC_uni(utf8_to_uv(p, 0)) +#define isALNUMC_LC_utf8(p) isALNUMC_LC_uni(utf8_to_uv(p, 0)) +#define isCNTRL_LC_utf8(p) isCNTRL_LC_uni(utf8_to_uv(p, 0)) +#define isGRAPH_LC_utf8(p) isGRAPH_LC_uni(utf8_to_uv(p, 0)) +#define isPRINT_LC_utf8(p) isPRINT_LC_uni(utf8_to_uv(p, 0)) +#define isPUNCT_LC_utf8(p) isPUNCT_LC_uni(utf8_to_uv(p, 0)) +#define toUPPER_LC_utf8(p) toUPPER_LC_uni(utf8_to_uv(p, 0)) +#define toTITLE_LC_utf8(p) toTITLE_LC_uni(utf8_to_uv(p, 0)) +#define toLOWER_LC_utf8(p) toLOWER_LC_uni(utf8_to_uv(p, 0)) + #ifdef EBCDIC -EXT int ebcdic_control _((int)); +EXT int ebcdic_control (int); # define toCTRL(c) ebcdic_control(c) #else /* This conversion works both ways, strangely enough. */ @@ -264,10 +467,10 @@ typedef U16 line_t; #endif -/* This looks obsolete (IZ): - +/* XXX LEAKTEST doesn't really work in perl5. There are direct calls to safemalloc() in the source, so LEAKTEST won't pick them up. + (The main "offenders" are extensions.) Further, if you try LEAKTEST, you'll also end up calling Safefree, which might call safexfree() on some things that weren't malloced with safexmalloc. The correct "fix" to this, if anyone @@ -276,6 +479,56 @@ typedef U16 line_t; --Andy Dougherty August 1996 */ +/* +=for apidoc Am|SV*|NEWSV|int id|STRLEN len +Creates a new SV. A non-zero C parameter indicates the number of +bytes of preallocated string space the SV should have. An extra byte for a +tailing NUL is also reserved. (SvPOK is not set for the SV even if string +space is allocated.) The reference count for the new SV is set to 1. +C is an integer id between 0 and 1299 (used to identify leaks). + +=for apidoc Am|void|New|int id|void* ptr|int nitems|type +The XSUB-writer's interface to the C C function. + +=for apidoc Am|void|Newc|int id|void* ptr|int nitems|type|cast +The XSUB-writer's interface to the C C function, with +cast. + +=for apidoc Am|void|Newz|int id|void* ptr|int nitems|type +The XSUB-writer's interface to the C C function. The allocated +memory is zeroed with C. + +=for apidoc Am|void|Renew|void* ptr|int nitems|type +The XSUB-writer's interface to the C C function. + +=for apidoc Am|void|Renewc|void* ptr|int nitems|type|cast +The XSUB-writer's interface to the C C function, with +cast. + +=for apidoc Am|void|Safefree|void* src|void* dest|int nitems|type +The XSUB-writer's interface to the C C function. + +=for apidoc Am|void|Move|void* src|void* dest|int nitems|type +The XSUB-writer's interface to the C C function. The C is the +source, C is the destination, C is the number of items, and C is +the type. Can do overlapping moves. See also C. + +=for apidoc Am|void|Copy|void* src|void* dest|int nitems|type +The XSUB-writer's interface to the C C function. The C is the +source, C is the destination, C is the number of items, and C is +the type. May fail on overlapping copies. See also C. + +=for apidoc Am|void|Zero|void* dest|int nitems|type + +The XSUB-writer's interface to the C C function. The C is the +destination, C is the number of items, and C is the type. + +=for apidoc Am|void|StructCopy|type src|type dest|type +This is an architecture-independant macro to copy one structure to another. + +=cut +*/ + #ifndef lint #define NEWSV(x,len) newSV(len) diff --git a/contrib/perl5/hints/README.hints b/contrib/perl5/hints/README.hints index e36bd6d1dd9e..5f23b29c2cbd 100644 --- a/contrib/perl5/hints/README.hints +++ b/contrib/perl5/hints/README.hints @@ -11,7 +11,9 @@ over from perl4. Please send any problems or suggested changes to perlbug@perl.com. -Hint file naming convention: Each hint file name should have only +=head1 Hint file naming convention. + +Each hint file name should have only one '.'. (This is for portability to non-unix file systems.) Names should also fit in <= 14 characters, for portability to older SVR3 systems. File names are of the form $osname_$osvers.sh, with all '.' @@ -51,6 +53,56 @@ detect what is needed. A glossary of config.sh variables is in the file Porting/Glossary. +=head1 Setting variables + +=head2 Optimizer + +If you want to set a variable, try to allow for Configure command-line +overrides. For example, suppose you think the default optimizer +setting to be -O2 for a particular platform. You should allow for +command line overrides with something like + + case "$optimize" in + '') optimize='-O2' ;; + esac + +or, if your system has a decent test(1) command, + + test -z "$optimize" && optimize='-O2' + +This allows the user to select a different optimization level, e.g. +-O6 or -g. + +=head2 Compiler and Linker flags + +If you want to set $ccflags or $ldflags, you should append to the existing +value to allow Configure command-line settings, e.g. use + + ccflags="$ccflags -DANOTHER_OPTION_I_NEED" + +so that the user can do something like + + sh Configure -Dccflags='FIX_NEGATIVE_ZERO' + +and have the FIX_NEGATIVE_ZERO value preserved by the hints file. + +=head2 Libraries + +Configure will attempt to use the libraries listed in the variable +$libswanted. If necessary, you should remove broken libraries from +that list, or add additional libraries to that list. You should +*not* simply set $libs -- that ignores the possibilities of local +variations. For example, a setting of libs='-lgdbm -lm -lc' would +fail if another user were to try to compile Perl on a system without +GDBM but with Berkeley DB. See hints/dec_osf.sh and hints/solaris_2.sh +for examples. + +=head2 Other + +In general, try to avoid hard-wiring something that Configure will +figure out anyway. Also try to allow for Configure command-line +overrides. + =head1 Hint file tricks =head2 Printing critical messages @@ -189,12 +241,6 @@ after Configure prompts the user for the C compiler, it will load in and run the UU/cc.cbu "call-back" unit. See hints/solaris_2.sh for an example. -=item Threading-related flags - -Similarly, after Configure prompts the user about whether or not to -compile Perl with threads, it will look for a "call-back" unit -usethreads.cbu. See hints/linux.sh for an example. - =item Future status I hope this "call-back" scheme is simple enough to use but powerful @@ -210,4 +256,4 @@ say things like "sh Configure -Dcc=gcc -Dusethreads" on the command line. Have the appropriate amount of fun :-) - Andy Dougherty doughera@lafcol.lafayette.edu + Andy Dougherty doughera@lafayette.edu diff --git a/contrib/perl5/hints/aix.sh b/contrib/perl5/hints/aix.sh index d2c45c0a590e..d6f3dd78e0f0 100644 --- a/contrib/perl5/hints/aix.sh +++ b/contrib/perl5/hints/aix.sh @@ -2,30 +2,99 @@ # AIX 3.x.x hints thanks to Wayne Scott # AIX 4.1 hints thanks to Christopher Chan-Nui . # AIX 4.1 pthreading by Christopher Chan-Nui and -# Jarkko Hietaniemi . +# Jarkko Hietaniemi . +# AIX 4.3.x LP64 build by Steven Hirsch # Merged on Mon Feb 6 10:22:35 EST 1995 by # Andy Dougherty +# +# Contact dfavor@corridor.com for any of the following: +# +# - AIX 43x and above support +# - gcc + threads support +# - socks support +# +# Apr 99 changes: +# +# - use nm in AIX 43x and above +# - gcc + threads now builds +# [(added support for socks) Jul 99 SOCKS support rewritten] +# +# Notes: +# +# - shared libperl support is tricky. if ever libperl.a ends up +# in /usr/local/lib/* it can override any subsequent builds of +# that same perl release. to make sure you know where the shared +# libperl.a is coming from do a 'dump -Hv perl' and check all the +# library search paths in the loader header. +# +# it would be nice to warn the user if a libperl.a exists that is +# going to override the current build, but that would be complex. +# +# better yet, a solid fix for this situation should be developed. +# # Configure finds setrgid and setruid, but they're useless. The man # pages state: # setrgid: The EPERM error code is always returned. # setruid: The EPERM error code is always returned. Processes cannot -# reset only their real user IDs. +# reset only their real user IDs. d_setrgid='undef' d_setruid='undef' alignbytes=8 -usemymalloc='n' +case "$usemymalloc" in +'') usemymalloc='n' ;; +esac # Intuiting the existence of system calls under AIX is difficult, # at best; the safest technique is to find them empirically. -usenm='undef' + +# AIX 4.3.* and above default to using nm for symbol extraction +case "$osvers" in + 3.*|4.1.*|4.2.*) + usenm='undef' + ;; + *) + usenm='true' + ;; +esac so="a" +# AIX itself uses .o (libc.o) but we prefer compatibility +# with the rest of the world and with rest of the scripting +# languages (Tcl, Python) and related systems (SWIG). +# Stephanie Beals dlext="so" +# Take possible hint from the environment. If 32-bit is set in the +# environment, we can override it later. If set for 64, the +# 'sizeof' test sees a native 64-bit architecture and never looks back. +case "$OBJECT_MODE" in +32) + cat >&4 <&4 < UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) - ccflags="$ccflags -DNEED_PTHREAD_INIT" - case "$cc" in - cc_r) ;; - cc|xlc_r) + ccflags="$ccflags -DNEED_PTHREAD_INIT" + case "$cc" in + gcc) ;; + cc_r) ;; + cc|xl[cC]_r) echo >&4 "Switching cc to cc_r because of POSIX threads." # xlc_r has been known to produce buggy code in AIX 4.3.2. - # (e.g. pragma/overload core dumps) + # (e.g. pragma/overload core dumps) Let's suspect xlC_r, too. # --jhi@iki.fi cc=cc_r - ;; - '') + ;; + '') cc=cc_r - ;; - *) - cat >&4 <&4 < UU/uselargefiles.cbu <<'EOCBU' +case "$uselargefiles" in +''|$define|true|[yY]*) + lfcflags="`getconf XBS5_ILP32_OFFBIG_CFLAGS 2>/dev/null`" + lfldflags="`getconf XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`" + # _Somehow_ in AIX 4.3.1.0 the above getconf call manages to + # insert(?) *something* to $ldflags so that later (in Configure) evaluating + # $ldflags causes a newline after the '-b64' (the result of the getconf). + # (nothing strange shows up in $ldflags even in hexdump; + # so it may be something in the shell, instead?) + # Try it out: just uncomment the below line and rerun Configure: +# echo >&4 "AIX 4.3.1.0 $lfldflags mystery" ; exit 1 + # Just don't ask me how AIX does it, I spent hours wondering. + # Therefore the line re-evaluating lfldflags: it seems to fix + # the whatever it was that AIX managed to break. --jhi + lfldflags="`echo $lfldflags`" + lflibs="`getconf XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + case "$lfcflags$lfldflags$lflibs" in + '');; + *) ccflags="$ccflags $lfcflags" + ldflags="$ldflags $lfldflags" + libswanted="$libswanted $lflibs" + ;; + esac + lfcflags='' + lfldflags='' + lflibs='' + ;; +esac +EOCBU + +# This script UU/use64bitint.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use 64 bit integers. +cat > UU/use64bitint.cbu <<'EOCBU' +case "$use64bitint" in +$define|true|[yY]*) + case "`oslevel`" in + 3.*|4.[012].*) + cat >&4 < UU/use64bitall.cbu <<'EOCBU' +# This script UU/use64bitall.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to be maximally 64-bitty. +case "$use64bitall" in +$define|true|[yY]*) + case "`oslevel`" in + 3.*|4.[012].*) + cat >&4 <&4 + $cat >size.c < +#include +int main (void) +{ + printf("%d\n",_system_configuration.width); + return(0); +} +EOCP + set size + if eval $compile_ok; then + lfcpuwidth=`./size` + echo "You are running on $lfcpuwidth bit hardware." + else + dflt="32" + echo " " + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the width of your CPU (in bits)?" + . ./myread + lfcpuwidth="$ans" + fi + $rm -f size.c size + case "$lfcpuwidth" in + 32*) + cat >&4 < UU/uselongdouble.cbu <<'EOCBU' +# This script UU/uselongdouble.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use long doubles. +case "$uselongdouble" in +$define|true|[yY]*) + ccflags="$ccflags -qlongdouble" + # The explicit cc128, xlc128, xlC128 are not needed, + # the -qlongdouble should do the trick. --jhi + d_Gconvert='sprintf((b),"%.*llg",(n),(x))' + ;; +esac +EOCBU + +# If the C++ libraries, libC and libC_r, are available we will prefer them +# over the vanilla libc, because the libC contain loadAndInit() and +# terminateAndUnload() which work correctly with C++ statics while libc +# load() and unload() do not. See ext/DynaLoader/dl_aix.xs. +# The C-to-C_r switch is done by usethreads.cbu, if needed. +if test -f /lib/libC.a -a X"`$cc -v 2>&1 | grep gcc`" = X; then + # Cify libswanted. + set `echo X "$libswanted "| sed -e 's/ c / C c /'` + shift + libswanted="$*" + # Cify lddlflags. + set `echo X "$lddlflags "| sed -e 's/ -lc / -lC -lc /'` + shift + lddlflags="$*" +fi + +# EOF diff --git a/contrib/perl5/hints/amigaos.sh b/contrib/perl5/hints/amigaos.sh index 9d86e52bc03c..fff55b082cc6 100644 --- a/contrib/perl5/hints/amigaos.sh +++ b/contrib/perl5/hints/amigaos.sh @@ -22,15 +22,20 @@ libpth="$prefix/lib /local/lib" glibpth="$libpth" xlibpth="$libpth" +# This should remove unwanted libraries instead of limiting the set +# to just these few. E.g. what about Berkeley DB? libswanted='gdbm m dld' so=' ' # compiler & linker flags +# Respect command-line values. -ccflags='-DAMIGAOS -mstackextend' -ldflags='' -optimize='-O2 -fomit-frame-pointer' +ccflags="$ccflags -DAMIGAOS -mstackextend" +case "$optimize" in +'') optimize='-O2 -fomit-frame-pointer';; +esac dlext='o' +# Are these two different from the defaults? cccdlflags='none' ccdlflags='none' lddlflags='-oformat a.out-amiga -r' diff --git a/contrib/perl5/hints/beos.sh b/contrib/perl5/hints/beos.sh index 8d76bc5146f4..8017dce9ccae 100644 --- a/contrib/perl5/hints/beos.sh +++ b/contrib/perl5/hints/beos.sh @@ -51,3 +51,7 @@ ld='gcc' # Of course, this may also change with R5. export PATH="$PATH:$PWD/beos" + +case "$ldlibpthname" in +'') ldlibpthname=LIBRARY_PATH ;; +esac diff --git a/contrib/perl5/hints/cygwin.sh b/contrib/perl5/hints/cygwin.sh new file mode 100644 index 000000000000..42114c249f0a --- /dev/null +++ b/contrib/perl5/hints/cygwin.sh @@ -0,0 +1,48 @@ +#! /bin/sh +# cygwin.sh - hints for building perl using the Cygwin environment for Win32 +# + +# not otherwise settable +exe_ext='.exe' +firstmakefile='GNUmakefile' +case "$ldlibpthname" in +'') ldlibpthname=PATH ;; +esac +archobjs='cygwin.o' + +# mandatory (overrides incorrect defaults) +test -z "$cc" && cc='gcc' +if test -z "$plibpth" +then + plibpth=`gcc -print-file-name=libc.a` + plibpth=`dirname $plibpth` + plibpth=`cd $plibpth && pwd` +fi +so='dll' +# - eliminate -lc, implied by gcc +libswanted=`echo " $libswanted " | sed -e 's/ c / /g'` +libswanted="$libswanted cygipc cygwin kernel32" +# - otherwise i686-cygwin +archname='cygwin' + +# dynamic loading +# - otherwise -fpic +cccdlflags=' ' +ld='ld2' + +# optional(ish) +# - perl malloc needs to be unpolluted +bincompat5005='undef' + +# stubs (ENOSYS, not implemented) +d_chroot='undef' +d_seteuid='undef' +d_setegid='undef' + +# Win9x problem with non-blocking read from a closed pipe +d_eofnblk='define' + +# strip exe's and dll's +#ldflags="$ldflags -s" +#ccdlflags="$ccdlflags -s" +#lddlflags="$lddlflags -s" diff --git a/contrib/perl5/hints/darwin.sh b/contrib/perl5/hints/darwin.sh new file mode 100644 index 000000000000..fd61e424b03c --- /dev/null +++ b/contrib/perl5/hints/darwin.sh @@ -0,0 +1,63 @@ +## +# Darwin (Mac OS) hints +# Wilfredo Sanchez +## + +## +# Paths +## + +# BSD paths +prefix='/usr'; +siteprefix='/usr/local'; +vendorprefix='/usr/local'; usevendorprefix='define'; + +# 4BSD uses /usr/share/man, not /usr/man. +# Don't put man pages in /usr/lib; that's goofy. +man1dir='/usr/share/man/man1'; +man3dir='/usr/share/man/man3'; + +# Where to put modules. +privlib='/System/Library/Perl'; +sitelib='/Local/Library/Perl'; +vendorlib='/Network/Library/Perl'; + +## +# Tool chain settings +## + +# Since we can build fat, the archname doesn't need the processor type +archname='darwin'; + +# nm works. +usenm='true'; + +# Libc is in libsystem. +libc='/System/Library/Frameworks/System.framework/System'; + +# Optimize. +optimize='-O3'; + +# We have a prototype for telldir. +ccflags="${ccflags} -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE"; + +# Shared library extension is .dylib. +# Bundle extension is .bundle. +ld='cc'; +so='dylib'; +dlext='bundle'; +dlsrc='dl_dyld.xs'; usedl='define'; +cccdlflags=''; +lddlflags="${ldflags} -bundle -undefined suppress"; +ldlibpthname='DYLD_LIBRARY_PATH'; +useshrplib='true'; + +## +# System libraries +## + +# vfork works +usevfork='true'; + +# malloc works +usemymalloc='n'; diff --git a/contrib/perl5/hints/dec_osf.sh b/contrib/perl5/hints/dec_osf.sh index 8758cbb8207d..db7b869cf2be 100644 --- a/contrib/perl5/hints/dec_osf.sh +++ b/contrib/perl5/hints/dec_osf.sh @@ -58,20 +58,41 @@ # and it is called GEM. Many of the options we are going to use depend # on the compiler style. -# do NOT, I repeat, *NOT* take away those leading tabs - # reset - _DEC_uname_r= - _DEC_cc_style= - # set - _DEC_uname_r=`uname -r` - # _DEC_cc_style set soon below -# Configure Black Magic (TM) +cc=${cc:-cc} -case "$cc" in -*gcc*) ;; # pass +# do NOT, I repeat, *NOT* take away the leading tabs +# Configure Black Magic (TM) + # reset + _DEC_cc_style= +case "`$cc -v 2>&1 | grep cc`" in +*gcc*) _gcc_version=`$cc -v 2>&1 | grep "gcc version" | sed 's%^gcc version \([0-9]*\)\.\([0-9]*\) .*%\1 \2%'` + set $_gcc_version + if test "$1" -lt 2 -o \( "$1" -eq 2 -a "$2" -lt 95 \); then + cat >&4 <&1`" in + case "`cc -v -I. -c taint.c -o taint$$.o 2>&1`" in */gemc_cc*) # we have the new DEC GEM CC _DEC_cc_style=new ;; @@ -80,12 +101,12 @@ case "$cc" in ;; esac # cleanup - rm -f /tmp/taint$$.o + rm -f taint$$.o ;; esac # be nauseatingly ANSI -case "$cc" in +case "`$cc -v 2>&1 | grep gcc`" in *gcc*) ccflags="$ccflags -ansi" ;; *) ccflags="$ccflags -std" @@ -98,7 +119,7 @@ esac # we want optimisation case "$optimize" in -'') case "$cc" in +'') case "`$cc -v 2>&1 | grep gcc`" in *gcc*) optimize='-O3' ;; *) case "$_DEC_cc_style" in @@ -147,13 +168,26 @@ lddlflags='-shared -expect_unresolved "*"' # Fancy compiler suites use optimising linker as well as compiler. # -case "$_DEC_uname_r" in +case "`uname -r`" in *[123].*) # old loader lddlflags="$lddlflags -O3" ;; -*) lddlflags="$lddlflags $optimize -msym" - # -msym: If using a sufficiently recent /sbin/loader, - # keep the module symbols with the modules. +*) if $test "X$optimize" = "X$undef"; then + lddlflags="$lddlflags -msym" + else + case "`/usr/sbin/sizer -v`" in + *4.0D*) + # QAR 56761: -O4 + .so may produce broken code, + # fixed in 4.0E or better. + ;; + *) + lddlflags="$lddlflags $optimize" + ;; + esac + # -msym: If using a sufficiently recent /sbin/loader, + # keep the module symbols with the modules. + lddlflags="$lddlflags -msym -std" + fi ;; esac # Yes, the above loses if gcc does not use the system linker. @@ -165,7 +199,7 @@ esac # As noted above the -DDEBUGGING is added automagically by Configure if -g. case "$optimize" in *-g*) ;; # left intentionally blank -*) case "$_DEC_uname_r" in +*) case "`uname -r`" in *[123].*) case "$useshrplib" in false|undef|'') lddlflags="$lddlflags -s" ;; @@ -187,38 +221,75 @@ case "$_DEC_cc_style.$useshrplib" in new.) useshrplib="$define" ;; esac +# The EFF_ONLY_OK from is present but dysfunctional for +# [RWX]_OK as of Digital UNIX 4.0[A-D]?. If and when this gets fixed, +# please adjust this appropriately. See also pp_sys.c just before the +# emulate_eaccess(). + +# Fixed in V5.0A. +case "`/usr/sbin/sizer -v`" in +*5.0[A-Z]*|*5.[1-9]*|*[6-9].[0-9]*) + : ok + ;; +*) +# V5.0 or previous +pp_sys_cflags='ccflags="$ccflags -DNO_EFF_ONLY_OK"' + ;; +esac + +# The off_t is already 8 bytes, so we do have largefileness. + +cat > UU/usethreads.cbu <<'EOCBU' # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. -cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) - # Threads interfaces changed with V4.0. - case "`uname -r`" in - *[123].*) - libswanted="$libswanted pthreads mach exc c_r" - ccflags="-threads $ccflags" + # Threads interfaces changed with V4.0. + case "`$cc -v 2>&1 | grep gcc`" in + *gcc*)ccflags="-D_REENTRANT $ccflags" ;; + *) case "`uname -r`" in + *[123].*) ccflags="-threads $ccflags" ;; + *) ccflags="-pthread $ccflags" ;; + esac ;; - *) - libswanted="$libswanted pthread exc" - ccflags="-pthread $ccflags" - ;; - esac + esac + case "`uname -r`" in + *[123].*) libswanted="$libswanted pthreads mach exc c_r" ;; + *) libswanted="$libswanted pthread exc" ;; + esac - usemymalloc='n' + case "$usemymalloc" in + '') + usemymalloc='n' + ;; + esac ;; esac EOCBU +cat > UU/uselongdouble.cbu <<'EOCBU' +# This script UU/uselongdouble.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use long doubles. +case "$uselongdouble" in +$define|true|[yY]*) d_Gconvert='sprintf((b),"%.*Lg",(n),(x))' ;; +esac +EOCBU + # # Unset temporary variables no more needed. # unset _DEC_cc_style -unset _DEC_uname_r # # History: # +# perl5.005_51: +# +# September-1998 Jarkko Hietaniemi +# +# * Added the -DNO_EFF_ONLY_OK flag ('use filetest;' support). +# # perl5.004_57: # # 19-Dec-1997 Spider Boardman diff --git a/contrib/perl5/hints/dgux.sh b/contrib/perl5/hints/dgux.sh index 03b285dbd4ab..9a6f7a4879f9 100644 --- a/contrib/perl5/hints/dgux.sh +++ b/contrib/perl5/hints/dgux.sh @@ -14,13 +14,8 @@ # as it would suck to try to get support if the vendor learned that you # were physically replacing the system binaries. # -# Be aware that if you opt to use dynamic loading you'll need to set -# your $LD_LIBRARY_PATH to include the source directory when you build, -# test and install the software. -# # -Roderick Schertler - # Here are the things from some old DGUX hints files which are different # from what's in here now. I don't know the exact reasons that most of # these settings were in the hints files, presumably they can be chalked diff --git a/contrib/perl5/hints/dos_djgpp.sh b/contrib/perl5/hints/dos_djgpp.sh index 7c59428c7e4b..d50bca4b25e0 100644 --- a/contrib/perl5/hints/dos_djgpp.sh +++ b/contrib/perl5/hints/dos_djgpp.sh @@ -3,6 +3,7 @@ # 971015 - archname changed from 'djgpp' to 'dos-djgpp' # 971210 - threads support +# 000222 - added -DPERL_EXTERNAL_GLOB to ccflags archname='dos-djgpp' archobjs='djgpp.o' @@ -27,6 +28,9 @@ lns='cp' usenm='true' +# this reportedly causes compile errors in system includes +i_ieeefp='undef' + d_link='undef' # these are empty functions in libc.a d_symlink='undef' d_fork='undef' @@ -39,6 +43,7 @@ case "X$optimize" in optimize="-O2 -malign-loops=2 -malign-jumps=2 -malign-functions=2" ;; esac +ccflags="$ccflags -DPERL_EXTERNAL_GLOB" ldflags='-s' usemymalloc='n' timetype='time_t' diff --git a/contrib/perl5/hints/dynixptx.sh b/contrib/perl5/hints/dynixptx.sh index 2edf02630534..11c6b5b3b063 100644 --- a/contrib/perl5/hints/dynixptx.sh +++ b/contrib/perl5/hints/dynixptx.sh @@ -19,10 +19,11 @@ libswanted=`echo $libswanted | sed -e 's/ inet / /'` # Configure defaults to usenm='y', which doesn't work very well usenm='n' -# for performance, apparently this makes a huge difference (~krader) +# removed d_vfork='define'; we can't use it any more ... -d_vfork='define' -optimize='-Wc,-O3 -W0,-xstring' +case "$optimize" in +'') optimize='-Wc,-O3 -W0,-xstring' ;; +esac # We override d_socket because it's very hard for Configure to get it right # in Dynix/Ptx, for several reasons. @@ -49,9 +50,9 @@ case "$osvers" in d_sockpair='define' ;; 4.2*) # on ptx/TCP 4.2, we can use BSD sockets, but they're not the default. - cppflags='-Wc,+bsd-socket' - ccflags='-Wc,+bsd-socket' - ldflags='-Wc,+bsd-socket' + cppflags="$cppflags -Wc,+bsd-socket" + ccflags="$ccflags -Wc,+bsd-socket" + ldflags="$ldflags -Wc,+bsd-socket" d_socket='define' d_oldsock='undef' d_sockpair='define' diff --git a/contrib/perl5/hints/epix.sh b/contrib/perl5/hints/epix.sh index b91537a202a1..dcad3c5d476d 100644 --- a/contrib/perl5/hints/epix.sh +++ b/contrib/perl5/hints/epix.sh @@ -43,9 +43,9 @@ d_flock='undef' # of libswanted excludes some libraries found there. You may want to # prevent "ucb" from being removed from libswanted and see if perl will # build on your system. -ldflags='-non_shared -systype svr4 -L/svr4/usr/lib -L/svr4/usr/lib/cmplrs/cc -L/usr/ccs/lib -L/svr4/usr/ucblib' -ccflags='-systype svr4 -D__STDC__=0 -I/svr4/usr/include -I/svr4/usr/ucbinclude' -cppflags='-D__STDC__=0 -I/svr4/usr/include -I/svr4/usr/ucbinclude' +ldflags="$ldflags -non_shared -systype svr4 -L/svr4/usr/lib -L/svr4/usr/lib/cmplrs/cc -L/usr/ccs/lib -L/svr4/usr/ucblib" +ccflags="$ccflags -systype svr4 -D__STDC__=0 -I/svr4/usr/include -I/svr4/usr/ucbinclude" +cppflags="$ccflags -D__STDC__=0 -I/svr4/usr/include -I/svr4/usr/ucbinclude" # Don't use problematic libraries: @@ -64,12 +64,3 @@ lddlflags="-G $ldflags" # Probably needed for dynamic loading # We _do_ want the -L paths in ldflags, but we don't want the -non_shared. lddlflags=`echo $lddlflags | sed 's/-non_shared//'` -cat <<'EOM' >&4 - -If you wish to use dynamic linking, you must use - LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH -or - setenv LD_LIBRARY_PATH `pwd` -before running make. - -EOM diff --git a/contrib/perl5/hints/esix4.sh b/contrib/perl5/hints/esix4.sh index 3d3145d25503..b1d697cccbdf 100644 --- a/contrib/perl5/hints/esix4.sh +++ b/contrib/perl5/hints/esix4.sh @@ -3,22 +3,26 @@ # Kevin O'Gorman ( kevin@kosman.UUCP, kevin%kosman.uucp@nrc.com ) # # Use Configure -Dcc=gcc to use gcc. + +# Why can't we just use PATH? It contains /usr/ccs/bin. case "$cc" in '') cc='/bin/cc' test -f $cc || cc='/usr/ccs/bin/cc' ;; esac -ldflags='-L/usr/ccs/lib -L/usr/ucblib' + +ldflags="$ldflags -L/usr/ccs/lib -L/usr/ucblib" test -d /usr/local/man || mansrc='none' -ccflags='-I/usr/include -I/usr/ucbinclude' +# Do we really need to tell cc to look in /usr/include? +ccflags="$ccflags -I/usr/include -I/usr/ucbinclude" libswanted=`echo " $libswanted " | sed -e 's/ malloc / /' ` d_index='undef' d_suidsafe=define usevfork='false' if test "$osvers" = "3.0"; then d_gconvert='undef' - grep 'define[ ]*AF_OSI[ ]' /usr/include/sys/socket.h | grep '/\*[^*]*$' >/tmp/esix$$ - if test -s /tmp/esix$$; then + grep 'define[ ]*AF_OSI[ ]' /usr/include/sys/socket.h | grep '/\*[^*]*$' >esix$$ + if test -s esix$$; then cat <&2 WARNING: You are likely to have problems compiling the Socket extension @@ -27,15 +31,6 @@ unless you fix the unterminated comment for AF_OSI in the file EOM fi - rm -f /tmp/esix$$ + rm -f esix$$ fi -cat <<'EOM' >&4 - -If you wish to use dynamic linking, you must use - LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH -or - setenv LD_LIBRARY_PATH `pwd` -before running make. - -EOM diff --git a/contrib/perl5/hints/freebsd.sh b/contrib/perl5/hints/freebsd.sh index 66f6ca02bfcf..fd60ba3cb919 100644 --- a/contrib/perl5/hints/freebsd.sh +++ b/contrib/perl5/hints/freebsd.sh @@ -99,7 +99,11 @@ esac case "$osvers" in 0.*|1.0*) ;; -3.*|4.0*) +1*|2*) cccdlflags='-DPIC -fpic' + lddlflags="-Bshareable $lddlflags" + ;; + +*) objformat=`/usr/bin/objformat` if [ x$objformat = xelf ]; then libpth="/usr/lib /usr/local/lib" @@ -108,17 +112,23 @@ case "$osvers" in lddlflags="-shared " else if [ -e /usr/lib/aout ]; then - libpth="/usr/lib/aout /usr/local/lib /usr/lib" - glibpth="/usr/lib/aout /usr/local/lib /usr/lib" - fi - lddlflags='-Bshareable' + libpth="/usr/lib/aout /usr/local/lib /usr/lib" + glibpth="/usr/lib/aout /usr/local/lib /usr/lib" + fi + lddlflags='-Bshareable' fi cccdlflags='-DPIC -fpic' ;; +esac -*) cccdlflags='-DPIC -fpic' - lddlflags="-Bshareable $lddlflags" - ;; +case "$osvers" in +0*|1*|2*|3*) ;; + +*) + if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then + usenm=false + fi + ;; esac cat <<'EOM' >&4 @@ -147,8 +157,8 @@ case "$osvers" in # the equivalent in the main Configure so we copy a little # from Configure XXX Configure should be fixed. if $test -r $src/patchlevel.h;then - patchlevel=`awk '/define[ ]+PATCHLEVEL/ {print $3}' $src/patchlevel.h` - subversion=`awk '/define[ ]+SUBVERSION/ {print $3}' $src/patchlevel.h` + patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $src/patchlevel.h` + subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $src/patchlevel.h` else patchlevel=0 subversion=0 @@ -164,22 +174,17 @@ esac cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) - lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'` + lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|tail -1` case "$osvers" in - 2.2.8*|3.*|4.*) - if [ ! -r "$lc_r" ]; then - cat <&4 -POSIX threads should be supported by FreeBSD $osvers -- -but your system is missing the shared libc_r. -(/sbin/ldconfig -r doesn't find any). + 0*|1*|2.0*|2.1*) cat <&4 +I did not know that FreeBSD $osvers supports POSIX threads. -Consider using the latest STABLE release. +Feel free to tell perlbug@perl.com otherwise. EOM - exit 1 - fi - ldflags="-pthread $ldflags" + exit 1 ;; - 2.2*) + + 2.2.[0-7]*) cat <&4 POSIX threads are not supported well by FreeBSD $osvers. @@ -192,13 +197,21 @@ or preferably to 3.something. EOM exit 1 ;; - *) cat <&4 -I did not know that FreeBSD $osvers supports POSIX threads. -Feel free to tell perlbug@perl.com otherwise. + *) + if [ ! -r "$lc_r" ]; then + cat <&4 +POSIX threads should be supported by FreeBSD $osvers -- +but your system is missing the shared libc_r. +(/sbin/ldconfig -r doesn't find any). + +Consider using the latest STABLE release. EOM - exit 1 + exit 1 + fi + ldflags="-pthread $ldflags" ;; + esac set `echo X "$libswanted "| sed -e 's/ c / c_r /'` diff --git a/contrib/perl5/hints/hpux.sh b/contrib/perl5/hints/hpux.sh index 8a9e3cb25d22..ce15f552b44b 100644 --- a/contrib/perl5/hints/hpux.sh +++ b/contrib/perl5/hints/hpux.sh @@ -21,8 +21,10 @@ # Don't assume every OS != 10 is < 10, (e.g., 11). # From: Chuck Phillips # HP-UX 10 pthreads hints: Matthew T Harden +# From: Dominic Dunlop +# Abort and offer advice if bundled (non-ANSI) C compiler selected -# This version: August 15, 1997 +# This version: March 8, 2000 # Current maintainer: Jeff Okamoto #-------------------------------------------------------------------- @@ -64,21 +66,19 @@ ccflags="$ccflags -D_HPUX_SOURCE" # Check if you're using the bundled C compiler. This compiler doesn't support -# ANSI C (the -Aa flag) nor can it produce shared libraries. Thus we have -# to turn off dynamic loading. +# ANSI C (the -Aa flag) and so is not suitable for perl 5.5 and later. case "$cc" in '') if cc $ccflags -Aa 2>&1 | $contains 'option' >/dev/null then - case "$usedl" in - '') usedl="$undef" cat <<'EOM' >&4 -The bundled C compiler can not produce shared libraries, so you will -not be able to use dynamic loading. +The bundled C compiler is not ANSI-compliant, and so cannot be used to +build perl. Please see the file README.hpux for advice on alternative +compilers. +Cannot continue, aborting. EOM - ;; - esac + exit 1 else ccflags="$ccflags -Aa" # The add-on compiler supports ANSI C # cppstdin and cpprun need the -Aa option if you use the unbundled @@ -92,19 +92,22 @@ EOM cppminus='-' cpplast='-' fi - # For HP's ANSI C compiler, up to "+O3" is safe for everything - # except shared libraries (PIC code). Max safe for PIC is "+O2". - # Setting both causes innocuous warnings. - #optimize='+O3' - #cccdlflags='+z +O2' - optimize='-O' + case "$optimize" in + # For HP's ANSI C compiler, up to "+O3" is safe for everything + # except shared libraries (PIC code). Max safe for PIC is "+O2". + # Setting both causes innocuous warnings. + '') optimize='-O' + #optimize='+O3' + #cccdlflags='+z +O2' + ;; + esac + cc=cc ;; esac -# Even if you use gcc, prefer the HP math library over the GNU one. - -case "`$cc -v 2>&1`" in -"*gcc*" ) test -d /lib/pa1.1 && ccflags="$ccflags -L/lib/pa1.1" ;; +case `$cc -v 2>&1`"" in +*gcc*) ccisgcc="$define" ;; +*) ccisgcc='' ;; esac # Determine the architecture type of this system. @@ -139,9 +142,181 @@ else selecttype='int *' fi +# Do this right now instead of the delayed callback unit approach. +case "$use64bitall" in +$define|true|[yY]*) use64bitint="$define" ;; +esac +case "$use64bitint" in +$define|true|[yY]*) + if [ "$xxOsRevMajor" -lt 11 ]; then + cat <&4 + +64-bit compilation is not supported on HP-UX $xxOsRevMajor. +You need at least HP-UX 11.0. +Cannot continue, aborting. + +EOM + exit 1 + fi + + # Without the 64-bit libc we cannot do much. + libc='/lib/pa20_64/libc.sl' + if [ ! -f "$libc" ]; then + cat <&4 + +*** You do not seem to have the 64-bit libraries in /lib/pa20_64. +*** Most importantly, I cannot find the $libc. +*** Cannot continue, aborting. + +EOM + exit 1 + fi + + ccflags="$ccflags +DD64" + ldflags="$ldflags +DD64" + test -d /lib/pa20_64 && loclibpth="$loclibpth /lib/pa20_64" + libscheck='case "`/usr/bin/file $xxx`" in +*LP64*|*PA-RISC2.0*) ;; +*) xxx=/no/64-bit$xxx ;; +esac' + if test -n "$ccisgcc" -o -n "$gccversion"; then + ld="$cc" + else + ld=/usr/bin/ld + fi + ar=/usr/bin/ar + full_ar=$ar + + if test -z "$ccisgcc" -a -z "$gccversion"; then + # The strict ANSI mode (-Aa) doesn't like the LL suffixes. + ccflags=`echo " $ccflags "|sed 's@ -Aa @ @g'` + case "$ccflags" in + *-Ae*) ;; + *) ccflags="$ccflags -Ae" ;; + esac + fi + + set `echo " $libswanted " | sed -e 's@ dl @ @'` + libswanted="$*" + + ;; +esac + +case "$ccisgcc" in +# Even if you use gcc, prefer the HP math library over the GNU one. +"$define") test -d /lib/pa1.1 && ccflags="$ccflags -L/lib/pa1.1" ;; +esac + +case "$ccisgcc" in +"$define") ;; +*) case "`getconf KERNEL_BITS 2>/dev/null`" in + *64*) ldflags="$ldflags -Wl,+vnocompatwarnings" ;; + esac + ;; +esac + +# Remove bad libraries that will cause problems +# (This doesn't remove libraries that don't actually exist) +# -lld is unneeded (and I can't figure out what it's used for anyway) +# -ldbm is obsolete and should not be used +# -lBSD contains BSD-style duplicates of SVR4 routines that cause confusion +# -lPW is obsolete and should not be used +# The libraries crypt, malloc, ndir, and net are empty. +# Although -lndbm should be included, it will make perl blow up if you should +# copy the binary to a system without libndbm.sl. See ccdlflags below. +set `echo " $libswanted " | sed -e 's@ ld @ @' -e 's@ dbm @ @' -e 's@ BSD @ @' -e 's@ PW @ @'` +libswanted="$*" + +# By setting the deferred flag below, this means that if you run perl +# on a system that does not have the required shared library that you +# linked it with, it will die when you try to access a symbol in the +# (missing) shared library. If you would rather know at perl startup +# time that you are missing an important shared library, switch the +# comments so that immediate, rather than deferred loading is +# performed. Even with immediate loading, you can postpone errors for +# undefined (or multiply defined) routines until actual access by +# adding the "nonfatal" option. +# ccdlflags="-Wl,-E -Wl,-B,immediate $ccdlflags" +# ccdlflags="-Wl,-E -Wl,-B,immediate,-B,nonfatal $ccdlflags" +ccdlflags="-Wl,-E -Wl,-B,deferred $ccdlflags" + +case "$usemymalloc" in +'') usemymalloc='y' ;; +esac + +alignbytes=8 +# For native nm, you need "-p" to produce BSD format output. +nm_opt='-p' + +# When HP-UX runs a script with "#!", it sets argv[0] to the script name. +toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"' + +# If your compile complains about FLT_MIN, uncomment the next line +# POSIX_cflags='ccflags="$ccflags -DFLT_MIN=1.17549435E-38"' + +# Comment this out if you don't want to follow the SVR4 filesystem layout +# that HP-UX 10.0 uses +case "$prefix" in +'') prefix='/opt/perl5' ;; +esac + +# HP-UX can't do setuid emulation offered by Configure +case "$d_dosuid" in +'') d_dosuid="$undef" ;; +esac + +# HP-UX 11 groks also LD_LIBRARY_PATH but SHLIB_PATH +# is recommended for compatibility. +case "$ldlibpthname" in +'') ldlibpthname=SHLIB_PATH ;; +esac + +# HP-UX 10.20 and gcc 2.8.1 break UINT32_MAX. +case "$ccisgcc" in +"$define") ccflags="$ccflags -DUINT32_MAX_BROKEN" ;; +esac + +cat > UU/cc.cbu <<'EOSH' +# XXX This script UU/cc.cbu will get 'called-back' by Configure after it +# XXX has prompted the user for the C compiler to use. +# Get gcc to share its secrets. +echo 'main() { return 0; }' > try.c + # Indent to avoid propagation to config.sh + verbose=`${cc:-cc} -v -o try try.c 2>&1` +if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then + # Using gcc. + : nothing to see here, move on. +else + # Using cc. + ar=${ar:-ar} + case "`$ar -V 2>&1`" in + *GNU*) + if test -x /usr/bin/ar; then + cat <&2 + +*** You are using HP cc(1) but GNU ar(1). This might lead into trouble +*** later on, I'm switching to HP ar to play safe. + +END + ar=/usr/bin/ar + fi + ;; + esac +fi + +EOSH + +# Date: Fri, 6 Sep 96 23:15:31 CDT +# From: "Daniel S. Lewart" +# I looked through the gcc.info and found this: +# * GNU CC compiled code sometimes emits warnings from the HP-UX +# assembler of the form: +# (warning) Use of GR3 when frame >= 8192 may cause conflict. +# These warnings are harmless and can be safely ignored. + +cat > UU/usethreads.cbu <<'EOCBU' # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. -cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) if [ "$xxOsRevMajor" -lt 10 ]; then @@ -194,57 +369,40 @@ EOM esac EOCBU -# Remove bad libraries that will cause problems -# (This doesn't remove libraries that don't actually exist) -# -lld is unneeded (and I can't figure out what it's used for anyway) -# -ldbm is obsolete and should not be used -# -lBSD contains BSD-style duplicates of SVR4 routines that cause confusion -# -lPW is obsolete and should not be used -# The libraries crypt, malloc, ndir, and net are empty. -# Although -lndbm should be included, it will make perl blow up if you should -# copy the binary to a system without libndbm.sl. See ccdlflags below. -set `echo " $libswanted " | sed -e 's@ ld @ @' -e 's@ dbm @ @' -e 's@ BSD @ @' -e 's@ PW @ @'` -libswanted="$*" +case "$uselargefiles-$ccisgcc" in +"$define-$define"|'-define') + cat <&4 -# By setting the deferred flag below, this means that if you run perl -# on a system that does not have the required shared library that you -# linked it with, it will die when you try to access a symbol in the -# (missing) shared library. If you would rather know at perl startup -# time that you are missing an important shared library, switch the -# comments so that immediate, rather than deferred loading is -# performed. Even with immediate loading, you can postpone errors for -# undefined (or multiply defined) routines until actual access by -# adding the "nonfatal" option. -# ccdlflags="-Wl,-E -Wl,-B,immediate $ccdlflags" -# ccdlflags="-Wl,-E -Wl,-B,immediate,-B,nonfatal $ccdlflags" -ccdlflags="-Wl,-E -Wl,-B,deferred $ccdlflags" +*** I'm ignoring large files for this build because +*** I don't know how to do use large files in HP-UX using gcc. -usemymalloc='y' -alignbytes=8 -# For native nm, you need "-p" to produce BSD format output. -nm_opt='-p' - -# When HP-UX runs a script with "#!", it sets argv[0] to the script name. -toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"' - -# If your compile complains about FLT_MIN, uncomment the next line -# POSIX_cflags='ccflags="$ccflags -DFLT_MIN=1.17549435E-38"' - -# Comment this out if you don't want to follow the SVR4 filesystem layout -# that HP-UX 10.0 uses -case "$prefix" in -'') prefix='/opt/perl5' ;; +EOM + uselargefiles="$undef" + ;; esac -# HP-UX can't do setuid emulation offered by Configure -case "$d_dosuid" in -'') d_dosuid="$undef" ;; -esac +cat > UU/uselargefiles.cbu <<'EOCBU' +# This script UU/uselargefiles.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use large files. +case "$uselargefiles" in +''|$define|true|[yY]*) + # there are largefile flags available via getconf(1) + # but we cheat for now. + ccflags="$ccflags -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + + if test -z "$ccisgcc" -a -z "$gccversion"; then + # The strict ANSI mode (-Aa) doesn't like large files. + ccflags=`echo " $ccflags "|sed 's@ -Aa @ @g'` + case "$ccflags" in + *-Ae*) ;; + *) ccflags="$ccflags -Ae" ;; + esac + fi + + ;; +esac +EOCBU + +# keep that leading tab. + ccisgcc='' -# Date: Fri, 6 Sep 96 23:15:31 CDT -# From: "Daniel S. Lewart" -# I looked through the gcc.info and found this: -# * GNU CC compiled code sometimes emits warnings from the HP-UX -# assembler of the form: -# (warning) Use of GR3 when frame >= 8192 may cause conflict. -# These warnings are harmless and can be safely ignored. diff --git a/contrib/perl5/hints/irix_4.sh b/contrib/perl5/hints/irix_4.sh index 8013c8a1f493..5c5bdb2f0d0e 100644 --- a/contrib/perl5/hints/irix_4.sh +++ b/contrib/perl5/hints/irix_4.sh @@ -33,3 +33,13 @@ EOM ;; esac +case " $use64bits $use64bitint $use64bitall " in +*" $define "*|*" true "*|*" [yY] "*) + cat >&4 <&4 < on 3/24/1998 +# 64-bitty by Jarkko Hietaniemi on 9/1998 + # Use sh Configure -Dcc='cc -n32' to try compiling with -n32. # or -Dcc='cc -n32 -mips3' (or -mips4) to force (non)portability # Don't bother with -n32 unless you have the 7.1 or later compilers. @@ -33,11 +35,41 @@ # Let's assume we want to use 'cc -n32' by default, unless the # necessary libm is missing (which has happened at least twice) case "$cc" in -'') - if test -f /usr/lib32/libm.so - then - cc='cc -n32' - fi ;; +'') case "$use64bitall" in + "$define"|true|[yY]*) test -f /usr/lib64/libm.so && cc='cc -64' ;; + *) test -f /usr/lib32/libm.so && cc='cc -n32' ;; + esac +esac +test -z "$cc" && cc=cc + +case "$use64bitint" in +$define|true|[yY]*) + case "`uname -r`" in + [1-5]*|6.[01]) + cat >&4 <&4 < + # If you get complaints about so_locations then change the following + # line to something like: + # lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations" + lddlflags="-n32 -shared" + libc='/usr/lib32/libc.so' + plibpth='/usr/lib32 /lib32 /usr/ccs/lib' + ;; +*"cc -64") + + loclibpth="$loclibpth /usr/lib64" + libscheck='case "`/usr/bin/file $xxx`" in +*64-bit*) ;; +*) xxx=/no/64-bit$xxx ;; +esac' + # NOTE: -L/usr/lib64 -L/lib64 are automatically selected by the linker + ldflags=' -L/usr/local/lib64 -L/usr/local/lib' + cccdlflags=' ' + # From: David Billinghurst + # If you get complaints about so_locations then change the following + # line to something like: + # lddlflags="-64 -shared -check_registry /usr/lib64/so_locations" + lddlflags="-64 -shared" + libc='/usr/lib64/libc.so' + plibpth='/usr/lib64 /lib64 /usr/ccs/lib' + ;; +*gcc*) + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE" + optimize="-O3" + usenm='undef' + case "`uname -s`" in + # Without the -mabi=64 gcc in 64-bit IRIX has problems passing + # and returning small structures. This affects inet_*() and semctl(). + # See http://reality.sgi.com/ariel/freeware/gcc-2.8.1-notes.html + # for more information. Reported by Lionel Cons . + IRIX64) ccflags="$ccflags -mabi=64" + ldflags="$ldflags -mabi=64 -L/usr/lib64" + lddlflags="$lddlflags -mabi=64" + ;; + *) ccflags="$ccflags -DIRIX32_SEMUN_BROKEN_BY_GCC" + ;; + esac + ;; +*) + # this is needed to force the old-32 paths + # since the system default can be changed. + ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100" + optimize='-O' + ;; +esac + +# Settings common to both native compiler modes. +case "$cc" in +*"cc -n32"|*"cc -64") + ld=$cc + + # perl's malloc can return improperly aligned buffer + # which (under 5.6.0RC1) leads into really bizarre bus errors + # and freak test failures (lib/safe1 #18, for example), + # even more so with -Duse64bitall: for example lib/io_linenumtb. + # fails under the harness but succeeds when run separately, + # under make test pragma/warnings #98 fails, and lib/io_dir + # apparently coredumps (the last two don't happen under + # the harness. Helmut Jarausch is seeing bus errors from + # miniperl, as was Scott Henry with snapshots from just before + # the RC1. --jhi + usemymalloc='undef' +#malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' + + nm_opt='-p' + nm_so_opt='-p' + # Perl 5.004_57 introduced new qsort code into pp_ctl.c that # makes IRIX cc prior to 7.2.1 to emit bad code. # so some serious hackery follows to set pp_ctl flags correctly. @@ -52,11 +164,11 @@ case "$cc" in # Check for which version of the compiler we're running case "`$cc -version 2>&1`" in *7.0*) # Mongoose 7.0 - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1042,1048,1110,1116,1184 -OPT:Olimit=0" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1042,1048,1110,1116,1174,1184,1552 -OPT:Olimit=0" optimize='none' ;; *7.1*|*7.2|*7.20) # Mongoose 7.1+ - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552 -OPT:Olimit=0" optimize='-O3' # This is a temporary fix for 5.005. # Leave pp_ctl_cflags line at left margin for Configure. See @@ -65,15 +177,15 @@ case "$cc" in pp_ctl_cflags='optimize=-O' ;; *7.*) # Mongoose 7.2.1+ - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0:space=ON" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552 -OPT:Olimit=0:space=ON" optimize='-O3' ;; *6.2*) # Ragnarok 6.2 - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552" optimize='none' ;; *) # Be safe and not optimize - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0" + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1174,1184,1552 -OPT:Olimit=0" optimize='none' ;; esac @@ -89,45 +201,25 @@ pp_ctl_cflags='optimize=-O' # absolute paths (again, see the pthread.h change below). # -- krishna@sgi.com, 8/23/98 -if [ "X${TOOLROOT}" != "X" ]; then -# we cant set cppflags because it gets overwritten -# we dont actually need $TOOLROOT/usr/include on the cc line cuz the -# modules functionality already includes it but -# XXX - how do I change cppflags in the hints file? - ccflags="$ccflags -I${TOOLROOT}/usr/include" + if [ "X${TOOLROOT}" != "X" ]; then + # we cant set cppflags because it gets overwritten + # we dont actually need $TOOLROOT/usr/include on the cc line cuz the + # modules functionality already includes it but + # XXX - how do I change cppflags in the hints file? + ccflags="$ccflags -I${TOOLROOT}/usr/include" usrinc="${TOOLROOT}/usr/include" -fi + fi - ld=$cc - # perl's malloc can return improperly aligned buffer - # usemymalloc='undef' -malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' - # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker - ldflags=' -L/usr/local/lib32 -L/usr/local/lib' - cccdlflags=' ' - # From: David Billinghurst - # If you get complaints about so_locations then change the following - # line to something like: - # lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations" - lddlflags="-n32 -shared" - libc='/usr/lib32/libc.so' - plibpth='/usr/lib32 /lib32 /usr/ccs/lib' - nm_opt='-p' - nm_so_opt='-p' - ;; -*gcc*) - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE" - optimize="-O3" - usenm='undef' - ;; -*) - # this is needed to force the old-32 paths - # since the system default can be changed. - ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100" - optimize='-O' ;; esac +# Don't groan about unused libraries. +ldflags="$ldflags -Wl,-woff,84" + +case "`$cc -version 2>&1`" in +*7.2.*) op_cflags='optimize=-O1' ;; # workaround for an optimizer bug +esac + # We don't want these libraries. # Socket networking is in libc, these are not installed by default, # and just slow perl down. (scotth@sgi.com) @@ -135,6 +227,11 @@ set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /' shift libswanted="$*" +# Irix 6.5.6 seems to have a broken header +# don't include that (it doesn't contain S_IFMT, S_IFREG, et al) + +i_sysmode="$undef" + # I have conflicting reports about the sun, crypt, bsd, and PW # libraries on Irix 6.2. # @@ -159,9 +256,9 @@ set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' shift libswanted="$*" +cat > UU/usethreads.cbu <<'EOCBU' # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. -cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) if test ! -f ${TOOLROOT}/usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then @@ -209,3 +306,5 @@ EOM esac EOCBU +# The -n32 makes off_t to be 8 bytes, so we should have largefileness. + diff --git a/contrib/perl5/hints/irix_6_0.sh b/contrib/perl5/hints/irix_6_0.sh index e61db0460fcc..50498af7180e 100644 --- a/contrib/perl5/hints/irix_6_0.sh +++ b/contrib/perl5/hints/irix_6_0.sh @@ -52,3 +52,13 @@ EOM ;; esac +case " $use64bits $use64bitint $use64bitall " in +*" $define "*|*" true "*|*" [yY] "*) + cat >&4 <&4 < +# # BSD compatability library no longer needed # 'kaffe' has a /usr/lib/libnet.so which is not at all relevent for perl. @@ -56,6 +74,19 @@ set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /'` shift libswanted="$*" +# If you have glibc, then report the version for ./myconfig bug reporting. +# (Configure doesn't need to know the specific version since it just uses +# gcc to load the library for all tests.) +# Is this sufficiently robust for libc5 systems as well as +# glibc-2.1.x systems? +# We don't use __GLIBC__ and __GLIBC_MINOR__ because they +# are insufficiently precise to distinguish things like +# libc-2.0.6 and libc-2.0.7. +if test -L /lib/libc.so.6; then + libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'` + libc=/lib/$libc +fi + # Configure may fail to find lstat() since it's a static/inline # function in . d_lstat=define @@ -224,6 +255,15 @@ fi #'osfmach3ppc') ccdlflags='-Wl,-E' ;; #esac +case "`uname -r`" in +sparc-linux) + case "$cccdlflags" in + *-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;; + *) cccdlflags="$cccdlflags -fPIC" ;; + esac + ;; +esac + # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. cat > UU/usethreads.cbu <<'EOCBU' @@ -236,3 +276,13 @@ $define|true|[yY]*) ;; esac EOCBU + +cat > UU/uselargefiles.cbu <<'EOCBU' +# This script UU/uselargefiles.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use large files. +case "$uselargefiles" in +''|$define|true|[yY]*) + ccflags="$ccflags -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + ;; +esac +EOCBU diff --git a/contrib/perl5/hints/lynxos.sh b/contrib/perl5/hints/lynxos.sh index ddffcbe3cc79..0023e831b0ba 100644 --- a/contrib/perl5/hints/lynxos.sh +++ b/contrib/perl5/hints/lynxos.sh @@ -4,8 +4,16 @@ # These hints were submitted by: # Greg Seibert # seibert@Lynx.COM +# and +# Ed Mooring +# mooring@lynx.com # cc='gcc' so='none' usemymalloc='n' +d_union_semun='define' +ccflags="$ccflags -DEXTRA_F_IN_SEMUN_BUF -D__NO_INCLUDE_WARN__" + +# When LynxOS runs a script with "#!" it sets argv[0] to the script name +toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"' diff --git a/contrib/perl5/hints/machten.sh b/contrib/perl5/hints/machten.sh index f283873699d2..b4409c1bf0be 100644 --- a/contrib/perl5/hints/machten.sh +++ b/contrib/perl5/hints/machten.sh @@ -1,18 +1,26 @@ +#! /bin/bash # machten.sh -# This is for MachTen 4.0.3. It might work on other versions and variants too. +# This is for MachTen 4.1.4. It might work on other versions and variants +# too. If it doesn't, tell me, and I'll try to fix it -- domo@computer.org # # Users of earlier MachTen versions might need a fixed tr from ftp.tenon.com. # This should be described in the MachTen release notes. # # MachTen 2.x has its own hint file. # -# This file has been put together by Andy Dougherty +# The original version of this file was put together by Andy Dougherty # based on comments from lots of # folks, especially # Mark Pease # Martijn Koster # Richard Yeh # +# Remove dynamic loading libraries from search; enable SysV IPC with +# MachTen 4.1.4 and above; define SYSTEM_ALIGN_BYTES for old MT versions +# -- Dominic Dunlop 000224 +# Disable shadow password file access: MT 4.1.1 has necessary library +# functions, but not header file (or documentation) +# -- Dominic Dunlop 990804 # For now, explicitly disable dynamic loading -- MT 4.1.1 has it, # but these hints do not yet support it. # Define NOTEDEF_MACHTEN to undo gratuitous Tenon hack to signal.h. @@ -36,6 +44,13 @@ # # Comments, questions, and improvements welcome! # +# MachTen 4.1.1's support for shadow password file access is incomplete: +# disable its use completely. +d_endspent=${d_endspent:-undef} +d_getspent=${d_getspent:-undef} +d_getspnam=${d_getspnam:-undef} +d_setspent=${d_setspent:-undef} + # MachTen 4.1.1 does support dynamic loading, but perl doesn't # know how to use it yet. usedl=${usedl:-undef} @@ -61,15 +76,16 @@ fi # by -DPLAIN_MALLOC and -DNO_FANCY_MALLOC. usemymalloc=${usemymalloc:-y} +# Older versions of MachTen malloc() data on a two-byte boundary, which +# works, but slows down operations on long, float and double data. +# Perl's malloc() can compensate if SYSTEM_ALLOC_ALIGNMENT is suitably +# defined. +if expr "$osvers" \< "4.1" >/dev/null +then +system_alloc_alignment=" -DSYSTEM_ALLOC_ALIGNMENT=2" +fi # Do not wrap the following long line -malloc_cflags='ccflags="$ccflags -DPLAIN_MALLOC -DNO_FANCY_MALLOC -DUSE_PERL_SBRK"' - -# Note that an empty malloc_cflags appears in config.sh if perl's -# malloc() is not used. his is harmless. -case "$usemymalloc" in -n) unset malloc_cflags;; -*) ccflags="$ccflags -DHIDEMYMALLOC" -esac +malloc_cflags='ccflags="$ccflags -DPLAIN_MALLOC -DNO_FANCY_MALLOC -DUSE_PERL_SBRK$system_alloc_alignment"' # When MachTen does a fork(), it immediately copies the whole of # the parent process' data space for the child. This can be @@ -150,19 +166,46 @@ alignbytes=8 # friends. Use setjmp and friends instead. expr "$osvers" \< "4.0.3" > /dev/null && d_sigsetjmp='undef' -# System V IPC support in MachTen 4.1 is incomplete (missing msg function +# System V IPC before MachTen 4.1.4 is incomplete (missing msg function # prototypes, no ftok()), buggy (semctl(.., .., IPC_STATUS, ..) hangs -# system), and undocumented. Claim it's not there until things improve. +# system), and undocumented. Claim it's not there at all before 4.1.4. +if expr "$osvers" \< "4.1.4" >/dev/null +then d_msg=${d_msg:-undef} d_sem=${d_sem:-undef} d_shm=${d_shm:-undef} +fi + + +# As of MachTen 4.1.4 the msg* and shm* are in libc but unimplemented +# (an attempt to use them causes a runtime error) +# XXX Configure probe for really functional msg*() is needed XXX +# XXX Configure probe for really functional shm*() is needed XXX +if test "$d_msg" = ""; then + d_msgget=${d_msgget:-undef} + d_msgctl=${d_msgctl:-undef} + d_msgsnd=${d_msgsnd:-undef} + d_msgrcv=${d_msgrcv:-undef} + case "$d_msgget$d_msgsnd$d_msgctl$d_msgrcv" in + *"undef"*) d_msg="$undef" ;; + esac +fi +if test "$d_shm" = ""; then + d_shmat=${d_shmat:-undef} + d_shmdt=${d_shmdt:-undef} + d_shmget=${d_shmget:-undef} + d_shmctl=${d_shmctl:-undef} + case "$d_shmat$d_shmctl$d_shmdt$d_shmget" in + *"undef"*) d_shm="$undef" ;; + esac +fi # Get rid of some extra libs which it takes Configure a tediously -# long time never to find on MachTen +# long time never to find on MachTen, or which break perl set `echo X "$libswanted "|sed -e 's/ net / /' -e 's/ socket / /' \ -e 's/ inet / /' -e 's/ nsl / /' -e 's/ nm / /' -e 's/ malloc / /' \ -e 's/ ld / /' -e 's/ sun / /' -e 's/ posix / /' \ - -e 's/ cposix / /' -e 's/ crypt / /' \ + -e 's/ cposix / /' -e 's/ crypt / /' -e 's/ dl / /' -e 's/ dld / /' \ -e 's/ ucb / /' -e 's/ bsd / /' -e 's/ BSD / /' -e 's/ PW / /'` shift libswanted="$*" @@ -198,6 +241,11 @@ Similarly, when you see select the default answer: vfork() works, and avoids expensive data copying. +You may also see "WHOA THERE!!!" messages concerning \$d_endspent, +\$d_getspent, \$d_getspnam and \$d_setspent. In all cases, select the +default answer: MachTen's support for shadow password file access is +incomplete, and should not be used. + At the end of Configure, you will see a harmless message Hmm...You had some extra variables I don't know about...I'll try to keep 'em. @@ -205,6 +253,7 @@ Hmm...You had some extra variables I don't know about...I'll try to keep 'em. Propagating recommended variable nmopts Propagating recommended variable malloc_cflags... Propagating recommended variable reg_infty + Propagating recommended variable system_alloc_alignment Read the File::Find documentation for more information about dont_use_nlink Your perl will be built with a stack size of ${stack_size}k and a regular diff --git a/contrib/perl5/hints/mint.sh b/contrib/perl5/hints/mint.sh index 22d854c397c6..ab55e612e100 100644 --- a/contrib/perl5/hints/mint.sh +++ b/contrib/perl5/hints/mint.sh @@ -18,7 +18,7 @@ cc='gcc' # The weird include path is really to work around some bugs in # broken system header files. -ccflags="-D__MINT__ -Uatarist -DDEBUGGING -I$here/../mint" +ccflags="$ccflags -D__MINT__ -Uatarist -DDEBUGGING -I$here/../mint" # libs @@ -44,6 +44,7 @@ util_cflags='ccflags="$ccflags -DLOCALE_ENVIRON_REQUIRED"' # # Some good answers to the questions in Configure: +# Does Configure really get all these wrong? usenm='true' d_suidsafe='true' clocktype='long' diff --git a/contrib/perl5/hints/mpeix.sh b/contrib/perl5/hints/mpeix.sh index 9ebb0bad1e1a..556d22148c62 100644 --- a/contrib/perl5/hints/mpeix.sh +++ b/contrib/perl5/hints/mpeix.sh @@ -12,7 +12,7 @@ # Revised again for 5.004_69 by Mark Bixby, markb@cccd.edu. # osname='mpeix' -osvers='5.5' +osvers='5.5' # Isn't there a way to determine this dynamically? # # Force Configure to use our wrapper mpeix/nm script # @@ -24,7 +24,8 @@ usenm='true' # # Various directory locations. # -prefix='/PERL/PUB' +# Which ones of these does Configure get wrong? +test -z "$prefix" && prefix='/PERL/PUB' archname='PA-RISC1.1' bin="$prefix" installman1dir="$prefix/man/man1" @@ -38,24 +39,30 @@ startsh='#!/bin/sh' # # Compiling. # -cc='gcc' +test -z "$cc" && cc='gcc' cccdlflags='none' -ccflags='-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -D_POSIX_JOB_CONTROL -DIS_SOCKET_CLIB_ITSELF' -locincpth='/usr/local/include /usr/contrib/include /BIND/PUB/include' -optimize='-O2' +ccflags="$ccflags -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -D_POSIX_JOB_CONTROL -DIS_SOCKET_CLIB_ITSELF" +locincpth="$locincpth /usr/local/include /usr/contrib/include /BIND/PUB/include" +test -z "$optimize" && optimize="-O2" ranlib='/bin/true' # Special compiling options for certain source files. +# But what if you want -g? regcomp_cflags='optimize=-O' toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"' # # Linking. # lddlflags='-b' -libs='-lbind -lsyslog -lcurses -lsvipc -lsocket -lm -lc' -loclibpth='/usr/local/lib /usr/contrib/lib /BIND/PUB/lib /SYSLOG/PUB' +# What if you want additional libs (e.g. gdbm)? +# This should remove the unwanted libraries from $libswanted and +# add on whatever ones are needed instead. +libs="$libs -lbind -lsyslog -lcurses -lsvipc -lsocket -lm -lc" +loclibpth="$loclibpth /usr/local/lib /usr/contrib/lib /BIND/PUB/lib /SYSLOG/PUB" # # External functions and data items. # +# Does Configure *really* get *all* of these wrong? +# d_crypt='define' d_difftime='define' d_dlerror='undef' diff --git a/contrib/perl5/hints/netbsd.sh b/contrib/perl5/hints/netbsd.sh index 6d99a13edfe7..7bd0a25c1deb 100644 --- a/contrib/perl5/hints/netbsd.sh +++ b/contrib/perl5/hints/netbsd.sh @@ -34,7 +34,7 @@ case "$osvers" in # we use -fPIC here because -fpic is *NOT* enough for some of the # extensions like Tk on some netbsd platforms (the sparc is one) cccdlflags="-DPIC -fPIC $cccdlflags" - lddlflags="-Bforcearchive -Bshareable $lddlflags" + lddlflags="-Bshareable $lddlflags" else d_dlopen=$undef fi @@ -63,10 +63,6 @@ case "$usevfork" in '') usevfork=true ;; esac -# Avoid telldir prototype conflict in pp_sys.c (NetBSD uses const DIR *) -# Configure should test for this. Volunteers? -pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"' - # Pre-empt the /usr/bin/perl question of installperl. installusrbinperl='n' diff --git a/contrib/perl5/hints/newsos4.sh b/contrib/perl5/hints/newsos4.sh index a33cb3154a31..3e447a556920 100644 --- a/contrib/perl5/hints/newsos4.sh +++ b/contrib/perl5/hints/newsos4.sh @@ -6,11 +6,10 @@ echo echo 'Compiling Tips:' echo 'When you have found that ld complains "multiple defined" error' echo 'on linking /lib/libdbm.a, do following instructions.' -echo ' cd /tmp (working on /tmp)' echo ' cp /lib/libdbm.a dbm.o (copy current libdbm.a)' echo ' ar cr libdbm.a dbm.o (make archive)' echo ' mv /lib/libdbm.a /lib/libdbm.a.backup (backup original library)' -echo ' cp /tmp/libdbm.a /lib (copy newer one)' +echo ' cp libdbm.a /lib (copy newer one)' echo ' ranlib /lib/libdbm.a (ranlib for later use)' echo diff --git a/contrib/perl5/hints/next_3.sh b/contrib/perl5/hints/next_3.sh index 99adf50ffe9f..27c9bd9877ad 100644 --- a/contrib/perl5/hints/next_3.sh +++ b/contrib/perl5/hints/next_3.sh @@ -32,8 +32,8 @@ # than no perl at all. # # So, this hintsfile is using perl's malloc. If you want to turn -# perl's malloc off, you need to remove '-DUSE_PERL_SBRK' and -# '-DHIDEMYMALLOC' from the ccflags and set usemymalloc to 'n'. +# perl's malloc off, you need to remove '-DUSE_PERL_SBRK' +# from the ccflags and set usemymalloc to 'n'. # # 1997: # From perl5.003_22 the malloc bug has no impact any more. We can run @@ -42,12 +42,12 @@ # # use the following two lines to enable USE_PERL_SBRK. Try this if you # encounter intermittent core dumps: -#ccflags='-DUSE_NEXT_CTYPE -DUSE_PERL_SBRK -DHIDEMYMALLOC' +#ccflags='-DUSE_NEXT_CTYPE -DUSE_PERL_SBRK' #usemymalloc='y' # use the following two lines if you have perl5.003_22 or better and # do not encounter intermittent core dumps. -ccflags='-DUSE_NEXT_CTYPE' +ccflags="$ccflags -DUSE_NEXT_CTYPE" usemymalloc='n' ###################################################################### diff --git a/contrib/perl5/hints/next_3_0.sh b/contrib/perl5/hints/next_3_0.sh index b8cc2c2d9052..b44457883028 100644 --- a/contrib/perl5/hints/next_3_0.sh +++ b/contrib/perl5/hints/next_3_0.sh @@ -16,11 +16,11 @@ echo find it. By default, it is placed in /usr/local/include/gdbm.h. >&4 echo It will not be found there. Try moving it to >&4 echo /NextDeveloper/Headers/bsd/gdbm.h. >&4 -ccflags='-DUSE_NEXT_CTYPE -DNEXT30_NO_ATTRIBUTE' +ccflags="$ccflags -DUSE_NEXT_CTYPE -DNEXT30_NO_ATTRIBUTE" POSIX_cflags='ccflags="-posix $ccflags"' useposix='undef' -ldflags='-u libsys_s' -libswanted='dbm gdbm db' +ldflags="$ldflags -u libsys_s" +libswanted="$libswanted dbm gdbm db" # lddlflags='-r' # Give cccdlflags an empty value since Configure will detect we are diff --git a/contrib/perl5/hints/next_4.sh b/contrib/perl5/hints/next_4.sh index d1d0398dd9ae..d5c8ba7d64e1 100644 --- a/contrib/perl5/hints/next_4.sh +++ b/contrib/perl5/hints/next_4.sh @@ -1,13 +1,3 @@ -###################################################################### -# -# IMPORTANT: before you run 'make', you need to enter one of these two -# lines (depending on your shell): -# DYLD_LIBRARY_PATH=`pwd`; export DYLD_LIBRARY_PATH -# or -# setenv DYLD_LIBRARY_PATH `pwd` -# -###################################################################### - # Posix support has been removed from NextStep # useposix='undef' @@ -16,9 +6,9 @@ libpth='/lib /usr/lib /usr/local/lib' libswanted=' ' libc='/NextLibrary/Frameworks/System.framework/System' -ldflags='-dynamic -prebind' -lddlflags='-dynamic -bundle -undefined suppress' -ccflags='-dynamic -fno-common -DUSE_NEXT_CTYPE -DUSE_PERL_SBRK -DHIDEMYMALLOC' +ldflags="$ldflags -dynamic -prebind" +lddlflags="$lddlflags -dynamic -bundle -undefined suppress" +ccflags="$ccflags -dynamic -fno-common -DUSE_NEXT_CTYPE -DUSE_PERL_SBRK" cccdlflags='none' ld='cc' #optimize='-g -O' @@ -106,3 +96,7 @@ clocktype='int' # running ranlib. The '5' is an empirical number that's "long enough." # (Thanks to Andreas Koenig ) ranlib='sleep 5; /bin/ranlib' + +case "$ldlibpthname" in +'') ldlibpthname=DYLD_LIBRARY_PATH ;; +esac diff --git a/contrib/perl5/hints/openbsd.sh b/contrib/perl5/hints/openbsd.sh index e9d8ea483d56..a7d8bf2950af 100644 --- a/contrib/perl5/hints/openbsd.sh +++ b/contrib/perl5/hints/openbsd.sh @@ -4,36 +4,50 @@ # Edited to allow Configure command-line overrides by # Andy Dougherty # +# To build with distribution paths, use: +# ./Configure -des -Dopenbsd_distribution=defined +# # OpenBSD has a better malloc than perl... test "$usemymalloc" || usemymalloc='n' # Currently, vfork(2) is not a real win over fork(2) but this will -# change in a future release. +# change starting with OpenBSD 2.7. usevfork='true' # setre?[ug]id() have been replaced by the _POSIX_SAVED_IDS versions # in 4.4BSD. Configure will find these but they are just emulated # and do not have the same semantics as in 4.3BSD. -d_setregid='undef' -d_setreuid='undef' -d_setrgid='undef' -d_setruid='undef' +d_setregid=$undef +d_setreuid=$undef +d_setrgid=$undef +d_setruid=$undef # -# Not all platforms support shared libs... +# Not all platforms support dynamic loading... # -case `uname -m` in -alpha|mips|powerpc|vax) - d_dlopen=$undef +case `arch` in +OpenBSD.alpha|OpenBSD.mips|OpenBSD.powerpc|OpenBSD.vax) + usedl=$undef ;; *) + usedl=$define d_dlopen=$define d_dlerror=$define # we use -fPIC here because -fpic is *NOT* enough for some of the # extensions like Tk on some OpenBSD platforms (ie: sparc) cccdlflags="-DPIC -fPIC $cccdlflags" - lddlflags="-Bforcearchive -Bshareable $lddlflags" + lddlflags="-Bshareable $lddlflags" + ;; +esac + +# +# Tweaks for various versions of OpenBSD +# +case "$osvers" in +2.5) + # OpenBSD 2.5 has broken odbm support + i_dbm=$undef ;; esac @@ -42,7 +56,7 @@ esac libswanted=`echo $libswanted | sed 's/ crypt / /'` # Configure can't figure this out non-interactively -d_suidsafe='define' +d_suidsafe=$define # cc is gcc so we can do better than -O # Allow a command-line override, such as -Doptimize=-g @@ -54,8 +68,34 @@ cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) # any openbsd version dependencies with pthreads? + ccflags="-pthread $ccflags" + ldflags="-pthread $ldflags" libswanted="$libswanted pthread" + # This is strange. + usevfork="$undef" esac EOCBU +# When building in the OpenBSD tree we use different paths +# This is only part of the story, the rest comes from config.over +case "$openbsd_distribution" in +''|$undef|false) ;; +*) + # We put things in /usr, not /usr/local + prefix='/usr' + prefixexp='/usr' + sysman='/usr/share/man/man1' + libpth='/usr/lib' + glibpth='/usr/lib' + # Ports installs non-std libs in /usr/local/lib so look there too + locincpth='/usr/local/include' + loclibpth='/usr/local/lib' + # Link perl with shared libperl + if [ "$usedl" = "$define" -a -r shlib_version ]; then + useshrplib=true + libperl=`. ./shlib_version; echo libperl.so.${major}.${minor}` + fi + ;; +esac + # end diff --git a/contrib/perl5/hints/os2.sh b/contrib/perl5/hints/os2.sh index 310ae913c490..1d9df3683f8a 100644 --- a/contrib/perl5/hints/os2.sh +++ b/contrib/perl5/hints/os2.sh @@ -95,6 +95,8 @@ libpth="$libpth $libemx/mt $libemx" set `emxrev -f emxlibcm` emxcrtrev=$5 +# indented to not put it into config.sh + _defemxcrtrev=-D_EMX_CRT_REV_=$emxcrtrev so='dll' @@ -124,8 +126,8 @@ fi aout_ldflags="$aout_ldflags" aout_d_fork='define' -aout_ccflags='-DPERL_CORE -DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I.' -aout_cppflags='-DPERL_CORE -DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I.' +aout_ccflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev" +aout_cppflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev" aout_use_clib='c' aout_usedl='undef' aout_archobjs="os2.o dl_os2.o" @@ -165,9 +167,9 @@ else # Recursive regmatch may eat 2.5M of stack alone. ldflags='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000' if [ $emxcrtrev -ge 50 ]; then - ccflags='-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I.' + ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. $_defemxcrtrev" else - ccflags='-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DEMX_BAD_SBRK' + ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DEMX_BAD_SBRK $_defemxcrtrev" fi use_clib='c_import' usedl='define' @@ -257,9 +259,56 @@ d_setprior='define' # Commented: #startsh='extproc ksh\\n#! sh' +# Find patch: +gnupatch='patch' +if (gnupatch -v || gnupatch --version) 2>&1 >/dev/null; then + gnupatch=gnupatch +else + if (gpatch -v || gpatch --version) 2>&1 >/dev/null; then + gnupatch=gpatch + else + # They may have a special PATH during configuring + if (patch -v || patch --version) 2>&1 >/dev/null; then + gnupatch="`./UU/loc patch.exe undef $pth`" + fi + fi +fi + +# Apply patches if needed +case "$0$running_c_cmd" in + *[/\\]Configure|*[/\\]Configure.|Configure|Configure.) # Skip Configure.cmd + if grep "^libnames" ./Configure > /dev/null; then + # Not patched! + if test -f ./Configure.cmd ; then + echo "!!!" >&2 + echo "!!! ./Configure not patched, but ./Configure.cmd exits" >&2 + echo "!!! Do not know what to do!" >&2 + echo "!!!" >&2 + exit 2 + fi + echo "!!!" >&2 + echo "!!! You did not patch ./Configure!" >&2 + echo "!!! I create Configure.cmd and patch it from ./os2/diff.configure." >&2 + echo "!!!" >&2 + echo "$gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch" >&2 + ($gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch) >&2 + echo "!!!" >&2 + echo "!!! The report of patching is copied to 00_auto_patch." >&2 + echo "!!! Now you need to restart Configure.cmd with all the options" >&2 + echo "!!!" >&2 + echo "extproc sh" > Configure.ctm + cat Configure.cmd >> Configure.ctm && mv -f Configure.ctm Configure.cmd + exit 0 + else + echo "!!! Apparently we are running a patched Configure." >&2 + fi + ;; + *) echo "!!! Apparently we are running a renamed Configure: '$0'." >&2 +esac + # Copy pod: -cp ./README.os2 ./pod/perlos2.pod +cp -uf ./README.os2 ./pod/perlos2.pod # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. @@ -304,6 +353,9 @@ for xxx in * ; do fi done +case "$ldlibpthname" in +'') ldlibpthname=none ;; +esac # Now go back cd ../.. diff --git a/contrib/perl5/hints/os390.sh b/contrib/perl5/hints/os390.sh index 08b60c878e4c..d6f68212422a 100644 --- a/contrib/perl5/hints/os390.sh +++ b/contrib/perl5/hints/os390.sh @@ -59,3 +59,51 @@ archobjs=ebcdic.o # We have our own cppstdin. echo 'cat >.$$.c; '"$cc"' -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin + +# +# Note that Makefile.SH employs a bare yacc to generate +# perly.[hc] and a2p.[hc], hence you may wish to: +# +# alias yacc='myyacc' +# +# Then if you would like to use myyacc and skip past the +# following warnings try invoking Configure like so: +# +# sh Configure -Dbyacc=yacc +# +# This trick ought to work even if your yacc is byacc. +# +if test "X$byacc" = "Xbyacc" ; then + if test -e /etc/yyparse.c ; then + : we should be OK - perhaps do a test -r? + else + cat <&4 + +Warning. You do not have a copy of yyparse.c, the default +yacc parser template file, in place in /etc. +EOWARN + if test -e /samples/yyparse.c ; then + cat <&4 + +There does appear to be a template file in /samples though. +Please run: + + cp /samples/yyparse.c /etc + +before attempting to Configure the build of $package. + +EOWARN + else + cat <&4 + +There does not appear to be one in /samples either. +If you feel you can make use of an alternate yacc-like +parser generator then please read the comments in the +hints/os390.sh file carefully. + +EOWARN + fi + exit 1 + fi +fi + diff --git a/contrib/perl5/hints/posix-bc.sh b/contrib/perl5/hints/posix-bc.sh new file mode 100644 index 000000000000..ec21bc327e44 --- /dev/null +++ b/contrib/perl5/hints/posix-bc.sh @@ -0,0 +1,42 @@ +#! /usr/bin/bash -norc +# hints/posix-bc.sh +# +# BS2000 (Posix Subsystem) hints by Thomas Dorner +# +# thanks to the authors of the os390.sh +# + +# To get ANSI C, we need to use c89, and ld doesn't exist +cc='c89' +ld='c89' + +# C-Flags: +ccflags='-DPOSIX_BC -DUSE_PURE_BISON -D_XOPEN_SOURCE_EXTENDED' + +# Flags on a RISC-Host (SUNRISE): +if [ -n "`bs2cmd SHOW-SYSTEM-INFO | egrep 'HSI-ATT.*TYPE.*SR'`" ]; then + echo + echo "Congratulations, you are running a machine with Sunrise CPUs." + echo "Let's hope you have the matching RISC compiler as well." + ccflags='-K risc_4000 -DPOSIX_BC -DUSE_PURE_BISON -D_XOPEN_SOURCE_EXTENDED' + ldflags='-K risc_4000' +fi + +# Turning on optimization breaks perl (CORE-DUMP): +optimize='none' + +# we don''t use dynamic memorys (yet): +so='none' +usedl='no' +dlext='none' + +# On BS2000/Posix, libc.a doesn't really hold anything at all, +# so running nm on it is pretty useless. +usenm='no' + +# other Options: + +usemymalloc='no' + +archobjs=ebcdic.o + diff --git a/contrib/perl5/hints/powerux.sh b/contrib/perl5/hints/powerux.sh index 6d6bac02ed76..4070c01767e4 100644 --- a/contrib/perl5/hints/powerux.sh +++ b/contrib/perl5/hints/powerux.sh @@ -52,7 +52,7 @@ d_csh='undef' # cc='/bin/cc' cccdlflags='-Zpic' -ccdlflags='-Zlink=dynamic -Wl,-Bexport' +ccdlflags='-Zlink=dynamic -Wl,-usys_nerr -Wl,-Bexport' lddlflags='-Zlink=so' # Configure sometime finds what it believes to be ndbm header files on the @@ -63,6 +63,12 @@ lddlflags='-Zlink=so' # i_ndbm='undef' +# I have no clude what perl thinks it wants for, but if +# you include it in a program in PowerMAX without first including +# the code don't compile... +# +i_sysmode='undef' + # There is a bug in memcmp (which I hope will be fixed soon) which sometimes # fails to provide the correct compare status (it is data dependant), so just # pretend there is no memcmp... @@ -85,6 +91,15 @@ useshrplib='false' # dont_use_nlink=define +# Configure comes up with the wrong type for these for some reason. The +# pointers shouldn't have const in them. (And it looks like I have to +# provide netdb_hlen_type as well becuase when I predefine the others it +# comes up empty :-). +# +netdb_host_type='char *' +netdb_name_type='char *' +netdb_hlen_type='int' + # Misc other flags that might be able to change, but I know these work right. # d_suidsafe='define' diff --git a/contrib/perl5/hints/qnx.sh b/contrib/perl5/hints/qnx.sh index b53a33d7370f..06d9010144ef 100644 --- a/contrib/perl5/hints/qnx.sh +++ b/contrib/perl5/hints/qnx.sh @@ -98,13 +98,9 @@ libc='/usr/lib/clib3r.lib' # constructs make a lot of noise, so I turn those warnings off. # A few still remain... # -# HIDEMYMALLOC is necessary if using mymalloc since it is very -# tricky (though not impossible) to totally replace the watcom -# malloc/free set. -# # unix.h is required as a general rule for unixy applications. #---------------------------------------------------------------- -ccflags='-DHIDEMYMALLOC -mf -w4 -Wc,-wcd=202 -Wc,-wcd=203 -Wc,-wcd=302 -Wc,-fi=unix.h' +ccflags='-mf -w4 -Wc,-wcd=202 -Wc,-wcd=203 -Wc,-wcd=302 -Wc,-fi=unix.h' #---------------------------------------------------------------- # ldflags: diff --git a/contrib/perl5/hints/rhapsody.sh b/contrib/perl5/hints/rhapsody.sh new file mode 100644 index 000000000000..933081ba090b --- /dev/null +++ b/contrib/perl5/hints/rhapsody.sh @@ -0,0 +1,67 @@ +## +# Rhapsody (Mac OS X Server) hints +# Wilfredo Sanchez +## + +## +# Paths +## + +# BSD paths +prefix='/usr'; +siteprefix='/usr/local'; +vendorprefix='/usr/local'; usevendorprefix='define'; + +# 4BSD uses /usr/share/man, not /usr/man. +# Don't put man pages in /usr/lib; that's goofy. +man1dir='/usr/share/man/man1'; +man3dir='/usr/share/man/man3'; + +# Where to put modules. +privlib='/System/Library/Perl'; +sitelib='/Local/Library/Perl'; +vendorlib='/Network/Library/Perl'; + +## +# Tool chain settings +## + +# Since we can build fat, the archname doesn't need the processor type +archname='rhapsody'; + +# nm works. +usenm='true'; + +# Libc is in libsystem. +libc='/System/Library/Frameworks/System.framework/System'; + +# Optimize. +optimize='-O3'; + +# We have a prototype for telldir. +ccflags="${ccflags} -pipe -fno-common -DHAS_TELLDIR_PROTOTYPE"; + +# Shared library extension is .dylib. +# Bundle extension is .bundle. +ld='cc'; +so='dylib'; +dlext='bundle'; +dlsrc='dl_dyld.xs'; +usedl='define'; +cccdlflags=''; +lddlflags="${ldflags} -bundle -undefined suppress"; +ldlibpthname='DYLD_LIBRARY_PATH'; +useshrplib='true'; +base_address='0x4be00000'; + +## +# System libraries +## + +# vfork works +usevfork='true'; + +# malloc works +usemymalloc='n'; + + diff --git a/contrib/perl5/hints/sco.sh b/contrib/perl5/hints/sco.sh index eb598452a1de..079ab78035af 100644 --- a/contrib/perl5/hints/sco.sh +++ b/contrib/perl5/hints/sco.sh @@ -9,6 +9,8 @@ # Mostly rewritten on # Tue Jan 19 23:00:00 CET 1999 # by Francois Desarmenien +# Modified by Boyd Gerber +# Tue Sep 21 1999 ############################################################### # # To use cc, use sh Configure @@ -82,6 +84,7 @@ case `/bin/uname -X | egrep '3\.2v'` in echo "" >&4 echo "" >&4 echo " For UnixWare, use svr4.sh hints instead" >&4 + echo " For UnixWare 7.*, use svr5.sh hints instead" >&4 echo "" >&4 echo "***********************************************************" >&4 exit @@ -102,7 +105,7 @@ if test "$scorls" = "3" then dlext='' case "$cc" in - gcc) optimize='-O2' ;; + *gcc*) optimize='-O2' ;; *) ccflags="$ccflags -W0 -quiet" optimize='-O' ;; esac @@ -114,7 +117,7 @@ else ############################################################### # In Release 5, always compile ELF objects case "$cc" in - gcc) + *gcc*) ccflags="$ccflags -melf" optimize='-O2' ;; @@ -139,7 +142,7 @@ else if test "$usedl" != "n"; then ld='ld' case "$cc" in - gcc) + *gcc*) ccdlflags='-Xlinker -Bexport -L/usr/local/lib' cccdlflags='-fpic' lddlflags='-G -L/usr/local/lib' @@ -177,6 +180,13 @@ set X $libswanted shift libswanted="$*" +############################################################### +# Remove libbind because it conflicts with libsocket. +libswanted=`echo " $libswanted " | sed -e 's/ bind / /'` +set X $libswanted +shift +libswanted="$*" + ############################################################### # Try to use libintl.a since it has strcoll and strxfrm libswanted="intl $libswanted" diff --git a/contrib/perl5/hints/solaris_2.sh b/contrib/perl5/hints/solaris_2.sh index 935f00d877ea..8aee6d40dc00 100644 --- a/contrib/perl5/hints/solaris_2.sh +++ b/contrib/perl5/hints/solaris_2.sh @@ -1,6 +1,6 @@ # hints/solaris_2.sh -# Last modified: Wed May 27 13:04:45 EDT 1998 -# Andy Dougherty +# Last modified: Tue Apr 13 13:12:49 EDT 1999 +# Andy Dougherty # Based on input from lots of folks, especially # Dean Roehrich @@ -9,7 +9,10 @@ # way to do that is to invoke Configure with # # sh Configure -Dcc='gcc -B/usr/ccs/bin/' -# +# +# (Note that the trailing slash is *required*.) +# gcc will occasionally emit warnings about "unused prefix", but +# these ought to be harmless. See below for more details. # See man vfork. usevfork=false @@ -42,15 +45,51 @@ case "$archname" in ;; esac +test -z "`${cc:-cc} -V 2>&1|grep -i workshop`" || ccisworkshop="$define" +test -z "`${cc:-cc} -v 2>&1|grep -i gcc`" || ccisgcc="$define" + +cat >UU/workshoplibpth.cbu<<'EOCBU' +case "$workshoplibpth_done" in +'') case "$use64bitall" in + "$define"|true|[yY]*) + loclibpth="$loclibpth /usr/lib/sparcv9" + if test -n "$workshoplibs"; then + loclibpth=`echo $loclibpth | sed -e "s% $workshoplibs%%" ` + for lib in $workshoplibs; do + # Logically, it should be sparcv9. + # But the reality fights back, it's v9. + loclibpth="$loclibpth $lib/sparcv9 $lib/v9" + done + fi + ;; + *) loclibpth="$loclibpth $workshoplibs" + ;; + esac + workshoplibpth_done="$define" + ;; +esac +EOCBU + +case "$ccisworkshop" in +"$define") + cat >try.c < +int main() { return(0); } +EOF + workshoplibs=`cc -### try.c -lsunmath -o try 2>&1|grep " -Y "|sed 's%.* -Y "P,\(.*\)".*%\1%'|tr ':' '\n'|grep '/SUNWspro/'` + . ./UU/workshoplibpth.cbu + ;; +esac + ###################################################### # General sanity testing. See below for excerpts from the Solaris FAQ. - +# # From roehrich@ironwood-fddi.cray.com Wed Sep 27 12:51:46 1995 # Date: Thu, 7 Sep 1995 16:31:40 -0500 # From: Dean Roehrich # To: perl5-porters@africa.nicoh.com # Subject: Re: On perl5/solaris/gcc - +# # Here's another draft of the perl5/solaris/gcc sanity-checker. case `type ${cc:-cc}` in @@ -140,6 +179,19 @@ cat > UU/cc.cbu <<'EOSH' # # Watch out in case they have not set $cc. +# Perl compiled with some combinations of GNU as and ld may not +# be able to perform dynamic loading of extensions. If you have a +# problem with dynamic loading, be sure that you are using the Solaris +# /usr/ccs/bin/as and /usr/ccs/bin/ld. You can do that with +# sh Configure -Dcc='gcc -B/usr/ccs/bin/' +# (note the trailing slash is required). +# Combinations that are known to work with the following hints: +# +# gcc-2.7.2, GNU as 2.7, GNU ld 2.7 +# egcs-1.0.3, GNU as 2.9.1 and GNU ld 2.9.1 +# --Andy Dougherty +# Tue Apr 13 17:19:43 EDT 1999 + # Get gcc to share its secrets. echo 'main() { return 0; }' > try.c # Indent to avoid propagation to config.sh @@ -149,7 +201,6 @@ if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then # # Using gcc. # - #echo Using gcc tmp=`echo "$verbose" | grep '^Reading' | awk '{print $NF}' | sed 's/specs$/include/'` @@ -157,67 +208,76 @@ if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then # Determine if the fixed-includes look like they'll work. # Doesn't work anymore for gcc-2.7.2. - # See if as(1) is GNU as(1). GNU as(1) won't work for this job. + # See if as(1) is GNU as(1). GNU as(1) might not work for this job. if echo "$verbose" | grep ' /usr/ccs/bin/as ' >/dev/null 2>&1; then : else cat <&2 -NOTE: You are using GNU as(1). GNU as(1) will not build Perl. -I'm arranging to use /usr/ccs/bin/as by including -B/usr/ccs/bin/ +NOTE: You are using GNU as(1). GNU as(1) might not build Perl. If you +have trouble, you can use /usr/ccs/bin/as by including -B/usr/ccs/bin/ in your ${cc:-cc} command. (Note that the trailing "/" is required.) END - cc="${cc:-cc} -B/usr/ccs/bin/" + # Apparently not needed, at least for as 2.7 and later. + # cc="${cc:-cc} -B/usr/ccs/bin/" fi - # See if ld(1) is GNU ld(1). GNU ld(1) won't work for this job. + # See if ld(1) is GNU ld(1). GNU ld(1) might not work for this job. # Recompute $verbose since we may have just changed $cc. verbose=`${cc:-cc} -v -o try try.c 2>&1 | grep ld 2>&1` + if echo "$verbose" | grep ' /usr/ccs/bin/ld ' >/dev/null 2>&1; then + # Ok, gcc directly calls the Solaris /usr/ccs/bin/ld. + : + elif echo "$verbose" | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then + # Hmm. gcc doesn't call /usr/ccs/bin/ld directly, but it + # does appear to be using it eventually. egcs-1.0.3's ld + # wrapper does this. + # All Solaris versions of ld I've seen contain the magic + # string used in the grep. : else - # It's not /usr/ccs/bin/ld - but it might be egcs's ld wrapper, - # which calls /usr/ccs/bin/ld in turn. Passing -V to it will - # make it show its true colors. + # No evidence yet of /usr/ccs/bin/ld. Some versions + # of egcs's ld wrapper call /usr/ccs/bin/ld in turn but + # apparently don't reveal that unless you pass in -V. + # (This may all depend on local configurations too.) myld=`echo $verbose| grep ld | awk '/\/ld/ {print $1}'` - # This assumes that gcc's output will not change, and that - # /full/path/to/ld will be the first word of the output. + # This assumes that gcc's output will not change, and that + # /full/path/to/ld will be the first word of the output. + # Thus myld is something like opt/gnu/sparc-sun-solaris2.5/bin/ld - # all Solaris versions of ld I've seen contain the magic - # string used in the grep below. - if $myld -V 2>&1 | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then - cat <&2 + if $myld -V 2>&1 | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then + # Ok, /usr/ccs/bin/ld eventually does get called. + : + else + cat <&2 -Aha. You're using egcs and /usr/ccs/bin/ld. - -END - - else - cat <&2 - -NOTE: You are using GNU ld(1). GNU ld(1) will not build Perl. -I'm arranging to use /usr/ccs/bin/ld by including -B/usr/ccs/bin/ +NOTE: You are using GNU ld(1). GNU ld(1) might not build Perl. If you +have trouble, you can use /usr/ccs/bin/ld by including -B/usr/ccs/bin/ in your ${cc:-cc} command. (Note that the trailing "/" is required.) +I will try to use GNU ld by passing in the -Wl,-E flag, but if that +doesn't work, you should use -B/usr/ccs/bin/ instead. + END - cc="${cc:-cc} -B/usr/ccs/bin/" - fi + ccdlflags="$ccdlflags -Wl,-E" + lddlflags="$lddlflags -W,l-E -G" + fi fi else # # Not using gcc. # - #echo Not using gcc - # See if as(1) is GNU as(1). GNU as(1) won't work for this job. + # See if as(1) is GNU as(1). GNU might not work for this job. case `as --version < /dev/null 2>&1` in *GNU*) cat <&2 -NOTE: You are using GNU as(1). GNU as(1) will not build Perl. +NOTE: You are using GNU as(1). GNU as(1) might not build Perl. You must arrange to use /usr/ccs/bin/as, perhaps by adding /usr/ccs/bin to the beginning of your PATH. @@ -225,7 +285,7 @@ END ;; esac - # See if ld(1) is GNU ld(1). GNU ld(1) won't work for this job. + # See if ld(1) is GNU ld(1). GNU ld(1) might not work for this job. # ld --version doesn't properly report itself as a GNU tool, # as of ld version 2.6, so we need to be more strict. TWP 9/5/96 gnu_ld=false @@ -245,8 +305,8 @@ END if $gnu_ld ; then cat <&2 -NOTE: You are apparently using GNU ld(1). GNU ld(1) will not build Perl. -You must arrange to use /usr/ccs/bin/ld, perhaps by adding /usr/ccs/bin +NOTE: You are apparently using GNU ld(1). GNU ld(1) might not build Perl. +You should arrange to use /usr/ccs/bin/ld, perhaps by adding /usr/ccs/bin to the beginning of your PATH. END @@ -261,9 +321,9 @@ rm -f core # XXX EOSH +cat > UU/usethreads.cbu <<'EOCBU' # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. -cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) ccflags="-D_REENTRANT $ccflags" @@ -309,6 +369,135 @@ EOM esac EOCBU +cat > UU/uselargefiles.cbu <<'EOCBU' +# This script UU/uselargefiles.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use large files. +case "$uselargefiles" in +''|$define|true|[yY]*) + ccflags="$ccflags `getconf LFS_CFLAGS 2>/dev/null`" + ldflags="$ldflags `getconf LFS_LDFLAGS 2>/dev/null`" + libswanted="$libswanted `getconf LFS_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + ;; +esac +EOCBU + +cat > UU/use64bitint.cbu <<'EOCBU' +# This script UU/use64bitint.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use 64 bit integers. +case "$use64bitint" in +"$define"|true|[yY]*) + case "`uname -r`" in + 2.[1-6]) + cat >&4 < UU/use64bitall.cbu <<'EOCBU' +# This script UU/use64bitall.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to be maximally 64 bitty. +case "$use64bitall-$use64bitall_done" in +"$define-"|true-|[yY]*-) + libc='/usr/lib/sparcv9/libc.so' + if test ! -f $libc; then + cat >&4 </dev/null" in + *gcc*) + echo 'main() { return 0; }' > try.c + if ${cc:-cc} -mcpu=v9 -m64 -S try.c 2>&1 | grep -e \ + '-m64 is not supported by this configuration'; then + cat >&4 </dev/null` != X; then + ccflags="$ccflags -Wa,`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`" + fi + # no changes to ld flags, as (according to man ld): + # + # There is no specific option that tells ld to link 64-bit + # objects; the class of the first object that gets processed + # by ld determines whether it is to perform a 32-bit or a + # 64-bit link edit. + ;; + *) + ccflags="$ccflags `getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`" + ldflags="$ldflags `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`" + lddlflags="$lddlflags -G `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`" + ;; + esac + libscheck='case "`/usr/bin/file $xxx`" in +*64-bit*|*SPARCV9*) ;; +*) xxx=/no/64-bit$xxx ;; +esac' + use64bitall_done=yes + ;; +esac +EOCBU + +# Actually, we want to run this already now, if so requested, +# because we need to fix up things right now. +case "$use64bitall" in +"$define"|true|[yY]*) + . ./UU/use64bitall.cbu + ;; +esac + +cat > UU/uselongdouble.cbu <<'EOCBU' +# This script UU/uselongdouble.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use long doubles. +case "$uselongdouble-$uselongdouble_done" in +"$define-"|true-|[yY]*-) + case "$ccisworkshop" in + '') cat >&4 < /dev/null <<'End_of_Solaris_Notes' @@ -440,5 +629,51 @@ Date: 25 Jul 1995 12:20:18 GMT Perl 5 compiled out of the box. +7.0) 64-bitness, from Alan Burlison (added by jhi 2000-02-21) + + You need a machine running Solaris 2.7 or above. + + Here's some rules: + + 1. Solaris 2.7 and above will run in either 32 bit or 64 bit mode, + via a reboot. + 2. You can build 64 bit apps whilst running 32 bit mode and vice-versa. + 3. 32 bit apps will run under Solaris running in either 32 or 64 bit mode. + 4. 64 bit apps require Solaris to be running 64 bit mode + 5. It is possible to select the appropriate 32 or 64 bit version of an + app at run-time using isaexec(3). + 6. You can detect the OS mode using "isainfo -v", e.g. + fubar$ isainfo -v # Ultra 30 in 64 bit mode + 64-bit sparcv9 applications + 32-bit sparc applications + 7. To compile 64 bit you need to use the flag "-xarch=v9". + getconf(1) will tell you this, e.g. + fubar$ getconf -a | grep v9 + XBS5_LP64_OFF64_CFLAGS: -xarch=v9 + XBS5_LP64_OFF64_LDFLAGS: -xarch=v9 + XBS5_LP64_OFF64_LINTFLAGS: -xarch=v9 + XBS5_LPBIG_OFFBIG_CFLAGS: -xarch=v9 + XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch=v9 + XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch=v9 + _XBS5_LP64_OFF64_CFLAGS: -xarch=v9 + _XBS5_LP64_OFF64_LDFLAGS: -xarch=v9 + _XBS5_LP64_OFF64_LINTFLAGS: -xarch=v9 + _XBS5_LPBIG_OFFBIG_CFLAGS: -xarch=v9 + _XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch=v9 + _XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch=v9 + + > > Now, what should we do, then? Should -Duse64bits in a v9 box cause + > > Perl to compiled in v9 mode? Or should we for compatibility stick + > > with 32 bit builds and let the people in the know to add the -xarch=v9 + > > to ccflags (and ldflags?)? + + > I think the second (explicit) mechanism should be the default. Unless + > you want to allocate more than ~ 4Gb of memory inside Perl, you don't + > need Perl to be a 64-bit app. Put it this way, on a machine running + > Solaris 8, there are 463 executables under /usr/bin, but only 15 of + > those require 64 bit versions - mainly because they invade the kernel + > address space, e.g. adb, kgmon etc. Certainly we don't recommend users + > to build 64 bit apps unless they need the address space. + End_of_Solaris_Notes diff --git a/contrib/perl5/hints/sunos_4_1.sh b/contrib/perl5/hints/sunos_4_1.sh index 4585d793d76c..af0bca1398f1 100644 --- a/contrib/perl5/hints/sunos_4_1.sh +++ b/contrib/perl5/hints/sunos_4_1.sh @@ -25,8 +25,20 @@ d_tzname='undef' # The gcc fix-includes script exposes those incorrect prototypes. # There may be other examples as well. Volunteers are welcome to # track them all down :-). In the meantime, we'll just skip unistd.h -# for SunOS in most of the code. (However, see ext/POSIX/hints/sunos_4.pl.) +# for SunOS in most of the code. +# However, see ext/POSIX/hints/sunos_4.pl for one exception. i_unistd='undef' +# See util.c for another: We need _SC_OPEN_MAX, which is in +# . + +# fflush(NULL) will core dump on SunOS 4.1.3. In util.c we'll +# try explicitly fflushing all open files. Unfortunately, +# on my SunOS 4.1.3 system, sysconf(_SC_OPEN_MAX) returns +# 64, but only 32 of those file pointers can be accessed +# directly by _iob[i]. The remainder are off in dynamically +# allocated memory somewhere and I don't know to automatically +# fflush() them. -- Andy Dougherty Wed May 26 15:25:22 EDT 1999 +util_cflags='ccflags="$ccflags -DPERL_FFLUSH_ALL_FOPEN_MAX=32"' cat << 'EOM' >&4 diff --git a/contrib/perl5/hints/svr4.sh b/contrib/perl5/hints/svr4.sh index cf6906dac78c..8109b3975287 100644 --- a/contrib/perl5/hints/svr4.sh +++ b/contrib/perl5/hints/svr4.sh @@ -142,12 +142,3 @@ d_lstat=define d_suidsafe='define' # "./Configure -d" can't figure this out easilly -cat <<'EOM' >&4 - -If you wish to use dynamic linking, you must use - LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH -or - setenv LD_LIBRARY_PATH `pwd` -before running make. - -EOM diff --git a/contrib/perl5/hints/svr5.sh b/contrib/perl5/hints/svr5.sh new file mode 100644 index 000000000000..f73689507a23 --- /dev/null +++ b/contrib/perl5/hints/svr5.sh @@ -0,0 +1,221 @@ +# svr5 hints, System V Release 5.x (UnixWare 7) +# mods after mail fm Andy Dougherty +# Reworked by hops@sco.com Sept/Oct 1999 for UW7.1 platform support +# Boyd Gerber, gerberb@zenez.com 1999/09/21 for threads support. +# Originally taken from svr4 hints.sh 21-Sep-98 hops@sco.com +# which was version of 1996/10/25 by Tye McQueen, tye@metronet.com + +# Use Configure -Dusethreads to enable threads. +# Use Configure -Dcc=gcc to use gcc. +case "$cc" in +*gcc*) + # "$gccversion" not set yet + vers=`gcc -v 2>&1 | sed -n -e 's@.*version \([^ ][^ ]*\) .*@\1@p'` + case $vers in + *2.95*) + ccflags='-fno-strict-aliasing' + # More optimisation provided in gcc-2.95 causes miniperl to segv. + # -fno-strict-aliasing is supposed to correct this but + # if it doesn't and you get segv when the build runs miniperl then + # disable optimisation as below + # optimize=' ' + ;; + esac + ;; +esac + +# Hardwire the processor to 586 for consistancy with autoconf +# archname='i586-svr5' +# -- seems this is generally disliked by perl porters so leave it to float + +# Our default setup excludes anything from /usr/ucblib (and consequently dbm) +# as later modules assume symbols found are available in shared libs +# On svr5 these are static archives which causes problems for +# dynamic modules loaded later (and ucblib is a bad dream anyway) +# +# However there is a dbm library built from the ucb sources outside ucblib +# at http://www.sco.com/skunkware (installing into /usr/local) so if we +# detect this we'll use it. You can change the default +# (to allow ucblib and its dbm or disallowing non ucb dbm) by +# changing 'want_*' config values below to '' to disable or otherwise to enable + +# Leave leading tabs so Configure doesn't propagate variables to config.sh + + want_ucb='' # don't use anything from /usr/ucblib - icky + want_dbm='yes' # use dbm if can find library in /usr/local/lib + want_gdbm='yes' # use gdbm if can find library in /usr/local/lib + want_udk70='' # link with old static libc pieces + # link with udk70 if building on 7.1 abd want resulting binary + # to run on uw7.0* - it will link in referenced static symbols + # of libc that are (now) in the shared libc.so on 7.1 but were + # not there in 7.0. + # There are still scenarios where this is still insufficient so + # overall it is preferable to get ptf7051e + # ftp://ftp.sco.com/SLS/ptf7051e.Z + # installed on any/all 7.0 systems and leave the above unset. + +if [ "$want_ucb" ] ; then + ldflags= '-L/usr/ucblib' + ccflags='-I/usr/ucbinclude' + # /usr/ccs/include and /usr/ccs/lib are used implicitly by cc as reqd +else + libswanted=`echo " $libswanted " | sed -e 's/ ucb / /'` + glibpth=`echo " $glibpth " | sed -e 's/ \/usr\/ucblib / /'` + + # If see libdbm in /usr/local and not overidden assume its the + # non ucblib rebuild from skunkware and use it + if [ ! -f /usr/local/lib/libdbm.so -o ! "$want_dbm" ] ; then + i_dbm='undef' + libswanted=`echo " $libswanted " | sed -e 's/ dbm / /'` + fi +fi + +if [ ! "$want_gdbm" ] ; then + i_gdbm='undef' + libswanted=`echo " $libswanted " | sed -e 's/ gdbm / /'` +fi + + +# Don't use problematic libraries: +# libmalloc.a - Probably using Perl's malloc() anyway. +# libc: on UW7 don't want -lc explicitly as native cc gives warnings/errors +libswanted=`echo " $libswanted " | sed -e 's/ malloc / /' -e 's/ c / /'` + +# remove /shlib and /lib from library search path as both symlink to /usr/lib +# where runtime shared libc is +glibpth=`echo " $glibpth " | sed -e 's/ \/shlib / /' -e 's/ \/lib / /` + +# Don't use BSD emulation pieces (/usr/ucblib) regardless +# these would probably be autonondetected anyway but ... +d_Gconvert='gcvt((x),(n),(b))' # Try gcvt() before gconvert(). +d_bcopy='undef' d_bcmp='undef' d_bzero='undef' d_safebcpy='undef' +d_index='undef' d_killpg='undef' d_getprior='undef' d_setprior='undef' +d_setlinebuf='undef' +d_setregid='undef' d_setreuid='undef' # -- in /usr/lib/libc.so.1 + + +# Broken C-Shell tests (Thanks to Tye McQueen): +# The OS-specific checks may be obsoleted by the this generic test. + sh_cnt=`sh -c 'echo /*' | wc -c` + csh_cnt=`csh -f -c 'glob /*' 2>/dev/null | wc -c` + csh_cnt=`expr 1 + $csh_cnt` +if [ "$sh_cnt" -ne "$csh_cnt" ]; then + echo "You're csh has a broken 'glob', disabling..." >&2 + d_csh='undef' +fi + +# Unixware-specific problems. UW7 give correctname with uname -s +# UnixWare has a broken csh. (This might already be detected above). +# Configure can't detect memcpy or memset on Unixware 2 or 7 +# +# Leave leading tabs on the next two lines so Configure doesn't +# propagate these variables to config.sh + uw_ver=`uname -v` + uw_isuw=`uname -s 2>&1` + +if [ "$uw_isuw" = "UnixWare" ]; then + case $uw_ver in + 7.1*) + d_csh='undef' + d_memcpy='define' + d_memset='define' + stdio_cnt='((fp)->__cnt)' + d_stdio_cnt_lval='define' + stdio_ptr='((fp)->__ptr)' + d_stdio_ptr_lval='define' + + d_bcopy='define' # In /usr/lib/libc.so.1 + d_setregid='define' # " + d_setreuid='define' # " + + if [ -f /usr/ccs/lib/libcudk70.a -a "$want_udk70" ] ; then + libswanted=" $libswanted cudk70" + fi + ;; + 7*) + d_csh='undef' + d_memcpy='define' + d_memset='define' + stdio_cnt='((fp)->__cnt)' + d_stdio_cnt_lval='define' + stdio_ptr='((fp)->__ptr)' + d_stdio_ptr_lval='define' + ;; + esac +fi +# End of Unixware-specific tests. + +############################################################### +# Dynamic loading section: Is default so it should just happen. +# set below to explicitly force. +# usedl='define' +# dlext='so' +# dlsrc='dl_dlopen.xs' +# +# ccdlflags : must tell the linker to export all global symbols +# cccdlflags: must tell the compiler to generate relocatable code +# lddlflags : must tell the linker to output a shared library + +# use shared perl lib +useshrplib='true' + +case "$cc" in + *gcc*) + ccdlflags='-Xlinker -Bexport ' + cccdlflags='-fpic' + lddlflags='-G ' + ;; + + *) + ccdlflags='-Wl,-Bexport' + cccdlflags='-Kpic' + lddlflags='-G -Wl,-Bexport' + ;; +esac + +############################################################################ +# Thread support +# use Configure -Dusethreads to enable +# This script UU/usethreads.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOCBU' +case "$usethreads" in +$define|true|[yY]*) + ccflags="$ccflags" + shift + libswanted="$*" + case "$cc" in + *gcc*) + ccflags="-D_REENTRANT $ccflags -fpic -pthread" + cccdlflags='-fpic' + lddlflags='-pthread -G ' + ;; + *) + ccflags="-D_REENTRANT $ccflags -KPIC -Kthread" + ccdlflags='-Kthread -Wl,-Bexport' + cccdlflags='-KPIC -Kthread' + lddlflags='-G -Kthread -Wl,-Bexport ' + ldflags='-Kthread' + ;; + esac +esac +EOCBU + + +d_suidsafe='define' # "./Configure -d" can't figure this out easily + +################## final caveat msgs to builder ############### +cat <<'EOM' >&4 + +If you wish to use dynamic linking, you must use + LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH +or + setenv LD_LIBRARY_PATH `pwd` +before running make. + +If you are using shared libraries from /usr/local/lib +for libdbm or libgdbm you may need to set + LD_RUN_PATH=/usr/local/lib; export LD_RUN_PATH +in order for Configure to compile the simple test program + +EOM diff --git a/contrib/perl5/hints/ultrix_4.sh b/contrib/perl5/hints/ultrix_4.sh index 7b841e53fbb6..f418ea18ee38 100644 --- a/contrib/perl5/hints/ultrix_4.sh +++ b/contrib/perl5/hints/ultrix_4.sh @@ -34,16 +34,16 @@ case "$cc" in *gcc*) ;; *) case "$osvers" in - *4.1*) ccflags="$ccflags -DLANGUAGE_C -Olimit 3400" ;; - *4.2*) ccflags="$ccflags -DLANGUAGE_C -Olimit 3400" + *4.1*) ccflags="$ccflags -DLANGUAGE_C -Olimit 3800" ;; + *4.2*) ccflags="$ccflags -DLANGUAGE_C -Olimit 3800" # Prototypes sometimes cause compilation errors in 4.2. prototype=undef case "$myuname" in *risc*) d_volatile=undef ;; esac ;; - *4.3*) ccflags="$ccflags -std1 -DLANGUAGE_C -Olimit 3400" ;; - *) ccflags="$ccflags -std -Olimit 3400" ;; + *4.3*) ccflags="$ccflags -std1 -DLANGUAGE_C -Olimit 3800" ;; + *) ccflags="$ccflags -std -Olimit 3800" ;; esac ;; esac @@ -64,3 +64,7 @@ groupstype='int' # configure test should be beefed up to try using the field when # it can't find any of the standardly-named fields. d_dirnamlen='define' + +# Ultrix can mmap only character devices, not regular files, +# which is rather useless state of things for Perl. +d_mmap='undef' diff --git a/contrib/perl5/hints/unicos.sh b/contrib/perl5/hints/unicos.sh index ab0203bec618..7ffd73fbcc04 100644 --- a/contrib/perl5/hints/unicos.sh +++ b/contrib/perl5/hints/unicos.sh @@ -14,3 +14,5 @@ case "$usemymalloc" in usemymalloc='n' ;; esac +# Configure gets fooled for some reason. There is no getpgid(). +d_getpgid='undef' diff --git a/contrib/perl5/hints/unicosmk.sh b/contrib/perl5/hints/unicosmk.sh index f0b63cb0ebec..f3416ffe34be 100644 --- a/contrib/perl5/hints/unicosmk.sh +++ b/contrib/perl5/hints/unicosmk.sh @@ -8,3 +8,25 @@ case "$usemymalloc" in ccflags="$ccflags -DNO_RCHECK" ;; esac +# If somebody ignores the Cray PATH. +case ":$PATH:" in +*:/opt/ctl/bin:*) ;; +'') case "$cc" in + '') test -x /opt/ctl/bin/cc && cc=/opt/ctl/bin/cc ;; + esac + ;; +esac +# As of UNICOS/mk 2.0.5.24 the shm* are in libc but unimplemented +# (an attempt to use them causes a runtime error) +# XXX Configure probe for really functional shm*() is needed XXX +if test "$d_shm" = ""; then + d_shmat=${d_shmat:-undef} + d_shmdt=${d_shmdt:-undef} + d_shmget=${d_shmget:-undef} + d_shmctl=${d_shmctl:-undef} + case "$d_shmat$d_shmctl$d_shmdt$d_shmget" in + *"undef"*) d_shm="$undef" ;; + esac +fi + + diff --git a/contrib/perl5/hints/vmesa.sh b/contrib/perl5/hints/vmesa.sh new file mode 100644 index 000000000000..bc033878229e --- /dev/null +++ b/contrib/perl5/hints/vmesa.sh @@ -0,0 +1,338 @@ +# hints/vmesa.sh +# +# VM/ESA hints by Neale Ferguson (neale@mailbox.tabnsw.com.au) +# +# Currently (1999-Jan-09) Configure cannot be used in VM/ESA because +# too many things are done differently in the C compiler environment. +# Therefore the hints file is hand-crafted. --jhi@iki.fi +# + +case "$archname" in +'') archname="$osname" ;; +esac +bin='/usr/local/bin' +binexp='/usr/local/bin' +byacc='byacc' +c='\c' +cc='c89' +ccflags="-D_OE_SOCKETS -DOLD_PTHREADS_API -DYYDYNAMIC -DDEBUGGING -I.." \ + "-I/usr/local/include -W c,hwopts\\\(string\\\),langlvl\\\(ansi\\\)" +clocktype='clock_t' +cryptlib="n" +d_Gconvert='gcvt((x),(n),(b))' +d_access='define' +d_alarm='define' +d_archlib='define' +# randbits='15' +archobjs="ebcdic.o vmesa.o" +d_attribut='undef' +d_bcmp='define' +d_bcopy='define' +d_bsd='undef' +d_bsdgetpgrp='undef' +d_bsdsetpgrp='undef' +d_bzero='define' +d_casti32='define' +d_castneg='define' +d_charvspr='undef' +d_chown='define' +d_chroot='undef' +d_chsize='undef' +d_closedir='define' +d_const='define' +d_crypt='undef' +d_csh='undef' +d_cuserid='define' +d_dbl_dig='define' +d_difftime='define' +d_dirnamlen='undef' +d_dlerror='define' +d_dlopen='define' +d_dlsymun='define' +d_dosuid='undef' +d_dup2='define' +d_endgrent='undef' +d_endpwent='undef' +d_eofnblk='define' +d_eunice='undef' +d_fchmod='define' +d_fchown='define' +d_fcntl='define' +d_fd_macros='define' +d_fd_set='define' +d_fds_bits='define' +d_fgetpos='define' +d_flexfnam='define' +d_flock='undef' +d_fork='undef' +d_fpathconf='define' +d_fsetpos='define' +d_ftime='undef' +d_getgrent='undef' +d_gethent='define' +d_gethname='undef' +d_getlogin='define' +d_getpgid='undef' +d_getpgrp='define' +d_getpgrp2='undef' +d_getppid='define' +d_getprior='undef' +d_getpwent='undef' +d_gettimeod='define' +d_gnulibc='undef' +d_htonl='define' +d_index='define' +d_inetaton='undef' +d_isascii='define' +d_killpg='define' +d_link='define' +d_locconv='define' +d_lockf='define' +d_longdbl='undef' +d_longllong='undef' +d_lstat='define' +d_mblen='define' +d_mbstowcs='define' +d_mbtowc='define' +d_memcmp='define' +d_memcpy='define' +d_memmove='define' +d_memset='define' +d_mkdir='define' +d_mkfifo='define' +d_mktime='define' +d_msg='define' +d_msgctl='define' +d_msgget='define' +d_msgrcv='define' +d_msgsnd='define' +d_mymalloc='undef' +d_nice='undef' +d_oldsock='undef' +d_open3='define' +d_pathconf='define' +d_pause='define' +d_phostname='undef' +d_pipe='define' +d_poll='undef' +d_portable='define' +d_pwage='undef' +d_pwchange='undef' +d_pwclass='undef' +d_pwcomment='undef' +d_pwexpire='undef' +d_pwquota='undef' +d_readdir='define' +d_readlink='define' +d_rename='define' +d_rewinddir='define' +d_rmdir='define' +d_safebcpy='define' +d_safemcpy='undef' +d_sanemcmp='define' +d_sched_yield='undef' +d_seekdir='undef' +d_select='define' +d_sem='define' +d_semctl='define' +d_semctl_semid_ds='define' +d_semget='define' +d_semop='define' +d_setegid='define' +d_seteuid='define' +d_setgrent='undef' +d_setgrps='undef' +d_setlinebuf='undef' +d_setlocale='define' +d_setpgid='define' +d_setpgrp='define' +d_setpgrp2='undef' +d_setprior='undef' +d_setpwent='undef' +d_setregid='undef' +d_setresgid='undef' +d_setresuid='undef' +d_setreuid='undef' +d_setrgid='undef' +d_setruid='undef' +d_setsid='define' +d_sfio='undef' +d_shm='define' +d_shmat='define' +d_shmatprototype='define' +d_shmctl='define' +d_shmdt='define' +d_shmget='define' +d_sigaction='define' +d_sigsetjmp='define' +d_socket='define' +d_sockpair='undef' +d_statblks='undef' +d_stdio_cnt_lval='undef' +d_stdio_ptr_lval='undef' +d_stdiobase='undef' +d_stdstdio='undef' +d_strchr='define' +d_strcoll='define' +d_strctcpy='undef' +d_strerrm='strerror(e)' +d_strerror='define' +d_strtod='define' +d_strtol='define' +d_strtoul='define' +d_strxfrm='define' +d_suidsafe='undef' +d_symlink='define' +d_syscall='undef' +d_sysconf='define' +d_sysernlst="n" +d_syserrlst='undef' +d_system='define' +d_tcgetpgrp='define' +d_tcsetpgrp='define' +d_telldir='undef' +d_time='define' +d_times='define' +d_truncate='define' +d_tzname='define' +d_umask='define' +d_uname='define' +d_union_semun='undef' +d_vfork='define' +d_void_closedir='undef' +d_voidsig='define' +d_voidtty="n" +d_volatile='define' +d_vprintf='define' +d_waitpid='define' +d_wait4='undef' +d_wcstombs='define' +d_wctomb='define' +d_xenix='undef' +db_hashtype='u_int32_t' +db_prefixtype='size_t' +direntrytype='struct dirent' +dlext='none' +dlsrc='dl_vmesa.xs' +dynamic_ext='' +eagain='EAGAIN' +ebcdic='define' +exe_ext='' +extensions='Fcntl GDBM_File IO NDBM_File Opcode POSIX Socket IPC/SysV Errno Thread attrs re Data/dumper' +fpostype='fpos_t' +freetype='void' +groupstype='gid_t' +h_fcntl='false' +h_sysfile='true' +hint='recommended' +i_arpainet="define" +i_bsdioctl="n" +i_db='undef' +i_dbm='define' +i_dirent='define' +i_dld='define' +i_dlfcn='define' +i_fcntl='undef' +i_float='define' +i_gdbm='define' +i_grp='define' +i_limits='define' +i_locale='define' +i_malloc='undef' +i_math='define' +i_memory='define' +i_ndbm='define' +i_neterrno='undef' +i_niin='define' +i_pwd='define' +i_rpcsvcdbm='undef' +i_sfio='undef' +i_sgtty='undef' +i_stdarg='define' +i_stddef='define' +i_stdlib='define' +i_string='define' +i_sysdir='define' +i_sysfile='define' +i_sysfilio='undef' +i_sysin='undef' +i_sysioctl='define' +i_sysndir='undef' +i_sysparam='undef' +i_sysresrc='define' +i_sysselct='undef' +i_syssockio="n" +i_sysstat='define' +i_systime='define' +i_systimek='undef' +i_systimes='define' +i_systypes='define' +i_sysun='define' +i_syswait='define' +i_termio='undef' +i_termios='define' +i_time='undef' +i_unistd='define' +i_utime='define' +i_values='undef' +i_varargs='undef' +i_varhdr='stdarg.h' +i_vfork='undef' +ld='c89' +ldflags='-L/usr/local/lib -L.' +lib_ext='.a' +libc='' +libperl='libperl.a' +libpth='/usr/local/lib /lib /usr/lib' +libs='-l//posxsock -l//vmmtlib -lgdbm -lxpg4' +libswanted='gdbm' +lint="n" +locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' +loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' +make_set_make='#' +make='gnumake' +mallocobj='' +mallocsrc='' +malloctype='void *' +models='none' +netdb_hlen_type='size_t' +netdb_host_type='char *' +netdb_name_type='const char *' +netdb_net_type='in_addr_t' +o_nonblock='O_NONBLOCK' +obj_ext='.o' +optimize='undef' +prefix='/usr/local' +prefixexp='/usr/local' +prototype='define' +ranlib=':' +rd_nodata='-1' +scriptdir='/usr/local/bin' +scriptdirexp='/usr/local/bin' +selecttype='fd_set *' +shmattype='void *' +shrpenv='' +signal_t='void' +sig_name_init='"ZERO","HUP","INT","ABRT","ILL","POLL","URG","STOP","FPE","KILL","BUS","SEGV","SYS","PIPE","ALRM","TERM","USR1","USR2","NUM18","CONT","CHLD","TTIN","TTOU","IO","QUIT","TSTP","TRAP","NUM27","WINCH","XCPU","XFSZ","VTALRM","PROF","NUM33","NUM34","NUM35","NUM36","NUM3","NUM38","NUM39","NUM40","NUM41","NUM42","NUM43","NUM44","NUM45","NUM46","NUM47","NUM48","NUM49","CLD"' +sig_num_init='0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,20 ' +sizetype='size_t' +so='.a' +ssizetype='ssize_t' +static_ext='Data/Dumper Fcntl GDBM_File IO IPC/SysV NDBM_File Opcode POSIX Socket Thread attrs re' +stdchar='char' +stdio_cnt='(fp)->__countIn' +stdio_ptr='(fp)->__bufPtr' +timeincl='sys/time.h ' +timetype='time_t' +uidtype='uid_t' +usedl='define' +usemymalloc='n' +usenm='false' +useopcode='true' +useperlio='undef' +useposix='true' +usesfio='false' +useshrplib='false' +usethreads='y' +usevfork='true' +vi='x' diff --git a/contrib/perl5/hv.c b/contrib/perl5/hv.c index e0091eac23d6..44d37e34d300 100644 --- a/contrib/perl5/hv.c +++ b/contrib/perl5/hv.c @@ -1,6 +1,6 @@ /* hv.c * - * Copyright (c) 1991-1999, Larry Wall + * Copyright (c) 1991-2000, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -12,24 +12,11 @@ */ #include "EXTERN.h" +#define PERL_IN_HV_C #include "perl.h" -static void hv_magic_check _((HV *hv, bool *needs_copy, bool *needs_store)); -#ifndef PERL_OBJECT -static void hsplit _((HV *hv)); -static void hfreeentries _((HV *hv)); -static void more_he _((void)); -#endif - -#if defined(STRANGE_MALLOC) || defined(MYMALLOC) -# define ARRAY_ALLOC_BYTES(size) ( (size)*sizeof(HE*) ) -#else -# define MALLOC_OVERHEAD 16 -# define ARRAY_ALLOC_BYTES(size) ( (size)*sizeof(HE*)*2 - MALLOC_OVERHEAD ) -#endif - STATIC HE* -new_he(void) +S_new_he(pTHX) { HE* he; LOCK_SV_MUTEX; @@ -42,7 +29,7 @@ new_he(void) } STATIC void -del_he(HE *p) +S_del_he(pTHX_ HE *p) { LOCK_SV_MUTEX; HeNEXT(p) = (HE*)PL_he_root; @@ -51,7 +38,7 @@ del_he(HE *p) } STATIC void -more_he(void) +S_more_he(pTHX) { register HE* he; register HE* heend; @@ -65,8 +52,20 @@ more_he(void) HeNEXT(he) = 0; } +#ifdef PURIFY + +#define new_HE() (HE*)safemalloc(sizeof(HE)) +#define del_HE(p) safefree((char*)p) + +#else + +#define new_HE() new_he() +#define del_HE(p) del_he(p) + +#endif + STATIC HEK * -save_hek(char *str, I32 len, U32 hash) +S_save_hek(pTHX_ const char *str, I32 len, U32 hash) { char *k; register HEK *hek; @@ -81,16 +80,59 @@ save_hek(char *str, I32 len, U32 hash) } void -unshare_hek(HEK *hek) +Perl_unshare_hek(pTHX_ HEK *hek) { unsharepvn(HEK_KEY(hek),HEK_LEN(hek),HEK_HASH(hek)); } +#if defined(USE_ITHREADS) +HE * +Perl_he_dup(pTHX_ HE *e, bool shared) +{ + HE *ret; + + if (!e) + return Nullhe; + /* look for it in the table first */ + ret = (HE*)ptr_table_fetch(PL_ptr_table, e); + if (ret) + return ret; + + /* create anew and remember what it is */ + ret = new_HE(); + ptr_table_store(PL_ptr_table, e, ret); + + HeNEXT(ret) = he_dup(HeNEXT(e),shared); + if (HeKLEN(e) == HEf_SVKEY) + HeKEY_sv(ret) = SvREFCNT_inc(sv_dup(HeKEY_sv(e))); + else if (shared) + HeKEY_hek(ret) = share_hek(HeKEY(e), HeKLEN(e), HeHASH(e)); + else + HeKEY_hek(ret) = save_hek(HeKEY(e), HeKLEN(e), HeHASH(e)); + HeVAL(ret) = SvREFCNT_inc(sv_dup(HeVAL(e))); + return ret; +} +#endif /* USE_ITHREADS */ + /* (klen == HEf_SVKEY) is special for MAGICAL hv entries, meaning key slot * contains an SV* */ +/* +=for apidoc hv_fetch + +Returns the SV which corresponds to the specified key in the hash. The +C is the length of the key. If C is set then the fetch will be +part of a store. Check that the return value is non-null before +dereferencing it to a C. + +See L for more +information on how to use this function on tied hashes. + +=cut +*/ + SV** -hv_fetch(HV *hv, char *key, U32 klen, I32 lval) +Perl_hv_fetch(pTHX_ HV *hv, const char *key, U32 klen, I32 lval) { register XPVHV* xhv; register U32 hash; @@ -113,7 +155,7 @@ hv_fetch(HV *hv, char *key, U32 klen, I32 lval) U32 i; for (i = 0; i < klen; ++i) if (isLOWER(key[i])) { - char *nkey = strupr(SvPVX(sv_2mortal(newSVpv(key,klen)))); + char *nkey = strupr(SvPVX(sv_2mortal(newSVpvn(key,klen)))); SV **ret = hv_fetch(hv, nkey, klen, 0); if (!ret && lval) ret = hv_store(hv, key, klen, NEWSV(61,0), 0); @@ -130,7 +172,8 @@ hv_fetch(HV *hv, char *key, U32 klen, I32 lval) || (HvNAME(hv) && strEQ(HvNAME(hv),ENV_HV_NAME)) #endif ) - Newz(503,xhv->xhv_array, ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); + Newz(503, xhv->xhv_array, + PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); else return 0; } @@ -149,13 +192,13 @@ hv_fetch(HV *hv, char *key, U32 klen, I32 lval) } #ifdef DYNAMIC_ENV_FETCH /* %ENV lookup? If so, try to fetch the value now */ if (HvNAME(hv) && strEQ(HvNAME(hv),ENV_HV_NAME)) { - char *gotenv; - - if ((gotenv = PerlEnv_getenv(key)) != Nullch) { - sv = newSVpv(gotenv,strlen(gotenv)); - SvTAINTED_on(sv); - return hv_store(hv,key,klen,sv,hash); - } + unsigned long len; + char *env = PerlEnv_ENVgetenv_len(key,&len); + if (env) { + sv = newSVpvn(env,len); + SvTAINTED_on(sv); + return hv_store(hv,key,klen,sv,hash); + } } #endif if (lval) { /* gonna assign to this, so it better be there */ @@ -167,8 +210,25 @@ hv_fetch(HV *hv, char *key, U32 klen, I32 lval) /* returns a HE * structure with the all fields set */ /* note that hent_val will be a mortal sv for MAGICAL hashes */ +/* +=for apidoc hv_fetch_ent + +Returns the hash entry which corresponds to the specified key in the hash. +C must be a valid precomputed hash number for the given C, or 0 +if you want the function to compute it. IF C is set then the fetch +will be part of a store. Make sure the return value is non-null before +accessing it. The return value when C is a tied hash is a pointer to a +static location, so be sure to make a copy of the structure if you need to +store it somewhere. + +See L for more +information on how to use this function on tied hashes. + +=cut +*/ + HE * -hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash) +Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash) { register XPVHV* xhv; register char *key; @@ -200,7 +260,7 @@ hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash) key = SvPV(keysv, klen); for (i = 0; i < klen; ++i) if (isLOWER(key[i])) { - SV *nkeysv = sv_2mortal(newSVpv(key,klen)); + SV *nkeysv = sv_2mortal(newSVpvn(key,klen)); (void)strupr(SvPVX(nkeysv)); entry = hv_fetch_ent(hv, nkeysv, 0, 0); if (!entry && lval) @@ -218,7 +278,8 @@ hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash) || (HvNAME(hv) && strEQ(HvNAME(hv),ENV_HV_NAME)) #endif ) - Newz(503,xhv->xhv_array, ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); + Newz(503, xhv->xhv_array, + PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); else return 0; } @@ -240,13 +301,13 @@ hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash) } #ifdef DYNAMIC_ENV_FETCH /* %ENV lookup? If so, try to fetch the value now */ if (HvNAME(hv) && strEQ(HvNAME(hv),ENV_HV_NAME)) { - char *gotenv; - - if ((gotenv = PerlEnv_getenv(key)) != Nullch) { - sv = newSVpv(gotenv,strlen(gotenv)); - SvTAINTED_on(sv); - return hv_store_ent(hv,keysv,sv,hash); - } + unsigned long len; + char *env = PerlEnv_ENVgetenv_len(key,&len); + if (env) { + sv = newSVpvn(env,len); + SvTAINTED_on(sv); + return hv_store_ent(hv,keysv,sv,hash); + } } #endif if (lval) { /* gonna assign to this, so it better be there */ @@ -256,8 +317,8 @@ hv_fetch_ent(HV *hv, SV *keysv, I32 lval, register U32 hash) return 0; } -static void -hv_magic_check (HV *hv, bool *needs_copy, bool *needs_store) +STATIC void +S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store) { MAGIC *mg = SvMAGIC(hv); *needs_copy = FALSE; @@ -275,8 +336,26 @@ hv_magic_check (HV *hv, bool *needs_copy, bool *needs_store) } } +/* +=for apidoc hv_store + +Stores an SV in a hash. The hash key is specified as C and C is +the length of the key. The C parameter is the precomputed hash +value; if it is zero then Perl will compute it. The return value will be +NULL if the operation failed or if the value did not need to be actually +stored within the hash (as in the case of tied hashes). Otherwise it can +be dereferenced to get the original C. Note that the caller is +responsible for suitably incrementing the reference count of C before +the call, and decrementing it if the function returned NULL. + +See L for more +information on how to use this function on tied hashes. + +=cut +*/ + SV** -hv_store(HV *hv, char *key, U32 klen, SV *val, register U32 hash) +Perl_hv_store(pTHX_ HV *hv, const char *key, U32 klen, SV *val, register U32 hash) { register XPVHV* xhv; register I32 i; @@ -297,7 +376,7 @@ hv_store(HV *hv, char *key, U32 klen, SV *val, register U32 hash) return 0; #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { - SV *sv = sv_2mortal(newSVpv(key,klen)); + SV *sv = sv_2mortal(newSVpvn(key,klen)); key = strupr(SvPVX(sv)); hash = 0; } @@ -308,7 +387,8 @@ hv_store(HV *hv, char *key, U32 klen, SV *val, register U32 hash) PERL_HASH(hash, key, klen); if (!xhv->xhv_array) - Newz(505, xhv->xhv_array, ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); + Newz(505, xhv->xhv_array, + PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); oentry = &((HE**)xhv->xhv_array)[hash & (I32) xhv->xhv_max]; i = 1; @@ -325,7 +405,7 @@ hv_store(HV *hv, char *key, U32 klen, SV *val, register U32 hash) return &HeVAL(entry); } - entry = new_he(); + entry = new_HE(); if (HvSHAREKEYS(hv)) HeKEY_hek(entry) = share_hek(key, klen, hash); else /* gotta do the real thing */ @@ -344,8 +424,27 @@ hv_store(HV *hv, char *key, U32 klen, SV *val, register U32 hash) return &HeVAL(entry); } +/* +=for apidoc hv_store_ent + +Stores C in a hash. The hash key is specified as C. The C +parameter is the precomputed hash value; if it is zero then Perl will +compute it. The return value is the new hash entry so created. It will be +NULL if the operation failed or if the value did not need to be actually +stored within the hash (as in the case of tied hashes). Otherwise the +contents of the return value can be accessed using the C macros +described here. Note that the caller is responsible for suitably +incrementing the reference count of C before the call, and +decrementing it if the function returned NULL. + +See L for more +information on how to use this function on tied hashes. + +=cut +*/ + HE * -hv_store_ent(HV *hv, SV *keysv, SV *val, register U32 hash) +Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash) { register XPVHV* xhv; register char *key; @@ -375,7 +474,7 @@ hv_store_ent(HV *hv, SV *keysv, SV *val, register U32 hash) #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { key = SvPV(keysv, klen); - keysv = sv_2mortal(newSVpv(key,klen)); + keysv = sv_2mortal(newSVpvn(key,klen)); (void)strupr(SvPVX(keysv)); hash = 0; } @@ -389,7 +488,8 @@ hv_store_ent(HV *hv, SV *keysv, SV *val, register U32 hash) PERL_HASH(hash, key, klen); if (!xhv->xhv_array) - Newz(505, xhv->xhv_array, ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); + Newz(505, xhv->xhv_array, + PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); oentry = &((HE**)xhv->xhv_array)[hash & (I32) xhv->xhv_max]; i = 1; @@ -406,7 +506,7 @@ hv_store_ent(HV *hv, SV *keysv, SV *val, register U32 hash) return entry; } - entry = new_he(); + entry = new_HE(); if (HvSHAREKEYS(hv)) HeKEY_hek(entry) = share_hek(key, klen, hash); else /* gotta do the real thing */ @@ -425,8 +525,19 @@ hv_store_ent(HV *hv, SV *keysv, SV *val, register U32 hash) return entry; } +/* +=for apidoc hv_delete + +Deletes a key/value pair in the hash. The value SV is removed from the +hash and returned to the caller. The C is the length of the key. +The C value will normally be zero; if set to G_DISCARD then NULL +will be returned. + +=cut +*/ + SV * -hv_delete(HV *hv, char *key, U32 klen, I32 flags) +Perl_hv_delete(pTHX_ HV *hv, const char *key, U32 klen, I32 flags) { register XPVHV* xhv; register I32 i; @@ -455,7 +566,7 @@ hv_delete(HV *hv, char *key, U32 klen, I32 flags) } #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { - sv = sv_2mortal(newSVpv(key,klen)); + sv = sv_2mortal(newSVpvn(key,klen)); key = strupr(SvPVX(sv)); } #endif @@ -482,8 +593,10 @@ hv_delete(HV *hv, char *key, U32 klen, I32 flags) xhv->xhv_fill--; if (flags & G_DISCARD) sv = Nullsv; - else - sv = sv_mortalcopy(HeVAL(entry)); + else { + sv = sv_2mortal(HeVAL(entry)); + HeVAL(entry) = &PL_sv_undef; + } if (entry == xhv->xhv_eiter) HvLAZYDEL_on(hv); else @@ -494,8 +607,19 @@ hv_delete(HV *hv, char *key, U32 klen, I32 flags) return Nullsv; } +/* +=for apidoc hv_delete_ent + +Deletes a key/value pair in the hash. The value SV is removed from the +hash and returned to the caller. The C value will normally be zero; +if set to G_DISCARD then NULL will be returned. C can be a valid +precomputed hash value, or 0 to ask for it to be computed. + +=cut +*/ + SV * -hv_delete_ent(HV *hv, SV *keysv, I32 flags, U32 hash) +Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash) { register XPVHV* xhv; register I32 i; @@ -525,7 +649,7 @@ hv_delete_ent(HV *hv, SV *keysv, I32 flags, U32 hash) #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { key = SvPV(keysv, klen); - keysv = sv_2mortal(newSVpv(key,klen)); + keysv = sv_2mortal(newSVpvn(key,klen)); (void)strupr(SvPVX(keysv)); hash = 0; } @@ -556,8 +680,10 @@ hv_delete_ent(HV *hv, SV *keysv, I32 flags, U32 hash) xhv->xhv_fill--; if (flags & G_DISCARD) sv = Nullsv; - else - sv = sv_mortalcopy(HeVAL(entry)); + else { + sv = sv_2mortal(HeVAL(entry)); + HeVAL(entry) = &PL_sv_undef; + } if (entry == xhv->xhv_eiter) HvLAZYDEL_on(hv); else @@ -568,8 +694,17 @@ hv_delete_ent(HV *hv, SV *keysv, I32 flags, U32 hash) return Nullsv; } +/* +=for apidoc hv_exists + +Returns a boolean indicating whether the specified hash key exists. The +C is the length of the key. + +=cut +*/ + bool -hv_exists(HV *hv, char *key, U32 klen) +Perl_hv_exists(pTHX_ HV *hv, const char *key, U32 klen) { register XPVHV* xhv; register U32 hash; @@ -589,18 +724,24 @@ hv_exists(HV *hv, char *key, U32 klen) } #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { - sv = sv_2mortal(newSVpv(key,klen)); + sv = sv_2mortal(newSVpvn(key,klen)); key = strupr(SvPVX(sv)); } #endif } xhv = (XPVHV*)SvANY(hv); +#ifndef DYNAMIC_ENV_FETCH if (!xhv->xhv_array) return 0; +#endif PERL_HASH(hash, key, klen); +#ifdef DYNAMIC_ENV_FETCH + if (!xhv->xhv_array) entry = Null(HE*); + else +#endif entry = ((HE**)xhv->xhv_array)[hash & (I32) xhv->xhv_max]; for (; entry; entry = HeNEXT(entry)) { if (HeHASH(entry) != hash) /* strings can't be equal */ @@ -611,12 +752,34 @@ hv_exists(HV *hv, char *key, U32 klen) continue; return TRUE; } +#ifdef DYNAMIC_ENV_FETCH /* is it out there? */ + if (HvNAME(hv) && strEQ(HvNAME(hv), ENV_HV_NAME)) { + unsigned long len; + char *env = PerlEnv_ENVgetenv_len(key,&len); + if (env) { + sv = newSVpvn(env,len); + SvTAINTED_on(sv); + (void)hv_store(hv,key,klen,sv,hash); + return TRUE; + } + } +#endif return FALSE; } +/* +=for apidoc hv_exists_ent + +Returns a boolean indicating whether the specified hash key exists. C +can be a valid precomputed hash value, or 0 to ask for it to be +computed. + +=cut +*/ + bool -hv_exists_ent(HV *hv, SV *keysv, U32 hash) +Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) { register XPVHV* xhv; register char *key; @@ -639,7 +802,7 @@ hv_exists_ent(HV *hv, SV *keysv, U32 hash) #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { key = SvPV(keysv, klen); - keysv = sv_2mortal(newSVpv(key,klen)); + keysv = sv_2mortal(newSVpvn(key,klen)); (void)strupr(SvPVX(keysv)); hash = 0; } @@ -647,13 +810,19 @@ hv_exists_ent(HV *hv, SV *keysv, U32 hash) } xhv = (XPVHV*)SvANY(hv); +#ifndef DYNAMIC_ENV_FETCH if (!xhv->xhv_array) return 0; +#endif key = SvPV(keysv, klen); if (!hash) PERL_HASH(hash, key, klen); +#ifdef DYNAMIC_ENV_FETCH + if (!xhv->xhv_array) entry = Null(HE*); + else +#endif entry = ((HE**)xhv->xhv_array)[hash & (I32) xhv->xhv_max]; for (; entry; entry = HeNEXT(entry)) { if (HeHASH(entry) != hash) /* strings can't be equal */ @@ -664,11 +833,23 @@ hv_exists_ent(HV *hv, SV *keysv, U32 hash) continue; return TRUE; } +#ifdef DYNAMIC_ENV_FETCH /* is it out there? */ + if (HvNAME(hv) && strEQ(HvNAME(hv), ENV_HV_NAME)) { + unsigned long len; + char *env = PerlEnv_ENVgetenv_len(key,&len); + if (env) { + sv = newSVpvn(env,len); + SvTAINTED_on(sv); + (void)hv_store_ent(hv,keysv,sv,hash); + return TRUE; + } + } +#endif return FALSE; } STATIC void -hsplit(HV *hv) +S_hsplit(pTHX_ HV *hv) { register XPVHV* xhv = (XPVHV*)SvANY(hv); I32 oldsize = (I32) xhv->xhv_max + 1; /* sic(k) */ @@ -682,21 +863,21 @@ hsplit(HV *hv) PL_nomemok = TRUE; #if defined(STRANGE_MALLOC) || defined(MYMALLOC) - Renew(a, ARRAY_ALLOC_BYTES(newsize), char); + Renew(a, PERL_HV_ARRAY_ALLOC_BYTES(newsize), char); if (!a) { PL_nomemok = FALSE; return; } #else #define MALLOC_OVERHEAD 16 - New(2, a, ARRAY_ALLOC_BYTES(newsize), char); + New(2, a, PERL_HV_ARRAY_ALLOC_BYTES(newsize), char); if (!a) { PL_nomemok = FALSE; return; } Copy(xhv->xhv_array, a, oldsize * sizeof(HE*), char); if (oldsize >= 64) { - offer_nice_chunk(xhv->xhv_array, ARRAY_ALLOC_BYTES(oldsize)); + offer_nice_chunk(xhv->xhv_array, PERL_HV_ARRAY_ALLOC_BYTES(oldsize)); } else Safefree(xhv->xhv_array); @@ -730,7 +911,7 @@ hsplit(HV *hv) } void -hv_ksplit(HV *hv, IV newmax) +Perl_hv_ksplit(pTHX_ HV *hv, IV newmax) { register XPVHV* xhv = (XPVHV*)SvANY(hv); I32 oldsize = (I32) xhv->xhv_max + 1; /* sic(k) */ @@ -757,20 +938,20 @@ hv_ksplit(HV *hv, IV newmax) if (a) { PL_nomemok = TRUE; #if defined(STRANGE_MALLOC) || defined(MYMALLOC) - Renew(a, ARRAY_ALLOC_BYTES(newsize), char); + Renew(a, PERL_HV_ARRAY_ALLOC_BYTES(newsize), char); if (!a) { PL_nomemok = FALSE; return; } #else - New(2, a, ARRAY_ALLOC_BYTES(newsize), char); + New(2, a, PERL_HV_ARRAY_ALLOC_BYTES(newsize), char); if (!a) { PL_nomemok = FALSE; return; } Copy(xhv->xhv_array, a, oldsize * sizeof(HE*), char); if (oldsize >= 64) { - offer_nice_chunk(xhv->xhv_array, ARRAY_ALLOC_BYTES(oldsize)); + offer_nice_chunk(xhv->xhv_array, PERL_HV_ARRAY_ALLOC_BYTES(oldsize)); } else Safefree(xhv->xhv_array); @@ -779,7 +960,7 @@ hv_ksplit(HV *hv, IV newmax) Zero(&a[oldsize * sizeof(HE*)], (newsize-oldsize) * sizeof(HE*), char); /* zero 2nd half*/ } else { - Newz(0, a, ARRAY_ALLOC_BYTES(newsize), char); + Newz(0, a, PERL_HV_ARRAY_ALLOC_BYTES(newsize), char); } xhv->xhv_max = --newsize; xhv->xhv_array = a; @@ -807,8 +988,16 @@ hv_ksplit(HV *hv, IV newmax) } } +/* +=for apidoc newHV + +Creates a new HV. The reference count is set to 1. + +=cut +*/ + HV * -newHV(void) +Perl_newHV(pTHX) { register HV *hv; register XPVHV* xhv; @@ -829,7 +1018,7 @@ newHV(void) } HV * -newHVhv(HV *ohv) +Perl_newHVhv(pTHX_ HV *ohv) { register HV *hv; STRLEN hv_max = ohv ? HvMAX(ohv) : 0; @@ -855,7 +1044,7 @@ newHVhv(HV *ohv) /* Slow way */ hv_iterinit(ohv); - while (entry = hv_iternext(ohv)) { + while ((entry = hv_iternext(ohv))) { hv_store(hv, HeKEY(entry), HeKLEN(entry), SvREFCNT_inc(HeVAL(entry)), HeHASH(entry)); } @@ -867,7 +1056,7 @@ newHVhv(HV *ohv) } void -hv_free_ent(HV *hv, register HE *entry) +Perl_hv_free_ent(pTHX_ HV *hv, register HE *entry) { SV *val; @@ -885,11 +1074,11 @@ hv_free_ent(HV *hv, register HE *entry) unshare_hek(HeKEY_hek(entry)); else Safefree(HeKEY_hek(entry)); - del_he(entry); + del_HE(entry); } void -hv_delayfree_ent(HV *hv, register HE *entry) +Perl_hv_delayfree_ent(pTHX_ HV *hv, register HE *entry) { if (!entry) return; @@ -904,11 +1093,19 @@ hv_delayfree_ent(HV *hv, register HE *entry) unshare_hek(HeKEY_hek(entry)); else Safefree(HeKEY_hek(entry)); - del_he(entry); + del_HE(entry); } +/* +=for apidoc hv_clear + +Clears a hash, making it empty. + +=cut +*/ + void -hv_clear(HV *hv) +Perl_hv_clear(pTHX_ HV *hv) { register XPVHV* xhv; if (!hv) @@ -925,7 +1122,7 @@ hv_clear(HV *hv) } STATIC void -hfreeentries(HV *hv) +S_hfreeentries(pTHX_ HV *hv) { register HE **array; register HE *entry; @@ -957,8 +1154,16 @@ hfreeentries(HV *hv) (void)hv_iterinit(hv); } +/* +=for apidoc hv_undef + +Undefines the hash. + +=cut +*/ + void -hv_undef(HV *hv) +Perl_hv_undef(pTHX_ HV *hv) { register XPVHV* xhv; if (!hv) @@ -979,20 +1184,30 @@ hv_undef(HV *hv) mg_clear((SV*)hv); } +/* +=for apidoc hv_iterinit + +Prepares a starting point to traverse a hash table. Returns the number of +keys in the hash (i.e. the same as C). The return value is +currently only meaningful for hashes without tie magic. + +NOTE: Before version 5.004_65, C used to return the number of +hash buckets that happen to be in use. If you still need that esoteric +value, you can get it through the macro C. + +=cut +*/ + I32 -hv_iterinit(HV *hv) +Perl_hv_iterinit(pTHX_ HV *hv) { register XPVHV* xhv; HE *entry; if (!hv) - croak("Bad hash"); + Perl_croak(aTHX_ "Bad hash"); xhv = (XPVHV*)SvANY(hv); entry = xhv->xhv_eiter; -#ifdef DYNAMIC_ENV_FETCH /* set up %ENV for iteration */ - if (HvNAME(hv) && strEQ(HvNAME(hv), ENV_HV_NAME)) - prime_env_iter(); -#endif if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */ HvLAZYDEL_off(hv); hv_free_ent(hv, entry); @@ -1002,8 +1217,16 @@ hv_iterinit(HV *hv) return xhv->xhv_keys; /* used to be xhv->xhv_fill before 5.004_65 */ } +/* +=for apidoc hv_iternext + +Returns entries from a hash iterator. See C. + +=cut +*/ + HE * -hv_iternext(HV *hv) +Perl_hv_iternext(pTHX_ HV *hv) { register XPVHV* xhv; register HE *entry; @@ -1011,11 +1234,11 @@ hv_iternext(HV *hv) MAGIC* mg; if (!hv) - croak("Bad hash"); + Perl_croak(aTHX_ "Bad hash"); xhv = (XPVHV*)SvANY(hv); oldentry = entry = xhv->xhv_eiter; - if (mg = SvTIED_mg((SV*)hv, 'P')) { + if ((mg = SvTIED_mg((SV*)hv, 'P'))) { SV *key = sv_newmortal(); if (entry) { sv_setsv(key, HeSVKEY_force(entry)); @@ -1025,7 +1248,7 @@ hv_iternext(HV *hv) char *k; HEK *hek; - xhv->xhv_eiter = entry = new_he(); /* one HE per MAGICAL hash */ + xhv->xhv_eiter = entry = new_HE(); /* one HE per MAGICAL hash */ Zero(entry, 1, HE); Newz(54, k, HEK_BASESIZE + sizeof(SV*), char); hek = (HEK*)k; @@ -1041,13 +1264,18 @@ hv_iternext(HV *hv) if (HeVAL(entry)) SvREFCNT_dec(HeVAL(entry)); Safefree(HeKEY_hek(entry)); - del_he(entry); + del_HE(entry); xhv->xhv_eiter = Null(HE*); return Null(HE*); } +#ifdef DYNAMIC_ENV_FETCH /* set up %ENV for iteration */ + if (!entry && HvNAME(hv) && strEQ(HvNAME(hv), ENV_HV_NAME)) + prime_env_iter(); +#endif if (!xhv->xhv_array) - Newz(506,xhv->xhv_array, ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); + Newz(506, xhv->xhv_array, + PERL_HV_ARRAY_ALLOC_BYTES(xhv->xhv_max + 1), char); if (entry) entry = HeNEXT(entry); while (!entry) { @@ -1068,8 +1296,17 @@ hv_iternext(HV *hv) return entry; } +/* +=for apidoc hv_iterkey + +Returns the key from the current position of the hash iterator. See +C. + +=cut +*/ + char * -hv_iterkey(register HE *entry, I32 *retlen) +Perl_hv_iterkey(pTHX_ register HE *entry, I32 *retlen) { if (HeKLEN(entry) == HEf_SVKEY) { STRLEN len; @@ -1084,18 +1321,37 @@ hv_iterkey(register HE *entry, I32 *retlen) } /* unlike hv_iterval(), this always returns a mortal copy of the key */ +/* +=for apidoc hv_iterkeysv + +Returns the key as an C from the current position of the hash +iterator. The return value will always be a mortal copy of the key. Also +see C. + +=cut +*/ + SV * -hv_iterkeysv(register HE *entry) +Perl_hv_iterkeysv(pTHX_ register HE *entry) { if (HeKLEN(entry) == HEf_SVKEY) return sv_mortalcopy(HeKEY_sv(entry)); else - return sv_2mortal(newSVpv((HeKLEN(entry) ? HeKEY(entry) : ""), + return sv_2mortal(newSVpvn((HeKLEN(entry) ? HeKEY(entry) : ""), HeKLEN(entry))); } +/* +=for apidoc hv_iterval + +Returns the value from the current position of the hash iterator. See +C. + +=cut +*/ + SV * -hv_iterval(HV *hv, register HE *entry) +Perl_hv_iterval(pTHX_ HV *hv, register HE *entry) { if (SvRMAGICAL(hv)) { if (mg_find((SV*)hv,'P')) { @@ -1109,8 +1365,17 @@ hv_iterval(HV *hv, register HE *entry) return HeVAL(entry); } +/* +=for apidoc hv_iternextsv + +Performs an C, C, and C in one +operation. + +=cut +*/ + SV * -hv_iternextsv(HV *hv, char **key, I32 *retlen) +Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen) { HE *he; if ( (he = hv_iternext(hv)) == NULL) @@ -1119,14 +1384,22 @@ hv_iternextsv(HV *hv, char **key, I32 *retlen) return hv_iterval(hv, he); } +/* +=for apidoc hv_magic + +Adds magic to a hash. See C. + +=cut +*/ + void -hv_magic(HV *hv, GV *gv, int how) +Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how) { sv_magic((SV*)hv, (SV*)gv, how, Nullch, 0); } char* -sharepvn(char *sv, I32 len, U32 hash) +Perl_sharepvn(pTHX_ const char *sv, I32 len, U32 hash) { return HEK_KEY(share_hek(sv, len, hash)); } @@ -1135,7 +1408,7 @@ sharepvn(char *sv, I32 len, U32 hash) * len and hash must both be valid for str. */ void -unsharepvn(char *str, I32 len, U32 hash) +Perl_unsharepvn(pTHX_ const char *str, I32 len, U32 hash) { register XPVHV* xhv; register HE *entry; @@ -1165,15 +1438,18 @@ unsharepvn(char *str, I32 len, U32 hash) if (i && !*oentry) xhv->xhv_fill--; Safefree(HeKEY_hek(entry)); - del_he(entry); + del_HE(entry); --xhv->xhv_keys; } break; } UNLOCK_STRTAB_MUTEX; - if (!found) - warn("Attempt to free non-existent shared string"); + { + dTHR; + if (!found && ckWARN_d(WARN_INTERNAL)) + Perl_warner(aTHX_ WARN_INTERNAL, "Attempt to free non-existent shared string"); + } } /* get a (constant) string ptr from the global string table @@ -1181,7 +1457,7 @@ unsharepvn(char *str, I32 len, U32 hash) * len and hash must both be valid for str. */ HEK * -share_hek(char *str, I32 len, register U32 hash) +Perl_share_hek(pTHX_ const char *str, I32 len, register U32 hash) { register XPVHV* xhv; register HE *entry; @@ -1209,7 +1485,7 @@ share_hek(char *str, I32 len, register U32 hash) break; } if (!found) { - entry = new_he(); + entry = new_HE(); HeKEY_hek(entry) = save_hek(str, len, hash); HeVAL(entry) = Nullsv; HeNEXT(entry) = *oentry; diff --git a/contrib/perl5/hv.h b/contrib/perl5/hv.h index 007892d412dd..5bc38a0a79ae 100644 --- a/contrib/perl5/hv.h +++ b/contrib/perl5/hv.h @@ -1,6 +1,6 @@ /* hv.h * - * Copyright (c) 1991-1999, Larry Wall + * Copyright (c) 1991-2000, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -28,7 +28,7 @@ struct xpvhv { STRLEN xhv_fill; /* how full xhv_array currently is */ STRLEN xhv_max; /* subscript of last element of xhv_array */ IV xhv_keys; /* how many elements in the array */ - double xnv_nv; /* numeric value, if any */ + NV xnv_nv; /* numeric value, if any */ MAGIC* xmg_magic; /* magic for scalar array */ HV* xmg_stash; /* class package */ @@ -40,14 +40,70 @@ struct xpvhv { #define PERL_HASH(hash,str,len) \ STMT_START { \ - register char *s_PeRlHaSh = str; \ + register const char *s_PeRlHaSh = str; \ register I32 i_PeRlHaSh = len; \ register U32 hash_PeRlHaSh = 0; \ while (i_PeRlHaSh--) \ hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ - (hash) = hash_PeRlHaSh; \ + (hash) = hash_PeRlHaSh + (hash_PeRlHaSh>>5); \ } STMT_END +/* +=for apidoc AmU||HEf_SVKEY +This flag, used in the length slot of hash entries and magic structures, +specifies the structure contains a C pointer where a C pointer +is to be expected. (For information only--not to be used). + +=for apidoc AmU||Nullhv +Null HV pointer. + +=for apidoc Am|char*|HvNAME|HV* stash +Returns the package name of a stash. See C, C. + +=for apidoc Am|void*|HeKEY|HE* he +Returns the actual pointer stored in the key slot of the hash entry. The +pointer may be either C or C, depending on the value of +C. Can be assigned to. The C or C macros are +usually preferable for finding the value of a key. + +=for apidoc Am|STRLEN|HeKLEN|HE* he +If this is negative, and amounts to C, it indicates the entry +holds an C key. Otherwise, holds the actual length of the key. Can +be assigned to. The C macro is usually preferable for finding key +lengths. + +=for apidoc Am|SV*|HeVAL|HE* he +Returns the value slot (type C) stored in the hash entry. + +=for apidoc Am|U32|HeHASH|HE* he +Returns the computed hash stored in the hash entry. + +=for apidoc Am|char*|HePV|HE* he|STRLEN len +Returns the key slot of the hash entry as a C value, doing any +necessary dereferencing of possibly C keys. The length of the string +is placed in C (this is a macro, so do I use C<&len>). If you do +not care about what the length of the key is, you may use the global +variable C, though this is rather less efficient than using a local +variable. Remember though, that hash keys in perl are free to contain +embedded nulls, so using C or similar is not a good way to find +the length of hash keys. This is very similar to the C macro +described elsewhere in this document. + +=for apidoc Am|SV*|HeSVKEY|HE* he +Returns the key as an C, or C if the hash entry does not +contain an C key. + +=for apidoc Am|SV*|HeSVKEY_force|HE* he +Returns the key as an C. Will create and return a temporary mortal +C if the hash entry contains only a C key. + +=for apidoc Am|SV*|HeSVKEY_set|HE* he|SV* sv +Sets the key to a given C, taking care to set the appropriate flags to +indicate the presence of an C key, and returns the same +C. + +=cut +*/ /* these hash entry flags ride on hent_klen (for use only in magic/tied HVs) */ #define HEf_SVKEY -2 /* hent_key is a SV* */ @@ -71,8 +127,6 @@ struct xpvhv { #define HvLAZYDEL_on(hv) (SvFLAGS(hv) |= SVphv_LAZYDEL) #define HvLAZYDEL_off(hv) (SvFLAGS(hv) &= ~SVphv_LAZYDEL) -#ifdef OVERLOAD - /* Maybe amagical: */ /* #define HV_AMAGICmb(hv) (SvFLAGS(hv) & (SVpgv_badAM | SVpgv_AM)) */ @@ -86,8 +140,6 @@ struct xpvhv { #define HV_badAMAGIC_off(hv) (SvFLAGS(hv) &= ~SVpgv_badAM) */ -#endif /* OVERLOAD */ - #define Nullhe Null(HE*) #define HeNEXT(he) (he)->hent_next #define HeKEY_hek(he) (he)->hent_hek @@ -108,7 +160,7 @@ struct xpvhv { #define HeSVKEY_force(he) (HeKEY(he) ? \ ((HeKLEN(he) == HEf_SVKEY) ? \ HeKEY_sv(he) : \ - sv_2mortal(newSVpv(HeKEY(he), \ + sv_2mortal(newSVpvn(HeKEY(he), \ HeKLEN(he)))) : \ &PL_sv_undef) #define HeSVKEY_set(he,sv) ((HeKLEN(he) = HEf_SVKEY), (HeKEY_sv(he) = sv)) @@ -118,3 +170,13 @@ struct xpvhv { #define HEK_HASH(hek) (hek)->hek_hash #define HEK_LEN(hek) (hek)->hek_len #define HEK_KEY(hek) (hek)->hek_key + +#if defined(STRANGE_MALLOC) || defined(MYMALLOC) +# define PERL_HV_ARRAY_ALLOC_BYTES(size) ((size) * sizeof(HE*)) +#else +# define MALLOC_OVERHEAD 16 +# define PERL_HV_ARRAY_ALLOC_BYTES(size) \ + (((size) < 64) \ + ? (size) * sizeof(HE*) \ + : (size) * sizeof(HE*) * 2 - MALLOC_OVERHEAD) +#endif diff --git a/contrib/perl5/installhtml b/contrib/perl5/installhtml index fd11ee69f484..cfbbe9f5c67a 100755 --- a/contrib/perl5/installhtml +++ b/contrib/perl5/installhtml @@ -9,8 +9,6 @@ use Getopt::Long; # for command-line parsing use Cwd; use Pod::Html; -umask 022; - =head1 NAME installhtml - converts a collection of POD pages to HTML format. @@ -63,13 +61,13 @@ a URL. The default is `/'. =item B<--splithead> POD files to split on =head directive -Colon-separated list of pod files to split by the =head directive. The +Comma-separated list of pod files to split by the =head directive. The .pod suffix is optional. These files should have names specified relative to podroot. =item B<--splititem> POD files to split on =item directive -Colon-separated list of all pod files to split by the =item directive. +Comma-separated list of all pod files to split by the =item directive. The .pod suffix is optional. I does not do the actual split, rather it invokes I to do the dirty work. As with --splithead, these files should have names specified relative to podroot. @@ -80,7 +78,7 @@ The directory containing the splitpod program. The default is `podroot/pod'. =item B<--libpods> library PODs for LEE links -Colon-separated list of "library" pod files. This is the same list that +Comma-separated list of "library" pod files. This is the same list that will be passed to pod2html when any pod is converted. =item B<--verbose> verbose output @@ -100,7 +98,7 @@ perl documentation: --htmlroot=/perl/nmanual \ --splithead=pod/perlipc \ --splititem=pod/perlfunc \ - --libpods=perlfunc:perlguts:perlvar:perlrun:perlop \ + --libpods=perlfunc,perlguts,perlvar,perlrun,perlop \ --recurse \ --verbose @@ -161,6 +159,10 @@ $pod2html = "pod/pod2html"; usage("") unless @ARGV; +# Overcome shell's p1,..,p8 limitation. +# See vms/descrip_mms.template -> descrip.mms for invokation. +if ( $^O eq 'VMS' ) { @ARGV = split(/\s+/,$ARGV[0]); } + # parse the command-line $result = GetOptions( qw( help @@ -236,7 +238,12 @@ foreach $dir (@splithead) { @data = (); while () { last if /NAME=/; - s,HREF="#(.*)">,HREF="$file/$1.html">,g; + $_ =~ s{HREF="#(.*)">}{ + my $url = "$file/$1.html" ; + $url = Pod::Html::relativize_url( $url, "$file.html" ) + if ( ! defined $opt_htmlroot || $opt_htmlroot eq '' ) ; + "HREF=\"$url\">" ; + }eg; push @data, $_; } close(H); @@ -291,6 +298,8 @@ sub absolute_path { sub create_index { my($html, $dir) = @_; my(@files, @filedata, @index, $file); + my($lcp1,$lcp2); + # get the list of .html files in this directory opendir(DIR, $dir) || @@ -314,17 +323,25 @@ sub create_index { # pull out the NAME section ($name) = grep(/NAME=/, @filedata); - $name =~ m,/H1>\s(\S+)\s[\s-]*(.*?)\s*$,sm; - print HTML qq(); - print HTML "
      $1
      $2\n" if defined $1; -# print HTML qq($1
      \n") if defined $1; + ($lcp1,$lcp2) = ($name =~ m,/H1>\s(\S+)\s[\s-]*(.*?)\s*$,sm); + if (defined $lcp1 and $lcp1 eq '

      ') { # Uninteresting. Try again. + ($lcp1,$lcp2) = ($name =~ m,/H1>\s

      \s(\S+)\s[\s-]*(.*?)\s*$,sm); + } + my $url= "$dir/$file" ; + if ( ! defined $opt_htmlroot || $opt_htmlroot eq '' ) { + $url = Pod::Html::relativize_url( "$dir/$file", $html ) ; + } + + print HTML qq(); + print HTML "

      $lcp1
      $lcp2\n" if defined $lcp1; +# print HTML qq($lcp1
      \n") if defined $lcp1; next; @index = grep(/.*/s, @filedata); for (@index) { - s/(\s*\s*)/$2/s; + s/(\s*\s*)/$lcp2/s; s,#,$dir/$file#,g; # print HTML "$_\n"; print HTML "$_\n


      \n"; @@ -500,7 +517,7 @@ sub installdir { || die "$0: error opening directory $podroot/$dir: $!\n"; # find the directories to recurse on - @dirlist = map { "$dir/$_" } + @dirlist = map { if ($^O eq 'VMS') {/^(.*)\.dir$/i; "$dir/$1";} else {"$dir/$_";}} grep(-d "$podroot/$dir/$_" && !/^\.{1,2}/, readdir(DIR)) if $recurse; rewinddir(DIR); @@ -571,6 +588,7 @@ sub runpod2html { #system("./pod2html", Pod::Html'pod2html( #Pod::Html'pod2html($pod2html, + "--htmldir=$htmldir", "--htmlroot=$htmlroot", "--podpath=".join(":", @podpath), "--podroot=$podroot", "--netscape", diff --git a/contrib/perl5/installman b/contrib/perl5/installman index 6fa423159fd5..c9fb0fe18cbf 100755 --- a/contrib/perl5/installman +++ b/contrib/perl5/installman @@ -10,15 +10,14 @@ use subs qw(unlink chmod rename link); use vars qw($packlist); require Cwd; -umask 022; $ENV{SHELL} = 'sh' if $^O eq 'os2'; -$ver = $]; -$release = substr($ver,0,3); # Not used presently. -$patchlevel = substr($ver,3,2); +$ver = $Config{version}; +$release = substr($],0,3); # Not used presently. +$patchlevel = substr($],3,2); die "Patchlevel of perl ($patchlevel)", - "and patchlevel of config.sh ($Config{'PATCHLEVEL'}) don't match\n" - if $patchlevel != $Config{'PATCHLEVEL'}; + "and patchlevel of config.sh ($Config{'PERL_VERSION'}) don't match\n" + if $patchlevel != $Config{'PERL_VERSION'}; $usage = "Usage: installman --man1dir=/usr/wherever --man1ext=1 @@ -65,14 +64,21 @@ runpod2man('lib', $man3dir, $man3ext); runpod2man('utils', $man1dir, $man1ext, 'c2ph'); runpod2man('utils', $man1dir, $man1ext, 'h2ph'); runpod2man('utils', $man1dir, $man1ext, 'h2xs'); +runpod2man('utils', $man1dir, $man1ext, 'perlcc'); runpod2man('utils', $man1dir, $man1ext, 'perldoc'); runpod2man('utils', $man1dir, $man1ext, 'perlbug'); runpod2man('utils', $man1dir, $man1ext, 'pl2pm'); runpod2man('utils', $man1dir, $man1ext, 'splain'); +runpod2man('utils', $man1dir, $man1ext, 'dprofpp'); runpod2man('x2p', $man1dir, $man1ext, 's2p'); runpod2man('x2p', $man1dir, $man1ext, 'a2p.pod'); +runpod2man('x2p', $man1dir, $man1ext, 'find2perl'); runpod2man('pod', $man1dir, $man1ext, 'pod2man'); runpod2man('pod', $man1dir, $man1ext, 'pod2html'); +runpod2man('pod', $man1dir, $man1ext, 'pod2text'); +runpod2man('pod', $man1dir, $man1ext, 'pod2usage'); +runpod2man('pod', $man1dir, $man1ext, 'podchecker'); +runpod2man('pod', $man1dir, $man1ext, 'podselect'); # It would probably be better to have this page linked # to the c2ph man page. Or, this one could say ".so man1/c2ph.1", @@ -120,7 +126,8 @@ sub runpod2man { # of the pod. This might be useful for pod2man someday. if ($script) { @modpods = ($script); - } else { + } + else { @modpods = (); find(\&lsmodpods, '.'); } @@ -134,18 +141,22 @@ sub runpod2man { # Convert name from File/Basename.pm to File::Basename.3 format, # if necessary. $manpage =~ s#\.p(m|od)$##; - if ($^O eq 'os2' || $^O eq 'amigaos' || $^O eq 'uwin') { + if ($^O eq 'os2' || $^O eq 'amigaos' || $^O eq 'uwin' || $^O eq 'cygwin') { $manpage =~ s#/#.#g; - } else { + } + else { $manpage =~ s#/#::#g; } $tmp = "${mandir}/${manpage}.tmp"; $manpage = "${mandir}/${manpage}.${manext}"; if (&cmd("$pod2man $mod > $tmp") == 0 && !$notify && -s $tmp) { - rename($tmp, $manpage) && next; + if (rename($tmp, $manpage)) { + $packlist->{$manpage} = { type => 'file' }; + next; + } } unless ($notify) { - unlink($tmp); + unlink($tmp); } } chdir "$builddir" || die "Unable to cd back to $builddir directory!\n$!\n"; @@ -190,11 +201,11 @@ sub unlink { my $cnt = 0; foreach $name (@names) { -next unless -e $name; -chmod 0777, $name if $^O eq 'os2'; -print STDERR " unlink $name\n"; -( CORE::unlink($name) and ++$cnt - or warn "Couldn't unlink $name: $!\n" ) unless $notify; + next unless -e $name; + chmod 0777, $name if $^O eq 'os2'; + print STDERR " unlink $name\n"; + ( CORE::unlink($name) and ++$cnt + or warn "Couldn't unlink $name: $!\n" ) unless $notify; } return $cnt; } @@ -211,14 +222,12 @@ sub link { ? die "AFS" # okay inside eval {} : warn "Couldn't link $from to $to: $!\n" unless $notify; - $packlist->{$to} = { type => 'file' }; }; if ($@) { File::Copy::copy($from, $to) ? $success++ : warn "Couldn't copy $from to $to: $!\n" unless $notify; - $packlist->{$to} = { type => 'file' }; } $success; } @@ -226,16 +235,15 @@ sub link { sub rename { local($from,$to) = @_; if (-f $to and not unlink($to)) { -my($i); -for ($i = 1; $i < 50; $i++) { - last if CORE::rename($to, "$to.$i"); -} -warn("Cannot rename to `$to.$i': $!"), return 0 - if $i >= 50; # Give up! + my($i); + for ($i = 1; $i < 50; $i++) { + last if CORE::rename($to, "$to.$i"); + } + warn("Cannot rename to `$to.$i': $!"), return 0 + if $i >= 50; # Give up! } link($from,$to) || return 0; unlink($from); - $packlist->{$to} = { type => 'file' }; } sub chmod { diff --git a/contrib/perl5/installperl b/contrib/perl5/installperl index b1d5bfb5c931..b2ddc84c2444 100755 --- a/contrib/perl5/installperl +++ b/contrib/perl5/installperl @@ -8,12 +8,13 @@ BEGIN { } use strict; -use vars qw($Is_VMS $Is_W32 $Is_OS2 $nonono $versiononly $depth); +use vars qw($Is_VMS $Is_W32 $Is_OS2 $Is_Cygwin $nonono $dostrip $versiononly $depth); BEGIN { $Is_VMS = $^O eq 'VMS'; $Is_W32 = $^O eq 'MSWin32'; $Is_OS2 = $^O eq 'os2'; + $Is_Cygwin = $^O eq 'cygwin'; if ($Is_VMS) { eval 'use VMS::Filespec;' } } @@ -39,18 +40,26 @@ my $exe_ext = $Config{exe_ext}; # Allow ``make install PERLNAME=something_besides_perl'': my $perl = defined($ENV{PERLNAME}) ? $ENV{PERLNAME} : 'perl'; +# This is the base used for versioned names, like "perl5.6.0". +# It's separate because a common use of $PERLNAME is to install +# perl as "perl5", if that's used as base for versioned files you +# get "perl55.6.0". +my $perl_verbase = defined($ENV{PERLNAME_VERBASE}) + ? $ENV{PERLNAME_VERBASE} + : $perl; + while (@ARGV) { $nonono = 1 if $ARGV[0] eq '-n'; + $dostrip = 1 if $ARGV[0] eq '-s'; $versiononly = 1 if $ARGV[0] eq '-v'; shift; } -umask 022 unless $Is_VMS; - my @scripts = qw(utils/c2ph utils/h2ph utils/h2xs utils/perlbug utils/perldoc - utils/pl2pm utils/splain utils/perlcc + utils/pl2pm utils/splain utils/perlcc utils/dprofpp x2p/s2p x2p/find2perl - pod/pod2man pod/pod2html pod/pod2latex pod/pod2text); + pod/pod2man pod/pod2html pod/pod2latex pod/pod2text + pod/pod2usage pod/podchecker pod/podselect); if ($scr_ext) { @scripts = map { "$_$scr_ext" } @scripts; } @@ -77,18 +86,34 @@ if ((-e "testcompile") && (defined($ENV{'COMPILE'}))) } find(sub { - if ("$File::Find::dir/$_" =~ m{^ext/[^/]+/(.*)\.pm$}) { - (my $pm = $1) =~ s{^lib/}{}; - $archpms{$pm} = 1; + if ("$File::Find::dir/$_" =~ m{^ext\b(.*)/([^/]+)\.pm$}) { + my($path, $modname) = ($1,$2); + + # strip trailing component first + $path =~ s{/[^/]*$}{}; + + # strip optional "/lib"; + $path =~ s{/lib\b}{}; + + # strip any leading / + $path =~ s{^/}{}; + + # reconstitute canonical module name + $modname = "$path/$modname" if length $path; + + # remember it + $archpms{$modname} = 1; } }, 'ext'); -my $ver = $]; -my $release = substr($ver,0,3); # Not used presently. -my $patchlevel = substr($ver,3,2); +# print "[$_]\n" for sort keys %archpms; + +my $ver = $Config{version}; +my $release = substr($],0,3); # Not used presently. +my $patchlevel = substr($],3,2); die "Patchlevel of perl ($patchlevel)", - "and patchlevel of config.sh ($Config{'PATCHLEVEL'}) don't match\n" - if $patchlevel != $Config{'PATCHLEVEL'}; + "and patchlevel of config.sh ($Config{'PERL_VERSION'}) don't match\n" + if $patchlevel != $Config{'PERL_VERSION'}; # Fetch some frequently-used items from %Config my $installbin = $Config{installbin}; @@ -103,6 +128,7 @@ my $libperl = $Config{libperl}; # Shared library and dynamic loading suffixes. my $so = $Config{so}; my $dlext = $Config{dlext}; +my $dlsrc = $Config{dlsrc}; my $d_dosuid = $Config{d_dosuid}; my $binexp = $Config{binexp}; @@ -132,19 +158,34 @@ if ($d_dosuid && $>) { die "You must run as root to install suidperl\n"; } || warn "WARNING: You've never run 'make test'!!!", " (Installing anyway.)\n"; -if ($Is_W32) { +if ($Is_W32 or $Is_Cygwin) { + my $perldll; -my $perldll = 'perl.' . $dlext; -$perldll = 'perlcore.' . $dlext if $Config{'ccflags'} =~ /PERL_OBJECT/i; - --f $perldll || die "No perl DLL built\n"; +if ($Is_Cygwin) { + $perldll = $libperl; + $perldll =~ s/(\..*)?$/.$dlext/; + if ($Config{useshrplib} eq 'true') { + # install ld2 and perlld as well + foreach ('ld2', 'perlld') { + safe_unlink("$installbin/$_"); + copy("$_", "$installbin/$_"); + chmod(0755, "$installbin/$_"); + }; + }; +} else { + $perldll = 'perl56.' . $dlext; +} + if ($dlsrc ne "dl_none.xs") { + -f $perldll || die "No perl DLL built\n"; + } # Install the DLL -safe_unlink("$installbin/$perldll"); -copy("$perldll", "$installbin/$perldll"); -chmod(0755, "$installbin/$perldll"); -} + safe_unlink("$installbin/$perldll"); + copy("$perldll", "$installbin/$perldll"); + chmod(0755, "$installbin/$perldll"); + +} # if ($Is_W32 or $Is_Cygwin) # This will be used to store the packlist my $packlist = ExtUtils::Packlist->new("$installarchlib/.packlist"); @@ -170,19 +211,20 @@ elsif ($^O eq 'mpeix') { link($Config{perlpath}, "$installbin/perl$ver$exe_ext"); } elsif ($^O ne 'dos') { - safe_unlink("$installbin/$perl$ver$exe_ext"); - copy("perl$exe_ext", "$installbin/$perl$ver$exe_ext"); - chmod(0755, "$installbin/$perl$ver$exe_ext"); + safe_unlink("$installbin/$perl_verbase$ver$exe_ext"); + copy("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext"); + strip("$installbin/$perl_verbase$ver$exe_ext"); + chmod(0755, "$installbin/$perl_verbase$ver$exe_ext"); } else { safe_unlink("$installbin/$perl.exe"); copy("perl.exe", "$installbin/$perl.exe"); } -safe_unlink("$installbin/s$perl$ver$exe_ext"); +safe_unlink("$installbin/s$perl_verbase$ver$exe_ext"); if ($d_dosuid) { - copy("suidperl$exe_ext", "$installbin/s$perl$ver$exe_ext"); - chmod(04711, "$installbin/s$perl$ver$exe_ext"); + copy("suidperl$exe_ext", "$installbin/s$perl_verbase$ver$exe_ext"); + chmod(04711, "$installbin/s$perl_verbase$ver$exe_ext"); } # Install library files. @@ -197,7 +239,7 @@ mkpath($installsitearch, 1, 0777) if ($installsitearch); if (chdir "lib") { $do_installarchlib = ! samepath($installarchlib, '.'); $do_installprivlib = ! samepath($installprivlib, '.'); - $do_installprivlib = 0 if $versiononly && !($installprivlib =~ m/\Q$]/); + $do_installprivlib = 0 if $versiononly && !($installprivlib =~ m/\Q$ver/); if ($do_installarchlib || $do_installprivlib) { find(\&installlib, '.'); @@ -212,12 +254,14 @@ else { mkpath("$installarchlib/CORE", 1, 0777); my @corefiles; if ($Is_VMS) { # We did core file selection during build - my $coredir = "lib/$Config{'arch'}/$]"; + my $coredir = "lib/$Config{'arch'}/$ver"; $coredir =~ tr/./_/; - @corefiles = <$coredir/*.*>; + @corefiles = map { s|^$coredir/||i; } <$coredir/*.*>; } else { + # [als] hard-coded 'libperl' name... not good! @corefiles = <*.h libperl*.*>; + # AIX needs perl.exp installed as well. push(@corefiles,'perl.exp') if $^O eq 'aix'; if ($^O eq 'mpeix') { @@ -231,9 +275,14 @@ else { foreach my $file (@corefiles) { # HP-UX (at least) needs to maintain execute permissions # on dynamically-loadable libraries. So we do it for all. - copy_if_diff($file,"$installarchlib/CORE/$file") - and chmod($file =~ /\.(so|\Q$dlext\E)$/ ? 0555 : 0444, - "$installarchlib/CORE/$file"); + if (copy_if_diff($file,"$installarchlib/CORE/$file")) { + if ($file =~ /\.(\Q$so\E|\Q$dlext\E)$/) { + chmod(0555, "$installarchlib/CORE/$file"); + strip("-S", "$installarchlib/CORE/$file") if $^O =~ /^(rhapsody|darwin)$/; + } else { + chmod(0444, "$installarchlib/CORE/$file"); + } + } } # Install main perl executables @@ -246,9 +295,11 @@ if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VM # We don't want another cloned copy. symlink($Config{perlpath}, "$installbin/perl$exe_ext"); } else { - link("$installbin/$perl$ver$exe_ext", "$installbin/$perl$exe_ext"); + link("$installbin/$perl_verbase$ver$exe_ext", + "$installbin/$perl$exe_ext"); } - link("$installbin/s$perl$ver$exe_ext", "$installbin/suid$perl$exe_ext") + link("$installbin/s$perl_verbase$ver$exe_ext", + "$installbin/suid$perl$exe_ext") if $d_dosuid; } @@ -324,36 +375,39 @@ if (! $versiononly) { if (! $versiononly) { safe_unlink("$installscript/pstruct$scr_ext"); - if ($^O eq 'dos' or $Is_VMS) { + if ($^O eq 'dos' or $Is_VMS or $^O eq 'transit') { copy("$installscript/c2ph$scr_ext", "$installscript/pstruct$scr_ext"); } else { link("$installscript/c2ph$scr_ext", "$installscript/pstruct$scr_ext"); } } -# Install pod pages. Where? I guess in $installprivlib/pod. +# Install pod pages. Where? I guess in $installprivlib/pod +# ($installprivlib/pods for cygwin). -unless ( $versiononly && !($installprivlib =~ m/\Q$]/)) { # as line 200 - mkpath("${installprivlib}/pod", 1, 0777); +my $pod = $Is_Cygwin ? 'pods' : 'pod'; +unless ( $versiononly && !($installprivlib =~ m/\Q$ver/)) { + mkpath("${installprivlib}/$pod", 1, 0777); # If Perl 5.003's perldiag.pod is there, rename it. - if (open POD, "${installprivlib}/pod/perldiag.pod") { + if (open POD, "${installprivlib}/$pod/perldiag.pod") { read POD, $_, 4000; close POD; # Some of Perl 5.003's diagnostic messages ended with periods. if (/^=.*\.$/m) { - my ($from, $to) = ("${installprivlib}/pod/perldiag.pod", - "${installprivlib}/pod/perldiag-5.003.pod"); - print STDERR " rename $from $to"; + my ($from, $to) = ("${installprivlib}/$pod/perldiag.pod", + "${installprivlib}/$pod/perldiag-5.003.pod"); + print " rename $from $to"; rename($from, $to) or warn "Couldn't rename $from to $to: $!\n" unless $nonono; } } - foreach my $file (@pods) { - # $file is a name like pod/perl.pod - copy_if_diff($file, "${installprivlib}/${file}"); + for (@pods) { + # $_ is a name like pod/perl.pod + (my $base = $_) =~ s#.*/##; + copy_if_diff($_, "${installprivlib}/$pod/${base}"); } } @@ -365,7 +419,7 @@ unless ( $versiononly && !($installprivlib =~ m/\Q$]/)) { # as line 200 # installed perl. if (!$versiononly) { - my ($path, @path); + my ($path, @path); my $dirsep = ($Is_OS2 || $Is_W32) ? ';' : ':' ; ($path = $ENV{"PATH"}) =~ s:\\:/:g ; @path = split(/$dirsep/, $path); @@ -377,14 +431,17 @@ if (!$versiononly) { } } my @otherperls; + my %otherperls; for (@path) { next unless m,^/,; # Use &samepath here because some systems have other dirs linked # to $mainperldir (like SunOS) next if samepath($_, $binexp); next if ($mainperl_is_instperl && samepath($_, $mainperldir)); - push(@otherperls, "$_/$perl$exe_ext") - if (-x "$_/$perl$exe_ext" && ! -d "$_/$perl$exe_ext"); + my $otherperl = "$_/$perl$exe_ext"; + next if $otherperls{$otherperl}++; + push(@otherperls, $otherperl) + if (-x $otherperl && ! -d $otherperl); } if (@otherperls) { print STDERR "\nWarning: $perl appears in your path in the following " . @@ -398,7 +455,7 @@ if (!$versiononly) { } $packlist->write() unless $nonono; -print STDERR " Installation complete\n"; +print " Installation complete\n"; exit 0; @@ -408,7 +465,7 @@ sub yn { my($prompt) = @_; my($answer); my($default) = $prompt =~ m/\[([yn])\]\s*$/i; - print STDERR $prompt; + print $prompt; chop($answer = ); $answer = $default if $answer =~ m/^\s*$/; ($answer =~ m/^[yY]/); @@ -422,8 +479,8 @@ sub unlink { foreach my $name (@names) { next unless -e $name; - chmod 0777, $name if ($Is_OS2 || $Is_W32); - print STDERR " unlink $name\n"; + chmod 0777, $name if ($Is_OS2 || $Is_W32 || $Is_Cygwin); + print " unlink $name\n"; ( CORE::unlink($name) and ++$cnt or warn "Couldn't unlink $name: $!\n" ) unless $nonono; } @@ -436,11 +493,11 @@ sub safe_unlink { foreach my $name (@names) { next unless -e $name; chmod 0777, $name if ($Is_OS2 || $Is_W32); - print STDERR " unlink $name\n"; + print " unlink $name\n"; next if CORE::unlink($name); warn "Couldn't unlink $name: $!\n"; if ($! =~ /busy/i) { - print STDERR " mv $name $name.old\n"; + print " mv $name $name.old\n"; safe_rename($name, "$name.old") or warn "Couldn't rename $name: $!\n"; } @@ -465,18 +522,20 @@ sub link { my($from,$to) = @_; my($success) = 0; - print STDERR " ln $from $to\n"; + print " ln $from $to\n"; eval { CORE::link($from, $to) ? $success++ : ($from =~ m#^/afs/# || $to =~ m#^/afs/#) ? die "AFS" # okay inside eval {} - : warn "Couldn't link $from to $to: $!\n" + : die "Couldn't link $from to $to: $!\n" unless $nonono; $packlist->{$to} = { from => $from, type => 'link' }; }; if ($@) { - print STDERR " creating new version of $to\n" if $Is_VMS and -e $to; + warn $@; + print " cp $from $to\n"; + print " creating new version of $to\n" if $Is_VMS and -e $to; File::Copy::copy($from, $to) ? $success++ : warn "Couldn't copy $from to $to: $!\n" @@ -490,7 +549,7 @@ sub chmod { my($mode,$name) = @_; return if ($^O eq 'dos'); - printf STDERR " chmod %o %s\n", $mode, $name; + printf " chmod %o %s\n", $mode, $name; CORE::chmod($mode,$name) || warn sprintf("Couldn't chmod %o %s: $!\n", $mode, $name) unless $nonono; @@ -499,8 +558,8 @@ sub chmod { sub copy { my($from,$to) = @_; - print STDERR " cp $from $to\n"; - print STDERR " creating new version of $to\n" if $Is_VMS and -e $to; + print " cp $from $to\n"; + print " creating new version of $to\n" if $Is_VMS and -e $to; File::Copy::copy($from, $to) || warn "Couldn't copy $from to $to: $!\n" unless $nonono; @@ -530,13 +589,15 @@ sub installlib { my $name = $_; - if ($name eq 'CVS' && -d $name) { + # Ignore RCS and CVS directories. + if (($name eq 'CVS' or $name eq 'RCS') and -d $name) { $File::Find::prune = 1; return; } - # ignore patch backups and the .exists files. - return if $name =~ m{\.orig$|~$|^\.exists}; + # ignore patch backups, RCS files, emacs backup & temp files and the + # .exists files. + return if $name =~ m{\.orig$|~$|^#.+#$|,v$|^\.exists}; $name = "$dir/$name" if $dir ne ''; @@ -586,7 +647,7 @@ sub installlib { sub copy_if_diff { my($from,$to)=@_; return 1 if (($^O eq 'VMS') && (-d $from)); - -f $from || die "$0: $from not found"; + -f $from || warn "$0: $from not found"; $packlist->{$to} = { type => 'file' }; if (compare($from, $to) || $nonono) { safe_unlink($to); # In case we don't have write permissions. @@ -602,3 +663,25 @@ sub copy_if_diff { 1; } } + +sub strip +{ + my(@args) = @_; + + return unless $dostrip; + + my @opts; + while (@args && $args[0] =~ /^(-\w+)$/) { + push @opts, shift @args; + } + + foreach my $file (@args) { + if (-f $file) { + print " strip $file\n"; + system("strip", @opts, $file); + } else { + print "# file '$file' skipped\n"; + } + } +} + diff --git a/contrib/perl5/intrpvar.h b/contrib/perl5/intrpvar.h index 1f6244d557a1..39d14c985e4d 100644 --- a/contrib/perl5/intrpvar.h +++ b/contrib/perl5/intrpvar.h @@ -8,25 +8,21 @@ * generated when built with or without MULTIPLICITY. It is also used * to generate the appropriate export list for win32. * - * When building without MULTIPLICITY, these variables will be truly global. - * - * Avoid build-specific #ifdefs here, like DEBUGGING. That way, - * we can keep binary compatibility of the curinterp structure */ + * When building without MULTIPLICITY, these variables will be truly global. */ /* pseudo environmental stuff */ PERLVAR(Iorigargc, int) PERLVAR(Iorigargv, char **) PERLVAR(Ienvgv, GV *) -PERLVAR(Isiggv, GV *) PERLVAR(Iincgv, GV *) PERLVAR(Ihintgv, GV *) PERLVAR(Iorigfilename, char *) PERLVAR(Idiehook, SV *) PERLVAR(Iwarnhook, SV *) -PERLVAR(Iparsehook, SV *) -PERLVAR(Icddir, char *) /* switches */ + +/* switches */ PERLVAR(Iminus_c, bool) -PERLVAR(Ipatchlevel[10],char) +PERLVAR(Ipatchlevel, SV *) PERLVAR(Ilocalpatches, char **) PERLVARI(Isplitstr, char *, " ") PERLVAR(Ipreprocess, bool) @@ -36,17 +32,25 @@ PERLVAR(Iminus_l, bool) PERLVAR(Iminus_a, bool) PERLVAR(Iminus_F, bool) PERLVAR(Idoswitches, bool) -PERLVAR(Idowarn, bool) + +/* +=for apidoc Amn|bool|PL_dowarn + +The C variable which corresponds to Perl's $^W warning variable. + +=cut +*/ + +PERLVAR(Idowarn, U8) +PERLVAR(Iwidesyscalls, bool) /* wide system calls */ PERLVAR(Idoextract, bool) PERLVAR(Isawampersand, bool) /* must save all match strings */ -PERLVAR(Isawstudy, bool) /* do fbm_instr on all strings */ -PERLVAR(Isawvec, bool) PERLVAR(Iunsafe, bool) PERLVAR(Iinplace, char *) PERLVAR(Ie_script, SV *) PERLVAR(Iperldb, U32) -/* This value may be raised by extensions for testing purposes */ +/* This value may be set when embedding for full cleanup */ /* 0=none, 1=full, 2=full with checks */ PERLVARI(Iperl_destruct_level, int, 0) @@ -59,22 +63,20 @@ PERLVARI(Imaxsysfd, I32, MAXSYSFD) /* top fd to pass to subprocesses */ PERLVAR(Imultiline, int) /* $*--do strings hold >1 line? */ PERLVAR(Istatusvalue, I32) /* $? */ +PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */ #ifdef VMS PERLVAR(Istatusvalue_vms,U32) #endif /* shortcuts to various I/O objects */ PERLVAR(Istdingv, GV *) +PERLVAR(Istderrgv, GV *) PERLVAR(Idefgv, GV *) PERLVAR(Iargvgv, GV *) PERLVAR(Iargvoutgv, GV *) +PERLVAR(Iargvout_stack, AV *) /* shortcuts to regexp stuff */ -/* XXX these three aren't used anywhere */ -PERLVAR(Ileftgv, GV *) -PERLVAR(Iampergv, GV *) -PERLVAR(Irightgv, GV *) - /* this one needs to be moved to thrdvar.h and accessed via * find_threadsv() when USE_THREADS */ PERLVAR(Ireplgv, GV *) @@ -85,6 +87,29 @@ PERLVAR(Ierrgv, GV *) /* shortcuts to debugging objects */ PERLVAR(IDBgv, GV *) PERLVAR(IDBline, GV *) + +/* +=for apidoc Amn|GV *|PL_DBsub +When Perl is run in debugging mode, with the B<-d> switch, this GV contains +the SV which holds the name of the sub being debugged. This is the C +variable which corresponds to Perl's $DB::sub variable. See +C. + +=for apidoc Amn|SV *|PL_DBsingle +When Perl is run in debugging mode, with the B<-d> switch, this SV is a +boolean which indicates whether subs are being single-stepped. +Single-stepping is automatically turned on after every step. This is the C +variable which corresponds to Perl's $DB::single variable. See +C. + +=for apidoc Amn|SV *|PL_DBtrace +Trace variable used when Perl is run in debugging mode, with the B<-d> +switch. This is the C variable which corresponds to Perl's $DB::trace +variable. See C. + +=cut +*/ + PERLVAR(IDBsub, GV *) PERLVAR(IDBsingle, SV *) PERLVAR(IDBtrace, SV *) @@ -98,6 +123,7 @@ PERLVAR(Iglobalstash, HV *) /* global keyword overrides imported here */ PERLVAR(Icurstname, SV *) /* name of current package */ PERLVAR(Ibeginav, AV *) /* names of BEGIN subroutines */ PERLVAR(Iendav, AV *) /* names of END subroutines */ +PERLVAR(Icheckav, AV *) /* names of CHECK subroutines */ PERLVAR(Iinitav, AV *) /* names of INIT subroutines */ PERLVAR(Istrtab, HV *) /* shared string table */ PERLVARI(Isub_generation,U32,1) /* incr to invalidate method cache */ @@ -109,8 +135,6 @@ PERLVAR(Isv_root, SV*) /* storage for SVs belonging to interp */ PERLVAR(Isv_arenaroot, SV*) /* list of areas for garbage collection */ /* funky return mechanisms */ -PERLVAR(Ilastspbase, I32) -PERLVAR(Ilastsize, I32) PERLVAR(Iforkprocess, int) /* so do_open |- can return proc# */ /* subprocess state */ @@ -119,13 +143,6 @@ PERLVAR(Ifdpid, AV *) /* keep fd-to-pid mappings for my_popen */ /* internal state */ PERLVAR(Itainting, bool) /* doing taint checks */ PERLVARI(Iop_mask, char *, NULL) /* masked operations for safe evals */ -PERLVAR(Ilast_proto, char *) /* Prototype of last sub seen. */ - -/* trace state */ -PERLVAR(Idlevel, I32) -PERLVARI(Idlmax, I32, 128) -PERLVAR(Idebname, char *) -PERLVAR(Idebdelim, char *) /* current interpreter roots */ PERLVAR(Imain_cv, CV *) @@ -139,15 +156,11 @@ PERLVARI(Icurcopdb, COP *, NULL) PERLVARI(Icopline, line_t, NOLINE) /* statics moved here for shared library purposes */ -PERLVAR(Istrchop, SV) /* return value from chop */ PERLVAR(Ifilemode, int) /* so nextargv() can preserve mode */ PERLVAR(Ilastfd, int) /* what to preserve mode on */ PERLVAR(Ioldname, char *) /* what to preserve mode on */ PERLVAR(IArgv, char **) /* stuff to free from do_aexec, vfork safe */ PERLVAR(ICmd, char *) /* stuff to free from do_aexec, vfork safe */ -PERLVAR(Imystrk, SV *) /* temp key string for do_each() */ -PERLVAR(Idumplvl, I32) /* indentation level on syntax tree dump */ -PERLVAR(Ioldlastpm, PMOP *) /* for saving regexp context in debugger */ PERLVAR(Igensym, I32) /* next symbol for getsym() to define */ PERLVAR(Ipreambled, bool) PERLVAR(Ipreambleav, AV *) @@ -164,6 +177,19 @@ PERLVAR(Iofmt, char *) /* output format for numbers $# */ PERLVARI(Iexitlist, PerlExitListEntry *, NULL) /* list of exit functions */ PERLVARI(Iexitlistlen, I32, 0) /* length of same */ + +/* +=for apidoc Amn|HV*|PL_modglobal + +C is a general purpose, interpreter global HV for use by +extensions that need to keep information on a per-interpreter basis. +In a pinch, it can also be used as a symbol table for extensions +to share data among each other. It is a good idea to use keys +prefixed by the package name of the extension that owns the data. + +=cut +*/ + PERLVAR(Imodglobal, HV *) /* per-interp module data */ /* these used to be in global before 5.004_68 */ @@ -187,7 +213,6 @@ PERLVAR(Isys_intern, struct interp_intern) /* more statics moved here */ PERLVARI(Igeneration, int, 100) /* from op.c */ PERLVAR(IDBcv, CV *) /* from perl.c */ -PERLVAR(Iarchpat_auto, char*) /* from perl.c */ PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */ PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */ @@ -202,18 +227,219 @@ PERLVARI(Ithreadnum, U32, 0) /* incremented each thread creation */ PERLVAR(Istrtab_mutex, perl_mutex) /* Mutex for string table access */ #endif /* USE_THREADS */ -PERLVARI(Ibytecode_iv_overflows,int, 0) /* from bytecode.h */ -PERLVAR(Ibytecode_sv, SV *) -PERLVAR(Ibytecode_pv, XPV) -PERLVAR(Ibytecode_obj_list, void **) -PERLVARI(Ibytecode_obj_list_fill, I32, -1) +PERLVAR(Iuid, Uid_t) /* current real user id */ +PERLVAR(Ieuid, Uid_t) /* current effective user id */ +PERLVAR(Igid, Gid_t) /* current real group id */ +PERLVAR(Iegid, Gid_t) /* current effective group id */ +PERLVAR(Inomemok, bool) /* let malloc context handle nomem */ +PERLVAR(Ian, U32) /* malloc sequence number */ +PERLVAR(Icop_seqmax, U32) /* statement sequence number */ +PERLVAR(Iop_seqmax, U16) /* op sequence number */ +PERLVAR(Ievalseq, U32) /* eval sequence number */ +PERLVAR(Iorigenviron, char **) +PERLVAR(Iorigalen, U32) +PERLVAR(Ipidstatus, HV *) /* pid-to-status mappings for waitpid */ +PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */ +PERLVAR(Iosname, char *) /* operating system */ +PERLVARI(Ish_path, char *, SH_PATH)/* full path of shell */ +PERLVAR(Isighandlerp, Sighandler_t) -#ifdef PERL_OBJECT -PERLVARI(piMem, IPerlMem*, NULL) -PERLVARI(piENV, IPerlEnv*, NULL) -PERLVARI(piStdIO, IPerlStdIO*, NULL) -PERLVARI(piLIO, IPerlLIO*, NULL) -PERLVARI(piDir, IPerlDir*, NULL) -PERLVARI(piSock, IPerlSock*, NULL) -PERLVARI(piProc, IPerlProc*, NULL) +PERLVAR(Ixiv_arenaroot, XPV*) /* list of allocated xiv areas */ +PERLVAR(Ixiv_root, IV *) /* free xiv list--shared by interpreters */ +PERLVAR(Ixnv_root, NV *) /* free xnv list--shared by interpreters */ +PERLVAR(Ixrv_root, XRV *) /* free xrv list--shared by interpreters */ +PERLVAR(Ixpv_root, XPV *) /* free xpv list--shared by interpreters */ +PERLVAR(Ixpviv_root, XPVIV *) /* free xpviv list--shared by interpreters */ +PERLVAR(Ixpvnv_root, XPVNV *) /* free xpvnv list--shared by interpreters */ +PERLVAR(Ixpvcv_root, XPVCV *) /* free xpvcv list--shared by interpreters */ +PERLVAR(Ixpvav_root, XPVAV *) /* free xpvav list--shared by interpreters */ +PERLVAR(Ixpvhv_root, XPVHV *) /* free xpvhv list--shared by interpreters */ +PERLVAR(Ixpvmg_root, XPVMG *) /* free xpvmg list--shared by interpreters */ +PERLVAR(Ixpvlv_root, XPVLV *) /* free xpvlv list--shared by interpreters */ +PERLVAR(Ixpvbm_root, XPVBM *) /* free xpvbm list--shared by interpreters */ +PERLVAR(Ihe_root, HE *) /* free he list--shared by interpreters */ +PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */ +PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */ + +PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT)) + +PERLVARA(Itokenbuf,256, char) + +/* +=for apidoc Amn|SV|PL_sv_undef +This is the C SV. Always refer to this as C<&PL_sv_undef>. + +=for apidoc Amn|SV|PL_sv_no +This is the C SV. See C. Always refer to this as +C<&PL_sv_no>. + +=for apidoc Amn|SV|PL_sv_yes +This is the C SV. See C. Always refer to this as +C<&PL_sv_yes>. + +=cut +*/ + +PERLVAR(Isv_undef, SV) +PERLVAR(Isv_no, SV) +PERLVAR(Isv_yes, SV) + +#ifdef CSH +PERLVARI(Icshname, char *, CSH) +PERLVAR(Icshlen, I32) +#endif + +PERLVAR(Ilex_state, U32) /* next token is determined */ +PERLVAR(Ilex_defer, U32) /* state after determined token */ +PERLVAR(Ilex_expect, int) /* expect after determined token */ +PERLVAR(Ilex_brackets, I32) /* bracket count */ +PERLVAR(Ilex_formbrack, I32) /* bracket count at outer format level */ +PERLVAR(Ilex_casemods, I32) /* casemod count */ +PERLVAR(Ilex_dojoin, I32) /* doing an array interpolation */ +PERLVAR(Ilex_starts, I32) /* how many interps done on level */ +PERLVAR(Ilex_stuff, SV *) /* runtime pattern from m// or s/// */ +PERLVAR(Ilex_repl, SV *) /* runtime replacement from s/// */ +PERLVAR(Ilex_op, OP *) /* extra info to pass back on op */ +PERLVAR(Ilex_inpat, OP *) /* in pattern $) and $| are special */ +PERLVAR(Ilex_inwhat, I32) /* what kind of quoting are we in */ +PERLVAR(Ilex_brackstack,char *) /* what kind of brackets to pop */ +PERLVAR(Ilex_casestack, char *) /* what kind of case mods in effect */ + +/* What we know when we're in LEX_KNOWNEXT state. */ +PERLVARA(Inextval,5, YYSTYPE) /* value of next token, if any */ +PERLVARA(Inexttype,5, I32) /* type of next token */ +PERLVAR(Inexttoke, I32) + +PERLVAR(Ilinestr, SV *) +PERLVAR(Ibufptr, char *) +PERLVAR(Ioldbufptr, char *) +PERLVAR(Ioldoldbufptr, char *) +PERLVAR(Ibufend, char *) +PERLVARI(Iexpect,int, XSTATE) /* how to interpret ambiguous tokens */ + +PERLVAR(Imulti_start, I32) /* 1st line of multi-line string */ +PERLVAR(Imulti_end, I32) /* last line of multi-line string */ +PERLVAR(Imulti_open, I32) /* delimiter of said string */ +PERLVAR(Imulti_close, I32) /* delimiter of said string */ + +PERLVAR(Ierror_count, I32) /* how many errors so far, max 10 */ +PERLVAR(Isubline, I32) /* line this subroutine began on */ +PERLVAR(Isubname, SV *) /* name of current subroutine */ + +PERLVAR(Imin_intro_pending, I32) /* start of vars to introduce */ +PERLVAR(Imax_intro_pending, I32) /* end of vars to introduce */ +PERLVAR(Ipadix, I32) /* max used index in current "register" pad */ +PERLVAR(Ipadix_floor, I32) /* how low may inner block reset padix */ +PERLVAR(Ipad_reset_pending, I32) /* reset pad on next attempted alloc */ + +PERLVAR(Ilast_uni, char *) /* position of last named-unary op */ +PERLVAR(Ilast_lop, char *) /* position of last list operator */ +PERLVAR(Ilast_lop_op, OPCODE) /* last list operator */ +PERLVAR(Iin_my, I32) /* we're compiling a "my" (or "our") declaration */ +PERLVAR(Iin_my_stash, HV *) /* declared class of this "my" declaration */ +#ifdef FCRYPT +PERLVAR(Icryptseen, bool) /* has fast crypt() been initialized? */ +#endif + +PERLVAR(Ihints, U32) /* pragma-tic compile-time flags */ + +PERLVAR(Idebug, VOL U32) /* flags given to -D switch */ + +PERLVAR(Iamagic_generation, long) + +#ifdef USE_LOCALE_COLLATE +PERLVAR(Icollation_ix, U32) /* Collation generation index */ +PERLVAR(Icollation_name,char *) /* Name of current collation */ +PERLVARI(Icollation_standard, bool, TRUE) + /* Assume simple collation */ +PERLVAR(Icollxfrm_base, Size_t) /* Basic overhead in *xfrm() */ +PERLVARI(Icollxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */ +#endif /* USE_LOCALE_COLLATE */ + +#ifdef USE_LOCALE_NUMERIC + +PERLVAR(Inumeric_name, char *) /* Name of current numeric locale */ +PERLVARI(Inumeric_standard, bool, TRUE) + /* Assume simple numerics */ +PERLVARI(Inumeric_local, bool, TRUE) + /* Assume local numerics */ +PERLVAR(Inumeric_radix, char) + /* The radix character if not '.' */ + +#endif /* !USE_LOCALE_NUMERIC */ + +/* utf8 character classes */ +PERLVAR(Iutf8_alnum, SV *) +PERLVAR(Iutf8_alnumc, SV *) +PERLVAR(Iutf8_ascii, SV *) +PERLVAR(Iutf8_alpha, SV *) +PERLVAR(Iutf8_space, SV *) +PERLVAR(Iutf8_cntrl, SV *) +PERLVAR(Iutf8_graph, SV *) +PERLVAR(Iutf8_digit, SV *) +PERLVAR(Iutf8_upper, SV *) +PERLVAR(Iutf8_lower, SV *) +PERLVAR(Iutf8_print, SV *) +PERLVAR(Iutf8_punct, SV *) +PERLVAR(Iutf8_xdigit, SV *) +PERLVAR(Iutf8_mark, SV *) +PERLVAR(Iutf8_toupper, SV *) +PERLVAR(Iutf8_totitle, SV *) +PERLVAR(Iutf8_tolower, SV *) +PERLVAR(Ilast_swash_hv, HV *) +PERLVAR(Ilast_swash_klen, U32) +PERLVARA(Ilast_swash_key,10, U8) +PERLVAR(Ilast_swash_tmps, U8 *) +PERLVAR(Ilast_swash_slen, STRLEN) + +/* perly.c globals */ +PERLVAR(Iyydebug, int) +PERLVAR(Iyynerrs, int) +PERLVAR(Iyyerrflag, int) +PERLVAR(Iyychar, int) +PERLVAR(Iyyval, YYSTYPE) +PERLVAR(Iyylval, YYSTYPE) + +PERLVAR(Iglob_index, int) +PERLVAR(Isrand_called, bool) +PERLVARA(Iuudmap,256, char) +PERLVAR(Ibitcount, char *) + +#ifdef USE_THREADS +PERLVAR(Isv_mutex, perl_mutex) /* Mutex for allocating SVs in sv.c */ +PERLVAR(Ieval_mutex, perl_mutex) /* Mutex for doeval */ +PERLVAR(Ieval_cond, perl_cond) /* Condition variable for doeval */ +PERLVAR(Ieval_owner, struct perl_thread *) + /* Owner thread for doeval */ +PERLVAR(Inthreads, int) /* Number of threads currently */ +PERLVAR(Ithreads_mutex, perl_mutex) /* Mutex for nthreads and thread list */ +PERLVAR(Inthreads_cond, perl_cond) /* Condition variable for nthreads */ +PERLVAR(Isvref_mutex, perl_mutex) /* Mutex for SvREFCNT_{inc,dec} */ +PERLVARI(Ithreadsv_names,char *, THREADSV_NAMES) +#ifdef FAKE_THREADS +PERLVAR(Icurthr, struct perl_thread *) + /* Currently executing (fake) thread */ +#endif + +PERLVAR(Icred_mutex, perl_mutex) /* altered credentials in effect */ + +#endif /* USE_THREADS */ + +PERLVAR(Ipsig_ptr, SV**) +PERLVAR(Ipsig_name, SV**) + +#if defined(PERL_IMPLICIT_SYS) +PERLVAR(IMem, struct IPerlMem*) +PERLVAR(IMemShared, struct IPerlMem*) +PERLVAR(IMemParse, struct IPerlMem*) +PERLVAR(IEnv, struct IPerlEnv*) +PERLVAR(IStdIO, struct IPerlStdIO*) +PERLVAR(ILIO, struct IPerlLIO*) +PERLVAR(IDir, struct IPerlDir*) +PERLVAR(ISock, struct IPerlSock*) +PERLVAR(IProc, struct IPerlProc*) +#endif + +#if defined(USE_ITHREADS) +PERLVAR(Iptr_table, PTR_TBL_t*) #endif diff --git a/contrib/perl5/iperlsys.h b/contrib/perl5/iperlsys.h index da8c5d6ac938..f36dcd5f32ac 100644 --- a/contrib/perl5/iperlsys.h +++ b/contrib/perl5/iperlsys.h @@ -71,63 +71,118 @@ # define PERLIO_IS_STDIO # endif #else -extern void PerlIO_init _((void)); +extern void PerlIO_init (void); #endif -#ifdef PERL_OBJECT +#ifndef Sighandler_t +typedef Signal_t (*Sighandler_t) (int); +#endif + +#if defined(PERL_IMPLICIT_SYS) #ifndef PerlIO typedef struct _PerlIO PerlIO; #endif -class IPerlStdIO +/* IPerlStdIO */ +struct IPerlStdIO; +struct IPerlStdIOInfo; +typedef PerlIO* (*LPStdin)(struct IPerlStdIO*); +typedef PerlIO* (*LPStdout)(struct IPerlStdIO*); +typedef PerlIO* (*LPStderr)(struct IPerlStdIO*); +typedef PerlIO* (*LPOpen)(struct IPerlStdIO*, const char*, + const char*); +typedef int (*LPClose)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPEof)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPError)(struct IPerlStdIO*, PerlIO*); +typedef void (*LPClearerr)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPGetc)(struct IPerlStdIO*, PerlIO*); +typedef char* (*LPGetBase)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPGetBufsiz)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPGetCnt)(struct IPerlStdIO*, PerlIO*); +typedef char* (*LPGetPtr)(struct IPerlStdIO*, PerlIO*); +typedef char* (*LPGets)(struct IPerlStdIO*, PerlIO*, char*, int); +typedef int (*LPPutc)(struct IPerlStdIO*, PerlIO*, int); +typedef int (*LPPuts)(struct IPerlStdIO*, PerlIO*, const char*); +typedef int (*LPFlush)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPUngetc)(struct IPerlStdIO*, PerlIO*,int); +typedef int (*LPFileno)(struct IPerlStdIO*, PerlIO*); +typedef PerlIO* (*LPFdopen)(struct IPerlStdIO*, int, const char*); +typedef PerlIO* (*LPReopen)(struct IPerlStdIO*, const char*, + const char*, PerlIO*); +typedef SSize_t (*LPRead)(struct IPerlStdIO*, PerlIO*, void*, Size_t); +typedef SSize_t (*LPWrite)(struct IPerlStdIO*, PerlIO*, const void*, + Size_t); +typedef void (*LPSetBuf)(struct IPerlStdIO*, PerlIO*, char*); +typedef int (*LPSetVBuf)(struct IPerlStdIO*, PerlIO*, char*, int, + Size_t); +typedef void (*LPSetCnt)(struct IPerlStdIO*, PerlIO*, int); +typedef void (*LPSetPtrCnt)(struct IPerlStdIO*, PerlIO*, char*, + int); +typedef void (*LPSetlinebuf)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPPrintf)(struct IPerlStdIO*, PerlIO*, const char*, + ...); +typedef int (*LPVprintf)(struct IPerlStdIO*, PerlIO*, const char*, + va_list); +typedef long (*LPTell)(struct IPerlStdIO*, PerlIO*); +typedef int (*LPSeek)(struct IPerlStdIO*, PerlIO*, Off_t, int); +typedef void (*LPRewind)(struct IPerlStdIO*, PerlIO*); +typedef PerlIO* (*LPTmpfile)(struct IPerlStdIO*); +typedef int (*LPGetpos)(struct IPerlStdIO*, PerlIO*, Fpos_t*); +typedef int (*LPSetpos)(struct IPerlStdIO*, PerlIO*, + const Fpos_t*); +typedef void (*LPInit)(struct IPerlStdIO*); +typedef void (*LPInitOSExtras)(struct IPerlStdIO*); +typedef PerlIO* (*LPFdupopen)(struct IPerlStdIO*, PerlIO*); + +struct IPerlStdIO { -public: - virtual PerlIO * Stdin(void) = 0; - virtual PerlIO * Stdout(void) = 0; - virtual PerlIO * Stderr(void) = 0; - virtual PerlIO * Open(const char *, const char *, int &err) = 0; - virtual int Close(PerlIO*, int &err) = 0; - virtual int Eof(PerlIO*, int &err) = 0; - virtual int Error(PerlIO*, int &err) = 0; - virtual void Clearerr(PerlIO*, int &err) = 0; - virtual int Getc(PerlIO*, int &err) = 0; - virtual char * GetBase(PerlIO *, int &err) = 0; - virtual int GetBufsiz(PerlIO *, int &err) = 0; - virtual int GetCnt(PerlIO *, int &err) = 0; - virtual char * GetPtr(PerlIO *, int &err) = 0; - virtual char * Gets(PerlIO*, char*, int, int& err) = 0; - virtual int Putc(PerlIO*, int, int &err) = 0; - virtual int Puts(PerlIO*, const char *, int &err) = 0; - virtual int Flush(PerlIO*, int &err) = 0; - virtual int Ungetc(PerlIO*,int, int &err) = 0; - virtual int Fileno(PerlIO*, int &err) = 0; - virtual PerlIO * Fdopen(int, const char *, int &err) = 0; - virtual PerlIO * Reopen(const char*, const char*, PerlIO*, int &err) = 0; - virtual SSize_t Read(PerlIO*,void *,Size_t, int &err) = 0; - virtual SSize_t Write(PerlIO*,const void *,Size_t, int &err) = 0; - virtual void SetBuf(PerlIO *, char*, int &err) = 0; - virtual int SetVBuf(PerlIO *, char*, int, Size_t, int &err) = 0; - virtual void SetCnt(PerlIO *, int, int &err) = 0; - virtual void SetPtrCnt(PerlIO *, char *, int, int& err) = 0; - virtual void Setlinebuf(PerlIO*, int &err) = 0; - virtual int Printf(PerlIO*, int &err, const char *,...) = 0; - virtual int Vprintf(PerlIO*, int &err, const char *, va_list) = 0; - virtual long Tell(PerlIO*, int &err) = 0; - virtual int Seek(PerlIO*, Off_t, int, int &err) = 0; - virtual void Rewind(PerlIO*, int &err) = 0; - virtual PerlIO * Tmpfile(int &err) = 0; - virtual int Getpos(PerlIO*, Fpos_t *, int &err) = 0; - virtual int Setpos(PerlIO*, const Fpos_t *, int &err) = 0; - virtual void Init(int &err) = 0; - virtual void InitOSExtras(void* p) = 0; -#ifdef WIN32 - virtual int OpenOSfhandle(long osfhandle, int flags) = 0; - virtual int GetOSfhandle(int filenum) = 0; -#endif + LPStdin pStdin; + LPStdout pStdout; + LPStderr pStderr; + LPOpen pOpen; + LPClose pClose; + LPEof pEof; + LPError pError; + LPClearerr pClearerr; + LPGetc pGetc; + LPGetBase pGetBase; + LPGetBufsiz pGetBufsiz; + LPGetCnt pGetCnt; + LPGetPtr pGetPtr; + LPGets pGets; + LPPutc pPutc; + LPPuts pPuts; + LPFlush pFlush; + LPUngetc pUngetc; + LPFileno pFileno; + LPFdopen pFdopen; + LPReopen pReopen; + LPRead pRead; + LPWrite pWrite; + LPSetBuf pSetBuf; + LPSetVBuf pSetVBuf; + LPSetCnt pSetCnt; + LPSetPtrCnt pSetPtrCnt; + LPSetlinebuf pSetlinebuf; + LPPrintf pPrintf; + LPVprintf pVprintf; + LPTell pTell; + LPSeek pSeek; + LPRewind pRewind; + LPTmpfile pTmpfile; + LPGetpos pGetpos; + LPSetpos pSetpos; + LPInit pInit; + LPInitOSExtras pInitOSExtras; + LPFdupopen pFdupopen; }; - +struct IPerlStdIOInfo +{ + unsigned long nCount; /* number of entries expected */ + struct IPerlStdIO perlStdIOList; +}; #ifdef USE_STDIO_PTR # define PerlIO_has_cntptr(f) 1 @@ -154,55 +209,93 @@ class IPerlStdIO #define PerlIO_has_base(f) 0 #endif -#define PerlIO_stdin() PL_piStdIO->Stdin() -#define PerlIO_stdout() PL_piStdIO->Stdout() -#define PerlIO_stderr() PL_piStdIO->Stderr() -#define PerlIO_open(x,y) PL_piStdIO->Open((x),(y), ErrorNo()) -#define PerlIO_close(f) PL_piStdIO->Close((f), ErrorNo()) -#define PerlIO_eof(f) PL_piStdIO->Eof((f), ErrorNo()) -#define PerlIO_error(f) PL_piStdIO->Error((f), ErrorNo()) -#define PerlIO_clearerr(f) PL_piStdIO->Clearerr((f), ErrorNo()) -#define PerlIO_getc(f) PL_piStdIO->Getc((f), ErrorNo()) -#define PerlIO_get_base(f) PL_piStdIO->GetBase((f), ErrorNo()) -#define PerlIO_get_bufsiz(f) PL_piStdIO->GetBufsiz((f), ErrorNo()) -#define PerlIO_get_cnt(f) PL_piStdIO->GetCnt((f), ErrorNo()) -#define PerlIO_get_ptr(f) PL_piStdIO->GetPtr((f), ErrorNo()) -#define PerlIO_putc(f,c) PL_piStdIO->Putc((f),(c), ErrorNo()) -#define PerlIO_puts(f,s) PL_piStdIO->Puts((f),(s), ErrorNo()) -#define PerlIO_flush(f) PL_piStdIO->Flush((f), ErrorNo()) -#define PerlIO_gets(s, n, fp) PL_piStdIO->Gets((fp), s, n, ErrorNo()) -#define PerlIO_ungetc(f,c) PL_piStdIO->Ungetc((f),(c), ErrorNo()) -#define PerlIO_fileno(f) PL_piStdIO->Fileno((f), ErrorNo()) -#define PerlIO_fdopen(f, s) PL_piStdIO->Fdopen((f),(s), ErrorNo()) -#define PerlIO_reopen(p, m, f) PL_piStdIO->Reopen((p), (m), (f), ErrorNo()) +#define PerlIO_stdin() \ + (*PL_StdIO->pStdin)(PL_StdIO) +#define PerlIO_stdout() \ + (*PL_StdIO->pStdout)(PL_StdIO) +#define PerlIO_stderr() \ + (*PL_StdIO->pStderr)(PL_StdIO) +#define PerlIO_open(x,y) \ + (*PL_StdIO->pOpen)(PL_StdIO, (x),(y)) +#define PerlIO_close(f) \ + (*PL_StdIO->pClose)(PL_StdIO, (f)) +#define PerlIO_eof(f) \ + (*PL_StdIO->pEof)(PL_StdIO, (f)) +#define PerlIO_error(f) \ + (*PL_StdIO->pError)(PL_StdIO, (f)) +#define PerlIO_clearerr(f) \ + (*PL_StdIO->pClearerr)(PL_StdIO, (f)) +#define PerlIO_getc(f) \ + (*PL_StdIO->pGetc)(PL_StdIO, (f)) +#define PerlIO_get_base(f) \ + (*PL_StdIO->pGetBase)(PL_StdIO, (f)) +#define PerlIO_get_bufsiz(f) \ + (*PL_StdIO->pGetBufsiz)(PL_StdIO, (f)) +#define PerlIO_get_cnt(f) \ + (*PL_StdIO->pGetCnt)(PL_StdIO, (f)) +#define PerlIO_get_ptr(f) \ + (*PL_StdIO->pGetPtr)(PL_StdIO, (f)) +#define PerlIO_putc(f,c) \ + (*PL_StdIO->pPutc)(PL_StdIO, (f),(c)) +#define PerlIO_puts(f,s) \ + (*PL_StdIO->pPuts)(PL_StdIO, (f),(s)) +#define PerlIO_flush(f) \ + (*PL_StdIO->pFlush)(PL_StdIO, (f)) +#define PerlIO_gets(s, n, fp) \ + (*PL_StdIO->pGets)(PL_StdIO, (fp), s, n) +#define PerlIO_ungetc(f,c) \ + (*PL_StdIO->pUngetc)(PL_StdIO, (f),(c)) +#define PerlIO_fileno(f) \ + (*PL_StdIO->pFileno)(PL_StdIO, (f)) +#define PerlIO_fdopen(f, s) \ + (*PL_StdIO->pFdopen)(PL_StdIO, (f),(s)) +#define PerlIO_reopen(p, m, f) \ + (*PL_StdIO->pReopen)(PL_StdIO, (p), (m), (f)) #define PerlIO_read(f,buf,count) \ - (SSize_t)PL_piStdIO->Read((f), (buf), (count), ErrorNo()) + (SSize_t)(*PL_StdIO->pRead)(PL_StdIO, (f), (buf), (count)) #define PerlIO_write(f,buf,count) \ - PL_piStdIO->Write((f), (buf), (count), ErrorNo()) -#define PerlIO_setbuf(f,b) PL_piStdIO->SetBuf((f), (b), ErrorNo()) -#define PerlIO_setvbuf(f,b,t,s) PL_piStdIO->SetVBuf((f), (b), (t), (s), ErrorNo()) -#define PerlIO_set_cnt(f,c) PL_piStdIO->SetCnt((f), (c), ErrorNo()) + (*PL_StdIO->pWrite)(PL_StdIO, (f), (buf), (count)) +#define PerlIO_setbuf(f,b) \ + (*PL_StdIO->pSetBuf)(PL_StdIO, (f), (b)) +#define PerlIO_setvbuf(f,b,t,s) \ + (*PL_StdIO->pSetVBuf)(PL_StdIO, (f),(b),(t),(s)) +#define PerlIO_set_cnt(f,c) \ + (*PL_StdIO->pSetCnt)(PL_StdIO, (f), (c)) #define PerlIO_set_ptrcnt(f,p,c) \ - PL_piStdIO->SetPtrCnt((f), (p), (c), ErrorNo()) -#define PerlIO_setlinebuf(f) PL_piStdIO->Setlinebuf((f), ErrorNo()) -#define PerlIO_printf fprintf -#define PerlIO_stdoutf PL_piStdIO->Printf -#define PerlIO_vprintf(f,fmt,a) PL_piStdIO->Vprintf((f), ErrorNo(), (fmt),a) -#define PerlIO_tell(f) PL_piStdIO->Tell((f), ErrorNo()) -#define PerlIO_seek(f,o,w) PL_piStdIO->Seek((f),(o),(w), ErrorNo()) -#define PerlIO_getpos(f,p) PL_piStdIO->Getpos((f),(p), ErrorNo()) -#define PerlIO_setpos(f,p) PL_piStdIO->Setpos((f),(p), ErrorNo()) -#define PerlIO_rewind(f) PL_piStdIO->Rewind((f), ErrorNo()) -#define PerlIO_tmpfile() PL_piStdIO->Tmpfile(ErrorNo()) -#define PerlIO_init() PL_piStdIO->Init(ErrorNo()) + (*PL_StdIO->pSetPtrCnt)(PL_StdIO, (f), (p), (c)) +#define PerlIO_setlinebuf(f) \ + (*PL_StdIO->pSetlinebuf)(PL_StdIO, (f)) +#define PerlIO_printf Perl_fprintf_nocontext +#define PerlIO_stdoutf *PL_StdIO->pPrintf +#define PerlIO_vprintf(f,fmt,a) \ + (*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a) +#define PerlIO_tell(f) \ + (*PL_StdIO->pTell)(PL_StdIO, (f)) +#define PerlIO_seek(f,o,w) \ + (*PL_StdIO->pSeek)(PL_StdIO, (f),(o),(w)) +#define PerlIO_getpos(f,p) \ + (*PL_StdIO->pGetpos)(PL_StdIO, (f),(p)) +#define PerlIO_setpos(f,p) \ + (*PL_StdIO->pSetpos)(PL_StdIO, (f),(p)) +#define PerlIO_rewind(f) \ + (*PL_StdIO->pRewind)(PL_StdIO, (f)) +#define PerlIO_tmpfile() \ + (*PL_StdIO->pTmpfile)(PL_StdIO) +#define PerlIO_init() \ + (*PL_StdIO->pInit)(PL_StdIO) #undef init_os_extras -#define init_os_extras() PL_piStdIO->InitOSExtras(this) +#define init_os_extras() \ + (*PL_StdIO->pInitOSExtras)(PL_StdIO) +#define PerlIO_fdupopen(f) \ + (*PL_StdIO->pFdupopen)(PL_StdIO, (f)) -#else /* PERL_OBJECT */ +#else /* PERL_IMPLICIT_SYS */ #include "perlsdio.h" +#include "perl.h" +#define PerlIO_fdupopen(f) (f) -#endif /* PERL_OBJECT */ +#endif /* PERL_IMPLICIT_SYS */ #ifndef PERLIO_IS_STDIO #ifdef USE_SFIO @@ -250,133 +343,136 @@ struct _PerlIO; #endif #ifndef PerlIO_stdoutf -extern int PerlIO_stdoutf _((const char *,...)) - __attribute__((format (printf, 1, 2))); +extern int PerlIO_stdoutf (const char *,...) + __attribute__((__format__ (__printf__, 1, 2))); #endif #ifndef PerlIO_puts -extern int PerlIO_puts _((PerlIO *,const char *)); +extern int PerlIO_puts (PerlIO *,const char *); #endif #ifndef PerlIO_open -extern PerlIO * PerlIO_open _((const char *,const char *)); +extern PerlIO * PerlIO_open (const char *,const char *); #endif #ifndef PerlIO_close -extern int PerlIO_close _((PerlIO *)); +extern int PerlIO_close (PerlIO *); #endif #ifndef PerlIO_eof -extern int PerlIO_eof _((PerlIO *)); +extern int PerlIO_eof (PerlIO *); #endif #ifndef PerlIO_error -extern int PerlIO_error _((PerlIO *)); +extern int PerlIO_error (PerlIO *); #endif #ifndef PerlIO_clearerr -extern void PerlIO_clearerr _((PerlIO *)); +extern void PerlIO_clearerr (PerlIO *); #endif #ifndef PerlIO_getc -extern int PerlIO_getc _((PerlIO *)); +extern int PerlIO_getc (PerlIO *); #endif #ifndef PerlIO_putc -extern int PerlIO_putc _((PerlIO *,int)); +extern int PerlIO_putc (PerlIO *,int); #endif #ifndef PerlIO_flush -extern int PerlIO_flush _((PerlIO *)); +extern int PerlIO_flush (PerlIO *); #endif #ifndef PerlIO_ungetc -extern int PerlIO_ungetc _((PerlIO *,int)); +extern int PerlIO_ungetc (PerlIO *,int); #endif #ifndef PerlIO_fileno -extern int PerlIO_fileno _((PerlIO *)); +extern int PerlIO_fileno (PerlIO *); #endif #ifndef PerlIO_fdopen -extern PerlIO * PerlIO_fdopen _((int, const char *)); +extern PerlIO * PerlIO_fdopen (int, const char *); #endif #ifndef PerlIO_importFILE -extern PerlIO * PerlIO_importFILE _((FILE *,int)); +extern PerlIO * PerlIO_importFILE (FILE *,int); #endif #ifndef PerlIO_exportFILE -extern FILE * PerlIO_exportFILE _((PerlIO *,int)); +extern FILE * PerlIO_exportFILE (PerlIO *,int); #endif #ifndef PerlIO_findFILE -extern FILE * PerlIO_findFILE _((PerlIO *)); +extern FILE * PerlIO_findFILE (PerlIO *); #endif #ifndef PerlIO_releaseFILE -extern void PerlIO_releaseFILE _((PerlIO *,FILE *)); +extern void PerlIO_releaseFILE (PerlIO *,FILE *); #endif #ifndef PerlIO_read -extern SSize_t PerlIO_read _((PerlIO *,void *,Size_t)); +extern SSize_t PerlIO_read (PerlIO *,void *,Size_t); #endif #ifndef PerlIO_write -extern SSize_t PerlIO_write _((PerlIO *,const void *,Size_t)); +extern SSize_t PerlIO_write (PerlIO *,const void *,Size_t); #endif #ifndef PerlIO_setlinebuf -extern void PerlIO_setlinebuf _((PerlIO *)); +extern void PerlIO_setlinebuf (PerlIO *); #endif #ifndef PerlIO_printf -extern int PerlIO_printf _((PerlIO *, const char *,...)) - __attribute__((format (printf, 2, 3))); +extern int PerlIO_printf (PerlIO *, const char *,...) + __attribute__((__format__ (__printf__, 2, 3))); #endif #ifndef PerlIO_sprintf -extern int PerlIO_sprintf _((char *, int, const char *,...)) - __attribute__((format (printf, 3, 4))); +extern int PerlIO_sprintf (char *, int, const char *,...) + __attribute__((__format__ (__printf__, 3, 4))); #endif #ifndef PerlIO_vprintf -extern int PerlIO_vprintf _((PerlIO *, const char *, va_list)); +extern int PerlIO_vprintf (PerlIO *, const char *, va_list); #endif #ifndef PerlIO_tell -extern Off_t PerlIO_tell _((PerlIO *)); +extern Off_t PerlIO_tell (PerlIO *); #endif #ifndef PerlIO_seek -extern int PerlIO_seek _((PerlIO *, Off_t, int)); +extern int PerlIO_seek (PerlIO *, Off_t, int); #endif #ifndef PerlIO_rewind -extern void PerlIO_rewind _((PerlIO *)); +extern void PerlIO_rewind (PerlIO *); #endif #ifndef PerlIO_has_base -extern int PerlIO_has_base _((PerlIO *)); +extern int PerlIO_has_base (PerlIO *); #endif #ifndef PerlIO_has_cntptr -extern int PerlIO_has_cntptr _((PerlIO *)); +extern int PerlIO_has_cntptr (PerlIO *); #endif #ifndef PerlIO_fast_gets -extern int PerlIO_fast_gets _((PerlIO *)); +extern int PerlIO_fast_gets (PerlIO *); #endif #ifndef PerlIO_canset_cnt -extern int PerlIO_canset_cnt _((PerlIO *)); +extern int PerlIO_canset_cnt (PerlIO *); #endif #ifndef PerlIO_get_ptr -extern STDCHAR * PerlIO_get_ptr _((PerlIO *)); +extern STDCHAR * PerlIO_get_ptr (PerlIO *); #endif #ifndef PerlIO_get_cnt -extern int PerlIO_get_cnt _((PerlIO *)); +extern int PerlIO_get_cnt (PerlIO *); #endif #ifndef PerlIO_set_cnt -extern void PerlIO_set_cnt _((PerlIO *,int)); +extern void PerlIO_set_cnt (PerlIO *,int); #endif #ifndef PerlIO_set_ptrcnt -extern void PerlIO_set_ptrcnt _((PerlIO *,STDCHAR *,int)); +extern void PerlIO_set_ptrcnt (PerlIO *,STDCHAR *,int); #endif #ifndef PerlIO_get_base -extern STDCHAR * PerlIO_get_base _((PerlIO *)); +extern STDCHAR * PerlIO_get_base (PerlIO *); #endif #ifndef PerlIO_get_bufsiz -extern int PerlIO_get_bufsiz _((PerlIO *)); +extern int PerlIO_get_bufsiz (PerlIO *); #endif #ifndef PerlIO_tmpfile -extern PerlIO * PerlIO_tmpfile _((void)); +extern PerlIO * PerlIO_tmpfile (void); #endif #ifndef PerlIO_stdin -extern PerlIO * PerlIO_stdin _((void)); +extern PerlIO * PerlIO_stdin (void); #endif #ifndef PerlIO_stdout -extern PerlIO * PerlIO_stdout _((void)); +extern PerlIO * PerlIO_stdout (void); #endif #ifndef PerlIO_stderr -extern PerlIO * PerlIO_stderr _((void)); +extern PerlIO * PerlIO_stderr (void); #endif #ifndef PerlIO_getpos -extern int PerlIO_getpos _((PerlIO *,Fpos_t *)); +extern int PerlIO_getpos (PerlIO *,Fpos_t *); #endif #ifndef PerlIO_setpos -extern int PerlIO_setpos _((PerlIO *,const Fpos_t *)); +extern int PerlIO_setpos (PerlIO *,const Fpos_t *); +#endif +#ifndef PerlIO_fdupopen +extern PerlIO * PerlIO_fdupopen (PerlIO *); #endif @@ -384,42 +480,74 @@ extern int PerlIO_setpos _((PerlIO *,const Fpos_t *)); * Interface for directory functions */ -#ifdef PERL_OBJECT +#if defined(PERL_IMPLICIT_SYS) -class IPerlDir +/* IPerlDir */ +struct IPerlDir; +struct IPerlDirInfo; +typedef int (*LPMakedir)(struct IPerlDir*, const char*, int); +typedef int (*LPChdir)(struct IPerlDir*, const char*); +typedef int (*LPRmdir)(struct IPerlDir*, const char*); +typedef int (*LPDirClose)(struct IPerlDir*, DIR*); +typedef DIR* (*LPDirOpen)(struct IPerlDir*, char*); +typedef struct direct* (*LPDirRead)(struct IPerlDir*, DIR*); +typedef void (*LPDirRewind)(struct IPerlDir*, DIR*); +typedef void (*LPDirSeek)(struct IPerlDir*, DIR*, long); +typedef long (*LPDirTell)(struct IPerlDir*, DIR*); +#ifdef WIN32 +typedef char* (*LPDirMapPathA)(struct IPerlDir*, const char*); +typedef WCHAR* (*LPDirMapPathW)(struct IPerlDir*, const WCHAR*); +#endif + +struct IPerlDir { -public: - virtual int Makedir(const char *dirname, int mode, int &err) = 0; - virtual int Chdir(const char *dirname, int &err) = 0; - virtual int Rmdir(const char *dirname, int &err) = 0; - virtual int Close(DIR *dirp, int &err) = 0; - virtual DIR * Open(char *filename, int &err) = 0; - virtual struct direct *Read(DIR *dirp, int &err) = 0; - virtual void Rewind(DIR *dirp, int &err) = 0; - virtual void Seek(DIR *dirp, long loc, int &err) = 0; - virtual long Tell(DIR *dirp, int &err) = 0; + LPMakedir pMakedir; + LPChdir pChdir; + LPRmdir pRmdir; + LPDirClose pClose; + LPDirOpen pOpen; + LPDirRead pRead; + LPDirRewind pRewind; + LPDirSeek pSeek; + LPDirTell pTell; +#ifdef WIN32 + LPDirMapPathA pMapPathA; + LPDirMapPathW pMapPathW; +#endif +}; + +struct IPerlDirInfo +{ + unsigned long nCount; /* number of entries expected */ + struct IPerlDir perlDirList; }; #define PerlDir_mkdir(name, mode) \ - PL_piDir->Makedir((name), (mode), ErrorNo()) + (*PL_Dir->pMakedir)(PL_Dir, (name), (mode)) #define PerlDir_chdir(name) \ - PL_piDir->Chdir((name), ErrorNo()) + (*PL_Dir->pChdir)(PL_Dir, (name)) #define PerlDir_rmdir(name) \ - PL_piDir->Rmdir((name), ErrorNo()) + (*PL_Dir->pRmdir)(PL_Dir, (name)) #define PerlDir_close(dir) \ - PL_piDir->Close((dir), ErrorNo()) + (*PL_Dir->pClose)(PL_Dir, (dir)) #define PerlDir_open(name) \ - PL_piDir->Open((name), ErrorNo()) + (*PL_Dir->pOpen)(PL_Dir, (name)) #define PerlDir_read(dir) \ - PL_piDir->Read((dir), ErrorNo()) + (*PL_Dir->pRead)(PL_Dir, (dir)) #define PerlDir_rewind(dir) \ - PL_piDir->Rewind((dir), ErrorNo()) + (*PL_Dir->pRewind)(PL_Dir, (dir)) #define PerlDir_seek(dir, loc) \ - PL_piDir->Seek((dir), (loc), ErrorNo()) + (*PL_Dir->pSeek)(PL_Dir, (dir), (loc)) #define PerlDir_tell(dir) \ - PL_piDir->Tell((dir), ErrorNo()) + (*PL_Dir->pTell)(PL_Dir, (dir)) +#ifdef WIN32 +#define PerlDir_mapA(dir) \ + (*PL_Dir->pMapPathA)(PL_Dir, (dir)) +#define PerlDir_mapW(dir) \ + (*PL_Dir->pMapPathW)(PL_Dir, (dir)) +#endif -#else /* PERL_OBJECT */ +#else /* PERL_IMPLICIT_SYS */ #define PerlDir_mkdir(name, mode) Mkdir((name), (mode)) #ifdef VMS @@ -434,132 +562,279 @@ class IPerlDir #define PerlDir_rewind(dir) rewinddir((dir)) #define PerlDir_seek(dir, loc) seekdir((dir), (loc)) #define PerlDir_tell(dir) telldir((dir)) +#ifdef WIN32 +#define PerlDir_mapA(dir) dir +#define PerlDir_mapW(dir) dir +#endif -#endif /* PERL_OBJECT */ +#endif /* PERL_IMPLICIT_SYS */ /* Interface for perl environment functions */ -#ifdef PERL_OBJECT +#if defined(PERL_IMPLICIT_SYS) -class IPerlEnv -{ -public: - virtual char * Getenv(const char *varname, int &err) = 0; - virtual int Putenv(const char *envstring, int &err) = 0; - virtual char * LibPath(char *patchlevel) =0; - virtual char * SiteLibPath(char *patchlevel) =0; -}; - -#define PerlEnv_putenv(str) PL_piENV->Putenv((str), ErrorNo()) -#define PerlEnv_getenv(str) PL_piENV->Getenv((str), ErrorNo()) +/* IPerlEnv */ +struct IPerlEnv; +struct IPerlEnvInfo; +typedef char* (*LPEnvGetenv)(struct IPerlEnv*, const char*); +typedef int (*LPEnvPutenv)(struct IPerlEnv*, const char*); +typedef char* (*LPEnvGetenv_len)(struct IPerlEnv*, + const char *varname, unsigned long *len); +typedef int (*LPEnvUname)(struct IPerlEnv*, struct utsname *name); +typedef void (*LPEnvClearenv)(struct IPerlEnv*); +typedef void* (*LPEnvGetChildenv)(struct IPerlEnv*); +typedef void (*LPEnvFreeChildenv)(struct IPerlEnv*, void* env); +typedef char* (*LPEnvGetChilddir)(struct IPerlEnv*); +typedef void (*LPEnvFreeChilddir)(struct IPerlEnv*, char* dir); +#ifdef HAS_ENVGETENV +typedef char* (*LPENVGetenv)(struct IPerlEnv*, const char *varname); +typedef char* (*LPENVGetenv_len)(struct IPerlEnv*, + const char *varname, unsigned long *len); +#endif #ifdef WIN32 -#define PerlEnv_lib_path(str) PL_piENV->LibPath((str)) -#define PerlEnv_sitelib_path(str) PL_piENV->SiteLibPath((str)) +typedef unsigned long (*LPEnvOsID)(struct IPerlEnv*); +typedef char* (*LPEnvLibPath)(struct IPerlEnv*, const char*); +typedef char* (*LPEnvSiteLibPath)(struct IPerlEnv*, const char*); +typedef char* (*LPEnvVendorLibPath)(struct IPerlEnv*, const char*); +typedef void (*LPEnvGetChildIO)(struct IPerlEnv*, child_IO_table*); #endif -#else /* PERL_OBJECT */ +struct IPerlEnv +{ + LPEnvGetenv pGetenv; + LPEnvPutenv pPutenv; + LPEnvGetenv_len pGetenv_len; + LPEnvUname pEnvUname; + LPEnvClearenv pClearenv; + LPEnvGetChildenv pGetChildenv; + LPEnvFreeChildenv pFreeChildenv; + LPEnvGetChilddir pGetChilddir; + LPEnvFreeChilddir pFreeChilddir; +#ifdef HAS_ENVGETENV + LPENVGetenv pENVGetenv; + LPENVGetenv_len pENVGetenv_len; +#endif +#ifdef WIN32 + LPEnvOsID pEnvOsID; + LPEnvLibPath pLibPath; + LPEnvSiteLibPath pSiteLibPath; + LPEnvVendorLibPath pVendorLibPath; + LPEnvGetChildIO pGetChildIO; +#endif +}; + +struct IPerlEnvInfo +{ + unsigned long nCount; /* number of entries expected */ + struct IPerlEnv perlEnvList; +}; + +#define PerlEnv_putenv(str) \ + (*PL_Env->pPutenv)(PL_Env,(str)) +#define PerlEnv_getenv(str) \ + (*PL_Env->pGetenv)(PL_Env,(str)) +#define PerlEnv_getenv_len(str,l) \ + (*PL_Env->pGetenv_len)(PL_Env,(str), (l)) +#define PerlEnv_clearenv() \ + (*PL_Env->pClearenv)(PL_Env) +#define PerlEnv_get_childenv() \ + (*PL_Env->pGetChildenv)(PL_Env) +#define PerlEnv_free_childenv(e) \ + (*PL_Env->pFreeChildenv)(PL_Env, (e)) +#define PerlEnv_get_childdir() \ + (*PL_Env->pGetChilddir)(PL_Env) +#define PerlEnv_free_childdir(d) \ + (*PL_Env->pFreeChilddir)(PL_Env, (d)) +#ifdef HAS_ENVGETENV +# define PerlEnv_ENVgetenv(str) \ + (*PL_Env->pENVGetenv)(PL_Env,(str)) +# define PerlEnv_ENVgetenv_len(str,l) \ + (*PL_Env->pENVGetenv_len)(PL_Env,(str), (l)) +#else +# define PerlEnv_ENVgetenv(str) \ + PerlEnv_getenv((str)) +# define PerlEnv_ENVgetenv_len(str,l) \ + PerlEnv_getenv_len((str),(l)) +#endif +#define PerlEnv_uname(name) \ + (*PL_Env->pEnvUname)(PL_Env,(name)) +#ifdef WIN32 +#define PerlEnv_os_id() \ + (*PL_Env->pEnvOsID)(PL_Env) +#define PerlEnv_lib_path(str) \ + (*PL_Env->pLibPath)(PL_Env,(str)) +#define PerlEnv_sitelib_path(str) \ + (*PL_Env->pSiteLibPath)(PL_Env,(str)) +#define PerlEnv_vendorlib_path(str) \ + (*PL_Env->pVendorLibPath)(PL_Env,(str)) +#define PerlEnv_get_child_IO(ptr) \ + (*PL_Env->pGetChildIO)(PL_Env, ptr) +#endif + +#else /* PERL_IMPLICIT_SYS */ #define PerlEnv_putenv(str) putenv((str)) #define PerlEnv_getenv(str) getenv((str)) +#define PerlEnv_getenv_len(str,l) getenv_len((str), (l)) +#define PerlEnv_clearenv() clearenv() +#define PerlEnv_get_childenv() get_childenv() +#define PerlEnv_free_childenv(e) free_childenv((e)) +#define PerlEnv_get_childdir() get_childdir() +#define PerlEnv_free_childdir(d) free_childdir((d)) +#ifdef HAS_ENVGETENV +# define PerlEnv_ENVgetenv(str) ENVgetenv((str)) +# define PerlEnv_ENVgetenv_len(str,l) ENVgetenv_len((str), (l)) +#else +# define PerlEnv_ENVgetenv(str) PerlEnv_getenv((str)) +# define PerlEnv_ENVgetenv_len(str,l) PerlEnv_getenv_len((str), (l)) +#endif +#define PerlEnv_uname(name) uname((name)) -#endif /* PERL_OBJECT */ +#ifdef WIN32 +#define PerlEnv_os_id() win32_os_id() +#define PerlEnv_lib_path(str) win32_get_privlib(str) +#define PerlEnv_sitelib_path(str) win32_get_sitelib(str) +#define PerlEnv_vendorlib_path(str) win32_get_vendorlib(str) +#define PerlEnv_get_child_IO(ptr) win32_get_child_IO(ptr) +#endif + +#endif /* PERL_IMPLICIT_SYS */ /* Interface for perl low-level IO functions */ -#ifdef PERL_OBJECT +#if defined(PERL_IMPLICIT_SYS) -class IPerlLIO +/* IPerlLIO */ +struct IPerlLIO; +struct IPerlLIOInfo; +typedef int (*LPLIOAccess)(struct IPerlLIO*, const char*, int); +typedef int (*LPLIOChmod)(struct IPerlLIO*, const char*, int); +typedef int (*LPLIOChown)(struct IPerlLIO*, const char*, uid_t, + gid_t); +typedef int (*LPLIOChsize)(struct IPerlLIO*, int, long); +typedef int (*LPLIOClose)(struct IPerlLIO*, int); +typedef int (*LPLIODup)(struct IPerlLIO*, int); +typedef int (*LPLIODup2)(struct IPerlLIO*, int, int); +typedef int (*LPLIOFlock)(struct IPerlLIO*, int, int); +typedef int (*LPLIOFileStat)(struct IPerlLIO*, int, struct stat*); +typedef int (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int, + char*); +typedef int (*LPLIOIsatty)(struct IPerlLIO*, int); +typedef int (*LPLIOLink)(struct IPerlLIO*, const char*, + const char *); +typedef long (*LPLIOLseek)(struct IPerlLIO*, int, long, int); +typedef int (*LPLIOLstat)(struct IPerlLIO*, const char*, + struct stat*); +typedef char* (*LPLIOMktemp)(struct IPerlLIO*, char*); +typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int); +typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int); +typedef int (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int); +typedef int (*LPLIORename)(struct IPerlLIO*, const char*, + const char*); +typedef int (*LPLIOSetmode)(struct IPerlLIO*, int, int); +typedef int (*LPLIONameStat)(struct IPerlLIO*, const char*, + struct stat*); +typedef char* (*LPLIOTmpnam)(struct IPerlLIO*, char*); +typedef int (*LPLIOUmask)(struct IPerlLIO*, int); +typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*); +typedef int (*LPLIOUtime)(struct IPerlLIO*, char*, struct utimbuf*); +typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*, + unsigned int); + +struct IPerlLIO { -public: - virtual int Access(const char *path, int mode, int &err) = 0; - virtual int Chmod(const char *filename, int pmode, int &err) = 0; - virtual int Chown(const char *filename, uid_t owner, - gid_t group, int &err) = 0; - virtual int Chsize(int handle, long size, int &err) = 0; - virtual int Close(int handle, int &err) = 0; - virtual int Dup(int handle, int &err) = 0; - virtual int Dup2(int handle1, int handle2, int &err) = 0; - virtual int Flock(int fd, int oper, int &err) = 0; - virtual int FileStat(int handle, struct stat *buffer, int &err) = 0; - virtual int IOCtl(int i, unsigned int u, char *data, int &err) = 0; - virtual int Isatty(int handle, int &err) = 0; - virtual long Lseek(int handle, long offset, int origin, int &err) = 0; - virtual int Lstat(const char *path, struct stat *buffer, int &err) = 0; - virtual char * Mktemp(char *Template, int &err) = 0; - virtual int Open(const char *filename, int oflag, int &err) = 0; - virtual int Open(const char *filename, int oflag, - int pmode, int &err) = 0; - virtual int Read(int handle, void *buffer, - unsigned int count, int &err) = 0; - virtual int Rename(const char *oname, - const char *newname, int &err) = 0; - virtual int Setmode(int handle, int mode, int &err) = 0; - virtual int NameStat(const char *path, - struct stat *buffer, int &err) = 0; - virtual char * Tmpnam(char *string, int &err) = 0; - virtual int Umask(int pmode, int &err) = 0; - virtual int Unlink(const char *filename, int &err) = 0; - virtual int Utime(char *filename, struct utimbuf *times, int &err) = 0; - virtual int Write(int handle, const void *buffer, - unsigned int count, int &err) = 0; + LPLIOAccess pAccess; + LPLIOChmod pChmod; + LPLIOChown pChown; + LPLIOChsize pChsize; + LPLIOClose pClose; + LPLIODup pDup; + LPLIODup2 pDup2; + LPLIOFlock pFlock; + LPLIOFileStat pFileStat; + LPLIOIOCtl pIOCtl; + LPLIOIsatty pIsatty; + LPLIOLink pLink; + LPLIOLseek pLseek; + LPLIOLstat pLstat; + LPLIOMktemp pMktemp; + LPLIOOpen pOpen; + LPLIOOpen3 pOpen3; + LPLIORead pRead; + LPLIORename pRename; + LPLIOSetmode pSetmode; + LPLIONameStat pNameStat; + LPLIOTmpnam pTmpnam; + LPLIOUmask pUmask; + LPLIOUnlink pUnlink; + LPLIOUtime pUtime; + LPLIOWrite pWrite; +}; + +struct IPerlLIOInfo +{ + unsigned long nCount; /* number of entries expected */ + struct IPerlLIO perlLIOList; }; #define PerlLIO_access(file, mode) \ - PL_piLIO->Access((file), (mode), ErrorNo()) + (*PL_LIO->pAccess)(PL_LIO, (file), (mode)) #define PerlLIO_chmod(file, mode) \ - PL_piLIO->Chmod((file), (mode), ErrorNo()) + (*PL_LIO->pChmod)(PL_LIO, (file), (mode)) #define PerlLIO_chown(file, owner, group) \ - PL_piLIO->Chown((file), (owner), (group), ErrorNo()) + (*PL_LIO->pChown)(PL_LIO, (file), (owner), (group)) #define PerlLIO_chsize(fd, size) \ - PL_piLIO->Chsize((fd), (size), ErrorNo()) + (*PL_LIO->pChsize)(PL_LIO, (fd), (size)) #define PerlLIO_close(fd) \ - PL_piLIO->Close((fd), ErrorNo()) + (*PL_LIO->pClose)(PL_LIO, (fd)) #define PerlLIO_dup(fd) \ - PL_piLIO->Dup((fd), ErrorNo()) + (*PL_LIO->pDup)(PL_LIO, (fd)) #define PerlLIO_dup2(fd1, fd2) \ - PL_piLIO->Dup2((fd1), (fd2), ErrorNo()) + (*PL_LIO->pDup2)(PL_LIO, (fd1), (fd2)) #define PerlLIO_flock(fd, op) \ - PL_piLIO->Flock((fd), (op), ErrorNo()) + (*PL_LIO->pFlock)(PL_LIO, (fd), (op)) #define PerlLIO_fstat(fd, buf) \ - PL_piLIO->FileStat((fd), (buf), ErrorNo()) + (*PL_LIO->pFileStat)(PL_LIO, (fd), (buf)) #define PerlLIO_ioctl(fd, u, buf) \ - PL_piLIO->IOCtl((fd), (u), (buf), ErrorNo()) + (*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf)) #define PerlLIO_isatty(fd) \ - PL_piLIO->Isatty((fd), ErrorNo()) + (*PL_LIO->pIsatty)(PL_LIO, (fd)) +#define PerlLIO_link(oldname, newname) \ + (*PL_LIO->pLink)(PL_LIO, (oldname), (newname)) #define PerlLIO_lseek(fd, offset, mode) \ - PL_piLIO->Lseek((fd), (offset), (mode), ErrorNo()) + (*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode)) #define PerlLIO_lstat(name, buf) \ - PL_piLIO->Lstat((name), (buf), ErrorNo()) + (*PL_LIO->pLstat)(PL_LIO, (name), (buf)) #define PerlLIO_mktemp(file) \ - PL_piLIO->Mktemp((file), ErrorNo()) + (*PL_LIO->pMktemp)(PL_LIO, (file)) #define PerlLIO_open(file, flag) \ - PL_piLIO->Open((file), (flag), ErrorNo()) + (*PL_LIO->pOpen)(PL_LIO, (file), (flag)) #define PerlLIO_open3(file, flag, perm) \ - PL_piLIO->Open((file), (flag), (perm), ErrorNo()) + (*PL_LIO->pOpen3)(PL_LIO, (file), (flag), (perm)) #define PerlLIO_read(fd, buf, count) \ - PL_piLIO->Read((fd), (buf), (count), ErrorNo()) + (*PL_LIO->pRead)(PL_LIO, (fd), (buf), (count)) #define PerlLIO_rename(oname, newname) \ - PL_piLIO->Rename((oname), (newname), ErrorNo()) + (*PL_LIO->pRename)(PL_LIO, (oname), (newname)) #define PerlLIO_setmode(fd, mode) \ - PL_piLIO->Setmode((fd), (mode), ErrorNo()) + (*PL_LIO->pSetmode)(PL_LIO, (fd), (mode)) #define PerlLIO_stat(name, buf) \ - PL_piLIO->NameStat((name), (buf), ErrorNo()) + (*PL_LIO->pNameStat)(PL_LIO, (name), (buf)) #define PerlLIO_tmpnam(str) \ - PL_piLIO->Tmpnam((str), ErrorNo()) + (*PL_LIO->pTmpnam)(PL_LIO, (str)) #define PerlLIO_umask(mode) \ - PL_piLIO->Umask((mode), ErrorNo()) + (*PL_LIO->pUmask)(PL_LIO, (mode)) #define PerlLIO_unlink(file) \ - PL_piLIO->Unlink((file), ErrorNo()) + (*PL_LIO->pUnlink)(PL_LIO, (file)) #define PerlLIO_utime(file, time) \ - PL_piLIO->Utime((file), (time), ErrorNo()) + (*PL_LIO->pUtime)(PL_LIO, (file), (time)) #define PerlLIO_write(fd, buf, count) \ - PL_piLIO->Write((fd), (buf), (count), ErrorNo()) + (*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count)) -#else /* PERL_OBJECT */ +#else /* PERL_IMPLICIT_SYS */ #define PerlLIO_access(file, mode) access((file), (mode)) #define PerlLIO_chmod(file, mode) chmod((file), (mode)) @@ -572,8 +847,14 @@ class IPerlLIO #define PerlLIO_fstat(fd, buf) Fstat((fd), (buf)) #define PerlLIO_ioctl(fd, u, buf) ioctl((fd), (u), (buf)) #define PerlLIO_isatty(fd) isatty((fd)) +#define PerlLIO_link(oldname, newname) link((oldname), (newname)) #define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode)) -#define PerlLIO_lstat(name, buf) lstat((name), (buf)) +#define PerlLIO_stat(name, buf) Stat((name), (buf)) +#ifdef HAS_LSTAT +# define PerlLIO_lstat(name, buf) lstat((name), (buf)) +#else +# define PerlLIO_lstat(name, buf) PerlLIO_stat((name), (buf)) +#endif #define PerlLIO_mktemp(file) mktemp((file)) #define PerlLIO_mkstemp(file) mkstemp((file)) #define PerlLIO_open(file, flag) open((file), (flag)) @@ -581,138 +862,306 @@ class IPerlLIO #define PerlLIO_read(fd, buf, count) read((fd), (buf), (count)) #define PerlLIO_rename(old, new) rename((old), (new)) #define PerlLIO_setmode(fd, mode) setmode((fd), (mode)) -#define PerlLIO_stat(name, buf) Stat((name), (buf)) #define PerlLIO_tmpnam(str) tmpnam((str)) #define PerlLIO_umask(mode) umask((mode)) #define PerlLIO_unlink(file) unlink((file)) #define PerlLIO_utime(file, time) utime((file), (time)) #define PerlLIO_write(fd, buf, count) write((fd), (buf), (count)) -#endif /* PERL_OBJECT */ +#endif /* PERL_IMPLICIT_SYS */ /* Interface for perl memory allocation */ -#ifdef PERL_OBJECT +#if defined(PERL_IMPLICIT_SYS) -class IPerlMem +/* IPerlMem */ +struct IPerlMem; +struct IPerlMemInfo; +typedef void* (*LPMemMalloc)(struct IPerlMem*, size_t); +typedef void* (*LPMemRealloc)(struct IPerlMem*, void*, size_t); +typedef void (*LPMemFree)(struct IPerlMem*, void*); +typedef void* (*LPMemCalloc)(struct IPerlMem*, size_t, size_t); +typedef void (*LPMemGetLock)(struct IPerlMem*); +typedef void (*LPMemFreeLock)(struct IPerlMem*); +typedef int (*LPMemIsLocked)(struct IPerlMem*); + +struct IPerlMem { -public: - virtual void * Malloc(size_t) = 0; - virtual void * Realloc(void*, size_t) = 0; - virtual void Free(void*) = 0; + LPMemMalloc pMalloc; + LPMemRealloc pRealloc; + LPMemFree pFree; + LPMemCalloc pCalloc; + LPMemGetLock pGetLock; + LPMemFreeLock pFreeLock; + LPMemIsLocked pIsLocked; }; -#define PerlMem_malloc(size) PL_piMem->Malloc((size)) -#define PerlMem_realloc(buf, size) PL_piMem->Realloc((buf), (size)) -#define PerlMem_free(buf) PL_piMem->Free((buf)) +struct IPerlMemInfo +{ + unsigned long nCount; /* number of entries expected */ + struct IPerlMem perlMemList; +}; -#else /* PERL_OBJECT */ +/* Interpreter specific memory macros */ +#define PerlMem_malloc(size) \ + (*PL_Mem->pMalloc)(PL_Mem, (size)) +#define PerlMem_realloc(buf, size) \ + (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) +#define PerlMem_free(buf) \ + (*PL_Mem->pFree)(PL_Mem, (buf)) +#define PerlMem_calloc(num, size) \ + (*PL_Mem->pCalloc)(PL_Mem, (num), (size)) +#define PerlMem_get_lock() \ + (*PL_Mem->pGetLock)(PL_Mem) +#define PerlMem_free_lock() \ + (*PL_Mem->pFreeLock)(PL_Mem) +#define PerlMem_is_locked() \ + (*PL_Mem->pIsLocked)(PL_Mem) +/* Shared memory macros */ +#define PerlMemShared_malloc(size) \ + (*PL_MemShared->pMalloc)(PL_Mem, (size)) +#define PerlMemShared_realloc(buf, size) \ + (*PL_MemShared->pRealloc)(PL_Mem, (buf), (size)) +#define PerlMemShared_free(buf) \ + (*PL_MemShared->pFree)(PL_Mem, (buf)) +#define PerlMemShared_calloc(num, size) \ + (*PL_MemShared->pCalloc)(PL_Mem, (num), (size)) +#define PerlMemShared_get_lock() \ + (*PL_MemShared->pGetLock)(PL_Mem) +#define PerlMemShared_free_lock() \ + (*PL_MemShared->pFreeLock)(PL_Mem) +#define PerlMemShared_is_locked() \ + (*PL_MemShared->pIsLocked)(PL_Mem) + + +/* Parse tree memory macros */ +#define PerlMemParse_malloc(size) \ + (*PL_MemParse->pMalloc)(PL_Mem, (size)) +#define PerlMemParse_realloc(buf, size) \ + (*PL_MemParse->pRealloc)(PL_Mem, (buf), (size)) +#define PerlMemParse_free(buf) \ + (*PL_MemParse->pFree)(PL_Mem, (buf)) +#define PerlMemParse_calloc(num, size) \ + (*PL_MemParse->pCalloc)(PL_Mem, (num), (size)) +#define PerlMemParse_get_lock() \ + (*PL_MemParse->pGetLock)(PL_Mem) +#define PerlMemParse_free_lock() \ + (*PL_MemParse->pFreeLock)(PL_Mem) +#define PerlMemParse_is_locked() \ + (*PL_MemParse->pIsLocked)(PL_Mem) + + +#else /* PERL_IMPLICIT_SYS */ + +/* Interpreter specific memory macros */ #define PerlMem_malloc(size) malloc((size)) #define PerlMem_realloc(buf, size) realloc((buf), (size)) #define PerlMem_free(buf) free((buf)) +#define PerlMem_calloc(num, size) calloc((num), (size)) +#define PerlMem_get_lock() +#define PerlMem_free_lock() +#define PerlMem_is_locked() 0 -#endif /* PERL_OBJECT */ +/* Shared memory macros */ +#define PerlMemShared_malloc(size) malloc((size)) +#define PerlMemShared_realloc(buf, size) realloc((buf), (size)) +#define PerlMemShared_free(buf) free((buf)) +#define PerlMemShared_calloc(num, size) calloc((num), (size)) +#define PerlMemShared_get_lock() +#define PerlMemShared_free_lock() +#define PerlMemShared_is_locked() 0 + +/* Parse tree memory macros */ +#define PerlMemParse_malloc(size) malloc((size)) +#define PerlMemParse_realloc(buf, size) realloc((buf), (size)) +#define PerlMemParse_free(buf) free((buf)) +#define PerlMemParse_calloc(num, size) calloc((num), (size)) +#define PerlMemParse_get_lock() +#define PerlMemParse_free_lock() +#define PerlMemParse_is_locked() 0 + +#endif /* PERL_IMPLICIT_SYS */ /* Interface for perl process functions */ -#ifdef PERL_OBJECT +#if defined(PERL_IMPLICIT_SYS) -#ifndef Sighandler_t -typedef Signal_t (*Sighandler_t) _((int)); -#endif #ifndef jmp_buf #include #endif -class IPerlProc -{ -public: - virtual void Abort(void) = 0; - virtual char * Crypt(const char* clear, const char* salt) = 0; - virtual void Exit(int status) = 0; - virtual void _Exit(int status) = 0; - virtual int Execl(const char *cmdname, const char *arg0, - const char *arg1, const char *arg2, - const char *arg3) = 0; - virtual int Execv(const char *cmdname, const char *const *argv) = 0; - virtual int Execvp(const char *cmdname, const char *const *argv) = 0; - virtual uid_t Getuid(void) = 0; - virtual uid_t Geteuid(void) = 0; - virtual gid_t Getgid(void) = 0; - virtual gid_t Getegid(void) = 0; - virtual char * Getlogin(void) = 0; - virtual int Kill(int pid, int sig) = 0; - virtual int Killpg(int pid, int sig) = 0; - virtual int PauseProc(void) = 0; - virtual PerlIO * Popen(const char *command, const char *mode) = 0; - virtual int Pclose(PerlIO *stream) = 0; - virtual int Pipe(int *phandles) = 0; - virtual int Setuid(uid_t uid) = 0; - virtual int Setgid(gid_t gid) = 0; - virtual int Sleep(unsigned int) = 0; - virtual int Times(struct tms *timebuf) = 0; - virtual int Wait(int *status) = 0; - virtual int Waitpid(int pid, int *status, int flags) = 0; - virtual Sighandler_t Signal(int sig, Sighandler_t subcode) = 0; +/* IPerlProc */ +struct IPerlProc; +struct IPerlProcInfo; +typedef void (*LPProcAbort)(struct IPerlProc*); +typedef char* (*LPProcCrypt)(struct IPerlProc*, const char*, + const char*); +typedef void (*LPProcExit)(struct IPerlProc*, int); +typedef void (*LPProc_Exit)(struct IPerlProc*, int); +typedef int (*LPProcExecl)(struct IPerlProc*, const char*, + const char*, const char*, const char*, + const char*); +typedef int (*LPProcExecv)(struct IPerlProc*, const char*, + const char*const*); +typedef int (*LPProcExecvp)(struct IPerlProc*, const char*, + const char*const*); +typedef uid_t (*LPProcGetuid)(struct IPerlProc*); +typedef uid_t (*LPProcGeteuid)(struct IPerlProc*); +typedef gid_t (*LPProcGetgid)(struct IPerlProc*); +typedef gid_t (*LPProcGetegid)(struct IPerlProc*); +typedef char* (*LPProcGetlogin)(struct IPerlProc*); +typedef int (*LPProcKill)(struct IPerlProc*, int, int); +typedef int (*LPProcKillpg)(struct IPerlProc*, int, int); +typedef int (*LPProcPauseProc)(struct IPerlProc*); +typedef PerlIO* (*LPProcPopen)(struct IPerlProc*, const char*, + const char*); +typedef int (*LPProcPclose)(struct IPerlProc*, PerlIO*); +typedef int (*LPProcPipe)(struct IPerlProc*, int*); +typedef int (*LPProcSetuid)(struct IPerlProc*, uid_t); +typedef int (*LPProcSetgid)(struct IPerlProc*, gid_t); +typedef int (*LPProcSleep)(struct IPerlProc*, unsigned int); +typedef int (*LPProcTimes)(struct IPerlProc*, struct tms*); +typedef int (*LPProcWait)(struct IPerlProc*, int*); +typedef int (*LPProcWaitpid)(struct IPerlProc*, int, int*, int); +typedef Sighandler_t (*LPProcSignal)(struct IPerlProc*, int, Sighandler_t); +typedef int (*LPProcFork)(struct IPerlProc*); +typedef int (*LPProcGetpid)(struct IPerlProc*); #ifdef WIN32 - virtual void GetSysMsg(char*& msg, DWORD& dwLen, DWORD dwErr) = 0; - virtual void FreeBuf(char* msg) = 0; - virtual BOOL DoCmd(char *cmd) = 0; - virtual int Spawn(char*cmds) = 0; - virtual int Spawnvp(int mode, const char *cmdname, - const char *const *argv) = 0; - virtual int ASpawn(void *vreally, void **vmark, void **vsp) = 0; +typedef void* (*LPProcDynaLoader)(struct IPerlProc*, const char*); +typedef void (*LPProcGetOSError)(struct IPerlProc*, + SV* sv, DWORD dwErr); +typedef void (*LPProcFreeBuf)(struct IPerlProc*, char*); +typedef BOOL (*LPProcDoCmd)(struct IPerlProc*, char*); +typedef int (*LPProcSpawn)(struct IPerlProc*, char*); +typedef int (*LPProcSpawnvp)(struct IPerlProc*, int, const char*, + const char*const*); +typedef int (*LPProcASpawn)(struct IPerlProc*, void*, void**, void**); +#endif + +struct IPerlProc +{ + LPProcAbort pAbort; + LPProcCrypt pCrypt; + LPProcExit pExit; + LPProc_Exit p_Exit; + LPProcExecl pExecl; + LPProcExecv pExecv; + LPProcExecvp pExecvp; + LPProcGetuid pGetuid; + LPProcGeteuid pGeteuid; + LPProcGetgid pGetgid; + LPProcGetegid pGetegid; + LPProcGetlogin pGetlogin; + LPProcKill pKill; + LPProcKillpg pKillpg; + LPProcPauseProc pPauseProc; + LPProcPopen pPopen; + LPProcPclose pPclose; + LPProcPipe pPipe; + LPProcSetuid pSetuid; + LPProcSetgid pSetgid; + LPProcSleep pSleep; + LPProcTimes pTimes; + LPProcWait pWait; + LPProcWaitpid pWaitpid; + LPProcSignal pSignal; + LPProcFork pFork; + LPProcGetpid pGetpid; +#ifdef WIN32 + LPProcDynaLoader pDynaLoader; + LPProcGetOSError pGetOSError; + LPProcDoCmd pDoCmd; + LPProcSpawn pSpawn; + LPProcSpawnvp pSpawnvp; + LPProcASpawn pASpawn; #endif }; -#define PerlProc_abort() PL_piProc->Abort() -#define PerlProc_crypt(c,s) PL_piProc->Crypt((c), (s)) -#define PerlProc_exit(s) PL_piProc->Exit((s)) -#define PerlProc__exit(s) PL_piProc->_Exit((s)) -#define PerlProc_execl(c, w, x, y, z) \ - PL_piProc->Execl((c), (w), (x), (y), (z)) +struct IPerlProcInfo +{ + unsigned long nCount; /* number of entries expected */ + struct IPerlProc perlProcList; +}; -#define PerlProc_execv(c, a) PL_piProc->Execv((c), (a)) -#define PerlProc_execvp(c, a) PL_piProc->Execvp((c), (a)) -#define PerlProc_getuid() PL_piProc->Getuid() -#define PerlProc_geteuid() PL_piProc->Geteuid() -#define PerlProc_getgid() PL_piProc->Getgid() -#define PerlProc_getegid() PL_piProc->Getegid() -#define PerlProc_getlogin() PL_piProc->Getlogin() -#define PerlProc_kill(i, a) PL_piProc->Kill((i), (a)) -#define PerlProc_killpg(i, a) PL_piProc->Killpg((i), (a)) -#define PerlProc_pause() PL_piProc->PauseProc() -#define PerlProc_popen(c, m) PL_piProc->Popen((c), (m)) -#define PerlProc_pclose(f) PL_piProc->Pclose((f)) -#define PerlProc_pipe(fd) PL_piProc->Pipe((fd)) -#define PerlProc_setuid(u) PL_piProc->Setuid((u)) -#define PerlProc_setgid(g) PL_piProc->Setgid((g)) -#define PerlProc_sleep(t) PL_piProc->Sleep((t)) -#define PerlProc_times(t) PL_piProc->Times((t)) -#define PerlProc_wait(t) PL_piProc->Wait((t)) -#define PerlProc_waitpid(p,s,f) PL_piProc->Waitpid((p), (s), (f)) -#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) -#define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) -#define PerlProc_signal(n, h) PL_piProc->Signal((n), (h)) +#define PerlProc_abort() \ + (*PL_Proc->pAbort)(PL_Proc) +#define PerlProc_crypt(c,s) \ + (*PL_Proc->pCrypt)(PL_Proc, (c), (s)) +#define PerlProc_exit(s) \ + (*PL_Proc->pExit)(PL_Proc, (s)) +#define PerlProc__exit(s) \ + (*PL_Proc->p_Exit)(PL_Proc, (s)) +#define PerlProc_execl(c, w, x, y, z) \ + (*PL_Proc->pExecl)(PL_Proc, (c), (w), (x), (y), (z)) +#define PerlProc_execv(c, a) \ + (*PL_Proc->pExecv)(PL_Proc, (c), (a)) +#define PerlProc_execvp(c, a) \ + (*PL_Proc->pExecvp)(PL_Proc, (c), (a)) +#define PerlProc_getuid() \ + (*PL_Proc->pGetuid)(PL_Proc) +#define PerlProc_geteuid() \ + (*PL_Proc->pGeteuid)(PL_Proc) +#define PerlProc_getgid() \ + (*PL_Proc->pGetgid)(PL_Proc) +#define PerlProc_getegid() \ + (*PL_Proc->pGetegid)(PL_Proc) +#define PerlProc_getlogin() \ + (*PL_Proc->pGetlogin)(PL_Proc) +#define PerlProc_kill(i, a) \ + (*PL_Proc->pKill)(PL_Proc, (i), (a)) +#define PerlProc_killpg(i, a) \ + (*PL_Proc->pKillpg)(PL_Proc, (i), (a)) +#define PerlProc_pause() \ + (*PL_Proc->pPauseProc)(PL_Proc) +#define PerlProc_popen(c, m) \ + (*PL_Proc->pPopen)(PL_Proc, (c), (m)) +#define PerlProc_pclose(f) \ + (*PL_Proc->pPclose)(PL_Proc, (f)) +#define PerlProc_pipe(fd) \ + (*PL_Proc->pPipe)(PL_Proc, (fd)) +#define PerlProc_setuid(u) \ + (*PL_Proc->pSetuid)(PL_Proc, (u)) +#define PerlProc_setgid(g) \ + (*PL_Proc->pSetgid)(PL_Proc, (g)) +#define PerlProc_sleep(t) \ + (*PL_Proc->pSleep)(PL_Proc, (t)) +#define PerlProc_times(t) \ + (*PL_Proc->pTimes)(PL_Proc, (t)) +#define PerlProc_wait(t) \ + (*PL_Proc->pWait)(PL_Proc, (t)) +#define PerlProc_waitpid(p,s,f) \ + (*PL_Proc->pWaitpid)(PL_Proc, (p), (s), (f)) +#define PerlProc_signal(n, h) \ + (*PL_Proc->pSignal)(PL_Proc, (n), (h)) +#define PerlProc_fork() \ + (*PL_Proc->pFork)(PL_Proc) +#define PerlProc_getpid() \ + (*PL_Proc->pGetpid)(PL_Proc) +#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) +#define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) #ifdef WIN32 -#define PerlProc_GetSysMsg(s,l,e) \ - PL_piProc->GetSysMsg((s), (l), (e)) - -#define PerlProc_FreeBuf(s) PL_piProc->FreeBuf((s)) -#define PerlProc_Cmd(s) PL_piProc->DoCmd((s)) -#define do_spawn(s) PL_piProc->Spawn((s)) -#define do_spawnvp(m, c, a) PL_piProc->Spawnvp((m), (c), (a)) -#define PerlProc_aspawn(m,c,a) PL_piProc->ASpawn((m), (c), (a)) +#define PerlProc_DynaLoad(f) \ + (*PL_Proc->pDynaLoader)(PL_Proc, (f)) +#define PerlProc_GetOSError(s,e) \ + (*PL_Proc->pGetOSError)(PL_Proc, (s), (e)) +#define PerlProc_Cmd(s) \ + (*PL_Proc->pDoCmd)(PL_Proc, (s)) +#define do_spawn(s) \ + (*PL_Proc->pSpawn)(PL_Proc, (s)) +#define do_spawnvp(m, c, a) \ + (*PL_Proc->pSpawnvp)(PL_Proc, (m), (c), (a)) +#define PerlProc_aspawn(m,c,a) \ + (*PL_Proc->pASpawn)(PL_Proc, (m), (c), (a)) #endif -#else /* PERL_OBJECT */ +#else /* PERL_IMPLICIT_SYS */ #define PerlProc_abort() abort() #define PerlProc_crypt(c,s) crypt((c), (s)) @@ -742,135 +1191,237 @@ class IPerlProc #define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) #define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) #define PerlProc_signal(n, h) signal((n), (h)) +#define PerlProc_fork() fork() +#define PerlProc_getpid() getpid() - -#endif /* PERL_OBJECT */ +#ifdef WIN32 +#define PerlProc_DynaLoad(f) \ + win32_dynaload((f)) +#define PerlProc_GetOSError(s,e) \ + win32_str_os_error((s), (e)) +#endif +#endif /* PERL_IMPLICIT_SYS */ /* Interface for perl socket functions */ -#ifdef PERL_OBJECT +#if defined(PERL_IMPLICIT_SYS) -class IPerlSock -{ -public: - virtual u_long Htonl(u_long hostlong) = 0; - virtual u_short Htons(u_short hostshort) = 0; - virtual u_long Ntohl(u_long netlong) = 0; - virtual u_short Ntohs(u_short netshort) = 0; - virtual SOCKET Accept(SOCKET s, struct sockaddr* addr, - int* addrlen, int &err) = 0; - virtual int Bind(SOCKET s, const struct sockaddr* name, - int namelen, int &err) = 0; - virtual int Connect(SOCKET s, const struct sockaddr* name, - int namelen, int &err) = 0; - virtual void Endhostent(int &err) = 0; - virtual void Endnetent(int &err) = 0; - virtual void Endprotoent(int &err) = 0; - virtual void Endservent(int &err) = 0; - virtual int Gethostname(char* name, int namelen, int &err) = 0; - virtual int Getpeername(SOCKET s, struct sockaddr* name, - int* namelen, int &err) = 0; - virtual struct hostent * Gethostbyaddr(const char* addr, int len, - int type, int &err) = 0; - virtual struct hostent * Gethostbyname(const char* name, int &err) = 0; - virtual struct hostent * Gethostent(int &err) = 0; - virtual struct netent * Getnetbyaddr(long net, int type, int &err) = 0; - virtual struct netent * Getnetbyname(const char *, int &err) = 0; - virtual struct netent * Getnetent(int &err) = 0; - virtual struct protoent * Getprotobyname(const char* name, int &err) = 0; - virtual struct protoent * Getprotobynumber(int number, int &err) = 0; - virtual struct protoent * Getprotoent(int &err) = 0; - virtual struct servent * Getservbyname(const char* name, - const char* proto, int &err) = 0; - virtual struct servent * Getservbyport(int port, const char* proto, - int &err) = 0; - virtual struct servent * Getservent(int &err) = 0; - virtual int Getsockname(SOCKET s, struct sockaddr* name, - int* namelen, int &err) = 0; - virtual int Getsockopt(SOCKET s, int level, int optname, - char* optval, int* optlen, int &err) = 0; - virtual unsigned long InetAddr(const char* cp, int &err) = 0; - virtual char * InetNtoa(struct in_addr in, int &err) = 0; - virtual int Listen(SOCKET s, int backlog, int &err) = 0; - virtual int Recv(SOCKET s, char* buf, int len, - int flags, int &err) = 0; - virtual int Recvfrom(SOCKET s, char* buf, int len, int flags, - struct sockaddr* from, int* fromlen, int &err) = 0; - virtual int Select(int nfds, char* readfds, char* writefds, - char* exceptfds, const struct timeval* timeout, - int &err) = 0; - virtual int Send(SOCKET s, const char* buf, int len, - int flags, int &err) = 0; - virtual int Sendto(SOCKET s, const char* buf, int len, int flags, - const struct sockaddr* to, int tolen, int &err) = 0; - virtual void Sethostent(int stayopen, int &err) = 0; - virtual void Setnetent(int stayopen, int &err) = 0; - virtual void Setprotoent(int stayopen, int &err) = 0; - virtual void Setservent(int stayopen, int &err) = 0; - virtual int Setsockopt(SOCKET s, int level, int optname, - const char* optval, int optlen, int &err) = 0; - virtual int Shutdown(SOCKET s, int how, int &err) = 0; - virtual SOCKET Socket(int af, int type, int protocol, int &err) = 0; - virtual int Socketpair(int domain, int type, int protocol, - int* fds, int &err) = 0; +/* PerlSock */ +struct IPerlSock; +struct IPerlSockInfo; +typedef u_long (*LPHtonl)(struct IPerlSock*, u_long); +typedef u_short (*LPHtons)(struct IPerlSock*, u_short); +typedef u_long (*LPNtohl)(struct IPerlSock*, u_long); +typedef u_short (*LPNtohs)(struct IPerlSock*, u_short); +typedef SOCKET (*LPAccept)(struct IPerlSock*, SOCKET, + struct sockaddr*, int*); +typedef int (*LPBind)(struct IPerlSock*, SOCKET, + const struct sockaddr*, int); +typedef int (*LPConnect)(struct IPerlSock*, SOCKET, + const struct sockaddr*, int); +typedef void (*LPEndhostent)(struct IPerlSock*); +typedef void (*LPEndnetent)(struct IPerlSock*); +typedef void (*LPEndprotoent)(struct IPerlSock*); +typedef void (*LPEndservent)(struct IPerlSock*); +typedef int (*LPGethostname)(struct IPerlSock*, char*, int); +typedef int (*LPGetpeername)(struct IPerlSock*, SOCKET, + struct sockaddr*, int*); +typedef struct hostent* (*LPGethostbyaddr)(struct IPerlSock*, const char*, + int, int); +typedef struct hostent* (*LPGethostbyname)(struct IPerlSock*, const char*); +typedef struct hostent* (*LPGethostent)(struct IPerlSock*); +typedef struct netent* (*LPGetnetbyaddr)(struct IPerlSock*, long, int); +typedef struct netent* (*LPGetnetbyname)(struct IPerlSock*, const char*); +typedef struct netent* (*LPGetnetent)(struct IPerlSock*); +typedef struct protoent*(*LPGetprotobyname)(struct IPerlSock*, const char*); +typedef struct protoent*(*LPGetprotobynumber)(struct IPerlSock*, int); +typedef struct protoent*(*LPGetprotoent)(struct IPerlSock*); +typedef struct servent* (*LPGetservbyname)(struct IPerlSock*, const char*, + const char*); +typedef struct servent* (*LPGetservbyport)(struct IPerlSock*, int, + const char*); +typedef struct servent* (*LPGetservent)(struct IPerlSock*); +typedef int (*LPGetsockname)(struct IPerlSock*, SOCKET, + struct sockaddr*, int*); +typedef int (*LPGetsockopt)(struct IPerlSock*, SOCKET, int, int, + char*, int*); +typedef unsigned long (*LPInetAddr)(struct IPerlSock*, const char*); +typedef char* (*LPInetNtoa)(struct IPerlSock*, struct in_addr); +typedef int (*LPListen)(struct IPerlSock*, SOCKET, int); +typedef int (*LPRecv)(struct IPerlSock*, SOCKET, char*, int, int); +typedef int (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int, + int, struct sockaddr*, int*); +typedef int (*LPSelect)(struct IPerlSock*, int, char*, char*, + char*, const struct timeval*); +typedef int (*LPSend)(struct IPerlSock*, SOCKET, const char*, int, + int); +typedef int (*LPSendto)(struct IPerlSock*, SOCKET, const char*, + int, int, const struct sockaddr*, int); +typedef void (*LPSethostent)(struct IPerlSock*, int); +typedef void (*LPSetnetent)(struct IPerlSock*, int); +typedef void (*LPSetprotoent)(struct IPerlSock*, int); +typedef void (*LPSetservent)(struct IPerlSock*, int); +typedef int (*LPSetsockopt)(struct IPerlSock*, SOCKET, int, int, + const char*, int); +typedef int (*LPShutdown)(struct IPerlSock*, SOCKET, int); +typedef SOCKET (*LPSocket)(struct IPerlSock*, int, int, int); +typedef int (*LPSocketpair)(struct IPerlSock*, int, int, int, + int*); #ifdef WIN32 - virtual int Closesocket(SOCKET s, int& err) = 0; - virtual int Ioctlsocket(SOCKET s, long cmd, u_long *argp, - int& err) = 0; +typedef int (*LPClosesocket)(struct IPerlSock*, SOCKET s); +#endif + +struct IPerlSock +{ + LPHtonl pHtonl; + LPHtons pHtons; + LPNtohl pNtohl; + LPNtohs pNtohs; + LPAccept pAccept; + LPBind pBind; + LPConnect pConnect; + LPEndhostent pEndhostent; + LPEndnetent pEndnetent; + LPEndprotoent pEndprotoent; + LPEndservent pEndservent; + LPGethostname pGethostname; + LPGetpeername pGetpeername; + LPGethostbyaddr pGethostbyaddr; + LPGethostbyname pGethostbyname; + LPGethostent pGethostent; + LPGetnetbyaddr pGetnetbyaddr; + LPGetnetbyname pGetnetbyname; + LPGetnetent pGetnetent; + LPGetprotobyname pGetprotobyname; + LPGetprotobynumber pGetprotobynumber; + LPGetprotoent pGetprotoent; + LPGetservbyname pGetservbyname; + LPGetservbyport pGetservbyport; + LPGetservent pGetservent; + LPGetsockname pGetsockname; + LPGetsockopt pGetsockopt; + LPInetAddr pInetAddr; + LPInetNtoa pInetNtoa; + LPListen pListen; + LPRecv pRecv; + LPRecvfrom pRecvfrom; + LPSelect pSelect; + LPSend pSend; + LPSendto pSendto; + LPSethostent pSethostent; + LPSetnetent pSetnetent; + LPSetprotoent pSetprotoent; + LPSetservent pSetservent; + LPSetsockopt pSetsockopt; + LPShutdown pShutdown; + LPSocket pSocket; + LPSocketpair pSocketpair; +#ifdef WIN32 + LPClosesocket pClosesocket; #endif }; -#define PerlSock_htonl(x) PL_piSock->Htonl(x) -#define PerlSock_htons(x) PL_piSock->Htons(x) -#define PerlSock_ntohl(x) PL_piSock->Ntohl(x) -#define PerlSock_ntohs(x) PL_piSock->Ntohs(x) -#define PerlSock_accept(s, a, l) PL_piSock->Accept(s, a, l, ErrorNo()) -#define PerlSock_bind(s, n, l) PL_piSock->Bind(s, n, l, ErrorNo()) -#define PerlSock_connect(s, n, l) PL_piSock->Connect(s, n, l, ErrorNo()) -#define PerlSock_endhostent() PL_piSock->Endhostent(ErrorNo()) -#define PerlSock_endnetent() PL_piSock->Endnetent(ErrorNo()) -#define PerlSock_endprotoent() PL_piSock->Endprotoent(ErrorNo()) -#define PerlSock_endservent() PL_piSock->Endservent(ErrorNo()) -#define PerlSock_gethostbyaddr(a, l, t) PL_piSock->Gethostbyaddr(a, l, t, ErrorNo()) -#define PerlSock_gethostbyname(n) PL_piSock->Gethostbyname(n, ErrorNo()) -#define PerlSock_gethostent() PL_piSock->Gethostent(ErrorNo()) -#define PerlSock_gethostname(n, l) PL_piSock->Gethostname(n, l, ErrorNo()) -#define PerlSock_getnetbyaddr(n, t) PL_piSock->Getnetbyaddr(n, t, ErrorNo()) -#define PerlSock_getnetbyname(c) PL_piSock->Getnetbyname(c, ErrorNo()) -#define PerlSock_getnetent() PL_piSock->Getnetent(ErrorNo()) -#define PerlSock_getpeername(s, n, l) PL_piSock->Getpeername(s, n, l, ErrorNo()) -#define PerlSock_getprotobyname(n) PL_piSock->Getprotobyname(n, ErrorNo()) -#define PerlSock_getprotobynumber(n) PL_piSock->Getprotobynumber(n, ErrorNo()) -#define PerlSock_getprotoent() PL_piSock->Getprotoent(ErrorNo()) -#define PerlSock_getservbyname(n, p) PL_piSock->Getservbyname(n, p, ErrorNo()) -#define PerlSock_getservbyport(port, p) PL_piSock->Getservbyport(port, p, ErrorNo()) -#define PerlSock_getservent() PL_piSock->Getservent(ErrorNo()) -#define PerlSock_getsockname(s, n, l) PL_piSock->Getsockname(s, n, l, ErrorNo()) -#define PerlSock_getsockopt(s,l,n,v,i) PL_piSock->Getsockopt(s, l, n, v, i, ErrorNo()) -#define PerlSock_inet_addr(c) PL_piSock->InetAddr(c, ErrorNo()) -#define PerlSock_inet_ntoa(i) PL_piSock->InetNtoa(i, ErrorNo()) -#define PerlSock_listen(s, b) PL_piSock->Listen(s, b, ErrorNo()) -#define PerlSock_recv(s, b, l, f) PL_piSock->Recv(s, b, l, f, ErrorNo()) -#define PerlSock_recvfrom(s,b,l,f,from,fromlen) \ - PL_piSock->Recvfrom(s, b, l, f, from, fromlen, ErrorNo()) -#define PerlSock_select(n, r, w, e, t) \ - PL_piSock->Select(n, (char*)r, (char*)w, (char*)e, t, ErrorNo()) -#define PerlSock_send(s, b, l, f) PL_piSock->Send(s, b, l, f, ErrorNo()) -#define PerlSock_sendto(s, b, l, f, t, tlen) \ - PL_piSock->Sendto(s, b, l, f, t, tlen, ErrorNo()) -#define PerlSock_sethostent(f) PL_piSock->Sethostent(f, ErrorNo()) -#define PerlSock_setnetent(f) PL_piSock->Setnetent(f, ErrorNo()) -#define PerlSock_setprotoent(f) PL_piSock->Setprotoent(f, ErrorNo()) -#define PerlSock_setservent(f) PL_piSock->Setservent(f, ErrorNo()) -#define PerlSock_setsockopt(s, l, n, v, len) \ - PL_piSock->Setsockopt(s, l, n, v, len, ErrorNo()) -#define PerlSock_shutdown(s, h) PL_piSock->Shutdown(s, h, ErrorNo()) -#define PerlSock_socket(a, t, p) PL_piSock->Socket(a, t, p, ErrorNo()) -#define PerlSock_socketpair(a, t, p, f) PL_piSock->Socketpair(a, t, p, f, ErrorNo()) +struct IPerlSockInfo +{ + unsigned long nCount; /* number of entries expected */ + struct IPerlSock perlSockList; +}; -#else /* PERL_OBJECT */ +#define PerlSock_htonl(x) \ + (*PL_Sock->pHtonl)(PL_Sock, x) +#define PerlSock_htons(x) \ + (*PL_Sock->pHtons)(PL_Sock, x) +#define PerlSock_ntohl(x) \ + (*PL_Sock->pNtohl)(PL_Sock, x) +#define PerlSock_ntohs(x) \ + (*PL_Sock->pNtohs)(PL_Sock, x) +#define PerlSock_accept(s, a, l) \ + (*PL_Sock->pAccept)(PL_Sock, s, a, l) +#define PerlSock_bind(s, n, l) \ + (*PL_Sock->pBind)(PL_Sock, s, n, l) +#define PerlSock_connect(s, n, l) \ + (*PL_Sock->pConnect)(PL_Sock, s, n, l) +#define PerlSock_endhostent() \ + (*PL_Sock->pEndhostent)(PL_Sock) +#define PerlSock_endnetent() \ + (*PL_Sock->pEndnetent)(PL_Sock) +#define PerlSock_endprotoent() \ + (*PL_Sock->pEndprotoent)(PL_Sock) +#define PerlSock_endservent() \ + (*PL_Sock->pEndservent)(PL_Sock) +#define PerlSock_gethostbyaddr(a, l, t) \ + (*PL_Sock->pGethostbyaddr)(PL_Sock, a, l, t) +#define PerlSock_gethostbyname(n) \ + (*PL_Sock->pGethostbyname)(PL_Sock, n) +#define PerlSock_gethostent() \ + (*PL_Sock->pGethostent)(PL_Sock) +#define PerlSock_gethostname(n, l) \ + (*PL_Sock->pGethostname)(PL_Sock, n, l) +#define PerlSock_getnetbyaddr(n, t) \ + (*PL_Sock->pGetnetbyaddr)(PL_Sock, n, t) +#define PerlSock_getnetbyname(c) \ + (*PL_Sock->pGetnetbyname)(PL_Sock, c) +#define PerlSock_getnetent() \ + (*PL_Sock->pGetnetent)(PL_Sock) +#define PerlSock_getpeername(s, n, l) \ + (*PL_Sock->pGetpeername)(PL_Sock, s, n, l) +#define PerlSock_getprotobyname(n) \ + (*PL_Sock->pGetprotobyname)(PL_Sock, n) +#define PerlSock_getprotobynumber(n) \ + (*PL_Sock->pGetprotobynumber)(PL_Sock, n) +#define PerlSock_getprotoent() \ + (*PL_Sock->pGetprotoent)(PL_Sock) +#define PerlSock_getservbyname(n, p) \ + (*PL_Sock->pGetservbyname)(PL_Sock, n, p) +#define PerlSock_getservbyport(port, p) \ + (*PL_Sock->pGetservbyport)(PL_Sock, port, p) +#define PerlSock_getservent() \ + (*PL_Sock->pGetservent)(PL_Sock) +#define PerlSock_getsockname(s, n, l) \ + (*PL_Sock->pGetsockname)(PL_Sock, s, n, l) +#define PerlSock_getsockopt(s,l,n,v,i) \ + (*PL_Sock->pGetsockopt)(PL_Sock, s, l, n, v, i) +#define PerlSock_inet_addr(c) \ + (*PL_Sock->pInetAddr)(PL_Sock, c) +#define PerlSock_inet_ntoa(i) \ + (*PL_Sock->pInetNtoa)(PL_Sock, i) +#define PerlSock_listen(s, b) \ + (*PL_Sock->pListen)(PL_Sock, s, b) +#define PerlSock_recv(s, b, l, f) \ + (*PL_Sock->pRecv)(PL_Sock, s, b, l, f) +#define PerlSock_recvfrom(s,b,l,f,from,fromlen) \ + (*PL_Sock->pRecvfrom)(PL_Sock, s, b, l, f, from, fromlen) +#define PerlSock_select(n, r, w, e, t) \ + (*PL_Sock->pSelect)(PL_Sock, n, (char*)r, (char*)w, (char*)e, t) +#define PerlSock_send(s, b, l, f) \ + (*PL_Sock->pSend)(PL_Sock, s, b, l, f) +#define PerlSock_sendto(s, b, l, f, t, tlen) \ + (*PL_Sock->pSendto)(PL_Sock, s, b, l, f, t, tlen) +#define PerlSock_sethostent(f) \ + (*PL_Sock->pSethostent)(PL_Sock, f) +#define PerlSock_setnetent(f) \ + (*PL_Sock->pSetnetent)(PL_Sock, f) +#define PerlSock_setprotoent(f) \ + (*PL_Sock->pSetprotoent)(PL_Sock, f) +#define PerlSock_setservent(f) \ + (*PL_Sock->pSetservent)(PL_Sock, f) +#define PerlSock_setsockopt(s, l, n, v, len) \ + (*PL_Sock->pSetsockopt)(PL_Sock, s, l, n, v, len) +#define PerlSock_shutdown(s, h) \ + (*PL_Sock->pShutdown)(PL_Sock, s, h) +#define PerlSock_socket(a, t, p) \ + (*PL_Sock->pSocket)(PL_Sock, a, t, p) +#define PerlSock_socketpair(a, t, p, f) \ + (*PL_Sock->pSocketpair)(PL_Sock, a, t, p, f) + +#ifdef WIN32 +#define PerlSock_closesocket(s) \ + (*PL_Sock->pClosesocket)(PL_Sock, s) +#endif + +#else /* PERL_IMPLICIT_SYS */ #define PerlSock_htonl(x) htonl(x) #define PerlSock_htons(x) htons(x) @@ -924,8 +1475,11 @@ class IPerlSock #define PerlSock_socket(a, t, p) socket(a, t, p) #define PerlSock_socketpair(a, t, p, f) socketpair(a, t, p, f) +#ifdef WIN32 +#define PerlSock_closesocket(s) closesocket(s) +#endif -#endif /* PERL_OBJECT */ +#endif /* PERL_IMPLICIT_SYS */ #endif /* __Inc__IPerl___ */ diff --git a/contrib/perl5/keywords.h b/contrib/perl5/keywords.h index e8188311488e..334304149f2e 100644 --- a/contrib/perl5/keywords.h +++ b/contrib/perl5/keywords.h @@ -16,235 +16,237 @@ #define KEY_LE 15 #define KEY_LT 16 #define KEY_NE 17 -#define KEY_abs 18 -#define KEY_accept 19 -#define KEY_alarm 20 -#define KEY_and 21 -#define KEY_atan2 22 -#define KEY_bind 23 -#define KEY_binmode 24 -#define KEY_bless 25 -#define KEY_caller 26 -#define KEY_chdir 27 -#define KEY_chmod 28 -#define KEY_chomp 29 -#define KEY_chop 30 -#define KEY_chown 31 -#define KEY_chr 32 -#define KEY_chroot 33 -#define KEY_close 34 -#define KEY_closedir 35 -#define KEY_cmp 36 -#define KEY_connect 37 -#define KEY_continue 38 -#define KEY_cos 39 -#define KEY_crypt 40 -#define KEY_dbmclose 41 -#define KEY_dbmopen 42 -#define KEY_defined 43 -#define KEY_delete 44 -#define KEY_die 45 -#define KEY_do 46 -#define KEY_dump 47 -#define KEY_each 48 -#define KEY_else 49 -#define KEY_elsif 50 -#define KEY_endgrent 51 -#define KEY_endhostent 52 -#define KEY_endnetent 53 -#define KEY_endprotoent 54 -#define KEY_endpwent 55 -#define KEY_endservent 56 -#define KEY_eof 57 -#define KEY_eq 58 -#define KEY_eval 59 -#define KEY_exec 60 -#define KEY_exists 61 -#define KEY_exit 62 -#define KEY_exp 63 -#define KEY_fcntl 64 -#define KEY_fileno 65 -#define KEY_flock 66 -#define KEY_for 67 -#define KEY_foreach 68 -#define KEY_fork 69 -#define KEY_format 70 -#define KEY_formline 71 -#define KEY_ge 72 -#define KEY_getc 73 -#define KEY_getgrent 74 -#define KEY_getgrgid 75 -#define KEY_getgrnam 76 -#define KEY_gethostbyaddr 77 -#define KEY_gethostbyname 78 -#define KEY_gethostent 79 -#define KEY_getlogin 80 -#define KEY_getnetbyaddr 81 -#define KEY_getnetbyname 82 -#define KEY_getnetent 83 -#define KEY_getpeername 84 -#define KEY_getpgrp 85 -#define KEY_getppid 86 -#define KEY_getpriority 87 -#define KEY_getprotobyname 88 -#define KEY_getprotobynumber 89 -#define KEY_getprotoent 90 -#define KEY_getpwent 91 -#define KEY_getpwnam 92 -#define KEY_getpwuid 93 -#define KEY_getservbyname 94 -#define KEY_getservbyport 95 -#define KEY_getservent 96 -#define KEY_getsockname 97 -#define KEY_getsockopt 98 -#define KEY_glob 99 -#define KEY_gmtime 100 -#define KEY_goto 101 -#define KEY_grep 102 -#define KEY_gt 103 -#define KEY_hex 104 -#define KEY_if 105 -#define KEY_index 106 -#define KEY_int 107 -#define KEY_ioctl 108 -#define KEY_join 109 -#define KEY_keys 110 -#define KEY_kill 111 -#define KEY_last 112 -#define KEY_lc 113 -#define KEY_lcfirst 114 -#define KEY_le 115 -#define KEY_length 116 -#define KEY_link 117 -#define KEY_listen 118 -#define KEY_local 119 -#define KEY_localtime 120 -#define KEY_lock 121 -#define KEY_log 122 -#define KEY_lstat 123 -#define KEY_lt 124 -#define KEY_m 125 -#define KEY_map 126 -#define KEY_mkdir 127 -#define KEY_msgctl 128 -#define KEY_msgget 129 -#define KEY_msgrcv 130 -#define KEY_msgsnd 131 -#define KEY_my 132 -#define KEY_ne 133 -#define KEY_next 134 -#define KEY_no 135 -#define KEY_not 136 -#define KEY_oct 137 -#define KEY_open 138 -#define KEY_opendir 139 -#define KEY_or 140 -#define KEY_ord 141 -#define KEY_pack 142 -#define KEY_package 143 -#define KEY_pipe 144 -#define KEY_pop 145 -#define KEY_pos 146 -#define KEY_print 147 -#define KEY_printf 148 -#define KEY_prototype 149 -#define KEY_push 150 -#define KEY_q 151 -#define KEY_qq 152 -#define KEY_qr 153 -#define KEY_quotemeta 154 -#define KEY_qw 155 -#define KEY_qx 156 -#define KEY_rand 157 -#define KEY_read 158 -#define KEY_readdir 159 -#define KEY_readline 160 -#define KEY_readlink 161 -#define KEY_readpipe 162 -#define KEY_recv 163 -#define KEY_redo 164 -#define KEY_ref 165 -#define KEY_rename 166 -#define KEY_require 167 -#define KEY_reset 168 -#define KEY_return 169 -#define KEY_reverse 170 -#define KEY_rewinddir 171 -#define KEY_rindex 172 -#define KEY_rmdir 173 -#define KEY_s 174 -#define KEY_scalar 175 -#define KEY_seek 176 -#define KEY_seekdir 177 -#define KEY_select 178 -#define KEY_semctl 179 -#define KEY_semget 180 -#define KEY_semop 181 -#define KEY_send 182 -#define KEY_setgrent 183 -#define KEY_sethostent 184 -#define KEY_setnetent 185 -#define KEY_setpgrp 186 -#define KEY_setpriority 187 -#define KEY_setprotoent 188 -#define KEY_setpwent 189 -#define KEY_setservent 190 -#define KEY_setsockopt 191 -#define KEY_shift 192 -#define KEY_shmctl 193 -#define KEY_shmget 194 -#define KEY_shmread 195 -#define KEY_shmwrite 196 -#define KEY_shutdown 197 -#define KEY_sin 198 -#define KEY_sleep 199 -#define KEY_socket 200 -#define KEY_socketpair 201 -#define KEY_sort 202 -#define KEY_splice 203 -#define KEY_split 204 -#define KEY_sprintf 205 -#define KEY_sqrt 206 -#define KEY_srand 207 -#define KEY_stat 208 -#define KEY_study 209 -#define KEY_sub 210 -#define KEY_substr 211 -#define KEY_symlink 212 -#define KEY_syscall 213 -#define KEY_sysopen 214 -#define KEY_sysread 215 -#define KEY_sysseek 216 -#define KEY_system 217 -#define KEY_syswrite 218 -#define KEY_tell 219 -#define KEY_telldir 220 -#define KEY_tie 221 -#define KEY_tied 222 -#define KEY_time 223 -#define KEY_times 224 -#define KEY_tr 225 -#define KEY_truncate 226 -#define KEY_uc 227 -#define KEY_ucfirst 228 -#define KEY_umask 229 -#define KEY_undef 230 -#define KEY_unless 231 -#define KEY_unlink 232 -#define KEY_unpack 233 -#define KEY_unshift 234 -#define KEY_untie 235 -#define KEY_until 236 -#define KEY_use 237 -#define KEY_utime 238 -#define KEY_values 239 -#define KEY_vec 240 -#define KEY_wait 241 -#define KEY_waitpid 242 -#define KEY_wantarray 243 -#define KEY_warn 244 -#define KEY_while 245 -#define KEY_write 246 -#define KEY_x 247 -#define KEY_xor 248 -#define KEY_y 249 +#define KEY_CHECK 18 +#define KEY_abs 19 +#define KEY_accept 20 +#define KEY_alarm 21 +#define KEY_and 22 +#define KEY_atan2 23 +#define KEY_bind 24 +#define KEY_binmode 25 +#define KEY_bless 26 +#define KEY_caller 27 +#define KEY_chdir 28 +#define KEY_chmod 29 +#define KEY_chomp 30 +#define KEY_chop 31 +#define KEY_chown 32 +#define KEY_chr 33 +#define KEY_chroot 34 +#define KEY_close 35 +#define KEY_closedir 36 +#define KEY_cmp 37 +#define KEY_connect 38 +#define KEY_continue 39 +#define KEY_cos 40 +#define KEY_crypt 41 +#define KEY_dbmclose 42 +#define KEY_dbmopen 43 +#define KEY_defined 44 +#define KEY_delete 45 +#define KEY_die 46 +#define KEY_do 47 +#define KEY_dump 48 +#define KEY_each 49 +#define KEY_else 50 +#define KEY_elsif 51 +#define KEY_endgrent 52 +#define KEY_endhostent 53 +#define KEY_endnetent 54 +#define KEY_endprotoent 55 +#define KEY_endpwent 56 +#define KEY_endservent 57 +#define KEY_eof 58 +#define KEY_eq 59 +#define KEY_eval 60 +#define KEY_exec 61 +#define KEY_exists 62 +#define KEY_exit 63 +#define KEY_exp 64 +#define KEY_fcntl 65 +#define KEY_fileno 66 +#define KEY_flock 67 +#define KEY_for 68 +#define KEY_foreach 69 +#define KEY_fork 70 +#define KEY_format 71 +#define KEY_formline 72 +#define KEY_ge 73 +#define KEY_getc 74 +#define KEY_getgrent 75 +#define KEY_getgrgid 76 +#define KEY_getgrnam 77 +#define KEY_gethostbyaddr 78 +#define KEY_gethostbyname 79 +#define KEY_gethostent 80 +#define KEY_getlogin 81 +#define KEY_getnetbyaddr 82 +#define KEY_getnetbyname 83 +#define KEY_getnetent 84 +#define KEY_getpeername 85 +#define KEY_getpgrp 86 +#define KEY_getppid 87 +#define KEY_getpriority 88 +#define KEY_getprotobyname 89 +#define KEY_getprotobynumber 90 +#define KEY_getprotoent 91 +#define KEY_getpwent 92 +#define KEY_getpwnam 93 +#define KEY_getpwuid 94 +#define KEY_getservbyname 95 +#define KEY_getservbyport 96 +#define KEY_getservent 97 +#define KEY_getsockname 98 +#define KEY_getsockopt 99 +#define KEY_glob 100 +#define KEY_gmtime 101 +#define KEY_goto 102 +#define KEY_grep 103 +#define KEY_gt 104 +#define KEY_hex 105 +#define KEY_if 106 +#define KEY_index 107 +#define KEY_int 108 +#define KEY_ioctl 109 +#define KEY_join 110 +#define KEY_keys 111 +#define KEY_kill 112 +#define KEY_last 113 +#define KEY_lc 114 +#define KEY_lcfirst 115 +#define KEY_le 116 +#define KEY_length 117 +#define KEY_link 118 +#define KEY_listen 119 +#define KEY_local 120 +#define KEY_localtime 121 +#define KEY_lock 122 +#define KEY_log 123 +#define KEY_lstat 124 +#define KEY_lt 125 +#define KEY_m 126 +#define KEY_map 127 +#define KEY_mkdir 128 +#define KEY_msgctl 129 +#define KEY_msgget 130 +#define KEY_msgrcv 131 +#define KEY_msgsnd 132 +#define KEY_my 133 +#define KEY_ne 134 +#define KEY_next 135 +#define KEY_no 136 +#define KEY_not 137 +#define KEY_oct 138 +#define KEY_open 139 +#define KEY_opendir 140 +#define KEY_or 141 +#define KEY_ord 142 +#define KEY_our 143 +#define KEY_pack 144 +#define KEY_package 145 +#define KEY_pipe 146 +#define KEY_pop 147 +#define KEY_pos 148 +#define KEY_print 149 +#define KEY_printf 150 +#define KEY_prototype 151 +#define KEY_push 152 +#define KEY_q 153 +#define KEY_qq 154 +#define KEY_qr 155 +#define KEY_quotemeta 156 +#define KEY_qw 157 +#define KEY_qx 158 +#define KEY_rand 159 +#define KEY_read 160 +#define KEY_readdir 161 +#define KEY_readline 162 +#define KEY_readlink 163 +#define KEY_readpipe 164 +#define KEY_recv 165 +#define KEY_redo 166 +#define KEY_ref 167 +#define KEY_rename 168 +#define KEY_require 169 +#define KEY_reset 170 +#define KEY_return 171 +#define KEY_reverse 172 +#define KEY_rewinddir 173 +#define KEY_rindex 174 +#define KEY_rmdir 175 +#define KEY_s 176 +#define KEY_scalar 177 +#define KEY_seek 178 +#define KEY_seekdir 179 +#define KEY_select 180 +#define KEY_semctl 181 +#define KEY_semget 182 +#define KEY_semop 183 +#define KEY_send 184 +#define KEY_setgrent 185 +#define KEY_sethostent 186 +#define KEY_setnetent 187 +#define KEY_setpgrp 188 +#define KEY_setpriority 189 +#define KEY_setprotoent 190 +#define KEY_setpwent 191 +#define KEY_setservent 192 +#define KEY_setsockopt 193 +#define KEY_shift 194 +#define KEY_shmctl 195 +#define KEY_shmget 196 +#define KEY_shmread 197 +#define KEY_shmwrite 198 +#define KEY_shutdown 199 +#define KEY_sin 200 +#define KEY_sleep 201 +#define KEY_socket 202 +#define KEY_socketpair 203 +#define KEY_sort 204 +#define KEY_splice 205 +#define KEY_split 206 +#define KEY_sprintf 207 +#define KEY_sqrt 208 +#define KEY_srand 209 +#define KEY_stat 210 +#define KEY_study 211 +#define KEY_sub 212 +#define KEY_substr 213 +#define KEY_symlink 214 +#define KEY_syscall 215 +#define KEY_sysopen 216 +#define KEY_sysread 217 +#define KEY_sysseek 218 +#define KEY_system 219 +#define KEY_syswrite 220 +#define KEY_tell 221 +#define KEY_telldir 222 +#define KEY_tie 223 +#define KEY_tied 224 +#define KEY_time 225 +#define KEY_times 226 +#define KEY_tr 227 +#define KEY_truncate 228 +#define KEY_uc 229 +#define KEY_ucfirst 230 +#define KEY_umask 231 +#define KEY_undef 232 +#define KEY_unless 233 +#define KEY_unlink 234 +#define KEY_unpack 235 +#define KEY_unshift 236 +#define KEY_untie 237 +#define KEY_until 238 +#define KEY_use 239 +#define KEY_utime 240 +#define KEY_values 241 +#define KEY_vec 242 +#define KEY_wait 243 +#define KEY_waitpid 244 +#define KEY_wantarray 245 +#define KEY_warn 246 +#define KEY_while 247 +#define KEY_write 248 +#define KEY_x 249 +#define KEY_xor 250 +#define KEY_y 251 diff --git a/contrib/perl5/keywords.pl b/contrib/perl5/keywords.pl index f907e3f115ca..46dd53d70e9d 100755 --- a/contrib/perl5/keywords.pl +++ b/contrib/perl5/keywords.pl @@ -42,6 +42,7 @@ INIT LE LT NE +CHECK abs accept alarm @@ -166,6 +167,7 @@ open opendir or ord +our pack package pipe diff --git a/contrib/perl5/lib/AnyDBM_File.pm b/contrib/perl5/lib/AnyDBM_File.pm index aff3c7cdec95..58ffda768e2a 100644 --- a/contrib/perl5/lib/AnyDBM_File.pm +++ b/contrib/perl5/lib/AnyDBM_File.pm @@ -1,7 +1,7 @@ package AnyDBM_File; -use vars qw(@ISA); -@ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA; +use 5.005_64; +our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA; my $mod; for $mod (@ISA) { @@ -87,6 +87,6 @@ By default, but can be redefined. =head1 SEE ALSO -dbm(3), ndbm(3), DB_File(3) +dbm(3), ndbm(3), DB_File(3), L =cut diff --git a/contrib/perl5/lib/AutoLoader.pm b/contrib/perl5/lib/AutoLoader.pm index 5b083a78944a..8fd7d3b8fe2a 100644 --- a/contrib/perl5/lib/AutoLoader.pm +++ b/contrib/perl5/lib/AutoLoader.pm @@ -1,20 +1,23 @@ package AutoLoader; -use vars qw(@EXPORT @EXPORT_OK); +use 5.005_64; +our(@EXPORT, @EXPORT_OK, $VERSION); my $is_dosish; my $is_vms; BEGIN { require Exporter; - @EXPORT = (); - @EXPORT_OK = qw(AUTOLOAD); + @EXPORT = @EXPORT = (); + @EXPORT_OK = @EXPORT_OK = qw(AUTOLOAD); $is_dosish = $^O eq 'dos' || $^O eq 'os2' || $^O eq 'MSWin32'; $is_vms = $^O eq 'VMS'; + $VERSION = '5.57'; } AUTOLOAD { - my $name; + my $sub = $AUTOLOAD; + my $filename; # Braces used to preserve $1 et al. { # Try to find the autoloaded file from the package-qualified @@ -30,10 +33,10 @@ AUTOLOAD { # In this case, we simple prepend the 'auto/' and let the # C take care of the searching for us. - my ($pkg,$func) = $AUTOLOAD =~ /(.*)::([^:]+)$/; + my ($pkg,$func) = ($sub =~ /(.*)::([^:]+)$/); $pkg =~ s#::#/#g; - if (defined($name=$INC{"$pkg.pm"})) { - $name =~ s#^(.*)$pkg\.pm$#$1auto/$pkg/$func.al#; + if (defined($filename = $INC{"$pkg.pm"})) { + $filename =~ s#^(.*)$pkg\.pm\z#$1auto/$pkg/$func.al#s; # if the file exists, then make sure that it is a # a fully anchored path (i.e either '/usr/lib/auto/foo/bar.al', @@ -41,45 +44,45 @@ AUTOLOAD { # (and failing) to find the 'lib/auto/foo/bar.al' because it # looked for 'lib/lib/auto/foo/bar.al', given @INC = ('lib'). - if (-r $name) { - unless ($name =~ m|^/|) { + if (-r $filename) { + unless ($filename =~ m|^/|s) { if ($is_dosish) { - unless ($name =~ m{^([a-z]:)?[\\/]}i) { - $name = "./$name"; + unless ($filename =~ m{^([a-z]:)?[\\/]}is) { + $filename = "./$filename"; } } elsif ($is_vms) { - # XXX todo by VMSmiths - $name = "./$name"; + # XXX todo by VMSmiths + $filename = "./$filename"; } else { - $name = "./$name"; + $filename = "./$filename"; } } } else { - $name = undef; + $filename = undef; } } - unless (defined $name) { + unless (defined $filename) { # let C do the searching - $name = "auto/$AUTOLOAD.al"; - $name =~ s#::#/#g; + $filename = "auto/$sub.al"; + $filename =~ s#::#/#g; } } my $save = $@; - eval { local $SIG{__DIE__}; require $name }; + eval { local $SIG{__DIE__}; require $filename }; if ($@) { - if (substr($AUTOLOAD,-9) eq '::DESTROY') { - *$AUTOLOAD = sub {}; + if (substr($sub,-9) eq '::DESTROY') { + *$sub = sub {}; } else { # The load might just have failed because the filename was too # long for some old SVR3 systems which treat long names as errors. # If we can succesfully truncate a long name then it's worth a go. # There is a slight risk that we could pick up the wrong file here # but autosplit should have warned about that when splitting. - if ($name =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){ - eval {local $SIG{__DIE__};require $name}; + if ($filename =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){ + eval { local $SIG{__DIE__}; require $filename }; } if ($@){ $@ =~ s/ at .*\n//; @@ -90,7 +93,7 @@ AUTOLOAD { } } $@ = $save; - goto &$AUTOLOAD; + goto &$sub; } sub import { @@ -101,7 +104,10 @@ sub import { # Export symbols, but not by accident of inheritance. # - Exporter::export $pkg, $callpkg, @_ if $pkg eq 'AutoLoader'; + if ($pkg eq 'AutoLoader') { + local $Exporter::ExportLevel = 1; + Exporter::import $pkg, @_; + } # # Try to find the autosplit index file. Eg., if the call package @@ -219,20 +225,20 @@ lines: use Carp; sub AUTOLOAD { - my $constname; - ($constname = $AUTOLOAD) =~ s/.*:://; + my $sub = $AUTOLOAD; + (my $constname = $sub) =~ s/.*:://; my $val = constant($constname, @_ ? $_[0] : 0); if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; + if ($! =~ /Invalid/ || $!{EINVAL}) { + $AutoLoader::AUTOLOAD = $sub; goto &AutoLoader::AUTOLOAD; } else { croak "Your vendor has not defined constant $constname"; } } - *$AUTOLOAD = sub { $val }; # same as: eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; + *$sub = sub { $val }; # same as: eval "sub $sub { $val }"; + goto &$sub; } If any module's own AUTOLOAD subroutine has no need to fallback to the diff --git a/contrib/perl5/lib/AutoSplit.pm b/contrib/perl5/lib/AutoSplit.pm index f8183714d7de..0be3ae6765a1 100644 --- a/contrib/perl5/lib/AutoSplit.pm +++ b/contrib/perl5/lib/AutoSplit.pm @@ -1,17 +1,16 @@ package AutoSplit; +use 5.005_64; use Exporter (); use Config qw(%Config); use Carp qw(carp); use File::Basename (); use File::Path qw(mkpath); use strict; -use vars qw( - $VERSION @ISA @EXPORT @EXPORT_OK - $Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime - ); +our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Verbose, $Keep, $Maxlen, + $CheckForAutoloader, $CheckModTime); -$VERSION = "1.0303"; +$VERSION = "1.0305"; @ISA = qw(Exporter); @EXPORT = qw(&autosplit &autosplit_lib_modules); @EXPORT_OK = qw($Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime); @@ -147,6 +146,13 @@ if (defined (&Dos::UseLFN)) { } my $Is_VMS = ($^O eq 'VMS'); +# allow checking for valid ': attrlist' attachments +my $nested; +$nested = qr{ \( (?: (?> [^()]+ ) | (??{ $nested }) )* \) }x; +my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x; +my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x; + + sub autosplit{ my($file, $autodir, $keep, $ckal, $ckmt) = @_; @@ -169,10 +175,10 @@ sub autosplit_lib_modules{ while(defined($_ = shift @modules)){ s#::#/#g; # incase specified as ABC::XYZ s|\\|/|g; # bug in ksh OS/2 - s#^lib/##; # incase specified as lib/*.pm + s#^lib/##s; # incase specified as lib/*.pm if ($Is_VMS && /[:>\]]/) { # may need to convert VMS-style filespecs - my ($dir,$name) = (/(.*])(.*)/); - $dir =~ s/.*lib[\.\]]//; + my ($dir,$name) = (/(.*])(.*)/s); + $dir =~ s/.*lib[\.\]]//s; $dir =~ s#[\.\]]#/#g; $_ = $dir . $name; } @@ -195,7 +201,7 @@ sub autosplit_file { # where to write output files $autodir ||= "lib/auto"; if ($Is_VMS) { - ($autodir = VMS::Filespec::unixpath($autodir)) =~ s|/$||; + ($autodir = VMS::Filespec::unixpath($autodir)) =~ s|/\z||; $filename = VMS::Filespec::unixify($filename); # may have dirs } unless (-d $autodir){ @@ -209,7 +215,7 @@ sub autosplit_file { } # allow just a package name to be used - $filename .= ".pm" unless ($filename =~ m/\.pm$/); + $filename .= ".pm" unless ($filename =~ m/\.pm\z/); open(IN, "<$filename") or die "AutoSplit: Can't open $filename: $!\n"; my($pm_mod_time) = (stat($filename))[9]; @@ -280,7 +286,7 @@ sub autosplit_file { $last_package = ''; while () { $fnr++; - $in_pod = 1 if /^=/; + $in_pod = 1 if /^=\w/; $in_pod = 0 if /^=cut/; next if ($in_pod || /^=cut/); # the following (tempting) old coding gives big troubles if a @@ -289,7 +295,7 @@ sub autosplit_file { if (/^package\s+([\w:]+)\s*;/) { $this_package = $def_package = $1; } - if (/^sub\s+([\w:]+)(\s*\(.*?\))?/) { + if (/^sub\s+([\w:]+)(\s*(?:\(.*?\))?(?:$attr_list)?)/) { print OUT "# end of $last_package\::$subname\n1;\n" if $last_package; $subname = $1; @@ -346,8 +352,10 @@ EOT } $last_package = $this_package if defined $this_package; } - print OUT @cache,"1;\n# end of $last_package\::$subname\n"; - close(OUT); + if ($subname) { + print OUT @cache,"1;\n# end of $last_package\::$subname\n"; + close(OUT); + } close(IN); if (!$keep){ # don't keep any obsolete *.al files in the directory @@ -370,7 +378,7 @@ EOT for my $dir (keys %outdirs) { opendir(OUTDIR,$dir); foreach (sort readdir(OUTDIR)){ - next unless /\.al$/; + next unless /\.al\z/; my($file) = "$dir/$_"; $file = lc $file if $Is83 or $Is_VMS; next if $outfiles{$file}; @@ -459,3 +467,6 @@ sub test6 { return join ":", __FILE__,__LINE__; } package Yet::Another::AutoSplit; sub testtesttesttest4_1 ($) { "another test 4\n"; } sub testtesttesttest4_2 ($$) { "another duplicate test 4\n"; } +package Yet::More::Attributes; +sub test_a1 ($) : locked :locked { 1; } +sub test_a2 : locked { 1; } diff --git a/contrib/perl5/lib/Benchmark.pm b/contrib/perl5/lib/Benchmark.pm index ef12d02fcbcf..3c10a5bc523b 100644 --- a/contrib/perl5/lib/Benchmark.pm +++ b/contrib/perl5/lib/Benchmark.pm @@ -2,13 +2,7 @@ package Benchmark; =head1 NAME -Benchmark - benchmark running times of code - -timethis - run a chunk of code several times - -timethese - run several chunks of code several times - -timeit - run a chunk of code and see how long it goes +Benchmark - benchmark running times of Perl code =head1 SYNOPSIS @@ -26,14 +20,50 @@ timeit - run a chunk of code and see how long it goes 'Name2' => sub { ...code2... }, }); + # cmpthese can be used both ways as well + cmpthese($count, { + 'Name1' => '...code1...', + 'Name2' => '...code2...', + }); + + cmpthese($count, { + 'Name1' => sub { ...code1... }, + 'Name2' => sub { ...code2... }, + }); + + # ...or in two stages + $results = timethese($count, + { + 'Name1' => sub { ...code1... }, + 'Name2' => sub { ...code2... }, + }, + 'none' + ); + cmpthese( $results ) ; + $t = timeit($count, '...other code...') print "$count loops of other code took:",timestr($t),"\n"; + $t = countit($time, '...other code...') + $count = $t->iters ; + print "$count loops of other code took:",timestr($t),"\n"; + =head1 DESCRIPTION The Benchmark module encapsulates a number of routines to help you figure out how long it takes to execute some code. +timethis - run a chunk of code several times + +timethese - run several chunks of code several times + +cmpthese - print results of timethese as a comparison chart + +timeit - run a chunk of code and see how long it goes + +countit - see how many times a chunk of code runs in a given time + + =head2 Methods =over 10 @@ -57,6 +87,10 @@ Enables or disable debugging by setting the C<$Benchmark::Debug> flag: $t = timeit(10, ' 5 ** $Global '); debug Benchmark 0; +=item iters + +Returns the number of iterations. + =back =head2 Standard Exports @@ -119,28 +153,26 @@ The routines are called in string comparison order of KEY. The COUNT can be zero or negative, see timethis(). +Returns a hash of Benchmark objects, keyed by name. + =item timediff ( T1, T2 ) Returns the difference between two Benchmark times as a Benchmark object suitable for passing to timestr(). -=item timesum ( T1, T2 ) - -Returns the sum of two Benchmark times as a Benchmark object suitable -for passing to timestr(). - =item timestr ( TIMEDIFF, [ STYLE, [ FORMAT ] ] ) Returns a string that formats the times in the TIMEDIFF object in the requested STYLE. TIMEDIFF is expected to be a Benchmark object similar to that returned by timediff(). -STYLE can be any of 'all', 'noc', 'nop' or 'auto'. 'all' shows each -of the 5 times available ('wallclock' time, user time, system time, +STYLE can be any of 'all', 'none', 'noc', 'nop' or 'auto'. 'all' shows +each of the 5 times available ('wallclock' time, user time, system time, user time of children, and system time of children). 'noc' shows all except the two children times. 'nop' shows only wallclock and the two children times. 'auto' (the default) will act as 'all' unless the children times are both zero, in which case it acts as 'noc'. +'none' prevents output. FORMAT is the L-style format specifier (without the leading '%') to use to print the times. It defaults to '5.2f'. @@ -162,6 +194,34 @@ Clear the cached time for COUNT rounds of the null loop. Clear all cached times. +=item cmpthese ( COUT, CODEHASHREF, [ STYLE ] ) + +=item cmpthese ( RESULTSHASHREF ) + +Optionally calls timethese(), then outputs comparison chart. This +chart is sorted from slowest to fastest, and shows the percent +speed difference between each pair of tests. Can also be passed +the data structure that timethese() returns: + + $results = timethese( .... ); + cmpthese( $results ); + +Returns the data structure returned by timethese() (or passed in). + +=item countit(TIME, CODE) + +Arguments: TIME is the minimum length of time to run CODE for, and CODE is +the code to run. CODE may be either a code reference or a string to +be eval'd; either way it will be run in the caller's package. + +TIME is I negative. countit() will run the loop many times to +calculate the speed of CODE before running it for TIME. The actual +time run for will usually be greater than TIME due to system clock +resolution, so it's best to look at the number of iterations divided +by the times that you are concerned with, not just the iterations. + +Returns: a Benchmark object. + =item disablecache ( ) Disable caching of timings for the null loop. This will force Benchmark @@ -173,6 +233,11 @@ Enable caching of timings for the null loop. The time taken for COUNT rounds of the null loop will be calculated only once for each different COUNT used. +=item timesum ( T1, T2 ) + +Returns the sum of two Benchmark times as a Benchmark object suitable +for passing to timestr(). + =back =head1 NOTES @@ -180,7 +245,7 @@ different COUNT used. The data is stored as a list of values from the time and times functions: - ($real, $user, $system, $children_user, $children_system) + ($real, $user, $system, $children_user, $children_system, $iters) in seconds for the whole loop (not divided by the number of rounds). @@ -192,7 +257,7 @@ The time of the null loop (a loop with the same number of rounds but empty loop body) is subtracted from the time of the real loop. -The null loop times are cached, the key being the +The null loop times can be cached, the key being the number of rounds. The caching can be controlled using calls like these: @@ -202,6 +267,38 @@ calls like these: disablecache(); enablecache(); +Caching is off by default, as it can (usually slightly) decrease +accuracy and does not usually noticably affect runtimes. + +=head1 EXAMPLES + +For example, + + use Benchmark;$x=3;cmpthese(-5,{a=>sub{$x*$x},b=>sub{$x**2}}) + +outputs something like this: + + Benchmark: running a, b, each for at least 5 CPU seconds... + a: 10 wallclock secs ( 5.14 usr + 0.13 sys = 5.27 CPU) @ 3835055.60/s (n=20210743) + b: 5 wallclock secs ( 5.41 usr + 0.00 sys = 5.41 CPU) @ 1574944.92/s (n=8520452) + Rate b a + b 1574945/s -- -59% + a 3835056/s 144% -- + +while + + use Benchmark; + $x=3; + $r=timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}},'none'); + cmpthese($r); + +outputs something like this: + + Rate b a + b 1559428/s -- -62% + a 4152037/s 166% -- + + =head1 INHERITANCE Benchmark inherits from no other class, except of course @@ -210,7 +307,7 @@ for Exporter. =head1 CAVEATS Comparing eval'd strings with code references will give you -inaccurate results: a code reference will show a slower +inaccurate results: a code reference will show a slightly slower execution time than the equivalent eval'd string. The real time timing is done using time(2) and @@ -226,6 +323,10 @@ The system time of the null loop might be slightly more than the system time of the loop with the actual code and therefore the difference might end up being E 0. +=head1 SEE ALSO + +L - a Perl code profiler + =head1 AUTHORS Jarkko Hietaniemi >, Tim Bunce > @@ -241,6 +342,10 @@ documentation. April 04-07th, 1997: by Jarkko Hietaniemi, added the run-for-some-time functionality. +September, 1999; by Barrie Slaymaker: math fixes and accuracy and +efficiency tweaks. Added cmpthese(). A result is now returned from +timethese(). Exposed countit() (was runfor()). + =cut # evaluate something in a clean lexical environment @@ -254,7 +359,10 @@ use Carp; use Exporter; @ISA=(Exporter); @EXPORT=qw(timeit timethis timethese timediff timestr); -@EXPORT_OK=qw(clearcache clearallcache disablecache enablecache); +@EXPORT_OK=qw(timesum cmpthese countit + clearcache clearallcache disablecache enablecache); + +$VERSION = 1.00; &init; @@ -273,7 +381,9 @@ sub init { sub debug { $debug = ($_[1] != 0); } -sub clearcache { delete $cache{$_[0]}; } +# The cache needs two branches: 's' for strings and 'c' for code. The +# emtpy loop is different in these two cases. +sub clearcache { delete $cache{"$_[0]c"}; delete $cache{"$_[0]s"}; } sub clearallcache { %cache = (); } sub enablecache { $cache = 1; } sub disablecache { $cache = 0; } @@ -288,6 +398,7 @@ sub cpu_p { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $pu+$ps ; } sub cpu_c { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $cu+$cs ; } sub cpu_a { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $pu+$ps+$cu+$cs ; } sub real { my($r,$pu,$ps,$cu,$cs) = @{$_[0]}; $r ; } +sub iters { $_[0]->[5] ; } sub timediff { my($a, $b) = @_; @@ -312,19 +423,19 @@ sub timestr { my @t = @$tr; warn "bad time value (@t)" unless @t==6; my($r, $pu, $ps, $cu, $cs, $n) = @t; - my($pt, $ct, $t) = ($tr->cpu_p, $tr->cpu_c, $tr->cpu_a); + my($pt, $ct, $tt) = ($tr->cpu_p, $tr->cpu_c, $tr->cpu_a); $f = $defaultfmt unless defined $f; # format a time in the required style, other formats may be added here $style ||= $defaultstyle; $style = ($ct>0) ? 'all' : 'noc' if $style eq 'auto'; my $s = "@t $style"; # default for unknown style $s=sprintf("%2d wallclock secs (%$f usr %$f sys + %$f cusr %$f csys = %$f CPU)", - @t,$t) if $style eq 'all'; + $r,$pu,$ps,$cu,$cs,$tt) if $style eq 'all'; $s=sprintf("%2d wallclock secs (%$f usr + %$f sys = %$f CPU)", $r,$pu,$ps,$pt) if $style eq 'noc'; $s=sprintf("%2d wallclock secs (%$f cusr + %$f csys = %$f CPU)", $r,$cu,$cs,$ct) if $style eq 'nop'; - $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $n; + $s .= sprintf(" @ %$f/s (n=$n)", $n / ( $pu + $ps )) if $n && $pu+$ps; $s; } @@ -362,11 +473,17 @@ sub runloop { croak "runloop unable to compile '$c': $@\ncode: $subcode\n" if $@; print STDERR "runloop $n '$subcode'\n" if $debug; - $t0 = Benchmark->new(0); + # Wait for the user timer to tick. This makes the error range more like + # -0.01, +0. If we don't wait, then it's more like -0.01, +0.01. This + # may not seem important, but it significantly reduces the chances of + # getting a too low initial $n in the initial, 'find the minimum' loop + # in &countit. This, in turn, can reduce the number of calls to + # &runloop a lot, and thus reduce additive errors. + my $tbase = Benchmark->new(0)->[1]; + while ( ( $t0 = Benchmark->new(0) )->[1] == $tbase ) {} ; &$subref; $t1 = Benchmark->new($n); $td = &timediff($t1, $t0); - timedebug("runloop:",$td); $td; } @@ -377,18 +494,20 @@ sub timeit { my($wn, $wc, $wd); printf STDERR "timeit $n $code\n" if $debug; - - if ($cache && exists $cache{$n}) { - $wn = $cache{$n}; + my $cache_key = $n . ( ref( $code ) ? 'c' : 's' ); + if ($cache && exists $cache{$cache_key} ) { + $wn = $cache{$cache_key}; } else { - $wn = &runloop($n, ''); - $cache{$n} = $wn; + $wn = &runloop($n, ref( $code ) ? sub { undef } : '' ); + # Can't let our baseline have any iterations, or they get subtracted + # out of the result. + $wn->[5] = 0; + $cache{$cache_key} = $wn; } $wc = &runloop($n, $code); $wd = timediff($wc, $wn); - timedebug("timeit: ",$wc); timedebug(" - ",$wn); timedebug(" = ",$wd); @@ -400,8 +519,9 @@ sub timeit { my $default_for = 3; my $min_for = 0.1; -sub runfor { - my ($code, $tmax) = @_; + +sub countit { + my ( $tmax, $code ) = @_; if ( not defined $tmax or $tmax == 0 ) { $tmax = $default_for; @@ -409,53 +529,61 @@ sub runfor { $tmax = -$tmax; } - die "runfor(..., $tmax): timelimit cannot be less than $min_for.\n" + die "countit($tmax, ...): timelimit cannot be less than $min_for.\n" if $tmax < $min_for; - my ($n, $td, $tc, $ntot, $rtot, $utot, $stot, $cutot, $cstot ); + my ($n, $tc); - # First find the minimum $n that gives a non-zero timing. - - my $nmin; + # First find the minimum $n that gives a significant timing. + for ($n = 1; ; $n *= 2 ) { + my $td = timeit($n, $code); + $tc = $td->[1] + $td->[2]; + last if $tc > 0.1; + } - for ($n = 1, $tc = 0; $tc <= 0; $n *= 2 ) { - $td = timeit($n, $code); + my $nmin = $n; + + # Get $n high enough that we can guess the final $n with some accuracy. + my $tpra = 0.1 * $tmax; # Target/time practice. + while ( $tc < $tpra ) { + # The 5% fudge is to keep us from iterating again all + # that often (this speeds overall responsiveness when $tmax is big + # and we guess a little low). This does not noticably affect + # accuracy since we're not couting these times. + $n = int( $tpra * 1.05 * $n / $tc ); # Linear approximation. + my $td = timeit($n, $code); $tc = $td->[1] + $td->[2]; } - $nmin = $n; + # Now, do the 'for real' timing(s), repeating until we exceed + # the max. + my $ntot = 0; + my $rtot = 0; + my $utot = 0.0; + my $stot = 0.0; + my $cutot = 0.0; + my $cstot = 0.0; + my $ttot = 0.0; - my $ttot = 0; - my $tpra = 0.05 * $tmax; # Target/time practice. + # The 5% fudge is because $n is often a few % low even for routines + # with stable times and avoiding extra timeit()s is nice for + # accuracy's sake. + $n = int( $n * ( 1.05 * $tmax / $tc ) ); - # Double $n until we have think we have practiced enough. - for ( $n = 1; $ttot < $tpra; $n *= 2 ) { - $td = timeit($n, $code); - $tc = $td->cpu_p; - $ntot += $n; - $rtot += $td->[0]; - $utot += $td->[1]; - $stot += $td->[2]; - $ttot = $utot + $stot; + while () { + my $td = timeit($n, $code); + $ntot += $n; + $rtot += $td->[0]; + $utot += $td->[1]; + $stot += $td->[2]; $cutot += $td->[3]; $cstot += $td->[4]; - } + $ttot = $utot + $stot; + last if $ttot >= $tmax; - my $r; - - # Then iterate towards the $tmax. - while ( $ttot < $tmax ) { - $r = $tmax / $ttot - 1; # Linear approximation. - $n = int( $r * $n ); + my $r = $tmax / $ttot - 1; # Linear approximation. + $n = int( $r * $ntot ); $n = $nmin if $n < $nmin; - $td = timeit($n, $code); - $ntot += $n; - $rtot += $td->[0]; - $utot += $td->[1]; - $stot += $td->[2]; - $ttot = $utot + $stot; - $cutot += $td->[3]; - $cstot += $td->[4]; } return bless [ $rtot, $utot, $stot, $cutot, $cstot, $ntot ]; @@ -478,14 +606,14 @@ sub timethis{ $title = "timethis $n" unless defined $title; } else { $fort = n_to_for( $n ); - $t = runfor($code, $fort); + $t = countit( $fort, $code ); $title = "timethis for $fort" unless defined $title; $forn = $t->[-1]; } local $| = 1; $style = "" unless defined $style; - printf("%10s: ", $title); - print timestr($t, $style, $defaultfmt),"\n"; + printf("%10s: ", $title) unless $style eq 'none'; + print timestr($t, $style, $defaultfmt),"\n" unless $style eq 'none'; $n = $forn if defined $forn; @@ -505,25 +633,163 @@ sub timethese{ unless ref $alt eq HASH; my @names = sort keys %$alt; $style = "" unless defined $style; - print "Benchmark: "; + print "Benchmark: " unless $style eq 'none'; if ( $n > 0 ) { croak "non-integer loopcount $n, stopped" if int($n)<$n; - print "timing $n iterations of"; + print "timing $n iterations of" unless $style eq 'none'; } else { - print "running"; + print "running" unless $style eq 'none'; } - print " ", join(', ',@names); + print " ", join(', ',@names) unless $style eq 'none'; unless ( $n > 0 ) { my $for = n_to_for( $n ); - print ", each for at least $for CPU seconds"; + print ", each for at least $for CPU seconds" unless $style eq 'none'; } - print "...\n"; + print "...\n" unless $style eq 'none'; # we could save the results in an array and produce a summary here # sum, min, max, avg etc etc + my %results; foreach my $name (@names) { - timethis ($n, $alt -> {$name}, $name, $style); + $results{$name} = timethis ($n, $alt -> {$name}, $name, $style); } + + return \%results; } +sub cmpthese{ + my $results = ref $_[0] ? $_[0] : timethese( @_ ); + + return $results + if defined $_[2] && $_[2] eq 'none'; + + # Flatten in to an array of arrays with the name as the first field + my @vals = map{ [ $_, @{$results->{$_}} ] } keys %$results; + + for (@vals) { + # The epsilon fudge here is to prevent div by 0. Since clock + # resolutions are much larger, it's below the noise floor. + my $rate = $_->[6] / ( $_->[2] + $_->[3] + 0.000000000000001 ); + $_->[7] = $rate; + } + + # Sort by rate + @vals = sort { $a->[7] <=> $b->[7] } @vals; + + # If more than half of the rates are greater than one... + my $display_as_rate = $vals[$#vals>>1]->[7] > 1; + + my @rows; + my @col_widths; + + my @top_row = ( + '', + $display_as_rate ? 'Rate' : 's/iter', + map { $_->[0] } @vals + ); + + push @rows, \@top_row; + @col_widths = map { length( $_ ) } @top_row; + + # Build the data rows + # We leave the last column in even though it never has any data. Perhaps + # it should go away. Also, perhaps a style for a single column of + # percentages might be nice. + for my $row_val ( @vals ) { + my @row; + + # Column 0 = test name + push @row, $row_val->[0]; + $col_widths[0] = length( $row_val->[0] ) + if length( $row_val->[0] ) > $col_widths[0]; + + # Column 1 = performance + my $row_rate = $row_val->[7]; + + # We assume that we'll never get a 0 rate. + my $a = $display_as_rate ? $row_rate : 1 / $row_rate; + + # Only give a few decimal places before switching to sci. notation, + # since the results aren't usually that accurate anyway. + my $format = + $a >= 100 ? + "%0.0f" : + $a >= 10 ? + "%0.1f" : + $a >= 1 ? + "%0.2f" : + $a >= 0.1 ? + "%0.3f" : + "%0.2e"; + + $format .= "/s" + if $display_as_rate; + # Using $b here due to optimizing bug in _58 through _61 + my $b = sprintf( $format, $a ); + push @row, $b; + $col_widths[1] = length( $b ) + if length( $b ) > $col_widths[1]; + + # Columns 2..N = performance ratios + my $skip_rest = 0; + for ( my $col_num = 0 ; $col_num < @vals ; ++$col_num ) { + my $col_val = $vals[$col_num]; + my $out; + if ( $skip_rest ) { + $out = ''; + } + elsif ( $col_val->[0] eq $row_val->[0] ) { + $out = "--"; + # $skip_rest = 1; + } + else { + my $col_rate = $col_val->[7]; + $out = sprintf( "%.0f%%", 100*$row_rate/$col_rate - 100 ); + } + push @row, $out; + $col_widths[$col_num+2] = length( $out ) + if length( $out ) > $col_widths[$col_num+2]; + + # A little wierdness to set the first column width properly + $col_widths[$col_num+2] = length( $col_val->[0] ) + if length( $col_val->[0] ) > $col_widths[$col_num+2]; + } + push @rows, \@row; + } + + # Equalize column widths in the chart as much as possible without + # exceeding 80 characters. This does not use or affect cols 0 or 1. + my @sorted_width_refs = + sort { $$a <=> $$b } map { \$_ } @col_widths[2..$#col_widths]; + my $max_width = ${$sorted_width_refs[-1]}; + + my $total = @col_widths - 1 ; + for ( @col_widths ) { $total += $_ } + + STRETCHER: + while ( $total < 80 ) { + my $min_width = ${$sorted_width_refs[0]}; + last + if $min_width == $max_width; + for ( @sorted_width_refs ) { + last + if $$_ > $min_width; + ++$$_; + ++$total; + last STRETCHER + if $total >= 80; + } + } + + # Dump the output + my $format = join( ' ', map { "%${_}s" } @col_widths ) . "\n"; + substr( $format, 1, 0 ) = '-'; + for ( @rows ) { + printf $format, @$_; + } + + return $results; +} + + 1; diff --git a/contrib/perl5/lib/CGI.pm b/contrib/perl5/lib/CGI.pm index f5615f268bee..3e032578b206 100644 --- a/contrib/perl5/lib/CGI.pm +++ b/contrib/perl5/lib/CGI.pm @@ -17,8 +17,8 @@ require 5.004; # The most recent version and complete docs are available at: # http://stein.cshl.org/WWW/software/CGI/ -$CGI::revision = '$Id: CGI.pm,v 1.5 1998/12/06 10:19:48 lstein Exp $'; -$CGI::VERSION='2.46'; +$CGI::revision = '$Id: CGI.pm,v 1.19 1999/08/31 17:04:37 lstein Exp $'; +$CGI::VERSION='2.56'; # HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES. # UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING. @@ -58,6 +58,9 @@ sub initialize_globals { # Change this to 1 to disable uploads entirely: $DISABLE_UPLOADS = 0; + # Automatically determined -- don't change + $EBCDIC = 0; + # Change this to 1 to suppress redundant HTTP headers $HEADERS_ONCE = 0; @@ -89,9 +92,13 @@ unless ($OS) { } } if ($OS=~/Win/i) { - $OS = 'WINDOWS'; + $OS = 'WINDOWS'; } elsif ($OS=~/vms/i) { - $OS = 'VMS'; + $OS = 'VMS'; +} elsif ($OS=~/bsdos/i) { + $OS = 'UNIX'; +} elsif ($OS=~/dos/i) { + $OS = 'DOS'; } elsif ($OS=~/^MacOS$/i) { $OS = 'MACINTOSH'; } elsif ($OS=~/os2/i) { @@ -101,7 +108,7 @@ if ($OS=~/Win/i) { } # Some OS logic. Binary mode enabled on DOS, NT and VMS -$needs_binmode = $OS=~/^(WINDOWS|VMS|OS2)/; +$needs_binmode = $OS=~/^(WINDOWS|DOS|OS2|MSWin)/; # This is the default class for the CGI object to use when all else fails. $DefaultClass = 'CGI' unless defined $CGI::DefaultClass; @@ -112,7 +119,7 @@ $AutoloadClass = $DefaultClass unless defined $CGI::AutoloadClass; # The path separator is a slash, backslash or semicolon, depending # on the paltform. $SL = { - UNIX=>'/', OS2=>'\\', WINDOWS=>'\\', MACINTOSH=>':', VMS=>'/' + UNIX=>'/', OS2=>'\\', WINDOWS=>'\\', DOS=>'\\', MACINTOSH=>':', VMS=>'/' }->{$OS}; # This no longer seems to be necessary @@ -123,7 +130,7 @@ $IIS++ if defined($ENV{'SERVER_SOFTWARE'}) && $ENV{'SERVER_SOFTWARE'}=~/IIS/; # Turn on special checking for Doug MacEachern's modperl if (exists $ENV{'GATEWAY_INTERFACE'} && - ($MOD_PERL = $ENV{'GATEWAY_INTERFACE'} =~ /^CGI-Perl/)) + ($MOD_PERL = $ENV{'GATEWAY_INTERFACE'} =~ /^CGI-Perl\//)) { $| = 1; require Apache; @@ -139,11 +146,32 @@ $PERLEX++ if defined($ENV{'GATEWAY_INTERFACE'}) && $ENV{'GATEWAY_INTERFACE'} =~ # really annoying. $EBCDIC = "\t" ne "\011"; if ($OS eq 'VMS') { - $CRLF = "\n"; + $CRLF = "\n"; } elsif ($EBCDIC) { - $CRLF= "\r\n"; + $CRLF= "\r\n"; } else { - $CRLF = "\015\012"; + $CRLF = "\015\012"; +} + +if ($EBCDIC) { +@A2E = ( + 0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 21, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31, + 64, 90,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97, +240,241,242,243,244,245,246,247,248,249,122, 94, 76,126,110,111, +124,193,194,195,196,197,198,199,200,201,209,210,211,212,213,214, +215,216,217,226,227,228,229,230,231,232,233,173,224,189, 95,109, +121,129,130,131,132,133,134,135,136,137,145,146,147,148,149,150, +151,152,153,162,163,164,165,166,167,168,169,192, 79,208,161, 7, + 32, 33, 34, 35, 36, 37, 6, 23, 40, 41, 42, 43, 44, 9, 10, 27, + 48, 49, 26, 51, 52, 53, 54, 8, 56, 57, 58, 59, 4, 20, 62,255, + 65,170, 74,177,159,178,106,181,187,180,154,138,176,202,175,188, +144,143,234,250,190,160,182,179,157,218,155,139,183,184,185,171, +100,101, 98,102, 99,103,158,104,116,113,114,115,120,117,118,119, +172,105,237,238,235,239,236,191,128,253,254,251,252,186,174, 89, + 68, 69, 66, 70, 67, 71,156, 72, 84, 81, 82, 83, 88, 85, 86, 87, +140, 73,205,206,203,207,204,225,112,221,222,219,220,141,142,223 + ); } if ($needs_binmode) { @@ -164,15 +192,16 @@ if ($needs_binmode) { submit reset defaults radio_group popup_menu button autoEscape scrolling_list image_button start_form end_form startform endform start_multipart_form end_multipart_form isindex tmpFileName uploadInfo URL_ENCODED MULTIPART/], - ':cgi'=>[qw/param path_info path_translated url self_url script_name cookie Dump - raw_cookie request_method query_string Accept user_agent remote_host + ':cgi'=>[qw/param upload path_info path_translated url self_url script_name cookie Dump + raw_cookie request_method query_string Accept user_agent remote_host content_type remote_addr referer server_name server_software server_port server_protocol virtual_host remote_ident auth_type http use_named_parameters save_parameters restore_parameters param_fetch - remote_user user_name header redirect import_names put Delete Delete_all url_param/], + remote_user user_name header redirect import_names put + Delete Delete_all url_param cgi_error/], ':ssl' => [qw/https/], ':imagemap' => [qw/Area Map/], - ':cgi-lib' => [qw/ReadParse PrintHeader HtmlTop HtmlBot SplitParam/], + ':cgi-lib' => [qw/ReadParse PrintHeader HtmlTop HtmlBot SplitParam Vars/], ':html' => [qw/:html2 :html3 :netscape/], ':standard' => [qw/:html2 :html3 :form :cgi/], ':push' => [qw/multipart_init multipart_start multipart_end/], @@ -328,7 +357,7 @@ sub init { # if we get called more than once, we want to initialize # ourselves from the original query (which may be gone # if it was read from STDIN originally.) - if (defined(@QUERY_PARAM) && !defined($initializer)) { + if (@QUERY_PARAM && !defined($initializer)) { foreach (@QUERY_PARAM) { $self->param('-name'=>$_,'-value'=>$QUERY_PARAM{$_}); } @@ -337,12 +366,17 @@ sub init { $meth=$ENV{'REQUEST_METHOD'} if defined($ENV{'REQUEST_METHOD'}); $content_length = defined($ENV{'CONTENT_LENGTH'}) ? $ENV{'CONTENT_LENGTH'} : 0; - die "Client attempted to POST $content_length bytes, but POSTs are limited to $POST_MAX" - if ($POST_MAX > 0) && ($content_length > $POST_MAX); + $fh = to_filehandle($initializer) if $initializer; METHOD: { + # avoid unreasonably large postings + if (($POST_MAX > 0) && ($content_length > $POST_MAX)) { + $self->cgi_error("413 Request entity too large"); + last METHOD; + } + # Process multipart postings, but only if the initializer is # not defined. if ($meth eq 'POST' @@ -394,7 +428,11 @@ sub init { # If method is GET or HEAD, fetch the query from # the environment. if ($meth=~/^(GET|HEAD)$/) { - $query_string = $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'}; + if ($MOD_PERL) { + $query_string = Apache->request->args; + } else { + $query_string = $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'}; + } last METHOD; } @@ -417,7 +455,7 @@ sub init { # We now have the query string in hand. We do slightly # different things for keyword lists and parameter lists. - if ($query_string ne '') { + if (defined $query_string && $query_string) { if ($query_string =~ /=/) { $self->parse_params($query_string); } else { @@ -473,23 +511,34 @@ sub print { CORE::print(@_); } +# get/set last cgi_error +sub cgi_error { + my ($self,$err) = self_or_default(@_); + $self->{'.cgi_error'} = $err if defined $err; + return $self->{'.cgi_error'}; +} + # unescape URL-encoded data sub unescape { - shift() if ref($_[0]); - my $todecode = shift; - return undef unless defined($todecode); - $todecode =~ tr/+/ /; # pluses become spaces - $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; - return $todecode; + shift() if ref($_[0]) || (defined $_[1] && $_[0] eq $DefaultClass); + my $todecode = shift; + return undef unless defined($todecode); + $todecode =~ tr/+/ /; # pluses become spaces + if ($EBCDIC) { + $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",$A2E[hex($1)])/ge; + } else { + $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; + } + return $todecode; } # URL-encode data sub escape { - shift() if ref($_[0]) || $_[0] eq $DefaultClass; - my $toencode = shift; - return undef unless defined($toencode); - $toencode=~s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg; - return $toencode; + shift() if ref($_[0]) || (defined $_[1] && $_[0] eq $DefaultClass); + my $toencode = shift; + return undef unless defined($toencode); + $toencode=~s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg; + return $toencode; } sub save_request { @@ -536,10 +585,10 @@ sub binmode { sub _make_tag_func { my ($self,$tagname) = @_; - my $func = qq# + my $func = qq( sub $tagname { shift if \$_[0] && - (!ref(\$_[0]) && \$_[0] eq \$CGI::DefaultClass) || +# (!ref(\$_[0]) && \$_[0] eq \$CGI::DefaultClass) || (ref(\$_[0]) && (substr(ref(\$_[0]),0,3) eq 'CGI' || UNIVERSAL::isa(\$_[0],'CGI'))); @@ -549,7 +598,7 @@ sub _make_tag_func { my(\@attr) = make_attributes( '',shift() ); \$attr = " \@attr" if \@attr; } - #; + ); if ($tagname=~/start_(\w+)/i) { $func .= qq! return "<\U$1\E\$attr>";} !; } elsif ($tagname=~/end_(\w+)/i) { @@ -650,7 +699,7 @@ sub _compile { die $@; } } - delete($sub->{$func_name}); #free storage + CORE::delete($sub->{$func_name}); #free storage return "$pack\:\:$func_name"; } @@ -746,8 +795,8 @@ END_OF_FUNC #### sub delete { my($self,$name) = self_or_default(@_); - delete $self->{$name}; - delete $self->{'.fieldnames'}->{$name}; + CORE::delete $self->{$name}; + CORE::delete $self->{'.fieldnames'}->{$name}; @{$self->{'.parameters'}}=grep($_ ne $name,$self->param()); return wantarray ? () : undef; } @@ -762,7 +811,7 @@ sub import_names { my($self,$namespace,$delete) = self_or_default(@_); $namespace = 'Q' unless defined($namespace); die "Can't import names into \"main\"\n" if \%{"${namespace}::"} == \%::; - if ($delete || $MOD_PERL) { + if ($delete || $MOD_PERL || exists $ENV{'FCGI_ROLE'}) { # can anyone find an easier way to do this? foreach (keys %{"${namespace}::"}) { local *symbol = "${namespace}::${_}"; @@ -793,12 +842,24 @@ END_OF_FUNC sub keywords { my($self,@values) = self_or_default(@_); # If values is provided, then we set it. - $self->{'keywords'}=[@values] if defined(@values); + $self->{'keywords'}=[@values] if @values; my(@result) = defined($self->{'keywords'}) ? @{$self->{'keywords'}} : (); @result; } END_OF_FUNC +# These are some tie() interfaces for compatibility +# with Steve Brenner's cgi-lib.pl routines +'Vars' => <<'END_OF_FUNC', +sub Vars { + my $q = shift; + my %in; + tie(%in,CGI,$q); + return %in if wantarray; + return \%in; +} +END_OF_FUNC + # These are some tie() interfaces for compatibility # with Steve Brenner's cgi-lib.pl routines 'ReadParse' => <<'END_OF_FUNC', @@ -858,7 +919,8 @@ END_OF_FUNC 'TIEHASH' => <<'END_OF_FUNC', sub TIEHASH { - return $Q || new CGI; + return $_[1] if defined $_[1]; + return $Q || new shift; } END_OF_FUNC @@ -1031,6 +1093,7 @@ sub dump { push(@result,"

        "); foreach $value ($self->param($param)) { $value = $self->escapeHTML($value); + $value =~ s/\n/
        \n/g; push(@result,"
      • $value"); } push(@result,"
      "); @@ -1065,7 +1128,7 @@ sub save { my($escaped_param) = escape($param); my($value); foreach $value ($self->param($param)) { - print $filehandle "$escaped_param=",escape($value),"\n"; + print $filehandle "$escaped_param=",escape("$value"),"\n"; } } print $filehandle "=\n"; # end of record @@ -1327,7 +1390,7 @@ sub _style { '-foo'=>'bar', # a trick to allow the '-' to be omitted ref($style) eq 'ARRAY' ? @$style : %$style); $type = $stype if $stype; - push(@result,qq//) if $src; + push(@result,qq//) if $src; push(@result,style({'type'=>$type},"")) if $code; } else { push(@result,style({'type'=>$type},"")); @@ -1348,7 +1411,7 @@ sub _script { ($src,$code,$language) = $self->rearrange([SRC,CODE,LANGUAGE], '-foo'=>'bar', # a trick to allow the '-' to be omitted - ref($style) eq 'ARRAY' ? @$script : %$script); + ref($script) eq 'ARRAY' ? @$script : %$script); } else { ($src,$code,$language) = ('',$script,'JavaScript'); @@ -1360,7 +1423,7 @@ sub _script { if $code && $language=~/javascript/i; $code = "" if $code && $language=~/perl/i; - push(@result,script({@satts},$code)); + push(@result,script({@satts},$code || '')); } @result; } @@ -1460,7 +1523,8 @@ END_OF_FUNC 'endform' => <<'END_OF_FUNC', sub endform { my($self,@p) = self_or_default(@_); - return ($self->get_fields,""); + return wantarray ? ($self->get_fields,"") : + $self->get_fields ."\n"; } END_OF_FUNC @@ -1727,9 +1791,7 @@ sub checkbox { $the_label = $self->escapeHTML($the_label); my($other) = @other ? " @other" : ''; $self->register_parameter($name); - return <$the_label -END + return qq{$the_label}; } END_OF_FUNC @@ -1800,8 +1862,7 @@ END_OF_FUNC # Escape HTML -- used internally 'escapeHTML' => <<'END_OF_FUNC', sub escapeHTML { - my($self,$toencode) = @_; - $toencode = $self unless ref($self); + my ($self,$toencode) = self_or_default(@_); return undef unless defined($toencode); return $toencode if ref($self) && $self->{'dontescape'}; @@ -1849,14 +1910,14 @@ sub _tableize { # rearrange into a pretty table $result = ""; my($row,$column); - unshift(@$colheaders,'') if defined(@$colheaders) && defined(@$rowheaders); - $result .= "" if defined(@{$colheaders}); + unshift(@$colheaders,'') if @$colheaders && @$rowheaders; + $result .= "" if @$colheaders; foreach (@{$colheaders}) { $result .= ""; } for ($row=0;$row<$rows;$row++) { $result .= ""; - $result .= "" if defined(@$rowheaders); + $result .= "" if @$rowheaders; for ($column=0;$column<$columns;$column++) { $result .= "" if defined($elements[$column*$rows + $row]); @@ -2069,7 +2130,7 @@ sub hidden { $name=$self->escapeHTML($name); foreach (@value) { - $_=$self->escapeHTML($_); + $_ = defined($_) ? $self->escapeHTML($_) : ''; push(@result,qq//); } return wantarray ? @result : join('',@result); @@ -2135,6 +2196,20 @@ sub url { my $url; $full++ if !($relative || $absolute); + my $path = $self->path_info; + my $script_name; + if (exists($ENV{REQUEST_URI})) { + my $index; + $script_name = $ENV{REQUEST_URI}; + # strip query string + substr($script_name,$index) = '' if ($index = index($script_name,'?')) >= 0; + # and path + substr($script_name,$index) = '' if exists($ENV{PATH_INFO}) + and ($index = rindex($script_name,$ENV{PATH_INFO})) >= 0; + } else { + $script_name = $self->script_name; + } + if ($full) { my $protocol = $self->protocol(); $url = "$protocol://"; @@ -2148,13 +2223,13 @@ sub url { unless (lc($protocol) eq 'http' && $port == 80) || (lc($protocol) eq 'https' && $port == 443); } - $url .= $self->script_name; + $url .= $script_name; } elsif ($relative) { - ($url) = $self->script_name =~ m!([^/]+)$!; + ($url) = $script_name =~ m!([^/]+)$!; } elsif ($absolute) { - $url = $self->script_name; + $url = $script_name; } - $url .= $self->path_info if $path_info and $self->path_info; + $url .= $path if $path_info and defined $path; $url .= "?" . $self->query_string if $query and $self->query_string; return $url; } @@ -2206,7 +2281,7 @@ sub cookie { push(@param,'-expires'=>$expires) if $expires; push(@param,'-secure'=>$secure) if $secure; - return new CGI::Cookie(@param); + return CGI::Cookie->new(@param); } END_OF_FUNC @@ -2236,6 +2311,8 @@ sub expire_calc { my($offset); if (!$time || (lc($time) eq 'now')) { $offset = 0; + } elsif ($time=~/^\d+/) { + return $time; } elsif ($time=~/^([+-]?(?:\d+|\d*\.\d*))([mhdMy]?)/) { $offset = ($mult{$2} || 1)*$1; } else { @@ -2247,7 +2324,7 @@ END_OF_FUNC # This internal routine creates date strings suitable for use in # cookies and HTTP headers. (They differ, unfortunately.) -# Thanks to Fisher Mark for this. +# Thanks to Mark Fisher for this. 'expires' => <<'END_OF_FUNC', sub expires { my($time,$format) = @_; @@ -2330,6 +2407,15 @@ sub request_method { } END_OF_FUNC +#### Method: content_type +# Returns the content_type string +#### +'content_type' => <<'END_OF_FUNC', +sub content_type { + return $ENV{'CONTENT_TYPE'}; +} +END_OF_FUNC + #### Method: path_translated # Return the physical path information provided # by the URL (if any) @@ -2353,6 +2439,7 @@ sub query_string { my($eparam) = escape($param); foreach $value ($self->param($param)) { $value = escape($value); + next unless defined $value; push(@pairs,"$eparam=$value"); } } @@ -2556,6 +2643,7 @@ END_OF_FUNC sub http { my ($self,$parameter) = self_or_CGI(@_); return $ENV{$parameter} if $parameter=~/^HTTP/; + $parameter =~ tr/-/_/; return $ENV{"HTTP_\U$parameter\E"} if $parameter; my(@p); foreach (keys %ENV) { @@ -2574,6 +2662,7 @@ sub https { my ($self,$parameter) = self_or_CGI(@_); return $ENV{HTTPS} unless $parameter; return $ENV{$parameter} if $parameter=~/^HTTPS/; + $parameter =~ tr/-/_/; return $ENV{"HTTPS_\U$parameter\E"} if $parameter; my(@p); foreach (keys %ENV) { @@ -2754,7 +2843,11 @@ sub read_multipart { my $filenumber = 0; while (!$buffer->eof) { %header = $buffer->readHeader; - die "Malformed multipart POST\n" unless %header; + + unless (%header) { + $self->cgi_error("400 Bad request (malformed multipart POST)"); + return; + } my($param)= $header{'Content-Disposition'}=~/ name="?([^\";]*)"?/; @@ -2766,7 +2859,7 @@ sub read_multipart { # If no filename specified, then just read the data and assign it # to our parameter list. - unless ($filename) { + if ( !defined($filename) || $filename eq '' ) { my($value) = $buffer->readBody; push(@{$self->{$param}},$value); next; @@ -2784,13 +2877,16 @@ sub read_multipart { last UPLOADS; } - $tmpfile = new TempFile; - $tmp = $tmpfile->as_string; - - $filehandle = Fh->new($filename,$tmp,$PRIVATE_TEMPFILES); - + # choose a relatively unpredictable tmpfile sequence number + my $seqno = unpack("%16C*",join('',localtime,values %ENV)); + for (my $cnt=10;$cnt>0;$cnt--) { + next unless $tmpfile = new TempFile($seqno); + $tmp = $tmpfile->as_string; + last if defined($filehandle = Fh->new($filename,$tmp,$PRIVATE_TEMPFILES)); + $seqno += int rand(100); + } + die "CGI open of tmpfile: $!\n" unless $filehandle; $CGI::DefaultClass->binmode($filehandle) if $CGI::needs_binmode; - chmod 0600,$tmp; # only the owner can tamper with it my ($data); local($\) = ''; @@ -2804,7 +2900,7 @@ sub read_multipart { # Save some information about the uploaded file where we can get # at it later. - $self->{'.tmpfiles'}->{$filename}= { + $self->{'.tmpfiles'}->{fileno($filehandle)}= { name => $tmpfile, info => {%header}, }; @@ -2814,11 +2910,21 @@ sub read_multipart { } END_OF_FUNC +'upload' =><<'END_OF_FUNC', +sub upload { + my($self,$param_name) = self_or_default(@_); + my $param = $self->param($param_name); + return unless $param; + return unless ref($param) && fileno($param); + return $param; +} +END_OF_FUNC + 'tmpFileName' => <<'END_OF_FUNC', sub tmpFileName { my($self,$filename) = self_or_default(@_); - return $self->{'.tmpfiles'}->{$filename}->{name} ? - $self->{'.tmpfiles'}->{$filename}->{name}->as_string + return $self->{'.tmpfiles'}->{fileno($filename)}->{name} ? + $self->{'.tmpfiles'}->{fileno($filename)}->{name}->as_string : ''; } END_OF_FUNC @@ -2826,7 +2932,7 @@ END_OF_FUNC 'uploadInfo' => <<'END_OF_FUNC', sub uploadInfo { my($self,$filename) = self_or_default(@_); - return $self->{'.tmpfiles'}->{$filename}->{info}; + return $self->{'.tmpfiles'}->{fileno($filename)}->{info}; } END_OF_FUNC @@ -2878,7 +2984,7 @@ $AUTOLOADED_ROUTINES=<<'END_OF_AUTOLOAD'; sub asString { my $self = shift; # get rid of package name - (my $i = $$self) =~ s/^\*(\w+::)+//; + (my $i = $$self) =~ s/^\*(\w+::fh\d{5})+//; $i =~ s/\\(.)/$1/g; return $i; # BEGIN DEAD CODE @@ -2904,12 +3010,10 @@ END_OF_FUNC sub new { my($pack,$name,$file,$delete) = @_; require Fcntl unless defined &Fcntl::O_RDWR; - ++$FH; - my $ref = \*{'Fh::' . quotemeta($name)}; - sysopen($ref,$file,Fcntl::O_RDWR()|Fcntl::O_CREAT()|Fcntl::O_EXCL()) - || die "CGI open of $file: $!\n"; + my $ref = \*{'Fh::' . ++$FH . quotemeta($name)}; + sysopen($ref,$file,Fcntl::O_RDWR()|Fcntl::O_CREAT()|Fcntl::O_EXCL(),0600) || return; unlink($file) if $delete; - delete $Fh::{$FH}; + CORE::delete $Fh::{$FH}; return bless $ref,$pack; } END_OF_FUNC @@ -2976,7 +3080,7 @@ sub new { # BUG: IE 3.01 on the Macintosh uses just the boundary -- not # the two extra hyphens. We do a special case here on the user-agent!!!! - $boundary = "--$boundary" unless CGI::user_agent('MSIE 3\.0[12]; ?Mac'); + $boundary = "--$boundary" unless CGI::user_agent('MSIE\s+3\.0[12];\s*Mac'); } else { # otherwise we find it ourselves my($old); @@ -3175,15 +3279,25 @@ $MAC = $CGI::OS eq 'MACINTOSH'; my ($vol) = $MAC ? MacPerl::Volumes() =~ /:(.*)/ : ""; unless ($TMPDIRECTORY) { @TEMP=("${SL}usr${SL}tmp","${SL}var${SL}tmp", - "C:${SL}temp","${SL}tmp","${SL}temp","${vol}${SL}Temporary Items", + "C:${SL}temp","${SL}tmp","${SL}temp", + "${vol}${SL}Temporary Items","${SL}sys\$scratch", "${SL}WWW_ROOT"); + unshift(@TEMP,$ENV{'TMPDIR'}) if exists $ENV{'TMPDIR'}; + + # + # unshift(@TEMP,(getpwuid($<))[7].'/tmp') if $CGI::OS eq 'UNIX'; + # Rob: getpwuid() is unfortunately UNIX specific. On brain dead OS'es this + # : can generate a 'getpwuid() not implemented' exception, even though + # : it's never called. Found under DOS/Win with the DJGPP perl port. + # : Refer to getpwuid() only at run-time if we're fortunate and have UNIX. + unshift(@TEMP,(eval {(getpwuid($<))[7]}).'/tmp') if $CGI::OS eq 'UNIX'; + foreach (@TEMP) { do {$TMPDIRECTORY = $_; last} if -d $_ && -w _; } } $TMPDIRECTORY = $MAC ? "" : "." unless $TMPDIRECTORY; -$SEQUENCE=0; $MAXTRIES = 5000; # cute feature, but overload implementation broke it @@ -3199,14 +3313,15 @@ $AUTOLOADED_ROUTINES=<<'END_OF_AUTOLOAD'; 'new' => <<'END_OF_FUNC', sub new { - my($package) = @_; - my $directory; - my $i; - for ($i = 0; $i < $MAXTRIES; $i++) { - $directory = sprintf("${TMPDIRECTORY}${SL}CGItemp%d%04d",${$},++$SEQUENCE); - last if ! -f $directory; + my($package,$sequence) = @_; + my $filename; + for (my $i = 0; $i < $MAXTRIES; $i++) { + last if ! -f ($filename = sprintf("${TMPDIRECTORY}${SL}CGItemp%d",$sequence++)); } - return bless \$directory; + # untaint the darn thing + return unless $filename =~ m!^([a-zA-Z0-9_ '":/\\]+)$!; + $filename = $1; + return bless \$filename; } END_OF_FUNC @@ -3240,7 +3355,6 @@ if ($^W) { $MultipartBuffer::CRLF; $MultipartBuffer::TIMEOUT; $MultipartBuffer::INITIAL_FILLUNIT; - $TempFile::SEQUENCE; EOF ; } @@ -3322,7 +3436,7 @@ script and restore it later. For example, using the object oriented style, here is how you create a simple "Hello World" HTML page: - #!/usr/local/bin/perl + #!/usr/local/bin/perl -w use CGI; # load CGI routines $q = new CGI; # create new CGI object print $q->header, # create the HTTP header @@ -3640,6 +3754,36 @@ can manipulate in any way you like. You can also use a named argument style using the B<-name> argument. +=head2 FETCHING THE PARAMETER LIST AS A HASH: + + $params = $q->Vars; + print $params->{'address'}; + @foo = split("\0",$params->{'foo'}); + %params = $q->Vars; + + use CGI ':cgi-lib'; + $params = Vars; + +Many people want to fetch the entire parameter list as a hash in which +the keys are the names of the CGI parameters, and the values are the +parameters' values. The Vars() method does this. Called in a scalar +context, it returns the parameter list as a tied hash reference. +Changing a key changes the value of the parameter in the underlying +CGI parameter list. Called in an array context, it returns the +parameter list as an ordinary hash. This allows you to read the +contents of the parameter list, but not to change it. + +When using this, the thing you must watch out for are multivalued CGI +parameters. Because a hash cannot distinguish between scalar and +array context, multivalued parameters will be returned as a packed +string, separated by the "\0" (null) character. You must split this +packed string in order to get at the individual values. This is the +convention introduced long ago by Steve Brenner in his cgi-lib.pl +module for Perl version 4. + +If you wish to use Vars() as a function, import the I<:cgi-lib> set of +function calls (also see the section on CGI-LIB compatibility). + =head2 SAVING THE STATE OF THE SCRIPT TO A FILE: $query->save(FILEHANDLE) @@ -3686,14 +3830,37 @@ a short example of creating multiple session records: The file format used for save/restore is identical to that used by the Whitehead Genome Center's data exchange format "Boulderio", and can be manipulated and even databased using Boulderio utilities. See - - http://www.genome.wi.mit.edu/genome_software/other/boulder.html + + http://stein.cshl.org/boulder/ for further details. If you wish to use this method from the function-oriented (non-OO) interface, the exported name for this method is B. +=head2 RETRIEVING CGI ERRORS + +Errors can occur while processing user input, particularly when +processing uploaded files. When these errors occur, CGI will stop +processing and return an empty parameter list. You can test for +the existence and nature of errors using the I function. +The error messages are formatted as HTTP status codes. You can either +incorporate the error text into an HTML page, or use it as the value +of the HTTP status: + + my $error = $q->cgi_error; + if ($error) { + print $q->header(-status=>$error), + $q->start_html('Problems'), + $q->h2('Request not processed'), + $q->strong($error); + exit 0; + } + +When using the function-oriented interface (see the next section), +errors may only occur the first time you call I. Be ready +for this! + =head2 USING THE FUNCTION-ORIENTED INTERFACE To use the function-oriented interface, you must specify which CGI.pm @@ -3754,7 +3921,7 @@ Import "standard" features, 'html2', 'html3', 'form' and 'cgi'. =item B<:all> Import all the available methods. For the full list, see the CGI.pm -code, where the variable %TAGS is defined. +code, where the variable %EXPORT_TAGS is defined. =back @@ -3902,20 +4069,40 @@ input, this should work: use CGI qw(-no_debug :standard); restore_parameters(join('&',@ARGV)); - + See the section on debugging for more details. =item -private_tempfiles -CGI.pm can process uploaded file. Ordinarily it spools the -uploaded file to a temporary directory, then deletes the file -when done. However, this opens the risk of eavesdropping as -described in the file upload section. -Another CGI script author could peek at this data during the -upload, even if it is confidential information. On Unix systems, -the -private_tempfiles pragma will cause the temporary file to be unlinked as soon -as it is opened and before any data is written into it, -eliminating the risk of eavesdropping. +CGI.pm can process uploaded file. Ordinarily it spools the uploaded +file to a temporary directory, then deletes the file when done. +However, this opens the risk of eavesdropping as described in the file +upload section. Another CGI script author could peek at this data +during the upload, even if it is confidential information. On Unix +systems, the -private_tempfiles pragma will cause the temporary file +to be unlinked as soon as it is opened and before any data is written +into it, reducing, but not eliminating the risk of eavesdropping +(there is still a potential race condition). To make life harder for +the attacker, the program chooses tempfile names by calculating a 32 +bit checksum of the incoming HTTP headers. + +To ensure that the temporary file cannot be read by other CGI scripts, +use suEXEC or a CGI wrapper program to run your script. The temporary +file is created with mode 0600 (neither world nor group readable). + +The temporary directory is selected using the following algorithm: + + 1. if the current user (e.g. "nobody") has a directory named + "tmp" in its home directory, use that (Unix systems only). + + 2. if the environment variable TMPDIR exists, use the location + indicated. + + 3. Otherwise try the locations /usr/tmp, /var/tmp, C:\temp, + /tmp, /temp, ::Temporary Items, and \WWW_ROOT. + +Each of these locations is checked that it is a directory and is +writable. If not, the algorithm tries the next choice. =back @@ -4135,17 +4322,17 @@ You can place other arbitrary HTML elements to the section with the B<-head> tag. For example, to place the rarely-used element in the head section, use this: - print $q->start_html(-head=>Link({-rel=>'next', - -href=>'http://www.capricorn.com/s2.html'})); + print start_html(-head=>Link({-rel=>'next', + -href=>'http://www.capricorn.com/s2.html'})); To incorporate multiple HTML elements into the section, just pass an array reference: - print $q->start_html(-head=>[ - Link({-rel=>'next', - -href=>'http://www.capricorn.com/s2.html'}), - Link({-rel=>'previous', - -href=>'http://www.capricorn.com/s1.html'}) + print start_html(-head=>[ + Link({-rel=>'next', + -href=>'http://www.capricorn.com/s2.html'}), + Link({-rel=>'previous', + -href=>'http://www.capricorn.com/s1.html'}) ] ); @@ -4205,8 +4392,8 @@ one or more of -language, -src, or -code: ); print $q->(-title=>'The Riddle of the Sphinx', - -script=>{-language=>'PERLSCRIPT'}, - -code=>'print "hello world!\n;"' + -script=>{-language=>'PERLSCRIPT', + -code=>'print "hello world!\n;"'} ); @@ -4215,19 +4402,19 @@ header. Just pass the list of script sections as an array reference. this allows you to specify different source files for different dialects of JavaScript. Example: - print $q->start_html(-title=>'The Riddle of the Sphinx', - -script=>[ - { -language => 'JavaScript1.0', - -src => '/javascript/utilities10.js' + print $q->start_html(-title=>'The Riddle of the Sphinx', + -script=>[ + { -language => 'JavaScript1.0', + -src => '/javascript/utilities10.js' }, - { -language => 'JavaScript1.1', - -src => '/javascript/utilities11.js' + { -language => 'JavaScript1.1', + -src => '/javascript/utilities11.js' }, - { -language => 'JavaScript1.2', - -src => '/javascript/utilities12.js' + { -language => 'JavaScript1.2', + -src => '/javascript/utilities12.js' }, - { -language => 'JavaScript28.2', - -src => '/javascript/utilities219.js' + { -language => 'JavaScript28.2', + -src => '/javascript/utilities219.js' } ] ); @@ -4382,7 +4569,7 @@ This example shows how to use the HTML methods: print $q->blockquote( "Many years ago on the island of", $q->a({href=>"http://crete.org/"},"Crete"), - "there lived a minotaur named", + "there lived a Minotaur named", $q->strong("Fred."), ), $q->hr; @@ -4429,7 +4616,7 @@ and values of the associative array become the HTML tag's attributes: "Open a new frame"); Open a new frame - + You may dispense with the dashes in front of the attribute names if you prefer: @@ -4447,7 +4634,7 @@ Prior to CGI.pm version 2.41, providing an empty ('') string as an attribute argument was the same as providing undef. However, this has changed in order to accommodate those who want to create tags of the form . The difference is shown in these two pieces of code: - + CODE RESULT img({alt=>undef}) img({alt=>''}) @@ -4581,7 +4768,7 @@ autoEscape() method with a false value immediately after creating the CGI object $query = new CGI; $query->autoEscape(undef); - + =head2 CREATING AN ISINDEX TAG @@ -4611,7 +4798,7 @@ default is to process the query with the current script. startform() will return a
      tag with the optional method, action and form encoding that you specify. The defaults are: - + method: POST action: this script enctype: application/x-www-form-urlencoded @@ -4820,23 +5007,16 @@ field will accept (-maxlength). =back When the form is processed, you can retrieve the entered filename -by calling param(). +by calling param(): $filename = $query->param('uploaded_file'); -In Netscape Navigator 2.0, the filename that gets returned is the full -local filename on the B machine. If the remote user is -on a Unix machine, the filename will follow Unix conventions: - - /path/to/the/file - -On an MS-DOS/Windows and OS/2 machines, the filename will follow DOS conventions: - - C:\PATH\TO\THE\FILE.MSW - -On a Macintosh machine, the filename will follow Mac conventions: - - HD 40:Desktop Folder:Sort Through:Reminders +Different browsers will return slightly different things for the +name. Some browsers return the filename only. Others return the full +path to the file, using the path conventions of the user's machine. +Regardless, the name returned is always the name of the file on the +I machine, and is unrelated to the name of the temporary file +that CGI.pm creates during upload spooling (see below). The filename returned is also a file handle. You can read the contents of the file using standard Perl file reading calls: @@ -4852,6 +5032,25 @@ of the file using standard Perl file reading calls: print OUTFILE $buffer; } +However, there are problems with the dual nature of the upload fields. +If you C, then Perl will complain when you try to use a +string as a filehandle. You can get around this by placing the file +reading code in a block containing the C pragma. More +seriously, it is possible for the remote user to type garbage into the +upload field, in which case what you get from param() is not a +filehandle at all, but a string. + +To be safe, use the I function (new in version 2.47). When +called with the name of an upload field, I returns a +filehandle, or undef if the parameter is not a valid filehandle. + + $fh = $query->upload('uploaded_file'); + while (<$fh>) { + print; + } + +This is the recommended idiom. + When a file is uploaded the browser usually sends along some information along with it in the format of headers. The information usually includes the MIME content type. Future browsers may send @@ -4867,7 +5066,25 @@ an associative array containing all the document headers. If you are using a machine that recognizes "text" and "binary" data modes, be sure to understand when and how to use them (see the Camel book). -Otherwise you may find that binary files are corrupted during file uploads. +Otherwise you may find that binary files are corrupted during file +uploads. + +There are occasionally problems involving parsing the uploaded file. +This usually happens when the user presses "Stop" before the upload is +finished. In this case, CGI.pm will return undef for the name of the +uploaded file and set I to the string "400 Bad request +(malformed multipart POST)". This error message is designed so that +you can incorporate it into a status code to be sent to the browser. +Example: + + $file = $query->upload('uploaded_file'); + if (!$file && $query->cgi_error) { + print $query->header(-status=>$query->cgi_error); + exit 0; + } + +You are free to create a custom HTML page to complain about the error, +if you wish. JAVASCRIPTING: The B<-onChange>, B<-onFocus>, B<-onBlur>, B<-onMouseOver>, B<-onMouseOut> and B<-onSelect> parameters are @@ -5025,7 +5242,7 @@ handlers are called. print $query->checkbox_group(-name=>'group_name', -values=>['eenie','meenie','minie','moe'], -rows=2,-columns=>2); - + checkbox_group() creates a list of checkboxes that are related by the same name. @@ -5563,7 +5780,7 @@ documentation in Netscape's home pages for details =item 2. Specify the destination for the document in the HTTP header You may provide a B<-target> parameter to the header() method: - + print $q->header(-target=>'ResultsWindow'); This will tell the browser to load the output of your script into the @@ -5700,7 +5917,7 @@ name/value pairs formatted nicely as a nested list. This is useful for debugging purposes: print $query->dump - + Produces something that looks like: @@ -5838,6 +6055,32 @@ Newer browsers do not report the user name for privacy reasons! Returns the method used to access your script, usually one of 'POST', 'GET' or 'HEAD'. +=item B + +Returns the content_type of data submitted in a POST, generally +multipart/form-data or application/x-www-form-urlencoded + +=item B + +Called with no arguments returns the list of HTTP environment +variables, including such things as HTTP_USER_AGENT, +HTTP_ACCEPT_LANGUAGE, and HTTP_ACCEPT_CHARSET, corresponding to the +like-named HTTP header fields in the request. Called with the name of +an HTTP header field, returns its value. Capitalization and the use +of hyphens versus underscores are not significant. + +For example, all three of these examples are equivalent: + + $requested_language = $q->http('Accept-language'); + $requested_language = $q->http('Accept_language'); + $requested_language = $q->http('HTTP_ACCEPT_LANGUAGE'); + +=item B + +The same as I, but operates on the HTTPS environment variables +present when the SSL protocol is in effect. Can be used to determine +whether SSL is turned on. + =back =head1 USING NPH SCRIPTS @@ -5919,7 +6162,7 @@ a second, and begins again. =over 4 =item multipart_init() - + multipart_init(-boundary=>$boundary); Initialize the multipart system. The -boundary argument specifies @@ -6014,18 +6257,31 @@ initialize_globals(). =back -Since an attempt to send a POST larger than $POST_MAX bytes -will cause a fatal error, you might want to use CGI::Carp to echo the -fatal error message to the browser window as shown in the example -above. Otherwise the remote user will see only a generic "Internal -Server" error message. See the L manual page for more -details. +An attempt to send a POST larger than $POST_MAX bytes will cause +I to return an empty CGI parameter list. You can test for +this event by checking I, either after you create the CGI +object or, if you are using the function-oriented interface, call + for the first time. If the POST was intercepted, then +cgi_error() will return the message "413 POST too large". + +This error message is actually defined by the HTTP protocol, and is +designed to be returned to the browser as the CGI script's status + code. For example: + + $uploaded_file = param('upload'); + if (!$uploaded_file && cgi_error()) { + print header(-status=>cgi_error()); + exit 0; + } + +However it isn't clear that any browser currently knows what to do +with this status code. It might be better just to create an +HTML page that warns the user of the problem. =head1 COMPATIBILITY WITH CGI-LIB.PL -To make it easier to port existing programs that use cgi-lib.pl -the compatibility routine "ReadParse" is provided. Porting is -simple: +To make it easier to port existing programs that use cgi-lib.pl the +compatibility routine "ReadParse" is provided. Porting is simple: OLD VERSION require "cgi-lib.pl"; @@ -6123,9 +6379,9 @@ for suggestions and bug fixes. #!/usr/local/bin/perl - + use CGI; - + $query = new CGI; print $query->header; @@ -6135,35 +6391,35 @@ for suggestions and bug fixes. &do_work($query); &print_tail; print $query->end_html; - + sub print_prompt { my($query) = @_; - + print $query->startform; print "What's your name?
      "; print $query->textfield('name'); print $query->checkbox('Not my real name'); - + print "

      Where can you find English Sparrows?
      "; print $query->checkbox_group( -name=>'Sparrow locations', -values=>[England,France,Spain,Asia,Hoboken], -linebreak=>'yes', -defaults=>[England,Asia]); - + print "

      How far can they fly?
      ", $query->radio_group( -name=>'how far', -values=>['10 ft','1 mile','10 miles','real far'], -default=>'1 mile'); - + print "

      What's your favorite color? "; print $query->popup_menu(-name=>'Color', -values=>['black','brown','red','yellow'], -default=>'red'); - + print $query->hidden('Reference','Monty Python and the Holy Grail'); - + print "

      What have you got there?
      "; print $query->scrolling_list( -name=>'possessions', @@ -6171,19 +6427,19 @@ for suggestions and bug fixes. 'A Sword','A Ticket'], -size=>5, -multiple=>'true'); - + print "

      Any parting comments?
      "; print $query->textarea(-name=>'Comments', -rows=>10, -columns=>50); - - print "

      ",$query->Reset; + + print "

      ",$query->reset; print $query->submit('Action','Shout'); print $query->submit('Action','Scream'); print $query->endform; print "


      \n"; } - + sub do_work { my($query) = @_; my(@values,$key); @@ -6196,7 +6452,7 @@ for suggestions and bug fixes. print join(", ",@values),"
      \n"; } } - + sub print_tail { print < diff --git a/contrib/perl5/lib/CGI/Apache.pm b/contrib/perl5/lib/CGI/Apache.pm index 82a366925062..dced8664b463 100644 --- a/contrib/perl5/lib/CGI/Apache.pm +++ b/contrib/perl5/lib/CGI/Apache.pm @@ -1,103 +1,23 @@ -package CGI::Apache; -use Apache (); -use vars qw(@ISA $VERSION); -require CGI; -@ISA = qw(CGI); - -$VERSION = (qw$Revision: 1.1 $)[1]; -$CGI::DefaultClass = 'CGI::Apache'; -$CGI::Apache::AutoloadClass = 'CGI'; - -sub import { - my $self = shift; - my ($callpack, $callfile, $callline) = caller; - ${"${callpack}::AutoloadClass"} = 'CGI'; -} - -sub new { - my($class) = shift; - my($r) = Apache->request; - %ENV = $r->cgi_env unless defined $ENV{GATEWAY_INTERFACE}; #PerlSetupEnv On - my $self = $class->SUPER::new(@_); - $self->{'.req'} = $r; - $self; -} - -sub header { - my ($self,@rest) = CGI::self_or_default(@_); - my $r = $self->{'.req'}; - $r->basic_http_header; - return CGI::header($self,@rest); -} - -sub print { - my($self,@rest) = CGI::self_or_default(@_); - $self->{'.req'}->print(@rest); -} - -sub read_from_client { - my($self, $fh, $buff, $len, $offset) = @_; - my $r = $self->{'.req'} || Apache->request; - return $r->read($$buff, $len, $offset); -} - -sub new_MultipartBuffer { - my $self = shift; - my $new = CGI::Apache::MultipartBuffer->new($self, @_); - $new->{'.req'} = $self->{'.req'} || Apache->request; - return $new; -} - -package CGI::Apache::MultipartBuffer; -use vars qw(@ISA); -@ISA = qw(MultipartBuffer); - -$CGI::Apache::MultipartBuffer::AutoloadClass = 'MultipartBuffer'; -*CGI::Apache::MultipartBuffer::read_from_client = - \&CGI::Apache::read_from_client; - - +use CGI; 1; - __END__ =head1 NAME -CGI::Apache - Make things work with CGI.pm against Perl-Apache API +CGI::Apache - Backward compatibility module for CGI.pm =head1 SYNOPSIS - require CGI::Apache; +Do not use this module. It is deprecated. - my $q = new Apache::CGI; - - $q->print($q->header); - - #do things just like you do with CGI.pm +=head1 ABSTRACT =head1 DESCRIPTION -When using the Perl-Apache API, your applications are faster, but the -environment is different than CGI. -This module attempts to set-up that environment as best it can. +=head1 AUTHOR INFORMATION -=head1 NOTE 1 - -This module used to be named Apache::CGI. Sorry for the confusion. - -=head1 NOTE 2 - -If you're going to inherit from this class, make sure to "use" it -after your package declaration rather than "require" it. This is -because CGI.pm does a little magic during the import() step in order -to make autoloading work correctly. +=head1 BUGS =head1 SEE ALSO -perl(1), Apache(3), CGI(3) - -=head1 AUTHOR - -Doug MacEachern Edougm@osf.orgE, hacked over by Andreas KEnig Ea.koenig@mind.deE, modified by Lincoln Stein lstein@genome.wi.mit.edu - =cut diff --git a/contrib/perl5/lib/CGI/Carp.pm b/contrib/perl5/lib/CGI/Carp.pm index dfae1a61b73c..90e9552c75c9 100644 --- a/contrib/perl5/lib/CGI/Carp.pm +++ b/contrib/perl5/lib/CGI/Carp.pm @@ -192,9 +192,16 @@ use Carp; @EXPORT = qw(confess croak carp); @EXPORT_OK = qw(carpout fatalsToBrowser wrap set_message cluck); +BEGIN { + $] >= 5.005 + ? eval q#sub ineval { $^S }# + : eval q#sub ineval { _longmess() =~ /eval [\{\']/m }#; + $@ and die; +} + $main::SIG{__WARN__}=\&CGI::Carp::warn; $main::SIG{__DIE__}=\&CGI::Carp::die; -$CGI::Carp::VERSION = '1.13'; +$CGI::Carp::VERSION = '1.14'; $CGI::Carp::CUSTOM_MSG = undef; # fancy import routine detects and handles 'errorWrap' specially. @@ -216,7 +223,7 @@ sub realdie { CORE::die(@_); } sub id { my $level = shift; my($pack,$file,$line,$sub) = caller($level); - my($id) = $file=~m|([^/]+)$|; + my($id) = $file=~m|([^/]+)\z|; return ($file,$line,$id); } @@ -228,7 +235,7 @@ sub stamp { $id = $file; ($pack,$file) = caller($frame++); } until !$file; - ($id) = $id=~m|([^/]+)$|; + ($id) = $id=~m|([^/]+)\z|; return "[$time] $id: "; } @@ -251,14 +258,15 @@ sub _longmess { } sub die { - my $message = shift; - my $time = scalar(localtime); - my($file,$line,$id) = id(1); - $message .= " at $file line $line." unless $message=~/\n$/; - &fatalsToBrowser($message) if $WRAP && _longmess() !~ /eval [{\']/m; - my $stamp = stamp; - $message=~s/^/$stamp/gm; - realdie $message; + realdie @_ if ineval; + my $message = shift; + my $time = scalar(localtime); + my($file,$line,$id) = id(1); + $message .= " at $file line $line." unless $message=~/\n$/; + &fatalsToBrowser($message) if $WRAP; + my $stamp = stamp; + $message=~s/^/$stamp/gm; + realdie $message; } sub set_message { diff --git a/contrib/perl5/lib/CGI/Cookie.pm b/contrib/perl5/lib/CGI/Cookie.pm index 204d67b08ae3..bd3c3d8875b8 100644 --- a/contrib/perl5/lib/CGI/Cookie.pm +++ b/contrib/perl5/lib/CGI/Cookie.pm @@ -7,19 +7,15 @@ package CGI::Cookie; # documentation in manual or html file format (these utilities are part of the # Perl 5 distribution). -# Copyright 1995,1996, Lincoln D. Stein. All rights reserved. +# Copyright 1995-1999, Lincoln D. Stein. All rights reserved. # It may be used and modified freely, but I do request that this copyright # notice remain attached to the file. You may modify this module as you # wish, but if you redistribute a modified version, please attach a note # listing the modifications you have made. -# The most recent version and complete docs are available at: -# http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html -# ftp://ftp-genome.wi.mit.edu/pub/software/WWW/ +$CGI::Cookie::VERSION='1.12'; -$CGI::Cookie::VERSION='1.06'; - -use CGI; +use CGI qw(-no_debug); use overload '""' => \&as_string, 'cmp' => \&compare, 'fallback'=>1; @@ -100,10 +96,13 @@ sub new { 'value'=>[@values], },$class; - # IE requires the path to be present for some reason. - ($path = $ENV{'SCRIPT_NAME'})=~s![^/]+$!! unless $path; + # IE requires the path and domain to be present for some reason. + $path = CGI::url(-absolute=>1) unless defined $path; +# however, this breaks networks which use host tables without fully qualified +# names, so we comment it out. +# $domain = CGI::virtual_host() unless defined $domain; - $self->path($path) if defined $path; + $self->path($path) if defined $path; $self->domain($domain) if defined $domain; $self->secure($secure) if defined $secure; $self->expires($expires) if defined $expires; @@ -251,10 +250,10 @@ cookie originated from. If you provide a cookie path attribute, the browser will check it against your script's URL before returning the cookie. For example, if you specify the path "/cgi-bin", then the cookie will be returned -to each of the scripts "/cgi-bin/tally.pl", "/cgi-bin/order.pl", -and "/cgi-bin/customer_service/complain.pl", but not to the script -"/cgi-private/site_admin.pl". By default, path is set to "/", which -causes the cookie to be sent to any CGI script on your site. +to each of the scripts "/cgi-bin/tally.pl", "/cgi-bin/order.pl", and +"/cgi-bin/customer_service/complain.pl", but not to the script +"/cgi-private/site_admin.pl". By default, the path is set to your +script, so that only it will receive the cookie. =item B<4. secure flag> @@ -344,7 +343,7 @@ can iterate through the cookies this way: In a scalar context, fetch() returns a hash reference, which may be more efficient if you are manipulating multiple cookies. - + CGI.pm uses the URL escaping methods to save and restore reserved characters in its cookies. If you are trying to retrieve a cookie set by a foreign server, this escaping method may trip you up. Use raw_fetch() instead, which has the @@ -415,5 +414,5 @@ This section intentionally left blank. =head1 SEE ALSO L, L - + =cut diff --git a/contrib/perl5/lib/CGI/Fast.pm b/contrib/perl5/lib/CGI/Fast.pm index a39fe052e863..b4851862dca4 100644 --- a/contrib/perl5/lib/CGI/Fast.pm +++ b/contrib/perl5/lib/CGI/Fast.pm @@ -16,7 +16,7 @@ package CGI::Fast; # The most recent version and complete docs are available at: # http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html # ftp://ftp-genome.wi.mit.edu/pub/software/WWW/ -$CGI::Fast::VERSION='1.01'; +$CGI::Fast::VERSION='1.02'; use CGI; use FCGI; @@ -170,5 +170,5 @@ This section intentionally left blank. =head1 SEE ALSO L, L - + =cut diff --git a/contrib/perl5/lib/CGI/Pretty.pm b/contrib/perl5/lib/CGI/Pretty.pm new file mode 100644 index 000000000000..4f2eed4ce9c6 --- /dev/null +++ b/contrib/perl5/lib/CGI/Pretty.pm @@ -0,0 +1,236 @@ +package CGI::Pretty; + +# See the bottom of this file for the POD documentation. Search for the +# string '=head'. + +# You can run this file through either pod2man or pod2html to produce pretty +# documentation in manual or html file format (these utilities are part of the +# Perl 5 distribution). + +use strict; +use CGI (); + +$CGI::Pretty::VERSION = '1.03'; +$CGI::DefaultClass = __PACKAGE__; +$CGI::Pretty::AutoloadClass = 'CGI'; +@CGI::Pretty::ISA = qw( CGI ); + +initialize_globals(); + +sub _prettyPrint { + my $input = shift; + + foreach my $i ( @CGI::Pretty::AS_IS ) { + if ( $$input =~ /<\/$i>/si ) { + my ( $a, $b, $c, $d, $e ) = $$input =~ /(.*)<$i(\s?)(.*?)>(.*?)<\/$i>(.*)/si; + _prettyPrint( \$a ); + _prettyPrint( \$e ); + + $$input = "$a<$i$b$c>$d$e"; + return; + } + } + $$input =~ s/$CGI::Pretty::LINEBREAK/$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT/g; +} + +sub comment { + my($self,@p) = CGI::self_or_CGI(@_); + + my $s = "@p"; + $s =~ s/$CGI::Pretty::LINEBREAK/$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT/g; + + return $self->SUPER::comment( "$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT$s$CGI::Pretty::LINEBREAK" ) . $CGI::Pretty::LINEBREAK; +} + +sub _make_tag_func { + my ($self,$tagname) = @_; + return $self->SUPER::_make_tag_func($tagname) if $tagname=~/^(start|end)_/; + + # As Lincoln as noted, the last else clause is VERY hairy, and it + # took me a while to figure out what I was trying to do. + # What it does is look for tags that shouldn't be indented (e.g. PRE) + # and makes sure that when we nest tags, those tags don't get + # indented. + # For an example, try print td( pre( "hello\nworld" ) ); + # If we didn't care about stuff like that, the code would be + # MUCH simpler. BTW: I won't claim to be a regular expression + # guru, so if anybody wants to contribute something that would + # be quicker, easier to read, etc, I would be more than + # willing to put it in - Brian + + return qq{ + sub $tagname { + # handle various cases in which we're called + # most of this bizarre stuff is to avoid -w errors + shift if \$_[0] && + (!ref(\$_[0]) && \$_[0] eq \$CGI::DefaultClass) || + (ref(\$_[0]) && + (substr(ref(\$_[0]),0,3) eq 'CGI' || + UNIVERSAL::isa(\$_[0],'CGI'))); + + my(\$attr) = ''; + if (ref(\$_[0]) && ref(\$_[0]) eq 'HASH') { + my(\@attr) = make_attributes('',shift); + \$attr = " \@attr" if \@attr; + } + + my(\$tag,\$untag) = ("\U<$tagname\E\$attr>","\U\E"); + return \$tag unless \@_; + + my \@result; + my \$NON_PRETTIFY_ENDTAGS = join "", map { "" } \@CGI::Pretty::AS_IS; + + if ( \$NON_PRETTIFY_ENDTAGS =~ /\$untag/ ) { + \@result = map { "\$tag\$_\$untag\$CGI::Pretty::LINEBREAK" } + (ref(\$_[0]) eq 'ARRAY') ? \@{\$_[0]} : "\@_"; + } + else { + \@result = map { + chomp; + if ( \$_ !~ /<\\// ) { + s/\$CGI::Pretty::LINEBREAK/\$CGI::Pretty::LINEBREAK\$CGI::Pretty::INDENT/g; + } + else { + my \$tmp = \$_; + CGI::Pretty::_prettyPrint( \\\$tmp ); + \$_ = \$tmp; + } + "\$tag\$CGI::Pretty::LINEBREAK\$CGI::Pretty::INDENT\$_\$CGI::Pretty::LINEBREAK\$untag\$CGI::Pretty::LINEBREAK" } + (ref(\$_[0]) eq 'ARRAY') ? \@{\$_[0]} : "\@_"; + } + local \$" = ""; + return "\@result"; + } + }; +} + +sub start_html { + return CGI::start_html( @_ ) . $CGI::Pretty::LINEBREAK; +} + +sub end_html { + return CGI::end_html( @_ ) . $CGI::Pretty::LINEBREAK; +} + +sub new { + my $class = shift; + my $this = $class->SUPER::new( @_ ); + + Apache->request->register_cleanup(\&CGI::Pretty::_reset_globals) if ($CGI::MOD_PERL); + $class->_reset_globals if $CGI::PERLEX; + + return bless $this, $class; +} + +sub initialize_globals { + # This is the string used for indentation of tags + $CGI::Pretty::INDENT = "\t"; + + # This is the string used for seperation between tags + $CGI::Pretty::LINEBREAK = "\n"; + + # These tags are not prettify'd. + @CGI::Pretty::AS_IS = qw( A PRE CODE SCRIPT TEXTAREA ); + + 1; +} +sub _reset_globals { initialize_globals(); } + +1; + +=head1 NAME + +CGI::Pretty - module to produce nicely formatted HTML code + +=head1 SYNOPSIS + + use CGI::Pretty qw( :html3 ); + + # Print a table with a single data element + print table( TR( td( "foo" ) ) ); + +=head1 DESCRIPTION + +CGI::Pretty is a module that derives from CGI. It's sole function is to +allow users of CGI to output nicely formatted HTML code. + +When using the CGI module, the following code: + print table( TR( td( "foo" ) ) ); + +produces the following output: +
      $_
      $rowheaders->[$row]$rowheaders->[$row]" . $elements[$column*$rows + $row] . "
      foo
      + +If a user were to create a table consisting of many rows and many columns, +the resultant HTML code would be quite difficult to read since it has no +carriage returns or indentation. + +CGI::Pretty fixes this problem. What it does is add a carriage +return and indentation to the HTML code so that one can easily read +it. + + print table( TR( td( "foo" ) ) ); + +now produces the following output: + + + + +
      + foo +
      + + +=head2 Tags that won't be formatted + +The and
       tags are not formatted.  If these tags were formatted, the
      +user would see the extra indentation on the web browser causing the page to
      +look different than what would be expected.  If you wish to add more tags to
      +the list of tags that are not to be touched, push them onto the C<@AS_IS> array:
      +
      +    push @CGI::Pretty::AS_IS,qw(CODE XMP);
      +
      +=head2 Customizing the Indenting
      +
      +If you wish to have your own personal style of indenting, you can change the
      +C<$INDENT> variable:
      +
      +    $CGI::Pretty::INDENT = "\t\t";
      +
      +would cause the indents to be two tabs.
      +
      +Similarly, if you wish to have more space between lines, you may change the
      +C<$LINEBREAK> variable:
      +
      +    $CGI::Pretty::LINEBREAK = "\n\n";
      +
      +would create two carriage returns between lines.
      +
      +If you decide you want to use the regular CGI indenting, you can easily do 
      +the following:
      +
      +    $CGI::Pretty::INDENT = $CGI::Pretty::LINEBREAK = "";
      +
      +=head1 BUGS
      +
      +This section intentionally left blank.
      +
      +=head1 AUTHOR
      +
      +Brian Paulsen , with minor modifications by
      +Lincoln Stein  for incorporation into the CGI.pm
      +distribution.
      +
      +Copyright 1999, Brian Paulsen.  All rights reserved.
      +
      +This library is free software; you can redistribute it and/or modify
      +it under the same terms as Perl itself.
      +
      +Bug reports and comments to Brian@ThePaulsens.com.  You can also write
      +to lstein@cshl.org, but this code looks pretty hairy to me and I'm not
      +sure I understand it!
      +
      +=head1 SEE ALSO
      +
      +L
      +
      +=cut
      diff --git a/contrib/perl5/lib/CGI/Push.pm b/contrib/perl5/lib/CGI/Push.pm
      index e4a66aee72d4..80683a2e800f 100644
      --- a/contrib/perl5/lib/CGI/Push.pm
      +++ b/contrib/perl5/lib/CGI/Push.pm
      @@ -257,7 +257,7 @@ as shown below:
                      h1('testing'),
       	       "This page called $counter times";
           }
      -   
      +
           sub my_last_page {
       	header(-refresh=>'5; URL=http://somewhere.else/finished.html',
       	       -type=>'text/html'),
      diff --git a/contrib/perl5/lib/CGI/Switch.pm b/contrib/perl5/lib/CGI/Switch.pm
      index 8afc6a6cb347..b16b9c06584a 100644
      --- a/contrib/perl5/lib/CGI/Switch.pm
      +++ b/contrib/perl5/lib/CGI/Switch.pm
      @@ -1,71 +1,24 @@
      -package CGI::Switch;
      -use Carp;
      -use strict;
      -use vars qw($VERSION @Pref);
      -$VERSION = '0.06';
      -@Pref = qw(CGI::Apache CGI); #default
      -
      -sub import {
      -    my($self,@arg) = @_;
      -    @Pref = @arg if @arg;
      -}
      -
      -sub new {
      -    shift;
      -    my($file,$pack);
      -    for $pack (@Pref) {
      -	($file = $pack) =~ s|::|/|g;
      -	eval { require "$file.pm"; };
      -	if ($@) {
      -#XXX	    warn $@;
      -	    next;
      -	} else {
      -#XXX	    warn "Going to try $pack\->new\n";
      -	    my $obj;
      -	    eval {$obj = $pack->new(@_)};
      -	    if ($@) {
      -#XXX		warn $@;
      -	    } else {
      -		return $obj;
      -	    }
      -	}
      -    }
      -    Carp::croak "Couldn't load+construct any of @Pref\n";
      -}
      -
      +use CGI;
       1;
      +
       __END__
       
       =head1 NAME
       
      -CGI::Switch - Try more than one constructors and return the first object available
      +CGI::Switch - Backward compatibility module for defunct CGI::Switch
       
       =head1 SYNOPSIS
       
      - 
      - use CGISwitch;
      +Do not use this module.  It is deprecated.
       
      -  -or-
      -
      - use CGI::Switch This, That, CGI::XA, Foo, Bar, CGI;
      -
      - my $q = new CGI::Switch;
      +=head1 ABSTRACT
       
       =head1 DESCRIPTION
       
      -Per default the new() method tries to call new() in the three packages
      -Apache::CGI, CGI::XA, and CGI. It returns the first CGI object it
      -succeeds with.
      +=head1 AUTHOR INFORMATION
       
      -The import method allows you to set up the default order of the
      -modules to be tested.
      +=head1 BUGS
       
       =head1 SEE ALSO
       
      -perl(1), Apache(3), CGI(3), CGI::XA(3)
      -
      -=head1 AUTHOR
      -
      -Andreas KEnig Ea.koenig@mind.deE
      -
       =cut
      diff --git a/contrib/perl5/lib/CPAN.pm b/contrib/perl5/lib/CPAN.pm
      index 227694383cac..84dfd31a2b8c 100644
      --- a/contrib/perl5/lib/CPAN.pm
      +++ b/contrib/perl5/lib/CPAN.pm
      @@ -6,13 +6,13 @@ use vars qw{$Try_autoload
       	    $Frontend  $Defaultsite
       	   }; #};
       
      -$VERSION = '1.48';
      +$VERSION = '1.52';
       
      -# $Id: CPAN.pm,v 1.260 1999/03/06 19:31:02 k Exp $
      +# $Id: CPAN.pm,v 1.276 2000/01/08 15:29:46 k Exp $
       
       # only used during development:
       $Revision = "";
      -# $Revision = "[".substr(q$Revision: 1.260 $, 10)."]";
      +# $Revision = "[".substr(q$Revision: 1.276 $, 10)."]";
       
       use Carp ();
       use Config ();
      @@ -61,7 +61,7 @@ use strict qw(vars);
       @CPAN::ISA = qw(CPAN::Debug Exporter);
       
       @EXPORT = qw(
      -	     autobundle bundle expand force get
      +	     autobundle bundle expand force get cvs_import
       	     install make readme recompile shell test clean
       	    );
       
      @@ -90,7 +90,7 @@ sub AUTOLOAD {
       #-> sub CPAN::shell ;
       sub shell {
           my($self) = @_;
      -    $Suppress_readline ||= ! -t STDIN;
      +    $Suppress_readline = ! -t STDIN unless defined $Suppress_readline;
           CPAN::Config->load unless $CPAN::Config_loaded++;
       
           my $prompt = "cpan> ";
      @@ -113,6 +113,12 @@ sub shell {
       	    $readline::rl_completion_function =
       		$readline::rl_completion_function = 'CPAN::Complete::cpl';
       	}
      +	# $term->OUT is autoflushed anyway
      +	my $odef = select STDERR;
      +	$| = 1;
      +	select STDOUT;
      +	$| = 1;
      +	select $odef;
           }
       
           no strict;
      @@ -120,7 +126,8 @@ sub shell {
           my $getcwd;
           $getcwd = $CPAN::Config->{'getcwd'} || 'cwd';
           my $cwd = CPAN->$getcwd();
      -    my $try_detect_readline = $term->ReadLine eq "Term::ReadLine::Stub";
      +    my $try_detect_readline;
      +    $try_detect_readline = $term->ReadLine eq "Term::ReadLine::Stub" if $term;
           my $rl_avail = $Suppress_readline ? "suppressed" :
       	($term->ReadLine ne "Term::ReadLine::Stub") ? "enabled" :
       	    "available (try ``install Bundle::CPAN'')";
      @@ -190,7 +197,8 @@ ReadLine support $rl_avail
       	    my $redef;
       	    local($SIG{__WARN__}) = CPAN::Shell::dotdot_onreload(\$redef);
       	    require Term::ReadLine;
      -	    $CPAN::Frontend->myprint("\n$redef subroutines in Term::ReadLine redefined\n");
      +	    $CPAN::Frontend->myprint("\n$redef subroutines in ".
      +				     "Term::ReadLine redefined\n");
       	    goto &shell;
       	}
             }
      @@ -285,7 +293,7 @@ sub try_dot_al {
       	$pkg =~ s|::|/|g;
       	if (defined($name=$INC{"$pkg.pm"}))
       	    {
      -		$name =~ s|^(.*)$pkg\.pm$|$1auto/$pkg/$func.al|;
      +		$name =~ s|^(.*)$pkg\.pm\z|$1auto/$pkg/$func.al|s;
       		$name = undef unless (-r $name);
       	    }
       	unless (defined $name)
      @@ -301,7 +309,7 @@ sub try_dot_al {
       	    *$autoload = sub {};
       	    $ok = 1;
       	} else {
      -	    if ($name =~ s{(\w{12,})\.al$}{substr($1,0,11).".al"}e){
      +	    if ($name =~ s{(\w{12,})\.al\z}{substr($1,0,11).".al"}e){
       		eval {local $SIG{__DIE__};require $name};
       	    }
       	    if ($@){
      @@ -539,7 +547,40 @@ You may want to kill it and delete the lockfile, maybe. On UNIX try:
       	    }
       	}
           }
      -    File::Path::mkpath($CPAN::Config->{cpan_home});
      +    my $dotcpan = $CPAN::Config->{cpan_home};
      +    eval { File::Path::mkpath($dotcpan);};
      +    if ($@) {
      +      # A special case at least for Jarkko.
      +      my $firsterror = $@;
      +      my $seconderror;
      +      my $symlinkcpan;
      +      if (-l $dotcpan) {
      +	$symlinkcpan = readlink $dotcpan;
      +	die "readlink $dotcpan failed: $!" unless defined $symlinkcpan;
      +	eval { File::Path::mkpath($symlinkcpan); };
      +	if ($@) {
      +	  $seconderror = $@;
      +	} else {
      +	  $CPAN::Frontend->mywarn(qq{
      +Working directory $symlinkcpan created.
      +});
      +	}
      +      }
      +      unless (-d $dotcpan) {
      +	my $diemess = qq{
      +Your configuration suggests "$dotcpan" as your
      +CPAN.pm working directory. I could not create this directory due
      +to this error: $firsterror\n};
      +	$diemess .= qq{
      +As "$dotcpan" is a symlink to "$symlinkcpan",
      +I tried to create that, but I failed with this error: $seconderror
      +} if $seconderror;
      +	$diemess .= qq{
      +Please make sure the directory exists and is writable.
      +};
      +	$CPAN::Frontend->mydie($diemess);
      +      }
      +    }
           my $fh;
           unless ($fh = FileHandle->new(">$lockfile")) {
       	if ($! =~ /Permission/) {
      @@ -580,6 +621,27 @@ or
             print "Caught SIGINT\n";
             $Signal++;
           };
      +
      +#       From: Larry Wall 
      +#       Subject: Re: deprecating SIGDIE
      +#       To: perl5-porters@perl.org
      +#       Date: Thu, 30 Sep 1999 14:58:40 -0700 (PDT)
      +#
      +#       The original intent of __DIE__ was only to allow you to substitute one
      +#       kind of death for another on an application-wide basis without respect
      +#       to whether you were in an eval or not.  As a global backstop, it should
      +#       not be used any more lightly (or any more heavily :-) than class
      +#       UNIVERSAL.  Any attempt to build a general exception model on it should
      +#       be politely squashed.  Any bug that causes every eval {} to have to be
      +#       modified should be not so politely squashed.
      +#
      +#       Those are my current opinions.  It is also my optinion that polite
      +#       arguments degenerate to personal arguments far too frequently, and that
      +#       when they do, it's because both people wanted it to, or at least didn't
      +#       sufficiently want it not to.
      +#
      +#       Larry
      +
           $SIG{'__DIE__'} = \&cleanup;
           $self->debug("Signal handler set.") if $CPAN::DEBUG;
       }
      @@ -784,7 +846,7 @@ sub disk_usage {
       	   if ($^O eq 'MacOS') {
       	     require Mac::Files;
       	     my $cat  = Mac::Files::FSpGetCatInfo($_);
      -	     $Du += $cat->ioFlLgLen() + $cat->ioFlRLgLen();
      +	     $Du += $cat->ioFlLgLen() + $cat->ioFlRLgLen() if $cat;
       	   } else {
       	     $Du += (-s _);
       	   }
      @@ -1103,7 +1165,8 @@ Known options:
         commit    commit session changes to disk
         init      go through a dialog to set all parameters
       
      -You may edit key values in the follow fashion:
      +You may edit key values in the follow fashion (the "o" is a literal
      +letter o):
       
         o conf build_cache 15
       
      @@ -1149,29 +1212,29 @@ sub h {
       	$CPAN::Frontend->myprint("Detailed help not yet implemented\n");
           } else {
       	$CPAN::Frontend->myprint(q{
      -command   arguments       description
      -a         string                  authors
      -b         or              display bundles
      -d         /regex/         info    distributions
      -m         or              about   modules
      -i         none                    anything of above
      +Display Information
      + a                                    authors
      + b         string           display   bundles
      + d         or               info      distributions
      + m         /regex/          about     modules
      + i         or                         anything of above
      + r         none             reinstall recommendations
      + u                          uninstalled distributions
       
      -r          as             reinstall recommendations
      -u          above          uninstalled distributions
      -See manpage for autobundle, recompile, force, look, etc.
      +Download, Test, Make, Install...
      + get                        download
      + make                       make (implies get)
      + test      modules,         make test (implies make)
      + install   dists, bundles   make install (implies test)
      + clean                      make clean
      + look                       open subshell in these dists' directories
      + readme                     display these dists' README files
       
      -make                      make
      -test      modules,        make test (implies make)
      -install   dists, bundles, make install (implies test)
      -clean     "r" or "u"      make clean
      -readme                    display the README file
      -
      -reload    index|cpan    load most recent indices/CPAN.pm
      -h or ?                  display this menu
      -o         various       set and query options
      -!         perl-code     eval a perl command
      -q                       quit the shell subroutine
      -});
      +Other
      + h,?           display this menu       ! perl-code   eval a perl command
      + o conf [opt]  set and query options   q             quit the cpan shell
      + reload cpan   load CPAN.pm again      reload index  load newer indices
      + autobundle    Snapshot                force cmd     unconditionally do cmd});
           }
       }
       
      @@ -1190,7 +1253,7 @@ sub b {
       	    my($entry);
       	    for $entry ($dh->read) {
       		next if -d MM->catdir($bdir,$entry);
      -		next unless $entry =~ s/\.pm$//;
      +		next unless $entry =~ s/\.pm\z//;
       		$CPAN::META->instance('CPAN::Bundle',"Bundle::$entry");
       	    }
       	}
      @@ -1293,10 +1356,13 @@ sub o {
       		}
       	    }
       	} else {
      -	    $CPAN::Frontend->myprint("Valid options for debug are ".
      -				     join(", ",sort(keys %CPAN::DEBUG), 'all').
      -		    qq{ or a number. Completion works on the options. }.
      -			qq{Case is ignored.\n\n});
      +	  my $raw = "Valid options for debug are ".
      +	      join(", ",sort(keys %CPAN::DEBUG), 'all').
      +		  qq{ or a number. Completion works on the options. }.
      +		      qq{Case is ignored.};
      +	  require Text::Wrap;
      +	  $CPAN::Frontend->myprint(Text::Wrap::fill("","",$raw));
      +	  $CPAN::Frontend->myprint("\n\n");
       	}
       	if ($CPAN::DEBUG) {
       	    $CPAN::Frontend->myprint("Options set for debugging:\n");
      @@ -1358,7 +1424,7 @@ index    re-reads the index files\n});
       sub _binary_extensions {
           my($self) = shift @_;
           my(@result,$module,%seen,%need,$headerdone);
      -    my $isaperl = q{perl5[._-]\\d{3}(_[0-4][0-9])?\\.tar[._-]gz$};
      +    my $isaperl = q{perl5[._-]\\d{3}(_[0-4][0-9])?\\.tar[._-]gz\z};
           for $module ($self->expand('Module','/./')) {
       	my $file  = $module->cpan_file;
       	next if $file eq "N/A";
      @@ -1562,21 +1628,34 @@ sub expand {
       	my $class = "CPAN::$type";
       	my $obj;
       	if (defined $regex) {
      -	    for $obj ( sort {$a->id cmp $b->id} $CPAN::META->all_objects($class)) {
      -		push @m, $obj
      -		    if
      -			$obj->id =~ /$regex/i
      -			    or
      +	  for $obj (
      +		    sort
      +		    {$a->id cmp $b->id}
      +		    $CPAN::META->all_objects($class)
      +		   ) {
      +	    unless ($obj->id){
      +	      # BUG, we got an empty object somewhere
      +	      CPAN->debug(sprintf(
      +				  "Empty id on obj[%s]%%[%s]",
      +				  $obj,
      +				  join(":", %$obj)
      +				 )) if $CPAN::DEBUG;
      +	      next;
      +	    }
      +	    push @m, $obj
      +		if $obj->id =~ /$regex/i
      +		    or
       			(
       			 (
      -			  $] < 5.00303 ### provide sort of compatibility with 5.003
      +			  $] < 5.00303 ### provide sort of
      +                                       ### compatibility with 5.003
       			  ||
       			  $obj->can('name')
       			 )
       			 &&
       			 $obj->name  =~ /$regex/i
       			);
      -	    }
      +	  }
       	} else {
       	    my($xarg) = $arg;
       	    if ( $type eq 'Bundle' ) {
      @@ -1670,6 +1749,15 @@ sub mydie {
           die "\n";
       }
       
      +sub setup_output {
      +    return if -t STDOUT;
      +    my $odef = select STDERR;
      +    $| = 1;
      +    select STDOUT;
      +    $| = 1;
      +    select $odef;
      +}
      +
       #-> sub CPAN::Shell::rematein ;
       # RE-adme||MA-ke||TE-st||IN-stall
       sub rematein {
      @@ -1680,6 +1768,7 @@ sub rematein {
       	$pragma = $meth;
       	$meth = shift @some;
           }
      +    setup_output();
           CPAN->debug("pragma[$pragma]meth[$meth] some[@some]") if $CPAN::DEBUG;
           my($s,@s);
           foreach $s (@some) {
      @@ -1756,6 +1845,8 @@ sub install { shift->rematein('install',@_); }
       sub clean   { shift->rematein('clean',@_); }
       #-> sub CPAN::Shell::look ;
       sub look   { shift->rematein('look',@_); }
      +#-> sub CPAN::Shell::cvs_import ;
      +sub cvs_import   { shift->rematein('cvs_import',@_); }
       
       package CPAN::FTP;
       
      @@ -1932,6 +2023,9 @@ sub localize {
       	my $ret = $self->$method(\@host_seq,$file,$aslocal);
       	if ($ret) {
       	  $Themethod = $level;
      +	  my $now = time;
      +	  # utime $now, $now, $aslocal; # too bad, if we do that, we
      +                                      # might alter a local mirror
       	  $self->debug("level[$level]") if $CPAN::DEBUG;
       	  return $ret;
       	} else {
      @@ -1985,7 +2079,7 @@ sub hosteasy {
       		$l =~ s|^file:||;                   # assume they
                                                           # meant
                                                           # file://localhost
      -		$l =~ s|^/|| unless -f $l;          # e.g. /P:
      +		$l =~ s|^/||s unless -f $l;         # e.g. /P:
       	    }
       	    if ( -f $l && -r _) {
       		$Thesite = $i;
      @@ -2012,8 +2106,11 @@ sub hosteasy {
       	  my $res = $Ua->mirror($url, $aslocal);
       	  if ($res->is_success) {
       	    $Thesite = $i;
      +	    my $now = time;
      +	    utime $now, $now, $aslocal; # download time is more
      +                                        # important than upload time
       	    return $aslocal;
      -	  } elsif ($url !~ /\.gz$/) {
      +	  } elsif ($url !~ /\.gz\z/) {
       	    my $gzurl = "$url.gz";
       	    $CPAN::Frontend->myprint("Fetching with LWP:
         $gzurl
      @@ -2050,7 +2147,7 @@ sub hosteasy {
       		    $Thesite = $i;
       		    return $aslocal;
       		}
      -		if ($aslocal !~ /\.gz$/) {
      +		if ($aslocal !~ /\.gz\z/) {
       		    my $gz = "$aslocal.gz";
       		    $CPAN::Frontend->myprint("Fetching with Net::FTP
         $url.gz
      @@ -2086,8 +2183,8 @@ sub hosthard {
         HOSTHARD: for $i (@$host_seq) {
       	my $url = $CPAN::Config->{urllist}[$i] || $CPAN::Defaultsite;
       	unless ($self->is_reachable($url)) {
      -	    $CPAN::Frontend->myprint("Skipping $url (not reachable)\n");
      -	    next;
      +	  $CPAN::Frontend->myprint("Skipping $url (not reachable)\n");
      +	  next;
       	}
       	$url .= "/" unless substr($url,-1) eq "/";
       	$url .= $file;
      @@ -2097,90 +2194,107 @@ sub hosthard {
       	# if ($url =~ m|^ftp://(.*?)/(.*)/(.*)|) {
       	# to
       	if ($url =~ m|^([^:]+)://(.*?)/(.*)/(.*)|) {
      -	    # proto not yet used
      -	    ($proto,$host,$dir,$getfile) = ($1,$2,$3,$4);
      +	  # proto not yet used
      +	  ($proto,$host,$dir,$getfile) = ($1,$2,$3,$4);
       	} else {
      -	    next HOSTHARD; # who said, we could ftp anything except ftp?
      +	  next HOSTHARD; # who said, we could ftp anything except ftp?
       	}
      +
       	$self->debug("localizing funkyftpwise[$url]") if $CPAN::DEBUG;
       	my($f,$funkyftp);
       	for $f ('lynx','ncftpget','ncftp') {
      -	    next unless exists $CPAN::Config->{$f};
      -	    $funkyftp = $CPAN::Config->{$f};
      -	    next unless defined $funkyftp;
      -	    next if $funkyftp =~ /^\s*$/;
      -	    my($want_compressed);
      -	    my $aslocal_uncompressed;
      -	    ($aslocal_uncompressed = $aslocal) =~ s/\.gz//;
      -	    my($source_switch) = "";
      -	    $source_switch = " -source" if $funkyftp =~ /\blynx$/;
      -	    $source_switch = " -c" if $funkyftp =~ /\bncftp$/;
      -	    $CPAN::Frontend->myprint(
      -		  qq[
      +	  next unless exists $CPAN::Config->{$f};
      +	  $funkyftp = $CPAN::Config->{$f};
      +	  next unless defined $funkyftp;
      +	  next if $funkyftp =~ /^\s*$/;
      +	  my($want_compressed);
      +	  my $aslocal_uncompressed;
      +	  ($aslocal_uncompressed = $aslocal) =~ s/\.gz//;
      +	  my($source_switch) = "";
      +	  if ($f eq "lynx"){
      +	    $source_switch = " -source";
      +	  } elsif ($f eq "ncftp"){
      +	    $source_switch = " -c";
      +	  }
      +	  my($chdir) = "";
      +	  my($stdout_redir) = " > $aslocal_uncompressed";
      +	  if ($f eq "ncftpget"){
      +	    $chdir = "cd $aslocal_dir && ";
      +	    $stdout_redir = "";
      +	  }
      +	  $CPAN::Frontend->myprint(
      +				   qq[
       Trying with "$funkyftp$source_switch" to get
           $url
       ]);
      -	    my($system) = "$funkyftp$source_switch '$url' $devnull > ".
      -		"$aslocal_uncompressed";
      +	  my($system) =
      +	      "$chdir$funkyftp$source_switch '$url' $devnull$stdout_redir";
      +	  $self->debug("system[$system]") if $CPAN::DEBUG;
      +	  my($wstatus);
      +	  if (($wstatus = system($system)) == 0
      +	      &&
      +	      ($f eq "lynx" ?
      +	       -s $aslocal_uncompressed   # lynx returns 0 on my
      +                                          # system even if it fails
      +	       : 1
      +	      )
      +	     ) {
      +	    if (-s $aslocal) {
      +	      # Looks good
      +	    } elsif ($aslocal_uncompressed ne $aslocal) {
      +	      # test gzip integrity
      +	      if (
      +		  CPAN::Tarzip->gtest($aslocal_uncompressed)
      +		 ) {
      +		rename $aslocal_uncompressed, $aslocal;
      +	      } else {
      +		CPAN::Tarzip->gzip($aslocal_uncompressed,
      +				   "$aslocal_uncompressed.gz");
      +	      }
      +	    }
      +	    $Thesite = $i;
      +	    return $aslocal;
      +	  } elsif ($url !~ /\.gz\z/) {
      +	    unlink $aslocal_uncompressed if
      +		-f $aslocal_uncompressed && -s _ == 0;
      +	    my $gz = "$aslocal.gz";
      +	    my $gzurl = "$url.gz";
      +	    $CPAN::Frontend->myprint(
      +				     qq[
      +Trying with "$funkyftp$source_switch" to get
      +  $url.gz
      +]);
      +	    my($system) = "$funkyftp$source_switch '$url.gz' $devnull > ".
      +		"$aslocal_uncompressed.gz";
       	    $self->debug("system[$system]") if $CPAN::DEBUG;
       	    my($wstatus);
       	    if (($wstatus = system($system)) == 0
       		&&
      -		-s $aslocal_uncompressed   # lynx returns 0 on my
      -                                           # system even if it fails
      +		-s "$aslocal_uncompressed.gz"
       	       ) {
      -		if ($aslocal_uncompressed ne $aslocal) {
      -		  # test gzip integrity
      -		  if (
      -		      CPAN::Tarzip->gtest($aslocal_uncompressed)
      -		     ) {
      -		    rename $aslocal_uncompressed, $aslocal;
      -		  } else {
      -		    CPAN::Tarzip->gzip($aslocal_uncompressed,
      -				     "$aslocal_uncompressed.gz");
      -		  }
      -		}
      -		$Thesite = $i;
      -		return $aslocal;
      -	    } elsif ($url !~ /\.gz$/) {
      -	      unlink $aslocal_uncompressed if
      -		  -f $aslocal_uncompressed && -s _ == 0;
      -	      my $gz = "$aslocal.gz";
      -	      my $gzurl = "$url.gz";
      -	      $CPAN::Frontend->myprint(
      -		      qq[
      -Trying with "$funkyftp$source_switch" to get
      -  $url.gz
      -]);
      -	      my($system) = "$funkyftp$source_switch '$url.gz' $devnull > ".
      -		  "$aslocal_uncompressed.gz";
      -	      $self->debug("system[$system]") if $CPAN::DEBUG;
      -	      my($wstatus);
      -	      if (($wstatus = system($system)) == 0
      -		  &&
      -		  -s "$aslocal_uncompressed.gz"
      -		 ) {
      -		# test gzip integrity
      -		if (CPAN::Tarzip->gtest("$aslocal_uncompressed.gz")) {
      -		  CPAN::Tarzip->gunzip("$aslocal_uncompressed.gz",
      -				       $aslocal);
      -		} else {
      -		  rename $aslocal_uncompressed, $aslocal;
      -		}
      -		$Thesite = $i;
      -		return $aslocal;
      +	      # test gzip integrity
      +	      if (CPAN::Tarzip->gtest("$aslocal_uncompressed.gz")) {
      +		CPAN::Tarzip->gunzip("$aslocal_uncompressed.gz",
      +				     $aslocal);
       	      } else {
      -		unlink "$aslocal_uncompressed.gz" if
      -		    -f "$aslocal_uncompressed.gz";
      +		rename $aslocal_uncompressed, $aslocal;
       	      }
      +	      $Thesite = $i;
      +	      return $aslocal;
       	    } else {
      -		my $estatus = $wstatus >> 8;
      -		my $size = -f $aslocal ? ", left\n$aslocal with size ".-s _ : "";
      -		$CPAN::Frontend->myprint(qq{
      +	      unlink "$aslocal_uncompressed.gz" if
      +		  -f "$aslocal_uncompressed.gz";
      +	    }
      +	  } else {
      +	    my $estatus = $wstatus >> 8;
      +	    my $size = -f $aslocal ?
      +		", left\n$aslocal with size ".-s _ :
      +		    "\nWarning: expected file [$aslocal] doesn't exist";
      +	    $CPAN::Frontend->myprint(qq{
       System call "$system"
       returned status $estatus (wstat $wstatus)$size
       });
      -	    }
      +	  }
       	}
           }
       }
      @@ -2208,12 +2322,12 @@ sub hosthardest {
       	    next;
       	}
       	my($host,$dir,$getfile) = ($1,$2,$3);
      -	my($netrcfile,$fh);
       	my $timestamp = 0;
       	my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,
       	   $ctime,$blksize,$blocks) = stat($aslocal);
       	$timestamp = $mtime ||= 0;
       	my($netrc) = CPAN::FTP::netrc->new;
      +	my($netrcfile) = $netrc->netrc;
       	my($verbose) = $CPAN::DEBUG{'FTP'} & $CPAN::DEBUG ? " -v" : "";
       	my $targetfile = File::Basename::basename($aslocal);
       	my(@dialog);
      @@ -2226,7 +2340,7 @@ sub hosthardest {
       	     "get $getfile $targetfile",
       	     "quit"
       	    );
      -	if (! $netrc->netrc) {
      +	if (! $netrcfile) {
       	    CPAN->debug("No ~/.netrc file found") if $CPAN::DEBUG;
       	} elsif ($netrc->hasdefault || $netrc->contains($host)) {
       	    CPAN->debug(sprintf("hasdef[%d]cont($host)[%d]",
      @@ -2463,10 +2577,10 @@ sub cpl {
       		       /^$word/,
       		       sort qw(
       			       ! a b d h i m o q r u autobundle clean
      -			       make test install force reload look
      +			       make test install force reload look cvs_import
       			      )
       		      );
      -    } elsif ( $line !~ /^[\!abdhimorutl]/ ) {
      +    } elsif ( $line !~ /^[\!abcdhimorutl]/ ) {
       	@return = ();
           } elsif ($line =~ /^a\s/) {
       	@return = cplx('CPAN::Author',$word);
      @@ -2474,7 +2588,7 @@ sub cpl {
       	@return = cplx('CPAN::Bundle',$word);
           } elsif ($line =~ /^d\s/) {
       	@return = cplx('CPAN::Distribution',$word);
      -    } elsif ($line =~ /^([mru]|make|clean|test|install|readme|look)\s/ ) {
      +    } elsif ($line =~ /^([mru]|make|clean|test|install|readme|look|cvs_import)\s/ ) {
       	@return = (cplx('CPAN::Module',$word),cplx('CPAN::Bundle',$word));
           } elsif ($line =~ /^i\s/) {
       	@return = cpl_any($word);
      @@ -2552,10 +2666,15 @@ sub reload {
           # XXX check if a newer one is available. (We currently read it
           # from time to time)
           for ($CPAN::Config->{index_expire}) {
      -	$_ = 0.001 unless $_ > 0.001;
      +	$_ = 0.001 unless $_ && $_ > 0.001;
           }
           return if $last_time + $CPAN::Config->{index_expire}*86400 > $time
       	and ! $force;
      +    ## IFF we are developing, it helps to wipe out the memory between
      +    ## reloads, otherwise it is not what a user expects.
      +
      +    ## undef $CPAN::META; # Neue Gruendlichkeit since v1.52(r1.274)
      +    ## $CPAN::META = CPAN->new;
           my($debug,$t2);
           $last_time = $time;
       
      @@ -2675,7 +2794,7 @@ sub rd_modpacks {
       	my($mod,$version,$dist) = split;
       ###	$version =~ s/^\+//;
       
      -	# if it is a bundle, instatiate a bundle object
      +	# if it is a bundle, instantiate a bundle object
       	my($bundle,$id,$userid);
       
       	if ($mod eq 'CPAN' &&
      @@ -2688,6 +2807,7 @@ sub rd_modpacks {
       	    if ($version > $CPAN::VERSION){
       		$CPAN::Frontend->myprint(qq{
         There\'s a new CPAN.pm version (v$version) available!
      +  [Current version is v$CPAN::VERSION]
         You might want to try
           install Bundle::CPAN
           reload cpan
      @@ -2731,12 +2851,20 @@ sub rd_modpacks {
       	}
       
       	# instantiate a distribution object
      -	unless ($CPAN::META->exists('CPAN::Distribution',$dist)) {
      -	    $CPAN::META->instance(
      -				  'CPAN::Distribution' => $dist
      -				 )->set(
      -					'CPAN_USERID' => $userid
      -				       );
      +	if ($CPAN::META->exists('CPAN::Distribution',$dist)) {
      +	  # we do not need CONTAINSMODS unless we do something with
      +	  # this dist, so we better produce it on demand.
      +
      +	  ## my $obj = $CPAN::META->instance(
      +	  ## 				  'CPAN::Distribution' => $dist
      +	  ## 				 );
      +	  ## $obj->{CONTAINSMODS}{$mod} = undef; # experimental
      +	} else {
      +	  $CPAN::META->instance(
      +				'CPAN::Distribution' => $dist
      +			       )->set(
      +				      'CPAN_USERID' => $userid
      +				     );
       	}
       
       	return if $CPAN::Signal;
      @@ -2829,9 +2957,15 @@ sub as_string {
       	  $extra .= ")";
       	}
       	if (ref($self->{$_}) eq "ARRAY") { # language interface? XXX
      -	    push @m, sprintf "    %-12s %s%s\n", $_, "@{$self->{$_}}", $extra;
      +	  push @m, sprintf "    %-12s %s%s\n", $_, "@{$self->{$_}}", $extra;
      +	} elsif (ref($self->{$_}) eq "HASH") {
      +	  push @m, sprintf(
      +			   "    %-12s %s%s\n",
      +			   $_,
      +			   join(" ",keys %{$self->{$_}}),
      +			   $extra);
       	} else {
      -	    push @m, sprintf "    %-12s %s%s\n", $_, $self->{$_}, $extra;
      +	  push @m, sprintf "    %-12s %s%s\n", $_, $self->{$_}, $extra;
       	}
           }
           join "", @m, "\n";
      @@ -2843,6 +2977,12 @@ sub author {
           $CPAN::META->instance(CPAN::Author,$self->{CPAN_USERID})->fullname;
       }
       
      +sub dump {
      +  my($self) = @_;
      +  require Data::Dumper;
      +  Data::Dumper::Dumper($self);
      +}
      +
       package CPAN::Author;
       
       #-> sub CPAN::Author::as_glimpse ;
      @@ -2870,6 +3010,25 @@ sub email    { shift->{'EMAIL'} }
       
       package CPAN::Distribution;
       
      +#-> sub CPAN::Distribution::as_string ;
      +sub as_string {
      +  my $self = shift;
      +  $self->containsmods;
      +  $self->SUPER::as_string(@_);
      +}
      +
      +#-> sub CPAN::Distribution::containsmods ;
      +sub containsmods {
      +  my $self = shift;
      +  return if exists $self->{CONTAINSMODS};
      +  for my $mod ($CPAN::META->all_objects("CPAN::Module")) {
      +    my $mod_file = $mod->{CPAN_FILE} or next;
      +    my $dist_id = $self->{ID} or next;
      +    my $mod_id = $mod->{ID} or next;
      +    $self->{CONTAINSMODS}{$mod_id} = undef if $mod_file eq $dist_id;
      +  }
      +}
      +
       #-> sub CPAN::Distribution::called_for ;
       sub called_for {
           my($self,$id) = @_;
      @@ -2919,11 +3078,11 @@ sub get {
           $self->debug("Changed directory to tmp") if $CPAN::DEBUG;
           if (! $local_file) {
       	Carp::croak "bad download, can't do anything :-(\n";
      -    } elsif ($local_file =~ /(\.tar\.(gz|Z)|\.tgz)$/i){
      +    } elsif ($local_file =~ /(\.tar\.(gz|Z)|\.tgz)\z/i){
       	$self->untar_me($local_file);
      -    } elsif ( $local_file =~ /\.zip$/i ) {
      +    } elsif ( $local_file =~ /\.zip\z/i ) {
       	$self->unzip_me($local_file);
      -    } elsif ( $local_file =~ /\.pm\.(gz|Z)$/) {
      +    } elsif ( $local_file =~ /\.pm\.(gz|Z)\z/) {
       	$self->pm2dir_me($local_file);
           } else {
       	$self->{archived} = "NO";
      @@ -2934,7 +3093,7 @@ sub get {
       	# Let's check if the package has its own directory.
       	my $dh = DirHandle->new(File::Spec->curdir)
       	    or Carp::croak("Couldn't opendir .: $!");
      -	my @readdir = grep $_ !~ /^\.\.?$/, $dh->read; ### MAC??
      +	my @readdir = grep $_ !~ /^\.\.?\z/s, $dh->read; ### MAC??
       	$dh->close;
       	my ($distdir,$packagedir);
       	if (@readdir == 1 && -d $readdir[0]) {
      @@ -3024,7 +3183,7 @@ sub pm2dir_me {
           my($self,$local_file) = @_;
           $self->{archived} = "pm";
           my $to = File::Basename::basename($local_file);
      -    $to =~ s/\.(gz|Z)$//;
      +    $to =~ s/\.(gz|Z)\z//;
           if (CPAN::Tarzip->gunzip($local_file,$to)) {
       	$self->{unwrapped} = "YES";
           } else {
      @@ -3075,6 +3234,44 @@ Please define it with "o conf shell "
           chdir($pwd);
       }
       
      +sub cvs_import {
      +    my($self) = @_;
      +    $self->get;
      +    my $dir = $self->dir;
      +
      +    my $package = $self->called_for;
      +    my $module = $CPAN::META->instance('CPAN::Module', $package);
      +    my $version = $module->cpan_version;
      +
      +    my $userid = $self->{CPAN_USERID};
      +
      +    my $cvs_dir = (split '/', $dir)[-1];
      +    $cvs_dir =~ s/-\d+[^-]+\z//;
      +    my $cvs_root = 
      +      $CPAN::Config->{cvsroot} || $ENV{CVSROOT};
      +    my $cvs_site_perl = 
      +      $CPAN::Config->{cvs_site_perl} || $ENV{CVS_SITE_PERL};
      +    if ($cvs_site_perl) {
      +	$cvs_dir = "$cvs_site_perl/$cvs_dir";
      +    }
      +    my $cvs_log = qq{"imported $package $version sources"};
      +    $version =~ s/\./_/g;
      +    my @cmd = ('cvs', '-d', $cvs_root, 'import', '-m', $cvs_log,
      +	       "$cvs_dir", $userid, "v$version");
      +
      +    my $getcwd;
      +    $getcwd = $CPAN::Config->{'getcwd'} || 'cwd';
      +    my $pwd  = CPAN->$getcwd();
      +    chdir($dir);
      +
      +    $CPAN::Frontend->myprint(qq{Working directory is $dir\n});
      +
      +    $CPAN::Frontend->myprint(qq{@cmd\n});
      +    system(@cmd) == 0 or 
      +	$CPAN::Frontend->mydie("cvs import failed");
      +    chdir($pwd);
      +}
      +
       #-> sub CPAN::Distribution::readme ;
       sub readme {
           my($self) = @_;
      @@ -3146,7 +3343,7 @@ sub verifyMD5 {
       	$lc_file = CPAN::FTP->localize("authors/id/@local",
       				       "$lc_want.gz",1);
       	if ($lc_file) {
      -	    $lc_file =~ s/\.gz$//;
      +	    $lc_file =~ s/\.gz\z//;
       	    CPAN::Tarzip->gunzip("$lc_file.gz",$lc_file);
       	} else {
       	    return;
      @@ -3193,7 +3390,7 @@ sub MD5_check_file {
       	  my $md5 = MD5->new;
       	  my($data,$ref);
       	  $ref = \$data;
      -	  while ($fh->READ($ref, 4096)){
      +	  while ($fh->READ($ref, 4096) > 0){
       	    $md5->add($data);
       	  }
       	  my $hexdigest = $md5->hexdigest;
      @@ -3257,7 +3454,7 @@ sub force {
         $self->{'force_update'}++;
         for my $att (qw(
         MD5_STATUS archived build_dir localfile make install unwrapped
      -  writemakefile have_sponsored
      +  writemakefile
        )) {
           delete $self->{$att};
         }
      @@ -3271,8 +3468,8 @@ sub isa_perl {
       			    ([._-])
       			    (\d{3}(_[0-4][0-9])?)
       			    \.tar[._-]gz
      -			    $
      -			  }x;
      +			    \z
      +			  }xs;
         "$1.$3";
       }
       
      @@ -3338,8 +3535,8 @@ or
       	"had problems unarchiving. Please build manually";
       
       	exists $self->{writemakefile} &&
      -	    $self->{writemakefile} eq "NO" and push @e,
      -	    "Had some problem writing Makefile";
      +	    $self->{writemakefile} =~ m/ ^ NO\s* ( .* ) /sx and push @e,
      +		$1 || "Had some problem writing Makefile";
       
       	defined $self->{'make'} and push @e,
       	"Has already been processed within this session";
      @@ -3396,18 +3593,27 @@ or
       		kill 9, $pid;
       		waitpid $pid, 0;
       		$CPAN::Frontend->myprint($@);
      -		$self->{writemakefile} = "NO - $@";
      +		$self->{writemakefile} = "NO $@";
       		$@ = "";
       		return;
       	    }
       	} else {
       	  $ret = system($system);
       	  if ($ret != 0) {
      -	    $self->{writemakefile} = "NO";
      +	    $self->{writemakefile} = "NO Makefile.PL returned status $ret";
       	    return;
       	  }
       	}
      -	$self->{writemakefile} = "YES";
      +	if (-f "Makefile") {
      +	  $self->{writemakefile} = "YES";
      +	} else {
      +	  $self->{writemakefile} =
      +	      qq{NO Makefile.PL refused to write a Makefile.};
      +	  # It's probably worth to record the reason, so let's retry
      +	  # local $/;
      +	  # my $fh = IO::File->new("$system |"); # STDERR? STDIN?
      +	  # $self->{writemakefile} .= <$fh>;
      +	}
           }
           return if $CPAN::Signal;
           if (my @prereq = $self->needs_prereq){
      @@ -3441,7 +3647,7 @@ of modules we are processing right now?", "yes");
       	 $CPAN::Frontend->myprint("  $system -- OK\n");
       	 $self->{'make'} = "YES";
           } else {
      -	 $self->{writemakefile} = "YES";
      +	 $self->{writemakefile} ||= "YES";
       	 $self->{'make'} = "NO";
       	 $CPAN::Frontend->myprint("  $system -- NOT OK\n");
           }
      @@ -3474,7 +3680,7 @@ sub needs_prereq {
           next if $mo->uptodate;
           # it's not needed, so don't push it. We cannot omit this step, because
           # if 'force' is in effect, nobody else will check.
      -    if ($self->{'have_sponsored'}{$p}++){
      +    if ($self->{have_sponsored}{$p}++){
             # We have already sponsored it and for some reason it's still
             # not available. So we do nothing. Or what should we do?
             # if we push it again, we have a potential infinite loop
      @@ -3657,13 +3863,14 @@ sub contains {
         my $fh = FileHandle->new;
         local $/ = "\n";
         open($fh,$parsefile) or die "Could not open '$parsefile': $!";
      -  my $inpod = 0;
      +  my $in_cont = 0;
         $self->debug("parsefile[$parsefile]") if $CPAN::DEBUG;
         while (<$fh>) {
      -    $inpod = m/^=(?!head1\s+CONTENTS)/ ? 0 :
      -	m/^=head1\s+CONTENTS/ ? 1 : $inpod;
      -    next unless $inpod;
      +    $in_cont = m/^=(?!head1\s+CONTENTS)/ ? 0 :
      +	m/^=head1\s+CONTENTS/ ? 1 : $in_cont;
      +    next unless $in_cont;
           next if /^=/;
      +    s/\#.*//;
           next if /^\s+$/;
           chomp;
           push @result, (split " ", $_, 2)[0];
      @@ -3709,7 +3916,7 @@ sub find_bundle_file {
             $what2 =~ s/:Bundle://;
             $what2 =~ tr|:|/|;
           } else {
      -	$what2 =~ s|Bundle/||;
      +	$what2 =~ s|Bundle[/\\]||;
           }
           my $bu;
           while (<$fh>) {
      @@ -3775,13 +3982,19 @@ explicitly a file $s.
           # recap with less noise
           if ( $meth eq "install") {
       	if (%fail) {
      -	    $CPAN::Frontend->myprint(qq{\nBundle summary: }.
      -				     qq{The following items seem to }.
      -				     qq{have had installation problems:\n});
      +	    require Text::Wrap;
      +	    my $raw = sprintf(qq{Bundle summary:
      +The following items in bundle %s had installation problems:},
      +			      $self->id
      +			     );
      +	    $CPAN::Frontend->myprint(Text::Wrap::fill("","",$raw));
      +	    $CPAN::Frontend->myprint("\n");
      +	    my $paragraph = "";
       	    for $s ($self->contains) {
      -		$CPAN::Frontend->myprint( "$s " ) if $fail{$s};
      +		$paragraph .= "$s " if $fail{$s};
       	    }
      -	    $CPAN::Frontend->myprint(qq{\n});
      +	    $CPAN::Frontend->myprint(Text::Wrap::fill("  ","  ",$paragraph));
      +	    $CPAN::Frontend->myprint("\n");
       	} else {
       	    $self->{'install'} = 'YES';
       	}
      @@ -3911,7 +4124,7 @@ sub as_string {
       sub manpage_headline {
         my($self,$local_file) = @_;
         my(@local_file) = $local_file;
      -  $local_file =~ s/\.pm$/.pod/;
      +  $local_file =~ s/\.pm\z/.pod/;
         push @local_file, $local_file;
         my(@result,$locf);
         for $locf (@local_file) {
      @@ -4011,6 +4224,8 @@ sub rematein {
       sub readme { shift->rematein('readme') }
       #-> sub CPAN::Module::look ;
       sub look { shift->rematein('look') }
      +#-> sub CPAN::Module::cvs_import ;
      +sub cvs_import { shift->rematein('cvs_import') }
       #-> sub CPAN::Module::get ;
       sub get    { shift->rematein('get',@_); }
       #-> sub CPAN::Module::make ;
      @@ -4091,7 +4306,7 @@ sub inst_version {
           local($^W) = 0 if $] < 5.00303 && $ExtUtils::MakeMaker::VERSION < 5.38;
           # warn "HERE";
           my $have = MM->parse_version($parsefile) || "undef";
      -    $have =~ s/\s+//g;
      +    $have =~ s/\s*//g; # stringify to float around floating point issues
           $have;
       }
       
      @@ -4174,7 +4389,7 @@ sub READLINE {
           my $gz = $self->{GZ};
           my($line,$bytesread);
           $bytesread = $gz->gzreadline($line);
      -    return undef if $bytesread == 0;
      +    return undef if $bytesread <= 0;
           return $line;
         } else {
           my $fh = $self->{FH};
      @@ -4202,7 +4417,7 @@ sub DESTROY {
           $gz->gzclose();
         } else {
           my $fh = $self->{FH};
      -    $fh->close;
      +    $fh->close if defined $fh;
         }
         undef $self;
       }
      @@ -4213,29 +4428,30 @@ sub untar {
         if (MM->maybe_command($CPAN::Config->{'gzip'})
             &&
             MM->maybe_command($CPAN::Config->{'tar'})) {
      -    if ($^O =~ /win/i) { # irgggh
      -	# people find the most curious tar binaries that cannot handle
      -	# pipes
      -	my $system = "$CPAN::Config->{'gzip'} --decompress $file";
      -	if (system($system)==0) {
      -	    $CPAN::Frontend->myprint(qq{Uncompressed $file successfully\n});
      -	} else {
      -	    $CPAN::Frontend->mydie(
      -				   qq{Couldn\'t uncompress $file\n}
      -				  );
      -	}
      -	$file =~ s/\.gz$//;
      -	$system = "$CPAN::Config->{tar} xvf $file";
      -	if (system($system)==0) {
      -	    $CPAN::Frontend->myprint(qq{Untarred $file successfully\n});
      -	} else {
      -	    $CPAN::Frontend->mydie(qq{Couldn\'t untar $file\n});
      -	}
      -	return 1;
      +    my $system = "$CPAN::Config->{'gzip'} --decompress --stdout " .
      +      "< $file | $CPAN::Config->{tar} xvf -";
      +    if (system($system) != 0) {
      +      # people find the most curious tar binaries that cannot handle
      +      # pipes
      +      my $system = "$CPAN::Config->{'gzip'} --decompress $file";
      +      if (system($system)==0) {
      +	$CPAN::Frontend->myprint(qq{Uncompressed $file successfully\n});
      +      } else {
      +	$CPAN::Frontend->mydie(
      +			       qq{Couldn\'t uncompress $file\n}
      +			      );
      +      }
      +      $file =~ s/\.gz\z//;
      +      $system = "$CPAN::Config->{tar} xvf $file";
      +      $CPAN::Frontend->myprint(qq{Using Tar:$system:\n});
      +      if (system($system)==0) {
      +	$CPAN::Frontend->myprint(qq{Untarred $file successfully\n});
      +      } else {
      +	$CPAN::Frontend->mydie(qq{Couldn\'t untar $file\n});
      +      }
      +      return 1;
           } else {
      -	my $system = "$CPAN::Config->{'gzip'} --decompress --stdout " .
      -	    "< $file | $CPAN::Config->{tar} xvf -";
      -	return system($system) == 0;
      +      return 1;
           }
         } elsif ($CPAN::META->has_inst("Archive::Tar")
             &&
      @@ -4291,8 +4507,8 @@ Modules are fetched from one or more of the mirrored CPAN
       directory.
       
       The CPAN module also supports the concept of named and versioned
      -'bundles' of modules. Bundles simplify the handling of sets of
      -related modules. See BUNDLES below.
      +I of modules. Bundles simplify the handling of sets of
      +related modules. See Bundles below.
       
       The package contains a session manager and a cache manager. There is
       no status retained between sessions. The session manager keeps track
      @@ -4343,29 +4559,14 @@ objects. The parser recognizes a regular expression only if you
       enclose it between two slashes.
       
       The principle is that the number of found objects influences how an
      -item is displayed. If the search finds one item, the result is displayed
      -as object-Eas_string, but if we find more than one, we display
      -each as object-Eas_glimpse. E.g.
      -
      -    cpan> a ANDK
      -    Author id = ANDK
      -	EMAIL        a.koenig@franz.ww.TU-Berlin.DE
      -	FULLNAME     Andreas König
      -
      -
      -    cpan> a /andk/
      -    Author id = ANDK
      -	EMAIL        a.koenig@franz.ww.TU-Berlin.DE
      -	FULLNAME     Andreas König
      -
      -
      -    cpan> a /and.*rt/
      -    Author          ANDYD (Andy Dougherty)
      -    Author          MERLYN (Randal L. Schwartz)
      +item is displayed. If the search finds one item, the result is
      +displayed with the rather verbose method C, but if we find
      +more than one, we display each object with the terse method
      +.
       
       =item make, test, install, clean  modules or distributions
       
      -These commands take any number of arguments and investigates what is
      +These commands take any number of arguments and investigate what is
       necessary to perform the action. If the argument is a distribution
       file name (recognized by embedded slashes), it is processed. If it is
       a module, CPAN determines the distribution file in which this module
      @@ -4407,12 +4608,11 @@ A C command results in a
       
       being executed within the distribution file's working directory.
       
      -=item readme, look module or distribution
      +=item get, readme, look module or distribution
       
      -These two commands take only one argument, be it a module or a
      -distribution file. C unconditionally runs, displaying the
      -README of the associated distribution file. C gets and
      -untars (if not yet done) the distribution file, changes to the
      +C downloads a distribution file without further action. C
      +displays the README file of the associated distribution. C gets
      +and untars (if not yet done) the distribution file, changes to the
       appropriate directory and opens a subshell process in that directory.
       
       =item Signals
      @@ -4513,8 +4713,8 @@ functions in the calling package (C).
       There's currently only one class that has a stable interface -
       CPAN::Shell. All commands that are available in the CPAN shell are
       methods of the class CPAN::Shell. Each of the commands that produce
      -listings of modules (C, C, C) returns a list of the
      -IDs of all modules within the list.
      +listings of modules (C, C, C) also return a list of
      +the IDs of all modules within the list.
       
       =over 2
       
      @@ -4549,6 +4749,41 @@ functionalities that are available in the shell.
       	print "No VERSION in ", $mod->id, "\n";
           }
       
      +Or if you want to write a cronjob to watch The CPAN, you could list
      +all modules that need updating:
      +
      +    perl -e 'use CPAN; CPAN::Shell->r;'
      +
      +If you don't want to get any output if all modules are up to date, you
      +can parse the output of above command for the regular expression
      +//modules are up to date// and decide to mail the output only if it
      +doesn't match. Ick?
      +
      +If you prefer to do it more in a programmer style in one single
      +process, maybe something like this suites you better:
      +
      +  # list all modules on my disk that have newer versions on CPAN
      +  for $mod (CPAN::Shell->expand("Module","/./")){
      +    next unless $mod->inst_file;
      +    next if $mod->uptodate;
      +    printf "Module %s is installed as %s, could be updated to %s from CPAN\n",
      +        $mod->id, $mod->inst_version, $mod->cpan_version;
      +  }
      +
      +If that gives you too much output every day, you maybe only want to
      +watch for three modules. You can write
      +
      +  for $mod (CPAN::Shell->expand("Module","/Apache|LWP|CGI/")){
      +
      +as the first line instead. Or you can combine some of the above
      +tricks:
      +
      +  # watch only for a new mod_perl module
      +  $mod = CPAN::Shell->expand("Module","mod_perl");
      +  exit if $mod->uptodate;
      +  # new mod_perl arrived, let me know all update recommendations
      +  CPAN::Shell->r;
      +
       =back
       
       =head2 Methods in the four Classes
      @@ -4666,7 +4901,7 @@ you might use CPAN.pm to put together all you need on a networked
       machine. Then copy the $CPAN::Config->{keep_source_where} (but not
       $CPAN::Config->{build_dir}) directory on a floppy. This floppy is kind
       of a personal CPAN. CPAN.pm on the non-networked machines works nicely
      -with this floppy.
      +with this floppy. See also below the paragraph about CD-ROM support.
       
       =head1 CONFIGURATION
       
      @@ -4689,7 +4924,6 @@ defined:
                            many seconds inactivity. Set to 0 to never break.
         inhibit_startup_message
                            if true, does not print the startup message
      -  keep_source        keep the source in a local directory?
         keep_source_where  directory in which to keep the source (if we do)
         make               location of external make program
         make_arg	     arguments that should always be passed to 'make'
      @@ -4713,29 +4947,40 @@ shell with the command set defined within the C command:
       
       =over 2
       
      -=item o conf Escalar optionE
      +=item Cscalar optionE>
       
       prints the current value of the I
       
      -=item o conf Escalar optionE EvalueE
      +=item Cscalar optionE EvalueE>
       
       Sets the value of the I to I
       
      -=item o conf Elist optionE
      +=item Clist optionE>
       
       prints the current value of the I in MakeMaker's
       neatvalue format.
       
      -=item o conf Elist optionE [shift|pop]
      +=item Clist optionE [shift|pop]>
       
       shifts or pops the array in the I variable
       
      -=item o conf Elist optionE [unshift|push|splice] ElistE
      +=item Clist optionE [unshift|push|splice] ElistE>
       
       works like the corresponding perl commands.
       
       =back
       
      +=head2 Note on urllist parameter's format
      +
      +urllist parameters are URLs according to RFC 1738. We do a little
      +guessing if your URL is not compliant, but if you have problems with file URLs, please try the correct format. Either:
      +
      +    file://localhost/whatever/ftp/pub/CPAN/
      +
      +or
      +
      +    file:///home/ftp/pub/CPAN/
      +
       =head2 urllist parameter has CD-ROM support
       
       The C parameter of the configuration table contains a list of
      @@ -4780,28 +5025,30 @@ To populate a freshly installed perl with my favorite modules is pretty
       easiest by maintaining a private bundle definition file. To get a useful
       blueprint of a bundle definition file, the command autobundle can be used
       on the CPAN shell command line. This command writes a bundle definition
      -file for all modules that re installed for the currently running perl
      +file for all modules that are installed for the currently running perl
       interpreter. It's recommended to run this command only once and from then
       on maintain the file manually under a private name, say
       Bundle/my_bundle.pm. With a clever bundle file you can then simply say
       
           cpan> install Bundle::my_bundle
       
      -then answer a few questions and then go out.
      +then answer a few questions and then go out for a coffee.
       
      -Maintaining a bundle definition file means to keep track of two things:
      -dependencies and interactivity. CPAN.pm (currently) does not take into
      -account dependencies between distributions, so a bundle definition file
      -should specify distributions that depend on others B the others.
      -On the other hand, it's a bit annoying that many distributions need some
      -interactive configuring. So what I try to accomplish in my private bundle
      -file is to have the packages that need to be configured early in the file
      -and the gentle ones later, so I can go out after a few minutes and leave
      -CPAN.pm unattained.
      +Maintaining a bundle definition file means to keep track of two
      +things: dependencies and interactivity. CPAN.pm sometimes fails on
      +calculating dependencies because not all modules define all MakeMaker
      +attributes correctly, so a bundle definition file should specify
      +prerequisites as early as possible. On the other hand, it's a bit
      +annoying that many distributions need some interactive configuring. So
      +what I try to accomplish in my private bundle file is to have the
      +packages that need to be configured early in the file and the gentle
      +ones later, so I can go out after a few minutes and leave CPAN.pm
      +unattained.
       
       =head1 WORKING WITH CPAN.pm BEHIND FIREWALLS
       
      -Thanks to Graham Barr for contributing the firewall following howto.
      +Thanks to Graham Barr for contributing the following paragraphs about
      +the interaction between perl, and various firewall configurations.
       
       Firewalls can be categorized into three basic types.
       
      @@ -4820,10 +5067,10 @@ ftp) you will need to use LWP.
       
       =item ftp firewall
       
      -This where the firewall machine runs a ftp server. This kind of firewall will
      -only let you access ftp serves outside the firewall. This is usually done by
      -connecting to the firewall with ftp, then entering a username like
      -"user@outside.host.com"
      +This where the firewall machine runs a ftp server. This kind of
      +firewall will only let you access ftp servers outside the firewall.
      +This is usually done by connecting to the firewall with ftp, then
      +entering a username like "user@outside.host.com"
       
       To access servers outside these type of firewalls with perl you
       will need to use Net::FTP.
      @@ -4860,7 +5107,7 @@ special compiling is need as you can access hosts directly.
       
       =head1 BUGS
       
      -We should give coverage for _all_ of the CPAN and not just the PAUSE
      +We should give coverage for B of the CPAN and not just the PAUSE
       part, right? In this discussion CPAN and PAUSE have become equal --
       but they are not. PAUSE is authors/ and modules/. CPAN is PAUSE plus
       the clpa/, doc/, misc/, ports/, src/, scripts/.
      @@ -4875,7 +5122,7 @@ traditional method of building a Perl module package from a shell.
       
       =head1 AUTHOR
       
      -Andreas König Ea.koenig@kulturbox.deE
      +Andreas Koenig Eandreas.koenig@anima.deE
       
       =head1 SEE ALSO
       
      diff --git a/contrib/perl5/lib/CPAN/FirstTime.pm b/contrib/perl5/lib/CPAN/FirstTime.pm
      index df95812a1b45..0e795da4fb0a 100644
      --- a/contrib/perl5/lib/CPAN/FirstTime.pm
      +++ b/contrib/perl5/lib/CPAN/FirstTime.pm
      @@ -16,7 +16,7 @@ use FileHandle ();
       use File::Basename ();
       use File::Path ();
       use vars qw($VERSION);
      -$VERSION = substr q$Revision: 1.36 $, 10;
      +$VERSION = substr q$Revision: 1.38 $, 10;
       
       =head1 NAME
       
      @@ -77,7 +77,9 @@ dialog anytime later by typing 'o conf init' at the cpan prompt.)
       	*prompt = \&ExtUtils::MakeMaker::prompt;
             } else {
       	$fastread = 1;
      -	*prompt = sub {
      +	$CPAN::Config->{urllist} ||= [];
      +	# prototype should match that of &MakeMaker::prompt
      +	*prompt = sub ($;$) {
       	  my($q,$a) = @_;
       	  my($ret) = defined $a ? $a : "";
       	  printf qq{%s [%s]\n\n}, $q, $ret;
      @@ -358,16 +360,27 @@ sub conf_sites {
           require File::Copy;
           File::Copy::copy($m,$mby) or die "Could not update $mby: $!";
         }
      -  if ( ! -f $mby ){
      -    print qq{You have no $mby
      +  my $loopcount = 0;
      +  while () {
      +    if ( ! -f $mby ){
      +      print qq{You have no $mby
         I\'m trying to fetch one
       };
      -    $mby = CPAN::FTP->localize($m,$mby,3);
      -  } elsif (-M $mby > 30 ) {
      -    print qq{Your $mby is older than 30 days,
      +      $mby = CPAN::FTP->localize($m,$mby,3);
      +    } elsif (-M $mby > 60 && $loopcount == 0) {
      +      print qq{Your $mby is older than 60 days,
         I\'m trying to fetch one
       };
      -    $mby = CPAN::FTP->localize($m,$mby,3);
      +      $mby = CPAN::FTP->localize($m,$mby,3);
      +      $loopcount++;
      +    } elsif (-s $mby == 0) {
      +      print qq{You have an empty $mby,
      +  I\'m trying to fetch one
      +};
      +      $mby = CPAN::FTP->localize($m,$mby,3);
      +    } else {
      +      last;
      +    }
         }
         read_mirrored_by($mby);
       }
      diff --git a/contrib/perl5/lib/CPAN/Nox.pm b/contrib/perl5/lib/CPAN/Nox.pm
      index e9cb189f297f..8b59ca07a149 100644
      --- a/contrib/perl5/lib/CPAN/Nox.pm
      +++ b/contrib/perl5/lib/CPAN/Nox.pm
      @@ -1,7 +1,12 @@
       package CPAN::Nox;
      +use strict;
      +use vars qw($VERSION @EXPORT);
       
      -BEGIN{$CPAN::Suppress_readline=1 unless defined $CPAN::term;}
      +BEGIN{
      +  $CPAN::Suppress_readline=1 unless defined $CPAN::term;
      +}
       
      +use base 'Exporter';
       use CPAN;
       
       $VERSION = "1.00";
      @@ -12,6 +17,8 @@ $CPAN::META->has_inst('Compress::Zlib','no');
       
       *AUTOLOAD = \&CPAN::AUTOLOAD;
       
      +__END__
      +
       =head1 NAME
       
       CPAN::Nox - Wrapper around CPAN.pm without using any XS module
      diff --git a/contrib/perl5/lib/Carp.pm b/contrib/perl5/lib/Carp.pm
      index f8f750a5d715..43524ddbe54b 100644
      --- a/contrib/perl5/lib/Carp.pm
      +++ b/contrib/perl5/lib/Carp.pm
      @@ -94,98 +94,8 @@ sub export_fail {
       # each function call on the stack.
       
       sub longmess {
      -    return @_ if ref $_[0];
      -    my $error = join '', @_;
      -    my $mess = "";
      -    my $i = 1 + $CarpLevel;
      -    my ($pack,$file,$line,$sub,$hargs,$eval,$require);
      -    my (@a);
      -    #
      -    # crawl up the stack....
      -    #
      -    while (do { { package DB; @a = caller($i++) } } ) {
      -	# get copies of the variables returned from caller()
      -	($pack,$file,$line,$sub,$hargs,undef,$eval,$require) = @a;
      -	#
      -	# if the $error error string is newline terminated then it
      -	# is copied into $mess.  Otherwise, $mess gets set (at the end of
      -	# the 'else {' section below) to one of two things.  The first time
      -	# through, it is set to the "$error at $file line $line" message.
      -	# $error is then set to 'called' which triggers subsequent loop
      -	# iterations to append $sub to $mess before appending the "$error
      -	# at $file line $line" which now actually reads "called at $file line
      -	# $line".  Thus, the stack trace message is constructed:
      -	#
      -	#        first time: $mess  = $error at $file line $line
      -	#  subsequent times: $mess .= $sub $error at $file line $line
      -	#                                  ^^^^^^
      -	#                                 "called"
      -	if ($error =~ m/\n$/) {
      -	    $mess .= $error;
      -	} else {
      -	    # Build a string, $sub, which names the sub-routine called.
      -	    # This may also be "require ...", "eval '...' or "eval {...}"
      -	    if (defined $eval) {
      -		if ($require) {
      -		    $sub = "require $eval";
      -		} else {
      -		    $eval =~ s/([\\\'])/\\$1/g;
      -		    if ($MaxEvalLen && length($eval) > $MaxEvalLen) {
      -			substr($eval,$MaxEvalLen) = '...';
      -		    }
      -		    $sub = "eval '$eval'";
      -		}
      -	    } elsif ($sub eq '(eval)') {
      -		$sub = 'eval {...}';
      -	    }
      -	    # if there are any arguments in the sub-routine call, format
      -	    # them according to the format variables defined earlier in
      -	    # this file and join them onto the $sub sub-routine string
      -	    if ($hargs) {
      -		# we may trash some of the args so we take a copy
      -		@a = @DB::args;	# must get local copy of args
      -		# don't print any more than $MaxArgNums
      -		if ($MaxArgNums and @a > $MaxArgNums) {
      -		    # cap the length of $#a and set the last element to '...'
      -		    $#a = $MaxArgNums;
      -		    $a[$#a] = "...";
      -		}
      -		for (@a) {
      -		    # set args to the string "undef" if undefined
      -		    $_ = "undef", next unless defined $_;
      -		    if (ref $_) {
      -			# dunno what this is for...
      -			$_ .= '';
      -			s/'/\\'/g;
      -		    }
      -		    else {
      -			s/'/\\'/g;
      -			# terminate the string early with '...' if too long
      -			substr($_,$MaxArgLen) = '...'
      -			    if $MaxArgLen and $MaxArgLen < length;
      -		    }
      -		    # 'quote' arg unless it looks like a number
      -		    $_ = "'$_'" unless /^-?[\d.]+$/;
      -		    # print high-end chars as 'M-' or '^'
      -		    s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
      -		    s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
      -		}
      -		# append ('all', 'the', 'arguments') to the $sub string
      -		$sub .= '(' . join(', ', @a) . ')';
      -	    }
      -	    # here's where the error message, $mess, gets constructed
      -	    $mess .= "\t$sub " if $error eq "called";
      -	    $mess .= "$error at $file line $line\n";
      -	}
      -	# we don't need to print the actual error message again so we can
      -	# change this to "called" so that the string "$error at $file line
      -	# $line" makes sense as "called at $file line $line".
      -	$error = "called";
      -    }
      -    # this kludge circumvents die's incorrect handling of NUL
      -    my $msg = \($mess || $error);
      -    $$msg =~ tr/\0//d;
      -    $$msg;
      +    { local $@; require Carp::Heavy; }	# XXX fix require to not clear $@?
      +    goto &longmess_heavy;
       }
       
       
      @@ -196,78 +106,8 @@ sub longmess {
       # you always get a stack trace
       
       sub shortmess {	# Short-circuit &longmess if called via multiple packages
      -    goto &longmess if $Verbose;
      -    return @_ if ref $_[0];
      -    my $error = join '', @_;
      -    my ($prevpack) = caller(1);
      -    my $extra = $CarpLevel;
      -    my $i = 2;
      -    my ($pack,$file,$line);
      -    # when reporting an error, we want to report it from the context of the
      -    # calling package.  So what is the calling package?  Within a module,
      -    # there may be many calls between methods and perhaps between sub-classes
      -    # and super-classes, but the user isn't interested in what happens
      -    # inside the package.  We start by building a hash array which keeps
      -    # track of all the packages to which the calling package belongs.  We
      -    # do this by examining its @ISA variable.  Any call from a base class
      -    # method (one of our caller's @ISA packages) can be ignored
      -    my %isa = ($prevpack,1);
      -
      -    # merge all the caller's @ISA packages into %isa.
      -    @isa{@{"${prevpack}::ISA"}} = ()
      -	if(defined @{"${prevpack}::ISA"});
      -
      -    # now we crawl up the calling stack and look at all the packages in
      -    # there.  For each package, we look to see if it has an @ISA and then
      -    # we see if our caller features in that list.  That would imply that
      -    # our caller is a derived class of that package and its calls can also
      -    # be ignored
      -    while (($pack,$file,$line) = caller($i++)) {
      -	if(defined @{$pack . "::ISA"}) {
      -	    my @i = @{$pack . "::ISA"};
      -	    my %i;
      -	    @i{@i} = ();
      -	    # merge any relevant packages into %isa
      -	    @isa{@i,$pack} = ()
      -		if(exists $i{$prevpack} || exists $isa{$pack});
      -	}
      -
      -	# and here's where we do the ignoring... if the package in
      -	# question is one of our caller's base or derived packages then
      -	# we can ignore it (skip it) and go onto the next (but note that
      -	# the continue { } block below gets called every time)
      -	next
      -	    if(exists $isa{$pack});
      -
      -	# Hey!  We've found a package that isn't one of our caller's
      -	# clan....but wait, $extra refers to the number of 'extra' levels
      -	# we should skip up.  If $extra > 0 then this is a false alarm.
      -	# We must merge the package into the %isa hash (so we can ignore it
      -	# if it pops up again), decrement $extra, and continue.
      -	if ($extra-- > 0) {
      -	    %isa = ($pack,1);
      -	    @isa{@{$pack . "::ISA"}} = ()
      -		if(defined @{$pack . "::ISA"});
      -	}
      -	else {
      -	    # OK!  We've got a candidate package.  Time to construct the
      -	    # relevant error message and return it.   die() doesn't like
      -	    # to be given NUL characters (which $msg may contain) so we
      -	    # remove them first.
      -	    (my $msg = "$error at $file line $line\n") =~ tr/\0//d;
      -	    return $msg;
      -	}
      -    }
      -    continue {
      -	$prevpack = $pack;
      -    }
      -
      -    # uh-oh!  It looks like we crawled all the way up the stack and
      -    # never found a candidate package.  Oh well, let's call longmess
      -    # to generate a full stack trace.  We use the magical form of 'goto'
      -    # so that this shortmess() function doesn't appear on the stack
      -    # to further confuse longmess() about it's calling package.
      -    goto &longmess;
      +    { local $@; require Carp::Heavy; }	# XXX fix require to not clear $@?
      +    goto &shortmess_heavy;
       }
       
       
      diff --git a/contrib/perl5/lib/Carp/Heavy.pm b/contrib/perl5/lib/Carp/Heavy.pm
      new file mode 100644
      index 000000000000..5e3de49418b2
      --- /dev/null
      +++ b/contrib/perl5/lib/Carp/Heavy.pm
      @@ -0,0 +1,253 @@
      +package Carp;
      +
      +=head1 NAME
      +
      +Carp::Heavy - Carp guts
      +
      +=head1 SYNOPIS
      +
      +(internal use only)
      +
      +=head1 DESCRIPTION
      +
      +No user-serviceable parts inside.
      +
      +=cut
      +
      +# This package is heavily used. Be small. Be fast. Be good.
      +
      +# Comments added by Andy Wardley  09-Apr-98, based on an
      +# _almost_ complete understanding of the package.  Corrections and
      +# comments are welcome.
      +
      +# longmess() crawls all the way up the stack reporting on all the function
      +# calls made.  The error string, $error, is originally constructed from the
      +# arguments passed into longmess() via confess(), cluck() or shortmess().
      +# This gets appended with the stack trace messages which are generated for
      +# each function call on the stack.
      +
      +sub longmess_heavy {
      +    return @_ if ref $_[0];
      +    my $error = join '', @_;
      +    my $mess = "";
      +    my $i = 1 + $CarpLevel;
      +    my ($pack,$file,$line,$sub,$hargs,$eval,$require);
      +    my (@a);
      +    #
      +    # crawl up the stack....
      +    #
      +    while (do { { package DB; @a = caller($i++) } } ) {
      +	# get copies of the variables returned from caller()
      +	($pack,$file,$line,$sub,$hargs,undef,$eval,$require) = @a;
      +	#
      +	# if the $error error string is newline terminated then it
      +	# is copied into $mess.  Otherwise, $mess gets set (at the end of
      +	# the 'else {' section below) to one of two things.  The first time
      +	# through, it is set to the "$error at $file line $line" message.
      +	# $error is then set to 'called' which triggers subsequent loop
      +	# iterations to append $sub to $mess before appending the "$error
      +	# at $file line $line" which now actually reads "called at $file line
      +	# $line".  Thus, the stack trace message is constructed:
      +	#
      +	#        first time: $mess  = $error at $file line $line
      +	#  subsequent times: $mess .= $sub $error at $file line $line
      +	#                                  ^^^^^^
      +	#                                 "called"
      +	if ($error =~ m/\n$/) {
      +	    $mess .= $error;
      +	} else {
      +	    # Build a string, $sub, which names the sub-routine called.
      +	    # This may also be "require ...", "eval '...' or "eval {...}"
      +	    if (defined $eval) {
      +		if ($require) {
      +		    $sub = "require $eval";
      +		} else {
      +		    $eval =~ s/([\\\'])/\\$1/g;
      +		    if ($MaxEvalLen && length($eval) > $MaxEvalLen) {
      +			substr($eval,$MaxEvalLen) = '...';
      +		    }
      +		    $sub = "eval '$eval'";
      +		}
      +	    } elsif ($sub eq '(eval)') {
      +		$sub = 'eval {...}';
      +	    }
      +	    # if there are any arguments in the sub-routine call, format
      +	    # them according to the format variables defined earlier in
      +	    # this file and join them onto the $sub sub-routine string
      +	    if ($hargs) {
      +		# we may trash some of the args so we take a copy
      +		@a = @DB::args;	# must get local copy of args
      +		# don't print any more than $MaxArgNums
      +		if ($MaxArgNums and @a > $MaxArgNums) {
      +		    # cap the length of $#a and set the last element to '...'
      +		    $#a = $MaxArgNums;
      +		    $a[$#a] = "...";
      +		}
      +		for (@a) {
      +		    # set args to the string "undef" if undefined
      +		    $_ = "undef", next unless defined $_;
      +		    if (ref $_) {
      +			# force reference to string representation
      +			$_ .= '';
      +			s/'/\\'/g;
      +		    }
      +		    else {
      +			s/'/\\'/g;
      +			# terminate the string early with '...' if too long
      +			substr($_,$MaxArgLen) = '...'
      +			    if $MaxArgLen and $MaxArgLen < length;
      +		    }
      +		    # 'quote' arg unless it looks like a number
      +		    $_ = "'$_'" unless /^-?[\d.]+$/;
      +		    # print high-end chars as 'M-'
      +		    s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
      +		    # print remaining control chars as ^
      +		    s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
      +		}
      +		# append ('all', 'the', 'arguments') to the $sub string
      +		$sub .= '(' . join(', ', @a) . ')';
      +	    }
      +	    # here's where the error message, $mess, gets constructed
      +	    $mess .= "\t$sub " if $error eq "called";
      +	    $mess .= "$error at $file line $line";
      +	    if (defined &Thread::tid) {
      +		my $tid = Thread->self->tid;
      +		$mess .= " thread $tid" if $tid;
      +	    }
      +	    $mess .= "\n";
      +	}
      +	# we don't need to print the actual error message again so we can
      +	# change this to "called" so that the string "$error at $file line
      +	# $line" makes sense as "called at $file line $line".
      +	$error = "called";
      +    }
      +    # this kludge circumvents die's incorrect handling of NUL
      +    my $msg = \($mess || $error);
      +    $$msg =~ tr/\0//d;
      +    $$msg;
      +}
      +
      +
      +# ancestors() returns the complete set of ancestors of a module
      +
      +sub ancestors($$);
      +
      +sub ancestors($$){
      +    my( $pack, $href ) = @_;
      +    if( @{"${pack}::ISA"} ){
      +	my $risa = \@{"${pack}::ISA"};
      +	my %tree  = ();
      +	@tree{@$risa} = ();
      +	foreach my $mod ( @$risa ){
      +	    # visit ancestors - if not already in the gallery
      +	    if( ! defined( $$href{$mod} ) ){
      +		my @ancs = ancestors( $mod, $href );
      +		@tree{@ancs} = ();
      +	    }
      +	}
      +	return ( keys( %tree ) );
      +    } else {
      +	return ();
      +    }
      +}
      +
      +
      +# shortmess() is called by carp() and croak() to skip all the way up to
      +# the top-level caller's package and report the error from there.  confess()
      +# and cluck() generate a full stack trace so they call longmess() to
      +# generate that.  In verbose mode shortmess() calls longmess() so
      +# you always get a stack trace
      +
      +sub shortmess_heavy {	# Short-circuit &longmess if called via multiple packages
      +    goto &longmess_heavy if $Verbose;
      +    return @_ if ref $_[0];
      +    my $error = join '', @_;
      +    my ($prevpack) = caller(1);
      +    my $extra = $CarpLevel;
      +
      +    my @Clans = ( $prevpack );
      +    my $i = 2;
      +    my ($pack,$file,$line);
      +    # when reporting an error, we want to report it from the context of the
      +    # calling package.  So what is the calling package?  Within a module,
      +    # there may be many calls between methods and perhaps between sub-classes
      +    # and super-classes, but the user isn't interested in what happens
      +    # inside the package.  We start by building a hash array which keeps
      +    # track of all the packages to which the calling package belongs.  We
      +    # do this by examining its @ISA variable.  Any call from a base class
      +    # method (one of our caller's @ISA packages) can be ignored
      +    my %isa;
      +
      +    # merge all the caller's @ISA packages and ancestors into %isa.
      +    my @pars = ancestors( $prevpack, \%isa );
      +    @isa{@pars} = () if @pars;
      +    $isa{$prevpack} = 1;
      +
      +    # now we crawl up the calling stack and look at all the packages in
      +    # there.  For each package, we look to see if it has an @ISA and then
      +    # we see if our caller features in that list.  That would imply that
      +    # our caller is a derived class of that package and its calls can also
      +    # be ignored
      +CALLER:
      +    while (($pack,$file,$line) = caller($i++)) {
      +
      +        # Chances are, the caller's caller (or its caller...) is already
      +        # in the gallery - if so, ignore this caller.
      +        next if exists( $isa{$pack} );
      +
      +        # no: collect this module's ancestors.
      +        my @i = ancestors( $pack, \%isa );
      +        my %i;
      +        if( @i ){
      + 	    @i{@i} = ();
      +            # check whether our representative of one of the clans is
      +            # in this family tree.
      +	    foreach my $cl (@Clans){
      +                if( exists( $i{$cl} ) ){
      +    	            # yes: merge all of the family tree into %isa
      +	            @isa{@i,$pack} = ();
      +		    # and here's where we do some more ignoring...
      +		    # if the package in question is one of our caller's
      +		    # base or derived packages then we can ignore it (skip it)
      +		    # and go onto the next.
      +		    next CALLER if exists( $isa{$pack} );
      +		    last;
      +		}
      +            }
      +	}
      +
      +	# Hey!  We've found a package that isn't one of our caller's
      +	# clan....but wait, $extra refers to the number of 'extra' levels
      +	# we should skip up.  If $extra > 0 then this is a false alarm.
      +	# We must merge the package into the %isa hash (so we can ignore it
      +	# if it pops up again), decrement $extra, and continue.
      +	if ($extra-- > 0) {
      +	    push( @Clans, $pack );
      +	    @isa{@i,$pack} = ();
      +	}
      +	else {
      +	    # OK!  We've got a candidate package.  Time to construct the
      +	    # relevant error message and return it.   die() doesn't like
      +	    # to be given NUL characters (which $msg may contain) so we
      +	    # remove them first.
      +	    my $msg;
      +	    $msg = "$error at $file line $line";
      +	    if (defined &Thread::tid) {
      +		my $tid = Thread->self->tid;
      +		$mess .= " thread $tid" if $tid;
      +	    }
      +	    $msg .= "\n";
      +	    $msg =~ tr/\0//d;
      +	    return $msg;
      +	}
      +    }
      +
      +    # uh-oh!  It looks like we crawled all the way up the stack and
      +    # never found a candidate package.  Oh well, let's call longmess
      +    # to generate a full stack trace.  We use the magical form of 'goto'
      +    # so that this shortmess() function doesn't appear on the stack
      +    # to further confuse longmess() about it's calling package.
      +    goto &longmess_heavy;
      +}
      +
      +1;
      diff --git a/contrib/perl5/lib/Class/Struct.pm b/contrib/perl5/lib/Class/Struct.pm
      index 8fddfbf68ef3..63eddac7393b 100644
      --- a/contrib/perl5/lib/Class/Struct.pm
      +++ b/contrib/perl5/lib/Class/Struct.pm
      @@ -2,10 +2,11 @@ package Class::Struct;
       
       ## See POD after __END__
       
      -require 5.002;
      +use 5.005_64;
       
       use strict;
      -use vars qw(@ISA @EXPORT);
      +use warnings::register;
      +our(@ISA, @EXPORT, $VERSION);
       
       use Carp;
       
      @@ -13,6 +14,8 @@ require Exporter;
       @ISA = qw(Exporter);
       @EXPORT = qw(struct);
       
      +$VERSION = '0.58';
      +
       ## Tested on 5.002 and 5.003 without class membership tests:
       my $CHECK_CLASS_MEMBERSHIP = ($] >= 5.003_95);
       
      @@ -98,6 +101,8 @@ sub struct {
           my $out = '';
       
           $out = "{\n  package $class;\n  use Carp;\n  sub new {\n";
      +    $out .= "    my (\$class, \%init) = \@_;\n";
      +    $out .= "    \$class = __PACKAGE__ unless \@_;\n";
       
           my $cnt = 0;
           my $idx = 0;
      @@ -115,7 +120,7 @@ sub struct {
               $type = $decls[$idx+1];
               push( @methods, $name );
               if( $base_type eq 'HASH' ){
      -            $elem = "{'$name'}";
      +            $elem = "{'${class}::$name'}";
               }
               elsif( $base_type eq 'ARRAY' ){
                   $elem = "[$cnt]";
      @@ -126,19 +131,27 @@ sub struct {
                   $refs{$name}++;
                   $type = $1;
               }
      +        my $init = "defined(\$init{'$name'}) ? \$init{'$name'} :";
               if( $type eq '@' ){
      -            $out .= "    \$r->$elem = [];$cmt\n";
      +            $out .= "    croak 'Initializer for $name must be array reference'\n"; 
      +            $out .= "        if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'ARRAY';\n";
      +            $out .= "    \$r->$elem = $init [];$cmt\n"; 
                   $arrays{$name}++;
               }
               elsif( $type eq '%' ){
      -            $out .= "    \$r->$elem = {};$cmt\n";
      +            $out .= "    croak 'Initializer for $name must be hash reference'\n";
      +            $out .= "        if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'HASH';\n";
      +            $out .= "    \$r->$elem = $init {};$cmt\n";
                   $hashes{$name}++;
               }
               elsif ( $type eq '$') {
      -            $out .= "    \$r->$elem = undef;$cmt\n";
      +            $out .= "    \$r->$elem = $init undef;$cmt\n";
               }
               elsif( $type =~ /^\w+(?:::\w+)*$/ ){
      -            $out .= "    \$r->$elem = '${type}'->new();$cmt\n";
      +            $init = "defined(\$init{'$name'}) ? \%{\$init{'$name'}} : ()";
      +            $out .= "    croak 'Initializer for $name must be hash reference'\n";
      +            $out .= "        if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'HASH';\n";
      +            $out .= "    \$r->$elem = '${type}'->new($init);$cmt\n";
                   $classes{$name} = $type;
                   $got_class = 1;
               }
      @@ -147,7 +160,7 @@ sub struct {
               }
               $idx += 2;
           }
      -    $out .= "    bless \$r;\n  }\n";
      +    $out .= "    bless \$r, \$class;\n  }\n";
       
           # Create accessor methods.
       
      @@ -155,8 +168,8 @@ sub struct {
           $cnt = 0;
           foreach $name (@methods){
               if ( do { no strict 'refs'; defined &{$class . "::$name"} } ) {
      -            carp "function '$name' already defined, overrides struct accessor method"
      -                if $^W;
      +            warnings::warn "function '$name' already defined, overrides struct accessor method"
      +                if warnings::enabled();
               }
               else {
                   $pre = $pst = $cmt = $sel = '';
      @@ -171,16 +184,16 @@ sub struct {
                       ++$cnt;
                   }
                   elsif( $base_type eq 'HASH' ){
      -                $elem = "{'$name'}";
      +                $elem = "{'${class}::$name'}";
                   }
                   if( defined $arrays{$name} ){
                       $out .= "    my \$i;\n";
      -                $out .= "    \@_ ? (\$i = shift) : return $pre\$r->$elem$pst;\n";
      +                $out .= "    \@_ ? (\$i = shift) : return \$r->$elem;\n"; 
                       $sel = "->[\$i]";
                   }
                   elsif( defined $hashes{$name} ){
                       $out .= "    my \$i;\n";
      -                $out .= "    \@_ ? (\$i = shift) : return $pre\$r->$elem$pst;\n";
      +                $out .= "    \@_ ? (\$i = shift) : return \$r->$elem;\n"; 
                       $sel = "->{\$i}";
                   }
                   elsif( defined $classes{$name} ){
      @@ -297,6 +310,11 @@ flexible.
       The class created by C must not be a subclass of another
       class other than C.
       
      +It can, however, be used as a superclass for other classes. To facilitate
      +this, the generated constructor method uses a two-argument blessing.
      +Furthermore, if the class is hash-based, the key of each element is
      +prefixed with the class name (see I, Recipe 13.12).
      +
       A function named C must not be explicitly defined in a class
       created by C.
       
      @@ -323,7 +341,8 @@ on the declared type of the element.
       
       =item Scalar (C<'$'> or C<'*$'>)
       
      -The element is a scalar, and is initialized to C.
      +The element is a scalar, and by default is initialized to C
      +(but see L).
       
       The accessor's argument, if any, is assigned to the element.
       
      @@ -333,10 +352,11 @@ to the element is returned.
       
       =item Array (C<'@'> or C<'*@'>)
       
      -The element is an array, initialized to C<()>.
      +The element is an array, initialized by default to C<()>.
       
       With no argument, the accessor returns a reference to the
      -element's whole array.
      +element's whole array (whether or not the element was
      +specified as C<'@'> or C<'*@'>).
       
       With one or two arguments, the first argument is an index
       specifying one element of the array; the second argument, if
      @@ -347,10 +367,11 @@ returned.
       
       =item Hash (C<'%'> or C<'*%'>)
       
      -The element is a hash, initialized to C<()>.
      +The element is a hash, initialized by default to C<()>.
       
       With no argument, the accessor returns a reference to the
      -element's whole hash.
      +element's whole hash (whether or not the element was
      +specified as C<'%'> or C<'*%'>).
       
       With one or two arguments, the first argument is a key specifying
       one element of the hash; the second argument, if present, is
      @@ -374,6 +395,23 @@ starts with a C<'*'>, a reference to the element itself is returned.
       
       =back
       
      +=head2 Initializing with C
      +
      +C always creates a constructor called C. That constructor
      +may take a list of initializers for the various elements of the new
      +struct. 
      +
      +Each initializer is a pair of values: IC< =E >I.
      +The initializer value for a scalar element is just a scalar value. The 
      +initializer for an array element is an array reference. The initializer
      +for a hash is a hash reference.
      +
      +The initializer for a class element is also a hash reference, and the
      +contents of that hash are passed to the element's own constructor.
      +
      +See Example 3 below for an example of initialization.
      +
      +
       =head1 EXAMPLES
       
       =over
      @@ -399,8 +437,8 @@ type C.
       
               # create an object:
           my $t = new rusage;
      -    	# $t->ru_utime and $t->ru_stime are objects of type timeval.
       
      +        # $t->ru_utime and $t->ru_stime are objects of type timeval.
               # set $t->ru_utime to 100.0 sec and $t->ru_stime to 5.0 sec.
           $t->ru_utime->tv_secs(100);
           $t->ru_utime->tv_usecs(0);
      @@ -418,10 +456,10 @@ accessor accordingly.
           package MyObj;
           use Class::Struct;
       
      -    		# declare the struct
      +    # declare the struct
           struct ( 'MyObj', { count => '$', stuff => '%' } );
       
      -    		# override the default accessor method for 'count'
      +    # override the default accessor method for 'count'
           sub count {
               my $self = shift;
               if ( @_ ) {
      @@ -443,10 +481,68 @@ accessor accordingly.
           print "\$x->count(-5) = ", $x->count(-5), "\n";
                                   # dies due to negative argument!
       
      +=item Example 3
      +
      +The constructor of a generated class can be passed a list
      +of I=>I pairs, with which to initialize the struct.
      +If no initializer is specified for a particular element, its default
      +initialization is performed instead. Initializers for non-existent
      +elements are silently ignored.
      +
      +Note that the initializer for a nested struct is specified
      +as an anonymous hash of initializers, which is passed on to the nested
      +struct's constructor.
      +
      +
      +    use Class::Struct;
      +
      +    struct Breed =>
      +    {
      +        name  => '$',
      +        cross => '$',
      +    };
      +
      +    struct Cat =>
      +    [
      +        name     => '$',
      +        kittens  => '@',
      +        markings => '%',
      +        breed    => 'Breed',
      +    ];
      +
      +
      +    my $cat = Cat->new( name     => 'Socks',
      +                        kittens  => ['Monica', 'Kenneth'],
      +                        markings => { socks=>1, blaze=>"white" },
      +                        breed    => { name=>'short-hair', cross=>1 },
      +                      );
      +
      +    print "Once a cat called ", $cat->name, "\n";
      +    print "(which was a ", $cat->breed->name, ")\n";
      +    print "had two kittens: ", join(' and ', @{$cat->kittens}), "\n";
      +
      +=back
       
       =head1 Author and Modification History
       
       
      +Modified by Damian Conway, 1999-03-05, v0.58.
      +
      +    Added handling of hash-like arg list to class ctor.
      +
      +    Changed to two-argument blessing in ctor to support
      +    derivation from created classes.
      +
      +    Added classname prefixes to keys in hash-based classes
      +    (refer to "Perl Cookbook", Recipe 13.12 for rationale).
      +
      +    Corrected behaviour of accessors for '*@' and '*%' struct
      +    elements.  Package now implements documented behaviour when
      +    returning a reference to an entire hash or array element.
      +    Previously these were returned as a reference to a reference
      +    to the element.
      +
      +
       Renamed to C and modified by Jim Miner, 1997-04-02.
       
           members() function removed.
      diff --git a/contrib/perl5/lib/Cwd.pm b/contrib/perl5/lib/Cwd.pm
      index 5c10e8e16868..9a92829da5e4 100644
      --- a/contrib/perl5/lib/Cwd.pm
      +++ b/contrib/perl5/lib/Cwd.pm
      @@ -20,7 +20,7 @@ getcwd - get pathname of current working directory
           chdir "/tmp";
           print $ENV{'PWD'};
       
      -    use Cwd 'abs_path';
      +    use Cwd 'abs_path';	    # aka realpath()
           print abs_path($ENV{'PWD'});
       
           use Cwd 'fast_abs_path';
      @@ -32,8 +32,11 @@ The getcwd() function re-implements the getcwd(3) (or getwd(3)) functions
       in Perl.
       
       The abs_path() function takes a single argument and returns the
      -absolute pathname for that argument. It uses the same algorithm as
      -getcwd(). (actually getcwd() is abs_path("."))
      +absolute pathname for that argument.  It uses the same algorithm
      +as getcwd().  (Actually, getcwd() is abs_path("."))  Symbolic links
      +and relative-path components ("." and "..") are resolved to return
      +the canonical pathname, just like realpath(3).  Also callable as
      +realpath().
       
       The fastcwd() function looks the same as getcwd(), but runs faster.
       It's also more dangerous because it might conceivably chdir() you out
      @@ -67,12 +70,12 @@ kept up to date if all packages which use chdir import it from Cwd.
       
       use Carp;
       
      -$VERSION = '2.01';
      +$VERSION = '2.02';
       
       require Exporter;
       @ISA = qw(Exporter);
       @EXPORT = qw(cwd getcwd fastcwd fastgetcwd);
      -@EXPORT_OK = qw(chdir abs_path fast_abs_path);
      +@EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath);
       
       
       # The 'natural and safe form' for UNIX (pwd may be setuid root)
      @@ -105,9 +108,6 @@ sub getcwd
       # This is a faster version of getcwd.  It's also more dangerous because
       # you might chdir out of a directory that you can't chdir back into.
           
      -# List of metachars taken from do_exec() in doio.c
      -my $quoted_shell_meta = quotemeta('$&*(){}[]";\\|?<>~`'."'\n");
      -
       sub fastcwd {
           my($odev, $oino, $cdev, $cino, $tdev, $tino);
           my(@path, $path);
      @@ -136,9 +136,10 @@ sub fastcwd {
       	unshift(@path, $direntry);
           }
           $path = '/' . join('/', @path);
      +    if ($^O eq 'apollo') { $path = "/".$path; }
           # At this point $path may be tainted (if tainting) and chdir would fail.
           # To be more useful we untaint it then check that we landed where we started.
      -    $path = $1 if $path =~ /^(.*)$/;	# untaint
      +    $path = $1 if $path =~ /^(.*)\z/s;	# untaint
           CORE::chdir($path) || return undef;
           ($cdev, $cino) = stat('.');
           die "Unstable directory path, current directory changed unexpectedly"
      @@ -166,7 +167,7 @@ sub chdir_init {
       	$ENV{'PWD'} = cwd();
           }
           # Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar)
      -    if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|) {
      +    if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) {
       	my($pd,$pi) = stat($2);
       	my($dd,$di) = stat($1);
       	if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
      @@ -183,7 +184,7 @@ sub chdir {
           return 0 unless CORE::chdir $newdir;
           if ($^O eq 'VMS') { return $ENV{'PWD'} = $ENV{'DEFAULT'} }
       
      -    if ($newdir =~ m#^/#) {
      +    if ($newdir =~ m#^/#s) {
       	$ENV{'PWD'} = $newdir;
           } else {
       	my @curdir = split(m#/#,$ENV{'PWD'});
      @@ -256,6 +257,10 @@ sub abs_path
           $cwd;
       }
       
      +# added function alias for those of us more
      +# used to the libc function.  --tchrist 27-Jan-00
      +*realpath = \&abs_path;
      +
       sub fast_abs_path {
           my $cwd = getcwd();
           my $path = shift || '.';
      @@ -265,6 +270,10 @@ sub fast_abs_path {
           $realpath;
       }
       
      +# added function alias to follow principle of least surprise
      +# based on previous aliasing.  --tchrist 27-Jan-00
      +*fast_realpath = \&fast_abs_path;
      +
       
       # --- PORTING SECTION ---
       
      @@ -330,7 +339,7 @@ sub _qnx_abs_path {
       }
       
       {
      -    local $^W = 0;	# assignments trigger 'subroutine redefined' warning
      +    no warnings;	# assignments trigger 'subroutine redefined' warning
       
           if ($^O eq 'VMS') {
               *cwd		= \&_vms_cwd;
      @@ -371,6 +380,12 @@ sub _qnx_abs_path {
               *abs_path	= \&_qnx_abs_path;
               *fast_abs_path	= \&_qnx_abs_path;
           }
      +    elsif ($^O eq 'cygwin') {
      +        *getcwd	= \&cwd;
      +        *fastgetcwd	= \&cwd;
      +        *fastcwd	= \&cwd;
      +        *abs_path	= \&fast_abs_path;
      +    }
       }
       
       # package main; eval join('',) || die $@;	# quick test
      diff --git a/contrib/perl5/lib/DB.pm b/contrib/perl5/lib/DB.pm
      new file mode 100644
      index 000000000000..711acc085d12
      --- /dev/null
      +++ b/contrib/perl5/lib/DB.pm
      @@ -0,0 +1,802 @@
      +#
      +# Documentation is at the __END__
      +#
      +
      +package DB;
      +
      +# "private" globals
      +
      +my ($running, $ready, $deep, $usrctxt, $evalarg, 
      +    @stack, @saved, @skippkg, @clients);
      +my $preeval = {};
      +my $posteval = {};
      +my $ineval = {};
      +
      +####
      +#
      +# Globals - must be defined at startup so that clients can refer to 
      +# them right after a C
      +#
      +####
      +
      +BEGIN {
      +
      +  # these are hardcoded in perl source (some are magical)
      +
      +  $DB::sub = '';        # name of current subroutine
      +  %DB::sub = ();        # "filename:fromline-toline" for every known sub
      +  $DB::single = 0;      # single-step flag (set it to 1 to enable stops in BEGIN/use)
      +  $DB::signal = 0;      # signal flag (will cause a stop at the next line)
      +  $DB::trace = 0;       # are we tracing through subroutine calls?
      +  @DB::args = ();       # arguments of current subroutine or @ARGV array
      +  @DB::dbline = ();     # list of lines in currently loaded file
      +  %DB::dbline = ();     # actions in current file (keyed by line number)
      +  @DB::ret = ();        # return value of last sub executed in list context
      +  $DB::ret = '';        # return value of last sub executed in scalar context
      +
      +  # other "public" globals  
      +
      +  $DB::package = '';    # current package space
      +  $DB::filename = '';   # current filename
      +  $DB::subname = '';    # currently executing sub (fullly qualified name)
      +  $DB::lineno = '';     # current line number
      +
      +  $DB::VERSION = $DB::VERSION = '1.0';
      +
      +  # initialize private globals to avoid warnings
      +
      +  $running = 1;         # are we running, or are we stopped?
      +  @stack = (0);
      +  @clients = ();
      +  $deep = 100;
      +  $ready = 0;
      +  @saved = ();
      +  @skippkg = ();
      +  $usrctxt = '';
      +  $evalarg = '';
      +}
      +
      +####
      +# entry point for all subroutine calls
      +#
      +sub sub {
      +  push(@stack, $DB::single);
      +  $DB::single &= 1;
      +  $DB::single |= 4 if $#stack == $deep;
      +#  print $DB::sub, "\n";
      +  if ($DB::sub =~ /(?:^|::)DESTROY$/ or not defined wantarray) {
      +    &$DB::sub;
      +    $DB::single |= pop(@stack);
      +    $DB::ret = undef;
      +  }
      +  elsif (wantarray) {
      +    @DB::ret = &$DB::sub;
      +    $DB::single |= pop(@stack);
      +    @DB::ret;
      +  }
      +  else {
      +    $DB::ret = &$DB::sub;
      +    $DB::single |= pop(@stack);
      +    $DB::ret;
      +  }
      +}
      +
      +####
      +# this is called by perl for every statement
      +#
      +sub DB {
      +  return unless $ready;
      +  &save;
      +  ($DB::package, $DB::filename, $DB::lineno) = caller;
      +
      +  return if @skippkg and grep { $_ eq $DB::package } @skippkg;
      +
      +  $usrctxt = "package $DB::package;";		# this won't let them modify, alas
      +  local(*DB::dbline) = "::_<$DB::filename";
      +  my ($stop, $action);
      +  if (($stop,$action) = split(/\0/,$DB::dbline{$DB::lineno})) {
      +    if ($stop eq '1') {
      +      $DB::signal |= 1;
      +    }
      +    else {
      +      $stop = 0 unless $stop;			# avoid un_init warning
      +      $evalarg = "\$DB::signal |= do { $stop; }"; &eval;
      +      $DB::dbline{$DB::lineno} =~ s/;9($|\0)/$1/;    # clear any temp breakpt
      +    }
      +  }
      +  if ($DB::single || $DB::trace || $DB::signal) {
      +    $DB::subname = ($DB::sub =~ /\'|::/) ? $DB::sub : "${DB::package}::$DB::sub"; #';
      +    DB->loadfile($DB::filename, $DB::lineno);
      +  }
      +  $evalarg = $action, &eval if $action;
      +  if ($DB::single || $DB::signal) {
      +    _outputall($#stack . " levels deep in subroutine calls.\n") if $DB::single & 4;
      +    $DB::single = 0;
      +    $DB::signal = 0;
      +    $running = 0;
      +    
      +    &eval if ($evalarg = DB->prestop);
      +    my $c;
      +    for $c (@clients) {
      +      # perform any client-specific prestop actions
      +      &eval if ($evalarg = $c->cprestop);
      +      
      +      # Now sit in an event loop until something sets $running
      +      do {
      +	$c->idle;                     # call client event loop; must not block
      +	if ($running == 2) {          # client wants something eval-ed
      +	  &eval if ($evalarg = $c->evalcode);
      +	  $running = 0;
      +	}
      +      } until $running;
      +      
      +      # perform any client-specific poststop actions
      +      &eval if ($evalarg = $c->cpoststop);
      +    }
      +    &eval if ($evalarg = DB->poststop);
      +  }
      +  ($@, $!, $,, $/, $\, $^W) = @saved;
      +  ();
      +}
      +  
      +####
      +# this takes its argument via $evalarg to preserve current @_
      +#    
      +sub eval {
      +  ($@, $!, $,, $/, $\, $^W) = @saved;
      +  eval "$usrctxt $evalarg; &DB::save";
      +  _outputall($@) if $@;
      +}
      +
      +###############################################################################
      +#         no compile-time subroutine call allowed before this point           #
      +###############################################################################
      +
      +use strict;                # this can run only after DB() and sub() are defined
      +
      +sub save {
      +  @saved = ($@, $!, $,, $/, $\, $^W);
      +  $, = ""; $/ = "\n"; $\ = ""; $^W = 0;
      +}
      +
      +sub catch {
      +  for (@clients) { $_->awaken; }
      +  $DB::signal = 1;
      +  $ready = 1;
      +}
      +
      +####
      +#
      +# Client callable (read inheritable) methods defined after this point
      +#
      +####
      +
      +sub register {
      +  my $s = shift;
      +  $s = _clientname($s) if ref($s);
      +  push @clients, $s;
      +}
      +
      +sub done {
      +  my $s = shift;
      +  $s = _clientname($s) if ref($s);
      +  @clients = grep {$_ ne $s} @clients;
      +  $s->cleanup;
      +#  $running = 3 unless @clients;
      +  exit(0) unless @clients;
      +}
      +
      +sub _clientname {
      +  my $name = shift;
      +  "$name" =~ /^(.+)=[A-Z]+\(.+\)$/;
      +  return $1;
      +}
      +
      +sub next {
      +  my $s = shift;
      +  $DB::single = 2;
      +  $running = 1;
      +}
      +
      +sub step {
      +  my $s = shift;
      +  $DB::single = 1;
      +  $running = 1;
      +}
      +
      +sub cont {
      +  my $s = shift;
      +  my $i = shift;
      +  $s->set_tbreak($i) if $i;
      +  for ($i = 0; $i <= $#stack;) {
      +	$stack[$i++] &= ~1;
      +  }
      +  $DB::single = 0;
      +  $running = 1;
      +}
      +
      +####
      +# XXX caller must experimentally determine $i (since it depends
      +# on how many client call frames are between this call and the DB call).
      +# Such is life.
      +#
      +sub ret {
      +  my $s = shift;
      +  my $i = shift;      # how many levels to get to DB sub
      +  $i = 0 unless defined $i;
      +  $stack[$#stack-$i] |= 1;
      +  $DB::single = 0;
      +  $running = 1;
      +}
      +
      +####
      +# XXX caller must experimentally determine $start (since it depends
      +# on how many client call frames are between this call and the DB call).
      +# Such is life.
      +#
      +sub backtrace {
      +  my $self = shift;
      +  my $start = shift;
      +  my($p,$f,$l,$s,$h,$w,$e,$r,$a, @a, @ret,$i);
      +  $start = 1 unless $start;
      +  for ($i = $start; ($p,$f,$l,$s,$h,$w,$e,$r) = caller($i); $i++) {
      +    @a = @DB::args;
      +    for (@a) {
      +      s/'/\\'/g;
      +      s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/;
      +      s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
      +      s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
      +    }
      +    $w = $w ? '@ = ' : '$ = ';
      +    $a = $h ? '(' . join(', ', @a) . ')' : '';
      +    $e =~ s/\n\s*\;\s*\Z// if $e;
      +    $e =~ s/[\\\']/\\$1/g if $e;
      +    if ($r) {
      +      $s = "require '$e'";
      +    } elsif (defined $r) {
      +      $s = "eval '$e'";
      +    } elsif ($s eq '(eval)') {
      +      $s = "eval {...}";
      +    }
      +    $f = "file `$f'" unless $f eq '-e';
      +    push @ret, "$w&$s$a from $f line $l";
      +    last if $DB::signal;
      +  }
      +  return @ret;
      +}
      +
      +sub _outputall {
      +  my $c;
      +  for $c (@clients) {
      +    $c->output(@_);
      +  }
      +}
      +
      +sub trace_toggle {
      +  my $s = shift;
      +  $DB::trace = !$DB::trace;
      +}
      +
      +
      +####
      +# without args: returns all defined subroutine names
      +# with subname args: returns a listref [file, start, end]
      +#
      +sub subs {
      +  my $s = shift;
      +  if (@_) {
      +    my(@ret) = ();
      +    while (@_) {
      +      my $name = shift;
      +      push @ret, [$DB::sub{$name} =~ /^(.*)\:(\d+)-(\d+)$/] 
      +	if exists $DB::sub{$name};
      +    }
      +    return @ret;
      +  }
      +  return keys %DB::sub;
      +}
      +
      +####
      +# first argument is a filename whose subs will be returned
      +# if a filename is not supplied, all subs in the current
      +# filename are returned.
      +#
      +sub filesubs {
      +  my $s = shift;
      +  my $fname = shift;
      +  $fname = $DB::filename unless $fname;
      +  return grep { $DB::sub{$_} =~ /^$fname/ } keys %DB::sub;
      +}
      +
      +####
      +# returns a list of all filenames that DB knows about
      +#
      +sub files {
      +  my $s = shift;
      +  my(@f) = grep(m|^_<|, keys %main::);
      +  return map { substr($_,2) } @f;
      +}
      +
      +####
      +# returns reference to an array holding the lines in currently
      +# loaded file
      +#
      +sub lines {
      +  my $s = shift;
      +  return \@DB::dbline;
      +}
      +
      +####
      +# loadfile($file, $line)
      +#
      +sub loadfile {
      +  my $s = shift;
      +  my($file, $line) = @_;
      +  if (!defined $main::{'_<' . $file}) {
      +    my $try;
      +    if (($try) = grep(m|^_<.*$file|, keys %main::)) {  
      +      $file = substr($try,2);
      +    }
      +  }
      +  if (defined($main::{'_<' . $file})) {
      +    my $c;
      +#    _outputall("Loading file $file..");
      +    *DB::dbline = "::_<$file";
      +    $DB::filename = $file;
      +    for $c (@clients) {
      +#      print "2 ", $file, '|', $line, "\n";
      +      $c->showfile($file, $line);
      +    }
      +    return $file;
      +  }
      +  return undef;
      +}
      +
      +sub lineevents {
      +  my $s = shift;
      +  my $fname = shift;
      +  my(%ret) = ();
      +  my $i;
      +  $fname = $DB::filename unless $fname;
      +  local(*DB::dbline) = "::_<$fname";
      +  for ($i = 1; $i <= $#DB::dbline; $i++) {
      +    $ret{$i} = [$DB::dbline[$i], split(/\0/, $DB::dbline{$i})] 
      +      if defined $DB::dbline{$i};
      +  }
      +  return %ret;
      +}
      +
      +sub set_break {
      +  my $s = shift;
      +  my $i = shift;
      +  my $cond = shift;
      +  $i ||= $DB::lineno;
      +  $cond ||= '1';
      +  $i = _find_subline($i) if ($i =~ /\D/);
      +  $s->output("Subroutine not found.\n") unless $i;
      +  if ($i) {
      +    if ($DB::dbline[$i] == 0) {
      +      $s->output("Line $i not breakable.\n");
      +    }
      +    else {
      +      $DB::dbline{$i} =~ s/^[^\0]*/$cond/;
      +    }
      +  }
      +}
      +
      +sub set_tbreak {
      +  my $s = shift;
      +  my $i = shift;
      +  $i = _find_subline($i) if ($i =~ /\D/);
      +  $s->output("Subroutine not found.\n") unless $i;
      +  if ($i) {
      +    if ($DB::dbline[$i] == 0) {
      +      $s->output("Line $i not breakable.\n");
      +    }
      +    else {
      +      $DB::dbline{$i} =~ s/($|\0)/;9$1/; # add one-time-only b.p.
      +    }
      +  }
      +}
      +
      +sub _find_subline {
      +  my $name = shift;
      +  $name =~ s/\'/::/;
      +  $name = "${DB::package}\:\:" . $name if $name !~ /::/;
      +  $name = "main" . $name if substr($name,0,2) eq "::";
      +  my($fname, $from, $to) = ($DB::sub{$name} =~ /^(.*):(\d+)-(\d+)$/);
      +  if ($from) {
      +    # XXX this needs local()-ization of some sort
      +    *DB::dbline = "::_<$fname";
      +    ++$from while $DB::dbline[$from] == 0 && $from < $to;
      +    return $from;
      +  }
      +  return undef;
      +}
      +
      +sub clr_breaks {
      +  my $s = shift;
      +  my $i;
      +  if (@_) {
      +    while (@_) {
      +      $i = shift;
      +      $i = _find_subline($i) if ($i =~ /\D/);
      +      $s->output("Subroutine not found.\n") unless $i;
      +      if (defined $DB::dbline{$i}) {
      +        $DB::dbline{$i} =~ s/^[^\0]+//;
      +        if ($DB::dbline{$i} =~ s/^\0?$//) {
      +          delete $DB::dbline{$i};
      +        }
      +      }
      +    }
      +  }
      +  else {
      +    for ($i = 1; $i <= $#DB::dbline ; $i++) {
      +      if (defined $DB::dbline{$i}) {
      +        $DB::dbline{$i} =~ s/^[^\0]+//;
      +        if ($DB::dbline{$i} =~ s/^\0?$//) {
      +          delete $DB::dbline{$i};
      +        }
      +      }
      +    }
      +  }
      +}
      +
      +sub set_action {
      +  my $s = shift;
      +  my $i = shift;
      +  my $act = shift;
      +  $i = _find_subline($i) if ($i =~ /\D/);
      +  $s->output("Subroutine not found.\n") unless $i;
      +  if ($i) {
      +    if ($DB::dbline[$i] == 0) {
      +      $s->output("Line $i not actionable.\n");
      +    }
      +    else {
      +      $DB::dbline{$i} =~ s/\0[^\0]*//;
      +      $DB::dbline{$i} .= "\0" . $act;
      +    }
      +  }
      +}
      +
      +sub clr_actions {
      +  my $s = shift;
      +  my $i;
      +  if (@_) {
      +    while (@_) {
      +      my $i = shift;
      +      $i = _find_subline($i) if ($i =~ /\D/);
      +      $s->output("Subroutine not found.\n") unless $i;
      +      if ($i && $DB::dbline[$i] != 0) {
      +	$DB::dbline{$i} =~ s/\0[^\0]*//;
      +	delete $DB::dbline{$i} if $DB::dbline{$i} =~ s/^\0?$//;
      +      }
      +    }
      +  }
      +  else {
      +    for ($i = 1; $i <= $#DB::dbline ; $i++) {
      +      if (defined $DB::dbline{$i}) {
      +	$DB::dbline{$i} =~ s/\0[^\0]*//;
      +	delete $DB::dbline{$i} if $DB::dbline{$i} =~ s/^\0?$//;
      +      }
      +    }
      +  }
      +}
      +
      +sub prestop {
      +  my ($client, $val) = @_;
      +  return defined($val) ? $preeval->{$client} = $val : $preeval->{$client};
      +}
      +
      +sub poststop {
      +  my ($client, $val) = @_;
      +  return defined($val) ? $posteval->{$client} = $val : $posteval->{$client};
      +}
      +
      +#
      +# "pure virtual" methods
      +#
      +
      +# client-specific pre/post-stop actions.
      +sub cprestop {}
      +sub cpoststop {}
      +
      +# client complete startup
      +sub awaken {}
      +
      +sub skippkg {
      +  my $s = shift;
      +  push @skippkg, @_ if @_;
      +}
      +
      +sub evalcode {
      +  my ($client, $val) = @_;
      +  if (defined $val) {
      +    $running = 2;    # hand over to DB() to evaluate in its context
      +    $ineval->{$client} = $val;
      +  }
      +  return $ineval->{$client};
      +}
      +
      +sub ready {
      +  my $s = shift;
      +  return $ready = 1;
      +}
      +
      +# stubs
      +    
      +sub init {}
      +sub stop {}
      +sub idle {}
      +sub cleanup {}
      +sub output {}
      +
      +#
      +# client init
      +#
      +for (@clients) { $_->init }
      +
      +$SIG{'INT'} = \&DB::catch;
      +
      +# disable this if stepping through END blocks is desired
      +# (looks scary and deconstructivist with Swat)
      +END { $ready = 0 }
      +
      +1;
      +__END__
      +
      +=head1 NAME
      +
      +DB - programmatic interface to the Perl debugging API (draft, subject to
      +change)
      +
      +=head1 SYNOPSIS
      +
      +    package CLIENT;
      +    use DB;
      +    @ISA = qw(DB);
      +
      +    # these (inherited) methods can be called by the client
      +
      +    CLIENT->register()      # register a client package name
      +    CLIENT->done()          # de-register from the debugging API
      +    CLIENT->skippkg('hide::hide')  # ask DB not to stop in this package
      +    CLIENT->cont([WHERE])       # run some more (until BREAK or another breakpt)
      +    CLIENT->step()              # single step
      +    CLIENT->next()              # step over
      +    CLIENT->ret()               # return from current subroutine
      +    CLIENT->backtrace()         # return the call stack description
      +    CLIENT->ready()             # call when client setup is done
      +    CLIENT->trace_toggle()      # toggle subroutine call trace mode
      +    CLIENT->subs([SUBS])        # return subroutine information
      +    CLIENT->files()             # return list of all files known to DB
      +    CLIENT->lines()             # return lines in currently loaded file
      +    CLIENT->loadfile(FILE,LINE) # load a file and let other clients know
      +    CLIENT->lineevents()        # return info on lines with actions
      +    CLIENT->set_break([WHERE],[COND])
      +    CLIENT->set_tbreak([WHERE])
      +    CLIENT->clr_breaks([LIST])
      +    CLIENT->set_action(WHERE,ACTION)
      +    CLIENT->clr_actions([LIST])
      +    CLIENT->evalcode(STRING)  # eval STRING in executing code's context
      +    CLIENT->prestop([STRING]) # execute in code context before stopping
      +    CLIENT->poststop([STRING])# execute in code context before resuming
      +
      +    # These methods will be called at the appropriate times.
      +    # Stub versions provided do nothing.
      +    # None of these can block.
      +
      +    CLIENT->init()          # called when debug API inits itself
      +    CLIENT->stop(FILE,LINE) # when execution stops
      +    CLIENT->idle()          # while stopped (can be a client event loop)
      +    CLIENT->cleanup()       # just before exit
      +    CLIENT->output(LIST)    # called to print any output that API must show
      +
      +=head1 DESCRIPTION
      +
      +Perl debug information is frequently required not just by debuggers,
      +but also by modules that need some "special" information to do their
      +job properly, like profilers.
      +
      +This module abstracts and provides all of the hooks into Perl internal
      +debugging functionality, so that various implementations of Perl debuggers
      +(or packages that want to simply get at the "privileged" debugging data)
      +can all benefit from the development of this common code.  Currently used
      +by Swat, the perl/Tk GUI debugger.
      +
      +Note that multiple "front-ends" can latch into this debugging API
      +simultaneously.  This is intended to facilitate things like
      +debugging with a command line and GUI at the same time, debugging 
      +debuggers etc.  [Sounds nice, but this needs some serious support -- GSAR]
      +
      +In particular, this API does B provide the following functions:
      +
      +=over 4
      +
      +=item *
      +
      +data display
      +
      +=item *
      +
      +command processing
      +
      +=item *
      +
      +command alias management
      +
      +=item *
      +
      +user interface (tty or graphical)
      +
      +=back
      +
      +These are intended to be services performed by the clients of this API.
      +
      +This module attempts to be squeaky clean w.r.t C and when
      +warnings are enabled.
      +
      +
      +=head2 Global Variables
      +
      +The following "public" global names can be read by clients of this API.
      +Beware that these should be considered "readonly".
      +
      +=over 8
      +
      +=item  $DB::sub
      +
      +Name of current executing subroutine.
      +
      +=item  %DB::sub
      +
      +The keys of this hash are the names of all the known subroutines.  Each value
      +is an encoded string that has the sprintf(3) format 
      +C<("%s:%d-%d", filename, fromline, toline)>.
      +
      +=item  $DB::single
      +
      +Single-step flag.  Will be true if the API will stop at the next statement.
      +
      +=item  $DB::signal
      +
      +Signal flag. Will be set to a true value if a signal was caught.  Clients may
      +check for this flag to abort time-consuming operations.
      +
      +=item  $DB::trace
      +
      +This flag is set to true if the API is tracing through subroutine calls.
      +
      +=item  @DB::args
      +
      +Contains the arguments of current subroutine, or the C<@ARGV> array if in the 
      +toplevel context.
      +
      +=item  @DB::dbline
      +
      +List of lines in currently loaded file.
      +
      +=item  %DB::dbline
      +
      +Actions in current file (keys are line numbers).  The values are strings that
      +have the sprintf(3) format C<("%s\000%s", breakcondition, actioncode)>. 
      +
      +=item  $DB::package
      +
      +Package namespace of currently executing code.
      +
      +=item  $DB::filename
      +
      +Currently loaded filename.
      +
      +=item  $DB::subname
      +
      +Fully qualified name of currently executing subroutine.
      +
      +=item  $DB::lineno
      +
      +Line number that will be executed next.
      +
      +=back
      +
      +=head2 API Methods
      +
      +The following are methods in the DB base class.  A client must
      +access these methods by inheritance (*not* by calling them directly),
      +since the API keeps track of clients through the inheritance
      +mechanism.
      +
      +=over 8
      +
      +=item CLIENT->register()
      +
      +register a client object/package
      +
      +=item CLIENT->evalcode(STRING)
      +
      +eval STRING in executing code context
      +
      +=item CLIENT->skippkg('D::hide')
      +
      +ask DB not to stop in these packages
      +
      +=item CLIENT->run()
      +
      +run some more (until a breakpt is reached)
      +
      +=item CLIENT->step()
      +
      +single step
      +
      +=item CLIENT->next()
      +
      +step over
      +
      +=item CLIENT->done()
      +
      +de-register from the debugging API
      +
      +=back
      +
      +=head2 Client Callback Methods
      +
      +The following "virtual" methods can be defined by the client.  They will
      +be called by the API at appropriate points.  Note that unless specified
      +otherwise, the debug API only defines empty, non-functional default versions
      +of these methods.
      +
      +=over 8
      +
      +=item CLIENT->init()
      +
      +Called after debug API inits itself.
      +
      +=item CLIENT->prestop([STRING])
      +
      +Usually inherited from DB package.  If no arguments are passed,
      +returns the prestop action string.
      +
      +=item CLIENT->stop()
      +
      +Called when execution stops (w/ args file, line).
      +
      +=item CLIENT->idle()
      +
      +Called while stopped (can be a client event loop).
      +
      +=item CLIENT->poststop([STRING])
      +
      +Usually inherited from DB package.  If no arguments are passed,
      +returns the poststop action string.
      +
      +=item CLIENT->evalcode(STRING)
      +
      +Usually inherited from DB package.  Ask for a STRING to be C-ed
      +in executing code context.
      +
      +=item CLIENT->cleanup()
      +
      +Called just before exit.
      +
      +=item CLIENT->output(LIST)
      +
      +Called when API must show a message (warnings, errors etc.).
      +
      +
      +=back
      +
      +
      +=head1 BUGS
      +
      +The interface defined by this module is missing some of the later additions
      +to perl's debugging functionality.  As such, this interface should be considered
      +highly experimental and subject to change.
      +
      +=head1 AUTHOR
      +
      +Gurusamy Sarathy	gsar@activestate.com
      +
      +This code heavily adapted from an early version of perl5db.pl attributable
      +to Larry Wall and the Perl Porters.
      +
      +=cut
      diff --git a/contrib/perl5/lib/Dumpvalue.pm b/contrib/perl5/lib/Dumpvalue.pm
      index 5bcd58f4fba1..475f4ff72597 100644
      --- a/contrib/perl5/lib/Dumpvalue.pm
      +++ b/contrib/perl5/lib/Dumpvalue.pm
      @@ -1,7 +1,7 @@
      -require 5.005;			# For (defined ref) and $#$v
      +use 5.005_64;			# for (defined ref) and $#$v and our
       package Dumpvalue;
       use strict;
      -use vars qw(%address *stab %subs);
      +our(%address, $stab, @stab, %stab, %subs);
       
       # translate control chars to ^X - Randal Schwartz
       # Modifications to print types by Peter Gordon v1.0
      @@ -91,7 +91,7 @@ sub stringify {
         { no strict 'refs';
           $_ = &{'overload::StrVal'}($_)
             if $self->{bareStringify} and ref $_
      -	and defined %overload:: and defined &{'overload::StrVal'};
      +	and %overload:: and defined &{'overload::StrVal'};
         }
       
         if ($tick eq 'auto') {
      @@ -162,7 +162,7 @@ sub unwrap {
           my $val = $v;
           { no strict 'refs';
             $val = &{'overload::StrVal'}($v)
      -	if defined %overload:: and defined &{'overload::StrVal'};
      +	if %overload:: and defined &{'overload::StrVal'};
           }
           ($address) = $val =~ /(0x[0-9a-f]+)\)$/ ;
           if (!$self->{dumpReused} && defined $address) {
      @@ -181,6 +181,13 @@ sub unwrap {
           }
         }
       
      +  if (ref $v eq 'Regexp') {
      +    my $re = "$v";
      +    $re =~ s,/,\\/,g;
      +    print "$sp-> qr/$re/\n";
      +    return;
      +  }
      +
         if ( UNIVERSAL::isa($v, 'HASH') ) {
           my @sortKeys = sort keys(%$v) ;
           my $more;
      @@ -220,9 +227,9 @@ sub unwrap {
           if ($self->{compactDump} && !grep(ref $_, @{$v})) {
             if ($#$v >= 0) {
       	$short = $sp . "0..$#{$v}  " .
      -	  join(" ",
      -	       map {$self->stringify($_)} @{$v}[0..$tArrayDepth])
      -	    . "$shortmore";
      +	  join(" ", 
      +	       map {exists $v->[$_] ? $self->stringify($v->[$_]) : "empty"} ($[..$tArrayDepth)
      +	      ) . "$shortmore";
             } else {
       	$short = $sp . "empty array";
             }
      @@ -231,7 +238,11 @@ sub unwrap {
           for my $num ($[ .. $tArrayDepth) {
             return if $DB::signal and $self->{stopDbSignal};
             print "$sp$num  ";
      -      $self->DumpElem($v->[$num], $s);
      +      if (exists $v->[$num]) {
      +        $self->DumpElem($v->[$num], $s);
      +      } else {
      +	print "empty slot\n";
      +      }
           }
           print "$sp  empty array\n" unless @$v;
           print "$sp$more" if defined $more ;
      @@ -317,12 +328,12 @@ sub dumpglob {
           print( (' ' x $off) . "\$", &unctrl($key), " = " );
           $self->DumpElem($stab, 3+$off);
         }
      -  if (($key !~ /^_{dumpDBFiles}) and defined @stab) {
      +  if (($key !~ /^_{dumpDBFiles}) and @stab) {
           print( (' ' x $off) . "\@$key = (\n" );
           $self->unwrap(\@stab,3+$off) ;
           print( (' ' x $off) .  ")\n" );
         }
      -  if ($key ne "main::" && $key ne "DB::" && defined %stab
      +  if ($key ne "main::" && $key ne "DB::" && %stab
             && ($self->{dumpPackages} or $key !~ /::$/)
             && ($key !~ /^_{dumpDBFiles})
             && !($package eq "Dumpvalue" and $key eq "stab")) {
      @@ -340,21 +351,35 @@ sub dumpglob {
         }
       }
       
      +sub CvGV_name {
      +  my $self = shift;
      +  my $in = shift;
      +  return if $self->{skipCvGV};	# Backdoor to avoid problems if XS broken...
      +  $in = \&$in;			# Hard reference...
      +  eval {require Devel::Peek; 1} or return;
      +  my $gv = Devel::Peek::CvGV($in) or return;
      +  *$gv{PACKAGE} . '::' . *$gv{NAME};
      +}
      +
       sub dumpsub {
         my $self = shift;
         my ($off,$sub) = @_;
      +  my $ini = $sub;
      +  my $s;
         $sub = $1 if $sub =~ /^\{\*(.*)\}$/;
      -  my $subref = \&$sub;
      -  my $place = $DB::sub{$sub} || (($sub = $subs{"$subref"}) && $DB::sub{$sub})
      -    || ($self->{subdump} && ($sub = $self->findsubs("$subref"))
      -	&& $DB::sub{$sub});
      +  my $subref = defined $1 ? \&$sub : \&$ini;
      +  my $place = $DB::sub{$sub} || (($s = $subs{"$subref"}) && $DB::sub{$s})
      +    || (($s = $self->CvGV_name($subref)) && $DB::sub{$s})
      +    || ($self->{subdump} && ($s = $self->findsubs("$subref"))
      +	&& $DB::sub{$s});
      +  $s = $sub unless defined $s;
         $place = '???' unless defined $place;
      -  print( (' ' x $off) .  "&$sub in $place\n" );
      +  print( (' ' x $off) .  "&$s in $place\n" );
       }
       
       sub findsubs {
         my $self = shift;
      -  return undef unless defined %DB::sub;
      +  return undef unless %DB::sub;
         my ($addr, $name, $loc);
         while (($name, $loc) = each %DB::sub) {
           $addr = \&$name;
      @@ -383,7 +408,8 @@ sub dumpvars {
           next if @vars && !grep( matchvar($key, $_), @vars );
           if ($self->{usageOnly}) {
             $self->globUsage(\$val, $key)
      -	unless $package eq 'Dumpvalue' and $key eq 'stab';
      +	if ($package ne 'Dumpvalue' or $key ne 'stab')
      +	   and ref(\$val) eq 'GLOB';
           } else {
             $self->dumpglob($package, 0,$key, $val);
           }
      @@ -437,9 +463,9 @@ sub globUsage {			# glob ref, name
         local *stab = *{$_[0]};
         my $total = 0;
         $total += $self->scalarUsage($stab) if defined $stab;
      -  $total += $self->arrayUsage(\@stab, $_[1]) if defined @stab;
      +  $total += $self->arrayUsage(\@stab, $_[1]) if @stab;
         $total += $self->hashUsage(\%stab, $_[1]) 
      -    if defined %stab and $_[1] ne "main::" and $_[1] ne "DB::";	
      +    if %stab and $_[1] ne "main::" and $_[1] ne "DB::";	
         #and !($package eq "Dumpvalue" and $key eq "stab"));
         $total;
       }
      @@ -450,7 +476,7 @@ sub globUsage {			# glob ref, name
       
       Dumpvalue - provides screen dump of Perl data.
       
      -=head1 SYNOPSYS
      +=head1 SYNOPSIS
       
         use Dumpvalue;
         my $dumper = new Dumpvalue;
      diff --git a/contrib/perl5/lib/English.pm b/contrib/perl5/lib/English.pm
      index 9f29a487dc75..f6e3ec00215c 100644
      --- a/contrib/perl5/lib/English.pm
      +++ b/contrib/perl5/lib/English.pm
      @@ -15,14 +15,6 @@ English - use nice English (or awk) names for ugly punctuation variables
       
       =head1 DESCRIPTION
       
      -You should I use this module in programs intended to be portable
      -among Perl versions, programs that must perform regular expression
      -matching operations efficiently, or libraries intended for use with
      -such programs.  In a sense, this module is deprecated.  The reasons
      -for this have to do with implementation details of the Perl
      -interpreter which are too thorny to go into here.  Perhaps someday
      -they will be fixed to make "C" more practical.
      -
       This module provides aliases for the built-in variables whose
       names no one seems to like to read.  Variables with side-effects
       which get triggered just by accessing them (like $0) will still 
      @@ -35,9 +27,15 @@ $INPUT_RECORD_SEPARATOR if you are using the English module.
       
       See L for a complete list of these.
       
      +=head1 BUGS
      +
      +This module provokes sizeable inefficiencies for regular expressions,
      +due to unfortunate implementation details.  If performance matters,
      +consider avoiding English.
      +
       =cut
       
      -local $^W = 0;
      +no warnings;
       
       # Grandfather $NAME import
       sub import {
      @@ -98,6 +96,8 @@ sub import {
       	*WARNING
       	*EXECUTABLE_NAME
       	*OSNAME
      +	*LAST_REGEXP_CODE_RESULT
      +	*EXCEPTIONS_BEING_CAUGHT
       );
       
       # The ground of all being. @ARG is deprecated (5.005 makes @_ lexical)
      @@ -166,13 +166,15 @@ sub import {
       
       # Internals.
       
      -	*PERL_VERSION				= *]	;
      +	*PERL_VERSION				= *^V	;
       	*ACCUMULATOR				= *^A	;
       	*COMPILING				= *^C	;
       	*DEBUGGING				= *^D	;
       	*SYSTEM_FD_MAX				= *^F	;
       	*INPLACE_EDIT				= *^I	;
       	*PERLDB					= *^P	;
      +	*LAST_REGEXP_CODE_RESULT		= *^R	;
      +	*EXCEPTIONS_BEING_CAUGHT		= *^S	;
       	*BASETIME				= *^T	;
       	*WARNING				= *^W	;
       	*EXECUTABLE_NAME			= *^X	;
      @@ -183,5 +185,6 @@ sub import {
       #	*ARRAY_BASE				= *[	;
       #	*OFMT					= *#	;
       #	*MULTILINE_MATCHING			= **	;
      +#	*OLD_PERL_VERSION			= *]	;
       
       1;
      diff --git a/contrib/perl5/lib/Env.pm b/contrib/perl5/lib/Env.pm
      index b0afc3b2dbf5..d1ee071cf8db 100644
      --- a/contrib/perl5/lib/Env.pm
      +++ b/contrib/perl5/lib/Env.pm
      @@ -2,57 +2,96 @@ package Env;
       
       =head1 NAME
       
      -Env - perl module that imports environment variables
      +Env - perl module that imports environment variables as scalars or arrays
       
       =head1 SYNOPSIS
       
           use Env;
           use Env qw(PATH HOME TERM);
      +    use Env qw($SHELL @LD_LIBRARY_PATH);
       
       =head1 DESCRIPTION
       
      -Perl maintains environment variables in a pseudo-hash named %ENV.  For
      +Perl maintains environment variables in a special hash named C<%ENV>.  For
       when this access method is inconvenient, the Perl module C allows
      -environment variables to be treated as simple variables.
      +environment variables to be treated as scalar or array variables.
       
      -The Env::import() function ties environment variables with suitable
      +The C function ties environment variables with suitable
       names to global Perl variables with the same names.  By default it
      -does so with all existing environment variables (C).  If
      -the import function receives arguments, it takes them to be a list of
      -environment variables to tie; it's okay if they don't yet exist.
      +ties all existing environment variables (C) to scalars.  If
      +the C function receives arguments, it takes them to be a list of
      +variables to tie; it's okay if they don't yet exist. The scalar type
      +prefix '$' is inferred for any element of this list not prefixed by '$'
      +or '@'. Arrays are implemented in terms of C and C, using
      +C<$Config::Config{path_sep}> as the delimiter.
       
       After an environment variable is tied, merely use it like a normal variable.
       You may access its value 
       
           @path = split(/:/, $PATH);
      +    print join("\n", @LD_LIBRARY_PATH), "\n";
       
       or modify it
       
           $PATH .= ":.";
      +    push @LD_LIBRARY_PATH, $dir;
      +
      +however you'd like. Bear in mind, however, that each access to a tied array
      +variable requires splitting the environment variable's string anew.
      +
      +The code:
      +
      +    use Env qw(@PATH);
      +    push @PATH, '.';
      +
      +is equivalent to:
      +
      +    use Env qw(PATH);
      +    $PATH .= ":.";
      +
      +except that if C<$ENV{PATH}> started out empty, the second approach leaves
      +it with the (odd) value "C<:.>", but the first approach leaves it with "C<.>".
       
      -however you'd like.
       To remove a tied environment variable from
       the environment, assign it the undefined value
       
           undef $PATH;
      +    undef @LD_LIBRARY_PATH;
      +
      +=head1 LIMITATIONS
      +
      +On VMS systems, arrays tied to environment variables are read-only. Attempting
      +to change anything will cause a warning.
       
       =head1 AUTHOR
       
       Chip Salzenberg EFE
      +and
      +Gregor N. Purdy EFE
       
       =cut
       
       sub import {
           my ($callpack) = caller(0);
           my $pack = shift;
      -    my @vars = grep /^[A-Za-z_]\w*$/, (@_ ? @_ : keys(%ENV));
      +    my @vars = grep /^[\$\@]?[A-Za-z_]\w*$/, (@_ ? @_ : keys(%ENV));
           return unless @vars;
       
      -    eval "package $callpack; use vars qw("
      -	 . join(' ', map { '$'.$_ } @vars) . ")";
      +    @vars = map { m/^[\$\@]/ ? $_ : '$'.$_ } @vars;
      +
      +    eval "package $callpack; use vars qw(" . join(' ', @vars) . ")";
           die $@ if $@;
           foreach (@vars) {
      -	tie ${"${callpack}::$_"}, Env, $_;
      +	my ($type, $name) = m/^([\$\@])(.*)$/;
      +	if ($type eq '$') {
      +	    tie ${"${callpack}::$name"}, Env, $name;
      +	} else {
      +	    if ($^O eq 'VMS') {
      +		tie @{"${callpack}::$name"}, Env::Array::VMS, $name;
      +	    } else {
      +		tie @{"${callpack}::$name"}, Env::Array, $name;
      +	    }
      +	}
           }
       }
       
      @@ -74,4 +113,121 @@ sub STORE {
           }
       }
       
      +######################################################################
      +
      +package Env::Array;
      + 
      +use Config;
      +use Tie::Array;
      +
      +@ISA = qw(Tie::Array);
      +
      +my $sep = $Config::Config{path_sep};
      +
      +sub TIEARRAY {
      +    bless \($_[1]);
      +}
      +
      +sub FETCHSIZE {
      +    my ($self) = @_;
      +    my @temp = split($sep, $ENV{$$self});
      +    return scalar(@temp);
      +}
      +
      +sub STORESIZE {
      +    my ($self, $size) = @_;
      +    my @temp = split($sep, $ENV{$$self});
      +    $#temp = $size - 1;
      +    $ENV{$$self} = join($sep, @temp);
      +}
      +
      +sub CLEAR {
      +    my ($self) = @_;
      +    $ENV{$$self} = '';
      +}
      +
      +sub FETCH {
      +    my ($self, $index) = @_;
      +    return (split($sep, $ENV{$$self}))[$index];
      +}
      +
      +sub STORE {
      +    my ($self, $index, $value) = @_;
      +    my @temp = split($sep, $ENV{$$self});
      +    $temp[$index] = $value;
      +    $ENV{$$self} = join($sep, @temp);
      +    return $value;
      +}
      +
      +sub PUSH {
      +    my $self = shift;
      +    my @temp = split($sep, $ENV{$$self});
      +    push @temp, @_;
      +    $ENV{$$self} = join($sep, @temp);
      +    return scalar(@temp);
      +}
      +
      +sub POP {
      +    my ($self) = @_;
      +    my @temp = split($sep, $ENV{$$self});
      +    my $result = pop @temp;
      +    $ENV{$$self} = join($sep, @temp);
      +    return $result;
      +}
      +
      +sub UNSHIFT {
      +    my $self = shift;
      +    my @temp = split($sep, $ENV{$$self});
      +    my $result = unshift @temp, @_;
      +    $ENV{$$self} = join($sep, @temp);
      +    return $result;
      +}
      +
      +sub SHIFT {
      +    my ($self) = @_;
      +    my @temp = split($sep, $ENV{$$self});
      +    my $result = shift @temp;
      +    $ENV{$$self} = join($sep, @temp);
      +    return $result;
      +}
      +
      +sub SPLICE {
      +    my $self = shift;
      +    my $offset = shift;
      +    my $length = shift;
      +    my @temp = split($sep, $ENV{$$self});
      +    if (wantarray) {
      +	my @result = splice @temp, $self, $offset, $length, @_;
      +	$ENV{$$self} = join($sep, @temp);
      +	return @result;
      +    } else {
      +	my $result = scalar splice @temp, $offset, $length, @_;
      +	$ENV{$$self} = join($sep, @temp);
      +	return $result;
      +    }
      +}
      +
      +######################################################################
      +
      +package Env::Array::VMS;
      +use Tie::Array;
      +
      +@ISA = qw(Tie::Array);
      + 
      +sub TIEARRAY {
      +    bless \($_[1]);
      +}
      +
      +sub FETCHSIZE {
      +    my ($self) = @_;
      +    my $i = 0;
      +    while ($i < 127 and defined $ENV{$$self . ';' . $i}) { $i++; };
      +    return $i;
      +}
      +
      +sub FETCH {
      +    my ($self, $index) = @_;
      +    return $ENV{$$self . ';' . $index};
      +}
      +
       1;
      diff --git a/contrib/perl5/lib/Exporter.pm b/contrib/perl5/lib/Exporter.pm
      index 3f42e407e0bb..585109e7d03c 100644
      --- a/contrib/perl5/lib/Exporter.pm
      +++ b/contrib/perl5/lib/Exporter.pm
      @@ -2,227 +2,60 @@ package Exporter;
       
       require 5.001;
       
      -#
      -# We go to a lot of trouble not to 'require Carp' at file scope,
      -#  because Carp requires Exporter, and something has to give.
      -#
      -
       $ExportLevel = 0;
      -$Verbose = 0 unless $Verbose;
      +$Verbose ||= 0;
      +$VERSION = '5.562';
       
      -sub export {
      -
      -    # First make import warnings look like they're coming from the "use".
      -    local $SIG{__WARN__} = sub {
      -	my $text = shift;
      -	if ($text =~ s/ at \S*Exporter.pm line \d+.*\n//) {
      -	    require Carp;
      -	    local $Carp::CarpLevel = 1;	# ignore package calling us too.
      -	    Carp::carp($text);
      -	}
      -	else {
      -	    warn $text;
      -	}
      -    };
      -    local $SIG{__DIE__} = sub {
      -	require Carp;
      -	local $Carp::CarpLevel = 1;	# ignore package calling us too.
      -	Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT")
      -	    if $_[0] =~ /^Unable to create sub named "(.*?)::"/;
      -    };
      -
      -    my($pkg, $callpkg, @imports) = @_;
      -    my($type, $sym, $oops);
      -    *exports = *{"${pkg}::EXPORT"};
      -
      -    if (@imports) {
      -	if (!%exports) {
      -	    grep(s/^&//, @exports);
      -	    @exports{@exports} = (1) x @exports;
      -	    my $ok = \@{"${pkg}::EXPORT_OK"};
      -	    if (@$ok) {
      -		grep(s/^&//, @$ok);
      -		@exports{@$ok} = (1) x @$ok;
      -	    }
      -	}
      -
      -	if ($imports[0] =~ m#^[/!:]#){
      -	    my $tagsref = \%{"${pkg}::EXPORT_TAGS"};
      -	    my $tagdata;
      -	    my %imports;
      -	    my($remove, $spec, @names, @allexports);
      -	    # negated first item implies starting with default set:
      -	    unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/;
      -	    foreach $spec (@imports){
      -		$remove = $spec =~ s/^!//;
      -
      -		if ($spec =~ s/^://){
      -		    if ($spec eq 'DEFAULT'){
      -			@names = @exports;
      -		    }
      -		    elsif ($tagdata = $tagsref->{$spec}) {
      -			@names = @$tagdata;
      -		    }
      -		    else {
      -			warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS];
      -			++$oops;
      -			next;
      -		    }
      -		}
      -		elsif ($spec =~ m:^/(.*)/$:){
      -		    my $patn = $1;
      -		    @allexports = keys %exports unless @allexports; # only do keys once
      -		    @names = grep(/$patn/, @allexports); # not anchored by default
      -		}
      -		else {
      -		    @names = ($spec); # is a normal symbol name
      -		}
      -
      -		warn "Import ".($remove ? "del":"add").": @names "
      -		    if $Verbose;
      -
      -		if ($remove) {
      -		   foreach $sym (@names) { delete $imports{$sym} } 
      -		}
      -		else {
      -		    @imports{@names} = (1) x @names;
      -		}
      -	    }
      -	    @imports = keys %imports;
      -	}
      -
      -	foreach $sym (@imports) {
      -	    if (!$exports{$sym}) {
      -		if ($sym =~ m/^\d/) {
      -		    $pkg->require_version($sym);
      -		    # If the version number was the only thing specified
      -		    # then we should act as if nothing was specified:
      -		    if (@imports == 1) {
      -			@imports = @exports;
      -			last;
      -		    }
      -		    # We need a way to emulate 'use Foo ()' but still
      -		    # allow an easy version check: "use Foo 1.23, ''";
      -		    if (@imports == 2 and !$imports[1]) {
      -			@imports = ();
      -			last;
      -		    }
      -		} elsif ($sym !~ s/^&// || !$exports{$sym}) {
      -                    require Carp;
      -		    Carp::carp(qq["$sym" is not exported by the $pkg module]);
      -		    $oops++;
      -		}
      -	    }
      -	}
      -	if ($oops) {
      -	    require Carp;
      -	    Carp::croak("Can't continue after import errors");
      -	}
      -    }
      -    else {
      -	@imports = @exports;
      -    }
      -
      -    *fail = *{"${pkg}::EXPORT_FAIL"};
      -    if (@fail) {
      -	if (!%fail) {
      -	    # Build cache of symbols. Optimise the lookup by adding
      -	    # barewords twice... both with and without a leading &.
      -	    # (Technique could be applied to %exports cache at cost of memory)
      -	    my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @fail;
      -	    warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Verbose;
      -	    @fail{@expanded} = (1) x @expanded;
      -	}
      -	my @failed;
      -	foreach $sym (@imports) { push(@failed, $sym) if $fail{$sym} }
      -	if (@failed) {
      -	    @failed = $pkg->export_fail(@failed);
      -	    foreach $sym (@failed) {
      -                require Carp;
      -		Carp::carp(qq["$sym" is not implemented by the $pkg module ],
      -			"on this architecture");
      -	    }
      -	    if (@failed) {
      -		require Carp;
      -		Carp::croak("Can't continue after import errors");
      -	    }
      -	}
      -    }
      -
      -    warn "Importing into $callpkg from $pkg: ",
      -		join(", ",sort @imports) if $Verbose;
      -
      -    foreach $sym (@imports) {
      -	# shortcut for the common case of no type character
      -	(*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next)
      -	    unless $sym =~ s/^(\W)//;
      -	$type = $1;
      -	*{"${callpkg}::$sym"} =
      -	    $type eq '&' ? \&{"${pkg}::$sym"} :
      -	    $type eq '$' ? \${"${pkg}::$sym"} :
      -	    $type eq '@' ? \@{"${pkg}::$sym"} :
      -	    $type eq '%' ? \%{"${pkg}::$sym"} :
      -	    $type eq '*' ?  *{"${pkg}::$sym"} :
      -	    do { require Carp; Carp::croak("Can't export symbol: $type$sym") };
      -    }
      +sub export_to_level {
      +  require Exporter::Heavy;
      +  goto &heavy_export_to_level;
       }
       
      -sub export_to_level
      -{
      -      my $pkg = shift;
      -      my ($level, $junk) = (shift, shift);  # need to get rid of first arg
      -                                            # we know it already.
      -      my $callpkg = caller($level);
      -      $pkg->export($callpkg, @_);
      +sub export {
      +  require Exporter::Heavy;
      +  goto &heavy_export;
      +}
      +
      +sub export_tags {
      +  require Exporter::Heavy;
      +  _push_tags((caller)[0], "EXPORT",    \@_);
      +}
      +
      +sub export_ok_tags {
      +  require Exporter::Heavy;
      +  _push_tags((caller)[0], "EXPORT_OK", \@_);
       }
       
       sub import {
      -    my $pkg = shift;
      -    my $callpkg = caller($ExportLevel);
      -    export $pkg, $callpkg, @_;
      -}
      -
      -
      -
      -# Utility functions
      -
      -sub _push_tags {
      -    my($pkg, $var, $syms) = @_;
      -    my $nontag;
      -    *export_tags = \%{"${pkg}::EXPORT_TAGS"};
      -    push(@{"${pkg}::$var"},
      -	map { $export_tags{$_} ? @{$export_tags{$_}} : scalar(++$nontag,$_) }
      -		(@$syms) ? @$syms : keys %export_tags);
      -    if ($nontag and $^W) {
      -	# This may change to a die one day
      -	require Carp;
      -	Carp::carp("Some names are not tags");
      +  my $pkg = shift;
      +  my $callpkg = caller($ExportLevel);
      +  *exports = *{"$pkg\::EXPORT"};
      +  # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
      +  *fail = *{"$pkg\::EXPORT_FAIL"};
      +  return export $pkg, $callpkg, @_
      +    if $Verbose or $Debug or @fail > 1;
      +  my $args = @_ or @_ = @exports;
      +  
      +  if ($args and not %exports) {
      +    foreach my $sym (@exports, @{"$pkg\::EXPORT_OK"}) {
      +      $sym =~ s/^&//;
      +      $exports{$sym} = 1;
           }
      -}
      -
      -sub export_tags    { _push_tags((caller)[0], "EXPORT",    \@_) }
      -sub export_ok_tags { _push_tags((caller)[0], "EXPORT_OK", \@_) }
      -
      -
      -# Default methods
      -
      -sub export_fail {
      -    my $self = shift;
      -    @_;
      -}
      -
      -sub require_version {
      -    my($self, $wanted) = @_;
      -    my $pkg = ref $self || $self;
      -    my $version = ${"${pkg}::VERSION"};
      -    if (!$version or $version < $wanted) {
      -	$version ||= "(undef)";
      -	my $file = $INC{"$pkg.pm"};
      -	$file &&= " ($file)";
      -	require Carp;
      -	Carp::croak("$pkg $wanted required--this is only version $version$file")
      -    }
      -    $version;
      +  }
      +  if ($Verbose or $Debug 
      +      or grep {/\W/ or $args and not exists $exports{$_}
      +	       or @fail and $_ eq $fail[0]
      +	       or (@{"$pkg\::EXPORT_OK"} 
      +		   and $_ eq ${"$pkg\::EXPORT_OK"}[0])} @_) {
      +    return export $pkg, $callpkg, ($args ? @_ : ());
      +  }
      +  #local $SIG{__WARN__} = sub {require Carp; goto &Carp::carp};
      +  local $SIG{__WARN__} = 
      +	sub {require Carp; local $Carp::CarpLevel = 1; &Carp::carp};
      +  foreach $sym (@_) {
      +    # shortcut for the common case of no type character
      +    *{"$callpkg\::$sym"} = \&{"$pkg\::$sym"};
      +  }
       }
       
       1;
      @@ -286,6 +119,18 @@ in L and L. Understanding the concept of
       modules and how the C statement operates is important to
       understanding the Exporter.
       
      +=head2 How to Export
      +
      +The arrays C<@EXPORT> and C<@EXPORT_OK> in a module hold lists of
      +symbols that are going to be exported into the users name space by
      +default, or which they can request to be exported, respectively.  The
      +symbols can represent functions, scalars, arrays, hashes, or typeglobs.
      +The symbols must be given by full name with the exception that the
      +ampersand in front of a function is optional, e.g.
      +
      +    @EXPORT    = qw(afunc $scalar @array);   # afunc is a function
      +    @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
      +
       =head2 Selecting What To Export
       
       Do B export method names!
      @@ -364,11 +209,12 @@ Exporter has a special method, 'export_to_level' which is used in situations
       where you can't directly call Export's import method. The export_to_level
       method looks like:
       
      -MyPackage->export_to_level($where_to_export, @what_to_export);
      +MyPackage->export_to_level($where_to_export, $package, @what_to_export);
       
       where $where_to_export is an integer telling how far up the calling stack
       to export your symbols, and @what_to_export is an array telling what
      -symbols *to* export (usually this is @_).
      +symbols *to* export (usually this is @_).  The $package argument is
      +currently unused.
       
       For example, suppose that you have a module, A, which already has an
       import function:
      diff --git a/contrib/perl5/lib/Exporter/Heavy.pm b/contrib/perl5/lib/Exporter/Heavy.pm
      new file mode 100644
      index 000000000000..6647f7075cbf
      --- /dev/null
      +++ b/contrib/perl5/lib/Exporter/Heavy.pm
      @@ -0,0 +1,225 @@
      +package Exporter;
      +
      +=head1 NAME
      +
      +Exporter::Heavy - Exporter guts
      +
      +=head1 SYNOPIS
      +
      +(internal use only)
      +
      +=head1 DESCRIPTION
      +
      +No user-serviceable parts inside.
      +
      +=cut
      +#
      +# We go to a lot of trouble not to 'require Carp' at file scope,
      +#  because Carp requires Exporter, and something has to give.
      +#
      +
      +sub heavy_export {
      +
      +    # First make import warnings look like they're coming from the "use".
      +    local $SIG{__WARN__} = sub {
      +	my $text = shift;
      +	if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) {
      +	    require Carp;
      +	    local $Carp::CarpLevel = 1;	# ignore package calling us too.
      +	    Carp::carp($text);
      +	}
      +	else {
      +	    warn $text;
      +	}
      +    };
      +    local $SIG{__DIE__} = sub {
      +	require Carp;
      +	local $Carp::CarpLevel = 1;	# ignore package calling us too.
      +	Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT")
      +	    if $_[0] =~ /^Unable to create sub named "(.*?)::"/;
      +    };
      +
      +    my($pkg, $callpkg, @imports) = @_;
      +    my($type, $sym, $oops);
      +    *exports = *{"${pkg}::EXPORT"};
      +
      +    if (@imports) {
      +	if (!%exports) {
      +	    grep(s/^&//, @exports);
      +	    @exports{@exports} = (1) x @exports;
      +	    my $ok = \@{"${pkg}::EXPORT_OK"};
      +	    if (@$ok) {
      +		grep(s/^&//, @$ok);
      +		@exports{@$ok} = (1) x @$ok;
      +	    }
      +	}
      +
      +	if ($imports[0] =~ m#^[/!:]#){
      +	    my $tagsref = \%{"${pkg}::EXPORT_TAGS"};
      +	    my $tagdata;
      +	    my %imports;
      +	    my($remove, $spec, @names, @allexports);
      +	    # negated first item implies starting with default set:
      +	    unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/;
      +	    foreach $spec (@imports){
      +		$remove = $spec =~ s/^!//;
      +
      +		if ($spec =~ s/^://){
      +		    if ($spec eq 'DEFAULT'){
      +			@names = @exports;
      +		    }
      +		    elsif ($tagdata = $tagsref->{$spec}) {
      +			@names = @$tagdata;
      +		    }
      +		    else {
      +			warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS];
      +			++$oops;
      +			next;
      +		    }
      +		}
      +		elsif ($spec =~ m:^/(.*)/$:){
      +		    my $patn = $1;
      +		    @allexports = keys %exports unless @allexports; # only do keys once
      +		    @names = grep(/$patn/, @allexports); # not anchored by default
      +		}
      +		else {
      +		    @names = ($spec); # is a normal symbol name
      +		}
      +
      +		warn "Import ".($remove ? "del":"add").": @names "
      +		    if $Verbose;
      +
      +		if ($remove) {
      +		   foreach $sym (@names) { delete $imports{$sym} } 
      +		}
      +		else {
      +		    @imports{@names} = (1) x @names;
      +		}
      +	    }
      +	    @imports = keys %imports;
      +	}
      +
      +	foreach $sym (@imports) {
      +	    if (!$exports{$sym}) {
      +		if ($sym =~ m/^\d/) {
      +		    $pkg->require_version($sym);
      +		    # If the version number was the only thing specified
      +		    # then we should act as if nothing was specified:
      +		    if (@imports == 1) {
      +			@imports = @exports;
      +			last;
      +		    }
      +		    # We need a way to emulate 'use Foo ()' but still
      +		    # allow an easy version check: "use Foo 1.23, ''";
      +		    if (@imports == 2 and !$imports[1]) {
      +			@imports = ();
      +			last;
      +		    }
      +		} elsif ($sym !~ s/^&// || !$exports{$sym}) {
      +                    require Carp;
      +		    Carp::carp(qq["$sym" is not exported by the $pkg module]);
      +		    $oops++;
      +		}
      +	    }
      +	}
      +	if ($oops) {
      +	    require Carp;
      +	    Carp::croak("Can't continue after import errors");
      +	}
      +    }
      +    else {
      +	@imports = @exports;
      +    }
      +
      +    *fail = *{"${pkg}::EXPORT_FAIL"};
      +    if (@fail) {
      +	if (!%fail) {
      +	    # Build cache of symbols. Optimise the lookup by adding
      +	    # barewords twice... both with and without a leading &.
      +	    # (Technique could be applied to %exports cache at cost of memory)
      +	    my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @fail;
      +	    warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Verbose;
      +	    @fail{@expanded} = (1) x @expanded;
      +	}
      +	my @failed;
      +	foreach $sym (@imports) { push(@failed, $sym) if $fail{$sym} }
      +	if (@failed) {
      +	    @failed = $pkg->export_fail(@failed);
      +	    foreach $sym (@failed) {
      +                require Carp;
      +		Carp::carp(qq["$sym" is not implemented by the $pkg module ],
      +			"on this architecture");
      +	    }
      +	    if (@failed) {
      +		require Carp;
      +		Carp::croak("Can't continue after import errors");
      +	    }
      +	}
      +    }
      +
      +    warn "Importing into $callpkg from $pkg: ",
      +		join(", ",sort @imports) if $Verbose;
      +
      +    foreach $sym (@imports) {
      +	# shortcut for the common case of no type character
      +	(*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next)
      +	    unless $sym =~ s/^(\W)//;
      +	$type = $1;
      +	*{"${callpkg}::$sym"} =
      +	    $type eq '&' ? \&{"${pkg}::$sym"} :
      +	    $type eq '$' ? \${"${pkg}::$sym"} :
      +	    $type eq '@' ? \@{"${pkg}::$sym"} :
      +	    $type eq '%' ? \%{"${pkg}::$sym"} :
      +	    $type eq '*' ?  *{"${pkg}::$sym"} :
      +	    do { require Carp; Carp::croak("Can't export symbol: $type$sym") };
      +    }
      +}
      +
      +sub heavy_export_to_level
      +{
      +      my $pkg = shift;
      +      my $level = shift;
      +      (undef) = shift;			# XXX redundant arg
      +      my $callpkg = caller($level);
      +      $pkg->export($callpkg, @_);
      +}
      +
      +# Utility functions
      +
      +sub _push_tags {
      +    my($pkg, $var, $syms) = @_;
      +    my $nontag;
      +    *export_tags = \%{"${pkg}::EXPORT_TAGS"};
      +    push(@{"${pkg}::$var"},
      +	map { $export_tags{$_} ? @{$export_tags{$_}} : scalar(++$nontag,$_) }
      +		(@$syms) ? @$syms : keys %export_tags);
      +    if ($nontag and $^W) {
      +	# This may change to a die one day
      +	require Carp;
      +	Carp::carp("Some names are not tags");
      +    }
      +}
      +
      +# Default methods
      +
      +sub export_fail {
      +    my $self = shift;
      +    @_;
      +}
      +
      +sub require_version {
      +    my($self, $wanted) = @_;
      +    my $pkg = ref $self || $self;
      +    my $version = ${"${pkg}::VERSION"};
      +    if (!$version or $version < $wanted) {
      +	$version ||= "(undef)";
      +	    # %INC contains slashes, but $pkg contains double-colons.
      +	my $file = (map {s,::,/,g; $INC{$_}} "$pkg.pm")[0];
      +	$file &&= " ($file)";
      +	require Carp;
      +	Carp::croak("$pkg $wanted required--this is only version $version$file")
      +    }
      +    $version;
      +}
      +
      +1;
      diff --git a/contrib/perl5/lib/ExtUtils/Command.pm b/contrib/perl5/lib/ExtUtils/Command.pm
      index e900e51ffa48..bccc76cc199d 100644
      --- a/contrib/perl5/lib/ExtUtils/Command.pm
      +++ b/contrib/perl5/lib/ExtUtils/Command.pm
      @@ -1,4 +1,6 @@
       package ExtUtils::Command;
      +
      +use 5.005_64;
       use strict;
       # use AutoLoader;
       use Carp;
      @@ -7,7 +9,7 @@ use File::Compare;
       use File::Basename;
       use File::Path qw(rmtree);
       require Exporter;
      -use vars qw(@ISA @EXPORT $VERSION);
      +our(@ISA, @EXPORT, $VERSION);
       @ISA     = qw(Exporter);
       @EXPORT  = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f);
       $VERSION = '1.01';
      diff --git a/contrib/perl5/lib/ExtUtils/Embed.pm b/contrib/perl5/lib/ExtUtils/Embed.pm
      index 4b56e88b2604..b649b6b77b6d 100644
      --- a/contrib/perl5/lib/ExtUtils/Embed.pm
      +++ b/contrib/perl5/lib/ExtUtils/Embed.pm
      @@ -51,7 +51,7 @@ sub xsinit {
           my($file, $std, $mods) = @_;
           my($fh,@mods,%seen);
           $file ||= "perlxsi.c";
      -    my $xsinit_proto = is_perl_object() ? "CPERLarg" : "void";
      +    my $xsinit_proto = "pTHXo";
       
           if (@_) {
              @mods = @$mods if $mods;
      @@ -75,7 +75,7 @@ sub xsinit {
           @mods = grep(!$seen{$_}++, @mods);
       
           print $fh &xsi_header();
      -    print $fh "EXTERN_C void xs_init _(($xsinit_proto));\n\n";     
      +    print $fh "EXTERN_C void xs_init ($xsinit_proto);\n\n";     
           print $fh &xsi_protos(@mods);
       
           print $fh "\nEXTERN_C void\nxs_init($xsinit_proto)\n{\n";
      @@ -120,14 +120,13 @@ EOF
       sub xsi_protos {
           my(@exts) = @_;
           my(@retval,%seen);
      -    my $boot_proto = is_perl_object() ? 
      -	"CV* cv _CPERLarg" : "CV* cv";
      +    my $boot_proto = "pTHXo_ CV* cv";
           foreach $_ (@exts){
               my($pname) = canon('/', $_);
               my($mname, $cname);
               ($mname = $pname) =~ s!/!::!g;
               ($cname = $pname) =~ s!/!__!g;
      -	my($ccode) = "EXTERN_C void boot_${cname} _(($boot_proto));\n";
      +	my($ccode) = "EXTERN_C void boot_${cname} ($boot_proto);\n";
       	next if $seen{$ccode}++;
               push(@retval, $ccode);
           }
      @@ -333,7 +332,7 @@ B<[@modules]> is an array ref, same as additional arguments mentioned above.
       
       
       This will generate code with an B function that glues the perl B function 
      -to the C B function and writes it to a file named "xsinit.c".
      +to the C B function and writes it to a file named F.
       
       Note that B is a special case where it must call B directly.
       
      @@ -379,7 +378,7 @@ we should find B
       When looking for B relative to a search path,
       we should find B
       
      -Keep in mind, you can always supply B
      +Keep in mind that you can always supply B
       as an additional linker argument.
       
       B<-->  Elist of linker argsE
      @@ -393,7 +392,7 @@ When invoked with parameters the following are accepted and optional:
       
       C
       
      -Where,
      +Where:
       
       B<$std> is boolean, equivalent to the B<-std> option.  
       
      diff --git a/contrib/perl5/lib/ExtUtils/Install.pm b/contrib/perl5/lib/ExtUtils/Install.pm
      index f75aa55fa8b0..36c72219a94f 100644
      --- a/contrib/perl5/lib/ExtUtils/Install.pm
      +++ b/contrib/perl5/lib/ExtUtils/Install.pm
      @@ -1,12 +1,13 @@
       package ExtUtils::Install;
       
      +use 5.005_64;
      +our(@ISA, @EXPORT, $VERSION);
       $VERSION = substr q$Revision: 1.28 $, 10;
       # $Date: 1998/01/25 07:08:24 $
       
       use Exporter;
       use Carp ();
       use Config qw(%Config);
      -use vars qw(@ISA @EXPORT $VERSION);
       @ISA = ('Exporter');
       @EXPORT = ('install','uninstall','pm_to_blib', 'install_default');
       $Is_VMS = $^O eq 'VMS';
      @@ -15,7 +16,7 @@ my $splitchar = $^O eq 'VMS' ? '|' : ($^O eq 'os2' || $^O eq 'dos') ? ';' : ':';
       my @PERL_ENV_LIB = split $splitchar, defined $ENV{'PERL5LIB'} ? $ENV{'PERL5LIB'} : $ENV{'PERLLIB'} || '';
       my $Inc_uninstall_warn_handler;
       
      -#use vars qw( @EXPORT @ISA $Is_VMS );
      +#our(@EXPORT, @ISA, $Is_VMS);
       #use strict;
       
       sub forceunlink {
      @@ -67,7 +68,6 @@ sub install {
           }
           $packlist->read($pack{"read"}) if (-f $pack{"read"});
           my $cwd = cwd();
      -    my $umask = umask 0 unless $Is_VMS;
       
           my($source);
           MOD_INSTALL: foreach $source (sort keys %hash) {
      @@ -85,9 +85,7 @@ sub install {
       	    exists $hash{"blib/arch"} and
       	    directory_not_empty("blib/arch")) {
       	    $targetroot = $hash{"blib/arch"};
      -            print "Files found in blib/arch --> Installing files in " 
      -	        . "blib/lib into architecture dependend library tree!\n"
      -		; #if $verbose>1;
      +            print "Files found in blib/arch: installing files in blib/lib into architecture dependent library tree\n";
       	}
       	chdir($source) or next;
       	find(sub {
      @@ -136,7 +134,6 @@ sub install {
       	}, ".");
       	chdir($cwd) or Carp::croak("Couldn't chdir to $cwd: $!");
           }
      -    umask $umask unless $Is_VMS;
           if ($pack{'write'}) {
       	$dir = dirname($pack{'write'});
       	mkpath($dir,0,0755);
      @@ -195,7 +192,6 @@ sub uninstall {
       	forceunlink($_) unless $nonono;
           }
           print "unlink $fil\n" if $verbose;
      -    close P;
           forceunlink($fil) unless $nonono;
       }
       
      @@ -228,7 +224,7 @@ sub inc_uninstall {
       	if ($nonono) {
       	    if ($verbose) {
       		$Inc_uninstall_warn_handler ||= new ExtUtils::Install::Warn;
      -		$libdir =~ s|^\./|| ; # That's just cosmetics, no need to port. It looks prettier.
      +		$libdir =~ s|^\./||s ; # That's just cosmetics, no need to port. It looks prettier.
       		$Inc_uninstall_warn_handler->add("$libdir/$file",$targetfile);
       	    }
       	    # if not verbose, we just say nothing
      @@ -261,7 +257,6 @@ sub pm_to_blib {
             close(FROMTO);
            }
       
      -    my $umask = umask 0022 unless $Is_VMS;
           mkpath($autodir,0,0755);
           foreach (keys %$fromto) {
       	next if -f $fromto->{$_} && -M $fromto->{$_} < -M $_;
      @@ -279,10 +274,9 @@ sub pm_to_blib {
       	utime($atime,$mtime+$Is_VMS,$fromto->{$_});
       	chmod(0444 | ( $mode & 0111 ? 0111 : 0 ),$fromto->{$_});
       	print "cp $_ $fromto->{$_}\n";
      -	next unless /\.pm$/;
      +	next unless /\.pm\z/;
       	autosplit($fromto->{$_},$autodir);
           }
      -    umask $umask unless $Is_VMS;
       }
       
       package ExtUtils::Install::Warn;
      @@ -345,7 +339,7 @@ There are two keys with a special meaning in the hash: "read" and
       target files to the file named by C<$hashref-E{write}>. If there is
       another file named by C<$hashref-E{read}>, the contents of this file will
       be merged into the written file. The read and the written file may be
      -identical, but on AFS it is quite likely, people are installing to a
      +identical, but on AFS it is quite likely that people are installing to a
       different directory than the one where the files later appear.
       
       install_default() takes one or less arguments.  If no arguments are 
      @@ -358,7 +352,7 @@ The argument-less form is convenient for install scripts like
       
         perl -MExtUtils::Install -e install_default Tk/Canvas
       
      -Assuming this command is executed in a directory with populated F 
      +Assuming this command is executed in a directory with a populated F 
       directory, it will proceed as if the F was build by MakeMaker on 
       this machine.  This is useful for binary distributions.
       
      diff --git a/contrib/perl5/lib/ExtUtils/Installed.pm b/contrib/perl5/lib/ExtUtils/Installed.pm
      index dda594e78432..6961c6fdd47d 100644
      --- a/contrib/perl5/lib/ExtUtils/Installed.pm
      +++ b/contrib/perl5/lib/ExtUtils/Installed.pm
      @@ -1,4 +1,6 @@
       package ExtUtils::Installed;
      +
      +use 5.005_64;
       use strict;
       use Carp qw();
       use ExtUtils::Packlist;
      @@ -6,8 +8,7 @@ use ExtUtils::MakeMaker;
       use Config;
       use File::Find;
       use File::Basename;
      -use vars qw($VERSION);
      -$VERSION = '0.02';
      +our $VERSION = '0.02';
       
       sub _is_type($$$)
       {
      @@ -56,7 +57,7 @@ my $self = {};
       # Read the core packlist
       $self->{Perl}{packlist} =
          ExtUtils::Packlist->new("$Config{installarchlib}/.packlist");
      -$self->{Perl}{version} = $];
      +$self->{Perl}{version} = $Config{version};
       
       # Read the module packlists
       my $sub = sub
      @@ -66,8 +67,8 @@ my $sub = sub
       
          # Hack of the leading bits of the paths & convert to a module name
          my $module = $File::Find::name;
      -   $module =~ s!$Config{archlib}/auto/(.*)/.packlist!$1!;
      -   $module =~ s!$Config{sitearch}/auto/(.*)/.packlist!$1!;
      +   $module =~ s!$Config{archlib}/auto/(.*)/.packlist!$1!s;
      +   $module =~ s!$Config{sitearch}/auto/(.*)/.packlist!$1!s;
          my $modfile = "$module.pm";
          $module =~ s!/!::!g;
       
      diff --git a/contrib/perl5/lib/ExtUtils/Liblist.pm b/contrib/perl5/lib/ExtUtils/Liblist.pm
      index dae3125d909c..6029557f11eb 100644
      --- a/contrib/perl5/lib/ExtUtils/Liblist.pm
      +++ b/contrib/perl5/lib/ExtUtils/Liblist.pm
      @@ -1,8 +1,9 @@
       package ExtUtils::Liblist;
      -use vars qw($VERSION);
      +
      +use 5.005_64;
       # Broken out of MakeMaker from version 4.11
       
      -$VERSION = substr q$Revision: 1.25 $, 10;
      +our $VERSION = substr q$Revision: 1.25 $, 10;
       
       use Config;
       use Cwd 'cwd';
      @@ -108,13 +109,14 @@ sub _unix_os2_ext {
       	    } elsif (-f ($fullname="$thispth/lib$thislib.$so")
       		 && (($Config{'dlsrc'} ne "dl_dld.xs") || ($thislib eq "m"))){
       	    } elsif (-f ($fullname="$thispth/lib${thislib}_s$Config_libext")
      +                 && (! $Config{'archname'} =~ /RM\d\d\d-svr4/)
       		 && ($thislib .= "_s") ){ # we must explicitly use _s version
       	    } elsif (-f ($fullname="$thispth/lib$thislib$Config_libext")){
       	    } elsif (-f ($fullname="$thispth/$thislib$Config_libext")){
       	    } elsif (-f ($fullname="$thispth/Slib$thislib$Config_libext")){
       	    } elsif ($^O eq 'dgux'
       		 && -l ($fullname="$thispth/lib$thislib$Config_libext")
      -		 && readlink($fullname) =~ /^elink:/) {
      +		 && readlink($fullname) =~ /^elink:/s) {
       		 # Some of DG's libraries look like misconnected symbolic
       		 # links, but development tools can follow them.  (They
       		 # look like this:
      @@ -136,7 +138,7 @@ sub _unix_os2_ext {
       	    # Now update library lists
       
       	    # what do we know about this library...
      -	    my $is_dyna = ($fullname !~ /\Q$Config_libext\E$/);
      +	    my $is_dyna = ($fullname !~ /\Q$Config_libext\E\z/);
       	    my $in_perl = ($libs =~ /\B-l\Q$ {thislib}\E\b/s);
       
       	    # Do not add it into the list if it is already linked in
      @@ -362,7 +364,7 @@ sub _vms_ext {
           return ('', '', $crtlstr, '');
         }
       
      -  my(@dirs,@libs,$dir,$lib,%sh,%olb,%obj,$ldlib);
      +  my(@dirs,@libs,$dir,$lib,%found,@fndlibs,$ldlib);
         my $cwd = cwd();
         my($so,$lib_ext,$obj_ext) = @Config{'so','lib_ext','obj_ext'};
         # List of common Unix library names and there VMS equivalents
      @@ -430,28 +432,28 @@ sub _vms_ext {
               warn "\tChecking $name\n" if $verbose > 2;
               if (-f ($test = VMS::Filespec::rmsexpand($name))) {
                 # It's got its own suffix, so we'll have to figure out the type
      -          if    ($test =~ /(?:$so|exe)$/i)      { $type = 'sh'; }
      -          elsif ($test =~ /(?:$lib_ext|olb)$/i) { $type = 'olb'; }
      +          if    ($test =~ /(?:$so|exe)$/i)      { $type = 'SHR'; }
      +          elsif ($test =~ /(?:$lib_ext|olb)$/i) { $type = 'OLB'; }
                 elsif ($test =~ /(?:$obj_ext|obj)$/i) {
                   warn "Note (probably harmless): "
       			 ."Plain object file $test found in library list\n";
      -            $type = 'obj';
      +            $type = 'OBJ';
                 }
                 else {
                   warn "Note (probably harmless): "
       			 ."Unknown library type for $test; assuming shared\n";
      -            $type = 'sh';
      +            $type = 'SHR';
                 }
               }
               elsif (-f ($test = VMS::Filespec::rmsexpand($name,$so))      or
                      -f ($test = VMS::Filespec::rmsexpand($name,'.exe')))     {
      -          $type = 'sh';
      +          $type = 'SHR';
                 $name = $test unless $test =~ /exe;?\d*$/i;
               }
               elsif (not length($ctype) and  # If we've got a lib already, don't bother
                      ( -f ($test = VMS::Filespec::rmsexpand($name,$lib_ext)) or
                        -f ($test = VMS::Filespec::rmsexpand($name,'.olb'))))  {
      -          $type = 'olb';
      +          $type = 'OLB';
                 $name = $test unless $test =~ /olb;?\d*$/i;
               }
               elsif (not length($ctype) and  # If we've got a lib already, don't bother
      @@ -459,17 +461,18 @@ sub _vms_ext {
                        -f ($test = VMS::Filespec::rmsexpand($name,'.obj'))))  {
                 warn "Note (probably harmless): "
       		       ."Plain object file $test found in library list\n";
      -          $type = 'obj';
      +          $type = 'OBJ';
                 $name = $test unless $test =~ /obj;?\d*$/i;
               }
               if (defined $type) {
                 $ctype = $type; $cand = $name;
      -          last if $ctype eq 'sh';
      +          last if $ctype eq 'SHR';
               }
             }
             if ($ctype) { 
      -        eval '$' . $ctype . "{'$cand'}++";
      -        die "Error recording library: $@" if $@;
      +        # This has to precede any other CRTLs, so just make it first
      +        if ($cand eq 'VAXCCURSE') { unshift @{$found{$ctype}}, $cand; }  
      +        else                      { push    @{$found{$ctype}}, $cand; }
               warn "\tFound as $cand (really $test), type $ctype\n" if $verbose > 1;
               next LIB;
             }
      @@ -478,15 +481,10 @@ sub _vms_ext {
       		 ."No library found for $lib\n";
         }
       
      -  @libs = sort keys %obj;
      -  # This has to precede any other CRTLs, so just make it first
      -  if ($olb{VAXCCURSE}) {
      -    push(@libs,"$olb{VAXCCURSE}/Library");
      -    delete $olb{VAXCCURSE};
      -  }
      -  push(@libs, map { "$_/Library" } sort keys %olb);
      -  push(@libs, map { "$_/Share"   } sort keys %sh);
      -  $lib = join(' ',@libs);
      +  push @fndlibs, @{$found{OBJ}}                      if exists $found{OBJ};
      +  push @fndlibs, map { "$_/Library" } @{$found{OLB}} if exists $found{OLB};
      +  push @fndlibs, map { "$_/Share"   } @{$found{SHR}} if exists $found{SHR};
      +  $lib = join(' ',@fndlibs);
       
         $ldlib = $crtlstr ? "$lib $crtlstr" : $lib;
         warn "Result:\n\tEXTRALIBS: $lib\n\tLDLOADLIBS: $ldlib\n" if $verbose;
      @@ -544,7 +542,7 @@ below.
       =head2 EXTRALIBS
       
       List of libraries that need to be linked with when linking a perl
      -binary which includes this extension Only those libraries that
      +binary which includes this extension. Only those libraries that
       actually exist are included.  These are written to a file and used
       when linking perl.
       
      @@ -566,7 +564,7 @@ object file.  This list is used to create a .bs (bootstrap) file.
       =head1 PORTABILITY
       
       This module deals with a lot of system dependencies and has quite a
      -few architecture specific Bs in the code.
      +few architecture specific Cs in the code.
       
       =head2 VMS implementation
       
      @@ -686,7 +684,7 @@ enable searching for default libraries specified by C<$Config{libs}>.
       
       The libraries specified may be a mixture of static libraries and
       import libraries (to link with DLLs).  Since both kinds are used
      -pretty transparently on the win32 platform, we do not attempt to
      +pretty transparently on the Win32 platform, we do not attempt to
       distinguish between them.
       
       =item *
      diff --git a/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm b/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm
      new file mode 100644
      index 000000000000..a5ba410fdc08
      --- /dev/null
      +++ b/contrib/perl5/lib/ExtUtils/MM_Cygwin.pm
      @@ -0,0 +1,121 @@
      +package ExtUtils::MM_Cygwin;
      +
      +use Config;
      +#use Cwd;
      +#use File::Basename;
      +require Exporter;
      +
      +Exporter::import('ExtUtils::MakeMaker',
      +       qw( $Verbose &neatvalue));
      +
      +unshift @MM::ISA, 'ExtUtils::MM_Cygwin';
      +
      +sub canonpath {
      +    my($self,$path) = @_;
      +    $path =~ s|\\|/|g;
      +    return $self->ExtUtils::MM_Unix::canonpath($path);
      +}
      +
      +sub cflags {
      +    my($self,$libperl)=@_;
      +    return $self->{CFLAGS} if $self->{CFLAGS};
      +    my $base =$self->ExtUtils::MM_Unix::cflags($libperl);
      +    foreach (split /\n/, $base) {
      +      / *= */ and $self->{$`} = $';
      +    };
      +    $self->{CCFLAGS} .= " -DUSEIMPORTLIB" if ($Config{useshrplib} eq 'true');
      +
      +    return $self->{CFLAGS} = qq{
      +CCFLAGS = $self->{CCFLAGS}
      +OPTIMIZE = $self->{OPTIMIZE}
      +PERLTYPE = $self->{PERLTYPE}
      +LARGE = $self->{LARGE}
      +SPLIT = $self->{SPLIT}
      +};
      +
      +}
      +
      +sub manifypods {
      +    my($self, %attribs) = @_;
      +    return "\nmanifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
      +        %{$self->{MAN3PODS}} or %{$self->{MAN1PODS}};
      +    my($dist);
      +    my($pod2man_exe);
      +    if (defined $self->{PERL_SRC}) {
      +        $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
      +    } else {
      +        $pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
      +    }
      +    unless ($self->perl_script($pod2man_exe)) {
      +        # No pod2man but some MAN3PODS to be installed
      +        print <{MAKEFILE}, q[";' \\
      +-e 'print "Manifying $$m{$$_}\n"; $$m{$$_} =~ s/::/./g;' \\
      +-e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
      +-e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
      +];
      +    push @m, "\nmanifypods : pure_all ";
      +    push @m, join " \\\n\t", keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}};
      +
      +    push(@m,"\n");
      +    if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) {
      +        push @m, "\t$self->{NOECHO}\$(POD2MAN) \\\n\t";
      +        push @m, join " \\\n\t", %{$self->{MAN1PODS}}, %{$self->{MAN3PODS}};
      +    }
      +    join('', @m);
      +}
      +
      +sub perl_archive
      +{
      + return '$(PERL_INC)' .'/'. ("$Config{libperl}" or "libperl.a");
      +}
      +
      +1;
      +__END__
      +
      +=head1 NAME
      +
      +ExtUtils::MM_Cygwin - methods to override UN*X behaviour in ExtUtils::MakeMaker
      +
      +=head1 SYNOPSIS
      +
      + use ExtUtils::MM_Cygwin; # Done internally by ExtUtils::MakeMaker if needed
      +
      +=head1 DESCRIPTION
      +
      +See ExtUtils::MM_Unix for a documentation of the methods provided there.
      +
      +=over
      +
      +=item canonpath
      +
      +replaces backslashes with forward ones.  then acts as *nixish.
      +
      +=item cflags
      +
      +if configured for dynamic loading, triggers #define EXT in EXTERN.h
      +
      +=item manifypods
      +
      +replaces strings '::' with '.' in man page names
      +
      +=item perl_archive
      +
      +points to libperl.a
      +
      +=back
      +
      +=cut
      +
      diff --git a/contrib/perl5/lib/ExtUtils/MM_OS2.pm b/contrib/perl5/lib/ExtUtils/MM_OS2.pm
      index 5d6034ce3498..430235a0aacf 100644
      --- a/contrib/perl5/lib/ExtUtils/MM_OS2.pm
      +++ b/contrib/perl5/lib/ExtUtils/MM_OS2.pm
      @@ -25,13 +25,13 @@ sub dlsyms {
       $self->{BASEEXT}.def: Makefile.PL
       ",
            '	$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e \'use ExtUtils::Mksymlists; \\
      -     Mksymlists("NAME" => "', $self->{NAME},
      -     '", "DLBASE" => "',$self->{DLBASE},
      -     '", "DL_FUNCS" => ',neatvalue($funcs),
      +     Mksymlists("NAME" => "$(NAME)", "DLBASE" => "$(DLBASE)", ',
      +     '"VERSION" => "$(VERSION)", "DISTNAME" => "$(DISTNAME)", ',
      +     '"INSTALLDIRS" => "$(INSTALLDIRS)", ',
      +     '"DL_FUNCS" => ',neatvalue($funcs),
            ', "FUNCLIST" => ',neatvalue($funclist),
            ', "IMPORTS" => ',neatvalue($imports),
      -     ', "VERSION" => "',$self->{VERSION},
      -     '", "DL_VARS" => ', neatvalue($vars), ');\'
      +     ', "DL_VARS" => ', neatvalue($vars), ');\'
       ');
           }
           if (%{$self->{IMPORTS}}) {
      diff --git a/contrib/perl5/lib/ExtUtils/MM_Unix.pm b/contrib/perl5/lib/ExtUtils/MM_Unix.pm
      index 38bb061e6658..4c8da339b87a 100644
      --- a/contrib/perl5/lib/ExtUtils/MM_Unix.pm
      +++ b/contrib/perl5/lib/ExtUtils/MM_Unix.pm
      @@ -8,11 +8,10 @@ use strict;
       use vars qw($VERSION $Is_Mac $Is_OS2 $Is_VMS $Is_Win32 $Is_Dos $Is_PERL_OBJECT
       	    $Verbose %pm %static $Xsubpp_Version);
       
      -$VERSION = substr q$Revision: 1.12602 $, 10;
      +$VERSION = substr q$Revision: 1.12603 $, 10;
       # $Id: MM_Unix.pm,v 1.126 1998/06/28 21:32:49 k Exp k $
       
      -Exporter::import('ExtUtils::MakeMaker',
      -	qw( $Verbose &neatvalue));
      +Exporter::import('ExtUtils::MakeMaker', qw($Verbose &neatvalue));
       
       $Is_OS2 = $^O eq 'os2';
       $Is_Mac = $^O eq 'MacOS';
      @@ -81,13 +80,13 @@ path. On UNIX eliminated successive slashes and successive "/.".
       sub canonpath {
           my($self,$path) = @_;
           my $node = '';
      -    if ( $^O eq 'qnx' && $path =~ s|^(//\d+)/|/| ) {
      +    if ( $^O eq 'qnx' && $path =~ s|^(//\d+)/|/|s ) {
             $node = $1;
           }
           $path =~ s|(?<=[^/])/+|/|g ;                   # xx////xx  -> xx/xx
           $path =~ s|(/\.)+/|/|g ;                       # xx/././xx -> xx/xx
      -    $path =~ s|^(\./)+|| unless $path eq "./";     # ./xx      -> xx
      -    $path =~ s|(?<=[^/])/$|| ;                     # xx/       -> xx
      +    $path =~ s|^(\./)+||s unless $path eq "./";    # ./xx      -> xx
      +    $path =~ s|(?<=[^/])/\z|| ;                    # xx/       -> xx
           "$node$path";
       }
       
      @@ -188,6 +187,7 @@ sub ExtUtils::MM_Unix::fixin ;
       sub ExtUtils::MM_Unix::force ;
       sub ExtUtils::MM_Unix::guess_name ;
       sub ExtUtils::MM_Unix::has_link_code ;
      +sub ExtUtils::MM_Unix::htmlifypods ;
       sub ExtUtils::MM_Unix::init_dirscan ;
       sub ExtUtils::MM_Unix::init_main ;
       sub ExtUtils::MM_Unix::init_others ;
      @@ -375,21 +375,45 @@ sub cflags {
       	$self->{uc $_} ||= $cflags{$_}
           }
       
      -    if ($self->{CAPI} && $Is_PERL_OBJECT) {
      -        $self->{CCFLAGS} =~ s/-DPERL_OBJECT(\s|$)//;
      -        $self->{CCFLAGS} .= ' -DPERL_CAPI ';
      -        if ($Is_Win32 && $Config{'cc'} =~ /^cl.exe/i) {
      -            # Turn off C++ mode of the MSC compiler
      -            $self->{CCFLAGS} =~ s/-TP(\s|$)//;
      -            $self->{OPTIMIZE} =~ s/-TP(\s|$)//;
      +    if ($Is_PERL_OBJECT) {
      +        $self->{CCFLAGS} =~ s/-DPERL_OBJECT(\b|$)/-DPERL_CAPI/g;
      +        if ($Is_Win32) { 
      +	    if ($Config{'cc'} =~ /^cl/i) {
      +		# Turn off C++ mode of the MSC compiler
      +		$self->{CCFLAGS} =~ s/-TP(\s|$)//g;
      +		$self->{OPTIMIZE} =~ s/-TP(\s|$)//g;
      +	    }
      +	    elsif ($Config{'cc'} =~ /^bcc32/i) {
      +		# Turn off C++ mode of the Borland compiler
      +		$self->{CCFLAGS} =~ s/-P(\s|$)//g;
      +		$self->{OPTIMIZE} =~ s/-P(\s|$)//g;
      +	    }
      +	    elsif ($Config{'cc'} =~ /^gcc/i) {
      +		# Turn off C++ mode of the GCC compiler
      +		$self->{CCFLAGS} =~ s/-xc\+\+(\s|$)//g;
      +		$self->{OPTIMIZE} =~ s/-xc\+\+(\s|$)//g;
      +	    }
               }
           }
      +
      +    if ($self->{POLLUTE}) {
      +	$self->{CCFLAGS} .= ' -DPERL_POLLUTE ';
      +    }
      +
      +    my $pollute = '';
      +    if ($Config{usemymalloc} and not $Config{bincompat5005}
      +	and not $Config{ccflags} =~ /-DPERL_POLLUTE_MALLOC\b/
      +	and $self->{PERL_MALLOC_OK}) {
      +	$pollute = '$(PERL_MALLOC_DEF)';
      +    }
      +
           return $self->{CFLAGS} = qq{
       CCFLAGS = $self->{CCFLAGS}
       OPTIMIZE = $self->{OPTIMIZE}
       PERLTYPE = $self->{PERLTYPE}
       LARGE = $self->{LARGE}
       SPLIT = $self->{SPLIT}
      +MPOLLUTE = $pollute
       };
       
       }
      @@ -413,13 +437,26 @@ clean ::
       ');
           # clean subdirectories first
           for $dir (@{$self->{DIR}}) {
      -	push @m, "\t-cd $dir && \$(TEST_F) $self->{MAKEFILE} && \$(MAKE) clean\n";
      +	if ($Is_Win32  &&  Win32::IsWin95()) {
      +	    push @m, <{MAKEFILE}
      +	\$(MAKE) clean
      +	cd ..
      +EOT
      +	}
      +	else {
      +	    push @m, <{MAKEFILE} && \$(MAKE) clean
      +EOT
      +	}
           }
       
           my(@otherfiles) = values %{$self->{XS}}; # .c files from *.xs files
           push(@otherfiles, $attribs{FILES}) if $attribs{FILES};
           push(@otherfiles, qw[./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all
      -			 perlmain.c mon.out core so_locations pm_to_blib
      +			 perlmain.c mon.out core core.*perl.*.?
      +			 *perl.core so_locations pm_to_blib
       			 *~ */*~ */*/*~ *$(OBJ_EXT) *$(LIB_EXT) perl.exe
       			 $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def
       			 $(BASEEXT).exp
      @@ -446,7 +483,7 @@ sub const_cccmd {
           return '' unless $self->needs_linking();
           return $self->{CONST_CCCMD} =
       	q{CCCMD = $(CC) -c $(INC) $(CCFLAGS) $(OPTIMIZE) \\
      -	$(PERLTYPE) $(LARGE) $(SPLIT) $(DEFINE_VERSION) \\
      +	$(PERLTYPE) $(LARGE) $(SPLIT) $(MPOLLUTE) $(DEFINE_VERSION) \\
       	$(XS_DEFINE_VERSION)};
       }
       
      @@ -519,7 +556,7 @@ sub constants {
       	      INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB
       	      PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB
       	      FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC
      -	      PERL_INC PERL FULLPERL
      +	      PERL_INC PERL FULLPERL FULL_AR
       
       	      / ) {
       	next unless defined $self->{$tmp};
      @@ -531,6 +568,7 @@ VERSION_MACRO = VERSION
       DEFINE_VERSION = -D\$(VERSION_MACRO)=\\\"\$(VERSION)\\\"
       XS_VERSION_MACRO = XS_VERSION
       XS_DEFINE_VERSION = -D\$(XS_VERSION_MACRO)=\\\"\$(XS_VERSION)\\\"
      +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
       };
       
           push @m, qq{
      @@ -560,12 +598,19 @@ XS_FILES= ".join(" \\\n\t", sort keys %{$self->{XS}})."
       C_FILES = ".join(" \\\n\t", @{$self->{C}})."
       O_FILES = ".join(" \\\n\t", @{$self->{O_FILES}})."
       H_FILES = ".join(" \\\n\t", @{$self->{H}})."
      +HTMLLIBPODS    = ".join(" \\\n\t", sort keys %{$self->{HTMLLIBPODS}})."
      +HTMLSCRIPTPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLSCRIPTPODS}})."
       MAN1PODS = ".join(" \\\n\t", sort keys %{$self->{MAN1PODS}})."
       MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})."
       ";
       
           for $tmp (qw/
      -	      INST_MAN1DIR INSTALLMAN1DIR MAN1EXT INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
      +	      INST_HTMLPRIVLIBDIR INSTALLHTMLPRIVLIBDIR
      +	      INST_HTMLSITELIBDIR INSTALLHTMLSITELIBDIR
      +	      INST_HTMLSCRIPTDIR  INSTALLHTMLSCRIPTDIR
      +	      INST_HTMLLIBDIR                    HTMLEXT
      +	      INST_MAN1DIR        INSTALLMAN1DIR MAN1EXT
      +	      INST_MAN3DIR        INSTALLMAN3DIR MAN3EXT
       	      /) {
       	next unless defined $self->{$tmp};
       	push @m, "$tmp = $self->{$tmp}\n";
      @@ -693,7 +738,7 @@ sub dir_target {
       	my($targ) = $self->catfile($dir,'.exists');
       	# catfile may have adapted syntax of $dir to target OS, so...
       	if ($Is_VMS) { # Just remove file name; dirspec is often in macro
      -	    ($targdir = $targ) =~ s:/?\.exists$::;
      +	    ($targdir = $targ) =~ s:/?\.exists\z::;
       	}
       	else { # while elsewhere we expect to see the dir separator in $targ
       	    $targdir = dirname($targ);
      @@ -1079,10 +1124,10 @@ Takes as argument a path and returns true, if it is an absolute path.
       sub file_name_is_absolute {
           my($self,$file) = @_;
           if ($Is_Dos){
      -        $file =~ m{^([a-z]:)?[\\/]}i ;
      +        $file =~ m{^([a-z]:)?[\\/]}is ;
           }
           else {
      -        $file =~ m:^/: ;
      +        $file =~ m:^/:s ;
           }
       }
       
      @@ -1265,7 +1310,7 @@ sub guess_name {
           my($self) = @_;
           use Cwd 'cwd';
           my $name = basename(cwd());
      -    $name =~ s|[\-_][\d\.\-]+$||;   # this is new with MM 5.00, we
      +    $name =~ s|[\-_][\d\.\-]+\z||;  # this is new with MM 5.00, we
                                           # strip minus or underline
                                           # followed by a float or some such
           print "Warning: Guessing NAME [$name] from current directory name.\n";
      @@ -1290,9 +1335,60 @@ sub has_link_code {
           return $self->{HAS_LINK_CODE} = 0;
       }
       
      +=item htmlifypods (o)
      +
      +Defines targets and routines to translate the pods into HTML manpages
      +and put them into the INST_HTMLLIBDIR and INST_HTMLSCRIPTDIR
      +directories.
      +
      +=cut
      +
      +sub htmlifypods {
      +    my($self, %attribs) = @_;
      +    return "\nhtmlifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
      +	%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}};
      +    my($dist);
      +    my($pod2html_exe);
      +    if (defined $self->{PERL_SRC}) {
      +	$pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
      +    } else {
      +	$pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
      +    }
      +    unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
      +	# No pod2html but some HTMLxxxPODS to be installed
      +	print <{MAKEFILE}, q[";' \\
      +-e 'print "Htmlifying $$m{$$_}\n";' \\
      +-e '$$dir = dirname($$m{$$_}); mkpath($$dir) unless -d $$dir;' \\
      +-e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2HTML_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
      +-e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
      +];
      +    push @m, "\nhtmlifypods : pure_all ";
      +    push @m, join " \\\n\t", keys %{$self->{HTMLLIBPODS}}, keys %{$self->{HTMLSCRIPTPODS}};
      +
      +    push(@m,"\n");
      +    if (%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}}) {
      +	push @m, "\t$self->{NOECHO}\$(POD2HTML) \\\n\t";
      +	push @m, join " \\\n\t", %{$self->{HTMLLIBPODS}}, %{$self->{HTMLSCRIPTPODS}};
      +    }
      +    join('', @m);
      +}
      +
       =item init_dirscan
       
      -Initializes DIR, XS, PM, C, O_FILES, H, PL_FILES, MAN*PODS, EXE_FILES.
      +Initializes DIR, XS, PM, C, O_FILES, H, PL_FILES, HTML*PODS, MAN*PODS, EXE_FILES.
       
       =cut
       
      @@ -1309,24 +1405,26 @@ sub init_dirscan {	# --- File and Directory Lists (.xs .pm .pod etc)
       	if (-d $name){
       	    next if -l $name; # We do not support symlinks at all
       	    $dir{$name} = $name if (-f $self->catfile($name,"Makefile.PL"));
      -	} elsif ($name =~ /\.xs$/){
      -	    my($c); ($c = $name) =~ s/\.xs$/.c/;
      +	} elsif ($name =~ /\.xs\z/){
      +	    my($c); ($c = $name) =~ s/\.xs\z/.c/;
       	    $xs{$name} = $c;
       	    $c{$c} = 1;
      -	} elsif ($name =~ /\.c(pp|xx|c)?$/i){  # .c .C .cpp .cxx .cc
      +	} elsif ($name =~ /\.c(pp|xx|c)?\z/i){  # .c .C .cpp .cxx .cc
       	    $c{$name} = 1
       		unless $name =~ m/perlmain\.c/; # See MAP_TARGET
      -	} elsif ($name =~ /\.h$/i){
      +	} elsif ($name =~ /\.h\z/i){
       	    $h{$name} = 1;
      -	} elsif ($name =~ /\.PL$/) {
      -	    ($pl_files{$name} = $name) =~ s/\.PL$// ;
      -	} elsif ($Is_VMS && $name =~ /\.pl$/) {  # case-insensitive filesystem
      +	} elsif ($name =~ /\.PL\z/) {
      +	    ($pl_files{$name} = $name) =~ s/\.PL\z// ;
      +	} elsif (($Is_VMS || $Is_Dos) && $name =~ /[._]pl$/i) {
      +	    # case-insensitive filesystem, one dot per name, so foo.h.PL
      +	    # under Unix appears as foo.h_pl under VMS or fooh.pl on Dos
       	    local($/); open(PL,$name); my $txt = ; close PL;
       	    if ($txt =~ /Extracting \S+ \(with variable substitutions/) {
      -		($pl_files{$name} = $name) =~ s/\.pl$// ;
      +		($pl_files{$name} = $name) =~ s/[._]pl\z//i ;
       	    }
       	    else { $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name); }
      -	} elsif ($name =~ /\.(p[ml]|pod)$/){
      +	} elsif ($name =~ /\.(p[ml]|pod)\z/){
       	    $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name);
       	}
           }
      @@ -1401,70 +1499,64 @@ sub init_dirscan {	# --- File and Directory Lists (.xs .pm .pod etc)
           $self->{PM}  = \%pm             unless $self->{PM};
           $self->{C}   = [sort keys %c]   unless $self->{C};
           my(@o_files) = @{$self->{C}};
      -    $self->{O_FILES} = [grep s/\.c(pp|xx|c)?$/$self->{OBJ_EXT}/i, @o_files] ;
      +    $self->{O_FILES} = [grep s/\.c(pp|xx|c)?\z/$self->{OBJ_EXT}/i, @o_files] ;
           $self->{H}   = [sort keys %h]   unless $self->{H};
           $self->{PL_FILES} = \%pl_files unless $self->{PL_FILES};
       
           # Set up names of manual pages to generate from pods
      -    if ($self->{MAN1PODS}) {
      -    } elsif ( $self->{INST_MAN1DIR} =~ /^(none|\s*)$/ ) {
      -    	$self->{MAN1PODS} = {};
      -    } else {
      -	my %manifypods = ();
      +    my %pods;
      +    foreach my $man (qw(MAN1 MAN3 HTMLLIB HTMLSCRIPT)) {
      +	unless ($self->{"${man}PODS"}) {
      +	    $self->{"${man}PODS"} = {};
      +	    $pods{$man} = 1 unless $self->{"INST_${man}DIR"} =~ /^(none|\s*)$/;
      +	}
      +    }
      +
      +    if ($pods{MAN1} || $pods{HTMLSCRIPT}) {
       	if ( exists $self->{EXE_FILES} ) {
       	    foreach $name (@{$self->{EXE_FILES}}) {
      -#		use FileHandle ();
      -#		my $fh = new FileHandle;
       		local *FH;
       		my($ispod)=0;
      -#		if ($fh->open("<$name")) {
       		if (open(FH,"<$name")) {
      -#		    while (<$fh>) {
       		    while () {
       			if (/^=head1\s+\w+/) {
       			    $ispod=1;
       			    last;
       			}
       		    }
      -#		    $fh->close;
       		    close FH;
       		} else {
       		    # If it doesn't exist yet, we assume, it has pods in it
       		    $ispod = 1;
       		}
      -		if( $ispod ) {
      -		    $manifypods{$name} =
      -			$self->catfile('$(INST_MAN1DIR)',
      -				       basename($name).'.$(MAN1EXT)');
      +		next unless $ispod;
      +		if ($pods{HTMLSCRIPT}) {
      +		    $self->{HTMLSCRIPTPODS}->{$name} =
      +		      $self->catfile("\$(INST_HTMLSCRIPTDIR)", basename($name).".\$(HTMLEXT)");
      +		}
      +		if ($pods{MAN1}) {
      +		    $self->{MAN1PODS}->{$name} =
      +		      $self->catfile("\$(INST_MAN1DIR)", basename($name).".\$(MAN1EXT)");
       		}
       	    }
       	}
      -	$self->{MAN1PODS} = \%manifypods;
           }
      -    if ($self->{MAN3PODS}) {
      -    } elsif ( $self->{INST_MAN3DIR} =~ /^(none|\s*)$/ ) {
      -    	$self->{MAN3PODS} = {};
      -    } else {
      +    if ($pods{MAN3} || $pods{HTMLLIB}) {
       	my %manifypods = (); # we collect the keys first, i.e. the files
       			     # we have to convert to pod
       	foreach $name (keys %{$self->{PM}}) {
      -	    if ($name =~ /\.pod$/ ) {
      +	    if ($name =~ /\.pod\z/ ) {
       		$manifypods{$name} = $self->{PM}{$name};
      -	    } elsif ($name =~ /\.p[ml]$/ ) {
      -#		use FileHandle ();
      -#		my $fh = new FileHandle;
      +	    } elsif ($name =~ /\.p[ml]\z/ ) {
       		local *FH;
       		my($ispod)=0;
      -#		$fh->open("<$name");
       		if (open(FH,"<$name")) {
      -		    #		while (<$fh>) {
       		    while () {
       			if (/^=head1\s+\w+/) {
       			    $ispod=1;
       			    last;
       			}
       		    }
      -		    #		$fh->close;
       		    close FH;
       		} else {
       		    $ispod = 1;
      @@ -1478,19 +1570,25 @@ sub init_dirscan {	# --- File and Directory Lists (.xs .pm .pod etc)
       	# Remove "Configure.pm" and similar, if it's not the only pod listed
       	# To force inclusion, just name it "Configure.pod", or override MAN3PODS
       	foreach $name (keys %manifypods) {
      -	    if ($name =~ /(config|setup).*\.pm/i) {
      +	    if ($name =~ /(config|setup).*\.pm/is) {
       		delete $manifypods{$name};
       		next;
       	    }
       	    my($manpagename) = $name;
      -	    unless ($manpagename =~ s!^\W*lib\W+!!) { # everything below lib is ok
      +	    $manpagename =~ s/\.p(od|m|l)\z//;
      +	    if ($pods{HTMLLIB}) {
      +		$self->{HTMLLIBPODS}->{$name} =
      +		  $self->catfile("\$(INST_HTMLLIBDIR)", "$manpagename.\$(HTMLEXT)");
      +	    }
      +	    unless ($manpagename =~ s!^\W*lib\W+!!s) { # everything below lib is ok
       		$manpagename = $self->catfile(split(/::/,$self->{PARENT_NAME}),$manpagename);
       	    }
      -	    $manpagename =~ s/\.p(od|m|l)$//;
      -	    $manpagename = $self->replace_manpage_separator($manpagename);
      -	    $manifypods{$name} = $self->catfile("\$(INST_MAN3DIR)","$manpagename.\$(MAN3EXT)");
      +	    if ($pods{MAN3}) {
      +		$manpagename = $self->replace_manpage_separator($manpagename);
      +		$self->{MAN3PODS}->{$name} =
      +		  $self->catfile("\$(INST_MAN3DIR)", "$manpagename.\$(MAN3EXT)");
      +	    }
       	}
      -	$self->{MAN3PODS} = \%manifypods;
           }
       }
       
      @@ -1531,7 +1629,7 @@ sub init_main {
               $modfname = &DynaLoader::mod2fname(\@modparts);
           }
       
      -    ($self->{PARENT_NAME}, $self->{BASEEXT}) = $self->{NAME} =~ m!(?:([\w:]+)::)?(\w+)$! ;
      +    ($self->{PARENT_NAME}, $self->{BASEEXT}) = $self->{NAME} =~ m!(?:([\w:]+)::)?(\w+)\z! ;
       
           if (defined &DynaLoader::mod2fname) {
       	# As of 5.001m, dl_os2 appends '_'
      @@ -1601,10 +1699,34 @@ from the perl source tree.
       	}
           } else {
       	# we should also consider $ENV{PERL5LIB} here
      +        my $old = $self->{PERL_LIB} || $self->{PERL_ARCHLIB} || $self->{PERL_INC};
       	$self->{PERL_LIB}     ||= $Config::Config{privlibexp};
       	$self->{PERL_ARCHLIB} ||= $Config::Config{archlibexp};
       	$self->{PERL_INC}     = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
       	my $perl_h;
      +
      +	if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
      +	    and not $old){
      +	    # Maybe somebody tries to build an extension with an
      +	    # uninstalled Perl outside of Perl build tree
      +	    my $found;
      +	    for my $dir (@INC) {
      +	      $found = $dir, last if -e $self->catdir($dir, "Config.pm");
      +	    }
      +	    if ($found) {
      +	      my $inc = dirname $found;
      +	      if (-e $self->catdir($inc, "perl.h")) {
      +		$self->{PERL_LIB}	   = $found;
      +		$self->{PERL_ARCHLIB}	   = $found;
      +		$self->{PERL_INC}	   = $inc;
      +		$self->{UNINSTALLED_PERL}  = 1;
      +		print STDOUT <catfile($self->{PERL_INC},"perl.h"))){
       	    die qq{
       Error: Unable to locate installed Perl libraries or Perl source code.
      @@ -1695,8 +1817,7 @@ usually solves this kind of problem.
       
           my($install_variable,$search_prefix,$replace_prefix);
       
      -    # The rule, taken from Configure, is that if prefix contains perl,
      -    # we shape the tree
      +    # If the prefix contains perl, Configure shapes the tree as follows:
           #    perlprefix/lib/                INSTALLPRIVLIB
           #    perlprefix/lib/pod/
           #    perlprefix/lib/site_perl/	INSTALLSITELIB
      @@ -1708,6 +1829,11 @@ usually solves this kind of problem.
           #    prefix/lib/perl5/site_perl/	INSTALLSITELIB
           #    prefix/bin/			INSTALLBIN
           #    prefix/lib/perl5/man/		INSTALLMAN1DIR
      +    #
      +    # The above results in various kinds of breakage on various
      +    # platforms, so we cope with it as follows: if prefix/lib/perl5
      +    # or prefix/lib/perl5/man exist, we'll replace those instead
      +    # of /prefix/{lib,man}
       
           $replace_prefix = qq[\$\(PREFIX\)];
           for $install_variable (qw/
      @@ -1716,36 +1842,45 @@ usually solves this kind of problem.
       			   /) {
       	$self->prefixify($install_variable,$configure_prefix,$replace_prefix);
           }
      -    $search_prefix = $configure_prefix =~ /perl/ ?
      -	$self->catdir($configure_prefix,"lib") :
      -	$self->catdir($configure_prefix,"lib","perl5");
      +    my $funkylibdir = $self->catdir($configure_prefix,"lib","perl5");
      +    $funkylibdir = '' unless -d $funkylibdir;
      +    $search_prefix = $funkylibdir || $self->catdir($configure_prefix,"lib");
           if ($self->{LIB}) {
       	$self->{INSTALLPRIVLIB} = $self->{INSTALLSITELIB} = $self->{LIB};
       	$self->{INSTALLARCHLIB} = $self->{INSTALLSITEARCH} = 
       	    $self->catdir($self->{LIB},$Config{'archname'});
      -    } else {
      -	$replace_prefix = $self->{PREFIX} =~ /perl/ ? 
      -	    $self->catdir(qq[\$\(PREFIX\)],"lib") :
      -		$self->catdir(qq[\$\(PREFIX\)],"lib","perl5");
      +    }
      +    else {
      +	if (-d $self->catdir($self->{PREFIX},"lib","perl5")) {
      +	    $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib", "perl5");
      +	}
      +	else {
      +	    $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib");
      +	}
       	for $install_variable (qw/
       			       INSTALLPRIVLIB
       			       INSTALLARCHLIB
       			       INSTALLSITELIB
       			       INSTALLSITEARCH
      -			       /) {
      +			       /)
      +	{
       	    $self->prefixify($install_variable,$search_prefix,$replace_prefix);
       	}
           }
      -    $search_prefix = $configure_prefix =~ /perl/ ?
      -	$self->catdir($configure_prefix,"man") :
      -	    $self->catdir($configure_prefix,"lib","perl5","man");
      -    $replace_prefix = $self->{PREFIX} =~ /perl/ ? 
      -	$self->catdir(qq[\$\(PREFIX\)],"man") :
      -	    $self->catdir(qq[\$\(PREFIX\)],"lib","perl5","man");
      +    my $funkymandir = $self->catdir($configure_prefix,"lib","perl5","man");
      +    $funkymandir = '' unless -d $funkymandir;
      +    $search_prefix = $funkymandir || $self->catdir($configure_prefix,"man");
      +    if (-d $self->catdir($self->{PREFIX},"lib","perl5", "man")) {
      +	$replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib", "perl5", "man");
      +    }
      +    else {
      +	$replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"man");
      +    }
           for $install_variable (qw/
       			   INSTALLMAN1DIR
       			   INSTALLMAN3DIR
      -			   /) {
      +			   /)
      +    {
       	$self->prefixify($install_variable,$search_prefix,$replace_prefix);
           }
       
      @@ -1773,6 +1908,30 @@ usually solves this kind of problem.
           }
           $self->{MAN3EXT} ||= $Config::Config{man3ext};
       
      +    $self->{INSTALLHTMLPRIVLIBDIR} = $Config::Config{installhtmlprivlibdir}
      +        unless defined $self->{INSTALLHTMLPRIVLIBDIR};
      +    $self->{INSTALLHTMLSITELIBDIR} = $Config::Config{installhtmlsitelibdir}
      +        unless defined $self->{INSTALLHTMLSITELIBDIR};
      +
      +    unless (defined $self->{INST_HTMLLIBDIR}){
      +	if ($self->{INSTALLHTMLSITELIBDIR} =~ /^(none|\s*)$/){
      +	    $self->{INST_HTMLLIBDIR} = $self->{INSTALLHTMLSITELIBDIR};
      +	} else {
      +	    $self->{INST_HTMLLIBDIR} = $self->catdir($self->curdir,'blib','html','lib');
      +	}
      +    }
      +
      +    $self->{INSTALLHTMLSCRIPTDIR} = $Config::Config{installhtmlscriptdir}
      +        unless defined $self->{INSTALLHTMLSCRIPTDIR};
      +    unless (defined $self->{INST_HTMLSCRIPTDIR}){
      +	if ($self->{INSTALLHTMLSCRIPTDIR} =~ /^(none|\s*)$/){
      +	    $self->{INST_HTMLSCRIPTDIR} = $self->{INSTALLHTMLSCRIPTDIR};
      +	} else {
      +	    $self->{INST_HTMLSCRIPTDIR} = $self->catdir($self->curdir,'blib','html','bin');
      +	}
      +    }
      +    $self->{HTMLEXT} ||= $Config::Config{htmlext} || 'html';
      +
       
           # Get some stuff out of %Config if we haven't yet done so
           print STDOUT "CONFIG must be an array ref\n"
      @@ -1846,7 +2005,8 @@ usually solves this kind of problem.
       	push @defpath, $component if defined $component;
           }
           $self->{PERL} ||=
      -        $self->find_perl(5.0, [ $^X, 'miniperl','perl','perl5',"perl$]" ],
      +        $self->find_perl(5.0, [ $self->canonpath($^X), 'miniperl',
      +				'perl','perl5',"perl$Config{version}" ],
       	    \@defpath, $Verbose );
           # don't check if perl is executable, maybe they have decided to
           # supply switches with perl
      @@ -1965,6 +2125,8 @@ pure_perl_install ::
       		$(INST_ARCHLIB) $(INSTALLARCHLIB) \
       		$(INST_BIN) $(INSTALLBIN) \
       		$(INST_SCRIPT) $(INSTALLSCRIPT) \
      +		$(INST_HTMLLIBDIR) $(INSTALLHTMLPRIVLIBDIR) \
      +		$(INST_HTMLSCRIPTDIR) $(INSTALLHTMLSCRIPTDIR) \
       		$(INST_MAN1DIR) $(INSTALLMAN1DIR) \
       		$(INST_MAN3DIR) $(INSTALLMAN3DIR)
       	}.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
      @@ -1979,12 +2141,15 @@ pure_site_install ::
       		$(INST_ARCHLIB) $(INSTALLSITEARCH) \
       		$(INST_BIN) $(INSTALLBIN) \
       		$(INST_SCRIPT) $(INSTALLSCRIPT) \
      +		$(INST_HTMLLIBDIR) $(INSTALLHTMLSITELIBDIR) \
      +		$(INST_HTMLSCRIPTDIR) $(INSTALLHTMLSCRIPTDIR) \
       		$(INST_MAN1DIR) $(INSTALLMAN1DIR) \
       		$(INST_MAN3DIR) $(INSTALLMAN3DIR)
       	}.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
       		}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
       
       doc_perl_install ::
      +	-}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
       	-}.$self->{NOECHO}.q{$(DOC_INSTALL) \
       		"Module" "$(NAME)" \
       		"installed into" "$(INSTALLPRIVLIB)" \
      @@ -1994,6 +2159,7 @@ doc_perl_install ::
       		>> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
       
       doc_site_install ::
      +	-}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
       	-}.$self->{NOECHO}.q{$(DOC_INSTALL) \
       		"Module" "$(NAME)" \
       		"installed into" "$(INSTALLSITELIB)" \
      @@ -2219,7 +2385,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
       		my $incl;
       		my $xx;
       
      -		($xx = $File::Find::name) =~ s,.*?/auto/,,;
      +		($xx = $File::Find::name) =~ s,.*?/auto/,,s;
       		$xx =~ s,/?$_,,;
       		$xx =~ s,/,::,g;
       
      @@ -2237,7 +2403,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
       		my $excl;
       		my $xx;
       
      -		($xx = $File::Find::name) =~ s,.*?/auto/,,;
      +		($xx = $File::Find::name) =~ s,.*?/auto/,,s;
       		$xx =~ s,/?$_,,;
       		$xx =~ s,/,::,g;
       
      @@ -2254,7 +2420,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
       
       	# Once the patch to minimod.PL is in the distribution, I can
       	# drop it
      -	return if $File::Find::name =~ m:auto/$self->{FULLEXT}/$self->{BASEEXT}$self->{LIB_EXT}$:;
      +	return if $File::Find::name =~ m:auto/$self->{FULLEXT}/$self->{BASEEXT}$self->{LIB_EXT}\z:;
       	use Cwd 'cwd';
       	$static{cwd() . "/" . $_}++;
           }, grep( -d $_, @{$searchdirs || []}) );
      @@ -2265,7 +2431,7 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
       
           $extra = [] unless $extra && ref $extra eq 'ARRAY';
           for (sort keys %static) {
      -	next unless /\Q$self->{LIB_EXT}\E$/;
      +	next unless /\Q$self->{LIB_EXT}\E\z/;
       	$_ = dirname($_) . "/extralibs.ld";
       	push @$extra, $_;
           }
      @@ -2350,7 +2516,7 @@ $tmp/perlmain\$(OBJ_EXT): $tmp/perlmain.c
       $tmp/perlmain.c: $makefilename}, q{
       	}.$self->{NOECHO}.q{echo Writing $@
       	}.$self->{NOECHO}.q{$(PERL) $(MAP_PERLINC) -MExtUtils::Miniperl \\
      -		-e "writemain(grep s#.*/auto/##, split(q| |, q|$(MAP_STATIC)|))" > $@t && $(MV) $@t $@
      +		-e "writemain(grep s#.*/auto/##s, split(q| |, q|$(MAP_STATIC)|))" > $@t && $(MV) $@t $@
       
       };
           push @m, "\t",$self->{NOECHO}.q{$(PERL) $(INSTALLSCRIPT)/fixpmain
      @@ -2360,6 +2526,7 @@ $tmp/perlmain.c: $makefilename}, q{
           push @m, q{
       doc_inst_perl:
       	}.$self->{NOECHO}.q{echo Appending installation info to $(INSTALLARCHLIB)/perllocal.pod
      +	-}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
       	-}.$self->{NOECHO}.q{$(DOC_INSTALL) \
       		"Perl binary" "$(MAP_TARGET)" \
       		MAP_STATIC "$(MAP_STATIC)" \
      @@ -2441,7 +2608,11 @@ sub manifypods {
           } else {
       	$pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
           }
      -    unless ($self->perl_script($pod2man_exe)) {
      +    unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
      +      # Maybe a build by uninstalled Perl?
      +      $pod2man_exe = $self->catfile($self->{PERL_INC}, "pod", "pod2man");
      +    }
      +    unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
       	# No pod2man but some MAN3PODS to be installed
       	print <{DISTNAME};
      -    $package =~ s/-/::/;
      +    $package =~ s/-/::/g;
           while () {
               $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
               next if !$inpod;
      @@ -2710,16 +2883,53 @@ $(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
       
           push @m, q{
       PERL_HDRS = \
      -$(PERL_INC)/EXTERN.h       $(PERL_INC)/gv.h           $(PERL_INC)/pp.h       \
      -$(PERL_INC)/INTERN.h       $(PERL_INC)/handy.h        $(PERL_INC)/proto.h    \
      -$(PERL_INC)/XSUB.h         $(PERL_INC)/hv.h           $(PERL_INC)/regcomp.h  \
      -$(PERL_INC)/av.h           $(PERL_INC)/keywords.h     $(PERL_INC)/regexp.h   \
      -$(PERL_INC)/config.h       $(PERL_INC)/mg.h           $(PERL_INC)/scope.h    \
      -$(PERL_INC)/cop.h          $(PERL_INC)/op.h           $(PERL_INC)/sv.h	     \
      -$(PERL_INC)/cv.h           $(PERL_INC)/opcode.h       $(PERL_INC)/unixish.h  \
      -$(PERL_INC)/dosish.h       $(PERL_INC)/patchlevel.h   $(PERL_INC)/util.h     \
      -$(PERL_INC)/embed.h        $(PERL_INC)/perl.h         $(PERL_INC)/iperlsys.h \
      -$(PERL_INC)/form.h         $(PERL_INC)/perly.h
      +	$(PERL_INC)/EXTERN.h		\
      +	$(PERL_INC)/INTERN.h		\
      +	$(PERL_INC)/XSUB.h		\
      +	$(PERL_INC)/av.h		\
      +	$(PERL_INC)/cc_runtime.h	\
      +	$(PERL_INC)/config.h		\
      +	$(PERL_INC)/cop.h		\
      +	$(PERL_INC)/cv.h		\
      +	$(PERL_INC)/dosish.h		\
      +	$(PERL_INC)/embed.h		\
      +	$(PERL_INC)/embedvar.h		\
      +	$(PERL_INC)/fakethr.h		\
      +	$(PERL_INC)/form.h		\
      +	$(PERL_INC)/gv.h		\
      +	$(PERL_INC)/handy.h		\
      +	$(PERL_INC)/hv.h		\
      +	$(PERL_INC)/intrpvar.h		\
      +	$(PERL_INC)/iperlsys.h		\
      +	$(PERL_INC)/keywords.h		\
      +	$(PERL_INC)/mg.h		\
      +	$(PERL_INC)/nostdio.h		\
      +	$(PERL_INC)/objXSUB.h		\
      +	$(PERL_INC)/op.h		\
      +	$(PERL_INC)/opcode.h		\
      +	$(PERL_INC)/opnames.h		\
      +	$(PERL_INC)/patchlevel.h	\
      +	$(PERL_INC)/perl.h		\
      +	$(PERL_INC)/perlapi.h		\
      +	$(PERL_INC)/perlio.h		\
      +	$(PERL_INC)/perlsdio.h		\
      +	$(PERL_INC)/perlsfio.h		\
      +	$(PERL_INC)/perlvars.h		\
      +	$(PERL_INC)/perly.h		\
      +	$(PERL_INC)/pp.h		\
      +	$(PERL_INC)/pp_proto.h		\
      +	$(PERL_INC)/proto.h		\
      +	$(PERL_INC)/regcomp.h		\
      +	$(PERL_INC)/regexp.h		\
      +	$(PERL_INC)/regnodes.h		\
      +	$(PERL_INC)/scope.h		\
      +	$(PERL_INC)/sv.h		\
      +	$(PERL_INC)/thrdvar.h		\
      +	$(PERL_INC)/thread.h		\
      +	$(PERL_INC)/unixish.h		\
      +	$(PERL_INC)/utf8.h		\
      +	$(PERL_INC)/util.h		\
      +	$(PERL_INC)/warnings.h
       
       $(OBJECT) : $(PERL_HDRS)
       } if $self->{OBJECT};
      @@ -2883,7 +3093,7 @@ sub prefixify {
           my($self,$var,$sprefix,$rprefix) = @_;
           $self->{uc $var} ||= $Config{lc $var};
           $self->{uc $var} = VMS::Filespec::unixpath($self->{uc $var}) if $Is_VMS;
      -    $self->{uc $var} =~ s/\Q$sprefix\E/$rprefix/;
      +    $self->{uc $var} =~ s/\Q$sprefix\E/$rprefix/s;
       }
       
       =item processPL (o)
      @@ -2927,7 +3137,9 @@ sub realclean {
       realclean purge ::  clean
       ');
           # realclean subdirectories first (already cleaned)
      -    my $sub = "\t-cd %s && \$(TEST_F) %s && \$(MAKE) %s realclean\n";
      +    my $sub = ($Is_Win32  &&  Win32::IsWin95()) ?
      +      "\tcd %s\n\t\$(TEST_F) %s\n\t\$(MAKE) %s realclean\n\tcd ..\n" :
      +      "\t-cd %s && \$(TEST_F) %s && \$(MAKE) %s realclean\n";
           foreach(@{$self->{DIR}}){
       	push(@m, sprintf($sub,$_,"$self->{MAKEFILE}.old","-f $self->{MAKEFILE}.old"));
       	push(@m, sprintf($sub,$_,"$self->{MAKEFILE}",''));
      @@ -3005,9 +3217,18 @@ END
           # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
           push(@m, "\t$self->{CP} \$(MYEXTLIB) \$\@\n") if $self->{MYEXTLIB};
       
      +    my $ar; 
      +    if (exists $self->{FULL_AR} && -x $self->{FULL_AR}) {
      +        # Prefer the absolute pathed ar if available so that PATH
      +        # doesn't confuse us.  Perl itself is built with the full_ar.  
      +        $ar = 'FULL_AR';
      +    } else {
      +        $ar = 'AR';
      +    }
           push @m,
      -q{	$(AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
      -	$(CHMOD) $(PERM_RWX) $@
      +        "\t\$($ar) ".'$(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@'."\n";
      +    push @m,
      +q{	$(CHMOD) $(PERM_RWX) $@
       	}.$self->{NOECHO}.q{echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
       };
           # Old mechanism - still available:
      @@ -3071,12 +3292,25 @@ Helper subroutine for subdirs
       sub subdir_x {
           my($self, $subdir) = @_;
           my(@m);
      -    qq{
      +    if ($Is_Win32 && Win32::IsWin95()) {
      +	# XXX: dmake-specific, like rest of Win95 port
      +	return <{NOECHO}cd $subdir && \$(MAKE) all \$(PASTHRU)
       
      -};
      +EOT
      +    }
       }
       
       =item subdirs (o)
      @@ -3321,13 +3555,13 @@ sub tool_xsubpp {
       	}
           }
       
      -    my $xsubpp = $self->{CAPI} ? "xsubpp -object_capi" : "xsubpp";
      +    my $xsubpp = "xsubpp";
       
           return qq{
       XSUBPPDIR = $xsdir
       XSUBPP = \$(XSUBPPDIR)/$xsubpp
       XSPROTOARG = $self->{XSPROTOARG}
      -XSUBPPDEPS = @tmdeps
      +XSUBPPDEPS = @tmdeps \$(XSUBPP)
       XSUBPPARGS = @tmargs
       };
       };
      @@ -3403,7 +3637,7 @@ sub top_targets {
       ';
       
           push @m, '
      -all :: pure_all manifypods
      +all :: pure_all htmlifypods manifypods
       	'.$self->{NOECHO}.'$(NOOP)
       ' 
       	  unless $self->{SKIPHASH}{'all'};
      @@ -3425,13 +3659,25 @@ config :: $(INST_AUTODIR)/.exists
       	'.$self->{NOECHO}.'$(NOOP)
       ';
       
      -    push @m, qq{
      -config :: Version_check
      +    push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
      +
      +    if (%{$self->{HTMLLIBPODS}}) {
      +	push @m, qq[
      +config :: \$(INST_HTMLLIBDIR)/.exists
       	$self->{NOECHO}\$(NOOP)
       
      -} unless $self->{PARENT} or ($self->{PERL_SRC} && $self->{INSTALLDIRS} eq "perl") or $self->{NO_VC};
      +];
      +	push @m, $self->dir_target(qw[$(INST_HTMLLIBDIR)]);
      +    }
       
      -    push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
      +    if (%{$self->{HTMLSCRIPTPODS}}) {
      +	push @m, qq[
      +config :: \$(INST_HTMLSCRIPTDIR)/.exists
      +	$self->{NOECHO}\$(NOOP)
      +
      +];
      +	push @m, $self->dir_target(qw[$(INST_HTMLSCRIPTDIR)]);
      +    }
       
           if (%{$self->{MAN1PODS}}) {
       	push @m, qq[
      @@ -3495,7 +3741,7 @@ sub xs_c {
           return '' unless $self->needs_linking();
           '
       .xs.c:
      -	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
      +	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
       ';
       }
       
      @@ -3510,7 +3756,7 @@ sub xs_cpp {
           return '' unless $self->needs_linking();
           '
       .xs.cpp:
      -	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.cpp
      +	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.cpp
       ';
       }
       
      @@ -3526,7 +3772,7 @@ sub xs_o {	# many makes are too dumb to use xs_c then c_o
           return '' unless $self->needs_linking();
           '
       .xs$(OBJ_EXT):
      -	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs >xstmp.c && $(MV) xstmp.c $*.c
      +	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
       	$(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
       ';
       }
      diff --git a/contrib/perl5/lib/ExtUtils/MM_VMS.pm b/contrib/perl5/lib/ExtUtils/MM_VMS.pm
      index 8f8ac1787c40..57a8146dae75 100644
      --- a/contrib/perl5/lib/ExtUtils/MM_VMS.pm
      +++ b/contrib/perl5/lib/ExtUtils/MM_VMS.pm
      @@ -12,10 +12,11 @@ use Config;
       require Exporter;
       use VMS::Filespec;
       use File::Basename;
      +use File::Spec;
      +our($Revision, @ISA);
      +$Revision = '5.56 (27-Apr-1999)';
       
      -use vars qw($Revision);
      -$Revision = '5.52 (12-Sep-1998)';
      -
      +@ISA = qw( File::Spec );
       unshift @MM::ISA, 'ExtUtils::MM_VMS';
       
       Exporter::import('ExtUtils::MakeMaker', '$Verbose', '&neatvalue');
      @@ -38,156 +39,6 @@ the semantics.
       
       =over
       
      -=item eliminate_macros
      -
      -Expands MM[KS]/Make macros in a text string, using the contents of
      -identically named elements of C<%$self>, and returns the result
      -as a file specification in Unix syntax.
      -
      -=cut
      -
      -sub eliminate_macros {
      -    my($self,$path) = @_;
      -    unless ($path) {
      -	print "eliminate_macros('') = ||\n" if $Verbose >= 3;
      -	return '';
      -    }
      -    my($npath) = unixify($path);
      -    my($complex) = 0;
      -    my($head,$macro,$tail);
      -
      -    # perform m##g in scalar context so it acts as an iterator
      -    while ($npath =~ m#(.*?)\$\((\S+?)\)(.*)#g) { 
      -        if ($self->{$2}) {
      -            ($head,$macro,$tail) = ($1,$2,$3);
      -            if (ref $self->{$macro}) {
      -                if (ref $self->{$macro} eq 'ARRAY') {
      -                    print "Note: expanded array macro \$($macro) in $path\n" if $Verbose;
      -                    $macro = join ' ', @{$self->{$macro}};
      -                }
      -                else {
      -                    print "Note: can't expand macro \$($macro) containing ",ref($self->{$macro}),
      -                          "\n\t(using MMK-specific deferred substitutuon; MMS will break)\n";
      -                    $macro = "\cB$macro\cB";
      -                    $complex = 1;
      -                }
      -            }
      -            else { ($macro = unixify($self->{$macro})) =~ s#/$##; }
      -            $npath = "$head$macro$tail";
      -        }
      -    }
      -    if ($complex) { $npath =~ s#\cB(.*?)\cB#\${$1}#g; }
      -    print "eliminate_macros($path) = |$npath|\n" if $Verbose >= 3;
      -    $npath;
      -}
      -
      -=item fixpath
      -
      -Catchall routine to clean up problem MM[SK]/Make macros.  Expands macros
      -in any directory specification, in order to avoid juxtaposing two
      -VMS-syntax directories when MM[SK] is run.  Also expands expressions which
      -are all macro, so that we can tell how long the expansion is, and avoid
      -overrunning DCL's command buffer when MM[KS] is running.
      -
      -If optional second argument has a TRUE value, then the return string is
      -a VMS-syntax directory specification, if it is FALSE, the return string
      -is a VMS-syntax file specification, and if it is not specified, fixpath()
      -checks to see whether it matches the name of a directory in the current
      -default directory, and returns a directory or file specification accordingly.
      -
      -=cut
      -
      -sub fixpath {
      -    my($self,$path,$force_path) = @_;
      -    unless ($path) {
      -	print "eliminate_macros('') = ||\n" if $Verbose >= 3;
      -	return '';
      -    }
      -    my($fixedpath,$prefix,$name);
      -
      -    if ($path =~ m#^\$\([^\)]+\)$# || $path =~ m#[/:>\]]#) { 
      -        if ($force_path or $path =~ /(?:DIR\)|\])$/) {
      -            $fixedpath = vmspath($self->eliminate_macros($path));
      -        }
      -        else {
      -            $fixedpath = vmsify($self->eliminate_macros($path));
      -        }
      -    }
      -    elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#)) && $self->{$prefix}) {
      -        my($vmspre) = $self->eliminate_macros("\$($prefix)");
      -        # is it a dir or just a name?
      -        $vmspre = ($vmspre =~ m|/| or $prefix =~ /DIR$/) ? vmspath($vmspre) : '';
      -        $fixedpath = ($vmspre ? $vmspre : $self->{$prefix}) . $name;
      -        $fixedpath = vmspath($fixedpath) if $force_path;
      -    }
      -    else {
      -        $fixedpath = $path;
      -        $fixedpath = vmspath($fixedpath) if $force_path;
      -    }
      -    # No hints, so we try to guess
      -    if (!defined($force_path) and $fixedpath !~ /[:>(.\]]/) {
      -        $fixedpath = vmspath($fixedpath) if -d $fixedpath;
      -    }
      -    # Trim off root dirname if it's had other dirs inserted in front of it.
      -    $fixedpath =~ s/\.000000([\]>])/$1/;
      -    print "fixpath($path) = |$fixedpath|\n" if $Verbose >= 3;
      -    $fixedpath;
      -}
      -
      -=item catdir
      -
      -Concatenates a list of file specifications, and returns the result as a
      -VMS-syntax directory specification.
      -
      -=cut
      -
      -sub catdir {
      -    my($self,@dirs) = @_;
      -    my($dir) = pop @dirs;
      -    @dirs = grep($_,@dirs);
      -    my($rslt);
      -    if (@dirs) {
      -      my($path) = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
      -      my($spath,$sdir) = ($path,$dir);
      -      $spath =~ s/.dir$//; $sdir =~ s/.dir$//; 
      -      $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+$/;
      -      $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
      -    }
      -    else { 
      -      if ($dir =~ /^\$\([^\)]+\)$/) { $rslt = $dir; }
      -      else                          { $rslt = vmspath($dir); }
      -    }
      -    print "catdir(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
      -    $rslt;
      -}
      -
      -=item catfile
      -
      -Concatenates a list of file specifications, and returns the result as a
      -VMS-syntax directory specification.
      -
      -=cut
      -
      -sub catfile {
      -    my($self,@files) = @_;
      -    my($file) = pop @files;
      -    @files = grep($_,@files);
      -    my($rslt);
      -    if (@files) {
      -      my($path) = (@files == 1 ? $files[0] : $self->catdir(@files));
      -      my($spath) = $path;
      -      $spath =~ s/.dir$//;
      -      if ( $spath =~ /^[^\)\]\/:>]+\)$/ && basename($file) eq $file) { $rslt = "$spath$file"; }
      -      else {
      -          $rslt = $self->eliminate_macros($spath);
      -          $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
      -      }
      -    }
      -    else { $rslt = vmsify($file); }
      -    print "catfile(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
      -    $rslt;
      -}
      -
       =item wraplist
       
       Converts a list into a string wrapped at approximately 80 columns.
      @@ -212,16 +63,6 @@ sub wraplist {
           $line;
       }
       
      -=item curdir (override)
      -
      -Returns a string representing of the current directory.
      -
      -=cut
      -
      -sub curdir {
      -    return '[]';
      -}
      -
       =item rootdir (override)
       
       Returns a string representing of the root directory.
      @@ -232,16 +73,6 @@ sub rootdir {
           return '';
       }
       
      -=item updir (override)
      -
      -Returns a string representing of the parent directory.
      -
      -=cut
      -
      -sub updir {
      -    return '[-]';
      -}
      -
       package ExtUtils::MM_VMS;
       
       sub ExtUtils::MM_VMS::ext;
      @@ -447,14 +278,14 @@ sub find_perl {
       	print "Checking $name\n" if ($trace >= 2);
       	# If it looks like a potential command, try it without the MCR
       	if ($name =~ /^[\w\-\$]+$/ &&
      -	    `$name -e "require $ver; print ""VER_OK\n"""` =~ /VER_OK/) {
      +            `$name -e "require $ver; print ""VER_OK\\n"""` =~ /VER_OK/) {
       	    print "Using PERL=$name\n" if $trace;
       	    return $name;
       	}
       	next unless $vmsfile = $self->maybe_command($name);
       	$vmsfile =~ s/;[\d\-]*$//;  # Clip off version number; we can use a newer version as well
       	print "Executing $vmsfile\n" if ($trace >= 2);
      -	if (`MCR $vmsfile -e "require $ver; print ""VER_OK\n"""` =~ /VER_OK/) {
      +        if (`MCR $vmsfile -e "require $ver; print ""VER_OK\\n"""` =~ /VER_OK/) {
       	    print "Using PERL=MCR $vmsfile\n" if $trace;
       	    return "MCR $vmsfile";
       	}
      @@ -625,11 +456,17 @@ sub constants {
           my($self) = @_;
           my(@m,$def,$macro);
       
      +    # Be kind about case for pollution
      +    for (@ARGV) { $_ = uc($_) if /POLLUTE/i; }
      +
           if ($self->{DEFINE} ne '') {
      -	my(@defs) = split(/\s+/,$self->{DEFINE});
      -	foreach $def (@defs) {
      +	my(@terms) = split(/\s+/,$self->{DEFINE});
      +	my(@defs,@udefs);
      +	foreach $def (@terms) {
       	    next unless $def;
      -	    if ($def =~ s/^-D//) {       # If it was a Unix-style definition
      +	    my $targ = \@defs;
      +	    if ($def =~ s/^-([DU])//) {       # If it was a Unix-style definition
      +		if ($1 eq 'U') { $targ = \@udefs; }
       		$def =~ s/='(.*)'$/=$1/;  # then remove shell-protection ''
       		$def =~ s/^'(.*)'$/$1/;   # from entire term or argument
       	    }
      @@ -637,8 +474,11 @@ sub constants {
       		$def =~ s/"/""/g;  # Protect existing " from DCL
       		$def = qq["$def"]; # and quote to prevent parsing of =
       	    }
      +	    push @$targ, $def;
       	}
      -	$self->{DEFINE} = join ',',@defs;
      +	$self->{DEFINE} = '';
      +	if (@defs)  { $self->{DEFINE}  = '/Define=(' . join(',',@defs)  . ')'; }
      +	if (@udefs) { $self->{DEFINE} .= '/Undef=('  . join(',',@udefs) . ')'; }
           }
       
           if ($self->{OBJECT} =~ /\s/) {
      @@ -837,32 +677,31 @@ sub cflags {
       	warn "MM_VMS: Ignoring unrecognized CCFLAGS elements \"$quals\"\n";
       	$quals = '';
           }
      +    $definestr .= q["PERL_POLLUTE",] if $self->{POLLUTE};
           if (length $definestr) { chop($definestr); $quals .= "/Define=($definestr)"; }
           if (length $undefstr)  { chop($undefstr);  $quals .= "/Undef=($undefstr)";   }
           # Deal with $self->{DEFINE} here since some C compilers pay attention
           # to only one /Define clause on command line, so we have to
           # conflate the ones from $Config{'ccflags'} and $self->{DEFINE}
      -    if ($quals =~ m:(.*)/define=\(?([^\(\/\)\s]+)\)?(.*)?:i) {
      -	$quals = "$1/Define=($2," . ($self->{DEFINE} ? "$self->{DEFINE}," : '') .
      -	         "\$(DEFINE_VERSION),\$(XS_DEFINE_VERSION))$3";
      -    }
      -    else {
      -	$quals .= '/Define=(' . ($self->{DEFINE} ? "$self->{DEFINE}," : '') .
      -	          '$(DEFINE_VERSION),$(XS_DEFINE_VERSION))';
      +    # ($self->{DEFINE} has already been VMSified in constants() above)
      +    if ($self->{DEFINE}) { $quals .= $self->{DEFINE}; }
      +    for $type (qw(Def Undef)) {
      +	my(@terms);
      +	while ($quals =~ m:/${type}i?n?e?=([^/]+):ig) {
      +		my $term = $1;
      +		$term =~ s:^\((.+)\)$:$1:;
      +		push @terms, $term;
      +	    }
      +	if ($type eq 'Def') {
      +	    push @terms, qw[ $(DEFINE_VERSION) $(XS_DEFINE_VERSION) ];
      +	}
      +	if (@terms) {
      +	    $quals =~ s:/${type}i?n?e?=[^/]+::ig;
      +	    $quals .= "/${type}ine=(" . join(',',@terms) . ')';
      +	}
           }
       
           $libperl or $libperl = $self->{LIBPERL_A} || "libperl.olb";
      -# This whole section is commented out, since I don't think it's necessary (or applicable)
      -#    if ($libperl =~ s/^$Config{'dbgprefix'}//) { $libperl =~ s/perl([^Dd]*)\./perld$1./; }
      -#    if ($libperl =~ /libperl(\w+)\./i) {
      -#	my($type) = uc $1;
      -#	my(%map) = ( 'D'  => 'DEBUGGING', 'E' => 'EMBED', 'M' => 'MULTIPLICITY',
      -#	             'DE' => 'DEBUGGING,EMBED', 'DM' => 'DEBUGGING,MULTIPLICITY',
      -#	             'EM' => 'EMBED,MULTIPLICITY', 'DEM' => 'DEBUGGING,EMBED,MULTIPLICITY' );
      -#	my($add) = join(',', grep { $quals !~ /\b$_\b/ } split(/,/,$map{$type}));
      -#	$quals =~ s:/define=\(([^\)]+)\):/Define=($1,$add):i if $add;
      -#	$self->{PERLTYPE} ||= $type;
      -#    }
       
           # Likewise with $self->{INC} and /Include
           if ($self->{'INC'}) {
      @@ -873,11 +712,12 @@ sub cflags {
       	}
           }
           $quals .= "$incstr)";
      +#    $quals =~ s/,,/,/g; $quals =~ s/\(,/(/g;
           $self->{CCFLAGS} = $quals;
       
           $self->{OPTIMIZE} ||= $flagoptstr || $Config{'optimize'};
           if ($self->{OPTIMIZE} !~ m!/!) {
      -	if    ($self->{OPTIMIZE} =~ m!\b-g\b!) { $self->{OPTIMIZE} = '/Debug/NoOptimize' }
      +	if    ($self->{OPTIMIZE} =~ m!-g!) { $self->{OPTIMIZE} = '/Debug/NoOptimize' }
       	elsif ($self->{OPTIMIZE} =~ /-O(\d*)/) {
       	    $self->{OPTIMIZE} = '/Optimize' . (defined($1) ? "=$1" : '');
       	}
      @@ -1266,13 +1106,6 @@ config :: $(INST_AUTODIR).exists
       	$(NOECHO) $(NOOP)
       ';
       
      -    push @m, q{
      -config :: Version_check
      -	$(NOECHO) $(NOOP)
      -
      -} unless $self->{PARENT} or ($self->{PERL_SRC} && $self->{INSTALLDIRS} eq "perl") or $self->{NO_VC};
      -
      -
           push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
           if (%{$self->{MAN1PODS}}) {
       	push @m, q[
      @@ -1337,7 +1170,7 @@ static :: $(INST_ARCHAUTODIR)$(BASEEXT).opt
       	$(NOECHO) $(NOOP)
       ') unless $self->{SKIPHASH}{'static'};
       
      -    push(@m,'
      +    push @m,'
       $(INST_ARCHAUTODIR)$(BASEEXT).opt : $(BASEEXT).opt
       	$(CP) $(MMS$SOURCE) $(MMS$TARGET)
       
      @@ -1345,9 +1178,32 @@ $(BASEEXT).opt : Makefile.PL
       	$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Mksymlists;" -
       	',qq[-e "Mksymlists('NAME' => '$self->{NAME}', 'DL_FUNCS' => ],
       	neatvalue($funcs),q[, 'DL_VARS' => ],neatvalue($vars),
      -	q[, 'FUNCLIST' => ],neatvalue($funclist),')"
      -	$(PERL) -e "print ""$(INST_STATIC)/Include=$(BASEEXT)\n$(INST_STATIC)/Library\n"";" >>$(MMS$TARGET)
      -');
      +	q[, 'FUNCLIST' => ],neatvalue($funclist),qq[)"\n];
      +
      +    push @m, '	$(PERL) -e "print ""$(INST_STATIC)/Include=';
      +    if ($self->{OBJECT} =~ /\bBASEEXT\b/ or
      +        $self->{OBJECT} =~ /\b$self->{BASEEXT}\b/i) { 
      +        push @m, ($Config{d_vms_case_sensitive_symbols}
      +	           ? uc($self->{BASEEXT}) :'$(BASEEXT)');
      +    }
      +    else {  # We don't have a "main" object file, so pull 'em all in
      +       # Upcase module names if linker is being case-sensitive
      +       my($upcase) = $Config{d_vms_case_sensitive_symbols};
      +	my(@omods) = map { s/\.[^.]*$//;         # Trim off file type
      +	                   s[\$\(\w+_EXT\)][];   # even as a macro
      +	                   s/.*[:>\/\]]//;       # Trim off dir spec
      +			   $upcase ? uc($_) : $_;
      +	                 } split ' ', $self->eliminate_macros($self->{OBJECT});
      +	my($tmp,@lines,$elt) = '';
      +	my $tmp = shift @omods;
      +	foreach $elt (@omods) {
      +	    $tmp .= ",$elt";
      +		if (length($tmp) > 80) { push @lines, $tmp;  $tmp = ''; }
      +	}
      +	push @lines, $tmp;
      +	push @m, '(', join( qq[, -\\n\\t"";" >>\$(MMS\$TARGET)\n\t\$(PERL) -e "print ""], @lines),')';
      +    }
      +	push @m, '\n$(INST_STATIC)/Library\n"";" >>$(MMS$TARGET)',"\n";
       
           if (length $self->{LDLOADLIBS}) {
       	my($lib); my($line) = '';
      @@ -1465,8 +1321,8 @@ $(INST_STATIC) : $(OBJECT) $(MYEXTLIB)
             push(@m,"\t",'Library/Object/Replace $(MMS$TARGET) $(MMS$SOURCE_LIST)',"\n");
           }
           
      -    foreach $lib (split $self->{EXTRALIBS}) {
      -      $lib = '""' if $lib eq '"';
      +    push @m, "\t\$(NOECHO) \$(PERL) -e 1 >\$(INST_ARCHAUTODIR)extralibs.ld\n";
      +    foreach $lib (split ' ', $self->{EXTRALIBS}) {
             push(@m,"\t",'$(NOECHO) $(PERL) -e "print qq{',$lib,'\n}" >>$(INST_ARCHAUTODIR)extralibs.ld',"\n");
           }
           push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
      @@ -2186,12 +2042,13 @@ $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
       	$(NOECHO) $(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
       		Makefile.PL DIR=}, $dir, q{ \
       		MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
      -		MAKEAPERL=1 NORECURS=1
      +		MAKEAPERL=1 NORECURS=1 };
      +
      +	push @m, map(q[ \\\n\t\t"$_"], @ARGV),q{
       
       $(MAP_TARGET) :: $(MAKE_APERL_FILE)
       	$(MMS)$(MMSQUALIFIERS)$(USEMAKEFILE)$(MAKE_APERL_FILE) static $(MMS$TARGET)
       };
      -	push @m, map( " \\\n\t\t$_", @ARGV );
       	push @m, "\n";
       
       	return join '', @m;
      @@ -2312,9 +2169,9 @@ $(MAP_TARGET) :: $(MAKE_APERL_FILE)
           $tmp = $self->fixpath($tmp,1);
           if (@optlibs) { $extralist = join(' ',@optlibs); }
           else          { $extralist = ''; }
      -    # Let ExtUtils::Liblist find the necessary for us (but skip PerlShr;
      +    # Let ExtUtils::Liblist find the necessary libs for us (but skip PerlShr)
           # that's what we're building here).
      -    push @optlibs, grep { !/PerlShr/i } split +($self->ext())[2];
      +    push @optlibs, grep { !/PerlShr/i } split ' ', +($self->ext())[2];
           if ($libperl) {
       	unless (-f $libperl || -f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',$libperl))) {
       	    print STDOUT "Warning: $libperl not found\n";
      diff --git a/contrib/perl5/lib/ExtUtils/MM_Win32.pm b/contrib/perl5/lib/ExtUtils/MM_Win32.pm
      index 4070b2e10b01..e08c6791eee4 100644
      --- a/contrib/perl5/lib/ExtUtils/MM_Win32.pm
      +++ b/contrib/perl5/lib/ExtUtils/MM_Win32.pm
      @@ -36,6 +36,49 @@ $NMAKE = 1 if $Config{'make'} =~ /^nmake/i;
       $PERLMAKE = 1 if $Config{'make'} =~ /^pmake/i;
       $OBJ   = 1 if $Config{'ccflags'} =~ /PERL_OBJECT/i;
       
      +# a few workarounds for command.com (very basic)
      +{
      +    package ExtUtils::MM_Win95;
      +
      +    # the $^O test may be overkill, but we want to be sure Win32::IsWin95()
      +    # exists before we try it
      +
      +    unshift @MM::ISA, 'ExtUtils::MM_Win95'
      +	if ($^O =~ /Win32/ && Win32::IsWin95());
      +
      +    sub xs_c {
      +	my($self) = shift;
      +	return '' unless $self->needs_linking();
      +	'
      +.xs.c:
      +	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
      +	    $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
      +	'
      +    }
      +
      +    sub xs_cpp {
      +	my($self) = shift;
      +	return '' unless $self->needs_linking();
      +	'
      +.xs.cpp:
      +	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
      +	    $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.cpp
      +	';
      +    }
      +
      +    # many makes are too dumb to use xs_c then c_o
      +    sub xs_o {
      +	my($self) = shift;
      +	return '' unless $self->needs_linking();
      +	'
      +.xs$(OBJ_EXT):
      +	$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) $(XSUBPP) \\
      +	    $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.c
      +	$(CCCMD) $(CCCDLFLAGS) -I$(PERL_INC) $(DEFINE) $*.c
      +	';
      +    }
      +}	# end of command.com workarounds
      +
       sub dlsyms {
           my($self,%attribs) = @_;
       
      @@ -250,12 +293,19 @@ XS_FILES= ".join(" \\\n\t", sort keys %{$self->{XS}})."
       C_FILES = ".join(" \\\n\t", @{$self->{C}})."
       O_FILES = ".join(" \\\n\t", @{$self->{O_FILES}})."
       H_FILES = ".join(" \\\n\t", @{$self->{H}})."
      +HTMLLIBPODS    = ".join(" \\\n\t", sort keys %{$self->{HTMLLIBPODS}})."
      +HTMLSCRIPTPODS = ".join(" \\\n\t", sort keys %{$self->{HTMLSCRIPTPODS}})."
       MAN1PODS = ".join(" \\\n\t", sort keys %{$self->{MAN1PODS}})."
       MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})."
       ";
       
           for $tmp (qw/
      -	      INST_MAN1DIR INSTALLMAN1DIR MAN1EXT INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
      +	      INST_HTMLPRIVLIBDIR INSTALLHTMLPRIVLIBDIR
      +	      INST_HTMLSITELIBDIR INSTALLHTMLSITELIBDIR
      +	      INST_HTMLSCRIPTDIR  INSTALLHTMLSCRIPTDIR
      +	      INST_HTMLLIBDIR                    HTMLEXT
      +	      INST_MAN1DIR        INSTALLMAN1DIR MAN1EXT
      +	      INST_MAN3DIR        INSTALLMAN3DIR MAN3EXT
       	      /) {
       	next unless defined $self->{$tmp};
       	push @m, "$tmp = $self->{$tmp}\n";
      @@ -338,7 +388,6 @@ PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
       
       
       sub path {
      -    local $^W = 1;
           my($self) = @_;
           my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
           my @path = split(';',$path);
      @@ -434,6 +483,18 @@ sub dynamic_lib {
           my($inst_dynamic_dep) = $attribs{INST_DYNAMIC_DEP} || "";
           my($ldfrom) = '$(LDFROM)';
           my(@m);
      +
      +# one thing for GCC/Mingw32:
      +# we try to overcome non-relocateable-DLL problems by generating
      +#    a (hopefully unique) image-base from the dll's name
      +# -- BKS, 10-19-1999
      +    if ($GCC) { 
      +	my $dllname = $self->{BASEEXT} . "." . $self->{DLEXT};
      +	$dllname =~ /(....)(.{0,4})/;
      +	my $baseaddr = unpack("n", $1 ^ $2);
      +	$otherldflags .= sprintf("-Wl,--image-base,0x%x0000 ", $baseaddr);
      +    }
      +
           push(@m,'
       # This section creates the dynamically loadable $(INST_DYNAMIC)
       # from $(OBJECT) and possibly $(MYEXTLIB).
      @@ -472,11 +533,6 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)\.exists
       sub perl_archive
       {
           my ($self) = @_;
      -    if($OBJ) {
      -        if ($self->{CAPI}) {
      -            return '$(PERL_INC)\perlCAPI$(LIB_EXT)';
      -        }
      -    }
           return '$(PERL_INC)\\'.$Config{'libperl'};
       }
       
      @@ -516,7 +572,9 @@ any ordinary, readable file.
       
       sub perl_script {
           my($self,$file) = @_;
      +    return $file if -r $file && -f _;
           return "$file.pl" if -r "$file.pl" && -f _;
      +    return "$file.bat" if -r "$file.bat" && -f _;
           return;
       }
       
      @@ -668,7 +726,7 @@ sub top_targets {
       ';
       
           push @m, '
      -all :: pure_all manifypods
      +all :: pure_all htmlifypods manifypods
       	'.$self->{NOECHO}.'$(NOOP)
       ' 
       	  unless $self->{SKIPHASH}{'all'};
      @@ -690,13 +748,25 @@ config :: $(INST_AUTODIR)\.exists
       	'.$self->{NOECHO}.'$(NOOP)
       ';
       
      -    push @m, qq{
      -config :: Version_check
      +    push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
      +
      +    if (%{$self->{HTMLLIBPODS}}) {
      +	push @m, qq[
      +config :: \$(INST_HTMLLIBDIR)/.exists
       	$self->{NOECHO}\$(NOOP)
       
      -} unless $self->{PARENT} or ($self->{PERL_SRC} && $self->{INSTALLDIRS} eq "perl") or $self->{NO_VC};
      +];
      +	push @m, $self->dir_target(qw[$(INST_HTMLLIBDIR)]);
      +    }
       
      -    push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
      +    if (%{$self->{HTMLSCRIPTPODS}}) {
      +	push @m, qq[
      +config :: \$(INST_HTMLSCRIPTDIR)/.exists
      +	$self->{NOECHO}\$(NOOP)
      +
      +];
      +	push @m, $self->dir_target(qw[$(INST_HTMLSCRIPTDIR)]);
      +    }
       
           if (%{$self->{MAN1PODS}}) {
       	push @m, qq[
      @@ -734,9 +804,62 @@ Version_check:
           join('',@m);
       }
       
      +=item htmlifypods (o)
      +
      +Defines targets and routines to translate the pods into HTML manpages
      +and put them into the INST_HTMLLIBDIR and INST_HTMLSCRIPTDIR
      +directories.
      +
      +Same as MM_Unix version (changes command-line quoting).
      +
      +=cut
      +
      +sub htmlifypods {
      +    my($self, %attribs) = @_;
      +    return "\nhtmlifypods : pure_all\n\t$self->{NOECHO}\$(NOOP)\n" unless
      +	%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}};
      +    my($dist);
      +    my($pod2html_exe);
      +    if (defined $self->{PERL_SRC}) {
      +	$pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
      +    } else {
      +	$pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
      +    }
      +    unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
      +	# No pod2html but some HTMLxxxPODS to be installed
      +	print <{MAKEFILE}, q[';" \\
      +-e "print qq(Htmlifying $$m{$$_}\n);" \\
      +-e "$$dir = dirname($$m{$$_}); mkpath($$dir) unless -d $$dir;" \\
      +-e "system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2HTML_EXE) ].qq[$$_>$$m{$$_}])==0 or warn qq(Couldn\\047t install $$m{$$_}\n);" \\
      +-e "chmod(oct($(PERM_RW))), $$m{$$_} or warn qq(chmod $(PERM_RW) $$m{$$_}: $$!\n);}"
      +];
      +    push @m, "\nhtmlifypods : pure_all ";
      +    push @m, join " \\\n\t", keys %{$self->{HTMLLIBPODS}}, keys %{$self->{HTMLSCRIPTPODS}};
      +
      +    push(@m,"\n");
      +    if (%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}}) {
      +	push @m, "\t$self->{NOECHO}\$(POD2HTML) \\\n\t";
      +	push @m, join " \\\n\t", %{$self->{HTMLLIBPODS}}, %{$self->{HTMLSCRIPTPODS}};
      +    }
      +    join('', @m);
      +}
      +
       =item manifypods (o)
       
      -We don't want manpage process.  XXX add pod2html support later.
      +We don't want manpage process.
       
       =cut
       
      diff --git a/contrib/perl5/lib/ExtUtils/MakeMaker.pm b/contrib/perl5/lib/ExtUtils/MakeMaker.pm
      index 08a1c66ccd3a..38cb2169a338 100644
      --- a/contrib/perl5/lib/ExtUtils/MakeMaker.pm
      +++ b/contrib/perl5/lib/ExtUtils/MakeMaker.pm
      @@ -2,7 +2,7 @@ BEGIN {require 5.002;} # MakeMaker 5.17 was the last MakeMaker that was compatib
       
       package ExtUtils::MakeMaker;
       
      -$VERSION = "5.4302";
      +$VERSION = "5.45";
       $Version_OK = "5.17";	# Makefiles older than $Version_OK will die
       			# (Will be checked from MakeMaker version 4.13 onwards)
       ($Revision = substr(q$Revision: 1.222 $, 10)) =~ s/\s+$//;
      @@ -17,7 +17,7 @@ use Carp ();
       use vars qw(
       
       	    @ISA @EXPORT @EXPORT_OK $AUTOLOAD
      -	    $ISA_TTY $Is_Mac $Is_OS2 $Is_VMS $Revision $Setup_done
      +	    $ISA_TTY $Is_Mac $Is_OS2 $Is_VMS $Revision
       	    $VERSION $Verbose $Version_OK %Config %Keep_after_flush
       	    %MM_Sections %Prepend_dot_dot %Recognized_Att_Keys
       	    @Get_from_Config @MM_Sections @Overridable @Parent
      @@ -70,6 +70,7 @@ $Is_VMS   = $^O eq 'VMS';
       $Is_OS2   = $^O eq 'os2';
       $Is_Mac   = $^O eq 'MacOS';
       $Is_Win32 = $^O eq 'MSWin32';
      +$Is_Cygwin= $^O eq 'cygwin';
       
       require ExtUtils::MM_Unix;
       
      @@ -86,36 +87,15 @@ if ($Is_Mac) {
       if ($Is_Win32) {
           require ExtUtils::MM_Win32;
       }
      -
      -# The SelfLoader would bring a lot of overhead for MakeMaker, because
      -# we know for sure we will use most of the autoloaded functions once
      -# we have to use one of them. So we write our own loader
      -
      -sub AUTOLOAD {
      -    my $code;
      -    if (defined fileno(DATA)) {
      -	my $fh = select DATA;
      -	my $o = $/;			# For future reads from the file.
      -	$/ = "\n__END__\n";
      -	$code = ;
      -	$/ = $o;
      -	select $fh;
      -	close DATA;
      -	eval $code;
      -	if ($@) {
      -	    $@ =~ s/ at .*\n//;
      -	    Carp::croak $@;
      -	}
      -    } else {
      -	warn "AUTOLOAD called unexpectedly for $AUTOLOAD"; 
      -    }
      -    defined(&$AUTOLOAD) or die "Myloader inconsistency error";
      -    goto &$AUTOLOAD;
      +if ($Is_Cygwin) {
      +    require ExtUtils::MM_Cygwin;
       }
       
      -# The only subroutine we do not SelfLoad is Version_Check because it's
      -# called so often. Loading this minimum still requires 1.2 secs on my
      -# Indy :-(
      +full_setup();
      +
      +# The use of the Version_check target has been dropped between perl
      +# 5.5.63 and 5.5.64. We must keep the subroutine for a while so that
      +# old Makefiles can satisfy the Version_check target.
       
       sub Version_check {
           my($checkversion) = @_;
      @@ -136,38 +116,10 @@ sub warnhandler {
           warn @_;
       }
       
      -sub ExtUtils::MakeMaker::eval_in_subdirs ;
      -sub ExtUtils::MakeMaker::eval_in_x ;
      -sub ExtUtils::MakeMaker::full_setup ;
      -sub ExtUtils::MakeMaker::writeMakefile ;
      -sub ExtUtils::MakeMaker::new ;
      -sub ExtUtils::MakeMaker::check_manifest ;
      -sub ExtUtils::MakeMaker::parse_args ;
      -sub ExtUtils::MakeMaker::check_hints ;
      -sub ExtUtils::MakeMaker::mv_all_methods ;
      -sub ExtUtils::MakeMaker::skipcheck ;
      -sub ExtUtils::MakeMaker::flush ;
      -sub ExtUtils::MakeMaker::mkbootstrap ;
      -sub ExtUtils::MakeMaker::mksymlists ;
      -sub ExtUtils::MakeMaker::neatvalue ;
      -sub ExtUtils::MakeMaker::selfdocument ;
      -sub ExtUtils::MakeMaker::WriteMakefile ;
      -sub ExtUtils::MakeMaker::prompt ($;$) ;
      -
      -1;
      -
      -__DATA__
      -
      -package ExtUtils::MakeMaker;
      -
       sub WriteMakefile {
           Carp::croak "WriteMakefile: Need even number of args" if @_ % 2;
           local $SIG{__WARN__} = \&warnhandler;
       
      -    unless ($Setup_done++){
      -	full_setup();
      -	undef &ExtUtils::MakeMaker::full_setup; #safe memory
      -    }
           my %att = @_;
           MM->new(\%att)->flush;
       }
      @@ -228,7 +180,6 @@ sub eval_in_x {
       
       sub full_setup {
           $Verbose ||= 0;
      -    $^W=1;
       
           # package name for the classes into which the first object will be blessed
           $PACKNAME = "PACK000";
      @@ -237,15 +188,19 @@ sub full_setup {
       
           AUTHOR ABSTRACT ABSTRACT_FROM BINARY_LOCATION
           C CAPI CCFLAGS CONFIG CONFIGURE DEFINE DIR DISTNAME DL_FUNCS DL_VARS
      -    EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE FULLPERL FUNCLIST H IMPORTS
      -    INC INCLUDE_EXT INSTALLARCHLIB INSTALLBIN INSTALLDIRS INSTALLMAN1DIR
      +    EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE FULLPERL FUNCLIST H 
      +    HTMLLIBPODS HTMLSCRIPTPOD IMPORTS
      +    INC INCLUDE_EXT INSTALLARCHLIB INSTALLBIN INSTALLDIRS INSTALLHTMLPRIVLIBDIR
      +    INSTALLHTMLSCRIPTDIR INSTALLHTMLSITELIBDIR INSTALLMAN1DIR
           INSTALLMAN3DIR INSTALLPRIVLIB INSTALLSCRIPT INSTALLSITEARCH
           INSTALLSITELIB INST_ARCHLIB INST_BIN INST_EXE INST_LIB
      +    INST_HTMLLIBDIR INST_HTMLSCRIPTDIR
           INST_MAN1DIR INST_MAN3DIR INST_SCRIPT LDFROM LIB LIBPERL_A LIBS
           LINKTYPE MAKEAPERL MAKEFILE MAN1PODS MAN3PODS MAP_TARGET MYEXTLIB
      +    PERL_MALLOC_OK
           NAME NEEDS_LINKING NOECHO NORECURS NO_VC OBJECT OPTIMIZE PERL PERLMAINCC
           PERL_ARCHLIB PERL_LIB PERL_SRC PERM_RW PERM_RWX
      -    PL_FILES PM PMLIBDIRS PPM_INSTALL_EXEC PPM_INSTALL_SCRIPT PREFIX
      +    PL_FILES PM PMLIBDIRS POLLUTE PPM_INSTALL_EXEC PPM_INSTALL_SCRIPT PREFIX
           PREREQ_PM SKIP TYPEMAPS VERSION VERSION_FROM XS XSOPT XSPROTOARG
           XS_VERSION clean depend dist dynamic_lib linkext macro realclean
           tool_autosplit
      @@ -272,7 +227,8 @@ sub full_setup {
        pasthru
       
        c_o xs_c xs_o top_targets linkext dlsyms dynamic dynamic_bs
      - dynamic_lib static static_lib manifypods processPL installbin subdirs
      + dynamic_lib static static_lib htmlifypods manifypods processPL
      + installbin subdirs
        clean realclean dist_basics dist_core dist_dir dist_test dist_ci
        install force perldepend makefile staticmake test ppd
       
      @@ -303,7 +259,8 @@ sub full_setup {
           @Get_from_Config = 
       	qw(
       	   ar cc cccdlflags ccdlflags dlext dlsrc ld lddlflags ldflags libc
      -	   lib_ext obj_ext osname osvers ranlib sitelibexp sitearchexp so exe_ext
      +	   lib_ext obj_ext osname osvers ranlib sitelibexp sitearchexp so
      +	   exe_ext full_ar
       	  );
       
           my $item;
      @@ -324,9 +281,9 @@ sub full_setup {
           %Prepend_dot_dot = 
       	qw(
       
      -	   INST_BIN 1 INST_EXE 1 INST_LIB 1 INST_ARCHLIB 1 INST_SCRIPT
      -	   1 MAP_TARGET 1 INST_MAN1DIR 1 INST_MAN3DIR 1 PERL_SRC 1
      -	   PERL 1 FULLPERL 1
      +	   INST_BIN 1 INST_EXE 1 INST_LIB 1 INST_ARCHLIB 1 INST_SCRIPT 1
      +	   MAP_TARGET 1 INST_HTMLLIBDIR 1 INST_HTMLSCRIPTDIR 1 
      +	   INST_MAN1DIR 1 INST_MAN3DIR 1 PERL_SRC 1 PERL 1 FULLPERL 1
       
       	  );
       
      @@ -373,9 +330,13 @@ sub ExtUtils::MakeMaker::new {
       
           my($prereq);
           foreach $prereq (sort keys %{$self->{PREREQ_PM}}) {
      -	my $eval = "use $prereq $self->{PREREQ_PM}->{$prereq}";
      +	my $eval = "require $prereq";
       	eval $eval;
      -	if ($@){
      +
      +	if ($@) {
      +	    warn "Warning: prerequisite $prereq failed to load: $@";
      +	}
      +	elsif ($prereq->VERSION < $self->{PREREQ_PM}->{$prereq} ){
       	    warn "Warning: prerequisite $prereq $self->{PREREQ_PM}->{$prereq} not found";
       # Why is/was this 'delete' here?  We need PREREQ_PM later to make PPDs.
       #	} else {
      @@ -441,11 +402,13 @@ sub ExtUtils::MakeMaker::new {
       	}
       	if ($self->{PARENT}) {
       	    $self->{PARENT}->{CHILDREN}->{$newclass} = $self;
      -	    if (exists $self->{PARENT}->{CAPI}
      -		and not exists $self->{CAPI})
      -	    {
      -		# inherit, but only if already unspecified
      -		$self->{CAPI} = $self->{PARENT}->{CAPI};
      +	    foreach my $opt (qw(CAPI POLLUTE)) {
      +		if (exists $self->{PARENT}->{$opt}
      +		    and not exists $self->{$opt})
      +		    {
      +			# inherit, but only if already unspecified
      +			$self->{$opt} = $self->{PARENT}->{$opt};
      +		    }
       	    }
       	}
           } else {
      @@ -471,7 +434,7 @@ sub ExtUtils::MakeMaker::new {
       	    else {
       		$pthinks =~ s!/Config\.pm$!!; $pthinks =~ s!.*/!!;
       	    }
      -	    print STDOUT <{UNINSTALLED_PERL};
       Your perl and your Config.pm seem to have different ideas about the architecture
       they are running on.
       Perl thinks: [$pthinks]
      @@ -973,26 +936,29 @@ want to specify some other option, set C variable:
       =head2 make install
       
       make alone puts all relevant files into directories that are named by
      -the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_MAN1DIR, and
      -INST_MAN3DIR. All these default to something below ./blib if you are
      -I building below the perl source directory. If you I
      -building below the perl source, INST_LIB and INST_ARCHLIB default to
      - ../../lib, and INST_SCRIPT is not defined.
      +the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_HTMLLIBDIR,
      +INST_HTMLSCRIPTDIR, INST_MAN1DIR, and INST_MAN3DIR.  All these default
      +to something below ./blib if you are I building below the perl
      +source directory. If you I building below the perl source,
      +INST_LIB and INST_ARCHLIB default to ../../lib, and INST_SCRIPT is not
      +defined.
       
       The I target of the generated Makefile copies the files found
       below each of the INST_* directories to their INSTALL*
       counterparts. Which counterparts are chosen depends on the setting of
       INSTALLDIRS according to the following table:
       
      -		       	   INSTALLDIRS set to
      -       	       	        perl   	          site
      +		       	         INSTALLDIRS set to
      +       	       	              perl   	          site
       
      -    INST_ARCHLIB    INSTALLARCHLIB    INSTALLSITEARCH
      -    INST_LIB        INSTALLPRIVLIB    INSTALLSITELIB
      -    INST_BIN                  INSTALLBIN
      -    INST_SCRIPT              INSTALLSCRIPT
      -    INST_MAN1DIR             INSTALLMAN1DIR
      -    INST_MAN3DIR             INSTALLMAN3DIR
      +    INST_ARCHLIB	INSTALLARCHLIB        INSTALLSITEARCH
      +    INST_LIB		INSTALLPRIVLIB        INSTALLSITELIB
      +    INST_HTMLLIBDIR	INSTALLHTMLPRIVLIBDIR INSTALLHTMLSITELIBDIR
      +    INST_HTMLSCRIPTDIR            INSTALLHTMLSCRIPTDIR
      +    INST_BIN			  INSTALLBIN
      +    INST_SCRIPT                   INSTALLSCRIPT
      +    INST_MAN1DIR                  INSTALLMAN1DIR
      +    INST_MAN3DIR                  INSTALLMAN3DIR
       
       The INSTALL... macros in turn default to their %Config
       ($Config{installprivlib}, $Config{installarchlib}, etc.) counterparts.
      @@ -1169,7 +1135,7 @@ MakeMaker gives you much more freedom than needed to configure
       internal variables and get different results. It is worth to mention,
       that make(1) also lets you configure most of the variables that are
       used in the Makefile. But in the majority of situations this will not
      -be necessary, and should only be done, if the author of a package
      +be necessary, and should only be done if the author of a package
       recommends it (or you know what you're doing).
       
       =head2 Using Attributes and Parameters
      @@ -1213,6 +1179,9 @@ currently used by MakeMaker but may be handy in Makefile.PLs.
       
       =item CAPI
       
      +[This attribute is obsolete in Perl 5.6.  PERL_OBJECT builds are C-compatible
      +by default.]
      +
       Switch to force usage of the Perl C API even when compiling for PERL_OBJECT.
       
       Note that this attribute is passed through to any recursive build,
      @@ -1326,6 +1295,20 @@ names are passed through unaltered to the linker options file.
       
       Ref to array of *.h file names. Similar to C.
       
      +=item HTMLLIBPODS
      +
      +Hashref of .pm and .pod files.  MakeMaker will default this to all
      + .pod and any .pm files that include POD directives.  The files listed
      +here will be converted to HTML format and installed as was requested
      +at Configure time.
      +
      +=item HTMLSCRIPTPODS
      +
      +Hashref of pod-containing files.  MakeMaker will default this to all
      +EXE_FILES files that include POD directives.  The files listed
      +here will be converted to HTML format and installed as was requested
      +at Configure time.
      +
       =item IMPORTS
       
       This attribute is used to specify names to be imported into the
      @@ -1366,6 +1349,22 @@ choose: installprivlib and installarchlib versus installsitelib and
       installsitearch. The first pair is chosen with INSTALLDIRS=perl, the
       second with INSTALLDIRS=site. Default is site.
       
      +=item INSTALLHTMLPRIVLIBDIR
      +
      +This directory gets the HTML pages at 'make install' time. Defaults to
      +$Config{installhtmlprivlibdir}.
      +
      +=item INSTALLHTMLSCRIPTDIR
      +
      +This directory gets the HTML pages at 'make install' time. Defaults to
      +$Config{installhtmlscriptdir}.
      +
      +=item INSTALLHTMLSITELIBDIR
      +
      +This directory gets the HTML pages at 'make install' time. Defaults to
      +$Config{installhtmlsitelibdir}.
      +
      +
       =item INSTALLMAN1DIR
       
       This directory gets the man pages at 'make install' time. Defaults to
      @@ -1415,6 +1414,14 @@ need to use it.
       Directory where we put library files of this extension while building
       it.
       
      +=item INST_HTMLLIBDIR
      +
      +Directory to hold the man pages in HTML format at 'make' time
      +
      +=item INST_HTMLSCRIPTDIR
      +
      +Directory to hold the man pages in HTML format at 'make' time
      +
       =item INST_MAN1DIR
       
       Directory to hold the man pages at 'make' time
      @@ -1426,10 +1433,38 @@ Directory to hold the man pages at 'make' time
       =item INST_SCRIPT
       
       Directory, where executable files should be installed during
      -'make'. Defaults to "./blib/bin", just to have a dummy location during
      +'make'. Defaults to "./blib/script", just to have a dummy location during
       testing. make install will copy the files in INST_SCRIPT to
       INSTALLSCRIPT.
       
      +=item PERL_MALLOC_OK
      +
      +defaults to 0.  Should be set to TRUE if the extension can work with
      +the memory allocation routines substituted by the Perl malloc() subsystem.
      +This should be applicable to most extensions with exceptions of those
      +
      +=over
      +
      +=item *
      +
      +with bugs in memory allocations which are caught by Perl's malloc();
      +
      +=item *
      +
      +which interact with the memory allocator in other ways than via
      +malloc(), realloc(), free(), calloc(), sbrk() and brk();
      +
      +=item *
      +
      +which rely on special alignment which is not provided by Perl's malloc().
      +
      +=back
      +
      +B  Negligence to set this flag in I of loaded extension
      +nullifies many advantages of Perl's malloc(), such as better usage of
      +system resources, error detection, memory usage reporting, catchable failure
      +of memory allocations, etc.
      +
       =item LDFROM
       
       defaults to "$(OBJECT)" and is used in the ld command to specify
      @@ -1515,9 +1550,9 @@ Makefile.PL.
       
       =item NEEDS_LINKING
       
      -MakeMaker will figure out, if an extension contains linkable code
      +MakeMaker will figure out if an extension contains linkable code
       anywhere down the directory tree, and will set this variable
      -accordingly, but you can speed it up a very little bit, if you define
      +accordingly, but you can speed it up a very little bit if you define
       this boolean variable yourself.
       
       =item NOECHO
      @@ -1532,7 +1567,7 @@ Boolean.  Attribute to inhibit descending into subdirectories.
       
       =item NO_VC
       
      -In general any generated Makefile checks for the current version of
      +In general, any generated Makefile checks for the current version of
       MakeMaker and the version the Makefile was built under. If NO_VC is
       set, the version check is neglected. Do not write this into your
       Makefile.PL, use it interactively instead.
      @@ -1559,7 +1594,7 @@ to $(CC).
       
       =item PERL_ARCHLIB
       
      -Same as above for architecture dependent files
      +Same as above for architecture dependent files.
       
       =item PERL_LIB
       
      @@ -1613,6 +1648,18 @@ they contain will be installed in the corresponding location in the
       library.  A libscan() method can be used to alter the behaviour.
       Defining PM in the Makefile.PL will override PMLIBDIRS.
       
      +=item POLLUTE
      +
      +Release 5.005 grandfathered old global symbol names by providing preprocessor
      +macros for extension source compatibility.  As of release 5.6, these
      +preprocessor definitions are not available by default.  The POLLUTE flag
      +specifies that the old names should still be defined:
      +
      +  perl Makefile.PL POLLUTE=1
      +
      +Please inform the module author if this is necessary to successfully install
      +a module under 5.6 or later.
      +
       =item PPM_INSTALL_EXEC
       
       Name of the executable used to run C below. (e.g. perl)
      @@ -1641,8 +1688,8 @@ only check if any version is installed already.
       =item SKIP
       
       Arryref. E.g. [qw(name1 name2)] skip (do not write) sections of the
      -Makefile. Caution! Do not use the SKIP attribute for the neglectible
      -speedup. It may seriously damage the resulting Makefile. Only use it,
      +Makefile. Caution! Do not use the SKIP attribute for the negligible
      +speedup. It may seriously damage the resulting Makefile. Only use it
       if you really need it.
       
       =item TYPEMAPS
      @@ -1765,7 +1812,7 @@ NB: Extensions that have nothing but *.pm files had to say
         {LINKTYPE => ''}
       
       with Pre-5.0 MakeMakers. Since version 5.00 of MakeMaker such a line
      -can be deleted safely. MakeMaker recognizes, when there's nothing to
      +can be deleted safely. MakeMaker recognizes when there's nothing to
       be linked.
       
       =item macro
      @@ -1776,9 +1823,13 @@ be linked.
       
         {FILES => '$(INST_ARCHAUTODIR)/*.xyz'}
       
      +=item test
      +
      +  {TESTS => 't/*.t'}
      +
       =item tool_autosplit
       
      -  {MAXLEN =E 8}
      +  {MAXLEN => 8}
       
       =back
       
      @@ -1864,7 +1915,7 @@ details)
       =item    make distclean
       
       does a realclean first and then the distcheck. Note that this is not
      -needed to build a new distribution as long as you are sure, that the
      +needed to build a new distribution as long as you are sure that the
       MANIFEST file is ok.
       
       =item    make manifest
      diff --git a/contrib/perl5/lib/ExtUtils/Manifest.pm b/contrib/perl5/lib/ExtUtils/Manifest.pm
      index 1a6dde7a024b..8bb3fc8ebd6e 100644
      --- a/contrib/perl5/lib/ExtUtils/Manifest.pm
      +++ b/contrib/perl5/lib/ExtUtils/Manifest.pm
      @@ -25,6 +25,7 @@ $MANIFEST = 'MANIFEST';
       
       # Really cool fix from Ilya :)
       unless (defined $Config{d_link}) {
      +    no warnings;
           *ln = \&cp;
       }
       
      @@ -186,7 +187,6 @@ sub manicopy {
           require File::Basename;
           my(%dirs,$file);
           $target = VMS::Filespec::unixify($target) if $Is_VMS;
      -    umask 0 unless $Is_VMS;
           File::Path::mkpath([ $target ],1,$Is_VMS ? undef : 0755);
           foreach $file (keys %$read){
       	$file = VMS::Filespec::unixify($file) if $Is_VMS;
      @@ -268,27 +268,27 @@ ExtUtils::Manifest - utilities to write and check a MANIFEST file
       
       =head1 SYNOPSIS
       
      -C
      +    require ExtUtils::Manifest;
       
      -C
      +    ExtUtils::Manifest::mkmanifest;
       
      -C
      +    ExtUtils::Manifest::manicheck;
       
      -C
      +    ExtUtils::Manifest::filecheck;
       
      -C
      +    ExtUtils::Manifest::fullcheck;
       
      -C
      +    ExtUtils::Manifest::skipcheck;
       
      -C
      +    ExtUtils::Manifest::manifind();
       
      -C
      +    ExtUtils::Manifest::maniread($file);
       
      -C
      +    ExtUtils::Manifest::manicopy($read,$target,$how);
       
       =head1 DESCRIPTION
       
      -Mkmanifest() writes all files in and below the current directory to a
      +mkmanifest() writes all files in and below the current directory to a
       file named in the global variable $ExtUtils::Manifest::MANIFEST (which
       defaults to C) in the current directory. It works similar to
       
      @@ -302,33 +302,33 @@ comments are separated by one or more TAB characters in the
       output. All files that match any regular expression in a file
       C (if such a file exists) are ignored.
       
      -Manicheck() checks if all the files within a C in the
      +manicheck() checks if all the files within a C in the
       current directory really do exist. It only reports discrepancies and
       exits silently if MANIFEST and the tree below the current directory
       are in sync.
       
      -Filecheck() finds files below the current directory that are not
      +filecheck() finds files below the current directory that are not
       mentioned in the C file. An optional file C
       will be consulted. Any file matching a regular expression in such a
       file will not be reported as missing in the C file.
       
      -Fullcheck() does both a manicheck() and a filecheck().
      +fullcheck() does both a manicheck() and a filecheck().
       
      -Skipcheck() lists all the files that are skipped due to your
      +skipcheck() lists all the files that are skipped due to your
       C file.
       
      -Manifind() returns a hash reference. The keys of the hash are the
      +manifind() returns a hash reference. The keys of the hash are the
       files found below the current directory.
       
      -Maniread($file) reads a named C file (defaults to
      +maniread($file) reads a named C file (defaults to
       C in the current directory) and returns a HASH reference
       with files being the keys and comments being the values of the HASH.
       Blank lines and lines which start with C<#> in the C file
       are discarded.
       
      -I copies the files that are the keys in
      +C copies the files that are the keys in
       the HASH I<%$read> to the named target directory. The HASH reference
      -I<$read> is typically returned by the maniread() function. This
      +$read is typically returned by the maniread() function. This
       function is useful for producing a directory tree identical to the
       intended distribution tree. The third parameter $how can be used to
       specify a different methods of "copying". Valid values are C,
      diff --git a/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm b/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
      index 25c374c1531f..323c3ab6babc 100644
      --- a/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
      +++ b/contrib/perl5/lib/ExtUtils/Mkbootstrap.pm
      @@ -81,8 +81,8 @@ C
       
       Mkbootstrap typically gets called from an extension Makefile.
       
      -There is no C<*.bs> file supplied with the extension. Instead a
      -C<*_BS> file which has code for the special cases, like posix for
      +There is no C<*.bs> file supplied with the extension. Instead, there may
      +be a C<*_BS> file which has code for the special cases, like posix for
       berkeley db on the NeXT.
       
       This file will get parsed, and produce a maybe empty
      diff --git a/contrib/perl5/lib/ExtUtils/Mksymlists.pm b/contrib/perl5/lib/ExtUtils/Mksymlists.pm
      index 76535d938616..c8f41c74bcd7 100644
      --- a/contrib/perl5/lib/ExtUtils/Mksymlists.pm
      +++ b/contrib/perl5/lib/ExtUtils/Mksymlists.pm
      @@ -1,10 +1,12 @@
       package ExtUtils::Mksymlists;
      +
      +use 5.005_64;
       use strict qw[ subs refs ];
       # no strict 'vars';  # until filehandles are exempted
       
       use Carp;
       use Exporter;
      -use vars qw( @ISA @EXPORT $VERSION );
      +our(@ISA, @EXPORT, $VERSION);
       @ISA = 'Exporter';
       @EXPORT = '&Mksymlists';
       $VERSION = substr q$Revision: 1.17 $, 10;
      @@ -76,12 +78,19 @@ sub _write_os2 {
               ($data->{DLBASE} = $data->{NAME}) =~ s/.*:://;
               $data->{DLBASE} = substr($data->{DLBASE},0,7) . '_';
           }
      +    my $distname = $data->{DISTNAME} || $data->{NAME};
      +    $distname = "Distribution $distname";
      +    my $comment = "Perl (v$Config::Config{version}$threaded) module $data->{NAME}";
      +    if ($data->{INSTALLDIRS} and $data->{INSTALLDIRS} eq 'perl') {
      +	$distname = 'perl5-porters@perl.org';
      +	$comment = "Core $comment";
      +    }
           rename "$data->{FILE}.def", "$data->{FILE}_def.old";
       
           open(DEF,">$data->{FILE}.def")
               or croak("Can't create $data->{FILE}.def: $!\n");
           print DEF "LIBRARY '$data->{DLBASE}' INITINSTANCE TERMINSTANCE\n";
      -    print DEF "DESCRIPTION 'Perl (v$]$threaded) module $data->{NAME} v$data->{VERSION}'\n";
      +    print DEF "DESCRIPTION '\@#$distname:$data->{VERSION}#\@ $comment'\n";
           print DEF "CODE LOADONCALL\n";
           print DEF "DATA LOADONCALL NONSHARED MULTIPLE\n";
           print DEF "EXPORTS\n  ";
      @@ -148,7 +157,7 @@ sub _write_vms {
           require Config; # a reminder for once we do $^O
           require ExtUtils::XSSymSet;
       
      -    my($isvax) = $Config::Config{'arch'} =~ /VAX/i;
      +    my($isvax) = $Config::Config{'archname'} =~ /VAX/i;
           my($set) = new ExtUtils::XSSymSet;
           my($sym);
       
      @@ -164,6 +173,8 @@ sub _write_vms {
           # We don't do anything to preserve order, so we won't relax
           # the GSMATCH criteria for a dynamic extension
       
      +    print OPT "case_sensitive=yes\n"
      +        if $Config::Config{d_vms_case_sensitive_symbols};
           foreach $sym (@{$data->{FUNCLIST}}) {
               my $safe = $set->addsym($sym);
               if ($isvax) { print OPT "UNIVERSAL=$safe\n" }
      diff --git a/contrib/perl5/lib/ExtUtils/Packlist.pm b/contrib/perl5/lib/ExtUtils/Packlist.pm
      index eeb0a5b0c1c4..88ea206196ec 100644
      --- a/contrib/perl5/lib/ExtUtils/Packlist.pm
      +++ b/contrib/perl5/lib/ExtUtils/Packlist.pm
      @@ -1,8 +1,9 @@
       package ExtUtils::Packlist;
      +
      +use 5.005_64;
       use strict;
       use Carp qw();
      -use vars qw($VERSION);
      -$VERSION = '0.03';
      +our $VERSION = '0.03';
       
       # Used for generating filehandle globs.  IO::File might not be available!
       my $fhname = "FH1";
      diff --git a/contrib/perl5/lib/ExtUtils/typemap b/contrib/perl5/lib/ExtUtils/typemap
      index b1ec063dd750..a34cd4f9ea77 100644
      --- a/contrib/perl5/lib/ExtUtils/typemap
      +++ b/contrib/perl5/lib/ExtUtils/typemap
      @@ -1,4 +1,4 @@
      -# $Header$ 
      +# $Header: /home/rmb1/misc/CVS/perl5.005_61/lib/ExtUtils/typemap,v 1.3 1999/09/13 09:46:43 rmb1 Exp $ 
       # basic C types
       int			T_IV
       unsigned		T_UV
      @@ -29,6 +29,7 @@ HV *			T_HVREF
       CV *			T_CVREF
       
       IV			T_IV
      +UV			T_UV
       I32			T_IV
       I16			T_IV
       I8			T_IV
      @@ -106,11 +107,11 @@ T_DOUBLE
       T_PV
       	$var = ($type)SvPV($arg,PL_na)
       T_PTR
      -	$var = ($type)SvIV($arg)
      +	$var = INT2PTR($type,SvIV($arg))
       T_PTRREF
       	if (SvROK($arg)) {
       	    IV tmp = SvIV((SV*)SvRV($arg));
      -	    $var = ($type) tmp;
      +	    $var = INT2PTR($type,tmp);
       	}
       	else
       	    croak(\"$var is not a reference\")
      @@ -131,7 +132,7 @@ T_REF_IV_PTR
       T_PTROBJ
       	if (sv_derived_from($arg, \"${ntype}\")) {
       	    IV tmp = SvIV((SV*)SvRV($arg));
      -	    $var = ($type) tmp;
      +	    $var = INT2PTR($type,tmp);
       	}
       	else
       	    croak(\"$var is not of type ${ntype}\")
      @@ -146,14 +147,14 @@ T_PTRDESC
       T_REFREF
       	if (SvROK($arg)) {
       	    IV tmp = SvIV((SV*)SvRV($arg));
      -	    $var = *($type) tmp;
      +	    $var = *INT2PTR($type,tmp);
       	}
       	else
       	    croak(\"$var is not a reference\")
       T_REFOBJ
       	if (sv_isa($arg, \"${ntype}\")) {
       	    IV tmp = SvIV((SV*)SvRV($arg));
      -	    $var = *($type) tmp;
      +	    $var = *INT2PTR($type,tmp);
       	}
       	else
       	    croak(\"$var is not of type ${ntype}\")
      @@ -250,7 +251,7 @@ T_REFOBJ
       T_OPAQUE
       	sv_setpvn($arg, (char *)&$var, sizeof($var));
       T_OPAQUEPTR
      -	sv_setpvn($arg, (char *)$var, sizeof(*$var)), XFree((char *)$var);
      +	sv_setpvn($arg, (char *)$var, sizeof(*$var));
       T_PACKED
       	XS_pack_$ntype($arg, $var);
       T_PACKEDARRAY
      diff --git a/contrib/perl5/lib/ExtUtils/xsubpp b/contrib/perl5/lib/ExtUtils/xsubpp
      index 1ee7b29449e1..5a71e896362f 100755
      --- a/contrib/perl5/lib/ExtUtils/xsubpp
      +++ b/contrib/perl5/lib/ExtUtils/xsubpp
      @@ -6,10 +6,12 @@ xsubpp - compiler to convert Perl XS code into C code
       
       =head1 SYNOPSIS
       
      -B [B<-v>] [B<-C++>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversioncheck>] [B<-nolinenumbers>] [B<-typemap typemap>] [B<-object_capi>]... file.xs
      +B [B<-v>] [B<-C++>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversioncheck>] [B<-nolinenumbers>] [B<-nooptimize>] [B<-typemap typemap>] ... file.xs
       
       =head1 DESCRIPTION
       
      +This compiler is typically run by the makefiles created by L.
      +
       I will compile XS code into C code by embedding the constructs
       necessary to let C functions manipulate Perl values and creates the glue
       necessary to let Perl access those functions.  The compiler uses typemaps to
      @@ -23,13 +25,15 @@ typemap taking precedence.
       
       =head1 OPTIONS
       
      +Note that the C MakeMaker option may be used to add these options to
      +any makefiles generated by MakeMaker.
      +
       =over 5
       
       =item B<-C++>
       
       Adds ``extern "C"'' to the C code.
       
      -
       =item B<-except>
       
       Adds exception handling stubs to the C code.
      @@ -59,11 +63,22 @@ number.
       
       Prevents the inclusion of `#line' directives in the output.
       
      -=item B<-object_capi>
      +=item B<-nooptimize>
       
      -Compile code as C in a PERL_OBJECT environment.
      +Disables certain optimizations.  The only optimization that is currently
      +affected is the use of Is by the output C code (see L).
      +This may significantly slow down the generated code, but this is the way
      +B of 5.005 and earlier operated.
       
      -back
      +=item B<-noinout>
      +
      +Disable recognition of C, C and C declarations.
      +
      +=item B<-noargtypes>
      +
      +Disable recognition of ANSI-like descriptions of function signature.
      +
      +=back
       
       =head1 ENVIRONMENT
       
      @@ -107,7 +122,7 @@ if ($^O eq 'VMS') {
       
       $FH = 'File0000' ;
       
      -$usage = "Usage: xsubpp [-v] [-C++] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-s pattern] [-typemap typemap]... file.xs\n";
      +$usage = "Usage: xsubpp [-v] [-C++] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-noinout] [-noargtypes] [-s pattern] [-typemap typemap]... file.xs\n";
       
       $proto_re = "[" . quotemeta('\$%&*@;') . "]" ;
       # mjn
      @@ -118,6 +133,11 @@ $WantPrototypes = -1 ;
       $WantVersionChk = 1 ;
       $ProtoUsed = 0 ;
       $WantLineNumbers = 1 ;
      +$WantOptimize = 1 ;
      +
      +my $process_inout = 1;
      +my $process_argtypes = 1;
      +
       SWITCH: while (@ARGV and $ARGV[0] =~ /^-./) {
           $flag = shift @ARGV;
           $flag =~ s/^-// ;
      @@ -127,12 +147,19 @@ SWITCH: while (@ARGV and $ARGV[0] =~ /^-./) {
           $WantPrototypes = 1, next SWITCH	if $flag eq 'prototypes';
           $WantVersionChk = 0, next SWITCH	if $flag eq 'noversioncheck';
           $WantVersionChk = 1, next SWITCH	if $flag eq 'versioncheck';
      +    # XXX left this in for compat
           $WantCAPI = 1, next SWITCH    if $flag eq 'object_capi';
           $except = " TRY",	next SWITCH	if $flag eq 'except';
           push(@tm,shift),	next SWITCH	if $flag eq 'typemap';
           $WantLineNumbers = 0, next SWITCH	if $flag eq 'nolinenumbers';
           $WantLineNumbers = 1, next SWITCH	if $flag eq 'linenumbers';
      -    (print "xsubpp version $XSUBPP_version\n"), exit  	
      +    $WantOptimize = 0, next SWITCH	if $flag eq 'nooptimize';
      +    $WantOptimize = 1, next SWITCH	if $flag eq 'optimize';
      +    $process_inout = 0, next SWITCH	if $flag eq 'noinout';
      +    $process_inout = 1, next SWITCH	if $flag eq 'inout';
      +    $process_argtypes = 0, next SWITCH	if $flag eq 'noargtypes';
      +    $process_argtypes = 1, next SWITCH	if $flag eq 'argtypes';
      +    (print "xsubpp version $XSUBPP_version\n"), exit
       	if $flag eq 'v';
           die $usage;
       }
      @@ -238,13 +265,31 @@ foreach $key (keys %input_expr) {
           $input_expr{$key} =~ s/\n+$//;
       }
       
      +$bal = qr[(?:(?>[^()]+)|\((??{ $bal })\))*];	# ()-balanced
      +$cast = qr[(?:\(\s*SV\s*\*\s*\)\s*)?];		# Optional (SV*) cast
      +$size = qr[,\s* (??{ $bal }) ]x;		# Third arg (to setpvn)
      +
      +foreach $key (keys %output_expr) {
      +    use re 'eval';
      +
      +    my ($t, $with_size, $arg, $sarg) =
      +      ($output_expr{$key} =~
      +	 m[^ \s+ sv_set ( [iunp] ) v (n)? 	# Type, is_setpvn
      +	     \s* \( \s* $cast \$arg \s* ,
      +	     \s* ( (??{ $bal }) )		# Set from
      +	     ( (??{ $size }) )?			# Possible sizeof set-from
      +	     \) \s* ; \s* $
      +	  ]x);
      +    $targetable{$key} = [$t, $with_size, $arg, $sarg] if $t;
      +}
      +
       $END = "!End!\n\n";		# "impossible" keyword (multiple newline)
       
       # Match an XS keyword
       $BLOCK_re= '\s*(' . join('|', qw(
       	REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE OUTPUT 
       	CLEANUP ALIAS PROTOTYPES PROTOTYPE VERSIONCHECK INCLUDE
      -	SCOPE INTERFACE INTERFACE_MACRO C_ARGS
      +	SCOPE INTERFACE INTERFACE_MACRO C_ARGS POSTCALL
       	)) . "|$END)\\s*:";
       
       # Input:  ($_, @line) == unparsed input.
      @@ -255,6 +300,19 @@ sub check_keyword {
       	s/^(\s*)($_[0])\s*:\s*(?:#.*)?/$1/s && $2;
       }
       
      +my ($C_group_rex, $C_arg);
      +# Group in C (no support for comments or literals)
      +$C_group_rex = qr/ [({\[]
      +		   (?: (?> [^()\[\]{}]+ ) | (??{ $C_group_rex }) )*
      +		   [)}\]] /x ;
      +# Chunk in C without comma at toplevel (no comments):
      +$C_arg = qr/ (?: (?> [^()\[\]{},"']+ )
      +	     |   (??{ $C_group_rex })
      +	     |   " (?: (?> [^\\"]+ )
      +		   |   \\.
      +		   )* "		# String literal
      +	     |   ' (?: (?> [^\\']+ ) | \\. )* ' # Char literal
      +	     )* /xs;
       
       if ($WantLineNumbers) {
           {
      @@ -365,12 +423,23 @@ sub INPUT_handler {
       
       	# Check for duplicate definitions
       	blurt ("Error: duplicate definition of argument '$var_name' ignored"), next
      -	    if $arg_list{$var_name} ++  ;
      +	    if $arg_list{$var_name}++ 
      +	      or defined $arg_types{$var_name} and not $processing_arg_with_types;
       
       	$thisdone |= $var_name eq "THIS";
       	$retvaldone |= $var_name eq "RETVAL";
       	$var_types{$var_name} = $var_type;
      -	print "\t" . &map_type($var_type);
      +	# XXXX This check is a safeguard against the unfinished conversion of
      +	# generate_init().  When generate_init() is fixed,
      +	# one can use 2-args map_type() unconditionally.
      +	if ($var_type =~ / \( \s* \* \s* \) /x) {
      +	  # Function pointers are not yet supported with &output_init!
      +	  print "\t" . &map_type($var_type, $var_name);
      +	  $name_printed = 1;
      +	} else {
      +	  print "\t" . &map_type($var_type);
      +	  $name_printed = 0;
      +	}
       	$var_num = $args_match{$var_name};
       
               $proto_arg[$var_num] = ProtoString($var_type) 
      @@ -379,13 +448,19 @@ sub INPUT_handler {
       	    $var_addr{$var_name} = 1;
       	    $func_args =~ s/\b($var_name)\b/&$1/;
       	}
      -	if ($var_init =~ /^[=;]\s*NO_INIT\s*;?\s*$/) {
      +	if ($var_init =~ /^[=;]\s*NO_INIT\s*;?\s*$/
      +	    or $in_out{$var_name} and $in_out{$var_name} eq 'OUTLIST'
      +	    and $var_init !~ /\S/) {
      +	  if ($name_printed) {
      +	    print ";\n";
      +	  } else {
       	    print "\t$var_name;\n";
      +	  }
       	} elsif ($var_init =~ /\S/) {
      -	    &output_init($var_type, $var_num, $var_name, $var_init);
      +	    &output_init($var_type, $var_num, $var_name, $var_init, $name_printed);
       	} elsif ($var_num) {
       	    # generate initialization code
      -	    &generate_init($var_type, $var_num, $var_name);
      +	    &generate_init($var_type, $var_num, $var_name, $name_printed);
       	} else {
       	    print ";\n";
       	}
      @@ -460,6 +535,7 @@ EOF
       
       sub CLEANUP_handler() { print_section() } 
       sub PREINIT_handler() { print_section() } 
      +sub POSTCALL_handler() { print_section() } 
       sub INIT_handler()    { print_section() } 
       
       sub GetAliases
      @@ -829,7 +905,7 @@ sub fetch_para {
       	my $tmp_line;
       	$lastline .= $tmp_line
       	    while ($lastline =~ /\\$/ && defined($tmp_line = <$FH>));
      -	    
      +
       	chomp $lastline;
       	$lastline =~ s/^\s+$//;
           }
      @@ -896,15 +972,23 @@ while (fetch_para()) {
           undef($static);
           undef($elipsis);
           undef($wantRETVAL) ;
      +    undef($RETVAL_no_return) ;
           undef(%arg_list) ;
           undef(@proto_arg) ;
      +    undef(@arg_with_types) ;
      +    undef($processing_arg_with_types) ;
      +    undef(%arg_types) ;
      +    undef(@in_out) ;
      +    undef(%in_out) ;
           undef($proto_in_this_xsub) ;
           undef($scope_in_this_xsub) ;
           undef($interface);
      +    undef($prepush_done);
           $interface_macro = 'XSINTERFACE_FUNC' ;
           $interface_macro_set = 'XSINTERFACE_FUNC_SET' ;
           $ProtoThisXSUB = $WantPrototypes ;
           $ScopeThisXSUB = 0;
      +    $xsreturn = 0;
       
           $_ = shift(@line);
           while ($kwd = check_keyword("REQUIRE|PROTOTYPES|VERSIONCHECK|INCLUDE")) {
      @@ -924,6 +1008,12 @@ while (fetch_para()) {
       
           # extract return type, function name and arguments
           ($ret_type) = TidyType($_);
      +    $RETVAL_no_return = 1 if $ret_type =~ s/^NO_OUTPUT\s+//;
      +
      +    # Allow one-line ANSI-like declaration
      +    unshift @line, $2
      +      if $process_argtypes
      +	and $ret_type =~ s/^(.*?\w.*?)\s*\b(\w+\s*\(.*)/$1/s;
       
           # a function definition needs at least 2 lines
           blurt ("Error: Function definition too short '$ret_type'"), next PARAGRAPH
      @@ -933,7 +1023,7 @@ while (fetch_para()) {
       
           $func_header = shift(@line);
           blurt ("Error: Cannot parse function definition from '$func_header'"), next PARAGRAPH
      -	unless $func_header =~ /^(?:([\w:]*)::)?(\w+)\s*\(\s*(.*?)\s*\)\s*(const)?\s*$/s;
      +	unless $func_header =~ /^(?:([\w:]*)::)?(\w+)\s*\(\s*(.*?)\s*\)\s*(const)?\s*(;\s*)?$/s;
       
           ($class, $func_name, $orig_args) =  ($1, $2, $3) ;
           $class = "$4 $class" if $4;
      @@ -952,38 +1042,98 @@ while (fetch_para()) {
           %XsubAliases = %XsubAliasValues = %Interfaces = ();
           $DoSetMagic = 1;
       
      -    @args = split(/\s*,\s*/, $orig_args);
      +    $orig_args =~ s/\\\s*/ /g;		# process line continuations
      +
      +    my %out_vars;
      +    if ($process_argtypes and $orig_args =~ /\S/) {
      +	my $args = "$orig_args ,";
      +	if ($args =~ /^( (??{ $C_arg }) , )* $ /x) {
      +	    @args = ($args =~ /\G ( (??{ $C_arg }) ) , /xg);
      +	    for ( @args ) {
      +		s/^\s+//;
      +		s/\s+$//;
      +		my $arg = $_;
      +		my $default;
      +		($arg, $default) = / ( [^=]* ) ( (?: = .* )? ) /x;
      +		my ($pre, $name) = ($arg =~ /(.*?) \s* \b(\w+) \s* $ /x);
      +		next unless length $pre;
      +		my $out_type;
      +		my $inout_var;
      +		if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST)\s+//) {
      +		    my $type = $1;
      +		    $out_type = $type if $type ne 'IN';
      +		    $arg =~ s/^(IN|IN_OUTLIST|OUTLIST)\s+//;
      +		}
      +		if (/\W/) {	# Has a type
      +		    push @arg_with_types, $arg;
      +		    # warn "pushing '$arg'\n";
      +		    $arg_types{$name} = $arg;
      +		    $_ = "$name$default";
      +		}
      +		$out_vars{$_} = 1 if $out_type eq 'OUTLIST';
      +		push @in_out, $name if $out_type;
      +		$in_out{$name} = $out_type if $out_type;
      +	    }
      +	} else {
      +	    @args = split(/\s*,\s*/, $orig_args);
      +	    Warn("Warning: cannot parse argument list '$orig_args', fallback to split");
      +	}
      +    } else {
      +	@args = split(/\s*,\s*/, $orig_args);
      +	for (@args) {
      +	    if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST)\s+//) {
      +		my $out_type = $1;
      +		next if $out_type eq 'IN';
      +		$out_vars{$_} = 1 if $out_type eq 'OUTLIST';
      +		push @in_out, $name;
      +		$in_out{$_} = $out_type;
      +	    }
      +	}
      +    }
           if (defined($class)) {
       	my $arg0 = ((defined($static) or $func_name eq 'new')
       		    ? "CLASS" : "THIS");
       	unshift(@args, $arg0);
      -	($orig_args = "$arg0, $orig_args") =~ s/^$arg0, $/$arg0/;
      +	($report_args = "$arg0, $report_args") =~ s/^\w+, $/$arg0/;
           }
      -    $orig_args =~ s/"/\\"/g;
      -    $min_args = $num_args = @args;
      -    foreach $i (0..$num_args-1) {
      +    my $extra_args = 0;
      +    @args_num = ();
      +    $num_args = 0;
      +    my $report_args = '';
      +    foreach $i (0 .. $#args) {
       	    if ($args[$i] =~ s/\.\.\.//) {
       		    $elipsis = 1;
      -		    $min_args--;
      -		    if ($args[$i] eq '' && $i == $num_args - 1) {
      +		    if ($args[$i] eq '' && $i == $#args) {
      +		        $report_args .= ", ...";
       			pop(@args);
       			last;
       		    }
       	    }
      +	    if ($out_vars{$args[$i]}) {
      +		push @args_num, undef;
      +	    } else {
      +		push @args_num, ++$num_args;
      +		$report_args .= ", $args[$i]";
      +	    }
       	    if ($args[$i] =~ /^([^=]*[^\s=])\s*=\s*(.*)/s) {
      -		    $min_args--;
      +		    $extra_args++;
       		    $args[$i] = $1;
       		    $defaults{$args[$i]} = $2;
       		    $defaults{$args[$i]} =~ s/"/\\"/g;
       	    }
       	    $proto_arg[$i+1] = "\$" ;
           }
      -    if (defined($class)) {
      -	    $func_args = join(", ", @args[1..$#args]);
      -    } else {
      -	    $func_args = join(", ", @args);
      +    $min_args = $num_args - $extra_args;
      +    $report_args =~ s/"/\\"/g;
      +    $report_args =~ s/^,\s+//;
      +    my @func_args = @args;
      +    shift @func_args if defined($class);
      +
      +    for (@func_args) {
      +	s/^/&/ if $in_out{$_};
           }
      -    @args_match{@args} = 1..@args;
      +    $func_args = join(", ", @func_args);
      +    @args_match{@args} = @args_num;
       
           $PPCODE = grep(/^\s*PPCODE\s*:/, @line);
           $CODE = grep(/^\s*CODE\s*:/, @line);
      @@ -994,6 +1144,8 @@ while (fetch_para()) {
           $ALIAS  = grep(/^\s*ALIAS\s*:/,  @line);
           $INTERFACE  = grep(/^\s*INTERFACE\s*:/,  @line);
       
      +    $xsreturn = 1 if $EXPLICIT_RETURN;
      +
           # print function header
           print Q<<"EOF";
       #XS(XS_${Full_func_name})
      @@ -1024,12 +1176,12 @@ EOF
           if ($ALIAS) 
             { print Q<<"EOF" if $cond }
       #    if ($cond)
      -#       croak("Usage: %s($orig_args)", GvNAME(CvGV(cv)));
      +#       Perl_croak(aTHX_ "Usage: %s($report_args)", GvNAME(CvGV(cv)));
       EOF
           else 
             { print Q<<"EOF" if $cond }
       #    if ($cond)
      -#	croak("Usage: $pname($orig_args)");
      +#	Perl_croak(aTHX_ "Usage: $pname($report_args)");
       EOF
       
           print Q<<"EOF" if $PPCODE;
      @@ -1080,16 +1232,24 @@ EOF
       
       	# do code
       	if (/^\s*NOT_IMPLEMENTED_YET/) {
      -		print "\n\tcroak(\"$pname: not implemented yet\");\n";
      +		print "\n\tPerl_croak(aTHX_ \"$pname: not implemented yet\");\n";
       		$_ = '' ;
       	} else {
       		if ($ret_type ne "void") {
      -			print "\t" . &map_type($ret_type) . "\tRETVAL;\n"
      +			print "\t" . &map_type($ret_type, 'RETVAL') . ";\n"
       				if !$retvaldone;
       			$args_match{"RETVAL"} = 0;
       			$var_types{"RETVAL"} = $ret_type;
      +			print "\tdXSTARG;\n"
      +				if $WantOptimize and $targetable{$type_kind{$ret_type}};
       		}
       
      +		if (@arg_with_types) {
      +		    unshift @line, @arg_with_types, $_;
      +		    $_ = "";
      +		    $processing_arg_with_types = 1;
      +		    INPUT_handler() ;
      +		}
       		print $deferred;
       
               process_keyword("INIT|ALIAS|PROTOTYPE|INTERFACE_MACRO|INTERFACE|C_ARGS") ;
      @@ -1131,19 +1291,55 @@ EOF
       	}
       
       	# do output variables
      -	$gotRETVAL = 0;
      -	undef $RETVAL_code ;
      +	$gotRETVAL = 0;		# 1 if RETVAL seen in OUTPUT section;
      +	undef $RETVAL_code ;	# code to set RETVAL (from OUTPUT section);
      +	# $wantRETVAL set if 'RETVAL =' autogenerated
      +	($wantRETVAL, $ret_type) = (0, 'void') if $RETVAL_no_return;
       	undef %outargs ;
      -        process_keyword("OUTPUT|ALIAS|PROTOTYPE"); 
      +	process_keyword("POSTCALL|OUTPUT|ALIAS|PROTOTYPE"); 
       
       	# all OUTPUT done, so now push the return value on the stack
       	if ($gotRETVAL && $RETVAL_code) {
       	    print "\t$RETVAL_code\n";
       	} elsif ($gotRETVAL || $wantRETVAL) {
      -	    # RETVAL almost never needs SvSETMAGIC()
      -	    &generate_output($ret_type, 0, 'RETVAL', 0);
      +	    my $t = $WantOptimize && $targetable{$type_kind{$ret_type}};
      +	    my $var = 'RETVAL';
      +	    my $type = $ret_type;
      +
      +	    # 0: type, 1: with_size, 2: how, 3: how_size
      +	    if ($t and not $t->[1] and $t->[0] eq 'p') {
      +		# PUSHp corresponds to setpvn.  Treate setpv directly
      +		my $what = eval qq("$t->[2]");
      +		warn $@ if $@;
      +
      +		print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
      +		$prepush_done = 1;
      +	    }
      +	    elsif ($t) {
      +		my $what = eval qq("$t->[2]");
      +		warn $@ if $@;
      +
      +		my $size = $t->[3];
      +		$size = '' unless defined $size;
      +		$size = eval qq("$size");
      +		warn $@ if $@;
      +		print "\tXSprePUSH; PUSH$t->[0]($what$size);\n";
      +		$prepush_done = 1;
      +	    }
      +	    else {
      +		# RETVAL almost never needs SvSETMAGIC()
      +		&generate_output($ret_type, 0, 'RETVAL', 0);
      +	    }
       	}
       
      +	$xsreturn = 1 if $ret_type ne "void";
      +	my $num = $xsreturn;
      +	my $c = @in_out;
      +	print "\tXSprePUSH;" if $c and not $prepush_done;
      +	print "\tEXTEND(SP,$c);\n" if $c;
      +	$xsreturn += $c;
      +	generate_output($var_types{$_}, $num++, $_, 0, 1) for @in_out;
      +
       	# do cleanup
       	process_keyword("CLEANUP|ALIAS|PROTOTYPE") ;
       
      @@ -1176,12 +1372,12 @@ EOF
       
           print Q<= $num) {\\n$expr;\\n\\t}\\n"/;
      +	    } else {
      +		$deferred .= eval qq/"\\n\\tif (items < $num)\\n\\t    $var = $defaults{$var};\\n\\telse {\\n$expr;\\n\\t}\\n"/;
      +	    }
       	    warn $@   if  $@;
           } elsif ($ScopeThisXSUB or $expr !~ /^\t\$var =/) {
      -	    eval qq/print "\\t$var;\\n"/;
      -	    warn $@   if  $@;
      +	    if ($name_printed) {
      +	      print ";\n";
      +	    } else {
      +	      eval qq/print "\\t$var;\\n"/;
      +	      warn $@   if  $@;
      +	    }
       	    $deferred .= eval qq/"\\n$expr;\\n"/;
       	    warn $@   if  $@;
           } else {
      +	    die "panic: do not know how to handle this branch for function pointers"
      +	      if $name_printed;
       	    eval qq/print "$expr;\\n"/;
       	    warn $@   if  $@;
           }
       }
       
       sub generate_output {
      -    local($type, $num, $var, $do_setmagic) = @_;
      +    local($type, $num, $var, $do_setmagic, $do_push) = @_;
           local($arg) = "ST(" . ($num - ($num != 0)) . ")";
           local($argoff) = $num - 1;
           local($ntype);
       
           $type = TidyType($type) ;
           if ($type =~ /^array\(([^,]*),(.*)\)/) {
      -	    print "\tsv_setpvn($arg, (char *)$var, $2 * sizeof($1)), XFree((char *)$var);\n";
      +	    print "\tsv_setpvn($arg, (char *)$var, $2 * sizeof($1));\n";
       	    print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
           } else {
       	    blurt("Error: '$type' not in typemap"), return
       		unless defined($type_kind{$type});
      -            blurt("Error: No OUTPUT definition for type '$type' found"), return
      +            blurt("Error: No OUTPUT definition for type '$type', typekind '$type_kind{$type}' found"), return
                       unless defined $output_expr{$type_kind{$type}} ;
       	    ($ntype = $type) =~ s/\s*\*/Ptr/g;
       	    $ntype =~ s/\(\)//g;
      @@ -1453,7 +1639,7 @@ sub generate_output {
       	    if ($expr =~ /DO_ARRAY_ELEM/) {
       	        blurt("Error: '$subtype' not in typemap"), return
       		    unless defined($type_kind{$subtype});
      -                blurt("Error: No OUTPUT definition for type '$subtype' found"), return
      +                blurt("Error: No OUTPUT definition for type '$subtype', typekind '$type_kind{$subtype}' found"), return
                           unless defined $output_expr{$type_kind{$subtype}} ;
       		$subexpr = $output_expr{$type_kind{$subtype}};
       		$subexpr =~ s/ntype/subtype/g;
      @@ -1471,8 +1657,8 @@ sub generate_output {
       		    # mortalize it.
       		    eval "print qq\a$expr\a";
       		    warn $@   if  $@;
      -		    print "\tsv_2mortal(ST(0));\n";
      -		    print "\tSvSETMAGIC(ST(0));\n" if $do_setmagic;
      +		    print "\tsv_2mortal(ST($num));\n";
      +		    print "\tSvSETMAGIC(ST($num));\n" if $do_setmagic;
       		}
       		elsif ($expr =~ /^\s*\$arg\s*=/) {
       		    # We expect that $arg has refcnt >=1, so we need
      @@ -1493,6 +1679,13 @@ sub generate_output {
       		    # new mortals don't have set magic
       		}
       	    }
      +	    elsif ($do_push) {
      +	        print "\tPUSHs(sv_newmortal());\n";
      +		$arg = "ST($num)";
      +		eval "print qq\a$expr\a";
      +		warn $@   if  $@;
      +		print "\tSvSETMAGIC($arg);\n" if $do_setmagic;
      +	    }
       	    elsif ($arg =~ /^ST\(\d+\)$/) {
       		eval "print qq\a$expr\a";
       		warn $@   if  $@;
      @@ -1502,10 +1695,17 @@ sub generate_output {
       }
       
       sub map_type {
      -    my($type) = @_;
      +    my($type, $varname) = @_;
       
           $type =~ tr/:/_/;
           $type =~ s/^array\(([^,]*),(.*)\).*/$1 */s;
      +    if ($varname) {
      +      if ($varname && $type =~ / \( \s* \* (?= \s* \) ) /xg) {
      +	(substr $type, pos $type, 0) = " $varname ";
      +      } else {
      +	$type .= "\t$varname";
      +      }
      +    }
           $type;
       }
       
      diff --git a/contrib/perl5/lib/Fatal.pm b/contrib/perl5/lib/Fatal.pm
      index d1d95af88485..1496117c8989 100644
      --- a/contrib/perl5/lib/Fatal.pm
      +++ b/contrib/perl5/lib/Fatal.pm
      @@ -1,8 +1,9 @@
       package Fatal;
       
      +use 5.005_64;
       use Carp;
       use strict;
      -use vars qw( $AUTOLOAD $Debug $VERSION);
      +our($AUTOLOAD, $Debug, $VERSION);
       
       $VERSION = 1.02;
       
      @@ -11,9 +12,15 @@ $Debug = 0 unless defined $Debug;
       sub import {
           my $self = shift(@_);
           my($sym, $pkg);
      +    my $void = 0;
           $pkg = (caller)[0];
           foreach $sym (@_) {
      -	&_make_fatal($sym, $pkg);
      +	if ($sym eq ":void") {
      +	    $void = 1;
      +	}
      +	else {
      +	    &_make_fatal($sym, $pkg, $void);
      +	}
           }
       };
       
      @@ -41,11 +48,11 @@ sub fill_protos {
       }
       
       sub write_invocation {
      -  my ($core, $call, $name, @argvs) = @_;
      +  my ($core, $call, $name, $void, @argvs) = @_;
         if (@argvs == 1) {		# No optional arguments
           my @argv = @{$argvs[0]};
           shift @argv;
      -    return "\t" . one_invocation($core, $call, $name, @argv) . ";\n";
      +    return "\t" . one_invocation($core, $call, $name, $void, @argv) . ";\n";
         } else {
           my $else = "\t";
           my (@out, @argv, $n);
      @@ -55,7 +62,7 @@ sub write_invocation {
             push @out, "$ {else}if (\@_ == $n) {\n";
             $else = "\t} els";
             push @out, 
      -          "\t\treturn " . one_invocation($core, $call, $name, @argv) . ";\n";
      +          "\t\treturn " . one_invocation($core, $call, $name, $void, @argv) . ";\n";
           }
           push @out, < provides a way to conveniently replace functions which normally
      -return a false value when they fail with equivalents which halt execution
      +return a false value when they fail with equivalents which raise exceptions
       if they are not successful.  This lets you use these functions without
      -having to test their return values explicitly on each call.   Errors are
      -reported via C, so you can trap them using C<$SIG{__DIE__}> if you
      -wish to take some action before the program exits.
      +having to test their return values explicitly on each call.  Exceptions
      +can be caught using C.  See L and L for details.
       
       The do-or-die equivalents are set up simply by calling Fatal's
       C routine, passing it the names of the functions to be
      @@ -150,6 +162,21 @@ replaced.  You may wrap both user-defined functions and overridable
       CORE operators (except C, C which cannot be expressed
       via prototypes) in this way.
       
      +If the symbol C<:void> appears in the import list, then functions
      +named later in that import list raise an exception only when
      +these are called in void context--that is, when their return
      +values are ignored.  For example
      +
      +	use Fatal qw/:void open close/;
      +
      +	# properly checked, so no exception raised on error
      +	if(open(FH, "< /bogotic") {
      +		warn "bogo file, dude: $!";
      +	}
      +
      +	# not checked, so error raises an exception
      +	close FH;
      +
       =head1 AUTHOR
       
       Lionel.Cons@cern.ch
      diff --git a/contrib/perl5/lib/File/Basename.pm b/contrib/perl5/lib/File/Basename.pm
      index 69bb1fa5fdcf..4581e7e93c26 100644
      --- a/contrib/perl5/lib/File/Basename.pm
      +++ b/contrib/perl5/lib/File/Basename.pm
      @@ -37,10 +37,10 @@ If the argument passed to it contains one of the substrings
       "VMS", "MSDOS", "MacOS", "AmigaOS" or "MSWin32", the file specification 
       syntax of that operating system is used in future calls to 
       fileparse(), basename(), and dirname().  If it contains none of
      -these substrings, UNIX syntax is used.  This pattern matching is
      +these substrings, Unix syntax is used.  This pattern matching is
       case-insensitive.  If you've selected VMS syntax, and the file
       specification you pass to one of these routines contains a "/",
      -they assume you are using UNIX emulation and apply the UNIX syntax
      +they assume you are using Unix emulation and apply the Unix syntax
       rules instead, for that function call only.
       
       If the argument passed to it contains one of the substrings "VMS",
      @@ -73,7 +73,7 @@ file as the input file specification.
       
       =head1 EXAMPLES
       
      -Using UNIX file syntax:
      +Using Unix file syntax:
       
           ($base,$path,$type) = fileparse('/virgil/aeneid/draft.book7',
       				    '\.book\d+');
      @@ -102,7 +102,7 @@ would yield
       The basename() routine returns the first element of the list produced
       by calling fileparse() with the same arguments, except that it always
       quotes metacharacters in the given suffixes.  It is provided for
      -programmer compatibility with the UNIX shell command basename(1).
      +programmer compatibility with the Unix shell command basename(1).
       
       =item C
       
      @@ -111,8 +111,8 @@ specification.  When using VMS or MacOS syntax, this is identical to the
       second element of the list produced by calling fileparse() with the same
       input file specification.  (Under VMS, if there is no directory information
       in the input file specification, then the current default device and
      -directory are returned.)  When using UNIX or MSDOS syntax, the return
      -value conforms to the behavior of the UNIX shell command dirname(1).  This
      +directory are returned.)  When using Unix or MSDOS syntax, the return
      +value conforms to the behavior of the Unix shell command dirname(1).  This
       is usually the same as the behavior of fileparse(), but differs in some
       cases.  For example, for the input file specification F, fileparse()
       considers the directory name to be F, while dirname() considers the
      @@ -124,12 +124,22 @@ directory name to be F<.>).
       
       
       ## use strict;
      -use re 'taint';
      +# A bit of juggling to insure that C always works, since
      +# File::Basename is used during the Perl build, when the re extension may
      +# not be available.
      +BEGIN {
      +  unless (eval { require re; })
      +    { eval ' sub re::import { $^H |= 0x00100000; } ' }
      +  import re 'taint';
      +}
       
      +
      +
      +use 5.005_64;
      +our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase);
       require Exporter;
       @ISA = qw(Exporter);
       @EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
      -use vars qw($VERSION $Fileparse_fstype $Fileparse_igncase);
       $VERSION = "2.6";
       
       
      @@ -162,23 +172,23 @@ sub fileparse {
         if ($fstype =~ /^VMS/i) {
           if ($fullname =~ m#/#) { $fstype = '' }  # We're doing Unix emulation
           else {
      -      ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/);
      +      ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s);
             $dirpath ||= '';  # should always be defined
           }
         }
         if ($fstype =~ /^MS(DOS|Win32)/i) {
      -    ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/);
      -    $dirpath .= '.\\' unless $dirpath =~ /[\\\/]$/;
      +    ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s);
      +    $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/;
         }
      -  elsif ($fstype =~ /^MacOS/i) {
      -    ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/);
      +  elsif ($fstype =~ /^MacOS/si) {
      +    ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s);
         }
         elsif ($fstype =~ /^AmigaOS/i) {
      -    ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/);
      +    ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s);
           $dirpath = './' unless $dirpath;
         }
         elsif ($fstype !~ /^VMS/i) {  # default to Unix
      -    ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#);
      +    ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s);
           if ($^O eq 'VMS' and $fullname =~ m:/[^/]+/000000/?:) {
             # dev:[000000] is top of VMS tree, similar to Unix '/'
             ($basename,$dirpath) = ('',$fullname);
      @@ -190,7 +200,7 @@ sub fileparse {
           $tail = '';
           foreach $suffix (@suffices) {
             my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$";
      -      if ($basename =~ s/$pat//) {
      +      if ($basename =~ s/$pat//s) {
               $taint .= substr($suffix,0,0);
               $tail = $1 . $tail;
             }
      @@ -228,30 +238,30 @@ sub dirname {
           }
           if ($fstype =~ /MacOS/i) { return $dirname }
           elsif ($fstype =~ /MSDOS/i) { 
      -        $dirname =~ s/([^:])[\\\/]*$/$1/;
      +        $dirname =~ s/([^:])[\\\/]*\z/$1/;
               unless( length($basename) ) {
       	    ($basename,$dirname) = fileparse $dirname;
      -	    $dirname =~ s/([^:])[\\\/]*$/$1/;
      +	    $dirname =~ s/([^:])[\\\/]*\z/$1/;
       	}
           }
           elsif ($fstype =~ /MSWin32/i) { 
      -        $dirname =~ s/([^:])[\\\/]*$/$1/;
      +        $dirname =~ s/([^:])[\\\/]*\z/$1/;
               unless( length($basename) ) {
       	    ($basename,$dirname) = fileparse $dirname;
      -	    $dirname =~ s/([^:])[\\\/]*$/$1/;
      +	    $dirname =~ s/([^:])[\\\/]*\z/$1/;
       	}
           }
           elsif ($fstype =~ /AmigaOS/i) {
      -        if ( $dirname =~ /:$/) { return $dirname }
      +        if ( $dirname =~ /:\z/) { return $dirname }
               chop $dirname;
      -        $dirname =~ s#[^:/]+$## unless length($basename);
      +        $dirname =~ s#[^:/]+\z## unless length($basename);
           }
           else { 
      -        $dirname =~ s:(.)/*$:$1:;
      +        $dirname =~ s:(.)/*\z:$1:s;
               unless( length($basename) ) {
       	    local($File::Basename::Fileparse_fstype) = $fstype;
       	    ($basename,$dirname) = fileparse $dirname;
      -	    $dirname =~ s:(.)/*$:$1:;
      +	    $dirname =~ s:(.)/*\z:$1:s;
       	}
           }
       
      diff --git a/contrib/perl5/lib/File/CheckTree.pm b/contrib/perl5/lib/File/CheckTree.pm
      index dca7f6aff31a..ae1877741bc9 100644
      --- a/contrib/perl5/lib/File/CheckTree.pm
      +++ b/contrib/perl5/lib/File/CheckTree.pm
      @@ -105,7 +105,7 @@ sub validate {
       
       sub valmess {
           local($disposition,$this) = @_;
      -    $file = $cwd . '/' . $file unless $file =~ m|^/|;
      +    $file = $cwd . '/' . $file unless $file =~ m|^/|s;
           if ($this =~ /^(!?)-(\w)\s+\$file\s*$/) {
       	$neg = $1;
       	$tmp = $2;
      diff --git a/contrib/perl5/lib/File/Compare.pm b/contrib/perl5/lib/File/Compare.pm
      index 2f9c45c4c60d..667e7cb88312 100644
      --- a/contrib/perl5/lib/File/Compare.pm
      +++ b/contrib/perl5/lib/File/Compare.pm
      @@ -1,15 +1,16 @@
       package File::Compare;
       
      +use 5.005_64;
       use strict;
      -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $Too_Big *FROM *TO);
      +our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big);
       
       require Exporter;
       use Carp;
       
      -$VERSION = '1.1001';
      +$VERSION = '1.1002';
       @ISA = qw(Exporter);
       @EXPORT = qw(compare);
      -@EXPORT_OK = qw(cmp);
      +@EXPORT_OK = qw(cmp compare_text);
       
       $Too_Big = 1024 * 1024 * 2;
       
      @@ -22,13 +23,11 @@ sub compare {
           croak("Usage: compare( file1, file2 [, buffersize]) ")
             unless(@_ == 2 || @_ == 3);
       
      -    my $from = shift;
      -    my $to = shift;
      -    my $closefrom=0;
      -    my $closeto=0;
      -    my ($size, $fromsize, $status, $fr, $tr, $fbuf, $tbuf);
      -    local(*FROM, *TO);
      -    local($\) = '';
      +    my ($from,$to,$size) = @_;
      +    my $text_mode = defined($size) && (ref($size) eq 'CODE' || $size < 0);
      +
      +    my ($fromsize,$closefrom,$closeto);
      +    local (*FROM, *TO);
       
           croak("from undefined") unless (defined $from);
           croak("to undefined") unless (defined $to);
      @@ -40,9 +39,11 @@ sub compare {
       	*FROM = $from;
           } else {
       	open(FROM,"<$from") or goto fail_open1;
      -	binmode FROM;
      +	unless ($text_mode) {
      +	    binmode FROM;
      +	    $fromsize = -s FROM;
      +	}
       	$closefrom = 1;
      -	$fromsize = -s FROM;
           }
       
           if (ref($to) &&
      @@ -52,32 +53,45 @@ sub compare {
       	*TO = $to;
           } else {
       	open(TO,"<$to") or goto fail_open2;
      -	binmode TO;
      +	binmode TO unless $text_mode;
       	$closeto = 1;
           }
       
      -    if ($closefrom && $closeto) {
      +    if (!$text_mode && $closefrom && $closeto) {
       	# If both are opened files we know they differ if their size differ
       	goto fail_inner if $fromsize != -s TO;
           }
       
      -    if (@_) {
      -	$size = shift(@_) + 0;
      -	croak("Bad buffer size for compare: $size\n") unless ($size > 0);
      -    } else {
      -	$size = $fromsize;
      -	$size = 1024 if ($size < 512);
      -	$size = $Too_Big if ($size > $Too_Big);
      -    }
      -
      -    $fbuf = '';
      -    $tbuf = '';
      -    while(defined($fr = read(FROM,$fbuf,$size)) && $fr > 0) {
      -	unless (defined($tr = read(TO,$tbuf,$fr)) and $tbuf eq $fbuf) {
      -            goto fail_inner;
      +    if ($text_mode) {
      +	local $/ = "\n";
      +	my ($fline,$tline);
      +	while (defined($fline = )) {
      +	    goto fail_inner unless defined($tline = );
      +	    if (ref $size) {
      +		# $size contains ref to comparison function
      +		goto fail_inner if &$size($fline, $tline);
      +	    } else {
      +		goto fail_inner if $fline ne $tline;
      +	    }
       	}
      +	goto fail_inner if defined($tline = );
      +    }
      +    else {
      +	unless (defined($size) && $size > 0) {
      +	    $size = $fromsize || -s TO || 0;
      +	    $size = 1024 if $size < 512;
      +	    $size = $Too_Big if $size > $Too_Big;
      +	}
      +
      +	my ($fr,$tr,$fbuf,$tbuf);
      +	$fbuf = $tbuf = '';
      +	while(defined($fr = read(FROM,$fbuf,$size)) && $fr > 0) {
      +	    unless (defined($tr = read(TO,$tbuf,$fr)) && $tbuf eq $fbuf) {
      +		goto fail_inner;
      +	    }
      +	}
      +	goto fail_inner if defined($tr = read(TO,$tbuf,$size)) && $tr > 0;
           }
      -    goto fail_inner if (defined($tr = read(TO,$tbuf,$size)) && $tr > 0);
       
           close(TO) || goto fail_open2 if $closeto;
           close(FROM) || goto fail_open1 if $closefrom;
      @@ -93,7 +107,7 @@ sub compare {
       
         fail_open2:
           if ($closefrom) {
      -	$status = $!;
      +	my $status = $!;
       	$! = 0;
       	close FROM;
       	$! = $status unless $!;
      @@ -102,8 +116,21 @@ sub compare {
           return -1;
       }
       
      +sub cmp;
       *cmp = \&compare;
       
      +sub compare_text {
      +    my ($from,$to,$cmp) = @_;
      +    croak("Usage: compare_text( file1, file2 [, cmp-function])")
      +	unless @_ == 2 || @_ == 3;
      +    croak("Third arg to compare_text() function must be a code reference")
      +	if @_ == 3 && ref($cmp) ne 'CODE';
      +
      +    # Using a negative buffer size puts compare into text_mode too
      +    $cmp = -1 unless defined $cmp;
      +    compare($from, $to, $cmp);
      +}
      +
       1;
       
       __END__
      @@ -129,6 +156,18 @@ from File::Compare by default.
       File::Compare::cmp is a synonym for File::Compare::compare.  It is
       exported from File::Compare only by request.
       
      +File::Compare::compare_text does a line by line comparison of the two
      +files. It stops as soon as a difference is detected. compare_text()
      +accepts an optional third argument: This must be a CODE reference to
      +a line comparison function, which returns 0 when both lines are considered
      +equal. For example:
      +
      +    compare_text($file1, $file2)
      +
      +is basically equivalent to
      +
      +    compare_text($file1, $file2, sub {$_[0] ne $_[1]} )
      +
       =head1 RETURN
       
       File::Compare::compare return 0 if the files are equal, 1 if the
      diff --git a/contrib/perl5/lib/File/Copy.pm b/contrib/perl5/lib/File/Copy.pm
      index e1da6b6e59c0..e6cf78603423 100644
      --- a/contrib/perl5/lib/File/Copy.pm
      +++ b/contrib/perl5/lib/File/Copy.pm
      @@ -7,17 +7,21 @@
       
       package File::Copy;
       
      +use 5.005_64;
       use strict;
       use Carp;
      -use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION $Too_Big
      -	    © &syscopy &cp &mv);
      +our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy);
      +sub copy;
      +sub syscopy;
      +sub cp;
      +sub mv;
       
       # Note that this module implements only *part* of the API defined by
       # the File/Copy.pm module of the File-Tools-2.0 package.  However, that
       # package has not yet been updated to work with Perl 5.004, and so it
       # would be a Bad Thing for the CPAN module to grab it and replace this
       # module.  Therefore, we set this module's version higher than 2.0.
      -$VERSION = '2.02';
      +$VERSION = '2.03';
       
       require Exporter;
       @ISA = qw(Exporter);
      @@ -60,11 +64,12 @@ sub copy {
       	$to = _catname($from, $to);
           }
       
      -    if (defined &syscopy && \&syscopy != \©
      +    if (defined &syscopy && !$Syscopy_is_copy
       	&& !$to_a_handle
       	&& !($from_a_handle && $^O eq 'os2' )	# OS/2 cannot handle handles
       	&& !($from_a_handle && $^O eq 'mpeix')	# and neither can MPE/iX.
      -       )	
      +	&& !($from_a_handle && $^O eq 'MSWin32')
      +       )
           {
       	return syscopy($from, $to);
           }
      @@ -78,20 +83,20 @@ sub copy {
           if ($from_a_handle) {
       	*FROM = *$from{FILEHANDLE};
           } else {
      -	$from = "./$from" if $from =~ /^\s/;
      +	$from = "./$from" if $from =~ /^\s/s;
       	open(FROM, "< $from\0") or goto fail_open1;
       	binmode FROM or die "($!,$^E)";
       	$closefrom = 1;
      -    } 
      - 
      +    }
      +
           if ($to_a_handle) {
       	*TO = *$to{FILEHANDLE};
      -    } else {        
      -	$to = "./$to" if $to =~ /^\s/;
      +    } else {
      +	$to = "./$to" if $to =~ /^\s/s;
       	open(TO,"> $to\0") or goto fail_open2;
       	binmode TO or die "($!,$^E)";
       	$closeto = 1;
      -    }  
      +    }
       
           if (@_) {
       	$size = shift(@_) + 0;
      @@ -119,7 +124,7 @@ sub copy {
       
           # Use this idiom to avoid uninitialized value warning.
           return 1;
      -    
      +
           # All of these contortions try to preserve error messages...
         fail_inner:
           if ($closeto) {
      @@ -162,10 +167,10 @@ sub move {
                       (($tosz2,$tomt2) = (stat($to))[7,9]) &&    # $to's there
                       ($tosz1 != $tosz2 or $tomt1 != $tomt2) &&  #   and changed
                       $tosz2 == $fromsz;                         # it's all there
      - 
      +
           ($tosz1,$tomt1) = (stat($to))[7,9];  # just in case rename did something
           return 1 if ($copied = copy($from,$to)) && unlink($from);
      -  
      +
           ($tosz2,$tomt2) = ((stat($to))[7,9],0,0) if defined $tomt1;
           unlink($to) if !defined($tomt1) or $tomt1 != $tomt2 or $tosz1 != $tosz2;
           ($!,$^E) = ($sts,$ossts);
      @@ -186,7 +191,13 @@ unless (defined &syscopy) {
       	    # preserve MPE file attributes.
       	    return system('/bin/cp', '-f', $_[0], $_[1]) == 0;
       	};
      +    } elsif ($^O eq 'MSWin32') {
      +	*syscopy = sub {
      +	    return 0 unless @_ == 2;
      +	    return Win32::CopyFile(@_, 1);
      +	};
           } else {
      +	$Syscopy_is_copy = 1;
       	*syscopy = \©
           }
       }
      @@ -272,9 +283,9 @@ second parameter, preserving OS-specific attributes and file
       structure.  For Unix systems, this is equivalent to the simple
       C routine.  For VMS systems, this calls the C
       routine (see below).  For OS/2 systems, this calls the C
      -XSUB directly.
      +XSUB directly. For Win32 systems, this calls C.
       
      -=head2 Special behaviour if C is defined (VMS and OS/2)
      +=head2 Special behaviour if C is defined (OS/2, VMS and Win32)
       
       If both arguments to C are not file handles,
       then C will perform a "system copy" of
      diff --git a/contrib/perl5/lib/File/DosGlob.pm b/contrib/perl5/lib/File/DosGlob.pm
      index 594ee2ec8432..d7dea7b46cf3 100644
      --- a/contrib/perl5/lib/File/DosGlob.pm
      +++ b/contrib/perl5/lib/File/DosGlob.pm
      @@ -19,13 +19,18 @@ sub doglob {
       	my $sepchr = '/';
       	next OUTER unless defined $_ and $_ ne '';
       	# if arg is within quotes strip em and do no globbing
      -	if (/^"(.*)"$/) {
      +	if (/^"(.*)"\z/s) {
       	    $_ = $1;
       	    if ($cond eq 'd') { push(@retval, $_) if -d $_ }
       	    else              { push(@retval, $_) if -e $_ }
       	    next OUTER;
       	}
      -	if (m|^(.*)([\\/])([^\\/]*)$|) {
      +	# wildcards with a drive prefix such as h:*.pm must be changed
      +	# to h:./*.pm to expand correctly
      +	if (m|^([A-Za-z]:)[^/\\]|s) {
      +	    substr($_,0,2) = $1 . "./";
      +	}
      +	if (m|^(.*)([\\/])([^\\/]*)\z|s) {
       	    my $tail;
       	    ($head, $sepchr, $tail) = ($1,$2,$3);
       	    #print "div: |$head|$sepchr|$tail|\n";
      @@ -35,7 +40,7 @@ sub doglob {
       		push(@retval, doglob($cond, map {"$_$sepchr$tail"} @globdirs)),
       		    next OUTER if @globdirs;
       	    }
      -	    $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:$/;
      +	    $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:\z/s;
       	    $_ = $tail;
       	}
       	#
      @@ -61,7 +66,7 @@ sub doglob {
       	s/\?/.?/g;
       
       	#print "regex: '$_', head: '$head'\n";
      -	my $matchsub = eval 'sub { $_[0] =~ m|^' . $_ . '$|io }';
      +	my $matchsub = eval 'sub { $_[0] =~ m|^' . $_ . '\\z|ios }';
       	warn($@), next OUTER if $@;
             INNER:
       	for my $e (@leaves) {
      @@ -142,7 +147,7 @@ sub import {
           my $pkg = shift;
           return unless @_;
           my $sym = shift;
      -    my $callpkg = ($sym =~ s/^GLOBAL_// ? 'CORE::GLOBAL' : caller(0));
      +    my $callpkg = ($sym =~ s/^GLOBAL_//s ? 'CORE::GLOBAL' : caller(0));
           *{$callpkg.'::'.$sym} = \&{$pkg.'::'.$sym} if $sym eq 'glob';
       }
       
      @@ -157,16 +162,16 @@ File::DosGlob - DOS like globbing and then some
       =head1 SYNOPSIS
       
           require 5.004;
      -    
      +
           # override CORE::glob in current package
           use File::DosGlob 'glob';
      -    
      +
           # override CORE::glob in ALL packages (use with extreme caution!)
           use File::DosGlob 'GLOBAL_glob';
       
           @perlfiles = glob  "..\\pe?l/*.p?";
           print <..\\pe?l/*.p?>;
      -    
      +
           # from the command line (overrides only in main::)
           > perl -MFile::DosGlob=glob -e "print <../pe*/*p?>"
       
      @@ -206,7 +211,7 @@ pandering to DOS habits.  Needs a dose of optimizium too.
       
       =head1 AUTHOR
       
      -Gurusamy Sarathy 
      +Gurusamy Sarathy 
       
       =head1 HISTORY
       
      diff --git a/contrib/perl5/lib/File/Find.pm b/contrib/perl5/lib/File/Find.pm
      index 7e670032a30a..ac73f1b5eb24 100644
      --- a/contrib/perl5/lib/File/Find.pm
      +++ b/contrib/perl5/lib/File/Find.pm
      @@ -1,5 +1,5 @@
       package File::Find;
      -require 5.000;
      +use 5.005_64;
       require Exporter;
       require Cwd;
       
      @@ -12,70 +12,163 @@ finddepth - traverse a directory structure depth-first
       =head1 SYNOPSIS
       
           use File::Find;
      -    find(\&wanted, '/foo','/bar');
      +    find(\&wanted, '/foo', '/bar');
           sub wanted { ... }
       
           use File::Find;
      -    finddepth(\&wanted, '/foo','/bar');
      +    finddepth(\&wanted, '/foo', '/bar');
           sub wanted { ... }
       
      +    use File::Find;
      +    find({ wanted => \&process, follow => 1 }, '.');
      +
       =head1 DESCRIPTION
       
       The first argument to find() is either a hash reference describing the
      -operations to be performed for each file, a code reference, or a string
      -that contains a subroutine name.  If it is a hash reference, then the
      -value for the key C should be a code reference.  This code
      -reference is called I below.
      +operations to be performed for each file, or a code reference.
       
      -Currently the only other supported key for the above hash is
      -C, in presense of which the walk over directories is
      -performed depth-first.  Entry point finddepth() is a shortcut for
      -specifying C<{ bydepth => 1}> in the first argument of find().
      +Here are the possible keys for the hash:
      +
      +=over 3
      +
      +=item C
      +
      +The value should be a code reference.  This code reference is called
      +I below.
      +
      +=item C
      +
      +Reports the name of a directory only AFTER all its entries
      +have been reported.  Entry point finddepth() is a shortcut for
      +specifying C<{ bydepth => 1 }> in the first argument of find().
      +
      +=item C
      +
      +Causes symbolic links to be followed. Since directory trees with symbolic
      +links (followed) may contain files more than once and may even have
      +cycles, a hash has to be built up with an entry for each file.
      +This might be expensive both in space and time for a large
      +directory tree. See I and I below.
      +If either I or I is in effect:
      +
      +=over 6
      +
      +=item *
      +
      +It is guarantueed that an I has been called before the user's
      +I function is called. This enables fast file checks involving S< _>.
      +
      +=item *
      +
      +There is a variable C<$File::Find::fullname> which holds the absolute
      +pathname of the file with all symbolic links resolved
      +
      +=back
      +
      +=item C
      +
      +This is similar to I except that it may report some files
      +more than once. It does detect cycles however.
      +Since only symbolic links have to be hashed, this is
      +much cheaper both in space and time.
      +If processing a file more than once (by the user's I function)
      +is worse than just taking time, the option I should be used.
      +
      +=item C
      +
      +C, which is the default, causes all files which are
      +neither directories nor symbolic links to be ignored if they are about
      +to be processed a second time. If a directory or a symbolic link 
      +are about to be processed a second time, File::Find dies.
      +C causes File::Find to die if any file is about to be
      +processed a second time.
      +C causes File::Find to ignore any duplicate files and
      +dirctories but to proceed normally otherwise.
      +
      +
      +=item C
      +
      +Does not C to each directory as it recurses. The wanted()
      +function will need to be aware of this, of course. In this case,
      +C<$_> will be the same as C<$File::Find::name>.
      +
      +=item C
      +
      +If find is used in taint-mode (-T command line switch or if EUID != UID
      +or if EGID != GID) then internally directory names have to be untainted
      +before they can be cd'ed to. Therefore they are checked against a regular
      +expression I. Note, that all names passed to the
      +user's I function are still tainted. 
      +
      +=item C
      +
      +See above. This should be set using the C quoting operator.
      +The default is set to  C. 
      +Note that the paranthesis which are vital.
      +
      +=item C
      +
      +If set, directories (subtrees) which fail the I
      +are skipped. The default is to 'die' in such a case.
      +
      +=back
       
       The wanted() function does whatever verifications you want.
      -$File::Find::dir contains the current directory name, and $_ the
      -current filename within that directory.  $File::Find::name contains
      -C<"$File::Find::dir/$_">.  You are chdir()'d to $File::Find::dir when
      -the function is called.  The function may set $File::Find::prune to
      -prune the tree.
      -
      -File::Find assumes that you don't alter the $_ variable.  If you do then
      -make sure you return it to its original value before exiting your function.
      +C<$File::Find::dir> contains the current directory name, and C<$_> the
      +current filename within that directory.  C<$File::Find::name> contains
      +the complete pathname to the file. You are chdir()'d to C<$File::Find::dir> when
      +the function is called, unless C was specified.
      +When  or  are in effect there is also a
      +C<$File::Find::fullname>.
      +The function may set C<$File::Find::prune> to prune the tree
      +unless C was specified.
      +Unless C or C is specified, for compatibility
      +reasons (find.pl, find2perl) there are in addition the following globals
      +available: C<$File::Find::topdir>, C<$File::Find::topdev>, C<$File::Find::topino>,
      +C<$File::Find::topmode> and C<$File::Find::topnlink>.
       
       This library is useful for the C tool, which when fed,
       
           find2perl / -name .nfs\* -mtime +7 \
      -	-exec rm -f {} \; -o -fstype nfs -prune
      +        -exec rm -f {} \; -o -fstype nfs -prune
       
       produces something like:
       
           sub wanted {
      -        /^\.nfs.*$/ &&
      -        (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
      +        /^\.nfs.*\z/s &&
      +        (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) &&
               int(-M _) > 7 &&
               unlink($_)
               ||
      -        ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
      +        ($nlink || (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_))) &&
               $dev < 0 &&
               ($File::Find::prune = 1);
           }
       
      -Set the variable $File::Find::dont_use_nlink if you're using AFS,
      +Set the variable C<$File::Find::dont_use_nlink> if you're using AFS,
       since AFS cheats.
       
      -C is just like C, except that it does a depth-first
      -search.
       
       Here's another interesting wanted function.  It will find all symlinks
       that don't resolve:
       
           sub wanted {
      -	-l && !-e && print "bogus link: $File::Find::name\n";
      +         -l && !-e && print "bogus link: $File::Find::name\n";
           }
       
      -=head1 BUGS
      +See also the script C on CPAN for a nice application of this
      +module.
      +
      +=head1 CAVEAT
      +
      +Be aware that the option to follow symblic links can be dangerous.
      +Depending on the structure of the directory tree (including symbolic
      +links to directories) you might traverse a given (physical) directory
      +more than once (only if C is in effect). 
      +Furthermore, deleting or changing files in a symbolically linked directory
      +might cause very unpleasant surprises, since you delete or change files
      +in an unknown directory.
       
      -There is no way to make find or finddepth follow symlinks.
       
       =cut
       
      @@ -83,150 +176,560 @@ There is no way to make find or finddepth follow symlinks.
       @EXPORT = qw(find finddepth);
       
       
      -sub find_opt {
      -    my $wanted = shift;
      -    my $bydepth = $wanted->{bydepth};
      -    my $cwd = $bydepth ? Cwd::fastcwd() : Cwd::cwd();
      -    # Localize these rather than lexicalizing them for backwards
      -    # compatibility.
      -    local($topdir,$topdev,$topino,$topmode,$topnlink);
      -    foreach $topdir (@_) {
      -	(($topdev,$topino,$topmode,$topnlink) =
      -	  ($Is_VMS ? stat($topdir) : lstat($topdir)))
      -	  || (warn("Can't stat $topdir: $!\n"), next);
      -	if (-d _) {
      -	    if (chdir($topdir)) {
      -		$prune = 0;
      -		unless ($bydepth) {
      -		  ($dir,$_) = ($topdir,'.');
      -		  $name = $topdir;
      -		  $wanted->{wanted}->();
      -		}
      -		next if $prune;
      -		my $fixtopdir = $topdir;
      -		$fixtopdir =~ s,/$,, ;
      -		$fixtopdir =~ s/\.dir$// if $Is_VMS;
      -		&finddir($wanted,$fixtopdir,$topnlink, $bydepth);
      -		if ($bydepth) {
      -		  ($dir,$_) = ($fixtopdir,'.');
      -		  $name = $fixtopdir;
      -		  $wanted->{wanted}->();
      -		}
      +use strict;
      +my $Is_VMS;
      +
      +require File::Basename;
      +
      +my %SLnkSeen;
      +my ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
      +    $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat);
      +
      +sub contract_name {
      +    my ($cdir,$fn) = @_;
      +
      +    return substr($cdir,0,rindex($cdir,'/')) if $fn eq '.';
      +
      +    $cdir = substr($cdir,0,rindex($cdir,'/')+1);
      +
      +    $fn =~ s|^\./||;
      +
      +    my $abs_name= $cdir . $fn;
      +
      +    if (substr($fn,0,3) eq '../') {
      +	do 1 while ($abs_name=~ s|/(?>[^/]+)/\.\./|/|);
      +    }
      +
      +    return $abs_name;
      +}
      +
      +
      +sub PathCombine($$) {
      +    my ($Base,$Name) = @_;
      +    my $AbsName;
      +
      +    if (substr($Name,0,1) eq '/') {
      +	$AbsName= $Name;
      +    }
      +    else {
      +	$AbsName= contract_name($Base,$Name);
      +    }
      +
      +    # (simple) check for recursion
      +    my $newlen= length($AbsName);
      +    if ($newlen <= length($Base)) {
      +	if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/')
      +	    && $AbsName eq substr($Base,0,$newlen))
      +	{
      +	    return undef;
      +	}
      +    }
      +    return $AbsName;
      +}
      +
      +sub Follow_SymLink($) {
      +    my ($AbsName) = @_;
      +
      +    my ($NewName,$DEV, $INO);
      +    ($DEV, $INO)= lstat $AbsName;
      +
      +    while (-l _) {
      +	if ($SLnkSeen{$DEV, $INO}++) {
      +	    if ($follow_skip < 2) {
      +		die "$AbsName is encountered a second time";
       	    }
       	    else {
      -		warn "Can't cd to $topdir: $!\n";
      +		return undef;
      +	    }
      +	}
      +	$NewName= PathCombine($AbsName, readlink($AbsName));
      +	unless(defined $NewName) {
      +	    if ($follow_skip < 2) {
      +		die "$AbsName is a recursive symbolic link";
      +	    }
      +	    else {
      +		return undef;
       	    }
       	}
       	else {
      -	    require File::Basename;
      -	    unless (($_,$dir) = File::Basename::fileparse($topdir)) {
      -		($dir,$_) = ('.', $topdir);
      -	    }
      -	    if (chdir($dir)) {
      -		$name = $topdir;
      -		$wanted->{wanted}->();
      -	    }
      -	    else {
      -		warn "Can't cd to $dir: $!\n";
      -	    }
      +	    $AbsName= $NewName;
       	}
      -	chdir $cwd;
      +	($DEV, $INO) = lstat($AbsName);
      +	return undef unless defined $DEV;  #  dangling symbolic link
      +    }
      +
      +    if ($full_check && $SLnkSeen{$DEV, $INO}++) {
      +	if ($follow_skip < 1) {
      +	    die "$AbsName encountered a second time";
      +	}
      +	else {
      +	    return undef;
      +	}
      +    }
      +
      +    return $AbsName;
      +}
      +
      +our($dir, $name, $fullname, $prune);
      +sub _find_dir_symlnk($$$);
      +sub _find_dir($$$);
      +
      +sub _find_opt {
      +    my $wanted = shift;
      +    die "invalid top directory" unless defined $_[0];
      +
      +    my $cwd           = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::cwd();
      +    my $cwd_untainted = $cwd;
      +    $wanted_callback  = $wanted->{wanted};
      +    $bydepth          = $wanted->{bydepth};
      +    $no_chdir         = $wanted->{no_chdir};
      +    $full_check       = $wanted->{follow};
      +    $follow           = $full_check || $wanted->{follow_fast};
      +    $follow_skip      = $wanted->{follow_skip};
      +    $untaint          = $wanted->{untaint};
      +    $untaint_pat      = $wanted->{untaint_pattern};
      +    $untaint_skip     = $wanted->{untaint_skip};
      +
      +    # for compatability reasons (find.pl, find2perl)
      +    our ($topdir, $topdev, $topino, $topmode, $topnlink);
      +
      +    # a symbolic link to a directory doesn't increase the link count
      +    $avoid_nlink      = $follow || $File::Find::dont_use_nlink;
      +    
      +    if ( $untaint ) {
      +	$cwd_untainted= $1 if $cwd_untainted =~ m|$untaint_pat|;
      +	die "insecure cwd in find(depth)"  unless defined($cwd_untainted);
      +    }
      +    
      +    my ($abs_dir, $Is_Dir);
      +
      +    Proc_Top_Item:
      +    foreach my $TOP (@_) {
      +        my $top_item = $TOP;
      +        $top_item =~ s|/\z|| unless $top_item eq '/';
      +        $Is_Dir= 0;
      +        
      +        ($topdev,$topino,$topmode,$topnlink) = stat $top_item;
      +
      +        if ($follow) {
      +            if (substr($top_item,0,1) eq '/') {
      +                $abs_dir = $top_item;
      +            }
      +	    elsif ($top_item eq '.') {
      +		$abs_dir = $cwd;
      +	    }
      +            else {  # care about any  ../
      +		$abs_dir = contract_name("$cwd/",$top_item); 
      +            }
      +            $abs_dir= Follow_SymLink($abs_dir);
      +            unless (defined $abs_dir) {
      +		warn "$top_item is a dangling symbolic link\n";
      +		next Proc_Top_Item;
      +            }
      +            if (-d _) {
      +		_find_dir_symlnk($wanted, $abs_dir, $top_item);
      +		$Is_Dir= 1;
      +            }
      +        }
      +	else { # no follow
      +            $topdir = $top_item;
      +            unless (defined $topnlink) {
      +                warn "Can't stat $top_item: $!\n";
      +                next Proc_Top_Item;
      +            }
      +            if (-d _) {
      +		$top_item =~ s/\.dir\z// if $Is_VMS;
      +		_find_dir($wanted, $top_item, $topnlink);
      +		$Is_Dir= 1;
      +            }
      +	    else {
      +		$abs_dir= $top_item;
      +            }
      +        }
      +
      +        unless ($Is_Dir) {
      +	    unless (($_,$dir) = File::Basename::fileparse($abs_dir)) {
      +		($dir,$_) = ('./', $top_item);
      +	    }
      +
      +            $abs_dir = $dir;
      +            if ($untaint) {
      +		my $abs_dir_save = $abs_dir;
      +		$abs_dir = $1 if $abs_dir =~ m|$untaint_pat|;
      +		unless (defined $abs_dir) {
      +		    if ($untaint_skip == 0) {
      +			die "directory $abs_dir_save is still tainted";
      +		    }
      +		    else {
      +			next Proc_Top_Item;
      +		    }
      +		}
      +            }
      +
      +            unless ($no_chdir or chdir $abs_dir) {
      +                warn "Couldn't chdir $abs_dir: $!\n";
      +                next Proc_Top_Item;
      +            }
      +
      +            $name = $abs_dir . $_;
      +
      +            &$wanted_callback;
      +
      +        }
      +
      +        $no_chdir or chdir $cwd_untainted;
           }
       }
       
      -sub finddir {
      -    my($wanted, $nlink, $bydepth);
      -    local($dir, $name);
      -    ($wanted, $dir, $nlink, $bydepth) = @_;
      +# API:
      +#  $wanted
      +#  $p_dir :  "parent directory"
      +#  $nlink :  what came back from the stat
      +# preconditions:
      +#  chdir (if not no_chdir) to dir
       
      -    my($dev, $ino, $mode, $subcount);
      +sub _find_dir($$$) {
      +    my ($wanted, $p_dir, $nlink) = @_;
      +    my ($CdLvl,$Level) = (0,0);
      +    my @Stack;
      +    my @filenames;
      +    my ($subcount,$sub_nlink);
      +    my $SE= [];
      +    my $dir_name= $p_dir;
      +    my $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" );
      +    my $dir_rel= '.';      # directory name relative to current directory
       
      -    # Get the list of files in the current directory.
      -    opendir(DIR,'.') || (warn("Can't open $dir: $!\n"), $bydepth || return);
      -    my(@filenames) = readdir(DIR);
      -    closedir(DIR);
      -
      -    if ($nlink == 2 && !$dont_use_nlink) {  # This dir has no subdirectories.
      -	for (@filenames) {
      -	    next if $_ eq '.';
      -	    next if $_ eq '..';
      -	    $name = "$dir/$_";
      -	    $nlink = 0;
      -	    $wanted->{wanted}->();
      +    local ($dir, $name, $prune, *DIR);
      +     
      +    unless ($no_chdir or $p_dir eq '.') {
      +	my $udir = $p_dir;
      +	if ($untaint) {
      +	    $udir = $1 if $p_dir =~ m|$untaint_pat|;
      +	    unless (defined $udir) {
      +		if ($untaint_skip == 0) {
      +		    die "directory $p_dir is still tainted";
      +		}
      +		else {
      +		    return;
      +		}
      +	    }
      +	}
      +	unless (chdir $udir) {
      +	    warn "Can't cd to $udir: $!\n";
      +	    return;
       	}
           }
      -    else {		      # This dir has subdirectories.
      -	$subcount = $nlink - 2;
      -	for (@filenames) {
      -	    next if $_ eq '.';
      -	    next if $_ eq '..';
      -	    $nlink = 0;
      -	    $prune = 0 unless $bydepth;
      -	    $name = "$dir/$_";
      -	    $wanted->{wanted}->() unless $bydepth;
      -	    if ($subcount > 0 || $dont_use_nlink) {    # Seen all the subdirs?
      +    
      +    push @Stack,[$CdLvl,$p_dir,$dir_rel,-1]  if  $bydepth;
       
      -		# Get link count and check for directoriness.
      -
      -		($dev,$ino,$mode,$nlink) = ($Is_VMS ? stat($_) : lstat($_));
      -		    # unless ($nlink || $dont_use_nlink);
      -
      -		if (-d _) {
      -
      -		    # It really is a directory, so do it recursively.
      -
      -		    --$subcount;
      -		    next if $prune;
      -		    # Untaint $_, so that we can do a chdir
      -		    $_ = $1 if /^(.*)/;
      -		    if (chdir $_) {
      -			$name =~ s/\.dir$// if $Is_VMS;
      -			&finddir($wanted,$name,$nlink, $bydepth);
      -			chdir '..';
      -		    }
      -		    else {
      -			warn "Can't cd to $_: $!\n";
      +    while (defined $SE) {
      +	unless ($bydepth) {
      +            $dir= $p_dir;
      +            $name= $dir_name;
      +            $_= ($no_chdir ? $dir_name : $dir_rel );
      +	    # prune may happen here
      +            $prune= 0;
      +            &$wanted_callback; 
      +            next if $prune;
      +	}
      +      
      +	# change to that directory
      +	unless ($no_chdir or $dir_rel eq '.') {
      +	    my $udir= $dir_rel;
      +	    if ($untaint) {
      +		$udir = $1 if $dir_rel =~ m|$untaint_pat|;
      +		unless (defined $udir) {
      +		    if ($untaint_skip == 0) {
      +			die "directory ("
      +			    . ($p_dir ne '/' ? $p_dir : '')
      +			    . "/) $dir_rel is still tainted";
       		    }
       		}
       	    }
      -	    $wanted->{wanted}->() if $bydepth;
      +	    unless (chdir $udir) {
      +		warn "Can't cd to ("
      +		    . ($p_dir ne '/' ? $p_dir : '')
      +		    . "/) $udir : $!\n";
      +		next;
      +	    }
      +	    $CdLvl++;
      +	}
      +
      +	$dir= $dir_name;
      +
      +	# Get the list of files in the current directory.
      +	unless (opendir DIR, ($no_chdir ? $dir_name : '.')) {
      +	    warn "Can't opendir($dir_name): $!\n";
      +	    next;
      +	}
      +	@filenames = readdir DIR;
      +	closedir(DIR);
      +
      +	if ($nlink == 2 && !$avoid_nlink) {
      +	    # This dir has no subdirectories.
      +	    for my $FN (@filenames) {
      +		next if $FN =~ /^\.{1,2}\z/;
      +		
      +		$name = $dir_pref . $FN;
      +		$_ = ($no_chdir ? $name : $FN);
      +		&$wanted_callback;
      +	    }
      +
      +	}
      +	else {
      +	    # This dir has subdirectories.
      +	    $subcount = $nlink - 2;
      +
      +	    for my $FN (@filenames) {
      +		next if $FN =~ /^\.{1,2}\z/;
      +		if ($subcount > 0 || $avoid_nlink) {
      +		    # Seen all the subdirs?
      +		    # check for directoriness.
      +		    # stat is faster for a file in the current directory
      +		    $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3];
      +
      +		    if (-d _) {
      +			--$subcount;
      +			$FN =~ s/\.dir\z// if $Is_VMS;
      +			push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink];
      +		    }
      +		    else {
      +			$name = $dir_pref . $FN;
      +			$_= ($no_chdir ? $name : $FN);
      +			&$wanted_callback;
      +		    }
      +		}
      +		else {
      +		    $name = $dir_pref . $FN;
      +		    $_= ($no_chdir ? $name : $FN);
      +		    &$wanted_callback;
      +		}
      +	    }
      +	}
      +    }
      +    continue {
      +	while ( defined ($SE = pop @Stack) ) {
      +	    ($Level, $p_dir, $dir_rel, $nlink) = @$SE;
      +	    if ($CdLvl > $Level && !$no_chdir) {
      +                my $tmp = join('/',('..') x ($CdLvl-$Level));
      +                die "Can't cd to $dir_name" . $tmp
      +                    unless chdir ($tmp);
      +		$CdLvl = $Level;
      +	    }
      +	    $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;
      +                if ( substr($name,-2) eq '/.' ) {
      +                  $name =~ s|/\.$||;
      +                }
      +                $dir = $p_dir;
      +                $_ = ($no_chdir ? $dir_name : $dir_rel );
      +                if ( substr($_,-2) eq '/.' ) {
      +                  s|/\.$||;
      +                }
      +                &$wanted_callback;
      +            } else {
      +                push @Stack,[$CdLvl,$p_dir,$dir_rel,-1]  if  $bydepth;
      +                last;
      +            }
       	}
           }
       }
       
      +
      +# API:
      +#  $wanted
      +#  $dir_loc : absolute location of a dir
      +#  $p_dir   : "parent directory"
      +# preconditions:
      +#  chdir (if not no_chdir) to dir
      +
      +sub _find_dir_symlnk($$$) {
      +    my ($wanted, $dir_loc, $p_dir) = @_;
      +    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);
      +    
      +    unless ($no_chdir or $p_dir eq '.') {
      +	my $udir = $dir_loc;
      +	if ($untaint) {
      +	    $udir = $1 if $dir_loc =~ m|$untaint_pat|;
      +	    unless (defined $udir) {
      +		if ($untaint_skip == 0) {
      +		    die "directory $dir_loc is still tainted";
      +		}
      +		else {
      +		    return;
      +		}
      +	    }
      +	}
      +	unless (chdir $udir) {
      +	    warn "Can't cd to $udir: $!\n";
      +	    return;
      +	}
      +    }
      +
      +    push @Stack,[$dir_loc,$pdir_loc,$p_dir,$dir_rel,-1]  if  $bydepth;
      +
      +    while (defined $SE) {
      +
      +	unless ($bydepth) {
      +	    $dir= $p_dir;
      +            $name= $dir_name;
      +            $_= ($no_chdir ? $dir_name : $dir_rel );
      +            $fullname= $dir_loc;
      +	    # prune may happen here
      +            $prune= 0;
      +            &$wanted_callback;
      +            next if  $prune;
      +	}
      +
      +	# change to that directory
      +	unless ($no_chdir or $dir_rel eq '.') {
      +	    my $udir = $dir_loc;
      +	    if ($untaint) {
      +		$udir = $1 if $dir_loc =~ m|$untaint_pat|;
      +		unless (defined $udir ) {
      +		    if ($untaint_skip == 0) {
      +			die "directory $dir_loc is still tainted";
      +		    }
      +		    else {
      +			next;
      +		    }
      +		}
      +	    }
      +	    unless (chdir $udir) {
      +		warn "Can't cd to $udir: $!\n";
      +		next;
      +	    }
      +	}
      +
      +	$dir = $dir_name;
      +
      +	# Get the list of files in the current directory.
      +	unless (opendir DIR, ($no_chdir ? $dir_loc : '.')) {
      +	    warn "Can't opendir($dir_loc): $!\n";
      +	    next;
      +	}
      +	@filenames = readdir DIR;
      +	closedir(DIR);
      +
      +	for my $FN (@filenames) {
      +	    next if $FN =~ /^\.{1,2}\z/;
      +
      +	    # follow symbolic links / do an lstat
      +	    $new_loc = Follow_SymLink($loc_pref.$FN);
      +
      +	    # ignore if invalid symlink
      +	    next unless defined $new_loc;
      +     
      +	    if (-d _) {
      +		push @Stack,[$new_loc,$dir_loc,$dir_name,$FN,1];
      +	    }
      +	    else {
      +		$fullname = $new_loc;
      +		$name = $dir_pref . $FN;
      +		$_ = ($no_chdir ? $name : $FN);
      +		&$wanted_callback;
      +	    }
      +	}
      +
      +    }
      +    continue {
      +	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;
      +                if ( substr($name,-2) eq '/.' ) {
      +                  $name =~ s|/\.$||;
      +                }
      +                $dir = $p_dir;
      +	        $_ = ($no_chdir ? $dir_name : $dir_rel);
      +                if ( substr($_,-2) eq '/.' ) {
      +                  s|/\.$||;
      +                }
      +
      +	        &$wanted_callback;
      +            } else {
      +                push @Stack,[$dir_loc, $pdir_loc, $p_dir, $dir_rel,-1]  if  $bydepth;
      +                last;
      +            }
      +	}
      +    }
      +}
      +
      +
       sub wrap_wanted {
      -  my $wanted = shift;
      -  ref($wanted) eq 'HASH' ? $wanted : { wanted => $wanted };
      +    my $wanted = shift;
      +    if ( ref($wanted) eq 'HASH' ) {
      +	if ( $wanted->{follow} || $wanted->{follow_fast}) {
      +	    $wanted->{follow_skip} = 1 unless defined $wanted->{follow_skip};
      +	}
      +	if ( $wanted->{untaint} ) {
      +	    $wanted->{untaint_pattern} = qr|^([-+@\w./]+)$|  
      +		unless defined $wanted->{untaint_pattern};
      +	    $wanted->{untaint_skip} = 0 unless defined $wanted->{untaint_skip};
      +	}
      +	return $wanted;
      +    }
      +    else {
      +	return { wanted => $wanted };
      +    }
       }
       
       sub find {
      -  my $wanted = shift;
      -  find_opt(wrap_wanted($wanted), @_);
      +    my $wanted = shift;
      +    _find_opt(wrap_wanted($wanted), @_);
      +    %SLnkSeen= ();  # free memory
       }
       
       sub finddepth {
      -  my $wanted = wrap_wanted(shift);
      -  $wanted->{bydepth} = 1;
      -  find_opt($wanted, @_);
      +    my $wanted = wrap_wanted(shift);
      +    $wanted->{bydepth} = 1;
      +    _find_opt($wanted, @_);
      +    %SLnkSeen= ();  # free memory
       }
       
       # These are hard-coded for now, but may move to hint files.
       if ($^O eq 'VMS') {
      -  $Is_VMS = 1;
      -  $dont_use_nlink = 1;
      +    $Is_VMS = 1;
      +    $File::Find::dont_use_nlink = 1;
       }
       
      -$dont_use_nlink = 1
      +$File::Find::dont_use_nlink = 1
           if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32';
       
       # Set dont_use_nlink in your hint file if your system's stat doesn't
       # report the number of links in a directory as an indication
       # of the number of files.
       # See, e.g. hints/machten.sh for MachTen 2.2.
      -unless ($dont_use_nlink) {
      -  require Config;
      -  $dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'});
      +unless ($File::Find::dont_use_nlink) {
      +    require Config;
      +    $File::Find::dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'});
       }
       
       1;
      -
      diff --git a/contrib/perl5/lib/File/Path.pm b/contrib/perl5/lib/File/Path.pm
      index 225ecab4b61b..46f360a46159 100644
      --- a/contrib/perl5/lib/File/Path.pm
      +++ b/contrib/perl5/lib/File/Path.pm
      @@ -2,15 +2,14 @@ package File::Path;
       
       =head1 NAME
       
      -File::Path - create or remove a series of directories
      +File::Path - create or remove directory trees
       
       =head1 SYNOPSIS
       
      -C
      +    use File::Path;
       
      -C
      -
      -C
      +    mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
      +    rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
       
       =head1 DESCRIPTION
       
      @@ -74,7 +73,7 @@ than VMS is settled.  (defaults to FALSE)
       =back
       
       It returns the number of files successfully deleted.  Symlinks are
      -treated as ordinary files.
      +simply deleted and not followed.
       
       B If the third parameter is not TRUE, C is B
       in the face of failure or interruption.  Files and directories which
      @@ -90,22 +89,17 @@ in situations where security is an issue.
       Tim Bunce > and
       Charles Bailey >
       
      -=head1 REVISION
      -
      -Current $VERSION is 1.0401.
      -
       =cut
       
      +use 5.005_64;
       use Carp;
       use File::Basename ();
      -use DirHandle ();
       use Exporter ();
       use strict;
       
      -use vars qw( $VERSION @ISA @EXPORT );
      -$VERSION = "1.0401";
      -@ISA = qw( Exporter );
      -@EXPORT = qw( mkpath rmtree );
      +our $VERSION = "1.0403";
      +our @ISA = qw( Exporter );
      +our @EXPORT = qw( mkpath rmtree );
       
       my $Is_VMS = $^O eq 'VMS';
       
      @@ -124,20 +118,22 @@ sub mkpath {
           $paths = [$paths] unless ref $paths;
           my(@created,$path);
           foreach $path (@$paths) {
      -	$path .= '/' if $^O eq 'os2' and $path =~ /^\w:$/; # feature of CRT 
      +	$path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT 
       	next if -d $path;
       	# Logic wants Unix paths, so go with the flow.
       	$path = VMS::Filespec::unixify($path) if $Is_VMS;
       	my $parent = File::Basename::dirname($path);
       	# Allow for creation of new logical filesystems under VMS
       	if (not $Is_VMS or $parent !~ m:/[^/]+/000000/?:) {
      -	    push(@created,mkpath($parent, $verbose, $mode)) unless (-d $parent);
      +	    unless (-d $parent or $path eq $parent) {
      +		push(@created,mkpath($parent, $verbose, $mode));
      +	    }
       	}
       	print "mkdir $path\n" if $verbose;
       	unless (mkdir($path,$mode)) {
      -	  my $e = $!;
      -	  # allow for another process to have created it meanwhile
      -	  croak "mkdir $path: $e" unless -d $path;
      +	    my $e = $!;
      +	    # allow for another process to have created it meanwhile
      +	    croak "mkdir $path: $e" unless -d $path;
       	}
       	push(@created, $path);
           }
      @@ -148,13 +144,20 @@ sub rmtree {
           my($roots, $verbose, $safe) = @_;
           my(@files);
           my($count) = 0;
      -    $roots = [$roots] unless ref $roots;
           $verbose ||= 0;
           $safe ||= 0;
       
      +    if ( defined($roots) && length($roots) ) {
      +      $roots = [$roots] unless ref $roots;
      +    }
      +    else {
      +      carp "No root path(s) specified\n";
      +      return 0;
      +    }
      +
           my($root);
           foreach $root (@{$roots}) {
      -	$root =~ s#/$##;
      +	$root =~ s#/\z##;
       	(undef, undef, my $rp) = lstat $root or next;
       	$rp &= 07777;	# don't forget setuid, setgid, sticky bits
       	if ( -d _ ) {
      @@ -166,16 +169,20 @@ sub rmtree {
       	      or carp "Can't make directory $root read+writeable: $!"
       		unless $safe;
       
      -	    my $d = DirHandle->new($root)
      -	      or carp "Can't read $root: $!";
      -	    @files = $d->read;
      -	    $d->close;
      +	    if (opendir my $d, $root) {
      +		@files = readdir $d;
      +		closedir $d;
      +	    }
      +	    else {
      +	        carp "Can't read $root: $!";
      +		@files = ();
      +	    }
       
       	    # Deleting large numbers of files from VMS Files-11 filesystems
       	    # is faster if done in reverse ASCIIbetical order 
       	    @files = reverse @files if $Is_VMS;
      -	    ($root = VMS::Filespec::unixify($root)) =~ s#\.dir$## if $Is_VMS;
      -	    @files = map("$root/$_", grep $_!~/^\.{1,2}$/,@files);
      +	    ($root = VMS::Filespec::unixify($root)) =~ s#\.dir\z## if $Is_VMS;
      +	    @files = map("$root/$_", grep $_!~/^\.{1,2}\z/s,@files);
       	    $count += rmtree(\@files,$verbose,$safe);
       	    if ($safe &&
       		($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
      @@ -198,7 +205,9 @@ sub rmtree {
       	}
       	else { 
       	    if ($safe &&
      -		($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
      +		($Is_VMS ? !&VMS::Filespec::candelete($root)
      +		         : !(-l $root || -w $root)))
      +	    {
       		print "skipped $root\n" if $verbose;
       		next;
       	    }
      diff --git a/contrib/perl5/lib/File/Spec.pm b/contrib/perl5/lib/File/Spec.pm
      index 616dcbcb7a0d..40f5345140c7 100644
      --- a/contrib/perl5/lib/File/Spec.pm
      +++ b/contrib/perl5/lib/File/Spec.pm
      @@ -1,47 +1,18 @@
       package File::Spec;
       
      -require Exporter;
      -
      -@ISA = qw(Exporter);
      -# Items to export into callers namespace by default. Note: do not export
      -# names by default without a very good reason. Use EXPORT_OK instead.
      -# Do not simply export all your public functions/methods/constants.
      -@EXPORT = qw(
      -	
      -);
      -@EXPORT_OK = qw($Verbose);
      -
       use strict;
      -use vars qw(@ISA $VERSION $Verbose);
      +use vars qw(@ISA $VERSION);
       
      -$VERSION = '0.6';
      +$VERSION = '0.8';
       
      -$Verbose = 0;
      +my %module = (MacOS   => 'Mac',
      +	      MSWin32 => 'Win32',
      +	      os2     => 'OS2',
      +	      VMS     => 'VMS');
       
      -require File::Spec::Unix;
      -
      -
      -sub load {
      -	my($class,$OS) = @_;
      -	if ($OS eq 'VMS') {
      -		require File::Spec::VMS;
      -		require VMS::Filespec;
      -		'File::Spec::VMS'
      -	} elsif ($OS eq 'os2') {
      -		require File::Spec::OS2;
      -		'File::Spec::OS2'
      -	} elsif ($OS eq 'MacOS') {
      -		require File::Spec::Mac;
      -		'File::Spec::Mac'
      -	} elsif ($OS eq 'MSWin32') {
      -		require File::Spec::Win32;
      -		'File::Spec::Win32'
      -	} else {
      -		'File::Spec::Unix'
      -	}
      -}
      -
      -@ISA = load('File::Spec', $^O);
      +my $module = $module{$^O} || 'Unix';
      +require "File/Spec/$module.pm";
      +@ISA = ("File::Spec::$module");
       
       1;
       __END__
      @@ -52,11 +23,15 @@ File::Spec - portably perform operations on file names
       
       =head1 SYNOPSIS
       
      -C
      +	use File::Spec;
       
      -C<$x=File::Spec-Ecatfile('a','b','c');>
      +	$x=File::Spec->catfile('a', 'b', 'c');
       
      -which returns 'a/b/c' under Unix.
      +which returns 'a/b/c' under Unix. Or:
      +
      +	use File::Spec::Functions;
      +
      +	$x = catfile('a', 'b', 'c');
       
       =head1 DESCRIPTION
       
      @@ -78,28 +53,31 @@ OS specific routines is available in a separate module, including:
       	File::Spec::VMS
       
       The module appropriate for the current OS is automatically loaded by
      -File::Spec. Since some modules (like VMS) make use of OS specific
      -facilities, it may not be possible to load all modules under all operating
      -systems.
      +File::Spec. Since some modules (like VMS) make use of facilities available
      +only under that OS, it may not be possible to load all modules under all
      +operating systems.
       
       Since File::Spec is object oriented, subroutines should not called directly,
       as in:
       
       	File::Spec::catfile('a','b');
      -	
      +
       but rather as class methods:
       
       	File::Spec->catfile('a','b');
       
      -For a reference of available functions, please consult L,
      -which contains the entire set, and inherited by the modules for other
      -platforms. For further information, please see L,
      +For simple uses, L provides convenient functional
      +forms of these methods.
      +
      +For a list of available methods, please consult L,
      +which contains the entire set, and which is inherited by the modules for
      +other platforms. For further information, please see L,
       L, L, or L.
       
       =head1 SEE ALSO
       
       File::Spec::Unix, File::Spec::Mac, File::Spec::OS2, File::Spec::Win32,
      -File::Spec::VMS, ExtUtils::MakeMaker
      +File::Spec::VMS, File::Spec::Functions, ExtUtils::MakeMaker
       
       =head1 AUTHORS
       
      @@ -108,9 +86,7 @@ Kenneth Albanowski >, Andy Dougherty
       >, Tim Bunce >. VMS
       support by Charles Bailey >.  OS/2 support by
       Ilya Zakharevich >. Mac support by Paul Schinder
      ->.
      -
      -=cut
      -
      -
      -1;
      +>.  abs2rel() and rel2abs() written by
      +Shigio Yamaguchi >, modified by Barrie Slaymaker
      +>.  splitpath(), splitdir(), catpath() and catdir()
      +by Barrie Slaymaker.
      diff --git a/contrib/perl5/lib/File/Spec/Functions.pm b/contrib/perl5/lib/File/Spec/Functions.pm
      new file mode 100644
      index 000000000000..140738f44398
      --- /dev/null
      +++ b/contrib/perl5/lib/File/Spec/Functions.pm
      @@ -0,0 +1,95 @@
      +package File::Spec::Functions;
      +
      +use File::Spec;
      +use strict;
      +
      +use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
      +
      +require Exporter;
      +
      +@ISA = qw(Exporter);
      +
      +@EXPORT = qw(
      +	canonpath
      +	catdir
      +	catfile
      +	curdir
      +	rootdir
      +	updir
      +	no_upwards
      +	file_name_is_absolute
      +	path
      +);
      +
      +@EXPORT_OK = qw(
      +	devnull
      +	tmpdir
      +	splitpath
      +	splitdir
      +	catpath
      +	abs2rel
      +	rel2abs
      +);
      +
      +%EXPORT_TAGS = ( ALL => [ @EXPORT_OK, @EXPORT ] );
      +
      +foreach my $meth (@EXPORT, @EXPORT_OK) {
      +    my $sub = File::Spec->can($meth);
      +    no strict 'refs';
      +    *{$meth} = sub {&$sub('File::Spec', @_)};
      +}
      +
      +
      +1;
      +__END__
      +
      +=head1 NAME
      +
      +File::Spec::Functions - portably perform operations on file names
      +
      +=head1 SYNOPSIS
      +
      +	use File::Spec::Functions;
      +	$x = catfile('a','b');
      +
      +=head1 DESCRIPTION
      +
      +This module exports convenience functions for all of the class methods
      +provided by File::Spec.
      +
      +For a reference of available functions, please consult L,
      +which contains the entire set, and which is inherited by the modules for
      +other platforms. For further information, please see L,
      +L, L, or L.
      +
      +=head2 Exports
      +
      +The following functions are exported by default.
      +
      +	canonpath
      +	catdir
      +	catfile
      +	curdir
      +	rootdir
      +	updir
      +	no_upwards
      +	file_name_is_absolute
      +	path
      +
      +
      +The following functions are exported only by request.
      +
      +	devnull
      +	tmpdir
      +	splitpath
      +	splitdir
      +	catpath
      +	abs2rel
      +	rel2abs
      +
      +All the functions may be imported using the C<:ALL> tag.
      +
      +=head1 SEE ALSO
      +
      +File::Spec, File::Spec::Unix, File::Spec::Mac, File::Spec::OS2,
      +File::Spec::Win32, File::Spec::VMS, ExtUtils::MakeMaker
      diff --git a/contrib/perl5/lib/File/Spec/Mac.pm b/contrib/perl5/lib/File/Spec/Mac.pm
      index 63a9e1283e0e..959e33d0cf3b 100644
      --- a/contrib/perl5/lib/File/Spec/Mac.pm
      +++ b/contrib/perl5/lib/File/Spec/Mac.pm
      @@ -1,18 +1,9 @@
       package File::Spec::Mac;
       
      -use Exporter ();
      -use Config;
       use strict;
      -use File::Spec;
      -use vars qw(@ISA $VERSION $Is_Mac);
      -
      -$VERSION = '1.0';
      -
      +use vars qw(@ISA);
      +require File::Spec::Unix;
       @ISA = qw(File::Spec::Unix);
      -$Is_Mac = $^O eq 'MacOS';
      -
      -Exporter::import('File::Spec', '$Verbose');
      -
       
       =head1 NAME
       
      @@ -20,7 +11,7 @@ File::Spec::Mac - File::Spec for MacOS
       
       =head1 SYNOPSIS
       
      -C
      + require File::Spec::Mac; # Done internally by File::Spec if needed
       
       =head1 DESCRIPTION
       
      @@ -37,8 +28,8 @@ On MacOS, there's nothing to be done.  Returns what it's given.
       =cut
       
       sub canonpath {
      -    my($self,$path) = @_;
      -    $path;
      +    my ($self,$path) = @_;
      +    return $path;
       }
       
       =item catdir
      @@ -84,20 +75,17 @@ aren't done here. This routine will treat this as absolute.
       
       =cut
       
      -# ';
      -
       sub catdir {
           shift;
           my @args = @_;
      -	$args[0] =~ s/:$//;
      -	my $result = shift @args;
      -	for (@args) {
      -		s/:$//;
      -		s/^://;
      -		$result .= ":$_";
      +    my $result = shift @args;
      +    $result =~ s/:\z//;
      +    foreach (@args) {
      +	s/:\z//;
      +	s/^://s;
      +	$result .= ":$_";
           }
      -    $result .= ":";
      -	$result;
      +    return "$result:";
       }
       
       =item catfile
      @@ -118,50 +106,69 @@ give the same answer, as one might expect.
       =cut
       
       sub catfile {
      -    my $self = shift @_;
      +    my $self = shift;
           my $file = pop @_;
           return $file unless @_;
           my $dir = $self->catdir(@_);
      -	$file =~ s/^://;
      +    $file =~ s/^://s;
           return $dir.$file;
       }
       
       =item curdir
       
      -Returns a string representing of the current directory.
      +Returns a string representing the current directory.
       
       =cut
       
       sub curdir {
      -    return ":" ;
      +    return ":";
      +}
      +
      +=item devnull
      +
      +Returns a string representing the null device.
      +
      +=cut
      +
      +sub devnull {
      +    return "Dev:Null";
       }
       
       =item rootdir
       
       Returns a string representing the root directory.  Under MacPerl,
       returns the name of the startup volume, since that's the closest in
      -concept, although other volumes aren't rooted there.  On any other
      -platform returns '', since there's no common way to indicate "root
      -directory" across all Macs.
      +concept, although other volumes aren't rooted there.
       
       =cut
       
       sub rootdir {
       #
      -#  There's no real root directory on MacOS.  If you're using MacPerl,
      -#  the name of the startup volume is returned, since that's the closest in
      -#  concept.  On other platforms, simply return '', because nothing better
      -#  can be done.
      +#  There's no real root directory on MacOS.  The name of the startup
      +#  volume is returned, since that's the closest in concept.
       #
      -	if($Is_Mac) {
      -        require Mac::Files;
      -		my $system =  Mac::Files::FindFolder(&Mac::Files::kOnSystemDisk,
      -		        &Mac::Files::kSystemFolderType);
      -		$system =~ s/:.*$/:/;
      -		return $system;
      -	} else {
      -		return '';
      -    }
      +    require Mac::Files;
      +    my $system =  Mac::Files::FindFolder(&Mac::Files::kOnSystemDisk,
      +					 &Mac::Files::kSystemFolderType);
      +    $system =~ s/:.*\z/:/s;
      +    return $system;
      +}
      +
      +=item tmpdir
      +
      +Returns a string representation of the first existing directory
      +from the following list or '' if none exist:
      +
      +    $ENV{TMPDIR}
      +
      +=cut
      +
      +my $tmpdir;
      +sub tmpdir {
      +    return $tmpdir if defined $tmpdir;
      +    $tmpdir = $ENV{TMPDIR} if -d $ENV{TMPDIR};
      +    $tmpdir = '' unless defined $tmpdir;
      +    return $tmpdir;
       }
       
       =item updir
      @@ -185,11 +192,11 @@ distinguish unambiguously.
       =cut
       
       sub file_name_is_absolute {
      -    my($self,$file) = @_;
      -	if ($file =~ /:/) {
      -		return ($file !~ m/^:/);
      -	} else {
      -		return (! -e ":$file");
      +    my ($self,$file) = @_;
      +    if ($file =~ /:/) {
      +	return ($file !~ m/^:/s);
      +    } else {
      +	return (! -e ":$file");
           }
       }
       
      @@ -207,16 +214,178 @@ sub path {
       #  The concept is meaningless under the MacPerl application.
       #  Under MPW, it has a meaning.
       #
      -    my($self) = @_;
      -	my @path;
      -	if(exists $ENV{Commands}) {
      -		@path = split /,/,$ENV{Commands};
      -	} else {
      -	    @path = ();
      -	}
      -    @path;
      +    return unless exists $ENV{Commands};
      +    return split(/,/, $ENV{Commands});
       }
       
      +=item splitpath
      +
      +=cut
      +
      +sub splitpath {
      +    my ($self,$path, $nofile) = @_;
      +
      +    my ($volume,$directory,$file) = ('','','');
      +
      +    if ( $nofile ) {
      +        ( $volume, $directory ) = $path =~ m@((?:[^:]+(?::|\z))?)(.*)@s;
      +    }
      +    else {
      +        $path =~ 
      +            m@^( (?: [^:]+: )? ) 
      +                ( (?: .*: )? )
      +                ( .* )
      +             @xs;
      +        $volume    = $1;
      +        $directory = $2;
      +        $file      = $3;
      +    }
      +
      +    # Make sure non-empty volumes and directories end in ':'
      +    $volume    .= ':' if $volume    =~ m@[^:]\z@ ;
      +    $directory .= ':' if $directory =~ m@[^:]\z@ ;
      +    return ($volume,$directory,$file);
      +}
      +
      +
      +=item splitdir
      +
      +=cut
      +
      +sub splitdir {
      +    my ($self,$directories) = @_ ;
      +    #
      +    # split() likes to forget about trailing null fields, so here we
      +    # check to be sure that there will not be any before handling the
      +    # simple case.
      +    #
      +    if ( $directories !~ m@:\z@ ) {
      +        return split( m@:@, $directories );
      +    }
      +    else {
      +        #
      +        # since there was a trailing separator, add a file name to the end, 
      +        # then do the split, then replace it with ''.
      +        #
      +        my( @directories )= split( m@:@, "${directories}dummy" ) ;
      +        $directories[ $#directories ]= '' ;
      +        return @directories ;
      +    }
      +}
      +
      +
      +=item catpath
      +
      +=cut
      +
      +sub catpath {
      +    my $self = shift ;
      +
      +    my $result = shift ;
      +    $result =~ s@^([^/])@/$1@s ;
      +
      +    my $segment ;
      +    for $segment ( @_ ) {
      +        if ( $result =~ m@[^/]\z@ && $segment =~ m@^[^/]@s ) {
      +            $result .= "/$segment" ;
      +        }
      +        elsif ( $result =~ m@/\z@ && $segment =~ m@^/@s ) {
      +            $result  =~ s@/+\z@/@;
      +            $segment =~ s@^/+@@s;
      +            $result  .= "$segment" ;
      +        }
      +        else {
      +            $result  .= $segment ;
      +        }
      +    }
      +
      +    return $result ;
      +}
      +
      +=item abs2rel
      +
      +=cut
      +
      +sub abs2rel {
      +    my($self,$path,$base) = @_;
      +
      +    # Clean up $path
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +        $path = $self->rel2abs( $path ) ;
      +    }
      +
      +    # Figure out the effective $base and clean it up.
      +    if ( !defined( $base ) || $base eq '' ) {
      +        $base = cwd() ;
      +    }
      +    elsif ( ! $self->file_name_is_absolute( $base ) ) {
      +        $base = $self->rel2abs( $base ) ;
      +    }
      +
      +    # Now, remove all leading components that are the same
      +    my @pathchunks = $self->splitdir( $path );
      +    my @basechunks = $self->splitdir( $base );
      +
      +    while (@pathchunks && @basechunks && $pathchunks[0] eq $basechunks[0]) {
      +        shift @pathchunks ;
      +        shift @basechunks ;
      +    }
      +
      +    $path = join( ':', @pathchunks );
      +
      +    # @basechunks now contains the number of directories to climb out of.
      +    $base = ':' x @basechunks ;
      +
      +    return "$base:$path" ;
      +}
      +
      +=item rel2abs
      +
      +Converts a relative path to an absolute path. 
      +
      +    $abs_path = File::Spec->rel2abs( $destination ) ;
      +    $abs_path = File::Spec->rel2abs( $destination, $base ) ;
      +
      +If $base is not present or '', then L is used. If $base is relative, 
      +then it is converted to absolute form using L. This means that it
      +is taken to be relative to L.
      +
      +On systems with the concept of a volume, this assumes that both paths 
      +are on the $base volume, and ignores the $destination volume. 
      +
      +On systems that have a grammar that indicates filenames, this ignores the 
      +$base filename as well. Otherwise all path components are assumed to be
      +directories.
      +
      +If $path is absolute, it is cleaned up and returned using L.
      +
      +Based on code written by Shigio Yamaguchi.
      +
      +No checks against the filesystem are made. 
      +
      +=cut
      +
      +sub rel2abs($;$;) {
      +    my ($self,$path,$base ) = @_;
      +
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +        if ( !defined( $base ) || $base eq '' ) {
      +            $base = cwd() ;
      +        }
      +        elsif ( ! $self->file_name_is_absolute( $base ) ) {
      +            $base = $self->rel2abs( $base ) ;
      +        }
      +        else {
      +            $base = $self->canonpath( $base ) ;
      +        }
      +
      +        $path = $self->canonpath("$base$path") ;
      +    }
      +
      +    return $path ;
      +}
      +
      +
       =back
       
       =head1 SEE ALSO
      @@ -226,5 +395,3 @@ L
       =cut
       
       1;
      -__END__
      -
      diff --git a/contrib/perl5/lib/File/Spec/OS2.pm b/contrib/perl5/lib/File/Spec/OS2.pm
      index d60261770281..33370f06c195 100644
      --- a/contrib/perl5/lib/File/Spec/OS2.pm
      +++ b/contrib/perl5/lib/File/Spec/OS2.pm
      @@ -1,34 +1,44 @@
       package File::Spec::OS2;
       
      -#use Config;
      -#use Cwd;
      -#use File::Basename;
       use strict;
      -require Exporter;
      -
      -use File::Spec;
       use vars qw(@ISA);
      -
      -Exporter::import('File::Spec',
      -       qw( $Verbose));
      -
      +require File::Spec::Unix;
       @ISA = qw(File::Spec::Unix);
       
      -$ENV{EMXSHELL} = 'sh'; # to run `commands`
      +sub devnull {
      +    return "/dev/nul";
      +}
      +
      +sub case_tolerant {
      +    return 1;
      +}
       
       sub file_name_is_absolute {
      -    my($self,$file) = @_;
      -    $file =~ m{^([a-z]:)?[\\/]}i ;
      +    my ($self,$file) = @_;
      +    return scalar($file =~ m{^([a-z]:)?[\\/]}is);
       }
       
       sub path {
      -    my($self) = @_;
      -    my $path_sep = ";";
           my $path = $ENV{PATH};
           $path =~ s:\\:/:g;
      -    my @path = split $path_sep, $path;
      -    foreach(@path) { $_ = '.' if $_ eq '' }
      -    @path;
      +    my @path = split(';',$path);
      +    foreach (@path) { $_ = '.' if $_ eq '' }
      +    return @path;
      +}
      +
      +my $tmpdir;
      +sub tmpdir {
      +    return $tmpdir if defined $tmpdir;
      +    my $self = shift;
      +    foreach (@ENV{qw(TMPDIR TEMP TMP)}, qw(/tmp /)) {
      +	next unless defined && -d;
      +	$tmpdir = $_;
      +	last;
      +    }
      +    $tmpdir = '' unless defined $tmpdir;
      +    $tmpdir =~ s:\\:/:g;
      +    $tmpdir = $self->canonpath($tmpdir);
      +    return $tmpdir;
       }
       
       1;
      @@ -40,12 +50,10 @@ File::Spec::OS2 - methods for OS/2 file specs
       
       =head1 SYNOPSIS
       
      - use File::Spec::OS2; # Done internally by File::Spec if needed
      + require File::Spec::OS2; # Done internally by File::Spec if needed
       
       =head1 DESCRIPTION
       
       See File::Spec::Unix for a documentation of the methods provided
       there. This package overrides the implementation of these methods, not
       the semantics.
      -
      -=cut
      diff --git a/contrib/perl5/lib/File/Spec/Unix.pm b/contrib/perl5/lib/File/Spec/Unix.pm
      index 77de73a216a3..2305b75b761f 100644
      --- a/contrib/perl5/lib/File/Spec/Unix.pm
      +++ b/contrib/perl5/lib/File/Spec/Unix.pm
      @@ -1,23 +1,8 @@
       package File::Spec::Unix;
       
      -use Exporter ();
      -use Config;
      -use File::Basename qw(basename dirname fileparse);
      -use DirHandle;
       use strict;
      -use vars qw(@ISA $Is_Mac $Is_OS2 $Is_VMS $Is_Win32);
      -use File::Spec;
       
      -Exporter::import('File::Spec', '$Verbose');
      -
      -$Is_OS2 = $^O eq 'os2';
      -$Is_Mac = $^O eq 'MacOS';
      -$Is_Win32 = $^O eq 'MSWin32';
      -
      -if ($Is_VMS = $^O eq 'VMS') {
      -    require VMS::Filespec;
      -    import VMS::Filespec qw( &vmsify );
      -}
      +use Cwd;
       
       =head1 NAME
       
      @@ -25,7 +10,7 @@ File::Spec::Unix - methods used by File::Spec
       
       =head1 SYNOPSIS
       
      -C
      + require File::Spec::Unix; # Done automatically by File::Spec
       
       =head1 DESCRIPTION
       
      @@ -40,15 +25,18 @@ Methods for manipulating file specifications.
       No physical check on the filesystem, but a logical cleanup of a
       path. On UNIX eliminated successive slashes and successive "/.".
       
      +    $cpath = File::Spec->canonpath( $path ) ;
      +
       =cut
       
       sub canonpath {
      -    my($self,$path) = @_;
      -    $path =~ s|/+|/|g ;                            # xx////xx  -> xx/xx
      -    $path =~ s|(/\.)+/|/|g ;                       # xx/././xx -> xx/xx
      -    $path =~ s|^(\./)+|| unless $path eq "./";     # ./xx      -> xx
      -    $path =~ s|/$|| unless $path eq "/";           # xx/       -> xx
      -    $path;
      +    my ($self,$path) = @_;
      +    $path =~ s|/+|/|g unless($^O eq 'cygwin');     # xx////xx  -> xx/xx
      +    $path =~ s|(/\.)+/|/|g;                        # xx/././xx -> xx/xx
      +    $path =~ s|^(\./)+||s unless $path eq "./";    # ./xx      -> xx
      +    $path =~ s|^/(\.\./)+|/|s;                     # /../../xx -> xx
      +    $path =~ s|/\z|| unless $path eq "/";          # xx/       -> xx
      +    return $path;
       }
       
       =item catdir
      @@ -61,20 +49,14 @@ trailing slash :-)
       
       =cut
       
      -# ';
      -
       sub catdir {
      -    shift;
      +    my $self = shift;
           my @args = @_;
      -    for (@args) {
      +    foreach (@args) {
       	# append a slash to each argument unless it has one there
      -	$_ .= "/" if $_ eq '' or substr($_,-1) ne "/";
      +	$_ .= "/" if $_ eq '' || substr($_,-1) ne "/";
           }
      -    my $result = join('', @args);
      -    # remove a trailing slash unless we are root
      -    substr($result,-1) = ""
      -	if length($result) > 1 && substr($result,-1) eq "/";
      -    $result;
      +    return $self->canonpath(join('', @args));
       }
       
       =item catfile
      @@ -85,29 +67,37 @@ complete path ending with a filename
       =cut
       
       sub catfile {
      -    my $self = shift @_;
      +    my $self = shift;
           my $file = pop @_;
           return $file unless @_;
           my $dir = $self->catdir(@_);
      -    for ($dir) {
      -	$_ .= "/" unless substr($_,length($_)-1,1) eq "/";
      -    }
      +    $dir .= "/" unless substr($dir,-1) eq "/";
           return $dir.$file;
       }
       
       =item curdir
       
      -Returns a string representing of the current directory.  "." on UNIX.
      +Returns a string representation of the current directory.  "." on UNIX.
       
       =cut
       
       sub curdir {
      -    return "." ;
      +    return ".";
      +}
      +
      +=item devnull
      +
      +Returns a string representation of the null device. "/dev/null" on UNIX.
      +
      +=cut
      +
      +sub devnull {
      +    return "/dev/null";
       }
       
       =item rootdir
       
      -Returns a string representing of the root directory.  "/" on UNIX.
      +Returns a string representation of the root directory.  "/" on UNIX.
       
       =cut
       
      @@ -115,9 +105,31 @@ sub rootdir {
           return "/";
       }
       
      +=item tmpdir
      +
      +Returns a string representation of the first writable directory
      +from the following list or "" if none are writable:
      +
      +    $ENV{TMPDIR}
      +    /tmp
      +
      +=cut
      +
      +my $tmpdir;
      +sub tmpdir {
      +    return $tmpdir if defined $tmpdir;
      +    foreach ($ENV{TMPDIR}, "/tmp") {
      +	next unless defined && -d && -w _;
      +	$tmpdir = $_;
      +	last;
      +    }
      +    $tmpdir = '' unless defined $tmpdir;
      +    return $tmpdir;
      +}
      +
       =item updir
       
      -Returns a string representing of the parent directory.  ".." on UNIX.
      +Returns a string representation of the parent directory.  ".." on UNIX.
       
       =cut
       
      @@ -133,8 +145,19 @@ directory. (Does not strip symlinks, only '.', '..', and equivalents.)
       =cut
       
       sub no_upwards {
      -    my($self) = shift;
      -    return grep(!/^\.{1,2}$/, @_);
      +    my $self = shift;
      +    return grep(!/^\.{1,2}\z/s, @_);
      +}
      +
      +=item case_tolerant
      +
      +Returns a true or false value indicating, respectively, that alphabetic
      +is not or is significant when comparing file specifications.
      +
      +=cut
      +
      +sub case_tolerant {
      +    return 0;
       }
       
       =item file_name_is_absolute
      @@ -144,8 +167,8 @@ Takes as argument a path and returns true, if it is an absolute path.
       =cut
       
       sub file_name_is_absolute {
      -    my($self,$file) = @_;
      -    $file =~ m:^/: ;
      +    my ($self,$file) = @_;
      +    return scalar($file =~ m:^/:s);
       }
       
       =item path
      @@ -155,12 +178,9 @@ Takes no argument, returns the environment variable PATH as an array.
       =cut
       
       sub path {
      -    my($self) = @_;
      -    my $path_sep = ":";
      -    my $path = $ENV{PATH};
      -    my @path = split $path_sep, $path;
      -    foreach(@path) { $_ = '.' if $_ eq '' }
      -    @path;
      +    my @path = split(':', $ENV{PATH});
      +    foreach (@path) { $_ = '.' if $_ eq '' }
      +    return @path;
       }
       
       =item join
      @@ -170,21 +190,247 @@ join is the same as catfile.
       =cut
       
       sub join {
      -	my($self) = shift @_;
      -	$self->catfile(@_);
      +    my $self = shift;
      +    return $self->catfile(@_);
       }
       
      -=item nativename
      +=item splitpath
       
      -TBW.
      +    ($volume,$directories,$file) = File::Spec->splitpath( $path );
      +    ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
      +
      +Splits a path in to volume, directory, and filename portions. On systems
      +with no concept of volume, returns undef for volume. 
      +
      +For systems with no syntax differentiating filenames from directories, 
      +assumes that the last file is a path unless $no_file is true or a 
      +trailing separator or /. or /.. is present. On Unix this means that $no_file
      +true makes this return ( '', $path, '' ).
      +
      +The directory portion may or may not be returned with a trailing '/'.
      +
      +The results can be passed to L to get back a path equivalent to
      +(usually identical to) the original path.
       
       =cut
       
      -sub nativename {
      -	my($self,$name) = shift @_;
      -	$name;
      +sub splitpath {
      +    my ($self,$path, $nofile) = @_;
      +
      +    my ($volume,$directory,$file) = ('','','');
      +
      +    if ( $nofile ) {
      +        $directory = $path;
      +    }
      +    else {
      +        $path =~ m|^ ( (?: .* / (?: \.\.?\z )? )? ) ([^/]*) |xs;
      +        $directory = $1;
      +        $file      = $2;
      +    }
      +
      +    return ($volume,$directory,$file);
       }
       
      +
      +=item splitdir
      +
      +The opposite of L.
      +
      +    @dirs = File::Spec->splitdir( $directories );
      +
      +$directories must be only the directory portion of the path on systems 
      +that have the concept of a volume or that have path syntax that differentiates
      +files from directories.
      +
      +Unlike just splitting the directories on the separator, empty
      +directory names (C<''>) can be returned, because these are significant
      +on some OSs (e.g. MacOS).
      +
      +On Unix,
      +
      +    File::Spec->splitdir( "/a/b//c/" );
      +
      +Yields:
      +
      +    ( '', 'a', 'b', '', 'c', '' )
      +
      +=cut
      +
      +sub splitdir {
      +    my ($self,$directories) = @_ ;
      +    #
      +    # split() likes to forget about trailing null fields, so here we
      +    # check to be sure that there will not be any before handling the
      +    # simple case.
      +    #
      +    if ( $directories !~ m|/\z| ) {
      +        return split( m|/|, $directories );
      +    }
      +    else {
      +        #
      +        # since there was a trailing separator, add a file name to the end, 
      +        # then do the split, then replace it with ''.
      +        #
      +        my( @directories )= split( m|/|, "${directories}dummy" ) ;
      +        $directories[ $#directories ]= '' ;
      +        return @directories ;
      +    }
      +}
      +
      +
      +=item catpath
      +
      +Takes volume, directory and file portions and returns an entire path. Under
      +Unix, $volume is ignored, and directory and file are catenated.  A '/' is
      +inserted if need be.  On other OSs, $volume is significant.
      +
      +=cut
      +
      +sub catpath {
      +    my ($self,$volume,$directory,$file) = @_;
      +
      +    if ( $directory ne ''                && 
      +         $file ne ''                     && 
      +         substr( $directory, -1 ) ne '/' && 
      +         substr( $file, 0, 1 ) ne '/' 
      +    ) {
      +        $directory .= "/$file" ;
      +    }
      +    else {
      +        $directory .= $file ;
      +    }
      +
      +    return $directory ;
      +}
      +
      +=item abs2rel
      +
      +Takes a destination path and an optional base path returns a relative path
      +from the base path to the destination path:
      +
      +    $rel_path = File::Spec->abs2rel( $destination ) ;
      +    $rel_path = File::Spec->abs2rel( $destination, $base ) ;
      +
      +If $base is not present or '', then L is used. If $base is relative, 
      +then it is converted to absolute form using L. This means that it
      +is taken to be relative to L.
      +
      +On systems with the concept of a volume, this assumes that both paths 
      +are on the $destination volume, and ignores the $base volume. 
      +
      +On systems that have a grammar that indicates filenames, this ignores the 
      +$base filename as well. Otherwise all path components are assumed to be
      +directories.
      +
      +If $path is relative, it is converted to absolute form using L.
      +This means that it is taken to be relative to L.
      +
      +Based on code written by Shigio Yamaguchi.
      +
      +No checks against the filesystem are made. 
      +
      +=cut
      +
      +sub abs2rel {
      +    my($self,$path,$base) = @_;
      +
      +    # Clean up $path
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +        $path = $self->rel2abs( $path ) ;
      +    }
      +    else {
      +        $path = $self->canonpath( $path ) ;
      +    }
      +
      +    # Figure out the effective $base and clean it up.
      +    if ( !defined( $base ) || $base eq '' ) {
      +        $base = cwd() ;
      +    }
      +    elsif ( ! $self->file_name_is_absolute( $base ) ) {
      +        $base = $self->rel2abs( $base ) ;
      +    }
      +    else {
      +        $base = $self->canonpath( $base ) ;
      +    }
      +
      +    # Now, remove all leading components that are the same
      +    my @pathchunks = $self->splitdir( $path);
      +    my @basechunks = $self->splitdir( $base);
      +
      +    while (@pathchunks && @basechunks && $pathchunks[0] eq $basechunks[0]) {
      +        shift @pathchunks ;
      +        shift @basechunks ;
      +    }
      +
      +    $path = CORE::join( '/', @pathchunks );
      +    $base = CORE::join( '/', @basechunks );
      +
      +    # $base now contains the directories the resulting relative path 
      +    # must ascend out of before it can descend to $path_directory.  So, 
      +    # replace all names with $parentDir
      +    $base =~ s|[^/]+|..|g ;
      +
      +    # Glue the two together, using a separator if necessary, and preventing an
      +    # empty result.
      +    if ( $path ne '' && $base ne '' ) {
      +        $path = "$base/$path" ;
      +    } else {
      +        $path = "$base$path" ;
      +    }
      +
      +    return $self->canonpath( $path ) ;
      +}
      +
      +=item rel2abs
      +
      +Converts a relative path to an absolute path. 
      +
      +    $abs_path = File::Spec->rel2abs( $destination ) ;
      +    $abs_path = File::Spec->rel2abs( $destination, $base ) ;
      +
      +If $base is not present or '', then L is used. If $base is relative, 
      +then it is converted to absolute form using L. This means that it
      +is taken to be relative to L.
      +
      +On systems with the concept of a volume, this assumes that both paths 
      +are on the $base volume, and ignores the $destination volume. 
      +
      +On systems that have a grammar that indicates filenames, this ignores the 
      +$base filename as well. Otherwise all path components are assumed to be
      +directories.
      +
      +If $path is absolute, it is cleaned up and returned using L.
      +
      +Based on code written by Shigio Yamaguchi.
      +
      +No checks against the filesystem are made. 
      +
      +=cut
      +
      +sub rel2abs($;$;) {
      +    my ($self,$path,$base ) = @_;
      +
      +    # Clean up $path
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +        # Figure out the effective $base and clean it up.
      +        if ( !defined( $base ) || $base eq '' ) {
      +            $base = cwd() ;
      +        }
      +        elsif ( ! $self->file_name_is_absolute( $base ) ) {
      +            $base = $self->rel2abs( $base ) ;
      +        }
      +        else {
      +            $base = $self->canonpath( $base ) ;
      +        }
      +
      +        # Glom them together
      +        $path = $self->catdir( $base, $path ) ;
      +    }
      +
      +    return $self->canonpath( $path ) ;
      +}
      +
      +
       =back
       
       =head1 SEE ALSO
      @@ -194,4 +440,3 @@ L
       =cut
       
       1;
      -__END__
      diff --git a/contrib/perl5/lib/File/Spec/VMS.pm b/contrib/perl5/lib/File/Spec/VMS.pm
      index c5269fd10c7a..a2ac8cac0bb5 100644
      --- a/contrib/perl5/lib/File/Spec/VMS.pm
      +++ b/contrib/perl5/lib/File/Spec/VMS.pm
      @@ -1,19 +1,13 @@
      -
       package File::Spec::VMS;
       
      -use Carp qw( &carp );
      -use Config;
      -require Exporter;
      -use VMS::Filespec;
      -use File::Basename;
      -
      -use File::Spec;
      -use vars qw($Revision);
      -$Revision = '5.3901 (6-Mar-1997)';
      -
      +use strict;
      +use vars qw(@ISA);
      +require File::Spec::Unix;
       @ISA = qw(File::Spec::Unix);
       
      -Exporter::import('File::Spec', '$Verbose');
      +use Cwd;
      +use File::Basename;
      +use VMS::Filespec;
       
       =head1 NAME
       
      @@ -21,7 +15,7 @@ File::Spec::VMS - methods for VMS file specs
       
       =head1 SYNOPSIS
       
      - use File::Spec::VMS; # Done internally by File::Spec if needed
      + require File::Spec::VMS; # Done internally by File::Spec if needed
       
       =head1 DESCRIPTION
       
      @@ -29,67 +23,202 @@ See File::Spec::Unix for a documentation of the methods provided
       there. This package overrides the implementation of these methods, not
       the semantics.
       
      +=over
      +
      +=item eliminate_macros
      +
      +Expands MM[KS]/Make macros in a text string, using the contents of
      +identically named elements of C<%$self>, and returns the result
      +as a file specification in Unix syntax.
      +
      +=cut
      +
      +sub eliminate_macros {
      +    my($self,$path) = @_;
      +    return '' unless $path;
      +    $self = {} unless ref $self;
      +    my($npath) = unixify($path);
      +    my($complex) = 0;
      +    my($head,$macro,$tail);
      +
      +    # perform m##g in scalar context so it acts as an iterator
      +    while ($npath =~ m#(.*?)\$\((\S+?)\)(.*)#gs) { 
      +        if ($self->{$2}) {
      +            ($head,$macro,$tail) = ($1,$2,$3);
      +            if (ref $self->{$macro}) {
      +                if (ref $self->{$macro} eq 'ARRAY') {
      +                    $macro = join ' ', @{$self->{$macro}};
      +                }
      +                else {
      +                    print "Note: can't expand macro \$($macro) containing ",ref($self->{$macro}),
      +                          "\n\t(using MMK-specific deferred substitutuon; MMS will break)\n";
      +                    $macro = "\cB$macro\cB";
      +                    $complex = 1;
      +                }
      +            }
      +            else { ($macro = unixify($self->{$macro})) =~ s#/\z##; }
      +            $npath = "$head$macro$tail";
      +        }
      +    }
      +    if ($complex) { $npath =~ s#\cB(.*?)\cB#\${$1}#gs; }
      +    $npath;
      +}
      +
      +=item fixpath
      +
      +Catchall routine to clean up problem MM[SK]/Make macros.  Expands macros
      +in any directory specification, in order to avoid juxtaposing two
      +VMS-syntax directories when MM[SK] is run.  Also expands expressions which
      +are all macro, so that we can tell how long the expansion is, and avoid
      +overrunning DCL's command buffer when MM[KS] is running.
      +
      +If optional second argument has a TRUE value, then the return string is
      +a VMS-syntax directory specification, if it is FALSE, the return string
      +is a VMS-syntax file specification, and if it is not specified, fixpath()
      +checks to see whether it matches the name of a directory in the current
      +default directory, and returns a directory or file specification accordingly.
      +
      +=cut
      +
      +sub fixpath {
      +    my($self,$path,$force_path) = @_;
      +    return '' unless $path;
      +    $self = bless {} unless ref $self;
      +    my($fixedpath,$prefix,$name);
      +
      +    if ($path =~ m#^\$\([^\)]+\)\z#s || $path =~ m#[/:>\]]#) { 
      +        if ($force_path or $path =~ /(?:DIR\)|\])\z/) {
      +            $fixedpath = vmspath($self->eliminate_macros($path));
      +        }
      +        else {
      +            $fixedpath = vmsify($self->eliminate_macros($path));
      +        }
      +    }
      +    elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#s)) && $self->{$prefix}) {
      +        my($vmspre) = $self->eliminate_macros("\$($prefix)");
      +        # is it a dir or just a name?
      +        $vmspre = ($vmspre =~ m|/| or $prefix =~ /DIR\z/) ? vmspath($vmspre) : '';
      +        $fixedpath = ($vmspre ? $vmspre : $self->{$prefix}) . $name;
      +        $fixedpath = vmspath($fixedpath) if $force_path;
      +    }
      +    else {
      +        $fixedpath = $path;
      +        $fixedpath = vmspath($fixedpath) if $force_path;
      +    }
      +    # No hints, so we try to guess
      +    if (!defined($force_path) and $fixedpath !~ /[:>(.\]]/) {
      +        $fixedpath = vmspath($fixedpath) if -d $fixedpath;
      +    }
      +
      +    # Trim off root dirname if it's had other dirs inserted in front of it.
      +    $fixedpath =~ s/\.000000([\]>])/$1/;
      +    # Special case for VMS absolute directory specs: these will have had device
      +    # prepended during trip through Unix syntax in eliminate_macros(), since
      +    # Unix syntax has no way to express "absolute from the top of this device's
      +    # directory tree".
      +    if ($path =~ /^[\[>][^.\-]/) { $fixedpath =~ s/^[^\[<]+//; }
      +    $fixedpath;
      +}
      +
      +=back
      +
       =head2 Methods always loaded
       
       =over
       
      +=item canonpath (override)
      +
      +Removes redundant portions of file specifications according to VMS syntax.
      +
      +=cut
      +
      +sub canonpath {
      +    my($self,$path) = @_;
      +
      +    if ($path =~ m|/|) { # Fake Unix
      +      my $pathify = $path =~ m|/\z|;
      +      $path = $self->SUPER::canonpath($path);
      +      if ($pathify) { return vmspath($path); }
      +      else          { return vmsify($path);  }
      +    }
      +    else {
      +      $path =~ s-\]\[--g;  $path =~ s/> foo.bar
      +      $path =~ s/([\[<])000000\./$1/;                   # [000000.foo     ==> foo
      +      1 while $path =~ s{([\[<-])\.-}{$1-};             # [.-.-           ==> [--
      +      $path =~ s/\.[^\[<\.]+\.-([\]\>])/$1/;            # bar.foo.-]      ==> bar]
      +      $path =~ s/([\[<])(-+)/$1 . "\cx" x length($2)/e; # encode leading '-'s
      +      $path =~ s/([\[<\.])([^\[<\.\cx]+)\.-\.?/$1/g;    # bar.-.foo       ==> foo
      +      $path =~ s/([\[<])(\cx+)/$1 . '-' x length($2)/e; # then decode
      +      return $path;
      +    }
      +}
      +
       =item catdir
       
       Concatenates a list of file specifications, and returns the result as a
      -VMS-syntax directory specification.
      +VMS-syntax directory specification.  No check is made for "impossible"
      +cases (e.g. elements other than the first being absolute filespecs).
       
       =cut
       
       sub catdir {
      -    my($self,@dirs) = @_;
      -    my($dir) = pop @dirs;
      +    my ($self,@dirs) = @_;
      +    my $dir = pop @dirs;
           @dirs = grep($_,@dirs);
      -    my($rslt);
      +    my $rslt;
           if (@dirs) {
      -      my($path) = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
      -      my($spath,$sdir) = ($path,$dir);
      -      $spath =~ s/.dir$//; $sdir =~ s/.dir$//; 
      -      $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+$/;
      -      $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
      +	my $path = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs));
      +	my ($spath,$sdir) = ($path,$dir);
      +	$spath =~ s/\.dir\z//; $sdir =~ s/\.dir\z//; 
      +	$sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+\z/s;
      +	$rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1);
      +
      +	# Special case for VMS absolute directory specs: these will have had device
      +	# prepended during trip through Unix syntax in eliminate_macros(), since
      +	# Unix syntax has no way to express "absolute from the top of this device's
      +	# directory tree".
      +	if ($spath =~ /^[\[<][^.\-]/s) { $rslt =~ s/^[^\[<]+//s; }
           }
      -    else { 
      -      if ($dir =~ /^\$\([^\)]+\)$/) { $rslt = $dir; }
      -      else                          { $rslt = vmspath($dir); }
      +    else {
      +	if    (not defined $dir or not length $dir) { $rslt = ''; }
      +	elsif ($dir =~ /^\$\([^\)]+\)\z/s)          { $rslt = $dir; }
      +	else                                        { $rslt = vmspath($dir); }
           }
      -    print "catdir(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
      -    $rslt;
      +    return $self->canonpath($rslt);
       }
       
       =item catfile
       
       Concatenates a list of file specifications, and returns the result as a
      -VMS-syntax directory specification.
      +VMS-syntax file specification.
       
       =cut
       
       sub catfile {
      -    my($self,@files) = @_;
      -    my($file) = pop @files;
      +    my ($self,@files) = @_;
      +    my $file = pop @files;
           @files = grep($_,@files);
      -    my($rslt);
      +    my $rslt;
           if (@files) {
      -      my($path) = (@files == 1 ? $files[0] : $self->catdir(@files));
      -      my($spath) = $path;
      -      $spath =~ s/.dir$//;
      -      if ( $spath =~ /^[^\)\]\/:>]+\)$/ && basename($file) eq $file) { $rslt = "$spath$file"; }
      -      else {
      -          $rslt = $self->eliminate_macros($spath);
      -          $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
      -      }
      +	my $path = (@files == 1 ? $files[0] : $self->catdir(@files));
      +	my $spath = $path;
      +	$spath =~ s/\.dir\z//;
      +	if ($spath =~ /^[^\)\]\/:>]+\)\z/s && basename($file) eq $file) {
      +	    $rslt = "$spath$file";
      +	}
      +	else {
      +	    $rslt = $self->eliminate_macros($spath);
      +	    $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file));
      +	}
           }
      -    else { $rslt = vmsify($file); }
      -    print "catfile(",join(',',@_[1..$#_]),") = |$rslt|\n" if $Verbose >= 3;
      -    $rslt;
      +    else { $rslt = (defined($file) && length($file)) ? vmsify($file) : ''; }
      +    return $self->canonpath($rslt);
       }
       
      +
       =item curdir (override)
       
      -Returns a string representing of the current directory.
      +Returns a string representation of the current directory: '[]'
       
       =cut
       
      @@ -97,19 +226,51 @@ sub curdir {
           return '[]';
       }
       
      +=item devnull (override)
      +
      +Returns a string representation of the null device: '_NLA0:'
      +
      +=cut
      +
      +sub devnull {
      +    return "_NLA0:";
      +}
      +
       =item rootdir (override)
       
      -Returns a string representing of the root directory.
      +Returns a string representation of the root directory: 'SYS$DISK:[000000]'
       
       =cut
       
       sub rootdir {
      -    return '';
      +    return 'SYS$DISK:[000000]';
      +}
      +
      +=item tmpdir (override)
      +
      +Returns a string representation of the first writable directory
      +from the following list or '' if none are writable:
      +
      +    sys$scratch
      +    $ENV{TMPDIR}
      +
      +=cut
      +
      +my $tmpdir;
      +sub tmpdir {
      +    return $tmpdir if defined $tmpdir;
      +    foreach ('sys$scratch', $ENV{TMPDIR}) {
      +	next unless defined && -d && -w _;
      +	$tmpdir = $_;
      +	last;
      +    }
      +    $tmpdir = '' unless defined $tmpdir;
      +    return $tmpdir;
       }
       
       =item updir (override)
       
      -Returns a string representing of the parent directory.
      +Returns a string representation of the parent directory: '[-]'
       
       =cut
       
      @@ -117,6 +278,16 @@ sub updir {
           return '[-]';
       }
       
      +=item case_tolerant (override)
      +
      +VMS file specification syntax is case-tolerant.
      +
      +=cut
      +
      +sub case_tolerant {
      +    return 1;
      +}
      +
       =item path (override)
       
       Translate logical name DCL$PATH as a searchlist, rather than trying
      @@ -125,9 +296,9 @@ to C string value of C<$ENV{'PATH'}>.
       =cut
       
       sub path {
      -    my(@dirs,$dir,$i);
      +    my (@dirs,$dir,$i);
           while ($dir = $ENV{'DCL$PATH;' . $i++}) { push(@dirs,$dir); }
      -    @dirs;
      +    return @dirs;
       }
       
       =item file_name_is_absolute (override)
      @@ -137,12 +308,185 @@ Checks for VMS directory spec as well as Unix separators.
       =cut
       
       sub file_name_is_absolute {
      -    my($self,$file) = @_;
      +    my ($self,$file) = @_;
           # If it's a logical name, expand it.
      -    $file = $ENV{$file} while $file =~ /^[\w\$\-]+$/ and $ENV{$file};
      -    $file =~ m!^/! or $file =~ m![<\[][^.\-\]>]! or $file =~ /:[^<\[]/;
      +    $file = $ENV{$file} while $file =~ /^[\w\$\-]+\z/s && $ENV{$file};
      +    return scalar($file =~ m!^/!s             ||
      +		  $file =~ m![<\[][^.\-\]>]!  ||
      +		  $file =~ /:[^<\[]/);
       }
       
      -1;
      -__END__
      +=item splitpath (override)
       
      +Splits using VMS syntax.
      +
      +=cut
      +
      +sub splitpath {
      +    my($self,$path) = @_;
      +    my($dev,$dir,$file) = ('','','');
      +
      +    vmsify($path) =~ /(.+:)?([\[<].*[\]>])?(.*)/s;
      +    return ($1 || '',$2 || '',$3);
      +}
      +
      +=item splitdir (override)
      +
      +Split dirspec using VMS syntax.
      +
      +=cut
      +
      +sub splitdir {
      +    my($self,$dirspec) = @_;
      +    $dirspec =~ s/\]\[//g;  $dirspec =~ s/\-\-/-.-/g;
      +    $dirspec = "[$dirspec]" unless $dirspec =~ /[\[<]/; # make legal
      +    my(@dirs) = split('\.', vmspath($dirspec));
      +    $dirs[0] =~ s/^[\[<]//s;  $dirs[-1] =~ s/[\]>]\z//s;
      +    @dirs;
      +}
      +
      +
      +=item catpath (override)
      +
      +Construct a complete filespec using VMS syntax
      +
      +=cut
      +
      +sub catpath {
      +    my($self,$dev,$dir,$file) = @_;
      +    if ($dev =~ m|^/+([^/]+)|) { $dev = "$1:"; }
      +    else { $dev .= ':' unless $dev eq '' or $dev =~ /:\z/; }
      +    if (length($dev) or length($dir)) {
      +      $dir = "[$dir]" unless $dir =~ /[\[<\/]/;
      +      $dir = vmspath($dir);
      +    }
      +    "$dev$dir$file";
      +}
      +
      +=item abs2rel (override)
      +
      +Use VMS syntax when converting filespecs.
      +
      +=cut
      +
      +sub abs2rel {
      +    my $self = shift;
      +
      +    return vmspath(File::Spec::Unix::abs2rel( $self, @_ ))
      +        if ( join( '', @_ ) =~ m{/} ) ;
      +
      +    my($path,$base) = @_;
      +
      +    # Note: we use '/' to glue things together here, then let canonpath()
      +    # clean them up at the end.
      +
      +    # Clean up $path
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +        $path = $self->rel2abs( $path ) ;
      +    }
      +    else {
      +        $path = $self->canonpath( $path ) ;
      +    }
      +
      +    # Figure out the effective $base and clean it up.
      +    if ( !defined( $base ) || $base eq '' ) {
      +        $base = cwd() ;
      +    }
      +    elsif ( ! $self->file_name_is_absolute( $base ) ) {
      +        $base = $self->rel2abs( $base ) ;
      +    }
      +    else {
      +        $base = $self->canonpath( $base ) ;
      +    }
      +
      +    # Split up paths
      +    my ( undef, $path_directories, $path_file ) =
      +        $self->splitpath( $path, 1 ) ;
      +
      +    $path_directories = $1
      +        if $path_directories =~ /^\[(.*)\]\z/s ;
      +
      +    my ( undef, $base_directories, undef ) =
      +        $self->splitpath( $base, 1 ) ;
      +
      +    $base_directories = $1
      +        if $base_directories =~ /^\[(.*)\]\z/s ;
      +
      +    # Now, remove all leading components that are the same
      +    my @pathchunks = $self->splitdir( $path_directories );
      +    my @basechunks = $self->splitdir( $base_directories );
      +
      +    while ( @pathchunks && 
      +            @basechunks && 
      +            lc( $pathchunks[0] ) eq lc( $basechunks[0] ) 
      +          ) {
      +        shift @pathchunks ;
      +        shift @basechunks ;
      +    }
      +
      +    # @basechunks now contains the directories to climb out of,
      +    # @pathchunks now has the directories to descend in to.
      +    $path_directories = '-.' x @basechunks . join( '.', @pathchunks ) ;
      +    $path_directories =~ s{\.\z}{} ;
      +    return $self->canonpath( $self->catpath( '', $path_directories, $path_file ) ) ;
      +}
      +
      +
      +=item rel2abs (override)
      +
      +Use VMS syntax when converting filespecs.
      +
      +=cut
      +
      +sub rel2abs($;$;) {
      +    my $self = shift ;
      +    return vmspath(File::Spec::Unix::rel2abs( $self, @_ ))
      +        if ( join( '', @_ ) =~ m{/} ) ;
      +
      +    my ($path,$base ) = @_;
      +    # Clean up and split up $path
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +        # Figure out the effective $base and clean it up.
      +        if ( !defined( $base ) || $base eq '' ) {
      +            $base = cwd() ;
      +        }
      +        elsif ( ! $self->file_name_is_absolute( $base ) ) {
      +            $base = $self->rel2abs( $base ) ;
      +        }
      +        else {
      +            $base = $self->canonpath( $base ) ;
      +        }
      +
      +        # Split up paths
      +        my ( undef, $path_directories, $path_file ) =
      +            $self->splitpath( $path ) ;
      +
      +        my ( $base_volume, $base_directories, undef ) =
      +            $self->splitpath( $base ) ;
      +
      +        $path_directories = '' if $path_directories eq '[]' ||
      +                                  $path_directories eq '<>';
      +        my $sep = '' ;
      +        $sep = '.'
      +            if ( $base_directories =~ m{[^.\]>]\z} &&
      +                 $path_directories =~ m{^[^.\[<]}s
      +            ) ;
      +        $base_directories = "$base_directories$sep$path_directories";
      +        $base_directories =~ s{\.?[\]>][\[<]\.?}{.};
      +
      +        $path = $self->catpath( $base_volume, $base_directories, $path_file );
      +   }
      +
      +    return $self->canonpath( $path ) ;
      +}
      +
      +
      +=back
      +
      +=head1 SEE ALSO
      +
      +L
      +
      +=cut
      +
      +1;
      diff --git a/contrib/perl5/lib/File/Spec/Win32.pm b/contrib/perl5/lib/File/Spec/Win32.pm
      index 034a0cbc2e69..aa95fbde363e 100644
      --- a/contrib/perl5/lib/File/Spec/Win32.pm
      +++ b/contrib/perl5/lib/File/Spec/Win32.pm
      @@ -1,12 +1,18 @@
       package File::Spec::Win32;
       
      +use strict;
      +use Cwd;
      +use vars qw(@ISA);
      +require File::Spec::Unix;
      +@ISA = qw(File::Spec::Unix);
      +
       =head1 NAME
       
       File::Spec::Win32 - methods for Win32 file specs
       
       =head1 SYNOPSIS
       
      - use File::Spec::Win32; # Done internally by File::Spec if needed
      + require File::Spec::Win32; # Done internally by File::Spec if needed
       
       =head1 DESCRIPTION
       
      @@ -16,37 +22,50 @@ the semantics.
       
       =over
       
      -=cut 
      +=item devnull
       
      -#use Config;
      -#use Cwd;
      -use File::Basename;
      -require Exporter;
      -use strict;
      +Returns a string representation of the null device.
       
      -use vars qw(@ISA);
      +=cut
       
      -use File::Spec;
      -Exporter::import('File::Spec', qw( $Verbose));
      -
      -@ISA = qw(File::Spec::Unix);
      -
      -$ENV{EMXSHELL} = 'sh'; # to run `commands`
      -
      -sub file_name_is_absolute {
      -    my($self,$file) = @_;
      -    $file =~ m{^([a-z]:)?[\\/]}i ;
      +sub devnull {
      +    return "nul";
       }
       
      -sub catdir {
      +=item tmpdir
      +
      +Returns a string representation of the first existing directory
      +from the following list:
      +
      +    $ENV{TMPDIR}
      +    $ENV{TEMP}
      +    $ENV{TMP}
      +    /tmp
      +    /
      +
      +=cut
      +
      +my $tmpdir;
      +sub tmpdir {
      +    return $tmpdir if defined $tmpdir;
           my $self = shift;
      -    my @args = @_;
      -    for (@args) {
      -	# append a slash to each argument unless it has one there
      -	$_ .= "\\" if $_ eq '' or substr($_,-1) ne "\\";
      +    foreach (@ENV{qw(TMPDIR TEMP TMP)}, qw(/tmp /)) {
      +	next unless defined && -d;
      +	$tmpdir = $_;
      +	last;
           }
      -    my $result = $self->canonpath(join('', @args));
      -    $result;
      +    $tmpdir = '' unless defined $tmpdir;
      +    $tmpdir = $self->canonpath($tmpdir);
      +    return $tmpdir;
      +}
      +
      +sub case_tolerant {
      +    return 1;
      +}
      +
      +sub file_name_is_absolute {
      +    my ($self,$file) = @_;
      +    return scalar($file =~ m{^([a-z]:)?[\\/]}is);
       }
       
       =item catfile
      @@ -57,22 +76,19 @@ complete path ending with a filename
       =cut
       
       sub catfile {
      -    my $self = shift @_;
      +    my $self = shift;
           my $file = pop @_;
           return $file unless @_;
           my $dir = $self->catdir(@_);
      -    $dir =~ s/(\\\.)$//;
      -    $dir .= "\\" unless substr($dir,length($dir)-1,1) eq "\\";
      +    $dir .= "\\" unless substr($dir,-1) eq "\\";
           return $dir.$file;
       }
       
       sub path {
      -    local $^W = 1;
      -    my($self) = @_;
           my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
           my @path = split(';',$path);
      -    foreach(@path) { $_ = '.' if $_ eq '' }
      -    @path;
      +    foreach (@path) { $_ = '.' if $_ eq '' }
      +    return @path;
       }
       
       =item canonpath
      @@ -83,22 +99,307 @@ path. On UNIX eliminated successive slashes and successive "/.".
       =cut
       
       sub canonpath {
      -    my($self,$path) = @_;
      -    $path =~ s/^([a-z]:)/\u$1/;
      +    my ($self,$path) = @_;
      +    $path =~ s/^([a-z]:)/\u$1/s;
           $path =~ s|/|\\|g;
      -    $path =~ s|\\+|\\|g ;                          # xx////xx  -> xx/xx
      -    $path =~ s|(\\\.)+\\|\\|g ;                    # xx/././xx -> xx/xx
      -    $path =~ s|^(\.\\)+|| unless $path eq ".\\";   # ./xx      -> xx
      -    $path =~ s|\\$|| 
      -             unless $path =~ m#^([a-z]:)?\\#;      # xx/       -> xx
      -    $path .= '.' if $path =~ m#\\$#;
      -    $path;
      +    $path =~ s|([^\\])\\+|$1\\|g;                  # xx////xx  -> xx/xx
      +    $path =~ s|(\\\.)+\\|\\|g;                     # xx/././xx -> xx/xx
      +    $path =~ s|^(\.\\)+||s unless $path eq ".\\";  # ./xx      -> xx
      +    $path =~ s|\\\z||
      +             unless $path =~ m#^([A-Z]:)?\\\z#s;   # xx/       -> xx
      +    return $path;
       }
       
      -1;
      -__END__
      +=item splitpath
      +
      +    ($volume,$directories,$file) = File::Spec->splitpath( $path );
      +    ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file );
      +
      +Splits a path in to volume, directory, and filename portions. Assumes that 
      +the last file is a path unless the path ends in '\\', '\\.', '\\..'
      +or $no_file is true.  On Win32 this means that $no_file true makes this return 
      +( $volume, $path, undef ).
      +
      +Separators accepted are \ and /.
      +
      +Volumes can be drive letters or UNC sharenames (\\server\share).
      +
      +The results can be passed to L to get back a path equivalent to
      +(usually identical to) the original path.
      +
      +=cut
      +
      +sub splitpath {
      +    my ($self,$path, $nofile) = @_;
      +    my ($volume,$directory,$file) = ('','','');
      +    if ( $nofile ) {
      +        $path =~ 
      +            m{^( (?:[a-zA-Z]:|(?:\\\\|//)[^\\/]+[\\/][^\\/]+)? ) 
      +                 (.*)
      +             }xs;
      +        $volume    = $1;
      +        $directory = $2;
      +    }
      +    else {
      +        $path =~ 
      +            m{^ ( (?: [a-zA-Z]: |
      +                      (?:\\\\|//)[^\\/]+[\\/][^\\/]+
      +                  )?
      +                )
      +                ( (?:.*[\\\\/](?:\.\.?\z)?)? )
      +                (.*)
      +             }xs;
      +        $volume    = $1;
      +        $directory = $2;
      +        $file      = $3;
      +    }
      +
      +    return ($volume,$directory,$file);
      +}
      +
      +
      +=item splitdir
      +
      +The opposite of L.
      +
      +    @dirs = File::Spec->splitdir( $directories );
      +
      +$directories must be only the directory portion of the path on systems 
      +that have the concept of a volume or that have path syntax that differentiates
      +files from directories.
      +
      +Unlike just splitting the directories on the separator, leading empty and 
      +trailing directory entries can be returned, because these are significant
      +on some OSs. So,
      +
      +    File::Spec->splitdir( "/a/b/c" );
      +
      +Yields:
      +
      +    ( '', 'a', 'b', '', 'c', '' )
      +
      +=cut
      +
      +sub splitdir {
      +    my ($self,$directories) = @_ ;
      +    #
      +    # split() likes to forget about trailing null fields, so here we
      +    # check to be sure that there will not be any before handling the
      +    # simple case.
      +    #
      +    if ( $directories !~ m|[\\/]\z| ) {
      +        return split( m|[\\/]|, $directories );
      +    }
      +    else {
      +        #
      +        # since there was a trailing separator, add a file name to the end, 
      +        # then do the split, then replace it with ''.
      +        #
      +        my( @directories )= split( m|[\\/]|, "${directories}dummy" ) ;
      +        $directories[ $#directories ]= '' ;
      +        return @directories ;
      +    }
      +}
      +
      +
      +=item catpath
      +
      +Takes volume, directory and file portions and returns an entire path. Under
      +Unix, $volume is ignored, and this is just like catfile(). On other OSs,
      +the $volume become significant.
      +
      +=cut
      +
      +sub catpath {
      +    my ($self,$volume,$directory,$file) = @_;
      +
      +    # If it's UNC, make sure the glue separator is there, reusing
      +    # whatever separator is first in the $volume
      +    $volume .= $1
      +        if ( $volume =~ m@^([\\/])[\\/][^\\/]+[\\/][^\\/]+\z@s &&
      +             $directory =~ m@^[^\\/]@s
      +           ) ;
      +
      +    $volume .= $directory ;
      +
      +    # If the volume is not just A:, make sure the glue separator is 
      +    # there, reusing whatever separator is first in the $volume if possible.
      +    if ( $volume !~ m@^[a-zA-Z]:\z@s &&
      +         $volume =~ m@[^\\/]\z@      &&
      +         $file   =~ m@[^\\/]@
      +       ) {
      +        $volume =~ m@([\\/])@ ;
      +        my $sep = $1 ? $1 : '\\' ;
      +        $volume .= $sep ;
      +    }
      +
      +    $volume .= $file ;
      +
      +    return $volume ;
      +}
      +
      +
      +=item abs2rel
      +
      +Takes a destination path and an optional base path returns a relative path
      +from the base path to the destination path:
      +
      +    $rel_path = File::Spec->abs2rel( $destination ) ;
      +    $rel_path = File::Spec->abs2rel( $destination, $base ) ;
      +
      +If $base is not present or '', then L is used. If $base is relative, 
      +then it is converted to absolute form using L. This means that it
      +is taken to be relative to L.
      +
      +On systems with the concept of a volume, this assumes that both paths 
      +are on the $destination volume, and ignores the $base volume.
      +
      +On systems that have a grammar that indicates filenames, this ignores the 
      +$base filename as well. Otherwise all path components are assumed to be
      +directories.
      +
      +If $path is relative, it is converted to absolute form using L.
      +This means that it is taken to be relative to L.
      +
      +Based on code written by Shigio Yamaguchi.
      +
      +No checks against the filesystem are made. 
      +
      +=cut
      +
      +sub abs2rel {
      +    my($self,$path,$base) = @_;
      +
      +    # Clean up $path
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +        $path = $self->rel2abs( $path ) ;
      +    }
      +    else {
      +        $path = $self->canonpath( $path ) ;
      +    }
      +
      +    # Figure out the effective $base and clean it up.
      +    if ( ! $self->file_name_is_absolute( $base ) ) {
      +        $base = $self->rel2abs( $base ) ;
      +    }
      +    elsif ( !defined( $base ) || $base eq '' ) {
      +        $base = cwd() ;
      +    }
      +    else {
      +        $base = $self->canonpath( $base ) ;
      +    }
      +
      +    # Split up paths
      +    my ( $path_volume, $path_directories, $path_file ) =
      +        $self->splitpath( $path, 1 ) ;
      +
      +    my ( undef, $base_directories, undef ) =
      +        $self->splitpath( $base, 1 ) ;
      +
      +    # Now, remove all leading components that are the same
      +    my @pathchunks = $self->splitdir( $path_directories );
      +    my @basechunks = $self->splitdir( $base_directories );
      +
      +    while ( @pathchunks && 
      +            @basechunks && 
      +            lc( $pathchunks[0] ) eq lc( $basechunks[0] ) 
      +          ) {
      +        shift @pathchunks ;
      +        shift @basechunks ;
      +    }
      +
      +    # No need to catdir, we know these are well formed.
      +    $path_directories = CORE::join( '\\', @pathchunks );
      +    $base_directories = CORE::join( '\\', @basechunks );
      +
      +    # $base_directories now contains the directories the resulting relative
      +    # path must ascend out of before it can descend to $path_directory.  So, 
      +    # replace all names with $parentDir
      +
      +    #FA Need to replace between backslashes...
      +    $base_directories =~ s|[^\\]+|..|g ;
      +
      +    # Glue the two together, using a separator if necessary, and preventing an
      +    # empty result.
      +
      +    #FA Must check that new directories are not empty.
      +    if ( $path_directories ne '' && $base_directories ne '' ) {
      +        $path_directories = "$base_directories\\$path_directories" ;
      +    } else {
      +        $path_directories = "$base_directories$path_directories" ;
      +    }
      +
      +    # It makes no sense to add a relative path to a UNC volume
      +    $path_volume = '' unless $path_volume =~ m{^[A-Z]:}is ;
      +
      +    return $self->canonpath( 
      +        $self->catpath($path_volume, $path_directories, $path_file ) 
      +    ) ;
      +}
      +
      +=item rel2abs
      +
      +Converts a relative path to an absolute path. 
      +
      +    $abs_path = File::Spec->rel2abs( $destination ) ;
      +    $abs_path = File::Spec->rel2abs( $destination, $base ) ;
      +
      +If $base is not present or '', then L is used. If $base is relative, 
      +then it is converted to absolute form using L. This means that it
      +is taken to be relative to L.
      +
      +Assumes that both paths are on the $base volume, and ignores the 
      +$destination volume. 
      +
      +On systems that have a grammar that indicates filenames, this ignores the 
      +$base filename as well. Otherwise all path components are assumed to be
      +directories.
      +
      +If $path is absolute, it is cleaned up and returned using L.
      +
      +Based on code written by Shigio Yamaguchi.
      +
      +No checks against the filesystem are made. 
      +
      +=cut
      +
      +sub rel2abs($;$;) {
      +    my ($self,$path,$base ) = @_;
      +
      +    if ( ! $self->file_name_is_absolute( $path ) ) {
      +
      +        if ( !defined( $base ) || $base eq '' ) {
      +            $base = cwd() ;
      +        }
      +        elsif ( ! $self->file_name_is_absolute( $base ) ) {
      +            $base = $self->rel2abs( $base ) ;
      +        }
      +        else {
      +            $base = $self->canonpath( $base ) ;
      +        }
      +
      +        my ( undef, $path_directories, $path_file ) =
      +            $self->splitpath( $path, 1 ) ;
      +
      +        my ( $base_volume, $base_directories, undef ) =
      +            $self->splitpath( $base, 1 ) ;
      +
      +        $path = $self->catpath( 
      +            $base_volume, 
      +            $self->catdir( $base_directories, $path_directories ), 
      +            $path_file
      +        ) ;
      +    }
      +
      +    return $self->canonpath( $path ) ;
      +}
       
       =back
       
      -=cut 
      +=head1 SEE ALSO
       
      +L
      +
      +=cut
      +
      +1;
      diff --git a/contrib/perl5/lib/File/stat.pm b/contrib/perl5/lib/File/stat.pm
      index f5d17f7da443..0cf7a0b7aa82 100644
      --- a/contrib/perl5/lib/File/stat.pm
      +++ b/contrib/perl5/lib/File/stat.pm
      @@ -1,9 +1,11 @@
       package File::stat;
       use strict;
       
      +use 5.005_64;
      +our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
      +
       BEGIN { 
           use Exporter   ();
      -    use vars       qw(@EXPORT @EXPORT_OK %EXPORT_TAGS);
           @EXPORT      = qw(stat lstat);
           @EXPORT_OK   = qw( $st_dev	   $st_ino    $st_mode 
       		       $st_nlink   $st_uid    $st_gid 
      @@ -13,7 +15,7 @@ BEGIN {
       		    );
           %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
       }
      -use vars      @EXPORT_OK;
      +use vars @EXPORT_OK;
       
       # Class::Struct forbids use of @ISA
       sub import { goto &Exporter::import }
      diff --git a/contrib/perl5/lib/FileHandle.pm b/contrib/perl5/lib/FileHandle.pm
      index eec9b61f31bb..34c3475d9c41 100644
      --- a/contrib/perl5/lib/FileHandle.pm
      +++ b/contrib/perl5/lib/FileHandle.pm
      @@ -1,8 +1,8 @@
       package FileHandle;
       
      -use 5.003_11;
      +use 5.005_64;
       use strict;
      -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
      +our($VERSION, @ISA, @EXPORT, @EXPORT_OK);
       
       $VERSION = "2.00";
       
      diff --git a/contrib/perl5/lib/FindBin.pm b/contrib/perl5/lib/FindBin.pm
      index 9e1c0a06bf2a..5d4c575cbcd2 100644
      --- a/contrib/perl5/lib/FindBin.pm
      +++ b/contrib/perl5/lib/FindBin.pm
      @@ -82,7 +82,7 @@ use File::Spec;
       %EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]);
       @ISA = qw(Exporter);
       
      -$VERSION = $VERSION = "1.42";
      +$VERSION = "1.42";
       
       BEGIN
       {
      @@ -102,7 +102,7 @@ BEGIN
       
          if ($^O eq 'VMS')
           {
      -     ($Bin,$Script) = VMS::Filespec::rmsexpand($0) =~ /(.*\])(.*)/;
      +     ($Bin,$Script) = VMS::Filespec::rmsexpand($0) =~ /(.*\])(.*)/s;
            ($RealBin,$RealScript) = ($Bin,$Script);
           }
          else
      diff --git a/contrib/perl5/lib/Getopt/Long.pm b/contrib/perl5/lib/Getopt/Long.pm
      index c125ccf443cf..f474c7c4a978 100644
      --- a/contrib/perl5/lib/Getopt/Long.pm
      +++ b/contrib/perl5/lib/Getopt/Long.pm
      @@ -2,29 +2,30 @@
       
       package Getopt::Long;
       
      -# RCS Status      : $Id: GetoptLong.pl,v 2.18 1998-06-14 15:02:19+02 jv Exp $
      +# RCS Status      : $Id: GetoptLong.pl,v 2.24 2000-03-14 21:28:52+01 jv Exp $
       # Author          : Johan Vromans
       # Created On      : Tue Sep 11 15:00:12 1990
       # Last Modified By: Johan Vromans
      -# Last Modified On: Fri Jan  8 14:48:43 1999
      -# Update Count    : 707
      +# Last Modified On: Tue Mar 14 21:28:40 2000
      +# Update Count    : 721
       # Status          : Released
       
       ################ Copyright ################
       
      -# This program is Copyright 1990,1999 by Johan Vromans.
      +# This program is Copyright 1990,2000 by Johan Vromans.
       # This program is free software; you can redistribute it and/or
      -# modify it under the terms of the GNU General Public License
      -# as published by the Free Software Foundation; either version 2
      -# of the License, or (at your option) any later version.
      -# 
      +# modify it under the terms of the Perl Artistic License or the
      +# GNU General Public License as published by the Free Software
      +# Foundation; either version 2 of the License, or (at your option) any
      +# later version.
      +#
       # This program is distributed in the hope that it will be useful,
       # but WITHOUT ANY WARRANTY; without even the implied warranty of
       # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       # GNU General Public License for more details.
      -# 
      +#
       # If you do not have a copy of the GNU General Public License write to
      -# the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, 
      +# the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
       # MA 02139, USA.
       
       ################ Module Preamble ################
      @@ -35,7 +36,7 @@ BEGIN {
           require 5.004;
           use Exporter ();
           use vars     qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
      -    $VERSION     = "2.19";
      +    $VERSION     = "2.23";
       
           @ISA         = qw(Exporter);
           @EXPORT      = qw(&GetOptions $REQUIRE_ORDER $PERMUTE $RETURN_IN_ORDER);
      @@ -51,14 +52,14 @@ use vars qw($error $debug $major_version $minor_version);
       use vars qw($autoabbrev $getopt_compat $ignorecase $bundling $order
       	    $passthrough);
       # Official invisible variables.
      -use vars qw($genprefix);
      +use vars qw($genprefix $caller);
       
      -# Public subroutines. 
      +# Public subroutines.
       sub Configure (@);
       sub config (@);			# deprecated name
       sub GetOptions;
       
      -# Private subroutines. 
      +# Private subroutines.
       sub ConfigDefaults ();
       sub FindOption ($$$$$$$);
       sub Croak (@);			# demand loading the real Croak
      @@ -97,8 +98,7 @@ sub ConfigDefaults () {
       # Version major/minor numbers.
       ($major_version, $minor_version) = $VERSION =~ /^(\d+)\.(\d+)/;
       
      -# Set defaults.
      -ConfigDefaults ();
      +ConfigDefaults();
       
       ################ Package return ################
       
      @@ -108,12 +108,12 @@ __END__
       
       ################ AutoLoading subroutines ################
       
      -# RCS Status      : $Id: GetoptLongAl.pl,v 2.20 1998-06-14 15:02:19+02 jv Exp $
      +# RCS Status      : $Id: GetoptLongAl.pl,v 2.27 2000-03-17 09:07:26+01 jv Exp $
       # Author          : Johan Vromans
       # Created On      : Fri Mar 27 11:50:30 1998
       # Last Modified By: Johan Vromans
      -# Last Modified On: Sun Jun 14 13:54:35 1998
      -# Update Count    : 24
      +# Last Modified On: Fri Mar 17 09:00:09 2000
      +# Update Count    : 55
       # Status          : Released
       
       sub GetOptions {
      @@ -122,7 +122,7 @@ sub GetOptions {
           my $argend = '--';		# option list terminator
           my %opctl = ();		# table of arg.specs (long and abbrevs)
           my %bopctl = ();		# table of arg.specs (bundles)
      -    my $pkg = (caller)[0];	# current context
      +    my $pkg = $caller || (caller)[0];	# current context
       				# Needed if linkage is omitted.
           my %aliases= ();		# alias table
           my @ret = ();		# accum for non-options
      @@ -137,7 +137,7 @@ sub GetOptions {
           print STDERR ("GetOpt::Long $Getopt::Long::VERSION ",
       		  "called from package \"$pkg\".",
       		  "\n  ",
      -		  'GetOptionsAl $Revision: 2.20 $ ',
      +		  'GetOptionsAl $Revision: 2.27 $ ',
       		  "\n  ",
       		  "ARGV: (@ARGV)",
       		  "\n  ",
      @@ -152,9 +152,9 @@ sub GetOptions {
       		  "\n")
       	if $debug;
       
      -    # Check for ref HASH as first argument. 
      +    # Check for ref HASH as first argument.
           # First argument may be an object. It's OK to use this as long
      -    # as it is really a hash underneath. 
      +    # as it is really a hash underneath.
           $userlinkage = undef;
           if ( ref($optionlist[0]) and
       	 "$optionlist[0]" =~ /^(?:.*\=)?HASH\([^\(]*\)$/ ) {
      @@ -164,7 +164,11 @@ sub GetOptions {
       
           # See if the first element of the optionlist contains option
           # starter characters.
      -    if ( $optionlist[0] =~ /^\W+$/ ) {
      +    # Be careful not to interpret '<>' as option starters.
      +    if ( $optionlist[0] =~ /^\W+$/
      +	 && !($optionlist[0] eq '<>'
      +	      && @optionlist > 0
      +	      && ref($optionlist[1])) ) {
       	$genprefix = shift (@optionlist);
       	# Turn into regexp. Needs to be parenthesized!
       	$genprefix =~ s/(\W)/\\$1/g;
      @@ -187,7 +191,7 @@ sub GetOptions {
       		&& ref($userlinkage->{$opt}) ) {
       		unshift (@optionlist, $userlinkage->{$opt});
       	    }
      -	    unless ( @optionlist > 0 
      +	    unless ( @optionlist > 0
       		    && ref($optionlist[0]) && ref($optionlist[0]) eq 'CODE' ) {
       		$error .= "Option spec <> requires a reference to a subroutine\n";
       		next;
      @@ -215,7 +219,7 @@ sub GetOptions {
       	    # Force an alias if the option name is not locase.
       	    $a = $o unless $o eq lc($o);
       	    $o = lc ($o)
      -		if $ignorecase > 1 
      +		if $ignorecase > 1
       		    || ($ignorecase
       			&& ($bundling ? length($o) > 1  : 1));
       
      @@ -225,17 +229,21 @@ sub GetOptions {
       		    if ( $c eq '!' ) {
       			$opctl{"no$_"} = $c;
       			warn ("Ignoring '!' modifier for short option $_\n");
      -			$c = '';
      +			$opctl{$_} = $bopctl{$_} = '';
      +		    }
      +		    else {
      +			$opctl{$_} = $bopctl{$_} = $c;
       		    }
      -		    $opctl{$_} = $bopctl{$_} = $c;
       		}
       		else {
       		    $_ = lc ($_) if $ignorecase;
       		    if ( $c eq '!' ) {
       			$opctl{"no$_"} = $c;
      -			$c = '';
      +			$opctl{$_} = ''
      +		    }
      +		    else {
      +			$opctl{$_} = $c;
       		    }
      -		    $opctl{$_} = $c;
       		}
       		if ( defined $a ) {
       		    # Note alias.
      @@ -278,7 +286,7 @@ sub GetOptions {
       		$opctl{$o} .= '@'
       		  if $opctl{$o} ne '' and $opctl{$o} !~ /\@$/;
       		$bopctl{$o} .= '@'
      -		  if $bundling and defined $bopctl{$o} and 
      +		  if $bundling and defined $bopctl{$o} and
       		    $bopctl{$o} ne '' and $bopctl{$o} !~ /\@$/;
       	    }
       	    elsif ( ref($optionlist[0]) =~ /^(HASH)$/ ) {
      @@ -286,7 +294,7 @@ sub GetOptions {
       		$opctl{$o} .= '%'
       		  if $opctl{$o} ne '' and $opctl{$o} !~ /\%$/;
       		$bopctl{$o} .= '%'
      -		  if $bundling and defined $bopctl{$o} and 
      +		  if $bundling and defined $bopctl{$o} and
       		    $bopctl{$o} ne '' and $bopctl{$o} !~ /\%$/;
       	    }
       	    else {
      @@ -339,7 +347,8 @@ sub GetOptions {
           }
       
           # Process argument list
      -    while ( @ARGV > 0 ) {
      +    my $goon = 1;
      +    while ( $goon && @ARGV > 0 ) {
       
       	#### Get next argument ####
       
      @@ -351,7 +360,7 @@ sub GetOptions {
       	# Double dash is option list terminator.
       	if ( $opt eq $argend ) {
       	    # Finish. Push back accumulated arguments and return.
      -	    unshift (@ARGV, @ret) 
      +	    unshift (@ARGV, @ret)
       		if $order == $PERMUTE;
       	    return ($error == 0);
       	}
      @@ -359,16 +368,16 @@ sub GetOptions {
       	my $tryopt = $opt;
       	my $found;		# success status
       	my $dsttype;		# destination type ('@' or '%')
      -	my $incr;		# destination increment 
      +	my $incr;		# destination increment
       	my $key;		# key (if hash type)
       	my $arg;		# option argument
       
      -	($found, $opt, $arg, $dsttype, $incr, $key) = 
      -	  FindOption ($genprefix, $argend, $opt, 
      +	($found, $opt, $arg, $dsttype, $incr, $key) =
      +	  FindOption ($genprefix, $argend, $opt,
       		      \%opctl, \%bopctl, \@opctl, \%aliases);
       
       	if ( $found ) {
      -	    
      +
       	    # FindOption undefines $opt in case of errors.
       	    next unless defined $opt;
       
      @@ -409,7 +418,20 @@ sub GetOptions {
       		    elsif ( ref($linkage{$opt}) eq 'CODE' ) {
       			print STDERR ("=> &L{$opt}(\"$opt\", \"$arg\")\n")
       			    if $debug;
      -			&{$linkage{$opt}}($opt, $arg);
      +			local ($@);
      +			eval {
      +			    &{$linkage{$opt}}($opt, $arg);
      +			};
      +			print STDERR ("=> die($@)\n") if $debug && $@ ne '';
      +			if ( $@ =~ /^!/ ) {
      +			    if ( $@ =~ /^!FINISH\b/ ) {
      +				$goon = 0;
      +			    }
      +			}
      +			elsif ( $@ ne '' ) {
      +			    warn ($@);
      +			    $error++;
      +			}
       		    }
       		    else {
       			print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
      @@ -466,7 +488,20 @@ sub GetOptions {
       	    # Try non-options call-back.
       	    my $cb;
       	    if ( (defined ($cb = $linkage{'<>'})) ) {
      -		&$cb ($tryopt);
      +		local ($@);
      +		eval {
      +		    &$cb ($tryopt);
      +		};
      +		print STDERR ("=> die($@)\n") if $debug && $@ ne '';
      +		if ( $@ =~ /^!/ ) {
      +		    if ( $@ =~ /^!FINISH\b/ ) {
      +			$goon = 0;
      +		    }
      +		}
      +		elsif ( $@ ne '' ) {
      +		    warn ($@);
      +		    $error++;
      +		}
       	    }
       	    else {
       		print STDERR ("=> saving \"$tryopt\" ",
      @@ -523,7 +558,7 @@ sub FindOption ($$$$$$$) {
       	&& $opt =~ /^([^=]+)=(.*)$/s ) {
       	$opt = $1;
       	$optarg = $2;
      -	print STDERR ("=> option \"", $opt, 
      +	print STDERR ("=> option \"", $opt,
       		      "\", optarg = \"$optarg\"\n") if $debug;
           }
       
      @@ -554,7 +589,7 @@ sub FindOption ($$$$$$$) {
       	    $tryopt .= $rest;
       	    undef $rest;
       	}
      -    } 
      +    }
       
           # Try auto-abbreviation.
           elsif ( $autoabbrev ) {
      @@ -640,7 +675,7 @@ sub FindOption ($$$$$$$) {
           ($mand, $type, $dsttype, $key) = $type =~ /^(.)(.)([@%]?)$/;
       
           # Check if there is an option argument available.
      -    if ( defined $optarg ? ($optarg eq '') 
      +    if ( defined $optarg ? ($optarg eq '')
       	 : !(defined $rest || @ARGV > 0) ) {
       	# Complain if this option needs an argument.
       	if ( $mand eq "=" ) {
      @@ -662,17 +697,17 @@ sub FindOption ($$$$$$$) {
           # Get key if this is a "name=value" pair for a hash option.
           $key = undef;
           if ($dsttype eq '%' && defined $arg) {
      -	($key, $arg) = ($arg =~ /^(.*)=(.*)$/s) ? ($1, $2) : ($arg, 1);
      +	($key, $arg) = ($arg =~ /^([^=]*)=(.*)$/s) ? ($1, $2) : ($arg, 1);
           }
       
           #### Check if the argument is valid for this option ####
       
           if ( $type eq "s" ) {	# string
      -	# A mandatory string takes anything. 
      +	# A mandatory string takes anything.
       	return (1, $opt,$arg,$dsttype,$incr,$key) if $mand eq "=";
       
      -	# An optional string takes almost anything. 
      -	return (1, $opt,$arg,$dsttype,$incr,$key) 
      +	# An optional string takes almost anything.
      +	return (1, $opt,$arg,$dsttype,$incr,$key)
       	  if defined $optarg || defined $rest;
       	return (1, $opt,$arg,$dsttype,$incr,$key) if $arg eq "-"; # ??
       
      @@ -687,12 +722,12 @@ sub FindOption ($$$$$$$) {
           }
       
           elsif ( $type eq "n" || $type eq "i" ) { # numeric/integer
      -	if ( $bundling && defined $rest && $rest =~ /^(-?[0-9]+)(.*)$/s ) {
      +	if ( $bundling && defined $rest && $rest =~ /^([-+]?[0-9]+)(.*)$/s ) {
       	    $arg = $1;
       	    $rest = $2;
       	    unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
       	}
      -	elsif ( $arg !~ /^-?[0-9]+$/ ) {
      +	elsif ( $arg !~ /^[-+]?[0-9]+$/ ) {
       	    if ( defined $optarg || $mand eq "=" ) {
       		if ( $passthrough ) {
       		    unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
      @@ -720,12 +755,12 @@ sub FindOption ($$$$$$$) {
       	# and at least one digit following the point and 'e'.
       	# [-]NN[.NN][eNN]
       	if ( $bundling && defined $rest &&
      -	     $rest =~ /^(-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?)(.*)$/s ) {
      +	     $rest =~ /^([-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)?)(.*)$/s ) {
       	    $arg = $1;
       	    $rest = $+;
       	    unshift (@ARGV, $starter.$rest) if defined $rest && $rest ne '';
       	}
      -	elsif ( $arg !~ /^-?[0-9.]+(\.[0-9]+)?([eE]-?[0-9]+)?$/ ) {
      +	elsif ( $arg !~ /^[-+]?[0-9.]+(\.[0-9]+)?([eE][-+]?[0-9]+)?$/ ) {
       	    if ( defined $optarg || $mand eq "=" ) {
       		if ( $passthrough ) {
       		    unshift (@ARGV, defined $rest ? $starter.$rest : $arg)
      @@ -756,6 +791,18 @@ sub FindOption ($$$$$$$) {
       # Getopt::Long Configuration.
       sub Configure (@) {
           my (@options) = @_;
      +
      +    my $prevconfig =
      +      [ $error, $debug, $major_version, $minor_version,
      +	$autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
      +	$passthrough, $genprefix ];
      +
      +    if ( ref($options[0]) eq 'ARRAY' ) {
      +	( $error, $debug, $major_version, $minor_version,
      +	  $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
      +	  $passthrough, $genprefix ) = @{shift(@options)};
      +    }
      +
           my $opt;
           foreach $opt ( @options ) {
       	my $try = lc ($opt);
      @@ -804,7 +851,7 @@ sub Configure (@) {
       	elsif ( $try =~ /^prefix_pattern=(.+)$/ ) {
       	    $genprefix = $1;
       	    # Parenthesize if needed.
      -	    $genprefix = "(" . $genprefix . ")" 
      +	    $genprefix = "(" . $genprefix . ")"
       	      unless $genprefix =~ /^\(.*\)$/;
       	    eval { '' =~ /$genprefix/; };
       	    Croak ("Getopt::Long: invalid pattern \"$genprefix\"") if $@;
      @@ -816,6 +863,7 @@ sub Configure (@) {
       	    Croak ("Getopt::Long: unknown config parameter \"$opt\"")
       	}
           }
      +    $prevconfig;
       }
       
       # Deprecated name.
      @@ -834,7 +882,7 @@ sub Croak (@) {
       
       =head1 NAME
       
      -GetOptions - extended processing of command line options
      +Getopt::Long - Extended processing of command line options
       
       =head1 SYNOPSIS
       
      @@ -849,350 +897,548 @@ line options, with GNU extensions. In general, this means that options
       have long names instead of single letters, and are introduced with a
       double dash "--". Support for bundling of command line options, as was
       the case with the more traditional single-letter approach, is provided
      -but not enabled by default. For example, the UNIX "ps" command can be
      -given the command line "option"
      +but not enabled by default.
       
      -  -vax
      +=head1 Command Line Options, an Introduction
       
      -which means the combination of B<-v>, B<-a> and B<-x>. With the new
      -syntax B<--vax> would be a single option, probably indicating a
      -computer architecture. 
      +Command line operated programs traditionally take their arguments from
      +the command line, for example filenames or other information that the
      +program needs to know. Besides arguments, these programs often take
      +command line I as well. Options are not necessary for the
      +program to work, hence the name 'option', but are used to modify its
      +default behaviour. For example, a program could do its job quietly,
      +but with a suitable option it could provide verbose information about
      +what it did.
       
      -Command line options can be used to set values. These values can be
      -specified in one of two ways:
      +Command line options come in several flavours. Historically, they are
      +preceded by a single dash C<->, and consist of a single letter.
       
      -  --size 24
      -  --size=24
      +    -l -a -c
       
      -GetOptions is called with a list of option-descriptions, each of which
      -consists of two elements: the option specifier and the option linkage.
      -The option specifier defines the name of the option and, optionally,
      -the value it can take. The option linkage is usually a reference to a
      -variable that will be set when the option is used. For example, the
      -following call to GetOptions:
      +Usually, these single-character options can be bundled:
       
      -  GetOptions("size=i" => \$offset);
      +    -lac
       
      -will accept a command line option "size" that must have an integer
      -value. With a command line of "--size 24" this will cause the variable
      -$offset to get the value 24.
      +Options can have values, the value is placed after the option
      +character. Sometimes with whitespace in between, sometimes not:
       
      -Alternatively, the first argument to GetOptions may be a reference to
      -a HASH describing the linkage for the options, or an object whose
      -class is based on a HASH. The following call is equivalent to the
      -example above:
      +    -s 24 -s24
       
      -  %optctl = ("size" => \$offset);
      -  GetOptions(\%optctl, "size=i");
      +Due to the very cryptic nature of these options, another style was
      +developed that used long names. So instead of a cryptic C<-l> one
      +could use the more descriptive C<--long>. To distinguish between a
      +bundle of single-character options and a long one, two dashes are used
      +to precede the option name. Early implementations of long options used
      +a plus C<+> instead. Also, option values could be specified either
      +like 
       
      -Linkage may be specified using either of the above methods, or both.
      -Linkage specified in the argument list takes precedence over the
      -linkage specified in the HASH.
      +    --size=24
       
      -The command line options are taken from array @ARGV. Upon completion
      -of GetOptions, @ARGV will contain the rest (i.e. the non-options) of
      -the command line.
      - 
      -Each option specifier designates the name of the option, optionally
      -followed by an argument specifier.
      +or
       
      -Options that do not take arguments will have no argument specifier. 
      -The option variable will be set to 1 if the option is used.
      +    --size 24
       
      -For the other options, the values for argument specifiers are:
      +The C<+> form is now obsolete and strongly deprecated.
       
      -=over 8
      +=head1 Getting Started with Getopt::Long
      +
      +Getopt::Long is the Perl5 successor of C. This was
      +the firs Perl module that provided support for handling the new style
      +of command line options, hence the name Getopt::Long. This module
      +also supports single-character options and bundling. In this case, the
      +options are restricted to alphabetic characters only, and the
      +characters C and C<->.
      +
      +To use Getopt::Long from a Perl program, you must include the
      +following line in your Perl program:
      +
      +    use Getopt::Long;
      +
      +This will load the core of the Getopt::Long module and prepare your
      +program for using it. Most of the actual Getopt::Long code is not
      +loaded until you really call one of its functions.
      +
      +In the default configuration, options names may be abbreviated to
      +uniqueness, case does not matter, and a single dash is sufficient,
      +even for long option names. Also, options may be placed between
      +non-option arguments. See L for more
      +details on how to configure Getopt::Long.
      +
      +=head2 Simple options
      +
      +The most simple options are the ones that take no values. Their mere
      +presence on the command line enables the option. Popular examples are:
      +
      +    --all --verbose --quiet --debug
      +
      +Handling simple options is straightforward:
      +
      +    my $verbose = '';	# option variable with default value (false)
      +    my $all = '';	# option variable with default value (false)
      +    GetOptions ('verbose' => \$verbose, 'all' => \$all);
      +
      +The call to GetOptions() parses the command line arguments that are
      +present in C<@ARGV> and sets the option variable to the value C<1> if
      +the option did occur on the command line. Otherwise, the option
      +variable is not touched. Setting the option value to true is often
      +called I the option.
      +
      +The option name as specified to the GetOptions() function is called
      +the option I. Later we'll see that this specification
      +can contain more than just the option name. The reference to the
      +variable is called the option I.
      +
      +GetOptions() will return a true value if the command line could be
      +processed successfully. Otherwise, it will write error messages to
      +STDERR, and return a false result.
      +
      +=head2 A little bit less simple options
      +
      +Getopt::Long supports two useful variants of simple options:
      +I options and I options.
      +
      +A negatable option is specified with a exclamation mark C after the
      +option name:
      +
      +    my $verbose = '';	# option variable with default value (false)
      +    GetOptions ('verbose!' => \$verbose);
      +
      +Now, using C<--verbose> on the command line will enable C<$verbose>,
      +as expected. But it is also allowed to use C<--noverbose>, which will
      +disable C<$verbose> by setting its value to C<0>. Using a suitable
      +default value, the program can find out whether C<$verbose> is false
      +by default, or disabled by using C<--noverbose>.
      +
      +An incremental option is specified with a plus C<+> after the
      +option name:
      +
      +    my $verbose = '';	# option variable with default value (false)
      +    GetOptions ('verbose+' => \$verbose);
      +
      +Using C<--verbose> on the command line will increment the value of
      +C<$verbose>. This way the program can keep track of how many times the
      +option occurred on the command line. For example, each occurrence of
      +C<--verbose> could increase the verbosity level of the program.
      +
      +=head2 Mixing command line option with other arguments
      +
      +Usually programs take command line options as well as other arguments,
      +for example, file names. It is good practice to always specify the
      +options first, and the other arguments last. Getopt::Long will,
      +however, allow the options and arguments to be mixed and 'filter out'
      +all the options before passing the rest of the arguments to the
      +program. To stop Getopt::Long from processing further arguments,
      +insert a double dash C<--> on the command line:
      +
      +    --size 24 -- --all
      +
      +In this example, C<--all> will I be treated as an option, but
      +passed to the program unharmed, in C<@ARGV>.
      +
      +=head2 Options with values
      +
      +For options that take values it must be specified whether the option
      +value is required or not, and what kind of value the option expects.
      +
      +Three kinds of values are supported: integer numbers, floating point
      +numbers, and strings.
      +
      +If the option value is required, Getopt::Long will take the
      +command line argument that follows the option and assign this to the
      +option variable. If, however, the option value is specified as
      +optional, this will only be done if that value does not look like a
      +valid command line option itself.
      +
      +    my $tag = '';	# option variable with default value
      +    GetOptions ('tag=s' => \$tag);
      +
      +In the option specification, the option name is followed by an equals
      +sign C<=> and the letter C. The equals sign indicates that this
      +option requires a value. The letter C indicates that this value is
      +an arbitrary string. Other possible value types are C for integer
      +values, and C for floating point values. Using a colon C<:> instead
      +of the equals sign indicates that the option value is optional. In
      +this case, if no suitable value is supplied, string valued options get
      +an empty string C<''> assigned, while numeric options are set to C<0>.
      +
      +=head2 Options with multiple values
      +
      +Options sometimes take several values. For example, a program could
      +use multiple directories to search for library files:
      +
      +    --library lib/stdlib --library lib/extlib
      +
      +To accomplish this behaviour, simply specify an array reference as the
      +destination for the option:
      +
      +    my @libfiles = ();
      +    GetOptions ("library=s" => \@libfiles);
      +
      +Used with the example above, C<@libfiles> would contain two strings
      +upon completion: C<"lib/srdlib"> and C<"lib/extlib">, in that order.
      +It is also possible to specify that only integer or floating point
      +numbers are acceptible values.
      +
      +Often it is useful to allow comma-separated lists of values as well as
      +multiple occurrences of the options. This is easy using Perl's split()
      +and join() operators:
      +
      +    my @libfiles = ();
      +    GetOptions ("library=s" => \@libfiles);
      +    @libfiles = split(/,/,join(',',@libfiles));
      +
      +Of course, it is important to choose the right separator string for
      +each purpose.
      +
      +=head2 Options with hash values
      +
      +If the option destination is a reference to a hash, the option will
      +take, as value, strings of the form IC<=>I. The value will
      +be stored with the specified key in the hash.
      +
      +    my %defines = ();
      +    GetOptions ("define=s" => \%defines);
      +
      +When used with command line options:
      +
      +    --define os=linux --define vendor=redhat
      +
      +the hash C<%defines> will contain two keys, C<"os"> with value
      +C<"linux> and C<"vendor"> with value C<"redhat">.
      +It is also possible to specify that only integer or floating point
      +numbers are acceptible values. The keys are always taken to be strings.
      +
      +=head2 User-defined subroutines to handle options
      +
      +Ultimate control over what should be done when (actually: each time)
      +an option is encountered on the command line can be achieved by
      +designating a reference to a subroutine (or an anonymous subroutine)
      +as the option destination. When GetOptions() encounters the option, it
      +will call the subroutine with two arguments: the name of the option,
      +and the value to be assigned. It is up to the subroutine to store the
      +value, or do whatever it thinks is appropriate.
      +
      +A trivial application of this mechanism is to implement options that
      +are related to each other. For example:
      +
      +    my $verbose = '';	# option variable with default value (false)
      +    GetOptions ('verbose' => \$verbose,
      +	        'quiet'   => sub { $verbose = 0 });
      +
      +Here C<--verbose> and C<--quiet> control the same variable
      +C<$verbose>, but with opposite values.
      +
      +If the subroutine needs to signal an error, it should call die() with
      +the desired error message as its argument. GetOptions() will catch the
      +die(), issue the error message, and record that an error result must
      +be returned upon completion.
      +
      +If the text of the error message starts with an exclamantion mark C
      +it is interpreted specially by GetOptions(). There is currently one
      +special command implemented: C will cause GetOptions()
      +to stop processing options, as if it encountered a double dash C<-->.
      +
      +=head2 Options with multiple names
      +
      +Often it is user friendly to supply alternate mnemonic names for
      +options. For example C<--height> could be an alternate name for
      +C<--length>. Alternate names can be included in the option
      +specification, separated by vertical bar C<|> characters. To implement
      +the above example:
      +
      +    GetOptions ('length|height=f' => \$length);
      +
      +The first name is called the I name, the other names are
      +called I.
      +
      +Multiple alternate names are possible.
      +
      +=head2 Case and abbreviations
      +
      +Without additional configuration, GetOptions() will ignore the case of
      +option names, and allow the options to be abbreviated to uniqueness.
      +
      +    GetOptions ('length|height=f' => \$length, "head" => \$head);
      +
      +This call will allow C<--l> and C<--L> for the length option, but
      +requires a least C<--hea> and C<--hei> for the head and height options.
      +
      +=head2 Summary of Option Specifications
      +
      +Each option specifier consists of two parts: the name specification
      +and the argument specification. 
      +
      +The name specification contains the name of the option, optionally
      +followed by a list of alternative names separated by vertical bar
      +characters. 
      +
      +    length	      option name is "length"
      +    length|size|l     name is "length", aliases are "size" and "l"
      +
      +The argument specification is optional. If omitted, the option is
      +considered boolean, a value of 1 will be assigned when the option is
      +used on the command line.
      +
      +The argument specification can be
      +
      +=over
       
       =item !
       
      -Option does not take an argument and may be negated, i.e. prefixed by
      -"no". E.g. "foo!" will allow B<--foo> (with value 1) and B<-nofoo>
      -(with value 0).
      -The option variable will be set to 1, or 0 if negated.
      +The option does not take an argument and may be negated, i.e. prefixed
      +by "no". E.g. C<"foo!"> will allow C<--foo> (a value of 1 will be
      +assigned) and C<--nofoo> (a value of 0 will be assigned). If the
      +option has aliases, this applies to the aliases as well.
      +
      +Using negation on a single letter option when bundling is in effect is
      +pointless and will result in a warning.
       
       =item +
       
      -Option does not take an argument and will be incremented by 1 every
      -time it appears on the command line. E.g. "more+", when used with
      -B<--more --more --more>, will set the option variable to 3 (provided
      -it was 0 or undefined at first).
      +The option does not take an argument and will be incremented by 1
      +every time it appears on the command line. E.g. C<"more+">, when used
      +with C<--more --more --more>, will increment the value three times,
      +resulting in a value of 3 (provided it was 0 or undefined at first).
       
      -The B<+> specifier is ignored if the option destination is not a SCALAR.
      +The C<+> specifier is ignored if the option destination is not a scalar.
       
      -=item =s
      +=item = I [ I ]
       
      -Option takes a mandatory string argument.
      -This string will be assigned to the option variable.
      -Note that even if the string argument starts with B<-> or B<-->, it
      -will not be considered an option on itself.
      +The option requires an argument of the given type. Supported types
      +are:
       
      -=item :s
      +=over
       
      -Option takes an optional string argument.
      -This string will be assigned to the option variable.
      -If omitted, it will be assigned "" (an empty string).
      -If the string argument starts with B<-> or B<-->, it
      -will be considered an option on itself.
      +=item s
       
      -=item =i
      +String. An arbitrary sequence of characters. It is valid for the
      +argument to start with C<-> or C<-->.
       
      -Option takes a mandatory integer argument.
      -This value will be assigned to the option variable.
      -Note that the value may start with B<-> to indicate a negative
      -value. 
      +=item i
       
      -=item :i
      +Integer. An optional leading plus or minus sign, followed by a
      +sequence of digits.
       
      -Option takes an optional integer argument.
      -This value will be assigned to the option variable.
      -If omitted, the value 0 will be assigned.
      -Note that the value may start with B<-> to indicate a negative
      -value.
      +=item f
       
      -=item =f
      -
      -Option takes a mandatory real number argument.
      -This value will be assigned to the option variable.
      -Note that the value may start with B<-> to indicate a negative
      -value.
      -
      -=item :f
      -
      -Option takes an optional real number argument.
      -This value will be assigned to the option variable.
      -If omitted, the value 0 will be assigned.
      +Real number. For example C<3.14>, C<-6.23E24> and so on.
       
       =back
       
      -A lone dash B<-> is considered an option, the corresponding option
      -name is the empty string.
      +The I can be C<@> or C<%> to specify that the option is
      +list or a hash valued. This is only needed when the destination for
      +the option value is not otherwise specified. It should be omitted when
      +not needed.
       
      -A double dash on itself B<--> signals end of the options list.
      +=item : I [ I ]
       
      -=head2 Linkage specification
      +Like C<=>, but designates the argument as optional.
      +If omitted, an empty string will be assigned to string values options,
      +and the value zero to numeric options.
       
      -The linkage specifier is optional. If no linkage is explicitly
      -specified but a ref HASH is passed, GetOptions will place the value in
      -the HASH. For example:
      +Note that if a string argument starts with C<-> or C<-->, it will be
      +considered an option on itself.
       
      -  %optctl = ();
      -  GetOptions (\%optctl, "size=i");
      +=back
       
      -will perform the equivalent of the assignment
      +=head1 Advanced Possibilities
       
      -  $optctl{"size"} = 24;
      +=head2 Documentation and help texts
       
      -For array options, a reference to an array is used, e.g.:
      +Getopt::Long encourages the use of Pod::Usage to produce help
      +messages. For example:
       
      -  %optctl = ();
      -  GetOptions (\%optctl, "sizes=i@");
      +    use Getopt::Long;
      +    use Pod::Usage;
       
      -with command line "-sizes 24 -sizes 48" will perform the equivalent of
      -the assignment
      +    my $man = 0;
      +    my $help = 0;
       
      -  $optctl{"sizes"} = [24, 48];
      +    GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
      +    pod2usage(1) if $help;
      +    pod2usage(-exitstatus => 0, -verbose => 2) if $man;
       
      -For hash options (an option whose argument looks like "name=value"),
      -a reference to a hash is used, e.g.:
      +    __END__
       
      -  %optctl = ();
      -  GetOptions (\%optctl, "define=s%");
      +    =head1 NAME
       
      -with command line "--define foo=hello --define bar=world" will perform the
      -equivalent of the assignment
      +    sample - Using GetOpt::Long and Pod::Usage
       
      -  $optctl{"define"} = {foo=>'hello', bar=>'world')
      +    =head1 SYNOPSIS
      +
      +    sample [options] [file ...]
      +
      +     Options:
      +       -help            brief help message
      +       -man             full documentation
      +
      +    =head1 OPTIONS
      +
      +    =over 8
      +
      +    =item B<-help>
      +
      +    Print a brief help message and exits.
      +
      +    =item B<-man>
      +
      +    Prints the manual page and exits.
      +
      +    =back
      +
      +    =head1 DESCRIPTION
      +
      +    B will read the given input file(s) and do someting
      +    useful with the contents thereof.
      +
      +    =cut
      +
      +See L for details.
      +
      +=head2 Storing options in a hash
      +
      +Sometimes, for example when there are a lot of options, having a
      +separate variable for each of them can be cumbersome. GetOptions()
      +supports, as an alternative mechanism, storing options in a hash.
      +
      +To obtain this, a reference to a hash must be passed I to GetOptions(). For each option that is specified on the
      +command line, the option value will be stored in the hash with the
      +option name as key. Options that are not actually used on the command
      +line will not be put in the hash, on other words,
      +C (or defined()) can be used to test if an option
      +was used. The drawback is that warnings will be issued if the program
      +runs under C and uses C<$h{option}> without testing with
      +exists() or defined() first.
      +
      +    my %h = ();
      +    GetOptions (\%h, 'length=i');	# will store in $h{length}
      +
      +For options that take list or hash values, it is necessary to indicate
      +this by appending an C<@> or C<%> sign after the type:
      +
      +    GetOptions (\%h, 'colours=s@');	# will push to @{$h{colours}}
      +
      +To make things more complicated, the hash may contain references to
      +the actual destinations, for example:
      +
      +    my $len = 0;
      +    my %h = ('length' => \$len);
      +    GetOptions (\%h, 'length=i');	# will store in $len
      +
      +This example is fully equivalent with:
      +
      +    my $len = 0;
      +    GetOptions ('length=i' => \$len);	# will store in $len
      +
      +Any mixture is possible. For example, the most frequently used options
      +could be stored in variables while all other options get stored in the
      +hash:
      +
      +    my $verbose = 0;			# frequently referred
      +    my $debug = 0;			# frequently referred
      +    my %h = ('verbose' => \$verbose, 'debug' => \$debug);
      +    GetOptions (\%h, 'verbose', 'debug', 'filter', 'size=i');
      +    if ( $verbose ) { ... }
      +    if ( exists $h{filter} ) { ... option 'filter' was specified ... }
      +
      +=head2 Bundling
      +
      +With bundling it is possible to set several single-character options
      +at once. For example if C, C and C are all valid options,
      +
      +    -vax
      +
      +would set all three.
      +
      +Getopt::Long supports two levels of bundling. To enable bundling, a
      +call to Getopt::Long::Configure is required.
      +
      +The first level of bundling can be enabled with:
      +
      +    Getopt::Long::Configure ("bundling");
      +
      +Configured this way, single-character options can be bundled but long
      +options B always start with a double dash C<--> to avoid
      +abiguity. For example, when C, C, C and C are all valid
      +options,
      +
      +    -vax
      +
      +would set C, C and C, but 
      +
      +    --vax
      +
      +would set C.
      +
      +The second level of bundling lifts this restriction. It can be enabled
      +with:
      +
      +    Getopt::Long::Configure ("bundling_override");
      +
      +Now, C<-vax> would set the option C.
      +
      +When any level of bundling is enabled, option values may be inserted
      +in the bundle. For example:
      +
      +    -h24w80
      +
      +is equivalent to
      +
      +    -h 24 -w 80
      +
      +When configured for bundling, single-character options are matched
      +case sensitive while long options are matched case insensitive. To
      +have the single-character options matched case insensitive as well,
      +use:
      +
      +    Getopt::Long::Configure ("bundling", "ignorecase_always");
      +
      +It goes without saying that bundling can be quite confusing.
      +
      +=head2 The lonesome dash
      +
      +Some applications require the option C<-> (that's a lone dash). This
      +can be achieved by adding an option specification with an empty name:
      +
      +    GetOptions ('' => \$stdio);
      +
      +A lone dash on the command line will now be legal, and set options
      +variable C<$stdio>.
      +
      +=head2 Argument call-back
      +
      +A special option 'name' C<<>> can be used to designate a subroutine
      +to handle non-option arguments. When GetOptions() encounters an
      +argument that does not look like an option, it will immediately call this
      +subroutine and passes it the argument as a parameter.
       
      -If no linkage is explicitly specified and no ref HASH is passed,
      -GetOptions will put the value in a global variable named after the
      -option, prefixed by "opt_". To yield a usable Perl variable,
      -characters that are not part of the syntax for variables are
      -translated to underscores. For example, "--fpp-struct-return" will set
      -the variable $opt_fpp_struct_return. Note that this variable resides
      -in the namespace of the calling program, not necessarily B
      . For example: - GetOptions ("size=i", "sizes=i@"); + my $width = 80; + sub process { ... } + GetOptions ('width=i' => \$width, '<>' => \&process); -with command line "-size 10 -sizes 24 -sizes 48" will perform the -equivalent of the assignments +When applied to the following command line: - $opt_size = 10; - @opt_sizes = (24, 48); + arg1 --width=72 arg2 --width=60 arg3 -A lone dash B<-> is considered an option, the corresponding Perl -identifier is $opt_ . +This will call +C while C<$width> is C<80>, +C while C<$width> is C<72>, and +C while C<$width> is C<60>. -The linkage specifier can be a reference to a scalar, a reference to -an array, a reference to a hash or a reference to a subroutine. - -Note that, if your code is running under the recommended C pragma, it may be helpful to declare these package variables -via C perhaps something like this: - - use vars qw/ $opt_size @opt_sizes $opt_bar /; - -If a REF SCALAR is supplied, the new value is stored in the referenced -variable. If the option occurs more than once, the previous value is -overwritten. - -If a REF ARRAY is supplied, the new value is appended (pushed) to the -referenced array. - -If a REF HASH is supplied, the option value should look like "key" or -"key=value" (if the "=value" is omitted then a value of 1 is implied). -In this case, the element of the referenced hash with the key "key" -is assigned "value". - -If a REF CODE is supplied, the referenced subroutine is called with -two arguments: the option name and the option value. -The option name is always the true name, not an abbreviation or alias. - -=head2 Aliases and abbreviations - -The option name may actually be a list of option names, separated by -"|"s, e.g. "foo|bar|blech=s". In this example, "foo" is the true name -of this option. If no linkage is specified, options "foo", "bar" and -"blech" all will set $opt_foo. For convenience, the single character -"?" is allowed as an alias, e.g. "help|?". - -Option names may be abbreviated to uniqueness, depending on -configuration option B. - -=head2 Non-option call-back routine - -A special option specifier, EE, can be used to designate a subroutine -to handle non-option arguments. GetOptions will immediately call this -subroutine for every non-option it encounters in the options list. -This subroutine gets the name of the non-option passed. This feature requires configuration option B, see section -CONFIGURATION OPTIONS. +L. -See also the examples. -=head2 Option starters +=head1 Configuring Getopt::Long -On the command line, options can start with B<-> (traditional), B<--> -(POSIX) and B<+> (GNU, now being phased out). The latter is not -allowed if the environment variable B has been -defined. - -Options that start with "--" may have an argument appended, separated -with an "=", e.g. "--foo=bar". - -=head2 Return values and Errors - -Configuration errors and errors in the option definitions are -signalled using C and will terminate the calling -program unless the call to C was embedded -in C or C was trapped using C<$SIG{__DIE__}>. - -A return value of 1 (true) indicates success. - -A return status of 0 (false) indicates that the function detected one -or more errors during option parsing. These errors are signalled using -C and can be trapped with C<$SIG{__WARN__}>. - -Errors that can't happen are signalled using C. - -=head1 COMPATIBILITY - -Getopt::Long::GetOptions() is the successor of -B that came with Perl 4. It is fully upward compatible. -In fact, the Perl 5 version of newgetopt.pl is just a wrapper around -the module. - -If an "@" sign is appended to the argument specifier, the option is -treated as an array. Value(s) are not set, but pushed into array -@opt_name. If explicit linkage is supplied, this must be a reference -to an ARRAY. - -If an "%" sign is appended to the argument specifier, the option is -treated as a hash. Value(s) of the form "name=value" are set by -setting the element of the hash %opt_name with key "name" to "value" -(if the "=value" portion is omitted it defaults to 1). If explicit -linkage is supplied, this must be a reference to a HASH. - -If configuration option B is set (see section -CONFIGURATION OPTIONS), options that start with "+" or "-" may also -include their arguments, e.g. "+foo=bar". This is for compatiblity -with older implementations of the GNU "getopt" routine. - -If the first argument to GetOptions is a string consisting of only -non-alphanumeric characters, it is taken to specify the option starter -characters. Everything starting with one of these characters from the -starter will be considered an option. B - -For convenience, option specifiers may have a leading B<-> or B<-->, -so it is possible to write: - - GetOptions qw(-foo=s --bar=i --ar=s); - -=head1 EXAMPLES - -If the option specifier is "one:i" (i.e. takes an optional integer -argument), then the following situations are handled: - - -one -two -> $opt_one = '', -two is next option - -one -2 -> $opt_one = -2 - -Also, assume specifiers "foo=s" and "bar:s" : - - -bar -xxx -> $opt_bar = '', '-xxx' is next option - -foo -bar -> $opt_foo = '-bar' - -foo -- -> $opt_foo = '--' - -In GNU or POSIX format, option names and values can be combined: - - +foo=blech -> $opt_foo = 'blech' - --bar= -> $opt_bar = '' - --bar=-- -> $opt_bar = '--' - -Example of using variable references: - - $ret = GetOptions ('foo=s', \$foo, 'bar=i', 'ar=s', \@ar); - -With command line options "-foo blech -bar 24 -ar xx -ar yy" -this will result in: - - $foo = 'blech' - $opt_bar = 24 - @ar = ('xx','yy') - -Example of using the EE option specifier: - - @ARGV = qw(-foo 1 bar -foo 2 blech); - GetOptions("foo=i", \$myfoo, "<>", \&mysub); - -Results: - - mysub("bar") will be called (with $myfoo being 1) - mysub("blech") will be called (with $myfoo being 2) - -Compare this with: - - @ARGV = qw(-foo 1 bar -foo 2 blech); - GetOptions("foo=i", \$myfoo); - -This will leave the non-options in @ARGV: - - $myfoo -> 2 - @ARGV -> qw(bar blech) - -=head1 CONFIGURATION OPTIONS - -B can be configured by calling subroutine -B. This subroutine takes a list of quoted +Getopt::Long can be configured by calling subroutine +Getopt::Long::Configure(). This subroutine takes a list of quoted strings, each specifying a configuration option to be set, e.g. -B. Options can be reset by prefixing with B, e.g. -B. Case does not matter. Multiple calls to B -are possible. - -Previous versions of Getopt::Long used variables for the purpose of -configuring. Although manipulating these variables still work, it -is strongly encouraged to use the new B routine. Besides, it -is much easier. +C, or reset, e.g. C. Case does not +matter. Multiple calls to Configure() are possible. The following options are available: @@ -1207,122 +1453,102 @@ default values. Allow option names to be abbreviated to uniqueness. Default is set unless environment variable -POSIXLY_CORRECT has been set, in which case B is reset. +POSIXLY_CORRECT has been set, in which case C is reset. -=item getopt_compat +=item getopt_compat -Allow '+' to start options. +Allow C<+> to start options. Default is set unless environment variable -POSIXLY_CORRECT has been set, in which case B is reset. +POSIXLY_CORRECT has been set, in which case C is reset. =item require_order -Whether non-options are allowed to be mixed with -options. +Whether command line arguments are allowed to be mixed with options. Default is set unless environment variable -POSIXLY_CORRECT has been set, in which case b is reset. +POSIXLY_CORRECT has been set, in which case C is reset. -See also B, which is the opposite of B. +See also C, which is the opposite of C. =item permute -Whether non-options are allowed to be mixed with -options. +Whether command line arguments are allowed to be mixed with options. Default is set unless environment variable -POSIXLY_CORRECT has been set, in which case B is reset. -Note that B is the opposite of B. +POSIXLY_CORRECT has been set, in which case C is reset. +Note that C is the opposite of C. -If B is set, this means that +If C is set, this means that - -foo arg1 -bar arg2 arg3 + --foo arg1 --bar arg2 arg3 is equivalent to - -foo -bar arg1 arg2 arg3 + --foo --bar arg1 arg2 arg3 -If a non-option call-back routine is specified, @ARGV will always be -empty upon succesful return of GetOptions since all options have been -processed, except when B<--> is used: +If an argument call-back routine is specified, C<@ARGV> will always be +empty upon succesful return of GetOptions() since all options have been +processed. The only exception is when C<--> is used: - -foo arg1 -bar arg2 -- arg3 + --foo arg1 --bar arg2 -- arg3 will call the call-back routine for arg1 and arg2, and terminate -leaving arg2 in @ARGV. +GetOptions() leaving C<"arg2"> in C<@ARGV>. -If B is set, options processing +If C is set, options processing terminates when the first non-option is encountered. - -foo arg1 -bar arg2 arg3 + --foo arg1 --bar arg2 arg3 is equivalent to - -foo -- arg1 -bar arg2 arg3 + --foo -- arg1 --bar arg2 arg3 =item bundling (default: reset) -Setting this variable to a non-zero value will allow single-character -options to be bundled. To distinguish bundles from long option names, -long options must be introduced with B<--> and single-character -options (and bundles) with B<->. For example, +Setting this option will allow single-character options to be bundled. +To distinguish bundles from long option names, long options I be +introduced with C<--> and single-character options (and bundles) with +C<->. - ps -vax --vax - -would be equivalent to - - ps -v -a -x --vax - -provided "vax", "v", "a" and "x" have been defined to be valid -options. - -Bundled options can also include a value in the bundle; for strings -this value is the rest of the bundle, but integer and floating values -may be combined in the bundle, e.g. - - scale -h24w80 - -is equivalent to - - scale -h 24 -w 80 - -Note: resetting B also resets B. +Note: resetting C also resets C. =item bundling_override (default: reset) -If B is set, bundling is enabled as with -B but now long option names override option bundles. In the -above example, B<-vax> would be interpreted as the option "vax", not -the bundle "v", "a", "x". +If C is set, bundling is enabled as with +C but now long option names override option bundles. -Note: resetting B also resets B. +Note: resetting C also resets C. B Using option bundling can easily lead to unexpected results, especially when mixing long options and bundles. Caveat emptor. =item ignore_case (default: set) -If set, case is ignored when matching options. +If set, case is ignored when matching long option names. Single +character options will be treated case-sensitive. -Note: resetting B also resets B. +Note: resetting C also resets C. =item ignore_case_always (default: reset) When bundling is in effect, case is ignored on single-character options also. -Note: resetting B also resets B. +Note: resetting C also resets C. =item pass_through (default: reset) -Unknown options are passed through in @ARGV instead of being flagged -as errors. This makes it possible to write wrapper scripts that -process only part of the user supplied options, and passes the +Options that are unknown, ambiguous or supplied with an invalid option +value are passed through in C<@ARGV> instead of being flagged as +errors. This makes it possible to write wrapper scripts that process +only part of the user supplied command line arguments, and pass the remaining options to some other program. -This can be very confusing, especially when B is also set. +This can be very confusing, especially when C is also set. =item prefix -The string that starts options. See also B. +The string that starts options. If a constant string is not +sufficient, see C. =item prefix_pattern @@ -1336,27 +1562,84 @@ Enable copious debugging output. =back -=head1 OTHER USEFUL VARIABLES +=head1 Return values and Errors -=over 12 +Configuration errors and errors in the option definitions are +signalled using die() and will terminate the calling program unless +the call to Getopt::Long::GetOptions() was embedded in C, or die() was trapped using C<$SIG{__DIE__}>. -=item $Getopt::Long::VERSION +A return value of 1 (true) indicates success. -The version number of this Getopt::Long implementation in the format -C.C. This can be used to have Exporter check the -version, e.g. +A return status of 0 (false) indicates that the function detected one +or more errors during option parsing. These errors are signalled using +warn() and can be trapped with C<$SIG{__WARN__}>. - use Getopt::Long 3.00; +Errors that can't happen are signalled using Carp::croak(). -You can inspect $Getopt::Long::major_version and -$Getopt::Long::minor_version for the individual components. +=head1 Legacy -=item $Getopt::Long::error +The earliest development of C started in 1990, with Perl +version 4. As a result, its development, and the development of +Getopt::Long, has gone through several stages. Since backward +compatibility has always been extremely important, the current version +of Getopt::Long still supports a lot of constructs that nowadays are +no longer necessary or otherwise unwanted. This section describes +briefly some of these 'features'. -Internal error flag. May be incremented from a call-back routine to -cause options parsing to fail. +=head2 Default destinations -=back +When no destination is specified for an option, GetOptions will store +the resultant value in a global variable named CI, where +I is the primary name of this option. When a progam executes +under C (recommended), these variables must be +pre-declared with our() or C. + + our $opt_length = 0; + GetOptions ('length=i'); # will store in $opt_length + +To yield a usable Perl variable, characters that are not part of the +syntax for variables are translated to underscores. For example, +C<--fpp-struct-return> will set the variable +C<$opt_fpp_struct_return>. Note that this variable resides in the +namespace of the calling program, not necessarily C
      . For +example: + + GetOptions ("size=i", "sizes=i@"); + +with command line "-size 10 -sizes 24 -sizes 48" will perform the +equivalent of the assignments + + $opt_size = 10; + @opt_sizes = (24, 48); + +=head2 Alternative option starters + +A string of alternative option starter characters may be passed as the +first argument (or the first argument after a leading hash reference +argument). + + my $len = 0; + GetOptions ('/', 'length=i' => $len); + +Now the command line may look like: + + /length 24 -- arg + +Note that to terminate options processing still requires a double dash +C<-->. + +GetOptions() will not interpret a leading C<"<>"> as option starters +if the next argument is a reference. To force C<"<"> and C<">"> as +option starters, use C<"><">. Confusing? Well, B anyway. + +=head2 Configuration variables + +Previous versions of Getopt::Long used variables for the purpose of +configuring. Although manipulating these variables still work, it +is strongly encouraged to use the new C routine. Besides, it +is much easier. =head1 AUTHOR @@ -1364,11 +1647,12 @@ Johan Vromans Ejvromans@squirrel.nlE =head1 COPYRIGHT AND DISCLAIMER -This program is Copyright 1990,1999 by Johan Vromans. +This program is Copyright 2000,1990 by Johan Vromans. This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. +modify it under the terms of the Perl Artistic License or the +GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any +later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -1380,3 +1664,8 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. =cut + +# Local Variables: +# mode: perl +# eval: (load-file "pod.el") +# End: diff --git a/contrib/perl5/lib/Getopt/Std.pm b/contrib/perl5/lib/Getopt/Std.pm index 390bf14e96c5..e5b369ceb578 100644 --- a/contrib/perl5/lib/Getopt/Std.pm +++ b/contrib/perl5/lib/Getopt/Std.pm @@ -28,21 +28,25 @@ which take an argument don't care whether there is a space between the switch and the argument. Note that, if your code is running under the recommended C pragma, it may be helpful to declare these package variables -via C perhaps something like this: +'vars'> pragma, you will need to declare these package variables +with "our": - use vars qw/ $opt_foo $opt_bar /; + our($opt_foo, $opt_bar); -For those of you who don't like additional variables being created, getopt() +For those of you who don't like additional global variables being created, getopt() and getopts() will also accept a hash reference as an optional second argument. Hash keys will be x (where x is the switch name) with key values the value of the argument or 1 if no argument is specified. +To allow programs to process arguments that look like switches, but aren't, +both functions will stop processing switches when they see the argument +C<-->. The C<--> will be removed from @ARGV. + =cut @ISA = qw(Exporter); @EXPORT = qw(getopt getopts); -$VERSION = $VERSION = '1.01'; +$VERSION = '1.02'; # Process single-character switches with switch clustering. Pass one argument # which is a string containing all switches that take an argument. For each @@ -60,6 +64,10 @@ sub getopt ($;$) { while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) { ($first,$rest) = ($1,$2); + if (/^--$/) { # early exit if -- + shift @ARGV; + last; + } if (index($argumentative,$first) >= 0) { if ($rest ne '') { shift(@ARGV); @@ -68,22 +76,22 @@ sub getopt ($;$) { shift(@ARGV); $rest = shift(@ARGV); } - if (ref $hash) { - $$hash{$first} = $rest; - } - else { - ${"opt_$first"} = $rest; - push( @EXPORT, "\$opt_$first" ); - } + if (ref $hash) { + $$hash{$first} = $rest; + } + else { + ${"opt_$first"} = $rest; + push( @EXPORT, "\$opt_$first" ); + } } else { - if (ref $hash) { - $$hash{$first} = 1; - } - else { - ${"opt_$first"} = 1; - push( @EXPORT, "\$opt_$first" ); - } + if (ref $hash) { + $$hash{$first} = 1; + } + else { + ${"opt_$first"} = 1; + push( @EXPORT, "\$opt_$first" ); + } if ($rest ne '') { $ARGV[0] = "-$rest"; } @@ -111,31 +119,35 @@ sub getopts ($;$) { @args = split( / */, $argumentative ); while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) { ($first,$rest) = ($1,$2); + if (/^--$/) { # early exit if -- + shift @ARGV; + last; + } $pos = index($argumentative,$first); - if($pos >= 0) { - if(defined($args[$pos+1]) and ($args[$pos+1] eq ':')) { + if ($pos >= 0) { + if (defined($args[$pos+1]) and ($args[$pos+1] eq ':')) { shift(@ARGV); - if($rest eq '') { + if ($rest eq '') { ++$errs unless @ARGV; $rest = shift(@ARGV); } - if (ref $hash) { - $$hash{$first} = $rest; - } - else { - ${"opt_$first"} = $rest; - push( @EXPORT, "\$opt_$first" ); - } + if (ref $hash) { + $$hash{$first} = $rest; + } + else { + ${"opt_$first"} = $rest; + push( @EXPORT, "\$opt_$first" ); + } } else { - if (ref $hash) { - $$hash{$first} = 1; - } - else { - ${"opt_$first"} = 1; - push( @EXPORT, "\$opt_$first" ); - } - if($rest eq '') { + if (ref $hash) { + $$hash{$first} = 1; + } + else { + ${"opt_$first"} = 1; + push( @EXPORT, "\$opt_$first" ); + } + if ($rest eq '') { shift(@ARGV); } else { @@ -146,7 +158,7 @@ sub getopts ($;$) { else { warn "Unknown option: $first\n"; ++$errs; - if($rest ne '') { + if ($rest ne '') { $ARGV[0] = "-$rest"; } else { @@ -162,4 +174,3 @@ sub getopts ($;$) { } 1; - diff --git a/contrib/perl5/lib/I18N/Collate.pm b/contrib/perl5/lib/I18N/Collate.pm index 580ca39785cd..64a03a284b67 100644 --- a/contrib/perl5/lib/I18N/Collate.pm +++ b/contrib/perl5/lib/I18N/Collate.pm @@ -108,6 +108,7 @@ European character set. # --- use POSIX qw(strxfrm LC_COLLATE); +use warnings::register; require Exporter; @@ -123,9 +124,9 @@ cmp collate_cmp sub new { my $new = $_[1]; - if ($^W && $] >= 5.003_06) { + if (warnings::enabled() && $] >= 5.003_06) { unless ($please_use_I18N_Collate_even_if_deprecated) { - warn <<___EOD___; + warnings::warn <<___EOD___; *** WARNING: starting from the Perl version 5.003_06 diff --git a/contrib/perl5/lib/IPC/Open2.pm b/contrib/perl5/lib/IPC/Open2.pm index 32282d62b39a..a5a3561794e9 100644 --- a/contrib/perl5/lib/IPC/Open2.pm +++ b/contrib/perl5/lib/IPC/Open2.pm @@ -1,7 +1,7 @@ package IPC::Open2; use strict; -use vars qw($VERSION @ISA @EXPORT); +our ($VERSION, @ISA, @EXPORT); require 5.000; require Exporter; @@ -17,47 +17,71 @@ IPC::Open2, open2 - open a process for both reading and writing =head1 SYNOPSIS use IPC::Open2; - $pid = open2(\*RDR, \*WTR, 'some cmd and args'); - # or - $pid = open2(\*RDR, \*WTR, 'some', 'cmd', 'and', 'args'); + + $pid = open2(\*RDRFH, \*WTRFH, 'some cmd and args'); + # or without using the shell + $pid = open2(\*RDRFH, \*WTRFH, 'some', 'cmd', 'and', 'args'); + + # or with handle autovivification + my($rdrfh, $wtrfh); + $pid = open2($rdrfh, $wtrfh, 'some cmd and args'); + # or without using the shell + $pid = open2($rdrfh, $wtrfh, 'some', 'cmd', 'and', 'args'); =head1 DESCRIPTION -The open2() function spawns the given $cmd and connects $rdr for -reading and $wtr for writing. It's what you think should work +The open2() function runs the given $cmd and connects $rdrfh for +reading and $wtrfh for writing. It's what you think should work when you try - open(HANDLE, "|cmd args|"); + $pid = open(HANDLE, "|cmd args|"); The write filehandle will have autoflush turned on. -If $rdr is a string (that is, a bareword filehandle rather than a glob -or a reference) and it begins with ">&", then the child will send output -directly to that file handle. If $wtr is a string that begins with -"<&", then WTR will be closed in the parent, and the child will read +If $rdrfh is a string (that is, a bareword filehandle rather than a glob +or a reference) and it begins with C<< >& >>, then the child will send output +directly to that file handle. If $wtrfh is a string that begins with +C<< <& >>, then $wtrfh will be closed in the parent, and the child will read from it directly. In both cases, there will be a dup(2) instead of a pipe(2) made. +If either reader or writer is the null string, this will be replaced +by an autogenerated filehandle. If so, you must pass a valid lvalue +in the parameter slot so it can be overwritten in the caller, or +an exception will be raised. + open2() returns the process ID of the child process. It doesn't return on -failure: it just raises an exception matching C. +failure: it just raises an exception matching C. However, +C failures in the child are not detected. You'll have to +trap SIGPIPE yourself. -=head1 WARNING +open2() does not wait for and reap the child process after it exits. +Except for short programs where it's acceptable to let the operating system +take care of this, you need to do this yourself. This is normally as +simple as calling C when you're done with the process. +Failing to do this can result in an accumulation of defunct or "zombie" +processes. See L for more information. -It will not create these file handles for you. You have to do this yourself. -So don't pass it empty variables expecting them to get filled in for you. - -Additionally, this is very dangerous as you may block forever. -It assumes it's going to talk to something like B, both writing to -it and reading from it. This is presumably safe because you "know" -that commands like B will read a line at a time and output a line at -a time. Programs like B that read their entire input stream first, -however, are quite apt to cause deadlock. +This whole affair is quite dangerous, as you may block forever. It +assumes it's going to talk to something like B, both writing +to it and reading from it. This is presumably safe because you +"know" that commands like B will read a line at a time and +output a line at a time. Programs like B that read their +entire input stream first, however, are quite apt to cause deadlock. The big problem with this approach is that if you don't have control over source code being run in the child process, you can't control what it does with pipe buffering. Thus you can't just open a pipe to C and continually read and write a line from it. +The IO::Pty and Expect modules from CPAN can help with this, as they +provide a real tty (well, a pseudo-tty, actually), which gets you +back to line buffering in the invoked command again. + +=head1 WARNING + +The order of arguments differs from that of open3(). + =head1 SEE ALSO See L for an alternative that handles STDERR as well. This @@ -86,10 +110,9 @@ function is really just a wrapper around open3(). require IPC::Open3; sub open2 { - my ($read, $write, @cmd) = @_; local $Carp::CarpLevel = $Carp::CarpLevel + 1; return IPC::Open3::_open3('open2', scalar caller, - $write, $read, '>&STDERR', @cmd); + $_[1], $_[0], '>&STDERR', @_[2 .. $#_]); } 1 diff --git a/contrib/perl5/lib/IPC/Open3.pm b/contrib/perl5/lib/IPC/Open3.pm index d0790417bc71..99709ac0ca76 100644 --- a/contrib/perl5/lib/IPC/Open3.pm +++ b/contrib/perl5/lib/IPC/Open3.pm @@ -2,9 +2,8 @@ package IPC::Open3; use strict; no strict 'refs'; # because users pass me bareword filehandles -use vars qw($VERSION @ISA @EXPORT $Me); +our ($VERSION, @ISA, @EXPORT); -require 5.001; require Exporter; use Carp; @@ -23,37 +22,50 @@ IPC::Open3, open3 - open a process for reading, writing, and error handling $pid = open3(\*WTRFH, \*RDRFH, \*ERRFH, 'some cmd and args', 'optarg', ...); + my($wtr, $rdr, $err); + $pid = open3($wtr, $rdr, $err, + 'some cmd and args', 'optarg', ...); + =head1 DESCRIPTION Extremely similar to open2(), open3() spawns the given $cmd and connects RDRFH for reading, WTRFH for writing, and ERRFH for errors. If -ERRFH is '', or the same as RDRFH, then STDOUT and STDERR of the child are -on the same file handle. The WTRFH will have autoflush turned on. +ERRFH is false, or the same file descriptor as RDRFH, then STDOUT and +STDERR of the child are on the same filehandle. The WTRFH will have +autoflush turned on. -If WTRFH begins with "E&", then WTRFH will be closed in the parent, and +If WTRFH begins with C<< <& >>, then WTRFH will be closed in the parent, and the child will read from it directly. If RDRFH or ERRFH begins with -"E&", then the child will send output directly to that file handle. +C<< >& >>, then the child will send output directly to that filehandle. In both cases, there will be a dup(2) instead of a pipe(2) made. -If you try to read from the child's stdout writer and their stderr -writer, you'll have problems with blocking, which means you'll -want to use select(), which means you'll have to use sysread() instead -of normal stuff. +If either reader or writer is the null string, this will be replaced +by an autogenerated filehandle. If so, you must pass a valid lvalue +in the parameter slot so it can be overwritten in the caller, or +an exception will be raised. open3() returns the process ID of the child process. It doesn't return on -failure: it just raises an exception matching C. +failure: it just raises an exception matching C. However, +C failures in the child are not detected. You'll have to +trap SIGPIPE yourself. -=head1 WARNING +open2() does not wait for and reap the child process after it exits. +Except for short programs where it's acceptable to let the operating system +take care of this, you need to do this yourself. This is normally as +simple as calling C when you're done with the process. +Failing to do this can result in an accumulation of defunct or "zombie" +processes. See L for more information. -It will not create these file handles for you. You have to do this -yourself. So don't pass it empty variables expecting them to get filled -in for you. +If you try to read from the child's stdout writer and their stderr +writer, you'll have problems with blocking, which means you'll want +to use select() or the IO::Select, which means you'd best use +sysread() instead of readline() for normal stuff. -Additionally, this is very dangerous as you may block forever. It -assumes it's going to talk to something like B, both writing to it -and reading from it. This is presumably safe because you "know" that -commands like B will read a line at a time and output a line at a -time. Programs like B that read their entire input stream first, +This is very dangerous, as you may block forever. It assumes it's +going to talk to something like B, both writing to it and reading +from it. This is presumably safe because you "know" that commands +like B will read a line at a time and output a line at a time. +Programs like B that read their entire input stream first, however, are quite apt to cause deadlock. The big problem with this approach is that if you don't have control @@ -61,12 +73,17 @@ over source code being run in the child process, you can't control what it does with pipe buffering. Thus you can't just open a pipe to C and continually read and write a line from it. +=head1 WARNING + +The order of arguments differs from that of open2(). + =cut # &open3: Marc Horowitz # derived mostly from &open2 by tom christiansen, # fixed for 5.001 by Ulrich Kunitz # ported to Win32 by Ron Schmidt, Merrill Lynch almost ended my career +# fixed for autovivving FHs, tchrist again # # $Id: open3.pl,v 1.1 1993/11/23 06:26:15 marc Exp $ # @@ -94,7 +111,7 @@ C and continually read and write a line from it. # rdr or wtr are null # a system call fails -$Me = 'open3 (bug)'; # you should never see this, it's always localized +our $Me = 'open3 (bug)'; # you should never see this, it's always localized # Fatal.pm needs to be fixed WRT prototypes. @@ -126,15 +143,27 @@ sub _open3 { my($package, $dad_wtr, $dad_rdr, $dad_err, @cmd) = @_; my($dup_wtr, $dup_rdr, $dup_err, $kidpid); - $dad_wtr or croak "$Me: wtr should not be null"; - $dad_rdr or croak "$Me: rdr should not be null"; - $dad_err = $dad_rdr if ($dad_err eq ''); + # simulate autovivification of filehandles because + # it's too ugly to use @_ throughout to make perl do it for us + # tchrist 5-Mar-00 + + unless (eval { + $dad_wtr = $_[1] = gensym unless defined $dad_wtr && length $dad_wtr; + $dad_rdr = $_[2] = gensym unless defined $dad_rdr && length $dad_rdr; + 1; }) + { + # must strip crud for croak to add back, or looks ugly + $@ =~ s/(?<=value attempted) at .*//s; + croak "$Me: $@"; + } + + $dad_err ||= $dad_rdr; $dup_wtr = ($dad_wtr =~ s/^[<>]&//); $dup_rdr = ($dad_rdr =~ s/^[<>]&//); $dup_err = ($dad_err =~ s/^[<>]&//); - # force unqualified filehandles into callers' package + # force unqualified filehandles into caller's package $dad_wtr = qualify $dad_wtr, $package; $dad_rdr = qualify $dad_rdr, $package; $dad_err = qualify $dad_err, $package; @@ -185,7 +214,7 @@ sub _open3 { xopen \*STDERR, ">&STDOUT" if fileno(STDERR) != fileno(STDOUT); } local($")=(" "); - exec @cmd + exec @cmd # XXX: wrong process to croak from or croak "$Me: exec of @cmd failed"; } elsif ($do_spawn) { # All the bookkeeping of coincidence between handles is diff --git a/contrib/perl5/lib/Math/BigFloat.pm b/contrib/perl5/lib/Math/BigFloat.pm index 03bc2f4e271c..d8d643ca3e31 100644 --- a/contrib/perl5/lib/Math/BigFloat.pm +++ b/contrib/perl5/lib/Math/BigFloat.pm @@ -9,10 +9,8 @@ use overload '+' => sub {new Math::BigFloat &fadd}, '-' => sub {new Math::BigFloat $_[2]? fsub($_[1],${$_[0]}) : fsub(${$_[0]},$_[1])}, -'<=>' => sub {new Math::BigFloat - $_[2]? fcmp($_[1],${$_[0]}) : fcmp(${$_[0]},$_[1])}, -'cmp' => sub {new Math::BigFloat - $_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])}, +'<=>' => sub {$_[2]? fcmp($_[1],${$_[0]}) : fcmp(${$_[0]},$_[1])}, +'cmp' => sub {$_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])}, '*' => sub {new Math::BigFloat &fmul}, '/' => sub {new Math::BigFloat $_[2]? scalar fdiv($_[1],${$_[0]}) : @@ -28,9 +26,9 @@ qw( sub new { my ($class) = shift; my ($foo) = fnorm(shift); - panic("Not a number initialized to Math::BigFloat") if $foo eq "NaN"; bless \$foo, $class; } + sub numify { 0 + "${$_[0]}" } # Not needed, additional overhead # comparing to direct compilation based on # stringify @@ -76,6 +74,7 @@ sub fnorm; sub fsqrt; sub fnorm { #(string) return fnum_str local($_) = @_; s/\s+//g; # strip white space + no warnings; # $4 and $5 below might legitimately be undefined if (/^([+-]?)(\d*)(\.(\d*))?([Ee]([+-]?\d+))?$/ && "$2$4" ne '') { &norm(($1 ? "$1$2$4" : "+$2$4"),(($4 ne '') ? $6-length($4) : $6)); } else { @@ -159,7 +158,8 @@ sub fdiv #(fnum_str, fnum_str[,scale]) return fnum_str $scale = length($xm)-1 if (length($xm)-1 > $scale); $scale = length($ym)-1 if (length($ym)-1 > $scale); $scale = $scale + length($ym) - length($xm); - &norm(&round(Math::BigInt::bdiv($xm.('0' x $scale),$ym),$ym), + &norm(&round(Math::BigInt::bdiv($xm.('0' x $scale),$ym), + Math::BigInt::babs($ym)), $xe-$ye-$scale); } } @@ -219,7 +219,11 @@ sub ffround { #(fnum_str, scale) return fnum_str if ($xe < 1) { '+0E+0'; } elsif ($xe == 1) { - &norm(&round('+0',"+0".substr($xm,$[+1,1),"+10"), $scale); + # The first substr preserves the sign, passing a non- + # normalized "-0" to &round when rounding -0.006 (for + # example), purely so &round won't lose the sign. + &norm(&round(substr($xm,$[,1).'0', + "+0".substr($xm,$[+1,1),"+10"), $scale); } else { &norm(&round(substr($xm,$[,$xe), "+0".substr($xm,$[+$xe,1),"+10"), $scale); @@ -236,12 +240,13 @@ sub fcmp #(fnum_str, fnum_str) return cond_code if ($x eq "NaN" || $y eq "NaN") { undef; } else { + local($xm,$xe,$ym,$ye) = split('E', $x."E$y"); + if ($xm eq '+0' || $ym eq '+0') { + return $xm <=> $ym; + } ord($y) <=> ord($x) - || - ( local($xm,$xe,$ym,$ye) = split('E', $x."E$y"), - (($xe <=> $ye) * (substr($x,$[,1).'1') - || Math::BigInt::cmp($xm,$ym)) - ); + || ($xe <=> $ye) * (substr($x,$[,1).'1') + || Math::BigInt::cmp($xm,$ym); } } @@ -301,7 +306,7 @@ floats as =item number format canonical strings have the form /[+-]\d+E[+-]\d+/ . Input values can -have imbedded whitespace. +have embedded whitespace. =item Error returns 'NaN' @@ -310,9 +315,24 @@ negative number. =item Division is computed to -C digits by default. +C +digits by default. Also used for default sqrt scale. +=item Rounding is performed + +according to the value of +C<$Math::BigFloat::rnd_mode>: + + trunc truncate the value + zero round towards 0 + +inf round towards +infinity (round up) + -inf round towards -infinity (round down) + even round to the nearest, .5 to the even digit + odd round to the nearest, .5 to the odd digit + +The default is C rounding. + =back =head1 BUGS @@ -320,6 +340,15 @@ Also used for default sqrt scale. The current version of this module is a preliminary version of the real thing that is currently (as of perl5.002) under development. +The printf subroutine does not use the value of +C<$Math::BigFloat::rnd_mode> when rounding values for printing. +Consequently, the way to print rounded values is +to specify the number of digits both as an +argument to C and in the C<%f> printf string, +as follows: + + printf "%.3f\n", $bigfloat->ffround(-3); + =head1 AUTHOR Mark Biggar diff --git a/contrib/perl5/lib/Math/BigInt.pm b/contrib/perl5/lib/Math/BigInt.pm index b61b88456934..a43969c2b232 100644 --- a/contrib/perl5/lib/Math/BigInt.pm +++ b/contrib/perl5/lib/Math/BigInt.pm @@ -4,10 +4,8 @@ use overload '+' => sub {new Math::BigInt &badd}, '-' => sub {new Math::BigInt $_[2]? bsub($_[1],${$_[0]}) : bsub(${$_[0]},$_[1])}, -'<=>' => sub {new Math::BigInt - $_[2]? bcmp($_[1],${$_[0]}) : bcmp(${$_[0]},$_[1])}, -'cmp' => sub {new Math::BigInt - $_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])}, +'<=>' => sub {$_[2]? bcmp($_[1],${$_[0]}) : bcmp(${$_[0]},$_[1])}, +'cmp' => sub {$_[2]? ($_[1] cmp ${$_[0]}) : (${$_[0]} cmp $_[1])}, '*' => sub {new Math::BigInt &bmul}, '/' => sub {new Math::BigInt $_[2]? scalar bdiv($_[1],${$_[0]}) : @@ -18,6 +16,14 @@ use overload $_[2]? bpow($_[1],${$_[0]}) : bpow(${$_[0]},$_[1])}, 'neg' => sub {new Math::BigInt &bneg}, 'abs' => sub {new Math::BigInt &babs}, +'<<' => sub {new Math::BigInt + $_[2]? blsft($_[1],${$_[0]}) : blsft(${$_[0]},$_[1])}, +'>>' => sub {new Math::BigInt + $_[2]? brsft($_[1],${$_[0]}) : brsft(${$_[0]},$_[1])}, +'&' => sub {new Math::BigInt &band}, +'|' => sub {new Math::BigInt &bior}, +'^' => sub {new Math::BigInt &bxor}, +'~' => sub {new Math::BigInt &bnot}, qw( "" stringify @@ -258,9 +264,11 @@ sub bdiv { #(dividend: num_str, divisor: num_str) return num_str else { push(@x, 0); } - @q = (); ($v2,$v1) = ($y[-2] || 0, $y[-1]); + @q = (); ($v2,$v1) = @y[-2,-1]; + $v2 = 0 unless $v2; while ($#x > $#y) { - ($u2,$u1,$u0) = ($x[-3] || 0, $x[-2] || 0, $x[-1]); + ($u2,$u1,$u0) = @x[-3..-1]; + $u2 = 0 unless $u2; $q = (($u0 == $v1) ? 99999 : int(($u0*1e5+$u1)/$v1)); --$q while ($v2*$q > ($u0*1e5+$u1-$q*$v1)*1e5+$u2); if ($q) { @@ -328,6 +336,69 @@ sub bpow { #(num_str, num_str) return num_str } } +# compute x << y, y >= 0 +sub blsft { #(num_str, num_str) return num_str + &bmul($_[$[], &bpow(2, $_[$[+1])); +} + +# compute x >> y, y >= 0 +sub brsft { #(num_str, num_str) return num_str + &bdiv($_[$[], &bpow(2, $_[$[+1])); +} + +# compute x & y +sub band { #(num_str, num_str) return num_str + local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1); + if ($x eq 'NaN' || $y eq 'NaN') { + 'NaN'; + } else { + while ($x ne '+0' && $y ne '+0') { + ($x, $xr) = &bdiv($x, 0x10000); + ($y, $yr) = &bdiv($y, 0x10000); + $r = &badd(&bmul(int $xr & $yr, $m), $r); + $m = &bmul($m, 0x10000); + } + $r; + } +} + +# compute x | y +sub bior { #(num_str, num_str) return num_str + local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1); + if ($x eq 'NaN' || $y eq 'NaN') { + 'NaN'; + } else { + while ($x ne '+0' || $y ne '+0') { + ($x, $xr) = &bdiv($x, 0x10000); + ($y, $yr) = &bdiv($y, 0x10000); + $r = &badd(&bmul(int $xr | $yr, $m), $r); + $m = &bmul($m, 0x10000); + } + $r; + } +} + +# compute x ^ y +sub bxor { #(num_str, num_str) return num_str + local($x,$y,$r,$m,$xr,$yr) = (&bnorm($_[$[]),&bnorm($_[$[+1]),0,1); + if ($x eq 'NaN' || $y eq 'NaN') { + 'NaN'; + } else { + while ($x ne '+0' || $y ne '+0') { + ($x, $xr) = &bdiv($x, 0x10000); + ($y, $yr) = &bdiv($y, 0x10000); + $r = &badd(&bmul(int $xr ^ $yr, $m), $r); + $m = &bmul($m, 0x10000); + } + $r; + } +} + +# represent ~x as twos-complement number +sub bnot { #(num_str) return num_str + &bsub(-1,$_[$[]); +} + 1; __END__ @@ -350,6 +421,12 @@ Math::BigInt - Arbitrary size integer math package $i->bmod(BINT) return BINT modulus $i->bgcd(BINT) return BINT greatest common divisor $i->bnorm return BINT normalization + $i->blsft(BINT) return BINT left shift + $i->brsft(BINT) return (BINT,BINT) right shift (quo,rem) just quo if scalar + $i->band(BINT) return BINT bit-wise and + $i->bior(BINT) return BINT bit-wise inclusive or + $i->bxor(BINT) return BINT bit-wise exclusive or + $i->bnot return BINT bit-wise not =head1 DESCRIPTION diff --git a/contrib/perl5/lib/Math/Complex.pm b/contrib/perl5/lib/Math/Complex.pm index 5b69039afc07..1a47f4af5e63 100644 --- a/contrib/perl5/lib/Math/Complex.pm +++ b/contrib/perl5/lib/Math/Complex.pm @@ -8,9 +8,10 @@ require Exporter; package Math::Complex; +use 5.005_64; use strict; -use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS); +our($VERSION, @ISA, @EXPORT, %EXPORT_TAGS); my ( $i, $ip2, %logn ); @@ -65,9 +66,10 @@ use overload # Package "privates" # -my $package = 'Math::Complex'; # Package name -my $display = 'cartesian'; # Default display format -my $eps = 1e-14; # Epsilon +my $package = 'Math::Complex'; # Package name +my %DISPLAY_FORMAT = ('style' => 'cartesian', + 'polar_pretty_print' => 1); +my $eps = 1e-14; # Epsilon # # Object attributes (internal): @@ -160,7 +162,7 @@ sub new { &make } # For backward compatibility only. # sub cplx { my ($re, $im) = @_; - return $package->make($re, defined $im ? $im : 0); + return __PACKAGE__->make($re, defined $im ? $im : 0); } # @@ -171,7 +173,7 @@ sub cplx { # sub cplxe { my ($rho, $theta) = @_; - return $package->emake($rho, defined $theta ? $theta : 0); + return __PACKAGE__->emake($rho, defined $theta ? $theta : 0); } # @@ -179,21 +181,21 @@ sub cplxe { # # The number defined as pi = 180 degrees # -use constant pi => 4 * CORE::atan2(1, 1); +sub pi () { 4 * CORE::atan2(1, 1) } # # pit2 # # The full circle # -use constant pit2 => 2 * pi; +sub pit2 () { 2 * pi } # # pip2 # # The quarter circle # -use constant pip2 => pi / 2; +sub pip2 () { pi / 2 } # # deg1 @@ -201,14 +203,14 @@ use constant pip2 => pi / 2; # One degree in radians, used in stringify_polar. # -use constant deg1 => pi / 180; +sub deg1 () { pi / 180 } # # uplog10 # # Used in log10(). # -use constant uplog10 => 1 / CORE::log(10); +sub uplog10 () { 1 / CORE::log(10) } # # i @@ -835,7 +837,7 @@ sub acos { my $u = CORE::atan2(CORE::sqrt(1-$beta*$beta), $beta); my $v = CORE::log($alpha + CORE::sqrt($alpha*$alpha-1)); $v = -$v if $y > 0 || ($y == 0 && $x < -1); - return $package->make($u, $v); + return __PACKAGE__->make($u, $v); } # @@ -857,7 +859,7 @@ sub asin { my $u = CORE::atan2($beta, CORE::sqrt(1-$beta*$beta)); my $v = -CORE::log($alpha + CORE::sqrt($alpha*$alpha-1)); $v = -$v if $y > 0 || ($y == 0 && $x < -1); - return $package->make($u, $v); + return __PACKAGE__->make($u, $v); } # @@ -1153,34 +1155,53 @@ sub atan2 { # display_format # ->display_format # -# Set (fetch if no argument) display format for all complex numbers that +# Set (get if no argument) the display format for all complex numbers that # don't happen to have overridden it via ->display_format # -# When called as a method, this actually sets the display format for +# When called as an object method, this actually sets the display format for # the current object. # # Valid object formats are 'c' and 'p' for cartesian and polar. The first # letter is used actually, so the type can be fully spelled out for clarity. # sub display_format { - my $self = shift; - my $format = undef; + my $self = shift; + my %display_format = %DISPLAY_FORMAT; - if (ref $self) { # Called as a method - $format = shift; - } else { # Regular procedure call - $format = $self; - undef $self; + if (ref $self) { # Called as an object method + if (exists $self->{display_format}) { + my %obj = %{$self->{display_format}}; + @display_format{keys %obj} = values %obj; + } + if (@_ == 1) { + $display_format{style} = shift; + } else { + my %new = @_; + @display_format{keys %new} = values %new; + } + } else { # Called as a class method + if (@_ = 1) { + $display_format{style} = $self; + } else { + my %new = @_; + @display_format{keys %new} = values %new; + } + undef $self; } if (defined $self) { - return defined $self->{display} ? $self->{display} : $display - unless defined $format; - return $self->{display} = $format; + $self->{display_format} = { %display_format }; + return + wantarray ? + %{$self->{display_format}} : + $self->{display_format}->{style}; } - return $display unless defined $format; - return $display = $format; + %DISPLAY_FORMAT = %display_format; + return + wantarray ? + %DISPLAY_FORMAT : + $DISPLAY_FORMAT{style}; } # @@ -1195,12 +1216,12 @@ sub display_format { # sub stringify { my ($z) = shift; - my $format; - $format = $display; - $format = $z->{display} if defined $z->{display}; + my $style = $z->display_format; - return $z->stringify_polar if $format =~ /^p/i; + $style = $DISPLAY_FORMAT{style} unless defined $style; + + return $z->stringify_polar if $style =~ /^p/i; return $z->stringify_cartesian; } @@ -1220,17 +1241,27 @@ sub stringify_cartesian { if int(CORE::abs($y)) != int(CORE::abs($y) + $eps); $re = "$x" if CORE::abs($x) >= $eps; - if ($y == 1) { $im = 'i' } - elsif ($y == -1) { $im = '-i' } - elsif (CORE::abs($y) >= $eps) { $im = $y . "i" } + + my %format = $z->display_format; + my $format = $format{format}; + + if ($y == 1) { $im = 'i' } + elsif ($y == -1) { $im = '-i' } + elsif (CORE::abs($y) >= $eps) { + $im = (defined $format ? sprintf($format, $y) : $y) . "i"; + } my $str = ''; - $str = $re if defined $re; - $str .= "+$im" if defined $im; - $str =~ s/\+-/-/; - $str =~ s/^\+//; - $str =~ s/([-+])1i/$1i/; # Not redundant with the above 1/-1 tests. - $str = '0' unless $str; + $str = defined $format ? sprintf($format, $re) : $re + if defined $re; + if (defined $im) { + if ($y < 0) { + $str .= $im; + } elsif ($y > 0) { + $str .= "+" if defined $re; + $str .= $im; + } + } return $str; } @@ -1277,6 +1308,8 @@ sub stringify_polar { return '[0,0]' if $r <= $eps; + my %format = $z->display_format; + my $nt = $t / pit2; $nt = ($nt - int($nt)) * pit2; $nt += pit2 if $nt < 0; # Range [0, 2pi] @@ -1299,7 +1332,7 @@ sub stringify_polar { $nt -= pit2 if $nt > pi; - if (CORE::abs($nt) >= deg1) { + if ($format{polar_pretty_print} && CORE::abs($nt) >= deg1) { my ($n, $k, $kpi); for ($k = 1, $kpi = pi; $k < 10; $k++, $kpi += pi) { @@ -1328,12 +1361,19 @@ sub stringify_polar { if ($theta !~ m(^-?\d*pi/\d+$) and int(CORE::abs($theta)) != int(CORE::abs($theta) + $eps)); + my $format = $format{format}; + if (defined $format) { + $r = sprintf($format, $r); + $theta = sprintf($format, $theta); + } + return "\[$r,$theta\]"; } 1; __END__ +=pod =head1 NAME Math::Complex - complex numbers and associated mathematical functions @@ -1617,9 +1657,9 @@ It is possible to write: $x = cplxe(-3, pi/4); -but that will be silently converted into C<[3,-3pi/4]>, since the modulus -must be non-negative (it represents the distance to the origin in the complex -plane). +but that will be silently converted into C<[3,-3pi/4]>, since the +modulus must be non-negative (it represents the distance to the origin +in the complex plane). It is also possible to have a complex number as either argument of either the C or C: the appropriate component of @@ -1631,31 +1671,67 @@ the argument will be used. =head1 STRINGIFICATION When printed, a complex number is usually shown under its cartesian -form I, but there are legitimate cases where the polar format +style I, but there are legitimate cases where the polar style I<[r,t]> is more appropriate. -By calling the routine C and supplying either -C<"polar"> or C<"cartesian">, you override the default display format, -which is C<"cartesian">. Not supplying any argument returns the current -setting. +By calling the class method C and +supplying either C<"polar"> or C<"cartesian"> as an argument, you +override the default display style, which is C<"cartesian">. Not +supplying any argument returns the current settings. This default can be overridden on a per-number basis by calling the C method instead. As before, not supplying any argument -returns the current display format for this number. Otherwise whatever you -specify will be the new display format for I particular number. +returns the current display style for this number. Otherwise whatever you +specify will be the new display style for I particular number. For instance: use Math::Complex; Math::Complex::display_format('polar'); - $j = ((root(1, 3))[1]; - print "j = $j\n"; # Prints "j = [1,2pi/3] + $j = (root(1, 3))[1]; + print "j = $j\n"; # Prints "j = [1,2pi/3]" $j->display_format('cartesian'); print "j = $j\n"; # Prints "j = -0.5+0.866025403784439i" -The polar format attempts to emphasize arguments like I -(where I is a positive integer and I an integer within [-9,+9]). +The polar style attempts to emphasize arguments like I +(where I is a positive integer and I an integer within [-9,+9]), +this is called I. + +=head2 CHANGED IN PERL 5.6 + +The C class method and the corresponding +C object method can now be called using +a parameter hash instead of just a one parameter. + +The old display format style, which can have values C<"cartesian"> or +C<"polar">, can be changed using the C<"style"> parameter. (The one +parameter calling convention also still works.) + +There are two new display parameters. + +The first one is C<"format">, which is a sprintf()-style format +string to be used for both parts of the complex number(s). The +default is C, which corresponds usually (this is somewhat +system-dependent) to C<"%.15g">. You can revert to the default by +setting the format string to C. + + # the $j from the above example + + $j->display_format('format' => '%.5f'); + print "j = $j\n"; # Prints "j = -0.50000+0.86603i" + $j->display_format('format' => '%.6f'); + print "j = $j\n"; # Prints "j = -0.5+0.86603i" + +Notice that this affects also the return values of the +C methods: in list context the whole parameter hash +will be returned, as opposed to only the style parameter value. If +you want to know the whole truth for a complex number, you must call +both the class method and the object method: + +The second new display parameter is C<"polar_pretty_print">, which can +be set to true or false, the default being true. See the previous +section for what this means. =head1 USAGE @@ -1746,7 +1822,7 @@ Whatever it is, it does not manifest itself anywhere else where Perl runs. =head1 AUTHORS -Raphael Manfredi > and +Raphael Manfredi > and Jarkko Hietaniemi >. Extensive patches by Daniel S. Lewart >. diff --git a/contrib/perl5/lib/Math/Trig.pm b/contrib/perl5/lib/Math/Trig.pm index 924286d20491..492706cd6aa8 100644 --- a/contrib/perl5/lib/Math/Trig.pm +++ b/contrib/perl5/lib/Math/Trig.pm @@ -7,13 +7,12 @@ require Exporter; package Math::Trig; +use 5.005_64; use strict; use Math::Complex qw(:trig); -use vars qw($VERSION $PACKAGE - @ISA - @EXPORT @EXPORT_OK %EXPORT_TAGS); +our($VERSION, $PACKAGE, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); @ISA = qw(Exporter); @@ -37,8 +36,8 @@ my @rdlcnv = qw(cartesian_to_cylindrical %EXPORT_TAGS = ('radial' => [ @rdlcnv ]); -use constant pi2 => 2 * pi; -use constant pip2 => pi / 2; +sub pi2 () { 2 * pi } # use constant generates warning +sub pip2 () { pi / 2 } # use constant generates warning use constant DR => pi2/360; use constant RD => 360/pi2; use constant DG => 400/360; @@ -133,11 +132,11 @@ Math::Trig - trigonometric functions =head1 SYNOPSIS use Math::Trig; - + $x = tan(0.9); $y = acos(3.7); $z = asin(2.4); - + $halfpi = pi/2; $rad = deg2rad(120); @@ -259,7 +258,7 @@ complex numbers as results because the C takes care of details like for example how to display complex numbers. For example: print asin(2), "\n"; - + should produce something like this (take or leave few last decimals): 1.5707963267949-1.31695789692482i @@ -273,10 +272,10 @@ and the imaginary part of approximately C<-1.317>. $radians = deg2rad($degrees); $radians = grad2rad($gradians); - + $degrees = rad2deg($radians); $degrees = grad2deg($gradians); - + $gradians = deg2grad($degrees); $gradians = rad2grad($radians); @@ -409,7 +408,16 @@ To calculate the distance between London (51.3N 0.5W) and Tokyo (35.7N $km = great_circle_distance(@L, @T, 6378); The answer may be off by few percentages because of the irregular -(slightly aspherical) form of the Earth. +(slightly aspherical) form of the Earth. The used formula + + lat0 = 90 degrees - phi0 + lat1 = 90 degrees - phi1 + d = R * arccos(cos(lat0) * cos(lat1) * cos(lon1 - lon01) + + sin(lat0) * sin(lat1)) + +is also somewhat unreliable for small distances (for locations +separated less than about five degrees) because it uses arc cosine +which is rather ill-conditioned for values close to zero. =head1 BUGS @@ -426,7 +434,7 @@ an answer instead of giving a fatal runtime error. =head1 AUTHORS Jarkko Hietaniemi > and -Raphael Manfredi >. +Raphael Manfredi >. =cut diff --git a/contrib/perl5/lib/Net/Ping.pm b/contrib/perl5/lib/Net/Ping.pm index 495b82f95bb4..2713383a00c1 100644 --- a/contrib/perl5/lib/Net/Ping.pm +++ b/contrib/perl5/lib/Net/Ping.pm @@ -4,18 +4,17 @@ package Net::Ping; # # Authors of the original pingecho(): # karrer@bernina.ethz.ch (Andreas Karrer) -# pmarquess@bfsec.bt.co.uk (Paul Marquess) +# Paul.Marquess@btinternet.com (Paul Marquess) # # Copyright (c) 1996 Russell Mosemann. All rights reserved. This # program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. -require 5.002; +use 5.005_64; require Exporter; use strict; -use vars qw(@ISA @EXPORT $VERSION - $def_timeout $def_proto $max_datasize); +our(@ISA, @EXPORT, $VERSION, $def_timeout, $def_proto, $max_datasize); use FileHandle; use Socket qw( SOCK_DGRAM SOCK_STREAM SOCK_RAW PF_INET inet_aton sockaddr_in ); @@ -423,7 +422,7 @@ Net::Ping - check a remote host for reachability sleep(1); } $p->close(); - + $p = Net::Ping->new("tcp", 2); while ($stop_time > time()) { @@ -432,7 +431,7 @@ Net::Ping - check a remote host for reachability sleep(300); } undef($p); - + # For backward compatibility print "$host is alive.\n" if pingecho($host); diff --git a/contrib/perl5/lib/Net/hostent.pm b/contrib/perl5/lib/Net/hostent.pm index d586358f0a50..6cfde7253cb0 100644 --- a/contrib/perl5/lib/Net/hostent.pm +++ b/contrib/perl5/lib/Net/hostent.pm @@ -1,9 +1,10 @@ package Net::hostent; use strict; +use 5.005_64; +our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); BEGIN { use Exporter (); - use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS); @EXPORT = qw(gethostbyname gethostbyaddr gethost); @EXPORT_OK = qw( $h_name @h_aliases diff --git a/contrib/perl5/lib/Net/netent.pm b/contrib/perl5/lib/Net/netent.pm index fbc6d987fe54..b21cd04664c8 100644 --- a/contrib/perl5/lib/Net/netent.pm +++ b/contrib/perl5/lib/Net/netent.pm @@ -1,9 +1,10 @@ package Net::netent; use strict; +use 5.005_64; +our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); BEGIN { use Exporter (); - use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS); @EXPORT = qw(getnetbyname getnetbyaddr getnet); @EXPORT_OK = qw( $n_name @n_aliases @@ -119,26 +120,26 @@ This seems a bug, but here's how to deal with it: use strict; use Socket; use Net::netent; - + @ARGV = ('loopback') unless @ARGV; - + my($n, $net); - + for $net ( @ARGV ) { - + unless ($n = getnetbyname($net)) { warn "$0: no such net: $net\n"; next; } - + printf "\n%s is %s%s\n", $net, lc($n->name) eq lc($net) ? "" : "*really* ", $n->name; - + print "\taliases are ", join(", ", @{$n->aliases}), "\n" if @{$n->aliases}; - + # this is stupid; first, why is this not in binary? # second, why am i going through these convolutions # to make it looks right @@ -147,7 +148,7 @@ This seems a bug, but here's how to deal with it: shift @a while @a && $a[0] == 0; printf "\taddr is %s [%d.%d.%d.%d]\n", $n->net, @a; } - + if ($n = getnetbyaddr($n->net)) { if (lc($n->name) ne lc($net)) { printf "\tThat addr reverses to net %s!\n", $n->name; diff --git a/contrib/perl5/lib/Net/protoent.pm b/contrib/perl5/lib/Net/protoent.pm index 737ff5a33bcd..334af789149a 100644 --- a/contrib/perl5/lib/Net/protoent.pm +++ b/contrib/perl5/lib/Net/protoent.pm @@ -1,9 +1,10 @@ package Net::protoent; use strict; +use 5.005_64; +our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); BEGIN { use Exporter (); - use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS); @EXPORT = qw(getprotobyname getprotobynumber getprotoent); @EXPORT_OK = qw( $p_name @p_aliases $p_proto ); %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] ); diff --git a/contrib/perl5/lib/Net/servent.pm b/contrib/perl5/lib/Net/servent.pm index fb85dd04bfa6..c892af0bbea7 100644 --- a/contrib/perl5/lib/Net/servent.pm +++ b/contrib/perl5/lib/Net/servent.pm @@ -1,9 +1,10 @@ package Net::servent; use strict; +use 5.005_64; +our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); BEGIN { use Exporter (); - use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS); @EXPORT = qw(getservbyname getservbyport getservent getserv); @EXPORT_OK = qw( $s_name @s_aliases $s_port $s_proto ); %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] ); diff --git a/contrib/perl5/lib/Pod/Checker.pm b/contrib/perl5/lib/Pod/Checker.pm new file mode 100644 index 000000000000..ae32677db1a3 --- /dev/null +++ b/contrib/perl5/lib/Pod/Checker.pm @@ -0,0 +1,1195 @@ +############################################################################# +# Pod/Checker.pm -- check pod documents for syntax errors +# +# Copyright (C) 1994-2000 by Bradford Appleton. All rights reserved. +# This file is part of "PodParser". PodParser is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::Checker; + +use vars qw($VERSION); +$VERSION = 1.098; ## Current version of this package +require 5.005; ## requires this Perl version or later + +use Pod::ParseUtils; ## for hyperlinks and lists + +=head1 NAME + +Pod::Checker, podchecker() - check pod documents for syntax errors + +=head1 SYNOPSIS + + use Pod::Checker; + + $syntax_okay = podchecker($filepath, $outputpath, %options); + + my $checker = new Pod::Checker %options; + $checker->parse_from_file($filepath, \*STDERR); + +=head1 OPTIONS/ARGUMENTS + +C<$filepath> is the input POD to read and C<$outputpath> is +where to write POD syntax error messages. Either argument may be a scalar +indicating a file-path, or else a reference to an open filehandle. +If unspecified, the input-file it defaults to C<\*STDIN>, and +the output-file defaults to C<\*STDERR>. + +=head2 podchecker() + +This function can take a hash of options: + +=over 4 + +=item B<-warnings> =E I + +Turn warnings on/off. See L<"Warnings">. + +=back + +=head1 DESCRIPTION + +B will perform syntax checking of Perl5 POD format documentation. + +I + +It is hoped that curious/ambitious user will help flesh out and add the +additional features they wish to see in B and B +and verify that the checks are consistent with L. + +The following checks are currently preformed: + +=over 4 + +=item * + +Unknown '=xxxx' commands, unknown 'XE...E' interior-sequences, +and unterminated interior sequences. + +=item * + +Check for proper balancing of C<=begin> and C<=end>. The contents of such +a block are generally ignored, i.e. no syntax checks are performed. + +=item * + +Check for proper nesting and balancing of C<=over>, C<=item> and C<=back>. + +=item * + +Check for same nested interior-sequences (e.g. +C...LE...E...E>). + +=item * + +Check for malformed or nonexisting entities C...E>. + +=item * + +Check for correct syntax of hyperlinks C...E>. See L +for details. + +=item * + +Check for unresolved document-internal links. This check may also reveal +misspelled links that seem to be internal links but should be links +to something else. + +=back + +=head1 DIAGNOSTICS + +=head2 Errors + +=over 4 + +=item * empty =headn + +A heading (C<=head1> or C<=head2>) without any text? That ain't no +heading! + +=item * =over on line I without closing =back + +The C<=over> command does not have a corresponding C<=back> before the +next heading (C<=head1> or C<=head2>) or the end of the file. + +=item * =item without previous =over + +=item * =back without previous =over + +An C<=item> or C<=back> command has been found outside a +C<=over>/C<=back> block. + +=item * No argument for =begin + +A C<=begin> command was found that is not followed by the formatter +specification. + +=item * =end without =begin + +A standalone C<=end> command was found. + +=item * Nested =begin's + +There were at least two consecutive C<=begin> commands without +the corresponding C<=end>. Only one C<=begin> may be active at +a time. + +=item * =for without formatter specification + +There is no specification of the formatter after the C<=for> command. + +=item * unresolved internal link I + +The given link to I does not have a matching node in the current +POD. This also happend when a single word node name is not enclosed in +C<"">. + +=item * Unknown command "I" + +An invalid POD command has been found. Valid are C<=head1>, C<=head2>, +C<=over>, C<=item>, C<=back>, C<=begin>, C<=end>, C<=for>, C<=pod>, +C<=cut> + +=item * Unknown interior-sequence "I" + +An invalid markup command has been encountered. Valid are: +CE>, CE>, CE>, CE>, +CE>, CE>, CE>, CE>, +CE> + +=item * nested commands IE...IE...E...E + +Two nested identical markup commands have been found. Generally this +does not make sense. + +=item * garbled entity I + +The I found cannot be interpreted as a character entity. + +=item * Entity number out of range + +An entity specified by number (dec, hex, oct) is out of range (1-255). + +=item * malformed link LEE + +The link found cannot be parsed because it does not conform to the +syntax described in L. + +=item * nonempty ZEE + +The CE> sequence is supposed to be empty. + +=item * empty XEE + +The index entry specified contains nothing but whitespace. + +=item * Spurious text after =pod / =cut + +The commands C<=pod> and C<=cut> do not take any arguments. + +=item * Spurious character(s) after =back + +The C<=back> command does not take any arguments. + +=back + +=head2 Warnings + +These may not necessarily cause trouble, but indicate mediocre style. + +=over 4 + +=item * multiple occurence of link target I + +The POD file has some C<=item> and/or C<=head> commands that have +the same text. Potential hyperlinks to such a text cannot be unique then. + +=item * line containing nothing but whitespace in paragraph + +There is some whitespace on a seemingly empty line. POD is very sensitive +to such things, so this is flagged. B users switch on the B +option to avoid this problem. + +=item * file does not start with =head + +The file starts with a different POD directive than head. +This is most probably something you do not want. + +=item * No numeric argument for =over + +The C<=over> command is supposed to have a numeric argument (the +indentation). + +=item * previous =item has no contents + +There is a list C<=item> right above the flagged line that has no +text contents. You probably want to delete empty items. + +=item * preceding non-item paragraph(s) + +A list introduced by C<=over> starts with a text or verbatim paragraph, +but continues with C<=item>s. Move the non-item paragraph out of the +C<=over>/C<=back> block. + +=item * =item type mismatch (I vs. I) + +A list started with e.g. a bulletted C<=item> and continued with a +numbered one. This is obviously inconsistent. For most translators the +type of the I C<=item> determines the type of the list. + +=item * I unescaped CE> in paragraph + +Angle brackets not written as CltE> and CgtE> +can potentially cause errors as they could be misinterpreted as +markup commands. + +=item * Unknown entity + +A character entity was found that does not belong to the standard +ISO set or the POD specials C and C. + +=item * No items in =over + +The list opened with C<=over> does not contain any items. + +=item * No argument for =item + +C<=item> without any parameters is deprecated. It should either be followed +by C<*> to indicate an unordered list, by a number (optionally followed +by a dot) to indicate an ordered (numbered) list or simple text for a +definition list. + +=item * empty section in previous paragraph + +The previous section (introduced by a C<=head> command) does not contain +any text. This usually indicates that something is missing. Note: A +C<=head1> followed immediately by C<=head2> does not trigger this warning. + +=item * Verbatim paragraph in NAME section + +The NAME section (C<=head1 NAME>) should consist of a single paragraph +with the script/module name, followed by a dash `-' and a very short +description of what the thing is good for. + +=item * Hyperlinks + +There are some warnings wrt. hyperlinks: +Leading/trailing whitespace, newlines in hyperlinks, +brackets C<()>. + +=back + +=head1 RETURN VALUE + +B returns the number of POD syntax errors found or -1 if +there were no POD commands at all found in the file. + +=head1 EXAMPLES + +I<[T.B.D.]> + +=head1 INTERFACE + +While checking, this module collects document properties, e.g. the nodes +for hyperlinks (C<=headX>, C<=item>) and index entries (CE>). +POD translators can use this feature to syntax-check and get the nodes in +a first pass before actually starting to convert. This is expensive in terms +of execution time, but allows for very robust conversions. + +=cut + +############################################################################# + +use strict; +#use diagnostics; +use Carp; +use Exporter; +use Pod::Parser; +require VMS::Filespec if $^O eq 'VMS'; + +use vars qw(@ISA @EXPORT); +@ISA = qw(Pod::Parser); +@EXPORT = qw(&podchecker); + +use vars qw(%VALID_COMMANDS %VALID_SEQUENCES); + +my %VALID_COMMANDS = ( + 'pod' => 1, + 'cut' => 1, + 'head1' => 1, + 'head2' => 1, + 'over' => 1, + 'back' => 1, + 'item' => 1, + 'for' => 1, + 'begin' => 1, + 'end' => 1, +); + +my %VALID_SEQUENCES = ( + 'I' => 1, + 'B' => 1, + 'S' => 1, + 'C' => 1, + 'L' => 1, + 'F' => 1, + 'X' => 1, + 'Z' => 1, + 'E' => 1, +); + +# stolen from HTML::Entities +my %ENTITIES = ( + # Some normal chars that have special meaning in SGML context + amp => '&', # ampersand +'gt' => '>', # greater than +'lt' => '<', # less than + quot => '"', # double quote + + # PUBLIC ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML + AElig => 'Æ', # capital AE diphthong (ligature) + Aacute => 'Á', # capital A, acute accent + Acirc => 'Â', # capital A, circumflex accent + Agrave => 'À', # capital A, grave accent + Aring => 'Å', # capital A, ring + Atilde => 'Ã', # capital A, tilde + Auml => 'Ä', # capital A, dieresis or umlaut mark + Ccedil => 'Ç', # capital C, cedilla + ETH => 'Ð', # capital Eth, Icelandic + Eacute => 'É', # capital E, acute accent + Ecirc => 'Ê', # capital E, circumflex accent + Egrave => 'È', # capital E, grave accent + Euml => 'Ë', # capital E, dieresis or umlaut mark + Iacute => 'Í', # capital I, acute accent + Icirc => 'Î', # capital I, circumflex accent + Igrave => 'Ì', # capital I, grave accent + Iuml => 'Ï', # capital I, dieresis or umlaut mark + Ntilde => 'Ñ', # capital N, tilde + Oacute => 'Ó', # capital O, acute accent + Ocirc => 'Ô', # capital O, circumflex accent + Ograve => 'Ò', # capital O, grave accent + Oslash => 'Ø', # capital O, slash + Otilde => 'Õ', # capital O, tilde + Ouml => 'Ö', # capital O, dieresis or umlaut mark + THORN => 'Þ', # capital THORN, Icelandic + Uacute => 'Ú', # capital U, acute accent + Ucirc => 'Û', # capital U, circumflex accent + Ugrave => 'Ù', # capital U, grave accent + Uuml => 'Ü', # capital U, dieresis or umlaut mark + Yacute => 'Ý', # capital Y, acute accent + aacute => 'á', # small a, acute accent + acirc => 'â', # small a, circumflex accent + aelig => 'æ', # small ae diphthong (ligature) + agrave => 'à', # small a, grave accent + aring => 'å', # small a, ring + atilde => 'ã', # small a, tilde + auml => 'ä', # small a, dieresis or umlaut mark + ccedil => 'ç', # small c, cedilla + eacute => 'é', # small e, acute accent + ecirc => 'ê', # small e, circumflex accent + egrave => 'è', # small e, grave accent + eth => 'ð', # small eth, Icelandic + euml => 'ë', # small e, dieresis or umlaut mark + iacute => 'í', # small i, acute accent + icirc => 'î', # small i, circumflex accent + igrave => 'ì', # small i, grave accent + iuml => 'ï', # small i, dieresis or umlaut mark + ntilde => 'ñ', # small n, tilde + oacute => 'ó', # small o, acute accent + ocirc => 'ô', # small o, circumflex accent + ograve => 'ò', # small o, grave accent + oslash => 'ø', # small o, slash + otilde => 'õ', # small o, tilde + ouml => 'ö', # small o, dieresis or umlaut mark + szlig => 'ß', # small sharp s, German (sz ligature) + thorn => 'þ', # small thorn, Icelandic + uacute => 'ú', # small u, acute accent + ucirc => 'û', # small u, circumflex accent + ugrave => 'ù', # small u, grave accent + uuml => 'ü', # small u, dieresis or umlaut mark + yacute => 'ý', # small y, acute accent + yuml => 'ÿ', # small y, dieresis or umlaut mark + + # Some extra Latin 1 chars that are listed in the HTML3.2 draft (21-May-96) + copy => '©', # copyright sign + reg => '®', # registered sign + nbsp => "\240", # non breaking space + + # Additional ISO-8859/1 entities listed in rfc1866 (section 14) + iexcl => '¡', + cent => '¢', + pound => '£', + curren => '¤', + yen => '¥', + brvbar => '¦', + sect => '§', + uml => '¨', + ordf => 'ª', + laquo => '«', +'not' => '¬', # not is a keyword in perl + shy => '­', + macr => '¯', + deg => '°', + plusmn => '±', + sup1 => '¹', + sup2 => '²', + sup3 => '³', + acute => '´', + micro => 'µ', + para => '¶', + middot => '·', + cedil => '¸', + ordm => 'º', + raquo => '»', + frac14 => '¼', + frac12 => '½', + frac34 => '¾', + iquest => '¿', +'times' => '×', # times is a keyword in perl + divide => '÷', + +# some POD special entities + verbar => '|', + sol => '/' +); + +##--------------------------------------------------------------------------- + +##--------------------------------- +## Function definitions begin here +##--------------------------------- + +sub podchecker( $ ; $ % ) { + my ($infile, $outfile, %options) = @_; + local $_; + + ## Set defaults + $infile ||= \*STDIN; + $outfile ||= \*STDERR; + + ## Now create a pod checker + my $checker = new Pod::Checker(%options); + $checker->parseopts(-process_cut_cmd => 1, -warnings => 1); + + ## Now check the pod document for errors + $checker->parse_from_file($infile, $outfile); + + ## Return the number of errors found + return $checker->num_errors(); +} + +##--------------------------------------------------------------------------- + +##------------------------------- +## Method definitions begin here +##------------------------------- + +## sub new { +## my $this = shift; +## my $class = ref($this) || $this; +## my %params = @_; +## my $self = {%params}; +## bless $self, $class; +## $self->initialize(); +## return $self; +## } + +sub initialize { + my $self = shift; + ## Initialize number of errors, and setup an error function to + ## increment this number and then print to the designated output. + $self->{_NUM_ERRORS} = 0; + $self->errorsub('poderror'); # set the error handling subroutine + $self->{_commands} = 0; # total number of POD commands encountered + $self->{_list_stack} = []; # stack for nested lists + $self->{_have_begin} = ''; # stores =begin + $self->{_links} = []; # stack for internal hyperlinks + $self->{_nodes} = []; # stack for =head/=item nodes + $self->{_index} = []; # text in X<> + # print warnings? + $self->{-warnings} = 1 unless(defined $self->{-warnings}); + $self->{_current_head1} = ''; # the current =head1 block +} + +################################## + +=over 4 + +=item C<$checker-Epoderror( @args )> + +=item C<$checker-Epoderror( {%opts}, @args )> + +Internal method for printing errors and warnings. If no options are +given, simply prints "@_". The following options are recognized and used +to form the output: + + -msg + +A message to print prior to C<@args>. + + -line + +The line number the error occurred in. + + -file + +The file (name) the error occurred in. + + -severity + +The error level, should be 'WARNING' or 'ERROR'. + +=cut + +# Invoked as $self->poderror( @args ), or $self->poderror( {%opts}, @args ) +sub poderror { + my $self = shift; + my %opts = (ref $_[0]) ? %{shift()} : (); + $opts{-file} = VMS::Filespec::unixify($opts{-file}) if (exists($opts{-file}) && $^O eq 'VMS'); + + ## Retrieve options + chomp( my $msg = ($opts{-msg} || "")."@_" ); + my $line = (exists $opts{-line}) ? " at line $opts{-line}" : ""; + my $file = (exists $opts{-file}) ? " in file $opts{-file}" : ""; + unless (exists $opts{-severity}) { + ## See if can find severity in message prefix + $opts{-severity} = $1 if ( $msg =~ s/^\**\s*([A-Z]{3,}):\s+// ); + } + my $severity = (exists $opts{-severity}) ? "*** $opts{-severity}: " : ""; + + ## Increment error count and print message " + ++($self->{_NUM_ERRORS}) + if(!%opts || ($opts{-severity} && $opts{-severity} eq 'ERROR')); + my $out_fh = $self->output_handle(); + print $out_fh ($severity, $msg, $line, $file, "\n") + if($self->{-warnings} || !%opts || $opts{-severity} ne 'WARNING'); +} + +################################## + +=item C<$checker-Enum_errors()> + +Set (if argument specified) and retrieve the number of errors found. + +=cut + +sub num_errors { + return (@_ > 1) ? ($_[0]->{_NUM_ERRORS} = $_[1]) : $_[0]->{_NUM_ERRORS}; +} + +################################## + +=item C<$checker-Ename()> + +Set (if argument specified) and retrieve the canonical name of POD as +found in the C<=head1 NAME> section. + +=cut + +sub name { + return (@_ > 1 && $_[1]) ? + ($_[0]->{-name} = $_[1]) : $_[0]->{-name}; +} + +################################## + +=item C<$checker-Enode()> + +Add (if argument specified) and retrieve the nodes (as defined by C<=headX> +and C<=item>) of the current POD. The nodes are returned in the order of +their occurence. They consist of plain text, each piece of whitespace is +collapsed to a single blank. + +=cut + +sub node { + my ($self,$text) = @_; + if(defined $text) { + $text =~ s/\s+$//s; # strip trailing whitespace + $text =~ s/\s+/ /gs; # collapse whitespace + # add node, order important! + push(@{$self->{_nodes}}, $text); + # keep also a uniqueness counter + $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s); + return $text; + } + @{$self->{_nodes}}; +} + +################################## + +=item C<$checker-Eidx()> + +Add (if argument specified) and retrieve the index entries (as defined by +CE>) of the current POD. They consist of plain text, each piece +of whitespace is collapsed to a single blank. + +=cut + +# set/return index entries of current POD +sub idx { + my ($self,$text) = @_; + if(defined $text) { + $text =~ s/\s+$//s; # strip trailing whitespace + $text =~ s/\s+/ /gs; # collapse whitespace + # add node, order important! + push(@{$self->{_index}}, $text); + # keep also a uniqueness counter + $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s); + return $text; + } + @{$self->{_index}}; +} + +################################## + +=item C<$checker-Ehyperlink()> + +Add (if argument specified) and retrieve the hyperlinks (as defined by +CE>) of the current POD. They consist of an 2-item array: line +number and C object. + +=back + +=cut + +# set/return hyperlinks of the current POD +sub hyperlink { + my $self = shift; + if($_[0]) { + push(@{$self->{_links}}, $_[0]); + return $_[0]; + } + @{$self->{_links}}; +} + +## overrides for Pod::Parser + +sub end_pod { + ## Do some final checks and + ## print the number of errors found + my $self = shift; + my $infile = $self->input_file(); + $infile = VMS::Filespec::unixify($infile) if $^O eq 'VMS'; + my $out_fh = $self->output_handle(); + + if(@{$self->{_list_stack}}) { + # _TODO_ display, but don't count them for now + my $list; + while(($list = $self->_close_list('EOF',$infile)) && + $list->indent() ne 'auto') { + $self->poderror({ -line => 'EOF', -file => $infile, + -severity => 'ERROR', -msg => "=over on line " . + $list->start() . " without closing =back" }); #" + } + } + + # check validity of document internal hyperlinks + # first build the node names from the paragraph text + my %nodes; + foreach($self->node()) { + $nodes{$_} = 1; + if(/^(\S+)\s+/) { + # we have more than one word. Use the first as a node, too. + # This is used heavily in perlfunc.pod + $nodes{$1} ||= 2; # derived node + } + } + foreach($self->hyperlink()) { + my ($line,$link) = @$_; + # _TODO_ what if there is a link to the page itself by the name, + # e.g. in Tk::Pod : L + if($link->node() && !$link->page() && $link->type() ne 'hyperlink') { + my $node = $self->_check_ptree($self->parse_text($link->node(), + $line), $line, $infile, 'L'); + if($node && !$nodes{$node}) { + $self->poderror({ -line => $line || '', -file => $infile, + -severity => 'ERROR', + -msg => "unresolved internal link '$node'"}); + } + } + } + + # check the internal nodes for uniqueness. This pertains to + # =headX, =item and X<...> + foreach(grep($self->{_unique_nodes}->{$_} > 1, + keys %{$self->{_unique_nodes}})) { + $self->poderror({ -line => '-', -file => $infile, + -severity => 'WARNING', + -msg => "multiple occurence of link target '$_'"}); + } + + ## Print the number of errors found + my $num_errors = $self->num_errors(); + if ($num_errors > 0) { + printf $out_fh ("$infile has $num_errors pod syntax %s.\n", + ($num_errors == 1) ? "error" : "errors"); + } + elsif($self->{_commands} == 0) { + print $out_fh "$infile does not contain any pod commands.\n"; + $self->num_errors(-1); + } + else { + print $out_fh "$infile pod syntax OK.\n"; + } +} + +# check a POD command directive +sub command { + my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_; + my ($file, $line) = $pod_para->file_line; + ## Check the command syntax + my $arg; # this will hold the command argument + if (! $VALID_COMMANDS{$cmd}) { + $self->poderror({ -line => $line, -file => $file, -severity => 'ERROR', + -msg => "Unknown command '$cmd'" }); + } + else { + # found a valid command + if(!$self->{_commands}++ && $cmd !~ /^head/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "file does not start with =head" }); + } + ## check syntax of particular command + if($cmd eq 'over') { + # check for argument + $arg = $self->interpolate_and_check($paragraph, $line,$file); + my $indent = 4; # default + if($arg && $arg =~ /^\s*(\d+)\s*$/) { + $indent = $1; + } else { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "No numeric argument for =over"}); + } + # start a new list + $self->_open_list($indent,$line,$file); + } + elsif($cmd eq 'item') { + # are we in a list? + unless(@{$self->{_list_stack}}) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "=item without previous =over" }); + # auto-open in case we encounter many more + $self->_open_list('auto',$line,$file); + } + my $list = $self->{_list_stack}->[0]; + # check whether the previous item had some contents + if(defined $self->{_list_item_contents} && + $self->{_list_item_contents} == 0) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "previous =item has no contents" }); + } + if($list->{_has_par}) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "preceding non-item paragraph(s)" }); + delete $list->{_has_par}; + } + # check for argument + $arg = $self->interpolate_and_check($paragraph, $line, $file); + if($arg && $arg =~ /(\S+)/) { + $arg =~ s/[\s\n]+$//; + my $type; + if($arg =~ /^[*]\s*(\S*.*)/) { + $type = 'bullet'; + $self->{_list_item_contents} = $1 ? 1 : 0; + $arg = $1; + } + elsif($arg =~ /^\d+\.?\s*(\S*)/) { + $type = 'number'; + $self->{_list_item_contents} = $1 ? 1 : 0; + $arg = $1; + } + else { + $type = 'definition'; + $self->{_list_item_contents} = 1; + } + my $first = $list->type(); + if($first && $first ne $type) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "=item type mismatch ('$first' vs. '$type')"}); + } + else { # first item + $list->type($type); + } + } + else { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "No argument for =item" }); + $arg = ' '; # empty + $self->{_list_item_contents} = 0; + } + # add this item + $list->item($arg); + # remember this node + $self->node($arg); + } + elsif($cmd eq 'back') { + # check if we have an open list + unless(@{$self->{_list_stack}}) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "=back without previous =over" }); + } + else { + # check for spurious characters + $arg = $self->interpolate_and_check($paragraph, $line,$file); + if($arg && $arg =~ /\S/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "Spurious character(s) after =back" }); + } + # close list + my $list = $self->_close_list($line,$file); + # check for empty lists + if(!$list->item() && $self->{-warnings}) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "No items in =over (at line " . + $list->start() . ") / =back list"}); #" + } + } + } + elsif($cmd =~ /^head(\d+)/) { + # check whether the previous =head section had some contents + if(defined $self->{_commands_in_head} && + $self->{_commands_in_head} == 0 && + defined $self->{_last_head} && + $self->{_last_head} >= $1) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "empty section in previous paragraph"}); + } + $self->{_commands_in_head} = -1; + $self->{_last_head} = $1; + # check if there is an open list + if(@{$self->{_list_stack}}) { + my $list; + while(($list = $self->_close_list($line,$file)) && + $list->indent() ne 'auto') { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "=over on line ". $list->start() . + " without closing =back (at $cmd)" }); + } + } + # remember this node + $arg = $self->interpolate_and_check($paragraph, $line,$file); + $arg =~ s/[\s\n]+$//s; + $self->node($arg); + unless(length($arg)) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "empty =$cmd"}); + } + if($cmd eq 'head1') { + $self->{_current_head1} = $arg; + } else { + $self->{_current_head1} = ''; + } + } + elsif($cmd eq 'begin') { + if($self->{_have_begin}) { + # already have a begin + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "Nested =begin's (first at line " . + $self->{_have_begin} . ")"}); + } + else { + # check for argument + $arg = $self->interpolate_and_check($paragraph, $line,$file); + unless($arg && $arg =~ /(\S+)/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "No argument for =begin"}); + } + # remember the =begin + $self->{_have_begin} = "$line:$1"; + } + } + elsif($cmd eq 'end') { + if($self->{_have_begin}) { + # close the existing =begin + $self->{_have_begin} = ''; + # check for spurious characters + $arg = $self->interpolate_and_check($paragraph, $line,$file); + # the closing argument is optional + #if($arg && $arg =~ /\S/) { + # $self->poderror({ -line => $line, -file => $file, + # -severity => 'WARNING', + # -msg => "Spurious character(s) after =end" }); + #} + } + else { + # don't have a matching =begin + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "=end without =begin" }); + } + } + elsif($cmd eq 'for') { + unless($paragraph =~ /\s*(\S+)\s*/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "=for without formatter specification" }); + } + $arg = ''; # do not expand paragraph below + } + elsif($cmd =~ /^(pod|cut)$/) { + # check for argument + $arg = $self->interpolate_and_check($paragraph, $line,$file); + if($arg && $arg =~ /(\S+)/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "Spurious text after =$cmd"}); + } + } + $self->{_commands_in_head}++; + ## Check the interior sequences in the command-text + $self->interpolate_and_check($paragraph, $line,$file) + unless(defined $arg); + } +} + +sub _open_list +{ + my ($self,$indent,$line,$file) = @_; + my $list = Pod::List->new( + -indent => $indent, + -start => $line, + -file => $file); + unshift(@{$self->{_list_stack}}, $list); + undef $self->{_list_item_contents}; + $list; +} + +sub _close_list +{ + my ($self,$line,$file) = @_; + my $list = shift(@{$self->{_list_stack}}); + if(defined $self->{_list_item_contents} && + $self->{_list_item_contents} == 0) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "previous =item has no contents" }); + } + undef $self->{_list_item_contents}; + $list; +} + +# process a block of some text +sub interpolate_and_check { + my ($self, $paragraph, $line, $file) = @_; + ## Check the interior sequences in the command-text + # and return the text + $self->_check_ptree( + $self->parse_text($paragraph,$line), $line, $file, ''); +} + +sub _check_ptree { + my ($self,$ptree,$line,$file,$nestlist) = @_; + local($_); + my $text = ''; + # process each node in the parse tree + foreach(@$ptree) { + # regular text chunk + unless(ref) { + my $count; + # count the unescaped angle brackets + my $i = $_; + if($count = $i =~ tr/<>/<>/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "$count unescaped <> in paragraph" }) + if($self->{-warnings}); + } + $text .= $i; + next; + } + # have an interior sequence + my $cmd = $_->cmd_name(); + my $contents = $_->parse_tree(); + ($file,$line) = $_->file_line(); + # check for valid tag + if (! $VALID_SEQUENCES{$cmd}) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => qq(Unknown interior-sequence '$cmd')}); + # expand it anyway + $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd"); + next; + } + if($nestlist =~ /$cmd/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "nested commands $cmd<...$cmd<...>...>"}); + # _TODO_ should we add the contents anyway? + # expand it anyway, see below + } + if($cmd eq 'E') { + # preserve entities + if(@$contents > 1 || ref $$contents[0] || $$contents[0] !~ /^\w+$/) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "garbled entity " . $_->raw_text()}); + next; + } + my $ent = $$contents[0]; + my $val; + if($ent =~ /^0x[0-9a-f]+$/i) { + # hexadec entity + $val = hex($ent); + } + elsif($ent =~ /^0\d+$/) { + # octal + $val = oct($ent); + } + elsif($ent =~ /^\d+$/) { + # numeric entity + $val = $ent; + } + if(defined $val) { + if($val>0 && $val<256) { + $text .= chr($val); + } + else { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "Entity number out of range " . $_->raw_text()}); + } + } + elsif($ENTITIES{$ent}) { + # known ISO entity + $text .= $ENTITIES{$ent}; + } + else { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => "Unknown entity " . $_->raw_text()}); + $text .= "E<$ent>"; + } + } + elsif($cmd eq 'L') { + # try to parse the hyperlink + my $link = Pod::Hyperlink->new($contents->raw_text()); + unless(defined $link) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "malformed link " . $_->raw_text() ." : $@"}); + next; + } + $link->line($line); # remember line + if($self->{-warnings}) { + foreach my $w ($link->warning()) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => $w }); + } + } + # check the link text + $text .= $self->_check_ptree($self->parse_text($link->text(), + $line), $line, $file, "$nestlist$cmd"); + # remember link + $self->hyperlink([$line,$link]); + } + elsif($cmd =~ /[BCFIS]/) { + # add the guts + $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd"); + } + elsif($cmd eq 'Z') { + if(length($contents->raw_text())) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "Nonempty Z<>"}); + } + } + elsif($cmd eq 'X') { + my $idx = $self->_check_ptree($contents, $line, $file, "$nestlist$cmd"); + if($idx =~ /^\s*$/s) { + $self->poderror({ -line => $line, -file => $file, + -severity => 'ERROR', + -msg => "Empty X<>"}); + } + else { + # remember this node + $self->idx($idx); + } + } + else { + # not reached + die "internal error"; + } + } + $text; +} + +# process a block of verbatim text +sub verbatim { + ## Nothing particular to check + my ($self, $paragraph, $line_num, $pod_para) = @_; + + $self->_preproc_par($paragraph); + + if($self->{_current_head1} eq 'NAME') { + my ($file, $line) = $pod_para->file_line; + $self->poderror({ -line => $line, -file => $file, + -severity => 'WARNING', + -msg => 'Verbatim paragraph in NAME section' }); + } +} + +# process a block of regular text +sub textblock { + my ($self, $paragraph, $line_num, $pod_para) = @_; + my ($file, $line) = $pod_para->file_line; + + $self->_preproc_par($paragraph); + + # skip this paragraph if in a =begin block + unless($self->{_have_begin}) { + my $block = $self->interpolate_and_check($paragraph, $line,$file); + if($self->{_current_head1} eq 'NAME') { + if($block =~ /^\s*(\S+?)\s*[,-]/) { + # this is the canonical name + $self->{-name} = $1 unless(defined $self->{-name}); + } + } + } +} + +sub _preproc_par +{ + my $self = shift; + $_[0] =~ s/[\s\n]+$//; + if($_[0]) { + $self->{_commands_in_head}++; + $self->{_list_item_contents}++ if(defined $self->{_list_item_contents}); + if(@{$self->{_list_stack}} && !$self->{_list_stack}->[0]->item()) { + $self->{_list_stack}->[0]->{_has_par} = 1; + } + } +} + +1; + +__END__ + +=head1 AUTHOR + +Brad Appleton Ebradapp@enteract.comE (initial version), +Marek Rouchal Emarek@saftsack.fs.uni-bayreuth.deE + +Based on code for B written by +Tom Christiansen Etchrist@mox.perl.comE + +=cut + diff --git a/contrib/perl5/lib/Pod/Find.pm b/contrib/perl5/lib/Pod/Find.pm new file mode 100644 index 000000000000..8de197b71da4 --- /dev/null +++ b/contrib/perl5/lib/Pod/Find.pm @@ -0,0 +1,278 @@ +############################################################################# +# Pod/Find.pm -- finds files containing POD documentation +# +# Author: Marek Rouchal +# +# Copyright (C) 1999-2000 by Marek Rouchal (and borrowing code +# from Nick Ing-Simmon's PodToHtml). All rights reserved. +# This file is part of "PodParser". Pod::Find is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::Find; + +use vars qw($VERSION); +$VERSION = 0.12; ## Current version of this package +require 5.005; ## requires this Perl version or later + +############################################################################# + +=head1 NAME + +Pod::Find - find POD documents in directory trees + +=head1 SYNOPSIS + + use Pod::Find qw(pod_find simplify_name); + my %pods = pod_find({ -verbose => 1, -inc => 1 }); + foreach(keys %pods) { + print "found library POD `$pods{$_}' in $_\n"; + } + + print "podname=",simplify_name('a/b/c/mymodule.pod'),"\n"; + +=head1 DESCRIPTION + +B provides a function B that searches for POD +documents in a given set of files and directories. It returns a hash +with the file names as keys and the POD name as value. The POD name +is derived from the file name and its position in the directory tree. + +E.g. when searching in F<$HOME/perl5lib>, the file +F<$HOME/perl5lib/MyModule.pm> would get the POD name I, +whereas F<$HOME/perl5lib/Myclass/Subclass.pm> would be +I. The name information can be used for POD +translators. + +Only text files containing at least one valid POD command are found. + +A warning is printed if more than one POD file with the same POD name +is found, e.g. F in different directories. This usually +indicates duplicate occurrences of modules in the I<@INC> search path. + +The function B is equivalent to B, but also +strips Perl-like extensions (.pm, .pl, .pod) and extensions like +F<.bat>, F<.cmd> on Win32 and OS/2, respectively. + +Note that neither B nor B are exported by +default so be sure to specify them in the B statement if you need +them: + + use Pod::Find qw(pod_find simplify_name); + +=head1 OPTIONS + +The first argument for B may be a hash reference with options. +The rest are either directories that are searched recursively or files. +The POD names of files are the plain basenames with any Perl-like extension +(.pm, .pl, .pod) stripped. + +=over 4 + +=item B<-verbose> + +Print progress information while scanning. + +=item B<-perl> + +Apply Perl-specific heuristics to find the correct PODs. This includes +stripping Perl-like extensions, omitting subdirectories that are numeric +but do I match the current Perl interpreter's version id, suppressing +F as a module hierarchy name etc. + +=item B<-script> + +Search for PODs in the current Perl interpreter's installation +B. This is taken from the local L module. + +=item B<-inc> + +Search for PODs in the current Perl interpreter's I<@INC> paths. This +automatically considers paths specified in the C environment. + +=back + +=head1 AUTHOR + +Marek Rouchal Emarek@saftsack.fs.uni-bayreuth.deE, +heavily borrowing code from Nick Ing-Simmons' PodToHtml. + +=head1 SEE ALSO + +L, L + +=cut + +use strict; +#use diagnostics; +use Exporter; +use File::Spec; +use File::Find; +use Cwd; + +use vars qw(@ISA @EXPORT_OK $VERSION); +@ISA = qw(Exporter); +@EXPORT_OK = qw(&pod_find &simplify_name); + +# package global variables +my $SIMPLIFY_RX; + +# return a hash of the POD files found +# first argument may be a hashref (options), +# rest is a list of directories to search recursively +sub pod_find +{ + my %opts; + if(ref $_[0]) { + %opts = %{shift()}; + } + + $opts{-verbose} ||= 0; + $opts{-perl} ||= 0; + + my (@search) = @_; + + if($opts{-script}) { + require Config; + push(@search, $Config::Config{scriptdir}); + $opts{-perl} = 1; + } + + if($opts{-inc}) { + push(@search, grep($_ ne '.',@INC)); + $opts{-perl} = 1; + } + + if($opts{-perl}) { + require Config; + # this code simplifies the POD name for Perl modules: + # * remove "site_perl" + # * remove e.g. "i586-linux" (from 'archname') + # * remove e.g. 5.00503 + # * remove pod/ if followed by *.pod (e.g. in pod/perlfunc.pod) + $SIMPLIFY_RX = + qq!^(?i:site_perl/|\Q$Config::Config{archname}\E/|\\d+\\.\\d+([_.]?\\d+)?/|pod/(?=.*?\\.pod\\z))*!; + + } + + my %dirs_visited; + my %pods; + my %names; + my $pwd = cwd(); + + foreach my $try (@search) { + unless(File::Spec->file_name_is_absolute($try)) { + # make path absolute + $try = File::Spec->catfile($pwd,$try); + } + # simplify path + $try = File::Spec->canonpath($try); + my $name; + if(-f $try) { + if($name = _check_and_extract_name($try, $opts{-verbose})) { + _check_for_duplicates($try, $name, \%names, \%pods); + } + next; + } + my $root_rx = qq!^\Q$try\E/!; + File::Find::find( sub { + my $item = $File::Find::name; + if(-d) { + if($dirs_visited{$item}) { + warn "Directory '$item' already seen, skipping.\n" + if($opts{-verbose}); + $File::Find::prune = 1; + return; + } + else { + $dirs_visited{$item} = 1; + } + if($opts{-perl} && /^(\d+\.[\d_]+)\z/s && eval "$1" != $]) { + $File::Find::prune = 1; + warn "Perl $] version mismatch on $_, skipping.\n" + if($opts{-verbose}); + } + return; + } + if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) { + _check_for_duplicates($item, $name, \%names, \%pods); + } + }, $try); # end of File::Find::find + } + chdir $pwd; + %pods; +} + +sub _check_for_duplicates { + my ($file, $name, $names_ref, $pods_ref) = @_; + if($$names_ref{$name}) { + warn "Duplicate POD found (shadowing?): $name ($file)\n"; + warn " Already seen in ", + join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n"; + } + else { + $$names_ref{$name} = 1; + } + $$pods_ref{$file} = $name; +} + +sub _check_and_extract_name { + my ($file, $verbose, $root_rx) = @_; + + # check extension or executable flag + # this involves testing the .bat extension on Win32! + unless($file =~ /\.(pod|pm|plx?)\z/i || (-f $file && -x _ && -T _)) { + return undef; + } + + # check for one line of POD + unless(open(POD,"<$file")) { + warn "Error: $file is unreadable: $!\n"; + return undef; + } + local $/ = undef; + my $pod = ; + close(POD); + unless($pod =~ /\n=(head\d|pod|over|item)\b/) { + warn "No POD in $file, skipping.\n" + if($verbose); + return; + } + undef $pod; + + # strip non-significant path components + # _TODO_ what happens on e.g. Win32? + my $name = $file; + if(defined $root_rx) { + $name =~ s!$root_rx!!s; + $name =~ s!$SIMPLIFY_RX!!os if(defined $SIMPLIFY_RX); + } + else { + $name =~ s:^.*/::s; + } + _simplify($name); + $name =~ s!/+!::!g; #/ + $name; +} + +# basic simplification of the POD name: +# basename & strip extension +sub simplify_name { + my ($str) = @_; + # remove all path components + $str =~ s:^.*/::s; + _simplify($str); + $str; +} + +# internal sub only +sub _simplify { + # strip Perl's own extensions + $_[0] =~ s/\.(pod|pm|plx?)\z//i; + # strip meaningless extensions on Win32 and OS/2 + $_[0] =~ s/\.(bat|exe|cmd)\z//i if($^O =~ /win|os2/i); +} + +1; + diff --git a/contrib/perl5/lib/Pod/Functions.pm b/contrib/perl5/lib/Pod/Functions.pm index 3cc9b385a004..03cbf711eb6d 100644 --- a/contrib/perl5/lib/Pod/Functions.pm +++ b/contrib/perl5/lib/Pod/Functions.pm @@ -65,6 +65,8 @@ while () { } } +close DATA; + unless (caller) { foreach $type ( @Type_Order ) { $list = join(", ", sort @{$Kinds{$type}}); @@ -90,9 +92,9 @@ __DATA__ abs Math absolute value function accept Socket accept an incoming socket connect alarm Process schedule a SIGALRM -atan2 Math arctangent of Y/X +atan2 Math arctangent of Y/X in the range -PI to PI bind Socket binds an address to a socket -binmode I/O prepare binary files on old systems +binmode I/O prepare binary files for I/O bless Objects create an object caller Flow,Namespace get context of the current subroutine call chdir File change your current working directory @@ -104,7 +106,7 @@ chr String get character this number represents chroot File make directory new root for path lookups close I/O close file (or pipe or socket) handle closedir I/O close directory handle -connect Socket connect to a remove socket +connect Socket connect to a remote socket continue Flow optional trailing block in a while or foreach cos Math cosine function crypt String one-way passwd-style encryption @@ -123,12 +125,12 @@ endprotoent Network be done using protocols file endpwent User be done using passwd file endservent Network be done using services file eof I/O test a filehandle for its end -eval Flow,Misc catch exceptions or compile code +eval Flow,Misc catch exceptions or compile and run code exec Process abandon this program to run another exists HASH test whether a hash key is present exit Flow terminate this program exp Math raise I to a power -fcntl File file control system all +fcntl File file control system call fileno I/O return file descriptor from filehandle flock I/O lock an entire file with an advisory lock fork Process create a new process just like this one @@ -145,7 +147,7 @@ getlogin User return who logged in at this tty getnetbyaddr Network get network record given its address getnetbyname Network get networks record given name getnetent Network get next networks record -getpeername Socket find the other hend of a socket connection +getpeername Socket find the other end of a socket connection getpgrp Process get process group getppid Process get parent process ID getpriority Process get current nice value @@ -180,6 +182,7 @@ link File create a hard link in the filesytem listen Socket register your socket as a server local Misc,Namespace create a temporary value for a global variable (dynamic scoping) localtime Time convert UNIX time into record or string using local time +lock Threads get a thread lock on a variable, subroutine, or method log Math retrieve the natural logarithm for a number lstat File stat a symbolic link m// Regexp match a string with a regular expression pattern @@ -210,9 +213,11 @@ qq/STRING/ String doubly quote a string quotemeta Regexp quote regular expression magic characters qw/STRING/ LIST quote a list of words qx/STRING/ Process backquote quote a string +qr/PATTERN/ Regexp Compile pattern rand Math retrieve the next pseudorandom number read I/O,Binary fixed-length buffered input from a filehandle readdir I/O get a directory from a directory handle +readline I/O fetch a record from a file readlink File determine where a symbolic link is pointing recv Socket receive a message over a Socket redo Flow start this loop iteration over again @@ -249,7 +254,7 @@ shmget SysV get SysV shared memory segment identifier shmread SysV read SysV shared memory shmwrite SysV write SysV shared memory shutdown Socket close down just half of a socket connection -sin Math return the sin of a number +sin Math return the sine of a number sleep Process block for some number of seconds socket Socket create a socket socketpair Socket create a pair of sockets @@ -266,6 +271,7 @@ substr String get or alter a portion of a stirng symlink File create a symbolic link to a file syscall I/O,Binary execute an arbitrary system call sysread I/O,Binary fixed-length unbuffered input from a filehandle +sysseek I/O,Binary position I/O pointer on handle used with sysread and syswrite system Process run a separate program syswrite I/O,Binary fixed-length unbuffered output to a filehandle tell I/O get current seekpointer on a filehandle diff --git a/contrib/perl5/lib/Pod/Html.pm b/contrib/perl5/lib/Pod/Html.pm index e71afa814bda..89e3d0f43259 100644 --- a/contrib/perl5/lib/Pod/Html.pm +++ b/contrib/perl5/lib/Pod/Html.pm @@ -1,22 +1,21 @@ package Pod::Html; - -use Pod::Functions; -use Getopt::Long; # package for handling command-line parameters +use strict; require Exporter; -use vars qw($VERSION); -$VERSION = 1.01; -@ISA = Exporter; + +use vars qw($VERSION @ISA @EXPORT); +$VERSION = 1.03; +@ISA = qw(Exporter); @EXPORT = qw(pod2html htmlify); -use Cwd; use Carp; +use Config; +use Cwd; +use File::Spec::Unix; +use Getopt::Long; +use Pod::Functions; use locale; # make \w work right in non-ASCII lands -use strict; - -use Config; - =head1 NAME Pod::Html - module to convert pod files to HTML @@ -38,12 +37,48 @@ Pod::Html takes the following arguments: =over 4 +=item backlink + + --backlink="Back to Top" + +Adds "Back to Top" links in front of every HEAD1 heading (except for +the first). By default, no backlink are being generated. + +=item css + + --css=stylesheet + +Specify the URL of a cascading style sheet. + +=item flush + + --flush + +Flushes the item and directory caches. + +=item header + + --header + --noheader + +Creates header and footer blocks containing the text of the NAME +section. By default, no headers are being generated. + =item help --help Displays the usage message. +=item htmldir + + --htmldir=name + +Sets the directory in which the resulting HTML file is placed. This +is used to generate relative links to other files. Not passing this +causes all links to be absolute, since this is the value that tells +Pod::Html the root of the documentation tree. + =item htmlroot --htmlroot=name @@ -51,6 +86,14 @@ Displays the usage message. Sets the base URL for the HTML files. When cross-references are made, the HTML root is prepended to the URL. +=item index + + --index + --noindex + +Generate an index at the top of the HTML file. This is the default +behaviour. + =item infile --infile=name @@ -58,26 +101,6 @@ the HTML root is prepended to the URL. Specify the pod file to convert. Input is taken from STDIN if no infile is specified. -=item outfile - - --outfile=name - -Specify the HTML file to create. Output goes to STDOUT if no outfile -is specified. - -=item podroot - - --podroot=name - -Specify the base directory for finding library pods. - -=item podpath - - --podpath=name:...:name - -Specify which subdirectories of the podroot contain pod files whose -HTML converted forms can be linked-to in cross-references. - =item libpods --libpods=name:...:name @@ -87,39 +110,46 @@ List of page names (eg, "perlfunc") which contain linkable C<=item>s. =item netscape --netscape - -Use Netscape HTML directives when applicable. - -=item nonetscape - --nonetscape -Do not use Netscape HTML directives (default). +Use Netscape HTML directives when applicable. By default, they will +B be used. -=item index +=item outfile - --index + --outfile=name -Generate an index at the top of the HTML file (default behaviour). +Specify the HTML file to create. Output goes to STDOUT if no outfile +is specified. -=item noindex +=item podpath - --noindex + --podpath=name:...:name -Do not generate an index at the top of the HTML file. +Specify which subdirectories of the podroot contain pod files whose +HTML converted forms can be linked-to in cross-references. +=item podroot + + --podroot=name + +Specify the base directory for finding library pods. + +=item quiet + + --quiet + --noquiet + +Don't display I warning messages. These messages +will be displayed by default. But this is not the same as C +mode. =item recurse --recurse - -Recurse into subdirectories specified in podpath (default behaviour). - -=item norecurse - --norecurse -Do not recurse into subdirectories specified in podpath. +Recurse into subdirectories specified in podpath (default behaviour). =item title @@ -130,8 +160,9 @@ Specify the title of the resulting HTML file. =item verbose --verbose + --noverbose -Display progress messages. +Display progress messages. By default, they won't be displayed. =back @@ -146,14 +177,14 @@ Display progress messages. "--infile=foo.pod", "--outfile=/perl/nmanual/foo.html"); +=head1 ENVIRONMENT + +Uses $Config{pod2html} to setup default options. + =head1 AUTHOR Tom Christiansen, Etchrist@perl.comE. -=head1 BUGS - -Has trouble with C<> etc in = commands. - =head1 SEE ALSO L @@ -164,30 +195,35 @@ This program is distributed under the Artistic License. =cut -my $dircache = "pod2html-dircache"; -my $itemcache = "pod2html-itemcache"; +my $cache_ext = $^O eq 'VMS' ? ".tmp" : ".x~~"; +my $dircache = "pod2htmd$cache_ext"; +my $itemcache = "pod2htmi$cache_ext"; my @begin_stack = (); # begin/end stack my @libpods = (); # files to search for links from C<> directives my $htmlroot = "/"; # http-server base directory from which all # relative paths in $podpath stem. +my $htmldir = ""; # The directory to which the html pages + # will (eventually) be written. my $htmlfile = ""; # write to stdout by default +my $htmlfileurl = "" ; # The url that other files would use to + # refer to this file. This is only used + # to make relative urls that point to + # other files. my $podfile = ""; # read from stdin by default my @podpath = (); # list of directories containing library pods. my $podroot = "."; # filesystem base directory from which all # relative paths in $podpath stem. +my $css = ''; # Cascading style sheet my $recurse = 1; # recurse on subdirectories in $podpath. +my $quiet = 0; # not quiet by default my $verbose = 0; # not verbose by default my $doindex = 1; # non-zero if we should generate an index +my $backlink = ''; # text for "back to top" links my $listlevel = 0; # current list depth -my @listitem = (); # stack of HTML commands to use when a =item is - # encountered. the top of the stack is the - # current list. -my @listdata = (); # similar to @listitem, but for the text after - # an =item -my @listend = (); # similar to @listitem, but the text to use to - # end the list. +my @listend = (); # the text to use to end the list. +my $after_lpar = 0; # set to true after a par in an =item my $ignore = 1; # whether or not to format text. we don't # format text until we hit our first pod # directive. @@ -196,42 +232,45 @@ my %items_named = (); # for the multiples of the same item in perlfunc my @items_seen = (); my $netscape = 0; # whether or not to use netscape directives. my $title; # title to give the pod(s) +my $header = 0; # produce block header/footer my $top = 1; # true if we are at the top of the doc. used # to prevent the first
      directive. my $paragraph; # which paragraph we're processing (used # for error messages) +my $ptQuote = 0; # status of double-quote conversion my %pages = (); # associative array used to find the location # of pages referenced by L<> links. my %sections = (); # sections within this page my %items = (); # associative array used to find the location # of =item directives referenced by C<> links +my %local_items = (); # local items - avoid destruction of %items my $Is83; # is dos with short filenames (8.3) sub init_globals { -$dircache = "pod2html-dircache"; -$itemcache = "pod2html-itemcache"; +$dircache = "pod2htmd$cache_ext"; +$itemcache = "pod2htmi$cache_ext"; @begin_stack = (); # begin/end stack @libpods = (); # files to search for links from C<> directives $htmlroot = "/"; # http-server base directory from which all # relative paths in $podpath stem. +$htmldir = ""; # The directory to which the html pages + # will (eventually) be written. $htmlfile = ""; # write to stdout by default $podfile = ""; # read from stdin by default @podpath = (); # list of directories containing library pods. $podroot = "."; # filesystem base directory from which all # relative paths in $podpath stem. +$css = ''; # Cascading style sheet $recurse = 1; # recurse on subdirectories in $podpath. +$quiet = 0; # not quiet by default $verbose = 0; # not verbose by default $doindex = 1; # non-zero if we should generate an index +$backlink = ''; # text for "back to top" links $listlevel = 0; # current list depth -@listitem = (); # stack of HTML commands to use when a =item is - # encountered. the top of the stack is the - # current list. -@listdata = (); # similar to @listitem, but for the text after - # an =item -@listend = (); # similar to @listitem, but the text to use to - # end the list. +@listend = (); # the text to use to end the list. +$after_lpar = 0; # set to true after a par in an =item $ignore = 1; # whether or not to format text. we don't # format text until we hit our first pod # directive. @@ -239,6 +278,7 @@ $ignore = 1; # whether or not to format text. we don't @items_seen = (); %items_named = (); $netscape = 0; # whether or not to use netscape directives. +$header = 0; # produce block header/footer $title = ''; # title to give the pod(s) $top = 1; # true if we are at the top of the doc. used # to prevent the first
      directive. @@ -252,9 +292,28 @@ $paragraph = ''; # which paragraph we're processing (used # of pages referenced by L<> links. #%items = (); # associative array used to find the location # of =item directives referenced by C<> links +%local_items = (); $Is83=$^O eq 'dos'; } +# +# clean_data: global clean-up of pod data +# +sub clean_data($){ + my( $dataref ) = @_; + my $i; + for( $i = 0; $i <= $#$dataref; $i++ ){ + ${$dataref}[$i] =~ s/\s+\Z//; + + # have a look for all-space lines + if( ${$dataref}[$i] =~ /^\s+$/m ){ + my @chunks = split( /^\s+$/m, ${$dataref}[$i] ); + splice( @$dataref, $i, 1, @chunks ); + } + } +} + + sub pod2html { local(@ARGV) = @_; local($/); @@ -283,19 +342,32 @@ sub pod2html { } $htmlfile = "-" unless $htmlfile; # stdout $htmlroot = "" if $htmlroot eq "/"; # so we don't get a // + $htmldir =~ s#/\z## ; # so we don't get a // + if ( $htmlroot eq '' + && defined( $htmldir ) + && $htmldir ne '' + && substr( $htmlfile, 0, length( $htmldir ) ) eq $htmldir + ) + { + # Set the 'base' url for this file, so that we can use it + # as the location from which to calculate relative links + # to other files. If this is '', then absolute links will + # be used throughout. + $htmlfileurl= "$htmldir/" . substr( $htmlfile, length( $htmldir ) + 1); + } # read the pod a paragraph at a time warn "Scanning for sections in input file(s)\n" if $verbose; $/ = ""; my @poddata = ; close(POD); + clean_data( \@poddata ); # scan the pod for =head[1-6] directives and build an index my $index = scan_headings(\%sections, @poddata); unless($index) { - warn "No pod in $podfile\n" if $verbose; - return; + warn "No headings in $podfile\n" if $verbose; } # open the output file @@ -316,7 +388,7 @@ sub pod2html { } } } - if (!$title and $podfile =~ /\.pod$/) { + if (!$title and $podfile =~ /\.pod\z/) { # probably a split pod so take first =head[12] as title for (my $i = 0; $i < @poddata; $i++) { last if ($title) = $poddata[$i] =~ /^=head[12]\s*(.*)/; @@ -327,46 +399,63 @@ sub pod2html { if ($title) { $title =~ s/\s*\(.*\)//; } else { - warn "$0: no title for $podfile"; - $podfile =~ /^(.*)(\.[^.\/]+)?$/; + warn "$0: no title for $podfile" unless $quiet; + $podfile =~ /^(.*)(\.[^.\/]+)?\z/s; $title = ($podfile eq "-" ? 'No Title' : $1); warn "using $title" if $verbose; } + my $csslink = $css ? qq(\n) : ''; + $csslink =~ s,\\,/,g; + $csslink =~ s,(/.):,$1|,; + + my $block = $header ? < + +

       $title

      + + +END_OF_BLOCK + print HTML < -$title +$title$csslink - +$block END_OF_HEAD # load/reload/validate/cache %pages and %items get_cache($dircache, $itemcache, \@podpath, $podroot, $recurse); # scan the pod for =item directives - scan_items("", \%items, @poddata); + scan_items( \%local_items, "", @poddata); # put an index at the top of the file. note, if $doindex is 0 we # still generate an index, but surround it with an html comment. # that way some other program can extract it if desired. $index =~ s/--+/-/g; + print HTML "
      \n"; print HTML "\n"; print HTML "\n" unless $doindex; print HTML "\n\n"; - print HTML "
      \n" if $doindex; + print HTML "
      \n" if $doindex and $index; # now convert this file - warn "Converting input file\n" if $verbose; - foreach my $i (0..$#poddata) { + my $after_item; # set to true after an =item + warn "Converting input file $podfile\n" if $verbose; + foreach my $i (0..$#poddata){ + $ptQuote = 0; # status of quote conversion + $_ = $poddata[$i]; $paragraph = $i+1; if (/^(=.*)/s) { # is it a pod directive? $ignore = 0; + $after_item = 0; $_ = $1; if (/^=begin\s+(\S+)\s*(.*)/si) {# =begin process_begin($1, $2); @@ -380,14 +469,17 @@ END_OF_HEAD next if @begin_stack && $begin_stack[-1] ne 'html'; if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading - process_head($1, $2); - } elsif (/^=item\s*(.*\S)/sm) { # =item text - process_item($1); + process_head( $1, $2, $doindex && $index ); + } elsif (/^=item\s*(.*\S)?/sm) { # =item text + warn "$0: $podfile: =item without bullet, number or text" + . " in paragraph $paragraph.\n" if !defined($1) or $1 eq ''; + process_item( $1 ); + $after_item = 1; } elsif (/^=over\s*(.*)/) { # =over N process_over(); } elsif (/^=back/) { # =back process_back(); - } elsif (/^=for\s+(\S+)\s+(.*)/si) {# =for + } elsif (/^=for\s+(\S+)\s*(.*)/si) {# =for process_for($1,$2); } else { /^=(\S*)\s*/; @@ -401,14 +493,55 @@ END_OF_HEAD next if $ignore; next if @begin_stack && $begin_stack[-1] ne 'html'; my $text = $_; - process_text(\$text, 1); - print HTML "

      \n$text"; + if( $text =~ /\A\s+/ ){ + process_pre( \$text ); + print HTML "

      \n$text
      \n"; + + } else { + process_text( \$text ); + + # experimental: check for a paragraph where all lines + # have some ...\t...\t...\n pattern + if( $text =~ /\t/ ){ + my @lines = split( "\n", $text ); + if( @lines > 1 ){ + my $all = 2; + foreach my $line ( @lines ){ + if( $line =~ /\S/ && $line !~ /\t/ ){ + $all--; + last if $all == 0; + } + } + if( $all > 0 ){ + $text =~ s/\t+//g; + $text =~ s/^//gm; + $text = '' . + $text . '
      '; + } + } + } + ## end of experimental + + if( $after_item ){ + print HTML "$text\n"; + $after_lpar = 1; + } else { + print HTML "

      $text

      \n"; + } + } + $after_item = 0; } } # finish off any pending directives finish_list(); + + # link to page index + print HTML "

      $backlink

      \n" + if $doindex and $index and $backlink; + print HTML < @@ -435,40 +568,52 @@ Usage: $0 --help --htmlroot= --infile= --outfile= --libpods=:...: --recurse --verbose --index --netscape --norecurse --noindex - --flush - flushes the item and directory caches. - --help - prints this message. - --htmlroot - http-server base directory from which all relative paths - in podpath stem (default is /). - --index - generate an index at the top of the resulting html - (default). - --infile - filename for the pod to convert (input taken from stdin - by default). - --libpods - colon-separated list of pages to search for =item pod - directives in as targets of C<> and implicit links (empty - by default). note, these are not filenames, but rather - page names like those that appear in L<> links. - --netscape - will use netscape html directives when applicable. - --nonetscape - will not use netscape directives (default). - --outfile - filename for the resulting html file (output sent to - stdout by default). - --podpath - colon-separated list of directories containing library - pods. empty by default. - --podroot - filesystem base directory from which all relative paths - in podpath stem (default is .). - --noindex - don't generate an index at the top of the resulting html. - --norecurse - don't recurse on those subdirectories listed in podpath. - --recurse - recurse on those subdirectories listed in podpath - (default behavior). - --title - title that will appear in resulting html file. - --verbose - self-explanatory + --backlink - set text for "back to top" links (default: none). + --css - stylesheet URL + --flush - flushes the item and directory caches. + --[no]header - produce block header/footer (default is no headers). + --help - prints this message. + --htmldir - directory for resulting HTML files. + --htmlroot - http-server base directory from which all relative paths + in podpath stem (default is /). + --[no]index - generate an index at the top of the resulting html + (default behaviour). + --infile - filename for the pod to convert (input taken from stdin + by default). + --libpods - colon-separated list of pages to search for =item pod + directives in as targets of C<> and implicit links (empty + by default). note, these are not filenames, but rather + page names like those that appear in L<> links. + --[no]netscape - will use netscape html directives when applicable. + (default is not to use them). + --outfile - filename for the resulting html file (output sent to + stdout by default). + --podpath - colon-separated list of directories containing library + pods (empty by default). + --podroot - filesystem base directory from which all relative paths + in podpath stem (default is .). + --[no]quiet - supress some benign warning messages (default is off). + --[no]recurse - recurse on those subdirectories listed in podpath + (default behaviour). + --title - title that will appear in resulting html file. + --[no]verbose - self-explanatory (off by default). END_OF_USAGE sub parse_command_line { - my ($opt_flush,$opt_help,$opt_htmlroot,$opt_index,$opt_infile,$opt_libpods,$opt_netscape,$opt_outfile,$opt_podpath,$opt_podroot,$opt_norecurse,$opt_recurse,$opt_title,$opt_verbose); + my ($opt_backlink,$opt_css,$opt_flush,$opt_header,$opt_help,$opt_htmldir, + $opt_htmlroot,$opt_index,$opt_infile,$opt_libpods,$opt_netscape, + $opt_outfile,$opt_podpath,$opt_podroot,$opt_quiet,$opt_recurse, + $opt_title,$opt_verbose); + + unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html}; my $result = GetOptions( + 'backlink=s' => \$opt_backlink, + 'css=s' => \$opt_css, 'flush' => \$opt_flush, + 'header!' => \$opt_header, 'help' => \$opt_help, + 'htmldir=s' => \$opt_htmldir, 'htmlroot=s' => \$opt_htmlroot, 'index!' => \$opt_index, 'infile=s' => \$opt_infile, @@ -477,34 +622,37 @@ sub parse_command_line { 'outfile=s' => \$opt_outfile, 'podpath=s' => \$opt_podpath, 'podroot=s' => \$opt_podroot, - 'norecurse' => \$opt_norecurse, + 'quiet!' => \$opt_quiet, 'recurse!' => \$opt_recurse, 'title=s' => \$opt_title, - 'verbose' => \$opt_verbose, + 'verbose!' => \$opt_verbose, ); usage("-", "invalid parameters") if not $result; usage("-") if defined $opt_help; # see if the user asked for help $opt_help = ""; # just to make -w shut-up. - $podfile = $opt_infile if defined $opt_infile; - $htmlfile = $opt_outfile if defined $opt_outfile; - @podpath = split(":", $opt_podpath) if defined $opt_podpath; @libpods = split(":", $opt_libpods) if defined $opt_libpods; + $backlink = $opt_backlink if defined $opt_backlink; + $css = $opt_css if defined $opt_css; + $header = $opt_header if defined $opt_header; + $htmldir = $opt_htmldir if defined $opt_htmldir; + $htmlroot = $opt_htmlroot if defined $opt_htmlroot; + $doindex = $opt_index if defined $opt_index; + $podfile = $opt_infile if defined $opt_infile; + $netscape = $opt_netscape if defined $opt_netscape; + $htmlfile = $opt_outfile if defined $opt_outfile; + $podroot = $opt_podroot if defined $opt_podroot; + $quiet = $opt_quiet if defined $opt_quiet; + $recurse = $opt_recurse if defined $opt_recurse; + $title = $opt_title if defined $opt_title; + $verbose = $opt_verbose if defined $opt_verbose; + warn "Flushing item and directory caches\n" if $opt_verbose && defined $opt_flush; unlink($dircache, $itemcache) if defined $opt_flush; - - $htmlroot = $opt_htmlroot if defined $opt_htmlroot; - $podroot = $opt_podroot if defined $opt_podroot; - - $doindex = $opt_index if defined $opt_index; - $recurse = $opt_recurse if defined $opt_recurse; - $title = $opt_title if defined $opt_title; - $verbose = defined $opt_verbose ? 1 : 0; - $netscape = $opt_netscape if defined $opt_netscape; } @@ -542,7 +690,7 @@ sub get_cache { sub cache_key { my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_; return join('!', $dircache, $itemcache, $recurse, - @$podpath, $podroot, stat($dircache), stat($itemcache)); + @$podpath, $podroot, stat($dircache), stat($itemcache)); } # @@ -550,7 +698,6 @@ sub cache_key { # are valid caches of %pages and %items. if they are valid then it loads # them and returns a non-zero value. # - sub load_cache { my($dircache, $itemcache, $podpath, $podroot) = @_; my($tests); @@ -648,12 +795,14 @@ sub scan_podpath { next unless defined $pages{$libpod} && $pages{$libpod}; # if there is a directory then use the .pod and .pm files within it. - if ($pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) { + # NOTE: Only finds the first so-named directory in the tree. +# if ($pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) { + if ($pages{$libpod} =~ /([^:]*(?; close(POD); + clean_data( \@poddata ); - scan_items("$dirname/$pod", @poddata); + scan_items( \%items, "$dirname/$pod", @poddata); } # use the names of files as =item directives too. - foreach $pod (@files) { - $pod =~ /^(.*)(\.pod|\.pm)$/; - $items{$1} = "$dirname/$1.html" if $1; - } +### Don't think this should be done this way - confuses issues.(WL) +### foreach $pod (@files) { +### $pod =~ /^(.*)(\.pod|\.pm)$/; +### $items{$1} = "$dirname/$1.html" if $1; +### } } elsif ($pages{$libpod} =~ /([^:]*\.pod):/ || $pages{$libpod} =~ /([^:]*\.pm):/) { # scan the .pod or .pm file for =item directives @@ -679,8 +830,9 @@ sub scan_podpath { die "$0: error opening $pod for input: $!\n"; @poddata = ; close(POD); + clean_data( \@poddata ); - scan_items("$pod", @poddata); + scan_items( \%items, "$pod", @poddata); } else { warn "$0: shouldn't be here (line ".__LINE__."\n"; } @@ -736,13 +888,13 @@ sub scan_dir { $pages{$_} = "" unless defined $pages{$_}; $pages{$_} .= "$dir/$_:"; push(@subdirs, $_); - } elsif (/\.pod$/) { # .pod - s/\.pod$//; + } elsif (/\.pod\z/) { # .pod + s/\.pod\z//; $pages{$_} = "" unless defined $pages{$_}; $pages{$_} .= "$dir/$_.pod:"; push(@pods, "$dir/$_.pod"); - } elsif (/\.pm$/) { # .pm - s/\.pm$//; + } elsif (/\.pm\z/) { # .pm + s/\.pm\z//; $pages{$_} = "" unless defined $pages{$_}; $pages{$_} .= "$dir/$_.pm:"; push(@pods, "$dir/$_.pm"); @@ -764,7 +916,7 @@ sub scan_dir { # sub scan_headings { my($sections, @data) = @_; - my($tag, $which_head, $title, $listdepth, $index); + my($tag, $which_head, $otitle, $listdepth, $index); # here we need local $ignore = 0; # unfortunately, we can't have it, because $ignore is lexical @@ -777,9 +929,12 @@ sub scan_headings { # pointing to each of them. foreach my $line (@data) { if ($line =~ /^=(head)([1-6])\s+(.*)/) { - ($tag,$which_head, $title) = ($1,$2,$3); - chomp($title); - $$sections{htmlify(0,$title)} = 1; + ($tag, $which_head, $otitle) = ($1,$2,$3); + + my $title = depod( $otitle ); + my $name = htmlify( $title ); + $$sections{$name} = 1; + $title = process_text( \$otitle ); while ($which_head != $listdepth) { if ($which_head > $listdepth) { @@ -792,8 +947,8 @@ sub scan_headings { } $index .= "\n" . ("\t" x $listdepth) . "
    • " . - "" . - html_escape(process_text(\$title, 0)) . ""; + "" . + $title . "
    • "; } } @@ -815,36 +970,30 @@ sub scan_headings { # will use this information later on in resolving C<> links. # sub scan_items { - my($pod, @poddata) = @_; + my( $itemref, $pod, @poddata ) = @_; my($i, $item); local $_; - $pod =~ s/\.pod$//; + $pod =~ s/\.pod\z//; $pod .= ".html" if $pod; foreach $i (0..$#poddata) { - $_ = $poddata[$i]; + my $txt = depod( $poddata[$i] ); - # remove any formatting instructions - s,[A-Z]<([^<>]*)>,$1,g; - - # figure out what kind of item it is and get the first word of - # it's name. - if (/^=item\s+(\w*)\s*.*$/s) { - if ($1 eq "*") { # bullet list - /\A=item\s+\*\s*(.*?)\s*\Z/s; - $item = $1; - } elsif ($1 =~ /^\d+/) { # numbered list - /\A=item\s+\d+\.?(.*?)\s*\Z/s; - $item = $1; - } else { -# /\A=item\s+(.*?)\s*\Z/s; - /\A=item\s+(\w*)/s; - $item = $1; - } - - $items{$item} = "$pod" if $item; + # figure out what kind of item it is. + # Build string for referencing this item. + if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bullet + next unless $1; + $item = $1; + } elsif( $txt =~ /\A=item\s+(?>\d+\.?)\s*(.*)\Z/s ) { # numbered list + $item = $1; + } elsif( $txt =~ /\A=item\s+(.*)\Z/s ) { # plain item + $item = $1; + } else { + next; } + my $fid = fragment_id( $item ); + $$itemref{$fid} = "$pod" if $fid; } } @@ -852,168 +1001,167 @@ sub scan_items { # process_head - convert a pod head[1-6] tag and convert it to HTML format. # sub process_head { - my($tag, $heading) = @_; - my $firstword; + my($tag, $heading, $hasindex) = @_; # figure out the level of the =head $tag =~ /head([1-6])/; my $level = $1; - # can't have a heading full of spaces and speechmarks and so on - $firstword = $heading; $firstword =~ s/\s*(\w+)\s.*/$1/; + if( $listlevel ){ + warn "$0: $podfile: unterminated list at =head in paragraph $paragraph. ignoring.\n"; + while( $listlevel ){ + process_back(); + } + } - print HTML "

      \n" unless $listlevel; - print HTML "


      \n" unless $listlevel || $top; - print HTML ""; # unless $listlevel; - #print HTML "" unless $listlevel; - my $convert = $heading; process_text(\$convert, 0); - $convert = html_escape($convert); - print HTML '$convert"; - print HTML ""; # unless $listlevel; - print HTML "\n"; + print HTML "

      \n"; + if( $level == 1 && ! $top ){ + print HTML "$backlink\n" + if $hasindex and $backlink; + print HTML "


      \n" + } + + my $name = htmlify( depod( $heading ) ); + my $convert = process_text( \$heading ); + print HTML "$convert\n"; +} + + +# +# emit_item_tag - print an =item's text +# Note: The global $EmittedItem is used for inhibiting self-references. +# +my $EmittedItem; + +sub emit_item_tag($$$){ + my( $otext, $text, $compact ) = @_; + my $item = fragment_id( $text ); + + $EmittedItem = $item; + ### print STDERR "emit_item_tag=$item ($text)\n"; + + print HTML ''; + if ($items_named{$item}++) { + print HTML process_text( \$otext ); + } else { + my $name = 'item_' . $item; + print HTML qq{}, process_text( \$otext ), ''; + } + print HTML "
      \n"; + undef( $EmittedItem ); +} + +sub emit_li { + my( $tag ) = @_; + if( $items_seen[$listlevel]++ == 0 ){ + push( @listend, "" ); + print HTML "<$tag>\n"; + } + print HTML $tag eq 'DL' ? '
      ' : '
    • '; } # # process_item - convert a pod item tag and convert it to HTML format. # sub process_item { - my $text = $_[0]; - my($i, $quote, $name); - - my $need_preamble = 0; - my $this_entry; - + my( $otext ) = @_; # lots of documents start a list without doing an =over. this is # bad! but, the proper thing to do seems to be to just assume # they did do an =over. so warn them once and then continue. - warn "$0: $podfile: unexpected =item directive in paragraph $paragraph. ignoring.\n" - unless $listlevel; - process_over() unless $listlevel; + if( $listlevel == 0 ){ + warn "$0: $podfile: unexpected =item directive in paragraph $paragraph. ignoring.\n"; + process_over(); + } - return unless $listlevel; + # formatting: insert a paragraph if preceding item has >1 paragraph + if( $after_lpar ){ + print HTML "

      \n"; + $after_lpar = 0; + } # remove formatting instructions from the text - 1 while $text =~ s/[A-Z]<([^<>]*)>/$1/g; - pre_escape(\$text); + my $text = depod( $otext ); - $need_preamble = $items_seen[$listlevel]++ == 0; - - # check if this is the first =item after an =over - $i = $listlevel - 1; - my $need_new = $listlevel >= @listitem; - - if ($text =~ /\A\*/) { # bullet - - if ($need_preamble) { - push(@listend, ""); - print HTML "
        \n"; + # all the list variants: + if( $text =~ /\A\*/ ){ # bullet + emit_li( 'UL' ); + if ($text =~ /\A\*\s+(.+)\Z/s ) { # with additional text + my $tag = $1; + $otext =~ s/\A\*\s+//; + emit_item_tag( $otext, $tag, 1 ); } - print HTML '
      • '; - if ($text =~ /\A\*\s*(.+)\Z/s) { - print HTML ''; - if ($items_named{$1}++) { - print HTML html_escape($1); - } else { - my $name = 'item_' . htmlify(1,$1); - print HTML qq(), html_escape($1), ''; - } - print HTML ''; + } elsif( $text =~ /\A\d+/ ){ # numbered list + emit_li( 'OL' ); + if ($text =~ /\A(?>\d+\.?)\s*(.+)\Z/s ) { # with additional text + my $tag = $1; + $otext =~ s/\A\d+\.?\s*//; + emit_item_tag( $otext, $tag, 1 ); } - } elsif ($text =~ /\A[\d#]+/) { # numbered list - - if ($need_preamble) { - push(@listend, ""); - print HTML "
          \n"; - } - - print HTML '
        1. '; - if ($text =~ /\A\d+\.?\s*(.+)\Z/s) { - print HTML ''; - if ($items_named{$1}++) { - print HTML html_escape($1); - } else { - my $name = 'item_' . htmlify(0,$1); - print HTML qq(), html_escape($1), ''; - } - print HTML ''; - } - - } else { # all others - - if ($need_preamble) { - push(@listend, ''); - print HTML "
          \n"; - } - - print HTML '
          '; - if ($text =~ /(\S+)/) { - print HTML ''; - if ($items_named{$1}++) { - print HTML html_escape($text); - } else { - my $name = 'item_' . htmlify(1,$text); - print HTML qq(), html_escape($text), ''; - } - print HTML ''; + } else { # definition list + emit_li( 'DL' ); + if ($text =~ /\A(.+)\Z/s ){ # should have text + emit_item_tag( $otext, $text, 1 ); } print HTML '
          '; } - print HTML "\n"; } # -# process_over - process a pod over tag and start a corresponding HTML -# list. +# process_over - process a pod over tag and start a corresponding HTML list. # sub process_over { # start a new list $listlevel++; + push( @items_seen, 0 ); + $after_lpar = 0; } # # process_back - process a pod back tag and convert it to HTML format. # sub process_back { - warn "$0: $podfile: unexpected =back directive in paragraph $paragraph. ignoring.\n" - unless $listlevel; - return unless $listlevel; + if( $listlevel == 0 ){ + warn "$0: $podfile: unexpected =back directive in paragraph $paragraph. ignoring.\n"; + return; + } # close off the list. note, I check to see if $listend[$listlevel] is # defined because an =item directive may have never appeared and thus # $listend[$listlevel] may have never been initialized. $listlevel--; - print HTML $listend[$listlevel] if defined $listend[$listlevel]; - print HTML "\n"; + if( defined $listend[$listlevel] ){ + print HTML '

          ' if $after_lpar; + print HTML $listend[$listlevel]; + print HTML "\n"; + pop( @listend ); + } + $after_lpar = 0; - # don't need the corresponding perl code anymore - pop(@listitem); - pop(@listdata); - pop(@listend); - - pop(@items_seen); + # clean up item count + pop( @items_seen ); } # -# process_cut - process a pod cut tag, thus stop ignoring pod directives. +# process_cut - process a pod cut tag, thus start ignoring pod directives. # sub process_cut { $ignore = 1; } # -# process_pod - process a pod pod tag, thus ignore pod directives until we see a -# corresponding cut. +# process_pod - process a pod pod tag, thus stop ignoring pod directives +# until we see a corresponding cut. # sub process_pod { # no need to set $ignore to 0 cause the main loop did it } # -# process_for - process a =for pod tag. if it's for html, split +# process_for - process a =for pod tag. if it's for html, spit # it out verbatim, if illustration, center it, otherwise ignore it. # sub process_for { @@ -1053,54 +1201,69 @@ sub process_end { if ($begin_stack[-1] ne $whom ) { die "Unmatched begin/end at chunk $paragraph\n" } - pop @begin_stack; + pop( @begin_stack ); } # -# process_text - handles plaintext that appears in the input pod file. -# there may be pod commands embedded within the text so those must be -# converted to html commands. +# process_pre - indented paragraph, made into
          
           #
          -sub process_text {
          -    my($text, $escapeQuotes) = @_;
          -    my($result, $rest, $s1, $s2, $s3, $s4, $match, $bf);
          -    my($podcommand, $params, $tag, $quote);
          -
          +sub process_pre {
          +    my( $text ) = @_;
          +    my( $rest );
               return if $ignore;
           
          -    $quote  = 0;    	    	# status of double-quote conversion
          -    $result = "";
               $rest = $$text;
           
          -    if ($rest =~ /^\s+/) {	# preformatted text, no pod directives
          -	$rest =~ s/\n+\Z//;
          -	$rest =~ s#.*#
          +    # insert spaces in place of tabs
          +    $rest =~ s#.*#
           	    my $line = $&;
           	    1 while $line =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
           	    $line;
           	#eg;
           
          -	$rest   =~ s/&/&/g;
          -	$rest   =~ s//>/g;
          -	$rest   =~ s/"/"/g;
          +    # convert some special chars to HTML escapes
          +    $rest =~ s/&/&/g;
          +    $rest =~ s//>/g;
          +    $rest =~ s/"/"/g;
           
          -	# try and create links for all occurrences of perl.* within
          -	# the preformatted text.
          -	$rest =~ s{
          -		    (\s*)(perl\w+)
          -		  }{
          -		    if (defined $pages{$2}) {	# is a link
          -			qq($1$2);
          -		    } elsif (defined $pages{dosify($2)}) {	# is a link
          -			qq($1$2);
          -		    } else {
          -			"$1$2";
          -		    }
          -		  }xeg;
          -	$rest =~ s/(:]*:)?([^>:]*)\.pod:([^>:]*:)?/$1$3.html/g;
          +    # try and create links for all occurrences of perl.* within
          +    # the preformatted text.
          +    $rest =~ s{
          +	         (\s*)(perl\w+)
          +	      }{
          +		 if ( defined $pages{$2} ){	# is a link
          +		     qq($1$2);
          +		 } elsif (defined $pages{dosify($2)}) {	# is a link
          +		     qq($1$2);
          +		 } else {
          +		     "$1$2";
          +		 }
          +	      }xeg;
          +     $rest =~ s{
          +		 ($1}igox;
           
          -	$result =   "
          "	# text should be as it is (verbatim)
          -		  . "$rest\n"
          -		  . "
          \n"; - } else { # formatted text - # parse through the string, stopping each time we find a - # pod-escape. once the string has been throughly processed - # we can output it. - while (length $rest) { - # check to see if there are any possible pod directives in - # the remaining part of the text. - if ($rest =~ m/[BCEIFLSZ]' - $match = 1; - $bf = 0; - while ($match && !$bf) { - $bf = 1; - if ($rest =~ /\A([^<>]*[BCEIFLSZ]<)(.*)\Z/s) { - $bf = 0; - $match++; - $podcommand .= $1; - $rest = $2; - } elsif ($rest =~ /\A([^>]*>)(.*)\Z/s) { - $bf = 0; - $match--; - $podcommand .= $1; - $rest = $2; - } - } - - if ($match != 0) { - warn < for $s2 in paragraph $paragraph. -WARN - $result .= substr $podcommand, 0, 2; - $rest = substr($podcommand, 2) . $rest; - next; - } - - # pull out the parameters to the pod-escape - $podcommand =~ /^([BCFEILSZ]?)<(.*)>$/s; - $tag = $1; - $params = $2; - - # process the text within the pod-escape so that any escapes - # which must occur do. - process_text(\$params, 0) unless $tag eq 'L'; - - $s1 = $params; - if (!$tag || $tag eq " ") { # <> : no tag - $s1 = "<$params>"; - } elsif ($tag eq "L") { # L<> : link - $s1 = process_L($params); - } elsif ($tag eq "I" || # I<> : italicize text - $tag eq "B" || # B<> : bold text - $tag eq "F") { # F<> : file specification - $s1 = process_BFI($tag, $params); - } elsif ($tag eq "C") { # C<> : literal code - $s1 = process_C($params, 1); - } elsif ($tag eq "E") { # E<> : escape - $s1 = process_E($params); - } elsif ($tag eq "Z") { # Z<> : zero-width character - $s1 = process_Z($params); - } elsif ($tag eq "S") { # S<> : non-breaking space - $s1 = process_S($params); - } elsif ($tag eq "X") { # S<> : non-breaking space - $s1 = process_X($params); - } else { - warn "$0: $podfile: unhandled tag '$tag' in paragraph $paragraph\n"; - } - - $result .= "$s1"; - } else { - # for pure text we must deal with implicit links and - # double-quotes among other things. - $result .= ($escapeQuotes ? process_puretext("$s1$s2$s3", \$quote) : "$s1$s2$s3"); - $rest = $s4; - } - } - } - $$text = $result; + # text should be as it is (verbatim) + $$text = $rest; } -sub html_escape { - my $rest = $_[0]; - $rest =~ s/&/&/g; - $rest =~ s//>/g; - $rest =~ s/"/"/g; - return $rest; -} + +# +# pure text processing +# +# pure_text/inIS_text: differ with respect to automatic C<> recognition. +# we don't want this to happen within IS +# +sub pure_text($){ + my $text = shift(); + process_puretext( $text, \$ptQuote, 1 ); +} + +sub inIS_text($){ + my $text = shift(); + process_puretext( $text, \$ptQuote, 0 ); +} # # process_puretext - process pure text (without pod-escapes) converting # double-quotes and handling implicit C<> links. # sub process_puretext { - my($text, $quote) = @_; - my(@words, $result, $rest, $lead, $trail); + my($text, $quote, $notinIS) = @_; + + ## Guessing at func() or [$@%&]*var references in plain text is destined + ## to produce some strange looking ref's. uncomment to disable: + ## $notinIS = 0; + + my(@words, $lead, $trail); # convert double-quotes to single-quotes - $text =~ s/\A([^"]*)"/$1''/s if $$quote; - while ($text =~ s/\A([^"]*)["]([^"]*)["]/$1``$2''/sg) {} - - $$quote = ($text =~ m/"/ ? 1 : 0); - $text =~ s/\A([^"]*)"/$1``/s if $$quote; + if( $$quote && $text =~ s/"/''/s ){ + $$quote = 0; + } + while ($text =~ s/"([^"]*)"/``$1''/sg) {}; + $$quote = 1 if $text =~ s/"/``/s; # keep track of leading and trailing white-space - $lead = ($text =~ /\A(\s*)/s ? $1 : ""); - $trail = ($text =~ /(\s*)\Z/s ? $1 : ""); + $lead = ($text =~ s/\A(\s+)//s ? $1 : ""); + $trail = ($text =~ s/(\s+)\Z//s ? $1 : ""); - # collapse all white space into a single space - $text =~ s/\s+/ /g; - @words = split(" ", $text); + # split at space/non-space boundaries + @words = split( /(?<=\s)(?=\S)|(?<=\S)(?=\s)/, $text ); # process each word individually foreach my $word (@words) { + # skip space runs + next if $word =~ /^\s*$/; # see if we can infer a link - if ($word =~ /^\w+\(/) { + if( $notinIS && $word =~ /^(\w+)\((.*)\)$/ ) { # has parenthesis so should have been a C<> ref - $word = process_C($word); -# $word =~ /^[^()]*]\(/; -# if (defined $items{$1} && $items{$1}) { -# $word = "\n$word"; -# } elsif (defined $items{$word} && $items{$word}) { -# $word = "\n$word"; -# } else { -# $word = "\n$word"; -# } - } elsif ($word =~ /^[\$\@%&*]+\w+$/) { - # perl variables, should be a C<> ref - $word = process_C($word, 1); + ## try for a pagename (perlXXX(1))? + my( $func, $args ) = ( $1, $2 ); + if( $args =~ /^\d+$/ ){ + my $url = page_sect( $word, '' ); + if( defined $url ){ + $word = "the $word manpage"; + next; + } + } + ## try function name for a link, append tt'ed argument list + $word = emit_C( $func, '', "($args)"); + +#### disabled. either all (including $\W, $\w+{.*} etc.) or nothing. +## } elsif( $notinIS && $word =~ /^[\$\@%&*]+\w+$/) { +## # perl variables, should be a C<> ref +## $word = emit_C( $word ); + } elsif ($word =~ m,^\w+://\w,) { # looks like a URL + # Don't relativize it: leave it as the author intended $word = qq($word); } elsif ($word =~ /[\w.-]+\@[\w-]+\.\w/) { # looks like an e-mail address @@ -1311,42 +1388,283 @@ sub process_puretext { } } - # build a new string based upon our conversion - $result = ""; - $rest = join(" ", @words); - while (length($rest) > 75) { - if ( $rest =~ m/^(.{0,75})\s(.*?)$/o || - $rest =~ m/^(\S*)\s(.*?)$/o) { + # put everything back together + return $lead . join( '', @words ) . $trail; +} - $result .= "$1\n"; - $rest = $2; + +# +# process_text - handles plaintext that appears in the input pod file. +# there may be pod commands embedded within the text so those must be +# converted to html commands. +# + +sub process_text1($$;$$); +sub pattern ($) { $_[0] ? '[^\S\n]+'.('>' x ($_[0] + 1)) : '>' } +sub closing ($) { local($_) = shift; (defined && s/\s+$//) ? length : 0 } + +sub process_text { + return if $ignore; + my( $tref ) = @_; + my $res = process_text1( 0, $tref ); + $$tref = $res; +} + +sub process_text1($$;$$){ + my( $lev, $rstr, $func, $closing ) = @_; + my $res = ''; + + unless (defined $func) { + $func = ''; + $lev++; + } + + if( $func eq 'B' ){ + # B - boldface + $res = '' . process_text1( $lev, $rstr ) . ''; + + } elsif( $func eq 'C' ){ + # C - can be a ref or + # need to extract text + my $par = go_ahead( $rstr, 'C', $closing ); + + ## clean-up of the link target + my $text = depod( $par ); + + ### my $x = $par =~ /[BI]call emit_C($par) lev=$lev, par with BI=$x\n"; + + $res = emit_C( $text, $lev > 1 || ($par =~ /[BI] - convert to character + $$rstr =~ s/^(\w+)>//; + $res = "&$1;"; + + } elsif( $func eq 'F' ){ + # F - italizice + $res = '' . process_text1( $lev, $rstr ) . ''; + + } elsif( $func eq 'I' ){ + # I - italizice + $res = '' . process_text1( $lev, $rstr ) . ''; + + } elsif( $func eq 'L' ){ + # L - link + ## L => produce text, use cross-ref for linking + ## L => make text from cross-ref + ## need to extract text + my $par = go_ahead( $rstr, 'L', $closing ); + + # some L<>'s that shouldn't be: + # a) full-blown URL's are emitted as-is + if( $par =~ m{^\w+://}s ){ + return make_URL_href( $par ); + } + # b) C<...> is stripped and treated as C<> + if( $par =~ /^C<(.*)>$/ ){ + my $text = depod( $1 ); + return emit_C( $text, $lev > 1 || ($par =~ /[BI] L<$par> to page $page, ident $ident\n"; + + } elsif( $par =~ m{^(.*?)/"?(.*?)"?$} ){ # [name]/"section" + # even though this should be a "section", we go for ident first + ( $page, $ident ) = ( $1, $2 ); + ### print STDERR "--> L<$par> to page $page, section $section\n"; + + } elsif( $par =~ /\s/ ){ # this must be a section with missing quotes + ( $page, $section ) = ( '', $par ); + ### print STDERR "--> L<$par> to void page, section $section\n"; + + } else { + ( $page, $section ) = ( $par, '' ); + ### print STDERR "--> L<$par> to page $par, void section\n"; + } + + # now, either $section or $ident is defined. the convoluted logic + # below tries to resolve L<> according to what the user specified. + # failing this, we try to find the next best thing... + my( $url, $ltext, $fid ); + + RESOLVE: { + if( defined $ident ){ + ## try to resolve $ident as an item + ( $url, $fid ) = coderef( $page, $ident ); + if( $url ){ + if( ! defined( $linktext ) ){ + $linktext = $ident; + $linktext .= " in " if $ident && $page; + $linktext .= "the $page manpage" if $page; + } + ### print STDERR "got coderef url=$url\n"; + last RESOLVE; + } + ## no luck: go for a section (auto-quoting!) + $section = $ident; + } + ## now go for a section + my $htmlsection = htmlify( $section ); + $url = page_sect( $page, $htmlsection ); + if( $url ){ + if( ! defined( $linktext ) ){ + $linktext = $section; + $linktext .= " in " if $section && $page; + $linktext .= "the $page manpage" if $page; + } + ### print STDERR "got page/section url=$url\n"; + last RESOLVE; + } + ## no luck: go for an ident + if( $section ){ + $ident = $section; + } else { + $ident = $page; + $page = undef(); + } + ( $url, $fid ) = coderef( $page, $ident ); + if( $url ){ + if( ! defined( $linktext ) ){ + $linktext = $ident; + $linktext .= " in " if $ident && $page; + $linktext .= "the $page manpage" if $page; + } + ### print STDERR "got section=>coderef url=$url\n"; + last RESOLVE; + } + + # warning; show some text. + $linktext = $opar unless defined $linktext; + warn "$0: $podfile: cannot resolve L<$opar> in paragraph $paragraph."; + } + + # now we have an URL or just plain code + $$rstr = $linktext . '>' . $$rstr; + if( defined( $url ) ){ + $res = "" . process_text1( $lev, $rstr ) . ''; + } else { + $res = '' . process_text1( $lev, $rstr ) . ''; + } + + } elsif( $func eq 'S' ){ + # S - non-breaking spaces + $res = process_text1( $lev, $rstr ); + $res =~ s/ / /g; + + } elsif( $func eq 'X' ){ + # X<> - ignore + $$rstr =~ s/^[^>]*>//; + + } elsif( $func eq 'Z' ){ + # Z<> - empty + warn "$0: $podfile: invalid X<> in paragraph $paragraph." + unless $$rstr =~ s/^>//; + + } else { + my $term = pattern $closing; + while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ){ + # all others: either recurse into new function or + # terminate at closing angle bracket(s) + my $pt = $1; + $pt .= $2 if !$3 && $lev == 1; + $res .= $lev == 1 ? pure_text( $pt ) : inIS_text( $pt ); + return $res if !$3 && $lev > 1; + if( $3 ){ + $res .= process_text1( $lev, $rstr, $3, closing $4 ); + } + } + if( $lev == 1 ){ + $res .= pure_text( $$rstr ); } else { - $result .= "$rest\n"; - $rest = ""; + warn "$0: $podfile: undelimited $func<> in paragraph $paragraph."; } } - $result .= $rest if $rest; - - # restore the leading and trailing white-space - $result = "$lead$result$trail"; - - return $result; + return $res; } # -# pre_escape - convert & in text to $amp; +# go_ahead: extract text of an IS (can be nested) # -sub pre_escape { - my($str) = @_; - - $$str =~ s,&,&,g; +sub go_ahead($$$){ + my( $rstr, $func, $closing ) = @_; + my $res = ''; + my @closing = ($closing); + while( $$rstr =~ + s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|@{[pattern $closing[0]]})//s ){ + $res .= $1; + unless( $3 ){ + shift @closing; + return $res unless @closing; + } else { + unshift @closing, closing $4; + } + $res .= $2; + } + warn "$0: $podfile: undelimited $func<> in paragraph $paragraph."; + return $res; } +# +# emit_C - output result of C +# $text is the depod-ed text +# +sub emit_C($;$$){ + my( $text, $nocode, $args ) = @_; + $args = '' unless defined $args; + my $res; + my( $url, $fid ) = coderef( undef(), $text ); + + # need HTML-safe text + my $linktext = html_escape( "$text$args" ); + + if( defined( $url ) && + (!defined( $EmittedItem ) || $EmittedItem ne $fid ) ){ + $res = "$linktext"; + } elsif( 0 && $nocode ){ + $res = $linktext; + } else { + $res = "$linktext"; + } + return $res; +} + +# +# html_escape: make text safe for HTML +# +sub html_escape { + my $rest = $_[0]; + $rest =~ s/&/&/g; + $rest =~ s//>/g; + $rest =~ s/"/"/g; + return $rest; +} + + # # dosify - convert filenames to 8.3 # sub dosify { my($str) = @_; + return lc($str) if $^O eq 'VMS'; # VMS just needs casing if ($Is83) { $str = lc $str; $str =~ s/(\.\w+)/substr ($1,0,4)/ge; @@ -1356,183 +1674,205 @@ sub dosify { } # -# process_L - convert a pod L<> directive to a corresponding HTML link. -# most of the links made are inferred rather than known about directly -# (i.e it's not known whether the =head\d section exists in the target file, -# or whether a .pod file exists in the case of split files). however, the -# guessing usually works. +# page_sect - make an URL from the text of a L<> # -# Unlike the other directives, this should be called with an unprocessed -# string, else tags in the link won't be matched. -# -sub process_L { - my($str) = @_; - my($s1, $s2, $linktext, $page, $page83, $section, $link); # work strings +sub page_sect($$) { + my( $page, $section ) = @_; + my( $linktext, $page83, $link); # work strings - $str =~ s/\n/ /g; # undo word-wrapped tags - $s1 = $str; - for ($s1) { - # LREF: a la HREF L - $linktext = $1 if s:^([^|]+)\|::; - - # make sure sections start with a / - s,^",/",g; - s,^,/,g if (!m,/, && / /); - - # check if there's a section specified - if (m,^(.*?)/"?(.*?)"?$,) { # yes - ($page, $section) = ($1, $2); - } else { # no - ($page, $section) = ($str, ""); - } - - # check if we know that this is a section in this page - if (!defined $pages{$page} && defined $sections{$page}) { - $section = $page; - $page = ""; - } + # check if we know that this is a section in this page + if (!defined $pages{$page} && defined $sections{$page}) { + $section = $page; + $page = ""; + ### print STDERR "reset page='', section=$section\n"; } $page83=dosify($page); $page=$page83 if (defined $pages{$page83}); if ($page eq "") { - $link = "#" . htmlify(0,$section); - $linktext = $section unless defined($linktext); + $link = "#" . htmlify( $section ); } elsif ( $page =~ /::/ ) { - $linktext = ($section ? "$section" : "$page"); $page =~ s,::,/,g; + # Search page cache for an entry keyed under the html page name, + # then look to see what directory that page might be in. NOTE: + # this will only find one page. A better solution might be to produce + # an intermediate page that is an index to all such pages. + my $page_name = $page ; + $page_name =~ s,^.*/,,s ; + if ( defined( $pages{ $page_name } ) && + $pages{ $page_name } =~ /([^:]*$page)\.(?:pod|pm):/ + ) { + $page = $1 ; + } + else { + # NOTE: This branch assumes that all A::B pages are located in + # $htmlroot/A/B.html . This is often incorrect, since they are + # often in $htmlroot/lib/A/B.html or such like. Perhaps we could + # analyze the contents of %pages and figure out where any + # cousins of A::B are, then assume that. So, if A::B isn't found, + # but A::C is found in lib/A/C.pm, then A::B is assumed to be in + # lib/A/B.pm. This is also limited, but it's an improvement. + # Maybe a hints file so that the links point to the correct places + # nonetheless? + + } $link = "$htmlroot/$page.html"; - $link .= "#" . htmlify(0,$section) if ($section); + $link .= "#" . htmlify( $section ) if ($section); } elsif (!defined $pages{$page}) { - warn "$0: $podfile: cannot resolve L<$str> in paragraph $paragraph: no such page '$page'\n"; $link = ""; - $linktext = $page unless defined($linktext); } else { - $linktext = ($section ? "$section" : "the $page manpage") unless defined($linktext); - $section = htmlify(0,$section) if $section ne ""; + $section = htmlify( $section ) if $section ne ""; + ### print STDERR "...section=$section\n"; # if there is a directory by the name of the page, then assume that an # appropriate section will exist in the subdirectory - if ($section ne "" && $pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) { +# if ($section ne "" && $pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) { + if ($section ne "" && $pages{$page} =~ /([^:]*(?$linktext"; + # Here, we take advantage of the knowledge that $htmlfileurl ne '' + # implies $htmlroot eq ''. This means that the link in question + # needs a prefix of $htmldir if it begins with '/'. The test for + # the initial '/' is done to avoid '#'-only links, and to allow + # for other kinds of links, like file:, ftp:, etc. + my $url ; + if ( $htmlfileurl ne '' ) { + $link = "$htmldir$link" if $link =~ m{^/}s; + $url = relativize_url( $link, $htmlfileurl ); +# print( " b: [$link,$htmlfileurl,$url]\n" ); + } + else { + $url = $link ; + } + return $url; + } else { - $s1 = "$linktext"; + return undef(); } - return $s1; } # -# process_BFI - process any of the B<>, F<>, or I<> pod-escapes and -# convert them to corresponding HTML directives. +# relativize_url - convert an absolute URL to one relative to a base URL. +# Assumes both end in a filename. # -sub process_BFI { - my($tag, $str) = @_; - my($s1); # work string - my(%repltext) = ( 'B' => 'STRONG', - 'F' => 'EM', - 'I' => 'EM'); +sub relativize_url { + my ($dest,$source) = @_ ; - # extract the modified text and convert to HTML - $s1 = "<$repltext{$tag}>$str"; - return $s1; + my ($dest_volume,$dest_directory,$dest_file) = + File::Spec::Unix->splitpath( $dest ) ; + $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' ) ; + + my ($source_volume,$source_directory,$source_file) = + File::Spec::Unix->splitpath( $source ) ; + $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' ) ; + + my $rel_path = '' ; + if ( $dest ne '' ) { + $rel_path = File::Spec::Unix->abs2rel( $dest, $source ) ; + } + + if ( $rel_path ne '' && + substr( $rel_path, -1 ) ne '/' && + substr( $dest_file, 0, 1 ) ne '#' + ) { + $rel_path .= "/$dest_file" ; + } + else { + $rel_path .= "$dest_file" ; + } + + return $rel_path ; } -# -# process_C - process the C<> pod-escape. -# -sub process_C { - my($str, $doref) = @_; - my($s1, $s2); - $s1 = $str; - $s1 =~ s/\([^()]*\)//g; # delete parentheses - $s2 = $s1; - $s1 =~ s/\W//g; # delete bogus characters - $str = html_escape($str); +# +# coderef - make URL from the text of a C<> +# +sub coderef($$){ + my( $page, $item ) = @_; + my( $url ); + + my $fid = fragment_id( $item ); + if( defined( $page ) ){ + # we have been given a $page... + $page =~ s{::}{/}g; + + # Do we take it? Item could be a section! + my $base = $items{$fid} || ""; + $base =~ s{[^/]*/}{}; + if( $base ne "$page.html" ){ + ### print STDERR "coderef( $page, $item ): items{$fid} = $items{$fid} = $base => discard page!\n"; + $page = undef(); + } + + } else { + # no page - local items precede cached items + if( defined( $fid ) ){ + if( exists $local_items{$fid} ){ + $page = $local_items{$fid}; + } else { + $page = $items{$fid}; + } + } + } # if there was a pod file that we found earlier with an appropriate # =item directive, then create a link to that page. - if ($doref && defined $items{$s1}) { - $s1 = ($items{$s1} ? - "$str" : - "$str"); - $s1 =~ s,(perl\w+/(\S+)\.html)#item_\2\b,$1,; - confess "s1 has space: $s1" if $s1 =~ /HREF="[^"]*\s[^"]*"/; - } else { - $s1 = "$str"; - # warn "$0: $podfile: cannot resolve C<$str> in paragraph $paragraph\n" if $verbose - } + if( defined $page ){ + if( $page ){ + if( exists $pages{$page} and $pages{$page} =~ /([^:.]*)\.[^:]*:/){ + $page = $1 . '.html'; + } + my $link = "$htmlroot/$page#item_$fid"; + # Here, we take advantage of the knowledge that $htmlfileurl + # ne '' implies $htmlroot eq ''. + if ( $htmlfileurl ne '' ) { + $link = "$htmldir$link" ; + $url = relativize_url( $link, $htmlfileurl ) ; + } else { + $url = $link ; + } + } else { + $url = "#item_" . $fid; + } - return $s1; + confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/; + } + return( $url, $fid ); } -# -# process_E - process the E<> pod directive which seems to escape a character. -# -sub process_E { - my($str) = @_; - for ($str) { - s,([^/].*),\&$1\;,g; - } - - return $str; -} # -# process_Z - process the Z<> pod directive which really just amounts to -# ignoring it. this allows someone to start a paragraph with an = -# -sub process_Z { - my($str) = @_; +# Adapted from Nick Ing-Simmons' PodToHtml package. +sub relative_url { + my $source_file = shift ; + my $destination_file = shift; - # there is no equivalent in HTML for this so just ignore it. - $str = ""; - return $str; -} - -# -# process_S - process the S<> pod directive which means to convert all -# spaces in the string to non-breaking spaces (in HTML-eze). -# -sub process_S { - my($str) = @_; - - # convert all spaces in the text to non-breaking spaces in HTML. - $str =~ s/ / /g; - return $str; -} - -# -# process_X - this is supposed to make an index entry. we'll just -# ignore it. -# -sub process_X { - return ''; + my $source = URI::file->new_abs($source_file); + my $uo = URI::file->new($destination_file,$source)->abs; + return $uo->rel->as_string; } @@ -1549,29 +1889,131 @@ sub finish_list { # # htmlify - converts a pod section specification to a suitable section -# specification for HTML. if first arg is 1, only takes 1st word. +# specification for HTML. Note that we keep spaces and special characters +# except ", ? (Netscape problem) and the hyphen (writer's problem...). # sub htmlify { - my($compact, $heading) = @_; - - if ($compact) { - $heading =~ /^(\w+)/; - $heading = $1; - } - - # $heading = lc($heading); - $heading =~ s/[^\w\s]/_/g; - $heading =~ s/(\s+)/ /g; - $heading =~ s/^\s*(.*?)\s*$/$1/s; - $heading =~ s/ /_/g; - $heading =~ s/\A(.{32}).*\Z/$1/s; - $heading =~ s/\s+\Z//; - $heading =~ s/_{2,}/_/g; - - return $heading; + my( $heading) = @_; + $heading =~ s/(\s+)/ /g; + $heading =~ s/\s+\Z//; + $heading =~ s/\A\s+//; + # The hyphen is a disgrace to the English language. + $heading =~ s/[-"?]//g; + $heading = lc( $heading ); + return $heading; } -BEGIN { +# +# depod - convert text by eliminating all interior sequences +# Note: can be called with copy or modify semantics +# +my %E2c; +$E2c{lt} = '<'; +$E2c{gt} = '>'; +$E2c{sol} = '/'; +$E2c{verbar} = '|'; +$E2c{amp} = '&'; # in Tk's pods + +sub depod1($;$$); + +sub depod($){ + my $string; + if( ref( $_[0] ) ){ + $string = ${$_[0]}; + ${$_[0]} = depod1( \$string ); + } else { + $string = $_[0]; + depod1( \$string ); + } +} + +sub depod1($;$$){ + my( $rstr, $func, $closing ) = @_; + my $res = ''; + return $res unless defined $$rstr; + if( ! defined( $func ) ){ + # skip to next begin of an interior sequence + while( $$rstr =~ s/\A(.*?)([BCEFILSXZ])<(<+[^\S\n]+)?// ){ + # recurse into its text + $res .= $1 . depod1( $rstr, $2, closing $3); + } + $res .= $$rstr; + } elsif( $func eq 'E' ){ + # E - convert to character + $$rstr =~ s/^(\w+)>//; + $res .= $E2c{$1} || ""; + } elsif( $func eq 'X' ){ + # X<> - ignore + $$rstr =~ s/^[^>]*>//; + } elsif( $func eq 'Z' ){ + # Z<> - empty + $$rstr =~ s/^>//; + } else { + # all others: either recurse into new function or + # terminate at closing angle bracket + my $term = pattern $closing; + while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)// ){ + $res .= $1; + last unless $3; + $res .= depod1( $rstr, $3, closing $4 ); + } + ## If we're here and $2 ne '>': undelimited interior sequence. + ## Ignored, as this is called without proper indication of where we are. + ## Rely on process_text to produce diagnostics. + } + return $res; +} + +# +# fragment_id - construct a fragment identifier from: +# a) =item text +# b) contents of C<...> +# +my @hc; +sub fragment_id { + my $text = shift(); + $text =~ s/\s+\Z//s; + if( $text ){ + # a method or function? + return $1 if $text =~ /(\w+)\s*\(/; + return $1 if $text =~ /->\s*(\w+)\s*\(?/; + + # a variable name? + return $1 if $text =~ /^([$@%*]\S+)/; + + # some pattern matching operator? + return $1 if $text =~ m|^(\w+/).*/\w*$|; + + # fancy stuff... like "do { }" + return $1 if $text =~ m|^(\w+)\s*{.*}$|; + + # honour the perlfunc manpage: func [PAR[,[ ]PAR]...] + # and some funnies with ... Module ... + return $1 if $text =~ m{^([a-z\d]+)(\s+[A-Z\d,/& ]+)?$}; + return $1 if $text =~ m{^([a-z\d]+)\s+Module(\s+[A-Z\d,/& ]+)?$}; + + # text? normalize! + $text =~ s/\s+/_/sg; + $text =~ s{(\W)}{ + defined( $hc[ord($1)] ) ? $hc[ord($1)] + : ( $hc[ord($1)] = sprintf( "%%%02X", ord($1) ) ) }gxe; + $text = substr( $text, 0, 50 ); + } else { + return undef(); + } +} + +# +# make_URL_href - generate HTML href from URL +# Special treatment for CGI queries. +# +sub make_URL_href($){ + my( $url ) = @_; + if( $url !~ + s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{$1}i ){ + $url = "$url"; + } + return $url; } 1; diff --git a/contrib/perl5/lib/Pod/InputObjects.pm b/contrib/perl5/lib/Pod/InputObjects.pm new file mode 100644 index 000000000000..849182bf3717 --- /dev/null +++ b/contrib/perl5/lib/Pod/InputObjects.pm @@ -0,0 +1,933 @@ +############################################################################# +# Pod/InputObjects.pm -- package which defines objects for input streams +# and paragraphs and commands when parsing POD docs. +# +# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. +# This file is part of "PodParser". PodParser is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::InputObjects; + +use vars qw($VERSION); +$VERSION = 1.12; ## Current version of this package +require 5.005; ## requires this Perl version or later + +############################################################################# + +=head1 NAME + +Pod::InputObjects - objects representing POD input paragraphs, commands, etc. + +=head1 SYNOPSIS + + use Pod::InputObjects; + +=head1 REQUIRES + +perl5.004, Carp + +=head1 EXPORTS + +Nothing. + +=head1 DESCRIPTION + +This module defines some basic input objects used by B when +reading and parsing POD text from an input source. The following objects +are defined: + +=over 4 + +=begin __PRIVATE__ + +=item B + +An object corresponding to a source of POD input text. It is mostly a +wrapper around a filehandle or C-type object (or anything +that implements the C method) which keeps track of some +additional information relevant to the parsing of PODs. + +=end __PRIVATE__ + +=item B + +An object corresponding to a paragraph of POD input text. It may be a +plain paragraph, a verbatim paragraph, or a command paragraph (see +L). + +=item B + +An object corresponding to an interior sequence command from the POD +input text (see L). + +=item B + +An object corresponding to a tree of parsed POD text. Each "node" in +a parse-tree (or I) is either a text-string or a reference to +a B object. The nodes appear in the parse-tree +in they order in which they were parsed from left-to-right. + +=back + +Each of these input objects are described in further detail in the +sections which follow. + +=cut + +############################################################################# + +use strict; +#use diagnostics; +#use Carp; + +############################################################################# + +package Pod::InputSource; + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head1 B + +This object corresponds to an input source or stream of POD +documentation. When parsing PODs, it is necessary to associate and store +certain context information with each input source. All of this +information is kept together with the stream itself in one of these +C objects. Each such object is merely a wrapper around +an C object of some kind (or at least something that +implements the C method). They have the following +methods/attributes: + +=end __PRIVATE__ + +=cut + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + my $pod_input1 = Pod::InputSource->new(-handle => $filehandle); + my $pod_input2 = new Pod::InputSource(-handle => $filehandle, + -name => $name); + my $pod_input3 = new Pod::InputSource(-handle => \*STDIN); + my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN, + -name => "(STDIN)"); + +This is a class method that constructs a C object and +returns a reference to the new input source object. It takes one or more +keyword arguments in the form of a hash. The keyword C<-handle> is +required and designates the corresponding input handle. The keyword +C<-name> is optional and specifies the name associated with the input +handle (typically a file name). + +=end __PRIVATE__ + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + ## Any remaining arguments are treated as initial values for the + ## hash that is used to represent this object. Note that we default + ## certain values by specifying them *before* the arguments passed. + ## If they are in the argument list, they will override the defaults. + my $self = { -name => '(unknown)', + -handle => undef, + -was_cutting => 0, + @_ }; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + my $filename = $pod_input->name(); + $pod_input->name($new_filename_to_use); + +This method gets/sets the name of the input source (usually a filename). +If no argument is given, it returns a string containing the name of +the input source; otherwise it sets the name of the input source to the +contents of the given argument. + +=end __PRIVATE__ + +=cut + +sub name { + (@_ > 1) and $_[0]->{'-name'} = $_[1]; + return $_[0]->{'-name'}; +} + +## allow 'filename' as an alias for 'name' +*filename = \&name; + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + my $handle = $pod_input->handle(); + +Returns a reference to the handle object from which input is read (the +one used to contructed this input source object). + +=end __PRIVATE__ + +=cut + +sub handle { + return $_[0]->{'-handle'}; +} + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head2 B + + print "Yes.\n" if ($pod_input->was_cutting()); + +The value of the C state (that the B method would +have returned) immediately before any input was read from this input +stream. After all input from this stream has been read, the C +state is restored to this value. + +=end __PRIVATE__ + +=cut + +sub was_cutting { + (@_ > 1) and $_[0]->{-was_cutting} = $_[1]; + return $_[0]->{-was_cutting}; +} + +##--------------------------------------------------------------------------- + +############################################################################# + +package Pod::Paragraph; + +##--------------------------------------------------------------------------- + +=head1 B + +An object representing a paragraph of POD input text. +It has the following methods/attributes: + +=cut + +##--------------------------------------------------------------------------- + +=head2 B + + my $pod_para1 = Pod::Paragraph->new(-text => $text); + my $pod_para2 = Pod::Paragraph->new(-name => $cmd, + -text => $text); + my $pod_para3 = new Pod::Paragraph(-text => $text); + my $pod_para4 = new Pod::Paragraph(-name => $cmd, + -text => $text); + my $pod_para5 = Pod::Paragraph->new(-name => $cmd, + -text => $text, + -file => $filename, + -line => $line_number); + +This is a class method that constructs a C object and +returns a reference to the new paragraph object. It may be given one or +two keyword arguments. The C<-text> keyword indicates the corresponding +text of the POD paragraph. The C<-name> keyword indicates the name of +the corresponding POD command, such as C or C (it should +I contain the C<=> prefix); this is needed only if the POD +paragraph corresponds to a command paragraph. The C<-file> and C<-line> +keywords indicate the filename and line number corresponding to the +beginning of the paragraph + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + ## Any remaining arguments are treated as initial values for the + ## hash that is used to represent this object. Note that we default + ## certain values by specifying them *before* the arguments passed. + ## If they are in the argument list, they will override the defaults. + my $self = { + -name => undef, + -text => (@_ == 1) ? $_[0] : undef, + -file => '', + -line => 0, + -prefix => '=', + -separator => ' ', + -ptree => [], + @_ + }; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $para_cmd = $pod_para->cmd_name(); + +If this paragraph is a command paragraph, then this method will return +the name of the command (I any leading C<=> prefix). + +=cut + +sub cmd_name { + (@_ > 1) and $_[0]->{'-name'} = $_[1]; + return $_[0]->{'-name'}; +} + +## let name() be an alias for cmd_name() +*name = \&cmd_name; + +##--------------------------------------------------------------------------- + +=head2 B + + my $para_text = $pod_para->text(); + +This method will return the corresponding text of the paragraph. + +=cut + +sub text { + (@_ > 1) and $_[0]->{'-text'} = $_[1]; + return $_[0]->{'-text'}; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $raw_pod_para = $pod_para->raw_text(); + +This method will return the I text of the POD paragraph, exactly +as it appeared in the input. + +=cut + +sub raw_text { + return $_[0]->{'-text'} unless (defined $_[0]->{'-name'}); + return $_[0]->{'-prefix'} . $_[0]->{'-name'} . + $_[0]->{'-separator'} . $_[0]->{'-text'}; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $prefix = $pod_para->cmd_prefix(); + +If this paragraph is a command paragraph, then this method will return +the prefix used to denote the command (which should be the string "=" +or "=="). + +=cut + +sub cmd_prefix { + return $_[0]->{'-prefix'}; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $separator = $pod_para->cmd_separator(); + +If this paragraph is a command paragraph, then this method will return +the text used to separate the command name from the rest of the +paragraph (if any). + +=cut + +sub cmd_separator { + return $_[0]->{'-separator'}; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $ptree = $pod_parser->parse_text( $pod_para->text() ); + $pod_para->parse_tree( $ptree ); + $ptree = $pod_para->parse_tree(); + +This method will get/set the corresponding parse-tree of the paragraph's text. + +=cut + +sub parse_tree { + (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; + return $_[0]->{'-ptree'}; +} + +## let ptree() be an alias for parse_tree() +*ptree = \&parse_tree; + +##--------------------------------------------------------------------------- + +=head2 B + + my ($filename, $line_number) = $pod_para->file_line(); + my $position = $pod_para->file_line(); + +Returns the current filename and line number for the paragraph +object. If called in an array context, it returns a list of two +elements: first the filename, then the line number. If called in +a scalar context, it returns a string containing the filename, followed +by a colon (':'), followed by the line number. + +=cut + +sub file_line { + my @loc = ($_[0]->{'-file'} || '', + $_[0]->{'-line'} || 0); + return (wantarray) ? @loc : join(':', @loc); +} + +##--------------------------------------------------------------------------- + +############################################################################# + +package Pod::InteriorSequence; + +##--------------------------------------------------------------------------- + +=head1 B + +An object representing a POD interior sequence command. +It has the following methods/attributes: + +=cut + +##--------------------------------------------------------------------------- + +=head2 B + + my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd + -ldelim => $delimiter); + my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd, + -ldelim => $delimiter); + my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd, + -ldelim => $delimiter, + -file => $filename, + -line => $line_number); + + my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree); + my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree); + +This is a class method that constructs a C object +and returns a reference to the new interior sequence object. It should +be given two keyword arguments. The C<-ldelim> keyword indicates the +corresponding left-delimiter of the interior sequence (e.g. 'E'). +The C<-name> keyword indicates the name of the corresponding interior +sequence command, such as C or C or C. The C<-file> and +C<-line> keywords indicate the filename and line number corresponding +to the beginning of the interior sequence. If the C<$ptree> argument is +given, it must be the last argument, and it must be either string, or +else an array-ref suitable for passing to B (or +it may be a reference to an Pod::ParseTree object). + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + ## See if first argument has no keyword + if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) { + ## Yup - need an implicit '-name' before first parameter + unshift @_, '-name'; + } + + ## See if odd number of args + if ((@_ % 2) != 0) { + ## Yup - need an implicit '-ptree' before the last parameter + splice @_, $#_, 0, '-ptree'; + } + + ## Any remaining arguments are treated as initial values for the + ## hash that is used to represent this object. Note that we default + ## certain values by specifying them *before* the arguments passed. + ## If they are in the argument list, they will override the defaults. + my $self = { + -name => (@_ == 1) ? $_[0] : undef, + -file => '', + -line => 0, + -ldelim => '<', + -rdelim => '>', + @_ + }; + + ## Initialize contents if they havent been already + my $ptree = $self->{'-ptree'} || new Pod::ParseTree(); + if ( ref $ptree =~ /^(ARRAY)?$/ ) { + ## We have an array-ref, or a normal scalar. Pass it as an + ## an argument to the ptree-constructor + $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree); + } + $self->{'-ptree'} = $ptree; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $seq_cmd = $pod_seq->cmd_name(); + +The name of the interior sequence command. + +=cut + +sub cmd_name { + (@_ > 1) and $_[0]->{'-name'} = $_[1]; + return $_[0]->{'-name'}; +} + +## let name() be an alias for cmd_name() +*name = \&cmd_name; + +##--------------------------------------------------------------------------- + +## Private subroutine to set the parent pointer of all the given +## children that are interior-sequences to be $self + +sub _set_child2parent_links { + my ($self, @children) = @_; + ## Make sure any sequences know who their parent is + for (@children) { + next unless (length and ref and ref ne 'SCALAR'); + if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or + UNIVERSAL::can($_, 'nested')) + { + $_->nested($self); + } + } +} + +## Private subroutine to unset child->parent links + +sub _unset_child2parent_links { + my $self = shift; + $self->{'-parent_sequence'} = undef; + my $ptree = $self->{'-ptree'}; + for (@$ptree) { + next unless (length and ref and ref ne 'SCALAR'); + $_->_unset_child2parent_links() + if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); + } +} + +##--------------------------------------------------------------------------- + +=head2 B + + $pod_seq->prepend($text); + $pod_seq1->prepend($pod_seq2); + +Prepends the given string or parse-tree or sequence object to the parse-tree +of this interior sequence. + +=cut + +sub prepend { + my $self = shift; + $self->{'-ptree'}->prepend(@_); + _set_child2parent_links($self, @_); + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 B + + $pod_seq->append($text); + $pod_seq1->append($pod_seq2); + +Appends the given string or parse-tree or sequence object to the parse-tree +of this interior sequence. + +=cut + +sub append { + my $self = shift; + $self->{'-ptree'}->append(@_); + _set_child2parent_links($self, @_); + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 B + + $outer_seq = $pod_seq->nested || print "not nested"; + +If this interior sequence is nested inside of another interior +sequence, then the outer/parent sequence that contains it is +returned. Otherwise C is returned. + +=cut + +sub nested { + my $self = shift; + (@_ == 1) and $self->{'-parent_sequence'} = shift; + return $self->{'-parent_sequence'} || undef; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $seq_raw_text = $pod_seq->raw_text(); + +This method will return the I text of the POD interior sequence, +exactly as it appeared in the input. + +=cut + +sub raw_text { + my $self = shift; + my $text = $self->{'-name'} . $self->{'-ldelim'}; + for ( $self->{'-ptree'}->children ) { + $text .= (ref $_) ? $_->raw_text : $_; + } + $text .= $self->{'-rdelim'}; + return $text; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $ldelim = $pod_seq->left_delimiter(); + +The leftmost delimiter beginning the argument text to the interior +sequence (should be "<"). + +=cut + +sub left_delimiter { + (@_ > 1) and $_[0]->{'-ldelim'} = $_[1]; + return $_[0]->{'-ldelim'}; +} + +## let ldelim() be an alias for left_delimiter() +*ldelim = \&left_delimiter; + +##--------------------------------------------------------------------------- + +=head2 B + +The rightmost delimiter beginning the argument text to the interior +sequence (should be ">"). + +=cut + +sub right_delimiter { + (@_ > 1) and $_[0]->{'-rdelim'} = $_[1]; + return $_[0]->{'-rdelim'}; +} + +## let rdelim() be an alias for right_delimiter() +*rdelim = \&right_delimiter; + +##--------------------------------------------------------------------------- + +=head2 B + + my $ptree = $pod_parser->parse_text($paragraph_text); + $pod_seq->parse_tree( $ptree ); + $ptree = $pod_seq->parse_tree(); + +This method will get/set the corresponding parse-tree of the interior +sequence's text. + +=cut + +sub parse_tree { + (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; + return $_[0]->{'-ptree'}; +} + +## let ptree() be an alias for parse_tree() +*ptree = \&parse_tree; + +##--------------------------------------------------------------------------- + +=head2 B + + my ($filename, $line_number) = $pod_seq->file_line(); + my $position = $pod_seq->file_line(); + +Returns the current filename and line number for the interior sequence +object. If called in an array context, it returns a list of two +elements: first the filename, then the line number. If called in +a scalar context, it returns a string containing the filename, followed +by a colon (':'), followed by the line number. + +=cut + +sub file_line { + my @loc = ($_[0]->{'-file'} || '', + $_[0]->{'-line'} || 0); + return (wantarray) ? @loc : join(':', @loc); +} + +##--------------------------------------------------------------------------- + +=head2 B + +This method performs any necessary cleanup for the interior-sequence. +If you override this method then it is B that you invoke +the parent method from within your own method, otherwise +I + +=cut + +sub DESTROY { + ## We need to get rid of all child->parent pointers throughout the + ## tree so their reference counts will go to zero and they can be + ## garbage-collected + _unset_child2parent_links(@_); +} + +##--------------------------------------------------------------------------- + +############################################################################# + +package Pod::ParseTree; + +##--------------------------------------------------------------------------- + +=head1 B + +This object corresponds to a tree of parsed POD text. As POD text is +scanned from left to right, it is parsed into an ordered list of +text-strings and B objects (in order of +appearance). A B object corresponds to this list of +strings and sequences. Each interior sequence in the parse-tree may +itself contain a parse-tree (since interior sequences may be nested). + +=cut + +##--------------------------------------------------------------------------- + +=head2 B + + my $ptree1 = Pod::ParseTree->new; + my $ptree2 = new Pod::ParseTree; + my $ptree4 = Pod::ParseTree->new($array_ref); + my $ptree3 = new Pod::ParseTree($array_ref); + +This is a class method that constructs a C object and +returns a reference to the new parse-tree. If a single-argument is given, +it must be a reference to an array, and is used to initialize the root +(top) of the parse tree. + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + + my $self = (@_ == 1 and ref $_[0]) ? $_[0] : []; + + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + return $self; +} + +##--------------------------------------------------------------------------- + +=head2 B + + my $top_node = $ptree->top(); + $ptree->top( $top_node ); + $ptree->top( @children ); + +This method gets/sets the top node of the parse-tree. If no arguments are +given, it returns the topmost node in the tree (the root), which is also +a B. If it is given a single argument that is a reference, +then the reference is assumed to a parse-tree and becomes the new top node. +Otherwise, if arguments are given, they are treated as the new list of +children for the top node. + +=cut + +sub top { + my $self = shift; + if (@_ > 0) { + @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; + } + return $self; +} + +## let parse_tree() & ptree() be aliases for the 'top' method +*parse_tree = *ptree = \⊤ + +##--------------------------------------------------------------------------- + +=head2 B + +This method gets/sets the children of the top node in the parse-tree. +If no arguments are given, it returns the list (array) of children +(each of which should be either a string or a B. +Otherwise, if arguments are given, they are treated as the new list of +children for the top node. + +=cut + +sub children { + my $self = shift; + if (@_ > 0) { + @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; + } + return @{ $self }; +} + +##--------------------------------------------------------------------------- + +=head2 B + +This method prepends the given text or parse-tree to the current parse-tree. +If the first item on the parse-tree is text and the argument is also text, +then the text is prepended to the first item (not added as a separate string). +Otherwise the argument is added as a new string or parse-tree I +the current one. + +=cut + +use vars qw(@ptree); ## an alias used for performance reasons + +sub prepend { + my $self = shift; + local *ptree = $self; + for (@_) { + next unless length; + if (@ptree and !(ref $ptree[0]) and !(ref $_)) { + $ptree[0] = $_ . $ptree[0]; + } + else { + unshift @ptree, $_; + } + } +} + +##--------------------------------------------------------------------------- + +=head2 B + +This method appends the given text or parse-tree to the current parse-tree. +If the last item on the parse-tree is text and the argument is also text, +then the text is appended to the last item (not added as a separate string). +Otherwise the argument is added as a new string or parse-tree I +the current one. + +=cut + +sub append { + my $self = shift; + local *ptree = $self; + for (@_) { + next unless length; + if (@ptree and !(ref $ptree[-1]) and !(ref $_)) { + $ptree[-1] .= $_; + } + else { + push @ptree, $_; + } + } +} + +=head2 B + + my $ptree_raw_text = $ptree->raw_text(); + +This method will return the I text of the POD parse-tree +exactly as it appeared in the input. + +=cut + +sub raw_text { + my $self = shift; + my $text = ""; + for ( @$self ) { + $text .= (ref $_) ? $_->raw_text : $_; + } + return $text; +} + +##--------------------------------------------------------------------------- + +## Private routines to set/unset child->parent links + +sub _unset_child2parent_links { + my $self = shift; + local *ptree = $self; + for (@ptree) { + next unless (length and ref and ref ne 'SCALAR'); + $_->_unset_child2parent_links() + if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); + } +} + +sub _set_child2parent_links { + ## nothing to do, Pod::ParseTrees cant have parent pointers +} + +=head2 B + +This method performs any necessary cleanup for the parse-tree. +If you override this method then it is B +that you invoke the parent method from within your own method, +otherwise I + +=cut + +sub DESTROY { + ## We need to get rid of all child->parent pointers throughout the + ## tree so their reference counts will go to zero and they can be + ## garbage-collected + _unset_child2parent_links(@_); +} + +############################################################################# + +=head1 SEE ALSO + +See L, L + +=head1 AUTHOR + +Brad Appleton Ebradapp@enteract.comE + +=cut + +1; diff --git a/contrib/perl5/lib/Pod/Man.pm b/contrib/perl5/lib/Pod/Man.pm new file mode 100644 index 000000000000..97a382823e6f --- /dev/null +++ b/contrib/perl5/lib/Pod/Man.pm @@ -0,0 +1,1217 @@ +# Pod::Man -- Convert POD data to formatted *roff input. +# $Id: Man.pm,v 1.2 2000/03/19 07:30:13 eagle Exp $ +# +# Copyright 1999, 2000 by Russ Allbery +# +# This program is free software; you can redistribute it and/or modify it +# under the same terms as Perl itself. +# +# This module is intended to be a replacement for the pod2man script +# distributed with versions of Perl prior to 5.6, and attempts to match its +# output except for some specific circumstances where other decisions seemed +# to produce better output. It uses Pod::Parser and is designed to be easy +# to subclass. +# +# Perl core hackers, please note that this module is also separately +# maintained outside of the Perl core as part of the podlators. Please send +# me any patches at the address above in addition to sending them to the +# standard Perl mailing lists. + +############################################################################ +# Modules and declarations +############################################################################ + +package Pod::Man; + +require 5.004; + +use Carp qw(carp croak); +use Pod::Parser (); + +use strict; +use subs qw(makespace); +use vars qw(@ISA %ESCAPES $PREAMBLE $VERSION); + +@ISA = qw(Pod::Parser); + +# Don't use the CVS revision as the version, since this module is also in +# Perl core and too many things could munge CVS magic revision strings. +# This number should ideally be the same as the CVS revision in podlators, +# however. +$VERSION = 1.02; + + +############################################################################ +# Preamble and *roff output tables +############################################################################ + +# The following is the static preamble which starts all *roff output we +# generate. It's completely static except for the font to use as a +# fixed-width font, which is designed by @CFONT@. $PREAMBLE should +# therefore be run through s/\@CFONT\@//g before output. +$PREAMBLE = <<'----END OF PREAMBLE----'; +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Ip \" List item +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb \" Begin verbatim text +.ft @CFONT@ +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R + +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used +.\" to do unbreakable dashes and therefore won't be available. \*(C` and +.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<> +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` ` +. ds C' ' +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr +.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and +.\" index entries marked with X<> in POD. Of course, you'll have to process +.\" the output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +. . +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it +.\" makes way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +----END OF PREAMBLE---- + +# This table is taken nearly verbatim from Tom Christiansen's pod2man. It +# assumes that the standard preamble has already been printed, since that's +# what defines all of the accent marks. Note that some of these are quoted +# with double quotes since they contain embedded single quotes, so use \\ +# uniformly for backslash for readability. +%ESCAPES = ( + 'amp' => '&', # ampersand + 'lt' => '<', # left chevron, less-than + 'gt' => '>', # right chevron, greater-than + 'quot' => '"', # double quote + + 'Aacute' => "A\\*'", # capital A, acute accent + 'aacute' => "a\\*'", # small a, acute accent + 'Acirc' => 'A\\*^', # capital A, circumflex accent + 'acirc' => 'a\\*^', # small a, circumflex accent + 'AElig' => '\*(AE', # capital AE diphthong (ligature) + 'aelig' => '\*(ae', # small ae diphthong (ligature) + 'Agrave' => "A\\*`", # capital A, grave accent + 'agrave' => "A\\*`", # small a, grave accent + 'Aring' => 'A\\*o', # capital A, ring + 'aring' => 'a\\*o', # small a, ring + 'Atilde' => 'A\\*~', # capital A, tilde + 'atilde' => 'a\\*~', # small a, tilde + 'Auml' => 'A\\*:', # capital A, dieresis or umlaut mark + 'auml' => 'a\\*:', # small a, dieresis or umlaut mark + 'Ccedil' => 'C\\*,', # capital C, cedilla + 'ccedil' => 'c\\*,', # small c, cedilla + 'Eacute' => "E\\*'", # capital E, acute accent + 'eacute' => "e\\*'", # small e, acute accent + 'Ecirc' => 'E\\*^', # capital E, circumflex accent + 'ecirc' => 'e\\*^', # small e, circumflex accent + 'Egrave' => 'E\\*`', # capital E, grave accent + 'egrave' => 'e\\*`', # small e, grave accent + 'ETH' => '\\*(D-', # capital Eth, Icelandic + 'eth' => '\\*(d-', # small eth, Icelandic + 'Euml' => 'E\\*:', # capital E, dieresis or umlaut mark + 'euml' => 'e\\*:', # small e, dieresis or umlaut mark + 'Iacute' => "I\\*'", # capital I, acute accent + 'iacute' => "i\\*'", # small i, acute accent + 'Icirc' => 'I\\*^', # capital I, circumflex accent + 'icirc' => 'i\\*^', # small i, circumflex accent + 'Igrave' => 'I\\*`', # capital I, grave accent + 'igrave' => 'i\\*`', # small i, grave accent + 'Iuml' => 'I\\*:', # capital I, dieresis or umlaut mark + 'iuml' => 'i\\*:', # small i, dieresis or umlaut mark + 'Ntilde' => 'N\*~', # capital N, tilde + 'ntilde' => 'n\*~', # small n, tilde + 'Oacute' => "O\\*'", # capital O, acute accent + 'oacute' => "o\\*'", # small o, acute accent + 'Ocirc' => 'O\\*^', # capital O, circumflex accent + 'ocirc' => 'o\\*^', # small o, circumflex accent + 'Ograve' => 'O\\*`', # capital O, grave accent + 'ograve' => 'o\\*`', # small o, grave accent + 'Oslash' => 'O\\*/', # capital O, slash + 'oslash' => 'o\\*/', # small o, slash + 'Otilde' => 'O\\*~', # capital O, tilde + 'otilde' => 'o\\*~', # small o, tilde + 'Ouml' => 'O\\*:', # capital O, dieresis or umlaut mark + 'ouml' => 'o\\*:', # small o, dieresis or umlaut mark + 'szlig' => '\*8', # small sharp s, German (sz ligature) + 'THORN' => '\\*(Th', # capital THORN, Icelandic + 'thorn' => '\\*(th', # small thorn, Icelandic + 'Uacute' => "U\\*'", # capital U, acute accent + 'uacute' => "u\\*'", # small u, acute accent + 'Ucirc' => 'U\\*^', # capital U, circumflex accent + 'ucirc' => 'u\\*^', # small u, circumflex accent + 'Ugrave' => 'U\\*`', # capital U, grave accent + 'ugrave' => 'u\\*`', # small u, grave accent + 'Uuml' => 'U\\*:', # capital U, dieresis or umlaut mark + 'uuml' => 'u\\*:', # small u, dieresis or umlaut mark + 'Yacute' => "Y\\*'", # capital Y, acute accent + 'yacute' => "y\\*'", # small y, acute accent + 'yuml' => 'y\\*:', # small y, dieresis or umlaut mark +); + + +############################################################################ +# Static helper functions +############################################################################ + +# Protect leading quotes and periods against interpretation as commands. +# Also protect anything starting with a backslash, since it could expand +# or hide something that *roff would interpret as a command. This is +# overkill, but it's much simpler than trying to parse *roff here. +sub protect { + local $_ = shift; + s/^([.\'\\])/\\&$1/mg; + $_; +} + +# Given a command and a single argument that may or may not contain double +# quotes, handle double-quote formatting for it. If there are no double +# quotes, just return the command followed by the argument in double quotes. +# If there are double quotes, use an if statement to test for nroff, and for +# nroff output the command followed by the argument in double quotes with +# embedded double quotes doubled. For other formatters, remap paired double +# quotes to `` and ''. +sub switchquotes { + my $command = shift; + local $_ = shift; + my $extra = shift; + s/\\\*\([LR]\"/\"/g; + if (/\"/) { + s/\"/\"\"/g; + my $troff = $_; + $troff =~ s/\"\"([^\"]*)\"\"/\`\`$1\'\'/g; + s/\"/\"\"/g if $extra; + $troff =~ s/\"/\"\"/g if $extra; + $_ = qq("$_") . ($extra ? " $extra" : ''); + $troff = qq("$troff") . ($extra ? " $extra" : ''); + return ".if n $command $_\n.el $command $troff\n"; + } else { + $_ = qq("$_") . ($extra ? " $extra" : ''); + return "$command $_\n"; + } +} + +# Translate a font string into an escape. +sub toescape { (length ($_[0]) > 1 ? '\f(' : '\f') . $_[0] } + + +############################################################################ +# Initialization +############################################################################ + +# Initialize the object. Here, we also process any additional options +# passed to the constructor or set up defaults if none were given. center +# is the centered title, release is the version number, and date is the date +# for the documentation. Note that we can't know what file name we're +# processing due to the architecture of Pod::Parser, so that *has* to either +# be passed to the constructor or set separately with Pod::Man::name(). +sub initialize { + my $self = shift; + + # Figure out the fixed-width font. If user-supplied, make sure that + # they are the right length. + for (qw/fixed fixedbold fixeditalic fixedbolditalic/) { + if (defined $$self{$_}) { + if (length ($$self{$_}) < 1 || length ($$self{$_}) > 2) { + croak "roff font should be 1 or 2 chars, not `$$self{$_}'"; + } + } else { + $$self{$_} = ''; + } + } + + # Set the default fonts. We can't be sure what fixed bold-italic is + # going to be called, so default to just bold. + $$self{fixed} ||= 'CW'; + $$self{fixedbold} ||= 'CB'; + $$self{fixeditalic} ||= 'CI'; + $$self{fixedbolditalic} ||= 'CB'; + + # Set up a table of font escapes. First number is fixed-width, second + # is bold, third is italic. + $$self{FONTS} = { '000' => '\fR', '001' => '\fI', + '010' => '\fB', '011' => '\f(BI', + '100' => toescape ($$self{fixed}), + '101' => toescape ($$self{fixeditalic}), + '110' => toescape ($$self{fixedbold}), + '111' => toescape ($$self{fixedbolditalic})}; + + # Extra stuff for page titles. + $$self{center} = 'User Contributed Perl Documentation' + unless defined $$self{center}; + $$self{indent} = 4 unless defined $$self{indent}; + + # We used to try first to get the version number from a local binary, + # but we shouldn't need that any more. Get the version from the running + # Perl. Work a little magic to handle subversions correctly under both + # the pre-5.6 and the post-5.6 version numbering schemes. + if (!defined $$self{release}) { + my @version = ($] =~ /^(\d+)\.(\d{3})(\d{0,3})$/); + $version[2] ||= 0; + $version[2] *= 10 ** (3 - length $version[2]); + for (@version) { $_ += 0 } + $$self{release} = 'perl v' . join ('.', @version); + } + + # Double quotes in things that will be quoted. + for (qw/center date release/) { + $$self{$_} =~ s/\"/\"\"/g if $$self{$_}; + } + + $$self{INDENT} = 0; # Current indentation level. + $$self{INDENTS} = []; # Stack of indentations. + $$self{INDEX} = []; # Index keys waiting to be printed. + + $self->SUPER::initialize; +} + +# For each document we process, output the preamble first. Note that the +# fixed width font is a global default; once we interpolate it into the +# PREAMBLE, it ain't ever changing. Maybe fix this later. +sub begin_pod { + my $self = shift; + + # Try to figure out the name and section from the file name. + my $section = $$self{section} || 1; + my $name = $$self{name}; + if (!defined $name) { + $name = $self->input_file; + $section = 3 if (!$$self{section} && $name =~ /\.pm\z/i); + $name =~ s/\.p(od|[lm])\z//i; + if ($section =~ /^1/) { + require File::Basename; + $name = uc File::Basename::basename ($name); + } else { + # Lose everything up to the first of + # */lib/*perl* standard or site_perl module + # */*perl*/lib from -D prefix=/opt/perl + # */*perl*/ random module hierarchy + # which works. Should be fixed to use File::Spec. Also handle + # a leading lib/ since that's what ExtUtils::MakeMaker creates. + for ($name) { + s%//+%/%g; + if ( s%^.*?/lib/[^/]*perl[^/]*/%%si + or s%^.*?/[^/]*perl[^/]*/(?:lib/)?%%si) { + s%^site(_perl)?/%%s; # site and site_perl + s%^(.*-$^O|$^O-.*)/%%so; # arch + s%^\d+\.\d+%%s; # version + } + s%^lib/%%; + s%/%::%g; + } + } + } + + # Modification date header. Try to use the modification time of our + # input. + if (!defined $$self{date}) { + my $time = (stat $self->input_file)[9] || time; + my ($day, $month, $year) = (localtime $time)[3,4,5]; + $month++; + $year += 1900; + $$self{date} = sprintf ('%4d-%02d-%02d', $year, $month, $day); + } + + # Now, print out the preamble and the title. + $PREAMBLE =~ s/\@CFONT\@/$$self{fixed}/; + chomp $PREAMBLE; + print { $self->output_handle } <<"----END OF HEADER----"; +.\\" Automatically generated by Pod::Man version $VERSION +.\\" @{[ scalar localtime ]} +.\\" +.\\" Standard preamble: +.\\" ====================================================================== +$PREAMBLE +.\\" ====================================================================== +.\\" +.IX Title "$name $section" +.TH $name $section "$$self{release}" "$$self{date}" "$$self{center}" +.UC +----END OF HEADER---- +#"# for cperl-mode + + # Initialize a few per-file variables. + $$self{INDENT} = 0; + $$self{NEEDSPACE} = 0; +} + + +############################################################################ +# Core overrides +############################################################################ + +# Called for each command paragraph. Gets the command, the associated +# paragraph, the line number, and a Pod::Paragraph object. Just dispatches +# the command to a method named the same as the command. =cut is handled +# internally by Pod::Parser. +sub command { + my $self = shift; + my $command = shift; + return if $command eq 'pod'; + return if ($$self{EXCLUDE} && $command ne 'end'); + $command = 'cmd_' . $command; + $self->$command (@_); +} + +# Called for a verbatim paragraph. Gets the paragraph, the line number, and +# a Pod::Paragraph object. Rofficate backslashes, untabify, put a +# zero-width character at the beginning of each line to protect against +# commands, and wrap in .Vb/.Ve. +sub verbatim { + my $self = shift; + return if $$self{EXCLUDE}; + local $_ = shift; + return if /^\s+$/; + s/\s+$/\n/; + my $lines = tr/\n/\n/; + 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me; + s/\\/\\e/g; + s/^(\s*\S)/'\&' . $1/gme; + $self->makespace if $$self{NEEDSPACE}; + $self->output (".Vb $lines\n$_.Ve\n"); + $$self{NEEDSPACE} = 0; +} + +# Called for a regular text block. Gets the paragraph, the line number, and +# a Pod::Paragraph object. Perform interpolation and output the results. +sub textblock { + my $self = shift; + return if $$self{EXCLUDE}; + $self->output ($_[0]), return if $$self{VERBATIM}; + + # Perform a little magic to collapse multiple L<> references. We'll + # just rewrite the whole thing into actual text at this part, bypassing + # the whole internal sequence parsing thing. + my $text = shift; + $text =~ s{ + (L< # A link of the form L. + / + ( + [:\w]+ # The item has to be a simple word... + (\(\))? # ...or simple function. + ) + > + ( + ,?\s+(and\s+)? # Allow lots of them, conjuncted. + L< + / + ( [:\w]+ ( \(\) )? ) + > + )+ + ) + } { + local $_ = $1; + s{ L< / ( [^>]+ ) > } {$1}xg; + my @items = split /(?:,?\s+(?:and\s+)?)/; + my $string = 'the '; + my $i; + for ($i = 0; $i < @items; $i++) { + $string .= $items[$i]; + $string .= ', ' if @items > 2 && $i != $#items; + $string .= ' ' if @items == 2 && $i == 2; + $string .= 'and ' if ($i == $#items - 1); + } + $string .= ' entries elsewhere in this document'; + $string; + }gex; + + # Parse the tree and output it. collapse knows about references to + # scalars as well as scalars and does the right thing with them. + $text = $self->parse ($text, @_); + $text =~ s/\n\s*$/\n/; + $self->makespace if $$self{NEEDSPACE}; + $self->output (protect $self->mapfonts ($text)); + $self->outindex; + $$self{NEEDSPACE} = 1; +} + +# Called for an interior sequence. Takes a Pod::InteriorSequence object and +# returns a reference to a scalar. This scalar is the final formatted text. +# It's returned as a reference so that other interior sequences above us +# know that the text has already been processed. +sub sequence { + my ($self, $seq) = @_; + my $command = $seq->cmd_name; + + # Zero-width characters. + if ($command eq 'Z') { + # Workaround to generate a blessable reference, needed by 5.005. + my $tmp = '\&'; + return bless \ "$tmp", 'Pod::Man::String'; + } + + # C<>, L<>, X<>, and E<> don't apply guesswork to their contents. + local $_ = $self->collapse ($seq->parse_tree, $command =~ /^[CELX]$/); + + # Handle E<> escapes. + if ($command eq 'E') { + if (/^\d+$/) { + return bless \ chr ($_), 'Pod::Man::String'; + } elsif (exists $ESCAPES{$_}) { + return bless \ "$ESCAPES{$_}", 'Pod::Man::String'; + } else { + carp "Unknown escape E<$1>"; + return bless \ "E<$_>", 'Pod::Man::String'; + } + } + + # For all the other sequences, empty content produces no output. + return '' if $_ eq ''; + + # Handle formatting sequences. + if ($command eq 'B') { + return bless \ ('\f(BS' . $_ . '\f(BE'), 'Pod::Man::String'; + } elsif ($command eq 'F') { + return bless \ ('\f(IS' . $_ . '\f(IE'), 'Pod::Man::String'; + } elsif ($command eq 'I') { + return bless \ ('\f(IS' . $_ . '\f(IE'), 'Pod::Man::String'; + } elsif ($command eq 'C') { + s/-/\\-/g; + s/__/_\\|_/g; + return bless \ ('\f(FS\*(C`' . $_ . "\\*(C'\\f(FE"), + 'Pod::Man::String'; + } + + # Handle links. + if ($command eq 'L') { + # A bug in lvalue subs in 5.6 requires the temporary variable. + my $tmp = $self->buildlink ($_); + return bless \ "$tmp", 'Pod::Man::String'; + } + + # Whitespace protection replaces whitespace with "\ ". + if ($command eq 'S') { + s/\s+/\\ /g; + return bless \ "$_", 'Pod::Man::String'; + } + + # Add an index entry to the list of ones waiting to be output. + if ($command eq 'X') { push (@{ $$self{INDEX} }, $_); return '' } + + # Anything else is unknown. + carp "Unknown sequence $command<$_>"; +} + + +############################################################################ +# Command paragraphs +############################################################################ + +# All command paragraphs take the paragraph and the line number. + +# First level heading. We can't output .IX in the NAME section due to a bug +# in some versions of catman, so don't output a .IX for that section. .SH +# already uses small caps, so remove any E<> sequences that would cause +# them. +sub cmd_head1 { + my $self = shift; + local $_ = $self->parse (@_); + s/\s+$//; + s/\\s-?\d//g; + $self->output (switchquotes ('.SH', $self->mapfonts ($_))); + $self->outindex (($_ eq 'NAME') ? () : ('Header', $_)); + $$self{NEEDSPACE} = 0; +} + +# Second level heading. +sub cmd_head2 { + my $self = shift; + local $_ = $self->parse (@_); + s/\s+$//; + $self->output (switchquotes ('.Sh', $self->mapfonts ($_))); + $self->outindex ('Subsection', $_); + $$self{NEEDSPACE} = 0; +} + +# Start a list. For indents after the first, wrap the outside indent in .RS +# so that hanging paragraph tags will be correct. +sub cmd_over { + my $self = shift; + local $_ = shift; + unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} } + if (@{ $$self{INDENTS} } > 0) { + $self->output (".RS $$self{INDENT}\n"); + } + push (@{ $$self{INDENTS} }, $$self{INDENT}); + $$self{INDENT} = ($_ + 0); +} + +# End a list. If we've closed an embedded indent, we've mangled the hanging +# paragraph indent, so temporarily replace it with .RS and set WEIRDINDENT. +# We'll close that .RS at the next =back or =item. +sub cmd_back { + my $self = shift; + $$self{INDENT} = pop @{ $$self{INDENTS} }; + unless (defined $$self{INDENT}) { + carp "Unmatched =back"; + $$self{INDENT} = 0; + } + if ($$self{WEIRDINDENT}) { + $self->output (".RE\n"); + $$self{WEIRDINDENT} = 0; + } + if (@{ $$self{INDENTS} } > 0) { + $self->output (".RE\n"); + $self->output (".RS $$self{INDENT}\n"); + $$self{WEIRDINDENT} = 1; + } + $$self{NEEDSPACE} = 1; +} + +# An individual list item. Emit an index entry for anything that's +# interesting, but don't emit index entries for things like bullets and +# numbers. rofficate bullets too while we're at it (so for nice output, use +# * for your lists rather than o or . or - or some other thing). Newlines +# in an item title are turned into spaces since *roff can't handle them +# embedded. +sub cmd_item { + my $self = shift; + local $_ = $self->parse (@_); + s/\s+$//; + s/\s*\n\s*/ /g; + my $index; + if (/\w/ && !/^\w[.\)]\s*$/) { + $index = $_; + $index =~ s/^\s*[-*+o.]?\s*//; + } + s/^\*(\s|\Z)/\\\(bu$1/; + if ($$self{WEIRDINDENT}) { + $self->output (".RE\n"); + $$self{WEIRDINDENT} = 0; + } + $_ = $self->mapfonts ($_); + $self->output (switchquotes ('.Ip', $_, $$self{INDENT})); + $self->outindex ($index ? ('Item', $index) : ()); + $$self{NEEDSPACE} = 0; +} + +# Begin a block for a particular translator. Setting VERBATIM triggers +# special handling in textblock(). +sub cmd_begin { + my $self = shift; + local $_ = shift; + my ($kind) = /^(\S+)/ or return; + if ($kind eq 'man' || $kind eq 'roff') { + $$self{VERBATIM} = 1; + } else { + $$self{EXCLUDE} = 1; + } +} + +# End a block for a particular translator. We assume that all =begin/=end +# pairs are properly closed. +sub cmd_end { + my $self = shift; + $$self{EXCLUDE} = 0; + $$self{VERBATIM} = 0; +} + +# One paragraph for a particular translator. Ignore it unless it's intended +# for man or roff, in which case we output it verbatim. +sub cmd_for { + my $self = shift; + local $_ = shift; + return unless s/^(?:man|roff)\b[ \t]*\n?//; + $self->output ($_); +} + + +############################################################################ +# Link handling +############################################################################ + +# Handle links. We can't actually make real hyperlinks, so this is all to +# figure out what text and formatting we print out. +sub buildlink { + my $self = shift; + local $_ = shift; + + # Smash whitespace in case we were split across multiple lines. + s/\s+/ /g; + + # If we were given any explicit text, just output it. + if (m{ ^ ([^|]+) \| }x) { return $1 } + + # Okay, leading and trailing whitespace isn't important. + s/^\s+//; + s/\s+$//; + + # Default to using the whole content of the link entry as a section + # name. Note that L forces a manpage interpretation, as does + # something looking like L. Do the same thing to + # L as we would to manpage(section) without the L<>; + # see guesswork(). If we've added italics, don't add the "manpage" + # text; markup is sufficient. + my ($manpage, $section) = ('', $_); + if (/^"\s*(.*?)\s*"$/) { + $section = '"' . $1 . '"'; + } elsif (m{ ^ [-:.\w]+ (?: \( \S+ \) )? $ }x) { + ($manpage, $section) = ($_, ''); + $manpage =~ s/^([^\(]+)\(/'\f(IS' . $1 . '\f(IE\|('/e; + } elsif (m%/%) { + ($manpage, $section) = split (/\s*\/\s*/, $_, 2); + if ($manpage =~ /^[-:.\w]+(?:\(\S+\))?$/) { + $manpage =~ s/^([^\(]+)\(/'\f(IS' . $1 . '\f(IE\|'/e; + } + $section =~ s/^\"\s*//; + $section =~ s/\s*\"$//; + } + if ($manpage && $manpage !~ /\\f\(IS/) { + $manpage = "the $manpage manpage"; + } + + # Now build the actual output text. + my $text = ''; + if (!length ($section) && !length ($manpage)) { + carp "Invalid link $_"; + } elsif (!length ($section)) { + $text = $manpage; + } elsif ($section =~ /^[:\w]+(?:\(\))?/) { + $text .= 'the ' . $section . ' entry'; + $text .= (length $manpage) ? " in $manpage" + : " elsewhere in this document"; + } else { + if ($section !~ /^".*"$/) { $section = '"' . $section . '"' } + $text .= 'the section on ' . $section; + $text .= " in $manpage" if length $manpage; + } + $text; +} + + +############################################################################ +# Escaping and fontification +############################################################################ + +# At this point, we'll have embedded font codes of the form \f([SE] +# where is one of B, I, or F. Turn those into the right font start +# or end codes. B else> should map to \fBsome\f(BIthing\fB +# else\fR. The old pod2man didn't get this right; the second \fB was \fR, +# so nested sequences didn't work right. We take care of this by using +# variables as a combined pointer to our current font sequence, and set each +# to the number of current nestings of start tags for that font. Use them +# as a vector to look up what font sequence to use. +sub mapfonts { + my $self = shift; + local $_ = shift; + + my ($fixed, $bold, $italic) = (0, 0, 0); + my %magic = (F => \$fixed, B => \$bold, I => \$italic); + s { \\f\((.)(.) } { + ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1; + $$self{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)}; + }gxe; + $_; +} + + +############################################################################ +# *roff-specific parsing +############################################################################ + +# Called instead of parse_text, calls parse_text with the right flags. +sub parse { + my $self = shift; + $self->parse_text ({ -expand_seq => 'sequence', + -expand_ptree => 'collapse' }, @_); +} + +# Takes a parse tree and a flag saying whether or not to treat it as literal +# text (not call guesswork on it), and returns the concatenation of all of +# the text strings in that parse tree. If the literal flag isn't true, +# guesswork() will be called on all plain scalars in the parse tree. +# Assumes that everything in the parse tree is either a scalar or a +# reference to a scalar. +sub collapse { + my ($self, $ptree, $literal) = @_; + if ($literal) { + return join ('', map { + if (ref $_) { + $$_; + } else { + s/\\/\\e/g; + $_; + } + } $ptree->children); + } else { + return join ('', map { + ref ($_) ? $$_ : $self->guesswork ($_) + } $ptree->children); + } +} + +# Takes a text block to perform guesswork on; this is guaranteed not to +# contain any interior sequences. Returns the text block with remapping +# done. +sub guesswork { + my $self = shift; + local $_ = shift; + + # rofficate backslashes. + s/\\/\\e/g; + + # Ensure double underbars have a tiny space between them. + s/__/_\\|_/g; + + # Make all caps a little smaller. Be careful here, since we don't want + # to make @ARGV into small caps, nor do we want to fix the MIME in + # MIME-Version, since it looks weird with the full-height V. + s{ + ( ^ | [\s\(\"\'\`\[\{<>] ) + ( [A-Z] [A-Z] [/A-Z+:\d_\$&-]* ) + (?: (?= [\s>\}\]\)\'\".?!,;:] | -- ) | $ ) + } { $1 . '\s-1' . $2 . '\s0' }egx; + + # Turn PI into a pretty pi. + s{ (?: \\s-1 | \b ) PI (?: \\s0 | \b ) } {\\*\(PI}gx; + + # Italize functions in the form func(). + s{ + \b + ( + [:\w]+ (?:\\s-1)? \(\) + ) + } { '\f(IS' . $1 . '\f(IE' }egx; + + # func(n) is a reference to a manual page. Make it \fIfunc\fR\|(n). + s{ + \b + (\w[-:.\w]+ (?:\\s-1)?) + ( + \( [^\)] \) + ) + } { '\f(IS' . $1 . '\f(IE\|' . $2 }egx; + + # Convert simple Perl variable references to a fixed-width font. + s{ + ( \s+ ) + ( [\$\@%] [\w:]+ ) + (?! \( ) + } { $1 . '\f(FS' . $2 . '\f(FE'}egx; + + # Translate -- into a real em dash if it's used like one and fix up + # dashes, but keep hyphens hyphens. + s{ (\G|^|.) (-+) (\b|.) } { + my ($pre, $dash, $post) = ($1, $2, $3); + if (length ($dash) == 1) { + ($pre =~ /[a-zA-Z]/) ? "$pre-$post" : "$pre\\-$post"; + } elsif (length ($dash) == 2 + && ((!$pre && !$post) + || ($pre =~ /\w/ && !$post) + || ($pre eq ' ' && $post eq ' ') + || ($pre eq '=' && $post ne '=') + || ($pre ne '=' && $post eq '='))) { + "$pre\\*(--$post"; + } else { + $pre . ('\-' x length $dash) . $post; + } + }egxs; + + # Fix up double quotes. + s{ \" ([^\"]+) \" } { '\*(L"' . $1 . '\*(R"' }egx; + + # Make C++ into \*(C+, which is a squinched version. + s{ \b C\+\+ } {\\*\(C+}gx; + + # All done. + $_; +} + + +############################################################################ +# Output formatting +############################################################################ + +# Make vertical whitespace. +sub makespace { + my $self = shift; + $self->output ($$self{INDENT} > 0 ? ".Sp\n" : ".PP\n"); +} + +# Output any pending index entries, and optionally an index entry given as +# an argument. Support multiple index entries in X<> separated by slashes, +# and strip special escapes from index entries. +sub outindex { + my ($self, $section, $index) = @_; + my @entries = map { split m%\s*/\s*% } @{ $$self{INDEX} }; + return unless ($section || @entries); + $$self{INDEX} = []; + my $output; + if (@entries) { + my $output = '.IX Xref "' + . join (' ', map { s/\"/\"\"/; $_ } @entries) + . '"' . "\n"; + } + if ($section) { + $index =~ s/\"/\"\"/; + $index =~ s/\\-/-/g; + $index =~ s/\\(?:s-?\d|.\(..|.)//g; + $output .= ".IX $section " . '"' . $index . '"' . "\n"; + } + $self->output ($output); +} + +# Output text to the output device. +sub output { print { $_[0]->output_handle } $_[1] } + +__END__ + +.\" These are some extra bits of roff that I don't want to lose track of +.\" but that have been removed from the preamble to make it a bit shorter +.\" since they're not currently being used. They're accents and special +.\" characters we don't currently have escapes for. +.if n \{\ +. ds ? ? +. ds ! ! +. ds q +.\} +.if t \{\ +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds oe oe +. ds Oe OE +.\} + +############################################################################ +# Documentation +############################################################################ + +=head1 NAME + +Pod::Man - Convert POD data to formatted *roff input + +=head1 SYNOPSIS + + use Pod::Man; + my $parser = Pod::Man->new (release => $VERSION, section => 8); + + # Read POD from STDIN and write to STDOUT. + $parser->parse_from_filehandle; + + # Read POD from file.pod and write to file.1. + $parser->parse_from_file ('file.pod', 'file.1'); + +=head1 DESCRIPTION + +Pod::Man is a module to convert documentation in the POD format (the +preferred language for documenting Perl) into *roff input using the man +macro set. The resulting *roff code is suitable for display on a terminal +using nroff(1), normally via man(1), or printing using troff(1). It is +conventionally invoked using the driver script B, but it can also +be used directly. + +As a derived class from Pod::Parser, Pod::Man supports the same methods and +interfaces. See L for all the details; briefly, one creates a +new parser with Cnew()> and then calls either +parse_from_filehandle() or parse_from_file(). + +new() can take options, in the form of key/value pairs that control the +behavior of the parser. See below for details. + +If no options are given, Pod::Man uses the name of the input file with any +trailing C<.pod>, C<.pm>, or C<.pl> stripped as the man page title, to +section 1 unless the file ended in C<.pm> in which case it defaults to +section 3, to a centered title of "User Contributed Perl Documentation", to +a centered footer of the Perl version it is run with, and to a left-hand +footer of the modification date of its input (or the current date if given +STDIN for input). + +Pod::Man assumes that your *roff formatters have a fixed-width font named +CW. If yours is called something else (like CR), use the C option to +specify it. This generally only matters for troff output for printing. +Similarly, you can set the fonts used for bold, italic, and bold italic +fixed-width output. + +Besides the obvious pod conversions, Pod::Man also takes care of formatting +func(), func(n), and simple variable references like $foo or @bar so you +don't have to use code escapes for them; complex expressions like +C<$fred{'stuff'}> will still need to be escaped, though. It also translates +dashes that aren't used as hyphens into en dashes, makes long dashes--like +this--into proper em dashes, fixes "paired quotes," makes C++ and PI look +right, puts a little space between double underbars, makes ALLCAPS a teeny +bit smaller in troff(1), and escapes stuff that *roff treats as special so +that you don't have to. + +The recognized options to new() are as follows. All options take a single +argument. + +=over 4 + +=item center + +Sets the centered page header to use instead of "User Contributed Perl +Documentation". + +=item date + +Sets the left-hand footer. By default, the modification date of the input +file will be used, or the current date if stat() can't find that file (the +case if the input is from STDIN), and the date will be formatted as +YYYY-MM-DD. + +=item fixed + +The fixed-width font to use for vertabim text and code. Defaults to CW. +Some systems may want CR instead. Only matters for troff(1) output. + +=item fixedbold + +Bold version of the fixed-width font. Defaults to CB. Only matters for +troff(1) output. + +=item fixeditalic + +Italic version of the fixed-width font (actually, something of a misnomer, +since most fixed-width fonts only have an oblique version, not an italic +version). Defaults to CI. Only matters for troff(1) output. + +=item fixedbolditalic + +Bold italic (probably actually oblique) version of the fixed-width font. +Pod::Man doesn't assume you have this, and defaults to CB. Some systems +(such as Solaris) have this font available as CX. Only matters for troff(1) +output. + +=item release + +Set the centered footer. By default, this is the version of Perl you run +Pod::Man under. Note that some system an macro sets assume that the +centered footer will be a modification date and will prepend something like +"Last modified: "; if this is the case, you may want to set C to +the last modified date and C to the version number. + +=item section + +Set the section for the C<.TH> macro. The standard section numbering +convention is to use 1 for user commands, 2 for system calls, 3 for +functions, 4 for devices, 5 for file formats, 6 for games, 7 for +miscellaneous information, and 8 for administrator commands. There is a lot +of variation here, however; some systems (like Solaris) use 4 for file +formats, 5 for miscellaneous information, and 7 for devices. Still others +use 1m instead of 8, or some mix of both. About the only section numbers +that are reliably consistent are 1, 2, and 3. + +By default, section 1 will be used unless the file ends in .pm in which case +section 3 will be selected. + +=back + +The standard Pod::Parser method parse_from_filehandle() takes up to two +arguments, the first being the file handle to read POD from and the second +being the file handle to write the formatted output to. The first defaults +to STDIN if not given, and the second defaults to STDOUT. The method +parse_from_file() is almost identical, except that its two arguments are the +input and output disk files instead. See L for the specific +details. + +=head1 DIAGNOSTICS + +=over 4 + +=item roff font should be 1 or 2 chars, not `%s' + +(F) You specified a *roff font (using C, C, etc.) that +wasn't either one or two characters. Pod::Man doesn't support *roff fonts +longer than two characters, although some *roff extensions do (the canonical +versions of nroff(1) and troff(1) don't either). + +=item Invalid link %s + +(W) The POD source contained a CE> sequence that Pod::Man was +unable to parse. You should never see this error message; it probably +indicates a bug in Pod::Man. + +=item Unknown escape EE%sE + +(W) The POD source contained an CE> escape that Pod::Man didn't +know about. C%sE> was printed verbatim in the output. + +=item Unknown sequence %s + +(W) The POD source contained a non-standard interior sequence (something of +the form CE>) that Pod::Man didn't know about. It was ignored. + +=item Unmatched =back + +(W) Pod::Man encountered a C<=back> command that didn't correspond to an +C<=over> command. + +=back + +=head1 BUGS + +The lint-like features and strict POD format checking done by B are +not yet implemented and should be, along with the corresponding C +option. + +The NAME section should be recognized specially and index entries emitted +for everything in that section. This would have to be deferred until the +next section, since extraneous things in NAME tends to confuse various man +page processors. + +The handling of hyphens, en dashes, and em dashes is somewhat fragile, and +one may get the wrong one under some circumstances. This should only matter +for troff(1) output. + +When and whether to use small caps is somewhat tricky, and Pod::Man doesn't +necessarily get it right. + +Pod::Man doesn't handle font names longer than two characters. Neither do +most troff(1) implementations, but GNU troff does as an extension. It would +be nice to support as an option for those who want to use it. + +The preamble added to each output file is rather verbose, and most of it is +only necessary in the presence of EEE escapes for non-ASCII +characters. It would ideally be nice if all of those definitions were only +output if needed, perhaps on the fly as the characters are used. + +Some of the automagic applied to file names assumes Unix directory +separators. + +Pod::Man is excessively slow. + +=head1 SEE ALSO + +L, perlpod(1), pod2man(1), nroff(1), troff(1), +man(1), man(7) + +Ossanna, Joseph F., and Brian W. Kernighan. "Troff User's Manual," +Computing Science Technical Report No. 54, AT&T Bell Laboratories. This is +the best documentation of standard nroff(1) and troff(1). At the time of +this writing, it's available at http://www.cs.bell-labs.com/cm/cs/cstr.html. + +The man page documenting the man macro set may be man(5) instead of man(7) +on your system. Also, please see pod2man(1) for extensive documentation on +writing manual pages if you've not done it before and aren't familiar with +the conventions. + +=head1 AUTHOR + +Russ Allbery Erra@stanford.eduE, based I heavily on the +original B by Tom Christiansen Etchrist@mox.perl.comE. + +=cut diff --git a/contrib/perl5/lib/Pod/ParseUtils.pm b/contrib/perl5/lib/Pod/ParseUtils.pm new file mode 100644 index 000000000000..2cb8cdcd3bcd --- /dev/null +++ b/contrib/perl5/lib/Pod/ParseUtils.pm @@ -0,0 +1,837 @@ +############################################################################# +# Pod/ParseUtils.pm -- helpers for POD parsing and conversion +# +# Copyright (C) 1999-2000 by Marek Rouchal. All rights reserved. +# This file is part of "PodParser". PodParser is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::ParseUtils; + +use vars qw($VERSION); +$VERSION = 0.2; ## Current version of this package +require 5.005; ## requires this Perl version or later + +=head1 NAME + +Pod::ParseUtils - helpers for POD parsing and conversion + +=head1 SYNOPSIS + + use Pod::ParseUtils; + + my $list = new Pod::List; + my $link = Pod::Hyperlink->new('Pod::Parser'); + +=head1 DESCRIPTION + +B contains a few object-oriented helper packages for +POD parsing and processing (i.e. in POD formatters and translators). + +=cut + +#----------------------------------------------------------------------------- +# Pod::List +# +# class to hold POD list info (=over, =item, =back) +#----------------------------------------------------------------------------- + +package Pod::List; + +use Carp; + +=head2 Pod::List + +B can be used to hold information about POD lists +(written as =over ... =item ... =back) for further processing. +The following methods are available: + +=over 4 + +=item new() + +Create a new list object. Properties may be specified through a hash +reference like this: + + my $list = Pod::List->new({ -start => $., -indent => 4 }); + +See the individual methods/properties for details. + +=cut + +sub new { + my $this = shift; + my $class = ref($this) || $this; + my %params = @_; + my $self = {%params}; + bless $self, $class; + $self->initialize(); + return $self; +} + +sub initialize { + my $self = shift; + $self->{-file} ||= 'unknown'; + $self->{-start} ||= 'unknown'; + $self->{-indent} ||= 4; # perlpod: "should be the default" + $self->{_items} = []; + $self->{-type} ||= ''; +} + +=item file() + +Without argument, retrieves the file name the list is in. This must +have been set before by either specifying B<-file> in the B +method or by calling the B method with a scalar argument. + +=cut + +# The POD file name the list appears in +sub file { + return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file}; +} + +=item start() + +Without argument, retrieves the line number where the list started. +This must have been set before by either specifying B<-start> in the +B method or by calling the B method with a scalar +argument. + +=cut + +# The line in the file the node appears +sub start { + return (@_ > 1) ? ($_[0]->{-start} = $_[1]) : $_[0]->{-start}; +} + +=item indent() + +Without argument, retrieves the indent level of the list as specified +in C<=over n>. This must have been set before by either specifying +B<-indent> in the B method or by calling the B method +with a scalar argument. + +=cut + +# indent level +sub indent { + return (@_ > 1) ? ($_[0]->{-indent} = $_[1]) : $_[0]->{-indent}; +} + +=item type() + +Without argument, retrieves the list type, which can be an arbitrary value, +e.g. C
            , C
              , ... when thinking the HTML way. +This must have been set before by either specifying +B<-type> in the B method or by calling the B method +with a scalar argument. + +=cut + +# The type of the list (UL, OL, ...) +sub type { + return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type}; +} + +=item rx() + +Without argument, retrieves a regular expression for simplifying the +individual item strings once the list type has been determined. Usage: +E.g. when converting to HTML, one might strip the leading number in +an ordered list as COLE> already prints numbers itself. +This must have been set before by either specifying +B<-rx> in the B method or by calling the B method +with a scalar argument. + +=cut + +# The regular expression to simplify the items +sub rx { + return (@_ > 1) ? ($_[0]->{-rx} = $_[1]) : $_[0]->{-rx}; +} + +=item item() + +Without argument, retrieves the array of the items in this list. +The items may be represented by any scalar. +If an argument has been given, it is pushed on the list of items. + +=cut + +# The individual =items of this list +sub item { + my ($self,$item) = @_; + if(defined $item) { + push(@{$self->{_items}}, $item); + return $item; + } + else { + return @{$self->{_items}}; + } +} + +=item parent() + +Without argument, retrieves information about the parent holding this +list, which is represented as an arbitrary scalar. +This must have been set before by either specifying +B<-parent> in the B method or by calling the B method +with a scalar argument. + +=cut + +# possibility for parsers/translators to store information about the +# lists's parent object +sub parent { + return (@_ > 1) ? ($_[0]->{-parent} = $_[1]) : $_[0]->{-parent}; +} + +=item tag() + +Without argument, retrieves information about the list tag, which can be +any scalar. +This must have been set before by either specifying +B<-tag> in the B method or by calling the B method +with a scalar argument. + +=back + +=cut + +# possibility for parsers/translators to store information about the +# list's object +sub tag { + return (@_ > 1) ? ($_[0]->{-tag} = $_[1]) : $_[0]->{-tag}; +} + +#----------------------------------------------------------------------------- +# Pod::Hyperlink +# +# class to manipulate POD hyperlinks (L<>) +#----------------------------------------------------------------------------- + +package Pod::Hyperlink; + +=head2 Pod::Hyperlink + +B is a class for manipulation of POD hyperlinks. Usage: + + my $link = Pod::Hyperlink->new('alternative text|page/"section in page"'); + +The B class is mainly designed to parse the contents of the +C...E> sequence, providing a simple interface for accessing the +different parts of a POD hyperlink for further processing. It can also be +used to construct hyperlinks. + +=over 4 + +=item new() + +The B method can either be passed a set of key/value pairs or a single +scalar value, namely the contents of a C...E> sequence. An object +of the class C is returned. The value C indicates a +failure, the error message is stored in C<$@>. + +=cut + +use Carp; + +sub new { + my $this = shift; + my $class = ref($this) || $this; + my $self = +{}; + bless $self, $class; + $self->initialize(); + if(defined $_[0]) { + if(ref($_[0])) { + # called with a list of parameters + %$self = %{$_[0]}; + $self->_construct_text(); + } + else { + # called with L<> contents + return undef unless($self->parse($_[0])); + } + } + return $self; +} + +sub initialize { + my $self = shift; + $self->{-line} ||= 'undef'; + $self->{-file} ||= 'undef'; + $self->{-page} ||= ''; + $self->{-node} ||= ''; + $self->{-alttext} ||= ''; + $self->{-type} ||= 'undef'; + $self->{_warnings} = []; +} + +=item parse($string) + +This method can be used to (re)parse a (new) hyperlink, i.e. the contents +of a C...E> sequence. The result is stored in the current object. + +=cut + +sub parse { + my $self = shift; + local($_) = $_[0]; + # syntax check the link and extract destination + my ($alttext,$page,$node,$type) = ('','','',''); + + $self->{_warnings} = []; + + # collapse newlines with whitespace + if(s/\s*\n+\s*/ /g) { + $self->warning("collapsing newlines to blanks"); + } + # strip leading/trailing whitespace + if(s/^[\s\n]+//) { + $self->warning("ignoring leading whitespace in link"); + } + if(s/[\s\n]+$//) { + $self->warning("ignoring trailing whitespace in link"); + } + unless(length($_)) { + _invalid_link("empty link"); + return undef; + } + + ## Check for different possibilities. This is tedious and error-prone + # we match all possibilities (alttext, page, section/item) + #warn "DEBUG: link=$_\n"; + + # only page + # problem: a lot of people use (), or (1) or the like to indicate + # man page sections. But this collides with L that is supposed + # to point to an internal funtion... + # I would like the following better, here and below: + #if(m!^(\w+(?:::\w+)*)$!) { + my $page_rx = '[\w.]+(?:::[\w.]+)*'; + if(m!^($page_rx)$!o) { + $page = $1; + $type = 'page'; + } + # alttext, page and "section" + elsif(m!^(.+?)\s*[|]\s*($page_rx)\s*/\s*"(.+)"$!o) { + ($alttext, $page, $node) = ($1, $2, $3); + $type = 'section'; + } + # alttext and page + elsif(m!^(.+?)\s*[|]\s*($page_rx)$!o) { + ($alttext, $page) = ($1, $2); + $type = 'page'; + } + # alttext and "section" + elsif(m!^(.+?)\s*[|]\s*(?:/\s*|)"(.+)"$!) { + ($alttext, $node) = ($1,$2); + $type = 'section'; + } + # page and "section" + elsif(m!^($page_rx)\s*/\s*"(.+)"$!o) { + ($page, $node) = ($1, $2); + $type = 'section'; + } + # page and item + elsif(m!^($page_rx)\s*/\s*(.+)$!o) { + ($page, $node) = ($1, $2); + $type = 'item'; + } + # only "section" + elsif(m!^/?"(.+)"$!) { + $node = $1; + $type = 'section'; + } + # only item + elsif(m!^\s*/(.+)$!) { + $node = $1; + $type = 'item'; + } + # non-standard: Hyperlink + elsif(m!^((?:http|ftp|mailto|news):.+)$!i) { + $node = $1; + $type = 'hyperlink'; + } + # alttext, page and item + elsif(m!^(.+?)\s*[|]\s*($page_rx)\s*/\s*(.+)$!o) { + ($alttext, $page, $node) = ($1, $2, $3); + $type = 'item'; + } + # alttext and item + elsif(m!^(.+?)\s*[|]\s*/(.+)$!) { + ($alttext, $node) = ($1,$2); + } + # nonstandard: alttext and hyperlink + elsif(m!^(.+?)\s*[|]\s*((?:http|ftp|mailto|news):.+)$!) { + ($alttext, $node) = ($1,$2); + $type = 'hyperlink'; + } + # must be an item or a "malformed" section (without "") + else { + $node = $_; + $type = 'item'; + } + # collapse whitespace in nodes + $node =~ s/\s+/ /gs; + + #if($page =~ /[(]\w*[)]$/) { + # $self->warning("section in '$page' deprecated"); + #} + if($node =~ m:[|/]:) { + $self->warning("node '$node' contains non-escaped | or /"); + } + if($alttext =~ m:[|/]:) { + $self->warning("alternative text '$node' contains non-escaped | or /"); + } + $self->{-page} = $page; + $self->{-node} = $node; + $self->{-alttext} = $alttext; + #warn "DEBUG: page=$page section=$section item=$item alttext=$alttext\n"; + $self->{-type} = $type; + $self->_construct_text(); + 1; +} + +sub _construct_text { + my $self = shift; + my $alttext = $self->alttext(); + my $type = $self->type(); + my $section = $self->node(); + my $page = $self->page(); + my $page_ext = ''; + $page =~ s/([(]\w*[)])$// && ($page_ext = $1); + if($alttext) { + $self->{_text} = $alttext; + } + elsif($type eq 'hyperlink') { + $self->{_text} = $section; + } + else { + $self->{_text} = (!$section ? '' : + $type eq 'item' ? "the $section entry" : + "the section on $section" ) . + ($page ? ($section ? ' in ':'') . "the $page$page_ext manpage" : + ' elsewhere in this document'); + } + # for being marked up later + # use the non-standard markers P<> and Q<>, so that the resulting + # text can be parsed by the translators. It's their job to put + # the correct hypertext around the linktext + if($alttext) { + $self->{_markup} = "Q<$alttext>"; + } + elsif($type eq 'hyperlink') { + $self->{_markup} = "Q<$section>"; + } + else { + $self->{_markup} = (!$section ? '' : + $type eq 'item' ? "the Q<$section> entry" : + "the section on Q<$section>" ) . + ($page ? ($section ? ' in ':'') . "the P<$page>$page_ext manpage" : + ' elsewhere in this document'); + } +} + +=item markup($string) + +Set/retrieve the textual value of the link. This string contains special +markers CE> and CE> that should be expanded by the +translator's interior sequence expansion engine to the +formatter-specific code to highlight/activate the hyperlink. The details +have to be implemented in the translator. + +=cut + +#' retrieve/set markuped text +sub markup { + return (@_ > 1) ? ($_[0]->{_markup} = $_[1]) : $_[0]->{_markup}; +} + +=item text() + +This method returns the textual representation of the hyperlink as above, +but without markers (read only). Depending on the link type this is one of +the following alternatives (the + and * denote the portions of the text +that are marked up): + + the +perl+ manpage + the *$|* entry in the +perlvar+ manpage + the section on *OPTIONS* in the +perldoc+ manpage + the section on *DESCRIPTION* elsewhere in this document + +=cut + +# The complete link's text +sub text { + $_[0]->{_text}; +} + +=item warning() + +After parsing, this method returns any warnings encountered during the +parsing process. + +=cut + +# Set/retrieve warnings +sub warning { + my $self = shift; + if(@_) { + push(@{$self->{_warnings}}, @_); + return @_; + } + return @{$self->{_warnings}}; +} + +=item line(), file() + +Just simple slots for storing information about the line and the file +the link was encountered in. Has to be filled in manually. + +=cut + +# The line in the file the link appears +sub line { + return (@_ > 1) ? ($_[0]->{-line} = $_[1]) : $_[0]->{-line}; +} + +# The POD file name the link appears in +sub file { + return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file}; +} + +=item page() + +This method sets or returns the POD page this link points to. + +=cut + +# The POD page the link appears on +sub page { + if (@_ > 1) { + $_[0]->{-page} = $_[1]; + $_[0]->_construct_text(); + } + $_[0]->{-page}; +} + +=item node() + +As above, but the destination node text of the link. + +=cut + +# The link destination +sub node { + if (@_ > 1) { + $_[0]->{-node} = $_[1]; + $_[0]->_construct_text(); + } + $_[0]->{-node}; +} + +=item alttext() + +Sets or returns an alternative text specified in the link. + +=cut + +# Potential alternative text +sub alttext { + if (@_ > 1) { + $_[0]->{-alttext} = $_[1]; + $_[0]->_construct_text(); + } + $_[0]->{-alttext}; +} + +=item type() + +The node type, either C
              or C. As an unofficial type, +there is also C, derived from e.g. Chttp://perl.comE> + +=cut + +# The type: item or headn +sub type { + return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type}; +} + +=item link() + +Returns the link as contents of CE>. Reciprocal to B. + +=back + +=cut + +# The link itself +sub link { + my $self = shift; + my $link = $self->page() || ''; + if($self->node()) { + my $node = $self->node(); + $text =~ s/\|/E/g; + $text =~ s:/:E:g; + if($self->type() eq 'section') { + $link .= ($link ? '/' : '') . '"' . $node . '"'; + } + elsif($self->type() eq 'hyperlink') { + $link = $self->node(); + } + else { # item + $link .= '/' . $node; + } + } + if($self->alttext()) { + my $text = $self->alttext(); + $text =~ s/\|/E/g; + $text =~ s:/:E:g; + $link = "$text|$link"; + } + $link; +} + +sub _invalid_link { + my ($msg) = @_; + # this sets @_ + #eval { die "$msg\n" }; + #chomp $@; + $@ = $msg; # this seems to work, too! + undef; +} + +#----------------------------------------------------------------------------- +# Pod::Cache +# +# class to hold POD page details +#----------------------------------------------------------------------------- + +package Pod::Cache; + +=head2 Pod::Cache + +B holds information about a set of POD documents, +especially the nodes for hyperlinks. +The following methods are available: + +=over 4 + +=item new() + +Create a new cache object. This object can hold an arbitrary number of +POD documents of class Pod::Cache::Item. + +=cut + +sub new { + my $this = shift; + my $class = ref($this) || $this; + my $self = []; + bless $self, $class; + return $self; +} + +=item item() + +Add a new item to the cache. Without arguments, this method returns a +list of all cache elements. + +=cut + +sub item { + my ($self,%param) = @_; + if(%param) { + my $item = Pod::Cache::Item->new(%param); + push(@$self, $item); + return $item; + } + else { + return @{$self}; + } +} + +=item find_page($name) + +Look for a POD document named C<$name> in the cache. Returns the +reference to the corresponding Pod::Cache::Item object or undef if +not found. + +=back + +=cut + +sub find_page { + my ($self,$page) = @_; + foreach(@$self) { + if($_->page() eq $page) { + return $_; + } + } + undef; +} + +package Pod::Cache::Item; + +=head2 Pod::Cache::Item + +B holds information about individual POD documents, +that can be grouped in a Pod::Cache object. +It is intended to hold information about the hyperlink nodes of POD +documents. +The following methods are available: + +=over 4 + +=item new() + +Create a new object. + +=cut + +sub new { + my $this = shift; + my $class = ref($this) || $this; + my %params = @_; + my $self = {%params}; + bless $self, $class; + $self->initialize(); + return $self; +} + +sub initialize { + my $self = shift; + $self->{-nodes} = [] unless(defined $self->{-nodes}); +} + +=item page() + +Set/retrieve the POD document name (e.g. "Pod::Parser"). + +=cut + +# The POD page +sub page { + return (@_ > 1) ? ($_[0]->{-page} = $_[1]) : $_[0]->{-page}; +} + +=item description() + +Set/retrieve the POD short description as found in the C<=head1 NAME> +section. + +=cut + +# The POD description, taken out of NAME if present +sub description { + return (@_ > 1) ? ($_[0]->{-description} = $_[1]) : $_[0]->{-description}; +} + +=item path() + +Set/retrieve the POD file storage path. + +=cut + +# The file path +sub path { + return (@_ > 1) ? ($_[0]->{-path} = $_[1]) : $_[0]->{-path}; +} + +=item file() + +Set/retrieve the POD file name. + +=cut + +# The POD file name +sub file { + return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file}; +} + +=item nodes() + +Add a node (or a list of nodes) to the document's node list. Note that +the order is kept, i.e. start with the first node and end with the last. +If no argument is given, the current list of nodes is returned in the +same order the nodes have been added. +A node can be any scalar, but usually is a pair of node string and +unique id for the C method to work correctly. + +=cut + +# The POD nodes +sub nodes { + my ($self,@nodes) = @_; + if(@nodes) { + push(@{$self->{-nodes}}, @nodes); + return @nodes; + } + else { + return @{$self->{-nodes}}; + } +} + +=item find_node($name) + +Look for a node or index entry named C<$name> in the object. +Returns the unique id of the node (i.e. the second element of the array +stored in the node arry) or undef if not found. + +=back + +=cut + +sub find_node { + my ($self,$node) = @_; + my @search; + push(@search, @{$self->{-nodes}}) if($self->{-nodes}); + push(@search, @{$self->{-idx}}) if($self->{-idx}); + foreach(@search) { + if($_->[0] eq $node) { + return $_->[1]; # id + } + } + undef; +} + +=item idx() + +Add an index entry (or a list of them) to the document's index list. Note that +the order is kept, i.e. start with the first node and end with the last. +If no argument is given, the current list of index entries is returned in the +same order the entries have been added. +An index entry can be any scalar, but usually is a pair of string and +unique id. + +=cut + +# The POD index entries +sub idx { + my ($self,@idx) = @_; + if(@idx) { + push(@{$self->{-idx}}, @idx); + return @idx; + } + else { + return @{$self->{-idx}}; + } +} + +=head1 AUTHOR + +Marek Rouchal Emarek@saftsack.fs.uni-bayreuth.deE, borrowing +a lot of things from L and L as well as other POD +processing tools by Tom Christiansen, Brad Appleton and Russ Allbery. + +=head1 SEE ALSO + +L, L, L, L, +L + +=cut + +1; diff --git a/contrib/perl5/lib/Pod/Parser.pm b/contrib/perl5/lib/Pod/Parser.pm new file mode 100644 index 000000000000..48fc198ded73 --- /dev/null +++ b/contrib/perl5/lib/Pod/Parser.pm @@ -0,0 +1,1771 @@ +############################################################################# +# Pod/Parser.pm -- package which defines a base class for parsing POD docs. +# +# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. +# This file is part of "PodParser". PodParser is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::Parser; + +use vars qw($VERSION); +$VERSION = 1.12; ## Current version of this package +require 5.005; ## requires this Perl version or later + +############################################################################# + +=head1 NAME + +Pod::Parser - base class for creating POD filters and translators + +=head1 SYNOPSIS + + use Pod::Parser; + + package MyParser; + @ISA = qw(Pod::Parser); + + sub command { + my ($parser, $command, $paragraph, $line_num) = @_; + ## Interpret the command and its text; sample actions might be: + if ($command eq 'head1') { ... } + elsif ($command eq 'head2') { ... } + ## ... other commands and their actions + my $out_fh = $parser->output_handle(); + my $expansion = $parser->interpolate($paragraph, $line_num); + print $out_fh $expansion; + } + + sub verbatim { + my ($parser, $paragraph, $line_num) = @_; + ## Format verbatim paragraph; sample actions might be: + my $out_fh = $parser->output_handle(); + print $out_fh $paragraph; + } + + sub textblock { + my ($parser, $paragraph, $line_num) = @_; + ## Translate/Format this block of text; sample actions might be: + my $out_fh = $parser->output_handle(); + my $expansion = $parser->interpolate($paragraph, $line_num); + print $out_fh $expansion; + } + + sub interior_sequence { + my ($parser, $seq_command, $seq_argument) = @_; + ## Expand an interior sequence; sample actions might be: + return "*$seq_argument*" if ($seq_command eq 'B'); + return "`$seq_argument'" if ($seq_command eq 'C'); + return "_${seq_argument}_'" if ($seq_command eq 'I'); + ## ... other sequence commands and their resulting text + } + + package main; + + ## Create a parser object and have it parse file whose name was + ## given on the command-line (use STDIN if no files were given). + $parser = new MyParser(); + $parser->parse_from_filehandle(\*STDIN) if (@ARGV == 0); + for (@ARGV) { $parser->parse_from_file($_); } + +=head1 REQUIRES + +perl5.005, Pod::InputObjects, Exporter, Symbol, Carp + +=head1 EXPORTS + +Nothing. + +=head1 DESCRIPTION + +B is a base class for creating POD filters and translators. +It handles most of the effort involved with parsing the POD sections +from an input stream, leaving subclasses free to be concerned only with +performing the actual translation of text. + +B parses PODs, and makes method calls to handle the various +components of the POD. Subclasses of B override these methods +to translate the POD into whatever output format they desire. + +=head1 QUICK OVERVIEW + +To create a POD filter for translating POD documentation into some other +format, you create a subclass of B which typically overrides +just the base class implementation for the following methods: + +=over 2 + +=item * + +B + +=item * + +B + +=item * + +B + +=item * + +B + +=back + +You may also want to override the B and B +methods for your subclass (to perform any needed per-file and/or +per-document initialization or cleanup). + +If you need to perform any preprocesssing of input before it is parsed +you may want to override one or more of B and/or +B. + +Sometimes it may be necessary to make more than one pass over the input +files. If this is the case you have several options. You can make the +first pass using B and override your methods to store the +intermediate results in memory somewhere for the B method to +process. You could use B for several passes with an +appropriate state variable to control the operation for each pass. If +your input source can't be reset to start at the beginning, you can +store it in some other structure as a string or an array and have that +structure implement a B method (which is all that +B uses to read input). + +Feel free to add any member data fields you need to keep track of things +like current font, indentation, horizontal or vertical position, or +whatever else you like. Be sure to read L<"PRIVATE METHODS AND DATA"> +to avoid name collisions. + +For the most part, the B base class should be able to +do most of the input parsing for you and leave you free to worry about +how to intepret the commands and translate the result. + +Note that all we have described here in this quick overview is the +simplest most straightforward use of B to do stream-based +parsing. It is also possible to use the B function +to do more sophisticated tree-based parsing. See L<"TREE-BASED PARSING">. + +=head1 PARSING OPTIONS + +A I is simply a named option of B with a +value that corresponds to a certain specified behavior. These various +behaviors of B may be enabled/disabled by setting or +or unsetting one or more I using the B method. +The set of currently accepted parse-options is as follows: + +=over 3 + +=item B<-want_nonPODs> (default: unset) + +Normally (by default) B will only provide access to +the POD sections of the input. Input paragraphs that are not part +of the POD-format documentation are not made available to the caller +(not even using B). Setting this option to a +non-empty, non-zero value will allow B to see +non-POD sections of the input as well as POD sections. The B +method can be used to determine if the corresponding paragraph is a POD +paragraph, or some other input paragraph. + +=item B<-process_cut_cmd> (default: unset) + +Normally (by default) B handles the C<=cut> POD directive +by itself and does not pass it on to the caller for processing. Setting +this option to a non-empty, non-zero value will cause B to +pass the C<=cut> directive to the caller just like any other POD command +(and hence it may be processed by the B method). + +B will still interpret the C<=cut> directive to mean that +"cutting mode" has been (re)entered, but the caller will get a chance +to capture the actual C<=cut> paragraph itself for whatever purpose +it desires. + +=item B<-warnings> (default: unset) + +Normally (by default) B recognizes a bare minimum of +pod syntax errors and warnings and issues diagnostic messages +for errors, but not for warnings. (Use B to do more +thorough checking of POD syntax.) Setting this option to a non-empty, +non-zero value will cause B to issue diagnostics for +the few warnings it recognizes as well as the errors. + +=back + +Please see L<"parseopts()"> for a complete description of the interface +for the setting and unsetting of parse-options. + +=cut + +############################################################################# + +use vars qw(@ISA); +use strict; +#use diagnostics; +use Pod::InputObjects; +use Carp; +use Exporter; +require VMS::Filespec if $^O eq 'VMS'; +BEGIN { + if ($] < 5.6) { + require Symbol; + import Symbol; + } +} +@ISA = qw(Exporter); + +## These "variables" are used as local "glob aliases" for performance +use vars qw(%myData %myOpts @input_stack); + +############################################################################# + +=head1 RECOMMENDED SUBROUTINE/METHOD OVERRIDES + +B provides several methods which most subclasses will probably +want to override. These methods are as follows: + +=cut + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->command($cmd,$text,$line_num,$pod_para); + +This method should be overridden by subclasses to take the appropriate +action when a POD command paragraph (denoted by a line beginning with +"=") is encountered. When such a POD directive is seen in the input, +this method is called and is passed: + +=over 3 + +=item C<$cmd> + +the name of the command for this POD paragraph + +=item C<$text> + +the paragraph text for the given POD paragraph command. + +=item C<$line_num> + +the line-number of the beginning of the paragraph + +=item C<$pod_para> + +a reference to a C object which contains further +information about the paragraph command (see L +for details). + +=back + +B that this method I called for C<=pod> paragraphs. + +The base class implementation of this method simply treats the raw POD +command as normal block of paragraph text (invoking the B +method with the command paragraph). + +=cut + +sub command { + my ($self, $cmd, $text, $line_num, $pod_para) = @_; + ## Just treat this like a textblock + $self->textblock($pod_para->raw_text(), $line_num, $pod_para); +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->verbatim($text,$line_num,$pod_para); + +This method may be overridden by subclasses to take the appropriate +action when a block of verbatim text is encountered. It is passed the +following parameters: + +=over 3 + +=item C<$text> + +the block of text for the verbatim paragraph + +=item C<$line_num> + +the line-number of the beginning of the paragraph + +=item C<$pod_para> + +a reference to a C object which contains further +information about the paragraph (see L +for details). + +=back + +The base class implementation of this method simply prints the textblock +(unmodified) to the output filehandle. + +=cut + +sub verbatim { + my ($self, $text, $line_num, $pod_para) = @_; + my $out_fh = $self->{_OUTPUT}; + print $out_fh $text; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->textblock($text,$line_num,$pod_para); + +This method may be overridden by subclasses to take the appropriate +action when a normal block of POD text is encountered (although the base +class method will usually do what you want). It is passed the following +parameters: + +=over 3 + +=item C<$text> + +the block of text for the a POD paragraph + +=item C<$line_num> + +the line-number of the beginning of the paragraph + +=item C<$pod_para> + +a reference to a C object which contains further +information about the paragraph (see L +for details). + +=back + +In order to process interior sequences, subclasses implementations of +this method will probably want to invoke either B or +B, passing it the text block C<$text>, and the corresponding +line number in C<$line_num>, and then perform any desired processing upon +the returned result. + +The base class implementation of this method simply prints the text block +as it occurred in the input stream). + +=cut + +sub textblock { + my ($self, $text, $line_num, $pod_para) = @_; + my $out_fh = $self->{_OUTPUT}; + print $out_fh $self->interpolate($text, $line_num); +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->interior_sequence($seq_cmd,$seq_arg,$pod_seq); + +This method should be overridden by subclasses to take the appropriate +action when an interior sequence is encountered. An interior sequence is +an embedded command within a block of text which appears as a command +name (usually a single uppercase character) followed immediately by a +string of text which is enclosed in angle brackets. This method is +passed the sequence command C<$seq_cmd> and the corresponding text +C<$seq_arg>. It is invoked by the B method for each interior +sequence that occurs in the string that it is passed. It should return +the desired text string to be used in place of the interior sequence. +The C<$pod_seq> argument is a reference to a C +object which contains further information about the interior sequence. +Please see L for details if you need to access this +additional information. + +Subclass implementations of this method may wish to invoke the +B method of C<$pod_seq> to see if it is nested inside +some other interior-sequence (and if so, which kind). + +The base class implementation of the B method +simply returns the raw text of the interior sequence (as it occurred +in the input) to the caller. + +=cut + +sub interior_sequence { + my ($self, $seq_cmd, $seq_arg, $pod_seq) = @_; + ## Just return the raw text of the interior sequence + return $pod_seq->raw_text(); +} + +############################################################################# + +=head1 OPTIONAL SUBROUTINE/METHOD OVERRIDES + +B provides several methods which subclasses may want to override +to perform any special pre/post-processing. These methods do I have to +be overridden, but it may be useful for subclasses to take advantage of them. + +=cut + +##--------------------------------------------------------------------------- + +=head1 B + + my $parser = Pod::Parser->new(); + +This is the constructor for B and its subclasses. You +I need to override this method! It is capable of constructing +subclass objects as well as base class objects, provided you use +any of the following constructor invocation styles: + + my $parser1 = MyParser->new(); + my $parser2 = new MyParser(); + my $parser3 = $parser2->new(); + +where C is some subclass of B. + +Using the syntax C to invoke the constructor is I +recommended, but if you insist on being able to do this, then the +subclass I need to override the B constructor method. If +you do override the constructor, you I be sure to invoke the +B method of the newly blessed object. + +Using any of the above invocations, the first argument to the +constructor is always the corresponding package name (or object +reference). No other arguments are required, but if desired, an +associative array (or hash-table) my be passed to the B +constructor, as in: + + my $parser1 = MyParser->new( MYDATA => $value1, MOREDATA => $value2 ); + my $parser2 = new MyParser( -myflag => 1 ); + +All arguments passed to the B constructor will be treated as +key/value pairs in a hash-table. The newly constructed object will be +initialized by copying the contents of the given hash-table (which may +have been empty). The B constructor for this class and all of its +subclasses returns a blessed reference to the initialized object (hash-table). + +=cut + +sub new { + ## Determine if we were called via an object-ref or a classname + my $this = shift; + my $class = ref($this) || $this; + ## Any remaining arguments are treated as initial values for the + ## hash that is used to represent this object. + my %params = @_; + my $self = { %params }; + ## Bless ourselves into the desired class and perform any initialization + bless $self, $class; + $self->initialize(); + return $self; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->initialize(); + +This method performs any necessary object initialization. It takes no +arguments (other than the object instance of course, which is typically +copied to a local variable named C<$self>). If subclasses override this +method then they I be sure to invoke C<$self-ESUPER::initialize()>. + +=cut + +sub initialize { + #my $self = shift; + #return; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->begin_pod(); + +This method is invoked at the beginning of processing for each POD +document that is encountered in the input. Subclasses should override +this method to perform any per-document initialization. + +=cut + +sub begin_pod { + #my $self = shift; + #return; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->begin_input(); + +This method is invoked by B immediately I +processing input from a filehandle. The base class implementation does +nothing, however, subclasses may override it to perform any per-file +initializations. + +Note that if multiple files are parsed for a single POD document +(perhaps the result of some future C<=include> directive) this method +is invoked for every file that is parsed. If you wish to perform certain +initializations once per document, then you should use B. + +=cut + +sub begin_input { + #my $self = shift; + #return; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->end_input(); + +This method is invoked by B immediately I +processing input from a filehandle. The base class implementation does +nothing, however, subclasses may override it to perform any per-file +cleanup actions. + +Please note that if multiple files are parsed for a single POD document +(perhaps the result of some kind of C<=include> directive) this method +is invoked for every file that is parsed. If you wish to perform certain +cleanup actions once per document, then you should use B. + +=cut + +sub end_input { + #my $self = shift; + #return; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->end_pod(); + +This method is invoked at the end of processing for each POD document +that is encountered in the input. Subclasses should override this method +to perform any per-document finalization. + +=cut + +sub end_pod { + #my $self = shift; + #return; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $textline = $parser->preprocess_line($text, $line_num); + +This method should be overridden by subclasses that wish to perform +any kind of preprocessing for each I of input (I it has +been determined whether or not it is part of a POD paragraph). The +parameter C<$text> is the input line; and the parameter C<$line_num> is +the line number of the corresponding text line. + +The value returned should correspond to the new text to use in its +place. If the empty string or an undefined value is returned then no +further processing will be performed for this line. + +Please note that the B method is invoked I +the B method. After all (possibly preprocessed) +lines in a paragraph have been assembled together and it has been +determined that the paragraph is part of the POD documentation from one +of the selected sections, then B is invoked. + +The base class implementation of this method returns the given text. + +=cut + +sub preprocess_line { + my ($self, $text, $line_num) = @_; + return $text; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $textblock = $parser->preprocess_paragraph($text, $line_num); + +This method should be overridden by subclasses that wish to perform any +kind of preprocessing for each block (paragraph) of POD documentation +that appears in the input stream. The parameter C<$text> is the POD +paragraph from the input file; and the parameter C<$line_num> is the +line number for the beginning of the corresponding paragraph. + +The value returned should correspond to the new text to use in its +place If the empty string is returned or an undefined value is +returned, then the given C<$text> is ignored (not processed). + +This method is invoked after gathering up all the lines in a paragraph +and after determining the cutting state of the paragraph, +but before trying to further parse or interpret them. After +B returns, the current cutting state (which +is returned by C<$self-Ecutting()>) is examined. If it evaluates +to true then input text (including the given C<$text>) is cut (not +processed) until the next POD directive is encountered. + +Please note that the B method is invoked I +the B method. After all (possibly preprocessed) +lines in a paragraph have been assembled together and either it has been +determined that the paragraph is part of the POD documentation from one +of the selected sections or the C<-want_nonPODs> option is true, +then B is invoked. + +The base class implementation of this method returns the given text. + +=cut + +sub preprocess_paragraph { + my ($self, $text, $line_num) = @_; + return $text; +} + +############################################################################# + +=head1 METHODS FOR PARSING AND PROCESSING + +B provides several methods to process input text. These +methods typically won't need to be overridden (and in some cases they +can't be overridden), but subclasses may want to invoke them to exploit +their functionality. + +=cut + +##--------------------------------------------------------------------------- + +=head1 B + + $ptree1 = $parser->parse_text($text, $line_num); + $ptree2 = $parser->parse_text({%opts}, $text, $line_num); + $ptree3 = $parser->parse_text(\%opts, $text, $line_num); + +This method is useful if you need to perform your own interpolation +of interior sequences and can't rely upon B to expand +them in simple bottom-up order order. + +The parameter C<$text> is a string or block of text to be parsed +for interior sequences; and the parameter C<$line_num> is the +line number curresponding to the beginning of C<$text>. + +B will parse the given text into a parse-tree of "nodes." +and interior-sequences. Each "node" in the parse tree is either a +text-string, or a B. The result returned is a +parse-tree of type B. Please see L +for more information about B and B. + +If desired, an optional hash-ref may be specified as the first argument +to customize certain aspects of the parse-tree that is created and +returned. The set of recognized option keywords are: + +=over 3 + +=item B<-expand_seq> =E I|I + +Normally, the parse-tree returned by B will contain an +unexpanded C object for each interior-sequence +encountered. Specifying B<-expand_seq> tells B to "expand" +every interior-sequence it sees by invoking the referenced function +(or named method of the parser object) and using the return value as the +expanded result. + +If a subroutine reference was given, it is invoked as: + + &$code_ref( $parser, $sequence ) + +and if a method-name was given, it is invoked as: + + $parser->method_name( $sequence ) + +where C<$parser> is a reference to the parser object, and C<$sequence> +is a reference to the interior-sequence object. +[I: If the B method is specified, then it is +invoked according to the interface specified in L<"interior_sequence()">]. + +=item B<-expand_text> =E I|I + +Normally, the parse-tree returned by B will contain a +text-string for each contiguous sequence of characters outside of an +interior-sequence. Specifying B<-expand_text> tells B to +"preprocess" every such text-string it sees by invoking the referenced +function (or named method of the parser object) and using the return value +as the preprocessed (or "expanded") result. [Note that if the result is +an interior-sequence, then it will I be expanded as specified by the +B<-expand_seq> option; Any such recursive expansion needs to be handled by +the specified callback routine.] + +If a subroutine reference was given, it is invoked as: + + &$code_ref( $parser, $text, $ptree_node ) + +and if a method-name was given, it is invoked as: + + $parser->method_name( $text, $ptree_node ) + +where C<$parser> is a reference to the parser object, C<$text> is the +text-string encountered, and C<$ptree_node> is a reference to the current +node in the parse-tree (usually an interior-sequence object or else the +top-level node of the parse-tree). + +=item B<-expand_ptree> =E I|I + +Rather than returning a C, pass the parse-tree as an +argument to the referenced subroutine (or named method of the parser +object) and return the result instead of the parse-tree object. + +If a subroutine reference was given, it is invoked as: + + &$code_ref( $parser, $ptree ) + +and if a method-name was given, it is invoked as: + + $parser->method_name( $ptree ) + +where C<$parser> is a reference to the parser object, and C<$ptree> +is a reference to the parse-tree object. + +=back + +=cut + +sub parse_text { + my $self = shift; + local $_ = ''; + + ## Get options and set any defaults + my %opts = (ref $_[0]) ? %{ shift() } : (); + my $expand_seq = $opts{'-expand_seq'} || undef; + my $expand_text = $opts{'-expand_text'} || undef; + my $expand_ptree = $opts{'-expand_ptree'} || undef; + + my $text = shift; + my $line = shift; + my $file = $self->input_file(); + my $cmd = ""; + + ## Convert method calls into closures, for our convenience + my $xseq_sub = $expand_seq; + my $xtext_sub = $expand_text; + my $xptree_sub = $expand_ptree; + if (defined $expand_seq and $expand_seq eq 'interior_sequence') { + ## If 'interior_sequence' is the method to use, we have to pass + ## more than just the sequence object, we also need to pass the + ## sequence name and text. + $xseq_sub = sub { + my ($self, $iseq) = @_; + my $args = join("", $iseq->parse_tree->children); + return $self->interior_sequence($iseq->name, $args, $iseq); + }; + } + ref $xseq_sub or $xseq_sub = sub { shift()->$expand_seq(@_) }; + ref $xtext_sub or $xtext_sub = sub { shift()->$expand_text(@_) }; + ref $xptree_sub or $xptree_sub = sub { shift()->$expand_ptree(@_) }; + + ## Keep track of the "current" interior sequence, and maintain a stack + ## of "in progress" sequences. + ## + ## NOTE that we push our own "accumulator" at the very beginning of the + ## stack. It's really a parse-tree, not a sequence; but it implements + ## the methods we need so we can use it to gather-up all the sequences + ## and strings we parse. Thus, by the end of our parsing, it should be + ## the only thing left on our stack and all we have to do is return it! + ## + my $seq = Pod::ParseTree->new(); + my @seq_stack = ($seq); + my ($ldelim, $rdelim) = ('', ''); + + ## Iterate over all sequence starts text (NOTE: split with + ## capturing parens keeps the delimiters) + $_ = $text; + my @tokens = split /([A-Z]<(?:<+\s+)?)/; + while ( @tokens ) { + $_ = shift @tokens; + ## Look for the beginning of a sequence + if ( /^([A-Z])(<(?:<+\s+)?)$/ ) { + ## Push a new sequence onto the stack of those "in-progress" + ($cmd, $ldelim) = ($1, $2); + $seq = Pod::InteriorSequence->new( + -name => $cmd, + -ldelim => $ldelim, -rdelim => '', + -file => $file, -line => $line + ); + $ldelim =~ s/\s+$//, ($rdelim = $ldelim) =~ tr//; + (@seq_stack > 1) and $seq->nested($seq_stack[-1]); + push @seq_stack, $seq; + } + ## Look for sequence ending + elsif ( @seq_stack > 1 ) { + ## Make sure we match the right kind of closing delimiter + my ($seq_end, $post_seq) = ("", ""); + if ( ($ldelim eq '<' and /\A(.*?)(>)/s) + or /\A(.*?)(\s+$rdelim)/s ) + { + ## Found end-of-sequence, capture the interior and the + ## closing the delimiter, and put the rest back on the + ## token-list + $post_seq = substr($_, length($1) + length($2)); + ($_, $seq_end) = ($1, $2); + (length $post_seq) and unshift @tokens, $post_seq; + } + if (length) { + ## In the middle of a sequence, append this text to it, and + ## dont forget to "expand" it if that's what the caller wanted + $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_); + $_ .= $seq_end; + } + if (length $seq_end) { + ## End of current sequence, record terminating delimiter + $seq->rdelim($seq_end); + ## Pop it off the stack of "in progress" sequences + pop @seq_stack; + ## Append result to its parent in current parse tree + $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) + : $seq); + ## Remember the current cmd-name and left-delimiter + $cmd = (@seq_stack > 1) ? $seq_stack[-1]->name : ''; + $ldelim = (@seq_stack > 1) ? $seq_stack[-1]->ldelim : ''; + $ldelim =~ s/\s+$//, ($rdelim = $ldelim) =~ tr//; + } + } + elsif (length) { + ## In the middle of a sequence, append this text to it, and + ## dont forget to "expand" it if that's what the caller wanted + $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_); + } + ## Keep track of line count + $line += tr/\n//; + ## Remember the "current" sequence + $seq = $seq_stack[-1]; + } + + ## Handle unterminated sequences + my $errorsub = (@seq_stack > 1) ? $self->errorsub() : undef; + while (@seq_stack > 1) { + ($cmd, $file, $line) = ($seq->name, $seq->file_line); + $file = VMS::Filespec::unixify($file) if $^O eq 'VMS'; + $ldelim = $seq->ldelim; + ($rdelim = $ldelim) =~ tr//; + $rdelim =~ s/^(\S+)(\s*)$/$2$1/; + pop @seq_stack; + my $errmsg = "*** ERROR: unterminated ${cmd}${ldelim}...${rdelim}". + " at line $line in file $file\n"; + (ref $errorsub) and &{$errorsub}($errmsg) + or (defined $errorsub) and $self->$errorsub($errmsg) + or warn($errmsg); + $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) : $seq); + $seq = $seq_stack[-1]; + } + + ## Return the resulting parse-tree + my $ptree = (pop @seq_stack)->parse_tree; + return $expand_ptree ? &$xptree_sub($self, $ptree) : $ptree; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $textblock = $parser->interpolate($text, $line_num); + +This method translates all text (including any embedded interior sequences) +in the given text string C<$text> and returns the interpolated result. The +parameter C<$line_num> is the line number corresponding to the beginning +of C<$text>. + +B merely invokes a private method to recursively expand +nested interior sequences in bottom-up order (innermost sequences are +expanded first). If there is a need to expand nested sequences in +some alternate order, use B instead. + +=cut + +sub interpolate { + my($self, $text, $line_num) = @_; + my %parse_opts = ( -expand_seq => 'interior_sequence' ); + my $ptree = $self->parse_text( \%parse_opts, $text, $line_num ); + return join "", $ptree->children(); +} + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head1 B + + $parser->parse_paragraph($text, $line_num); + +This method takes the text of a POD paragraph to be processed, along +with its corresponding line number, and invokes the appropriate method +(one of B, B, or B). + +For performance reasons, this method is invoked directly without any +dynamic lookup; Hence subclasses may I override it! + +=end __PRIVATE__ + +=cut + +sub parse_paragraph { + my ($self, $text, $line_num) = @_; + local *myData = $self; ## alias to avoid deref-ing overhead + local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options + local $_; + + ## See if we want to preprocess nonPOD paragraphs as well as POD ones. + my $wantNonPods = $myOpts{'-want_nonPODs'}; + + ## Update cutting status + $myData{_CUTTING} = 0 if $text =~ /^={1,2}\S/; + + ## Perform any desired preprocessing if we wanted it this early + $wantNonPods and $text = $self->preprocess_paragraph($text, $line_num); + + ## Ignore up until next POD directive if we are cutting + return if $myData{_CUTTING}; + + ## Now we know this is block of text in a POD section! + + ##----------------------------------------------------------------- + ## This is a hook (hack ;-) for Pod::Select to do its thing without + ## having to override methods, but also without Pod::Parser assuming + ## $self is an instance of Pod::Select (if the _SELECTED_SECTIONS + ## field exists then we assume there is an is_selected() method for + ## us to invoke (calling $self->can('is_selected') could verify this + ## but that is more overhead than I want to incur) + ##----------------------------------------------------------------- + + ## Ignore this block if it isnt in one of the selected sections + if (exists $myData{_SELECTED_SECTIONS}) { + $self->is_selected($text) or return ($myData{_CUTTING} = 1); + } + + ## If we havent already, perform any desired preprocessing and + ## then re-check the "cutting" state + unless ($wantNonPods) { + $text = $self->preprocess_paragraph($text, $line_num); + return 1 unless ((defined $text) and (length $text)); + return 1 if ($myData{_CUTTING}); + } + + ## Look for one of the three types of paragraphs + my ($pfx, $cmd, $arg, $sep) = ('', '', '', ''); + my $pod_para = undef; + if ($text =~ /^(={1,2})(?=\S)/) { + ## Looks like a command paragraph. Capture the command prefix used + ## ("=" or "=="), as well as the command-name, its paragraph text, + ## and whatever sequence of characters was used to separate them + $pfx = $1; + $_ = substr($text, length $pfx); + ($cmd, $sep, $text) = split /(\s+)/, $_, 2; + ## If this is a "cut" directive then we dont need to do anything + ## except return to "cutting" mode. + if ($cmd eq 'cut') { + $myData{_CUTTING} = 1; + return unless $myOpts{'-process_cut_cmd'}; + } + } + ## Save the attributes indicating how the command was specified. + $pod_para = new Pod::Paragraph( + -name => $cmd, + -text => $text, + -prefix => $pfx, + -separator => $sep, + -file => $myData{_INFILE}, + -line => $line_num + ); + # ## Invoke appropriate callbacks + # if (exists $myData{_CALLBACKS}) { + # ## Look through the callback list, invoke callbacks, + # ## then see if we need to do the default actions + # ## (invoke_callbacks will return true if we do). + # return 1 unless $self->invoke_callbacks($cmd, $text, $line_num, $pod_para); + # } + if (length $cmd) { + ## A command paragraph + $self->command($cmd, $text, $line_num, $pod_para); + } + elsif ($text =~ /^\s+/) { + ## Indented text - must be a verbatim paragraph + $self->verbatim($text, $line_num, $pod_para); + } + else { + ## Looks like an ordinary block of text + $self->textblock($text, $line_num, $pod_para); + } + return 1; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->parse_from_filehandle($in_fh,$out_fh); + +This method takes an input filehandle (which is assumed to already be +opened for reading) and reads the entire input stream looking for blocks +(paragraphs) of POD documentation to be processed. If no first argument +is given the default input filehandle C is used. + +The C<$in_fh> parameter may be any object that provides a B +method to retrieve a single line of input text (hence, an appropriate +wrapper object could be used to parse PODs from a single string or an +array of strings). + +Using C<$in_fh-Egetline()>, input is read line-by-line and assembled +into paragraphs or "blocks" (which are separated by lines containing +nothing but whitespace). For each block of POD documentation +encountered it will invoke a method to parse the given paragraph. + +If a second argument is given then it should correspond to a filehandle where +output should be sent (otherwise the default output filehandle is +C if no output filehandle is currently in use). + +B For performance reasons, this method caches the input stream at +the top of the stack in a local variable. Any attempts by clients to +change the stack contents during processing when in the midst executing +of this method I the input stream used by the current +invocation of this method. + +This method does I usually need to be overridden by subclasses. + +=cut + +sub parse_from_filehandle { + my $self = shift; + my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : (); + my ($in_fh, $out_fh) = @_; + $in_fh = \*STDIN unless ($in_fh); + local *myData = $self; ## alias to avoid deref-ing overhead + local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options + local $_; + + ## Put this stream at the top of the stack and do beginning-of-input + ## processing. NOTE that $in_fh might be reset during this process. + my $topstream = $self->_push_input_stream($in_fh, $out_fh); + (exists $opts{-cutting}) and $self->cutting( $opts{-cutting} ); + + ## Initialize line/paragraph + my ($textline, $paragraph) = ('', ''); + my ($nlines, $plines) = (0, 0); + + ## Use <$fh> instead of $fh->getline where possible (for speed) + $_ = ref $in_fh; + my $tied_fh = (/^(?:GLOB|FileHandle|IO::\w+)$/ or tied $in_fh); + + ## Read paragraphs line-by-line + while (defined ($textline = $tied_fh ? <$in_fh> : $in_fh->getline)) { + $textline = $self->preprocess_line($textline, ++$nlines); + next unless ((defined $textline) && (length $textline)); + $_ = $paragraph; ## save previous contents + + if ((! length $paragraph) && ($textline =~ /^==/)) { + ## '==' denotes a one-line command paragraph + $paragraph = $textline; + $plines = 1; + $textline = ''; + } else { + ## Append this line to the current paragraph + $paragraph .= $textline; + ++$plines; + } + + ## See if this line is blank and ends the current paragraph. + ## If it isnt, then keep iterating until it is. + next unless (($textline =~ /^([^\S\r\n]*)[\r\n]*$/) + && (length $paragraph)); + + ## Issue a warning about any non-empty blank lines + if (length($1) > 1 and $myOpts{'-warnings'} and ! $myData{_CUTTING}) { + my $errorsub = $self->errorsub(); + my $file = $self->input_file(); + $file = VMS::Filespec::unixify($file) if $^O eq 'VMS'; + my $errmsg = "*** WARNING: line containing nothing but whitespace". + " in paragraph at line $nlines in file $file\n"; + (ref $errorsub) and &{$errorsub}($errmsg) + or (defined $errorsub) and $self->$errorsub($errmsg) + or warn($errmsg); + } + + ## Now process the paragraph + parse_paragraph($self, $paragraph, ($nlines - $plines) + 1); + $paragraph = ''; + $plines = 0; + } + ## Dont forget about the last paragraph in the file + if (length $paragraph) { + parse_paragraph($self, $paragraph, ($nlines - $plines) + 1) + } + + ## Now pop the input stream off the top of the input stack. + $self->_pop_input_stream(); +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->parse_from_file($filename,$outfile); + +This method takes a filename and does the following: + +=over 2 + +=item * + +opens the input and output files for reading +(creating the appropriate filehandles) + +=item * + +invokes the B method passing it the +corresponding input and output filehandles. + +=item * + +closes the input and output files. + +=back + +If the special input filename "-" or "<&STDIN" is given then the STDIN +filehandle is used for input (and no open or close is performed). If no +input filename is specified then "-" is implied. + +If a second argument is given then it should be the name of the desired +output file. If the special output filename "-" or ">&STDOUT" is given +then the STDOUT filehandle is used for output (and no open or close is +performed). If the special output filename ">&STDERR" is given then the +STDERR filehandle is used for output (and no open or close is +performed). If no output filehandle is currently in use and no output +filename is specified, then "-" is implied. + +This method does I usually need to be overridden by subclasses. + +=cut + +sub parse_from_file { + my $self = shift; + my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : (); + my ($infile, $outfile) = @_; + my ($in_fh, $out_fh) = (gensym, gensym) if ($] < 5.6); + my ($close_input, $close_output) = (0, 0); + local *myData = $self; + local $_; + + ## Is $infile a filename or a (possibly implied) filehandle + $infile = '-' unless ((defined $infile) && (length $infile)); + if (($infile eq '-') || ($infile =~ /^<&(STDIN|0)$/i)) { + ## Not a filename, just a string implying STDIN + $myData{_INFILE} = ""; + $in_fh = \*STDIN; + } + elsif (ref $infile) { + ## Must be a filehandle-ref (or else assume its a ref to an object + ## that supports the common IO read operations). + $myData{_INFILE} = ${$infile}; + $in_fh = $infile; + } + else { + ## We have a filename, open it for reading + $myData{_INFILE} = $infile; + open($in_fh, "< $infile") or + croak "Can't open $infile for reading: $!\n"; + $close_input = 1; + } + + ## NOTE: we need to be *very* careful when "defaulting" the output + ## file. We only want to use a default if this is the beginning of + ## the entire document (but *not* if this is an included file). We + ## determine this by seeing if the input stream stack has been set-up + ## already + ## + unless ((defined $outfile) && (length $outfile)) { + (defined $myData{_TOP_STREAM}) && ($out_fh = $myData{_OUTPUT}) + || ($outfile = '-'); + } + ## Is $outfile a filename or a (possibly implied) filehandle + if ((defined $outfile) && (length $outfile)) { + if (($outfile eq '-') || ($outfile =~ /^>&?(?:STDOUT|1)$/i)) { + ## Not a filename, just a string implying STDOUT + $myData{_OUTFILE} = ""; + $out_fh = \*STDOUT; + } + elsif ($outfile =~ /^>&(STDERR|2)$/i) { + ## Not a filename, just a string implying STDERR + $myData{_OUTFILE} = ""; + $out_fh = \*STDERR; + } + elsif (ref $outfile) { + ## Must be a filehandle-ref (or else assume its a ref to an + ## object that supports the common IO write operations). + $myData{_OUTFILE} = ${$outfile}; + $out_fh = $outfile; + } + else { + ## We have a filename, open it for writing + $myData{_OUTFILE} = $outfile; + (-d $outfile) and croak "$outfile is a directory, not POD input!\n"; + open($out_fh, "> $outfile") or + croak "Can't open $outfile for writing: $!\n"; + $close_output = 1; + } + } + + ## Whew! That was a lot of work to set up reasonably/robust behavior + ## in the case of a non-filename for reading and writing. Now we just + ## have to parse the input and close the handles when we're finished. + $self->parse_from_filehandle(\%opts, $in_fh, $out_fh); + + $close_input and + close($in_fh) || croak "Can't close $infile after reading: $!\n"; + $close_output and + close($out_fh) || croak "Can't close $outfile after writing: $!\n"; +} + +############################################################################# + +=head1 ACCESSOR METHODS + +Clients of B should use the following methods to access +instance data fields: + +=cut + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->errorsub("method_name"); + $parser->errorsub(\&warn_user); + $parser->errorsub(sub { print STDERR, @_ }); + +Specifies the method or subroutine to use when printing error messages +about POD syntax. The supplied method/subroutine I return TRUE upon +successful printing of the message. If C is given, then the B +builtin is used to issue error messages (this is the default behavior). + + my $errorsub = $parser->errorsub() + my $errmsg = "This is an error message!\n" + (ref $errorsub) and &{$errorsub}($errmsg) + or (defined $errorsub) and $parser->$errorsub($errmsg) + or warn($errmsg); + +Returns a method name, or else a reference to the user-supplied subroutine +used to print error messages. Returns C if the B builtin +is used to issue error messages (this is the default behavior). + +=cut + +sub errorsub { + return (@_ > 1) ? ($_[0]->{_ERRORSUB} = $_[1]) : $_[0]->{_ERRORSUB}; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $boolean = $parser->cutting(); + +Returns the current C state: a boolean-valued scalar which +evaluates to true if text from the input file is currently being "cut" +(meaning it is I considered part of the POD document). + + $parser->cutting($boolean); + +Sets the current C state to the given value and returns the +result. + +=cut + +sub cutting { + return (@_ > 1) ? ($_[0]->{_CUTTING} = $_[1]) : $_[0]->{_CUTTING}; +} + +##--------------------------------------------------------------------------- + +##--------------------------------------------------------------------------- + +=head1 B + +When invoked with no additional arguments, B returns a hashtable +of all the current parsing options. + + ## See if we are parsing non-POD sections as well as POD ones + my %opts = $parser->parseopts(); + $opts{'-want_nonPODs}' and print "-want_nonPODs\n"; + +When invoked using a single string, B treats the string as the +name of a parse-option and returns its corresponding value if it exists +(returns C if it doesn't). + + ## Did we ask to see '=cut' paragraphs? + my $want_cut = $parser->parseopts('-process_cut_cmd'); + $want_cut and print "-process_cut_cmd\n"; + +When invoked with multiple arguments, B treats them as +key/value pairs and the specified parse-option names are set to the +given values. Any unspecified parse-options are unaffected. + + ## Set them back to the default + $parser->parseopts(-warnings => 0); + +When passed a single hash-ref, B uses that hash to completely +reset the existing parse-options, all previous parse-option values +are lost. + + ## Reset all options to default + $parser->parseopts( { } ); + +See L<"PARSING OPTIONS"> for more information on the name and meaning of each +parse-option currently recognized. + +=cut + +sub parseopts { + local *myData = shift; + local *myOpts = ($myData{_PARSEOPTS} ||= {}); + return %myOpts if (@_ == 0); + if (@_ == 1) { + local $_ = shift; + return ref($_) ? $myData{_PARSEOPTS} = $_ : $myOpts{$_}; + } + my @newOpts = (%myOpts, @_); + $myData{_PARSEOPTS} = { @newOpts }; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $fname = $parser->output_file(); + +Returns the name of the output file being written. + +=cut + +sub output_file { + return $_[0]->{_OUTFILE}; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $fhandle = $parser->output_handle(); + +Returns the output filehandle object. + +=cut + +sub output_handle { + return $_[0]->{_OUTPUT}; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $fname = $parser->input_file(); + +Returns the name of the input file being read. + +=cut + +sub input_file { + return $_[0]->{_INFILE}; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $fhandle = $parser->input_handle(); + +Returns the current input filehandle object. + +=cut + +sub input_handle { + return $_[0]->{_INPUT}; +} + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head1 B + + $listref = $parser->input_streams(); + +Returns a reference to an array which corresponds to the stack of all +the input streams that are currently in the middle of being parsed. + +While parsing an input stream, it is possible to invoke +B or B to parse a new input +stream and then return to parsing the previous input stream. Each input +stream to be parsed is pushed onto the end of this input stack +before any of its input is read. The input stream that is currently +being parsed is always at the end (or top) of the input stack. When an +input stream has been exhausted, it is popped off the end of the +input stack. + +Each element on this input stack is a reference to C +object. Please see L for more details. + +This method might be invoked when printing diagnostic messages, for example, +to obtain the name and line number of the all input files that are currently +being processed. + +=end __PRIVATE__ + +=cut + +sub input_streams { + return $_[0]->{_INPUT_STREAMS}; +} + +##--------------------------------------------------------------------------- + +=begin __PRIVATE__ + +=head1 B + + $hashref = $parser->top_stream(); + +Returns a reference to the hash-table that represents the element +that is currently at the top (end) of the input stream stack +(see L<"input_streams()">). The return value will be the C +if the input stack is empty. + +This method might be used when printing diagnostic messages, for example, +to obtain the name and line number of the current input file. + +=end __PRIVATE__ + +=cut + +sub top_stream { + return $_[0]->{_TOP_STREAM} || undef; +} + +############################################################################# + +=head1 PRIVATE METHODS AND DATA + +B makes use of several internal methods and data fields +which clients should not need to see or use. For the sake of avoiding +name collisions for client data and methods, these methods and fields +are briefly discussed here. Determined hackers may obtain further +information about them by reading the B source code. + +Private data fields are stored in the hash-object whose reference is +returned by the B constructor for this class. The names of all +private methods and data-fields used by B begin with a +prefix of "_" and match the regular expression C. + +=cut + +##--------------------------------------------------------------------------- + +=begin _PRIVATE_ + +=head1 B<_push_input_stream()> + + $hashref = $parser->_push_input_stream($in_fh,$out_fh); + +This method will push the given input stream on the input stack and +perform any necessary beginning-of-document or beginning-of-file +processing. The argument C<$in_fh> is the input stream filehandle to +push, and C<$out_fh> is the corresponding output filehandle to use (if +it is not given or is undefined, then the current output stream is used, +which defaults to standard output if it doesnt exist yet). + +The value returned will be reference to the hash-table that represents +the new top of the input stream stack. I that it is +possible for this method to use default values for the input and output +file handles. If this happens, you will need to look at the C +and C instance data members to determine their new values. + +=end _PRIVATE_ + +=cut + +sub _push_input_stream { + my ($self, $in_fh, $out_fh) = @_; + local *myData = $self; + + ## Initialize stuff for the entire document if this is *not* + ## an included file. + ## + ## NOTE: we need to be *very* careful when "defaulting" the output + ## filehandle. We only want to use a default value if this is the + ## beginning of the entire document (but *not* if this is an included + ## file). + unless (defined $myData{_TOP_STREAM}) { + $out_fh = \*STDOUT unless (defined $out_fh); + $myData{_CUTTING} = 1; ## current "cutting" state + $myData{_INPUT_STREAMS} = []; ## stack of all input streams + } + + ## Initialize input indicators + $myData{_OUTFILE} = '(unknown)' unless (defined $myData{_OUTFILE}); + $myData{_OUTPUT} = $out_fh if (defined $out_fh); + $in_fh = \*STDIN unless (defined $in_fh); + $myData{_INFILE} = '(unknown)' unless (defined $myData{_INFILE}); + $myData{_INPUT} = $in_fh; + my $input_top = $myData{_TOP_STREAM} + = new Pod::InputSource( + -name => $myData{_INFILE}, + -handle => $in_fh, + -was_cutting => $myData{_CUTTING} + ); + local *input_stack = $myData{_INPUT_STREAMS}; + push(@input_stack, $input_top); + + ## Perform beginning-of-document and/or beginning-of-input processing + $self->begin_pod() if (@input_stack == 1); + $self->begin_input(); + + return $input_top; +} + +##--------------------------------------------------------------------------- + +=begin _PRIVATE_ + +=head1 B<_pop_input_stream()> + + $hashref = $parser->_pop_input_stream(); + +This takes no arguments. It will perform any necessary end-of-file or +end-of-document processing and then pop the current input stream from +the top of the input stack. + +The value returned will be reference to the hash-table that represents +the new top of the input stream stack. + +=end _PRIVATE_ + +=cut + +sub _pop_input_stream { + my ($self) = @_; + local *myData = $self; + local *input_stack = $myData{_INPUT_STREAMS}; + + ## Perform end-of-input and/or end-of-document processing + $self->end_input() if (@input_stack > 0); + $self->end_pod() if (@input_stack == 1); + + ## Restore cutting state to whatever it was before we started + ## parsing this file. + my $old_top = pop(@input_stack); + $myData{_CUTTING} = $old_top->was_cutting(); + + ## Dont forget to reset the input indicators + my $input_top = undef; + if (@input_stack > 0) { + $input_top = $myData{_TOP_STREAM} = $input_stack[-1]; + $myData{_INFILE} = $input_top->name(); + $myData{_INPUT} = $input_top->handle(); + } else { + delete $myData{_TOP_STREAM}; + delete $myData{_INPUT_STREAMS}; + } + + return $input_top; +} + +############################################################################# + +=head1 TREE-BASED PARSING + +If straightforward stream-based parsing wont meet your needs (as is +likely the case for tasks such as translating PODs into structured +markup languages like HTML and XML) then you may need to take the +tree-based approach. Rather than doing everything in one pass and +calling the B method to expand sequences into text, it +may be desirable to instead create a parse-tree using the B +method to return a tree-like structure which may contain an ordered list +list of children (each of which may be a text-string, or a similar +tree-like structure). + +Pay special attention to L<"METHODS FOR PARSING AND PROCESSING"> and +to the objects described in L. The former describes +the gory details and parameters for how to customize and extend the +parsing behavior of B. B provides +several objects that may all be used interchangeably as parse-trees. The +most obvious one is the B object. It defines the basic +interface and functionality that all things trying to be a POD parse-tree +should do. A B is defined such that each "node" may be a +text-string, or a reference to another parse-tree. Each B +object and each B object also supports the basic +parse-tree interface. + +The B method takes a given paragraph of text, and +returns a parse-tree that contains one or more children, each of which +may be a text-string, or an InteriorSequence object. There are also +callback-options that may be passed to B to customize +the way it expands or transforms interior-sequences, as well as the +returned result. These callbacks can be used to create a parse-tree +with custom-made objects (which may or may not support the parse-tree +interface, depending on how you choose to do it). + +If you wish to turn an entire POD document into a parse-tree, that process +is fairly straightforward. The B method is the key to doing +this successfully. Every paragraph-callback (i.e. the polymorphic methods +for B, B, and B paragraphs) takes +a B object as an argument. Each paragraph object has a +B method that can be used to get or set a corresponding +parse-tree. So for each of those paragraph-callback methods, simply call +B with the options you desire, and then use the returned +parse-tree to assign to the given paragraph object. + +That gives you a parse-tree for each paragraph - so now all you need is +an ordered list of paragraphs. You can maintain that yourself as a data +element in the object/hash. The most straightforward way would be simply +to use an array-ref, with the desired set of custom "options" for each +invocation of B. Let's assume the desired option-set is +given by the hash C<%options>. Then we might do something like the +following: + + package MyPodParserTree; + + @ISA = qw( Pod::Parser ); + + ... + + sub begin_pod { + my $self = shift; + $self->{'-paragraphs'} = []; ## initialize paragraph list + } + + sub command { + my ($parser, $command, $paragraph, $line_num, $pod_para) = @_; + my $ptree = $parser->parse_text({%options}, $paragraph, ...); + $pod_para->parse_tree( $ptree ); + push @{ $self->{'-paragraphs'} }, $pod_para; + } + + sub verbatim { + my ($parser, $paragraph, $line_num, $pod_para) = @_; + push @{ $self->{'-paragraphs'} }, $pod_para; + } + + sub textblock { + my ($parser, $paragraph, $line_num, $pod_para) = @_; + my $ptree = $parser->parse_text({%options}, $paragraph, ...); + $pod_para->parse_tree( $ptree ); + push @{ $self->{'-paragraphs'} }, $pod_para; + } + + ... + + package main; + ... + my $parser = new MyPodParserTree(...); + $parser->parse_from_file(...); + my $paragraphs_ref = $parser->{'-paragraphs'}; + +Of course, in this module-author's humble opinion, I'd be more inclined to +use the existing B object than a simple array. That way +everything in it, paragraphs and sequences, all respond to the same core +interface for all parse-tree nodes. The result would look something like: + + package MyPodParserTree2; + + ... + + sub begin_pod { + my $self = shift; + $self->{'-ptree'} = new Pod::ParseTree; ## initialize parse-tree + } + + sub parse_tree { + ## convenience method to get/set the parse-tree for the entire POD + (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; + return $_[0]->{'-ptree'}; + } + + sub command { + my ($parser, $command, $paragraph, $line_num, $pod_para) = @_; + my $ptree = $parser->parse_text({<>}, $paragraph, ...); + $pod_para->parse_tree( $ptree ); + $parser->parse_tree()->append( $pod_para ); + } + + sub verbatim { + my ($parser, $paragraph, $line_num, $pod_para) = @_; + $parser->parse_tree()->append( $pod_para ); + } + + sub textblock { + my ($parser, $paragraph, $line_num, $pod_para) = @_; + my $ptree = $parser->parse_text({<>}, $paragraph, ...); + $pod_para->parse_tree( $ptree ); + $parser->parse_tree()->append( $pod_para ); + } + + ... + + package main; + ... + my $parser = new MyPodParserTree2(...); + $parser->parse_from_file(...); + my $ptree = $parser->parse_tree; + ... + +Now you have the entire POD document as one great big parse-tree. You +can even use the B<-expand_seq> option to B to insert +whole different kinds of objects. Just don't expect B +to know what to do with them after that. That will need to be in your +code. Or, alternatively, you can insert any object you like so long as +it conforms to the B interface. + +One could use this to create subclasses of B and +B for specific commands (or to create your own +custom node-types in the parse-tree) and add some kind of B +method to each custom node/subclass object in the tree. Then all you'd +need to do is recursively walk the tree in the desired order, processing +the children (most likely from left to right) by formatting them if +they are text-strings, or by calling their B method if they +are objects/references. + +=head1 SEE ALSO + +L, L + +B defines POD input objects corresponding to +command paragraphs, parse-trees, and interior-sequences. + +B is a subclass of B which provides the ability +to selectively include and/or exclude sections of a POD document from being +translated based upon the current heading, subheading, subsubheading, etc. + +=for __PRIVATE__ +B is a subclass of B which gives its users +the ability the employ I instead of, or in addition +to, overriding methods of the base class. + +=for __PRIVATE__ +B and B do not override any +methods nor do they define any new methods with the same name. Because +of this, they may I be used (in combination) as a base class of +the same subclass in order to combine their functionality without +causing any namespace clashes due to multiple inheritance. + +=head1 AUTHOR + +Brad Appleton Ebradapp@enteract.comE + +Based on code for B written by +Tom Christiansen Etchrist@mox.perl.comE + +=cut + +1; diff --git a/contrib/perl5/lib/Pod/Plainer.pm b/contrib/perl5/lib/Pod/Plainer.pm new file mode 100644 index 000000000000..373e8d090afc --- /dev/null +++ b/contrib/perl5/lib/Pod/Plainer.pm @@ -0,0 +1,69 @@ +package Pod::Plainer; +use strict; +use Pod::Parser; +our @ISA = qw(Pod::Parser); +our $VERSION = '0.01'; + +our %E = qw( < lt > gt ); + +sub escape_ltgt { + (undef, my $text) = @_; + $text =~ s/([<>])/E<$E{$1}>/g; + $text +} + +sub simple_delimiters { + (undef, my $seq) = @_; + $seq -> left_delimiter( '<' ); + $seq -> right_delimiter( '>' ); + $seq; +} + +sub textblock { + my($parser,$text,$line) = @_; + print {$parser->output_handle()} + $parser->parse_text( + { -expand_text => q(escape_ltgt), + -expand_seq => q(simple_delimiters) }, + $text, $line ) -> raw_text(); +} + +1; + +__END__ + +=head1 NAME + +Pod::Plainer - Perl extension for converting Pod to old style Pod. + +=head1 SYNOPSIS + + use Pod::Plainer; + + my $parser = Pod::Plainer -> new (); + $parser -> parse_from_filehandle(\*STDIN); + +=head1 DESCRIPTION + +Pod::Plainer uses Pod::Parser which takes Pod with the (new) +'CEE .. EE' constructs +and returns the old(er) style with just 'CEE'; +'<' and '>' are replaced by 'EEltE' and 'EEgtE'. + +This can be used to pre-process Pod before using tools which do not +recognise the new style Pods. + +=head2 EXPORT + +None by default. + +=head1 AUTHOR + +Robin Barker, rmb1@cise.npl.co.uk + +=head1 SEE ALSO + +See L. + +=cut + diff --git a/contrib/perl5/lib/Pod/Select.pm b/contrib/perl5/lib/Pod/Select.pm new file mode 100644 index 000000000000..5dd1595107e9 --- /dev/null +++ b/contrib/perl5/lib/Pod/Select.pm @@ -0,0 +1,745 @@ +############################################################################# +# Pod/Select.pm -- function to select portions of POD docs +# +# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. +# This file is part of "PodParser". PodParser is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::Select; + +use vars qw($VERSION); +$VERSION = 1.12; ## Current version of this package +require 5.005; ## requires this Perl version or later + +############################################################################# + +=head1 NAME + +Pod::Select, podselect() - extract selected sections of POD from input + +=head1 SYNOPSIS + + use Pod::Select; + + ## Select all the POD sections for each file in @filelist + ## and print the result on standard output. + podselect(@filelist); + + ## Same as above, but write to tmp.out + podselect({-output => "tmp.out"}, @filelist): + + ## Select from the given filelist, only those POD sections that are + ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS. + podselect({-sections => ["NAME|SYNOPSIS", "OPTIONS"]}, @filelist): + + ## Select the "DESCRIPTION" section of the PODs from STDIN and write + ## the result to STDERR. + podselect({-output => ">&STDERR", -sections => ["DESCRIPTION"]}, \*STDIN); + +or + + use Pod::Select; + + ## Create a parser object for selecting POD sections from the input + $parser = new Pod::Select(); + + ## Select all the POD sections for each file in @filelist + ## and print the result to tmp.out. + $parser->parse_from_file("<&STDIN", "tmp.out"); + + ## Select from the given filelist, only those POD sections that are + ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS. + $parser->select("NAME|SYNOPSIS", "OPTIONS"); + for (@filelist) { $parser->parse_from_file($_); } + + ## Select the "DESCRIPTION" and "SEE ALSO" sections of the PODs from + ## STDIN and write the result to STDERR. + $parser->select("DESCRIPTION"); + $parser->add_selection("SEE ALSO"); + $parser->parse_from_filehandle(\*STDIN, \*STDERR); + +=head1 REQUIRES + +perl5.005, Pod::Parser, Exporter, Carp + +=head1 EXPORTS + +podselect() + +=head1 DESCRIPTION + +B is a function which will extract specified sections of +pod documentation from an input stream. This ability is provided by the +B module which is a subclass of B. +B provides a method named B to specify the set of +POD sections to select for processing/printing. B merely +creates a B object and then invokes the B +followed by B. + +=head1 SECTION SPECIFICATIONS + +B and B may be given one or more +"section specifications" to restrict the text processed to only the +desired set of sections and their corresponding subsections. A section +specification is a string containing one or more Perl-style regular +expressions separated by forward slashes ("/"). If you need to use a +forward slash literally within a section title you can escape it with a +backslash ("\/"). + +The formal syntax of a section specification is: + +=over 4 + +=item + +I/I/... + +=back + +Any omitted or empty regular expressions will default to ".*". +Please note that each regular expression given is implicitly +anchored by adding "^" and "$" to the beginning and end. Also, if a +given regular expression starts with a "!" character, then the +expression is I (so C would match anything I +C). + +Some example section specifications follow. + +=over 4 + +=item +Match the C and C sections and all of their subsections: + +C + +=item +Match only the C and C subsections of the C +section: + +C + +=item +Match the C subsection of I sections: + +C + +=item +Match all subsections of C I for C: + +C + +=item +Match the C section but do I match any of its subsections: + +C + +=item +Match all top level sections but none of their subsections: + +C + +=back + +=begin _NOT_IMPLEMENTED_ + +=head1 RANGE SPECIFICATIONS + +B and B may be given one or more +"range specifications" to restrict the text processed to only the +desired ranges of paragraphs in the desired set of sections. A range +specification is a string containing a single Perl-style regular +expression (a regex), or else two Perl-style regular expressions +(regexs) separated by a ".." (Perl's "range" operator is ".."). +The regexs in a range specification are delimited by forward slashes +("/"). If you need to use a forward slash literally within a regex you +can escape it with a backslash ("\/"). + +The formal syntax of a range specification is: + +=over 4 + +=item + +/I/[../I/] + +=back + +Where each the item inside square brackets (the ".." followed by the +end-range-regex) is optional. Each "range-regex" is of the form: + + =cmd-expr text-expr + +Where I is intended to match the name of one or more POD +commands, and I is intended to match the paragraph text for +the command. If a range-regex is supposed to match a POD command, then +the first character of the regex (the one after the initial '/') +absolutely I be an single '=' character; it may not be anything +else (not even a regex meta-character) if it is supposed to match +against the name of a POD command. + +If no I<=cmd-expr> is given then the text-expr will be matched against +plain textblocks unless it is preceded by a space, in which case it is +matched against verbatim text-blocks. If no I is given then +only the command-portion of the paragraph is matched against. + +Note that these two expressions are each implicitly anchored. This +means that when matching against the command-name, there will be an +implicit '^' and '$' around the given I<=cmd-expr>; and when matching +against the paragraph text there will be an implicit '\A' and '\Z' +around the given I. + +Unlike with section-specs, the '!' character does I have any special +meaning (negation or otherwise) at the beginning of a range-spec! + +Some example range specifications follow. + +=over 4 + +=item +Match all C<=for html> paragraphs: + +C + +=item +Match all paragraphs between C<=begin html> and C<=end html> +(note that this will I work correctly if such sections +are nested): + +C + +=item +Match all paragraphs between the given C<=item> name until the end of the +current section: + +C + +=item +Match all paragraphs between the given C<=item> until the next item, or +until the end of the itemized list (note that this will I work as +desired if the item contains an itemized list nested within it): + +C + +=back + +=end _NOT_IMPLEMENTED_ + +=cut + +############################################################################# + +use strict; +#use diagnostics; +use Carp; +use Pod::Parser 1.04; +use vars qw(@ISA @EXPORT $MAX_HEADING_LEVEL); + +@ISA = qw(Pod::Parser); +@EXPORT = qw(&podselect); + +## Maximum number of heading levels supported for '=headN' directives +*MAX_HEADING_LEVEL = \3; + +############################################################################# + +=head1 OBJECT METHODS + +The following methods are provided in this module. Each one takes a +reference to the object itself as an implicit first parameter. + +=cut + +##--------------------------------------------------------------------------- + +## =begin _PRIVATE_ +## +## =head1 B<_init_headings()> +## +## Initialize the current set of active section headings. +## +## =cut +## +## =end _PRIVATE_ + +use vars qw(%myData @section_headings); + +sub _init_headings { + my $self = shift; + local *myData = $self; + + ## Initialize current section heading titles if necessary + unless (defined $myData{_SECTION_HEADINGS}) { + local *section_headings = $myData{_SECTION_HEADINGS} = []; + for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { + $section_headings[$i] = ''; + } + } +} + +##--------------------------------------------------------------------------- + +=head1 B + + ($head1, $head2, $head3, ...) = $parser->curr_headings(); + $head1 = $parser->curr_headings(1); + +This method returns a list of the currently active section headings and +subheadings in the document being parsed. The list of headings returned +corresponds to the most recently parsed paragraph of the input. + +If an argument is given, it must correspond to the desired section +heading number, in which case only the specified section heading is +returned. If there is no current section heading at the specified +level, then C is returned. + +=cut + +sub curr_headings { + my $self = shift; + $self->_init_headings() unless (defined $self->{_SECTION_HEADINGS}); + my @headings = @{ $self->{_SECTION_HEADINGS} }; + return (@_ > 0 and $_[0] =~ /^\d+$/) ? $headings[$_[0] - 1] : @headings; +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->select($section_spec1,$section_spec2,...); + +This method is used to select the particular sections and subsections of +POD documentation that are to be printed and/or processed. The existing +set of selected sections is I with the given set of sections. +See B for adding to the current set of selected +sections. + +Each of the C<$section_spec> arguments should be a section specification +as described in L<"SECTION SPECIFICATIONS">. The section specifications +are parsed by this method and the resulting regular expressions are +stored in the invoking object. + +If no C<$section_spec> arguments are given, then the existing set of +selected sections is cleared out (which means C sections will be +processed). + +This method should I normally be overridden by subclasses. + +=cut + +use vars qw(@selected_sections); + +sub select { + my $self = shift; + my @sections = @_; + local *myData = $self; + local $_; + +### NEED TO DISCERN A SECTION-SPEC FROM A RANGE-SPEC (look for m{^/.+/$}?) + + ##--------------------------------------------------------------------- + ## The following is a blatant hack for backward compatibility, and for + ## implementing add_selection(). If the *first* *argument* is the + ## string "+", then the remaining section specifications are *added* + ## to the current set of selections; otherwise the given section + ## specifications will *replace* the current set of selections. + ## + ## This should probably be fixed someday, but for the present time, + ## it seems incredibly unlikely that "+" would ever correspond to + ## a legitimate section heading + ##--------------------------------------------------------------------- + my $add = ($sections[0] eq "+") ? shift(@sections) : ""; + + ## Reset the set of sections to use + unless (@sections > 0) { + delete $myData{_SELECTED_SECTIONS} unless ($add); + return; + } + $myData{_SELECTED_SECTIONS} = [] + unless ($add && exists $myData{_SELECTED_SECTIONS}); + local *selected_sections = $myData{_SELECTED_SECTIONS}; + + ## Compile each spec + my $spec; + for $spec (@sections) { + if ( defined($_ = &_compile_section_spec($spec)) ) { + ## Store them in our sections array + push(@selected_sections, $_); + } + else { + carp "Ignoring section spec \"$spec\"!\n"; + } + } +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->add_selection($section_spec1,$section_spec2,...); + +This method is used to add to the currently selected sections and +subsections of POD documentation that are to be printed and/or +processed. See for replacing the currently selected sections. + +Each of the C<$section_spec> arguments should be a section specification +as described in L<"SECTION SPECIFICATIONS">. The section specifications +are parsed by this method and the resulting regular expressions are +stored in the invoking object. + +This method should I normally be overridden by subclasses. + +=cut + +sub add_selection { + my $self = shift; + $self->select("+", @_); +} + +##--------------------------------------------------------------------------- + +=head1 B + + $parser->clear_selections(); + +This method takes no arguments, it has the exact same effect as invoking + with no arguments. + +=cut + +sub clear_selections { + my $self = shift; + $self->select(); +} + +##--------------------------------------------------------------------------- + +=head1 B + + $boolean = $parser->match_section($heading1,$heading2,...); + +Returns a value of true if the given section and subsection heading +titles match any of the currently selected section specifications in +effect from prior calls to B and B (or if +there are no explictly selected/deselected sections). + +The arguments C<$heading1>, C<$heading2>, etc. are the heading titles of +the corresponding sections, subsections, etc. to try and match. If +C<$headingN> is omitted then it defaults to the current corresponding +section heading title in the input. + +This method should I normally be overridden by subclasses. + +=cut + +sub match_section { + my $self = shift; + my (@headings) = @_; + local *myData = $self; + + ## Return true if no restrictions were explicitly specified + my $selections = (exists $myData{_SELECTED_SECTIONS}) + ? $myData{_SELECTED_SECTIONS} : undef; + return 1 unless ((defined $selections) && (@{$selections} > 0)); + + ## Default any unspecified sections to the current one + my @current_headings = $self->curr_headings(); + for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { + (defined $headings[$i]) or $headings[$i] = $current_headings[$i]; + } + + ## Look for a match against the specified section expressions + my ($section_spec, $regex, $negated, $match); + for $section_spec ( @{$selections} ) { + ##------------------------------------------------------ + ## Each portion of this spec must match in order for + ## the spec to be matched. So we will start with a + ## match-value of 'true' and logically 'and' it with + ## the results of matching a given element of the spec. + ##------------------------------------------------------ + $match = 1; + for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { + $regex = $section_spec->[$i]; + $negated = ($regex =~ s/^\!//); + $match &= ($negated ? ($headings[$i] !~ /${regex}/) + : ($headings[$i] =~ /${regex}/)); + last unless ($match); + } + return 1 if ($match); + } + return 0; ## no match +} + +##--------------------------------------------------------------------------- + +=head1 B + + $boolean = $parser->is_selected($paragraph); + +This method is used to determine if the block of text given in +C<$paragraph> falls within the currently selected set of POD sections +and subsections to be printed or processed. This method is also +responsible for keeping track of the current input section and +subsections. It is assumed that C<$paragraph> is the most recently read +(but not yet processed) input paragraph. + +The value returned will be true if the C<$paragraph> and the rest of the +text in the same section as C<$paragraph> should be selected (included) +for processing; otherwise a false value is returned. + +=cut + +sub is_selected { + my ($self, $paragraph) = @_; + local $_; + local *myData = $self; + + $self->_init_headings() unless (defined $myData{_SECTION_HEADINGS}); + + ## Keep track of current sections levels and headings + $_ = $paragraph; + if (/^=((?:sub)*)(?:head(?:ing)?|sec(?:tion)?)(\d*)\s+(.*)\s*$/) { + ## This is a section heading command + my ($level, $heading) = ($2, $3); + $level = 1 + (length($1) / 3) if ((! length $level) || (length $1)); + ## Reset the current section heading at this level + $myData{_SECTION_HEADINGS}->[$level - 1] = $heading; + ## Reset subsection headings of this one to empty + for (my $i = $level; $i < $MAX_HEADING_LEVEL; ++$i) { + $myData{_SECTION_HEADINGS}->[$i] = ''; + } + } + + return $self->match_section(); +} + +############################################################################# + +=head1 EXPORTED FUNCTIONS + +The following functions are exported by this module. Please note that +these are functions (not methods) and therefore C take an +implicit first argument. + +=cut + +##--------------------------------------------------------------------------- + +=head1 B + + podselect(\%options,@filelist); + +B will print the raw (untranslated) POD paragraphs of all +POD sections in the given input files specified by C<@filelist> +according to the given options. + +If any argument to B is a reference to a hash +(associative array) then the values with the following keys are +processed as follows: + +=over 4 + +=item B<-output> + +A string corresponding to the desired output file (or ">&STDOUT" +or ">&STDERR"). The default is to use standard output. + +=item B<-sections> + +A reference to an array of sections specifications (as described in +L<"SECTION SPECIFICATIONS">) which indicate the desired set of POD +sections and subsections to be selected from input. If no section +specifications are given, then all sections of the PODs are used. + +=begin _NOT_IMPLEMENTED_ + +=item B<-ranges> + +A reference to an array of range specifications (as described in +L<"RANGE SPECIFICATIONS">) which indicate the desired range of POD +paragraphs to be selected from the desired input sections. If no range +specifications are given, then all paragraphs of the desired sections +are used. + +=end _NOT_IMPLEMENTED_ + +=back + +All other arguments should correspond to the names of input files +containing POD sections. A file name of "-" or "<&STDIN" will +be interpeted to mean standard input (which is the default if no +filenames are given). + +=cut + +sub podselect { + my(@argv) = @_; + my %defaults = (); + my $pod_parser = new Pod::Select(%defaults); + my $num_inputs = 0; + my $output = ">&STDOUT"; + my %opts = (); + local $_; + for (@argv) { + if (ref($_)) { + next unless (ref($_) eq 'HASH'); + %opts = (%defaults, %{$_}); + + ##------------------------------------------------------------- + ## Need this for backward compatibility since we formerly used + ## options that were all uppercase words rather than ones that + ## looked like Unix command-line options. + ## to be uppercase keywords) + ##------------------------------------------------------------- + %opts = map { + my ($key, $val) = (lc $_, $opts{$_}); + $key =~ s/^(?=\w)/-/; + $key =~ /^-se[cl]/ and $key = '-sections'; + #! $key eq '-range' and $key .= 's'; + ($key => $val); + } (keys %opts); + + ## Process the options + (exists $opts{'-output'}) and $output = $opts{'-output'}; + + ## Select the desired sections + $pod_parser->select(@{ $opts{'-sections'} }) + if ( (defined $opts{'-sections'}) + && ((ref $opts{'-sections'}) eq 'ARRAY') ); + + #! ## Select the desired paragraph ranges + #! $pod_parser->select(@{ $opts{'-ranges'} }) + #! if ( (defined $opts{'-ranges'}) + #! && ((ref $opts{'-ranges'}) eq 'ARRAY') ); + } + else { + $pod_parser->parse_from_file($_, $output); + ++$num_inputs; + } + } + $pod_parser->parse_from_file("-") unless ($num_inputs > 0); +} + +############################################################################# + +=head1 PRIVATE METHODS AND DATA + +B makes uses a number of internal methods and data fields +which clients should not need to see or use. For the sake of avoiding +name collisions with client data and methods, these methods and fields +are briefly discussed here. Determined hackers may obtain further +information about them by reading the B source code. + +Private data fields are stored in the hash-object whose reference is +returned by the B constructor for this class. The names of all +private methods and data-fields used by B begin with a +prefix of "_" and match the regular expression C. + +=cut + +##--------------------------------------------------------------------------- + +=begin _PRIVATE_ + +=head1 B<_compile_section_spec()> + + $listref = $parser->_compile_section_spec($section_spec); + +This function (note it is a function and I a method) takes a +section specification (as described in L<"SECTION SPECIFICATIONS">) +given in C<$section_sepc>, and compiles it into a list of regular +expressions. If C<$section_spec> has no syntax errors, then a reference +to the list (array) of corresponding regular expressions is returned; +otherwise C is returned and an error message is printed (using +B) for each invalid regex. + +=end _PRIVATE_ + +=cut + +sub _compile_section_spec { + my ($section_spec) = @_; + my (@regexs, $negated); + + ## Compile the spec into a list of regexs + local $_ = $section_spec; + s|\\\\|\001|g; ## handle escaped backward slashes + s|\\/|\002|g; ## handle escaped forward slashes + + ## Parse the regexs for the heading titles + @regexs = split('/', $_, $MAX_HEADING_LEVEL); + + ## Set default regex for ommitted levels + for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { + $regexs[$i] = '.*' unless ((defined $regexs[$i]) + && (length $regexs[$i])); + } + ## Modify the regexs as needed and validate their syntax + my $bad_regexs = 0; + for (@regexs) { + $_ .= '.+' if ($_ eq '!'); + s|\001|\\\\|g; ## restore escaped backward slashes + s|\002|\\/|g; ## restore escaped forward slashes + $negated = s/^\!//; ## check for negation + eval "/$_/"; ## check regex syntax + if ($@) { + ++$bad_regexs; + carp "Bad regular expression /$_/ in \"$section_spec\": $@\n"; + } + else { + ## Add the forward and rear anchors (and put the negator back) + $_ = '^' . $_ unless (/^\^/); + $_ = $_ . '$' unless (/\$$/); + $_ = '!' . $_ if ($negated); + } + } + return (! $bad_regexs) ? [ @regexs ] : undef; +} + +##--------------------------------------------------------------------------- + +=begin _PRIVATE_ + +=head2 $self->{_SECTION_HEADINGS} + +A reference to an array of the current section heading titles for each +heading level (note that the first heading level title is at index 0). + +=end _PRIVATE_ + +=cut + +##--------------------------------------------------------------------------- + +=begin _PRIVATE_ + +=head2 $self->{_SELECTED_SECTIONS} + +A reference to an array of references to arrays. Each subarray is a list +of anchored regular expressions (preceded by a "!" if the expression is to +be negated). The index of the expression in the subarray should correspond +to the index of the heading title in C<$self-E{_SECTION_HEADINGS}> +that it is to be matched against. + +=end _PRIVATE_ + +=cut + +############################################################################# + +=head1 SEE ALSO + +L + +=head1 AUTHOR + +Brad Appleton Ebradapp@enteract.comE + +Based on code for B written by +Tom Christiansen Etchrist@mox.perl.comE + +=cut + +1; + diff --git a/contrib/perl5/lib/Pod/Text.pm b/contrib/perl5/lib/Pod/Text.pm index 549bab5a8e2e..d93e5a4b7105 100644 --- a/contrib/perl5/lib/Pod/Text.pm +++ b/contrib/perl5/lib/Pod/Text.pm @@ -1,551 +1,743 @@ +# Pod::Text -- Convert POD data to formatted ASCII text. +# $Id: Text.pm,v 2.3 1999/10/07 09:41:57 eagle Exp $ +# +# Copyright 1999 by Russ Allbery +# +# This program is free software; you can redistribute it and/or modify it +# under the same terms as Perl itself. +# +# This module is intended to be a replacement for Pod::Text, and attempts to +# match its output except for some specific circumstances where other +# decisions seemed to produce better output. It uses Pod::Parser and is +# designed to be very easy to subclass. + +############################################################################ +# Modules and declarations +############################################################################ + package Pod::Text; +require 5.004; + +use Carp qw(carp croak); +use Exporter (); +use Pod::Select (); + +use strict; +use vars qw(@ISA @EXPORT %ESCAPES $VERSION); + +# We inherit from Pod::Select instead of Pod::Parser so that we can be used +# by Pod::Usage. +@ISA = qw(Pod::Select Exporter); + +# We have to export pod2text for backward compatibility. +@EXPORT = qw(pod2text); + +($VERSION = (split (' ', q$Revision: 2.3 $ ))[1]) =~ s/\.(\d)$/.0$1/; + + +############################################################################ +# Table of supported E<> escapes +############################################################################ + +# This table is taken near verbatim from Pod::PlainText in Pod::Parser, +# which got it near verbatim from the original Pod::Text. It is therefore +# credited to Tom Christiansen, and I'm glad I didn't have to write it. :) +# "iexcl" to "divide" added by Tim Jenness +%ESCAPES = ( + 'amp' => '&', # ampersand + 'lt' => '<', # left chevron, less-than + 'gt' => '>', # right chevron, greater-than + 'quot' => '"', # double quote + + "Aacute" => "\xC1", # capital A, acute accent + "aacute" => "\xE1", # small a, acute accent + "Acirc" => "\xC2", # capital A, circumflex accent + "acirc" => "\xE2", # small a, circumflex accent + "AElig" => "\xC6", # capital AE diphthong (ligature) + "aelig" => "\xE6", # small ae diphthong (ligature) + "Agrave" => "\xC0", # capital A, grave accent + "agrave" => "\xE0", # small a, grave accent + "Aring" => "\xC5", # capital A, ring + "aring" => "\xE5", # small a, ring + "Atilde" => "\xC3", # capital A, tilde + "atilde" => "\xE3", # small a, tilde + "Auml" => "\xC4", # capital A, dieresis or umlaut mark + "auml" => "\xE4", # small a, dieresis or umlaut mark + "Ccedil" => "\xC7", # capital C, cedilla + "ccedil" => "\xE7", # small c, cedilla + "Eacute" => "\xC9", # capital E, acute accent + "eacute" => "\xE9", # small e, acute accent + "Ecirc" => "\xCA", # capital E, circumflex accent + "ecirc" => "\xEA", # small e, circumflex accent + "Egrave" => "\xC8", # capital E, grave accent + "egrave" => "\xE8", # small e, grave accent + "ETH" => "\xD0", # capital Eth, Icelandic + "eth" => "\xF0", # small eth, Icelandic + "Euml" => "\xCB", # capital E, dieresis or umlaut mark + "euml" => "\xEB", # small e, dieresis or umlaut mark + "Iacute" => "\xCD", # capital I, acute accent + "iacute" => "\xED", # small i, acute accent + "Icirc" => "\xCE", # capital I, circumflex accent + "icirc" => "\xEE", # small i, circumflex accent + "Igrave" => "\xCD", # capital I, grave accent + "igrave" => "\xED", # small i, grave accent + "Iuml" => "\xCF", # capital I, dieresis or umlaut mark + "iuml" => "\xEF", # small i, dieresis or umlaut mark + "Ntilde" => "\xD1", # capital N, tilde + "ntilde" => "\xF1", # small n, tilde + "Oacute" => "\xD3", # capital O, acute accent + "oacute" => "\xF3", # small o, acute accent + "Ocirc" => "\xD4", # capital O, circumflex accent + "ocirc" => "\xF4", # small o, circumflex accent + "Ograve" => "\xD2", # capital O, grave accent + "ograve" => "\xF2", # small o, grave accent + "Oslash" => "\xD8", # capital O, slash + "oslash" => "\xF8", # small o, slash + "Otilde" => "\xD5", # capital O, tilde + "otilde" => "\xF5", # small o, tilde + "Ouml" => "\xD6", # capital O, dieresis or umlaut mark + "ouml" => "\xF6", # small o, dieresis or umlaut mark + "szlig" => "\xDF", # small sharp s, German (sz ligature) + "THORN" => "\xDE", # capital THORN, Icelandic + "thorn" => "\xFE", # small thorn, Icelandic + "Uacute" => "\xDA", # capital U, acute accent + "uacute" => "\xFA", # small u, acute accent + "Ucirc" => "\xDB", # capital U, circumflex accent + "ucirc" => "\xFB", # small u, circumflex accent + "Ugrave" => "\xD9", # capital U, grave accent + "ugrave" => "\xF9", # small u, grave accent + "Uuml" => "\xDC", # capital U, dieresis or umlaut mark + "uuml" => "\xFC", # small u, dieresis or umlaut mark + "Yacute" => "\xDD", # capital Y, acute accent + "yacute" => "\xFD", # small y, acute accent + "yuml" => "\xFF", # small y, dieresis or umlaut mark + + "lchevron" => "\xAB", # left chevron (double less than) laquo + "rchevron" => "\xBB", # right chevron (double greater than) raquo + + "iexcl" => "\xA1", # inverted exclamation mark + "cent" => "\xA2", # cent sign + "pound" => "\xA3", # (UK) pound sign + "curren" => "\xA4", # currency sign + "yen" => "\xA5", # yen sign + "brvbar" => "\xA6", # broken vertical bar + "sect" => "\xA7", # section sign + "uml" => "\xA8", # diaresis + "copy" => "\xA9", # Copyright symbol + "ordf" => "\xAA", # feminine ordinal indicator + "laquo" => "\xAB", # left pointing double angle quotation mark + "not" => "\xAC", # not sign + "shy" => "\xAD", # soft hyphen + "reg" => "\xAE", # registered trademark + "macr" => "\xAF", # macron, overline + "deg" => "\xB0", # degree sign + "plusmn" => "\xB1", # plus-minus sign + "sup2" => "\xB2", # superscript 2 + "sup3" => "\xB3", # superscript 3 + "acute" => "\xB4", # acute accent + "micro" => "\xB5", # micro sign + "para" => "\xB6", # pilcrow sign = paragraph sign + "middot" => "\xB7", # middle dot = Georgian comma + "cedil" => "\xB8", # cedilla + "sup1" => "\xB9", # superscript 1 + "ordm" => "\xBA", # masculine ordinal indicator + "raquo" => "\xBB", # right pointing double angle quotation mark + "frac14" => "\xBC", # vulgar fraction one quarter + "frac12" => "\xBD", # vulgar fraction one half + "frac34" => "\xBE", # vulgar fraction three quarters + "iquest" => "\xBF", # inverted question mark + "times" => "\xD7", # multiplication sign + "divide" => "\xF7", # division sign +); + + +############################################################################ +# Initialization +############################################################################ + +# Initialize the object. Must be sure to call our parent initializer. +sub initialize { + my $self = shift; + + $$self{alt} = 0 unless defined $$self{alt}; + $$self{indent} = 4 unless defined $$self{indent}; + $$self{loose} = 0 unless defined $$self{loose}; + $$self{sentence} = 0 unless defined $$self{sentence}; + $$self{width} = 76 unless defined $$self{width}; + + $$self{INDENTS} = []; # Stack of indentations. + $$self{MARGIN} = $$self{indent}; # Current left margin in spaces. + + $self->SUPER::initialize; +} + + +############################################################################ +# Core overrides +############################################################################ + +# Called for each command paragraph. Gets the command, the associated +# paragraph, the line number, and a Pod::Paragraph object. Just dispatches +# the command to a method named the same as the command. =cut is handled +# internally by Pod::Parser. +sub command { + my $self = shift; + my $command = shift; + return if $command eq 'pod'; + return if ($$self{EXCLUDE} && $command ne 'end'); + $self->item ("\n") if defined $$self{ITEM}; + $command = 'cmd_' . $command; + $self->$command (@_); +} + +# Called for a verbatim paragraph. Gets the paragraph, the line number, and +# a Pod::Paragraph object. Just output it verbatim, but with tabs converted +# to spaces. +sub verbatim { + my $self = shift; + return if $$self{EXCLUDE}; + $self->item if defined $$self{ITEM}; + local $_ = shift; + return if /^\s*$/; + s/^(\s*\S+)/(' ' x $$self{MARGIN}) . $1/gme; + $self->output ($_); +} + +# Called for a regular text block. Gets the paragraph, the line number, and +# a Pod::Paragraph object. Perform interpolation and output the results. +sub textblock { + my $self = shift; + return if $$self{EXCLUDE}; + $self->output ($_[0]), return if $$self{VERBATIM}; + local $_ = shift; + my $line = shift; + + # Perform a little magic to collapse multiple L<> references. This is + # here mostly for backwards-compatibility. We'll just rewrite the whole + # thing into actual text at this part, bypassing the whole internal + # sequence parsing thing. + s{ + ( + L< # A link of the form L. + / + ( + [:\w]+ # The item has to be a simple word... + (\(\))? # ...or simple function. + ) + > + ( + ,?\s+(and\s+)? # Allow lots of them, conjuncted. + L< + / + ( + [:\w]+ + (\(\))? + ) + > + )+ + ) + } { + local $_ = $1; + s%L]+)>%$1%g; + my @items = split /(?:,?\s+(?:and\s+)?)/; + my $string = "the "; + my $i; + for ($i = 0; $i < @items; $i++) { + $string .= $items[$i]; + $string .= ", " if @items > 2 && $i != $#items; + $string .= " and " if ($i == $#items - 1); + } + $string .= " entries elsewhere in this document"; + $string; + }gex; + + # Now actually interpolate and output the paragraph. + $_ = $self->interpolate ($_, $line); + s/\s+$/\n/; + if (defined $$self{ITEM}) { + $self->item ($_ . "\n"); + } else { + $self->output ($self->reformat ($_ . "\n")); + } +} + +# Called for an interior sequence. Gets the command, argument, and a +# Pod::InteriorSequence object and is expected to return the resulting text. +# Calls code, bold, italic, file, and link to handle those types of +# sequences, and handles S<>, E<>, X<>, and Z<> directly. +sub interior_sequence { + my $self = shift; + my $command = shift; + local $_ = shift; + return '' if ($command eq 'X' || $command eq 'Z'); + + # Expand escapes into the actual character now, carping if invalid. + if ($command eq 'E') { + if (/^\d+$/) { + return chr; + } else { + return $ESCAPES{$_} if defined $ESCAPES{$_}; + carp "Unknown escape: E<$_>"; + return "E<$_>"; + } + } + + # For all the other sequences, empty content produces no output. + return if $_ eq ''; + + # For S<>, compress all internal whitespace and then map spaces to \01. + # When we output the text, we'll map this back. + if ($command eq 'S') { + s/\s{2,}/ /g; + tr/ /\01/; + return $_; + } + + # Anything else needs to get dispatched to another method. + if ($command eq 'B') { return $self->seq_b ($_) } + elsif ($command eq 'C') { return $self->seq_c ($_) } + elsif ($command eq 'F') { return $self->seq_f ($_) } + elsif ($command eq 'I') { return $self->seq_i ($_) } + elsif ($command eq 'L') { return $self->seq_l ($_) } + else { carp "Unknown sequence $command<$_>" } +} + +# Called for each paragraph that's actually part of the POD. We take +# advantage of this opportunity to untabify the input. +sub preprocess_paragraph { + my $self = shift; + local $_ = shift; + 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me; + $_; +} + + +############################################################################ +# Command paragraphs +############################################################################ + +# All command paragraphs take the paragraph and the line number. + +# First level heading. +sub cmd_head1 { + my $self = shift; + local $_ = shift; + s/\s+$//; + $_ = $self->interpolate ($_, shift); + if ($$self{alt}) { + $self->output ("\n==== $_ ====\n\n"); + } else { + $_ .= "\n" if $$self{loose}; + $self->output ($_ . "\n"); + } +} + +# Second level heading. +sub cmd_head2 { + my $self = shift; + local $_ = shift; + s/\s+$//; + $_ = $self->interpolate ($_, shift); + if ($$self{alt}) { + $self->output ("\n== $_ ==\n\n"); + } else { + $self->output (' ' x ($$self{indent} / 2) . $_ . "\n\n"); + } +} + +# Start a list. +sub cmd_over { + my $self = shift; + local $_ = shift; + unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} } + push (@{ $$self{INDENTS} }, $$self{MARGIN}); + $$self{MARGIN} += ($_ + 0); +} + +# End a list. +sub cmd_back { + my $self = shift; + $$self{MARGIN} = pop @{ $$self{INDENTS} }; + unless (defined $$self{MARGIN}) { + carp "Unmatched =back"; + $$self{MARGIN} = $$self{indent}; + } +} + +# An individual list item. +sub cmd_item { + my $self = shift; + if (defined $$self{ITEM}) { $self->item } + local $_ = shift; + s/\s+$//; + $$self{ITEM} = $self->interpolate ($_); +} + +# Begin a block for a particular translator. Setting VERBATIM triggers +# special handling in textblock(). +sub cmd_begin { + my $self = shift; + local $_ = shift; + my ($kind) = /^(\S+)/ or return; + if ($kind eq 'text') { + $$self{VERBATIM} = 1; + } else { + $$self{EXCLUDE} = 1; + } +} + +# End a block for a particular translator. We assume that all =begin/=end +# pairs are properly closed. +sub cmd_end { + my $self = shift; + $$self{EXCLUDE} = 0; + $$self{VERBATIM} = 0; +} + +# One paragraph for a particular translator. Ignore it unless it's intended +# for text, in which case we treat it as a verbatim text block. +sub cmd_for { + my $self = shift; + local $_ = shift; + my $line = shift; + return unless s/^text\b[ \t]*\n?//; + $self->verbatim ($_, $line); +} + + +############################################################################ +# Interior sequences +############################################################################ + +# The simple formatting ones. These are here mostly so that subclasses can +# override them and do more complicated things. +sub seq_b { return $_[0]{alt} ? "``$_[1]''" : $_[1] } +sub seq_c { return $_[0]{alt} ? "``$_[1]''" : "`$_[1]'" } +sub seq_f { return $_[0]{alt} ? "\"$_[1]\"" : $_[1] } +sub seq_i { return '*' . $_[1] . '*' } + +# The complicated one. Handle links. Since this is plain text, we can't +# actually make any real links, so this is all to figure out what text we +# print out. +sub seq_l { + my $self = shift; + local $_ = shift; + + # Smash whitespace in case we were split across multiple lines. + s/\s+/ /g; + + # If we were given any explicit text, just output it. + if (/^([^|]+)\|/) { return $1 } + + # Okay, leading and trailing whitespace isn't important; get rid of it. + s/^\s+//; + s/\s+$//; + + # Default to using the whole content of the link entry as a section + # name. Note that L forces a manpage interpretation, as does + # something looking like L. The latter is an + # enhancement over the original Pod::Text. + my ($manpage, $section) = ('', $_); + if (/^"\s*(.*?)\s*"$/) { + $section = '"' . $1 . '"'; + } elsif (m/^[-:.\w]+(?:\(\S+\))?$/) { + ($manpage, $section) = ($_, ''); + } elsif (m%/%) { + ($manpage, $section) = split (/\s*\/\s*/, $_, 2); + } + + # Now build the actual output text. + my $text = ''; + if (!length $section) { + $text = "the $manpage manpage" if length $manpage; + } elsif ($section =~ /^[:\w]+(?:\(\))?/) { + $text .= 'the ' . $section . ' entry'; + $text .= (length $manpage) ? " in the $manpage manpage" + : " elsewhere in this document"; + } else { + $section =~ s/^\"\s*//; + $section =~ s/\s*\"$//; + $text .= 'the section on "' . $section . '"'; + $text .= " in the $manpage manpage" if length $manpage; + } + $text; +} + + +############################################################################ +# List handling +############################################################################ + +# This method is called whenever an =item command is complete (in other +# words, we've seen its associated paragraph or know for certain that it +# doesn't have one). It gets the paragraph associated with the item as an +# argument. If that argument is empty, just output the item tag; if it +# contains a newline, output the item tag followed by the newline. +# Otherwise, see if there's enough room for us to output the item tag in the +# margin of the text or if we have to put it on a separate line. +sub item { + my $self = shift; + local $_ = shift; + my $tag = $$self{ITEM}; + unless (defined $tag) { + carp "item called without tag"; + return; + } + undef $$self{ITEM}; + my $indent = $$self{INDENTS}[-1]; + unless (defined $indent) { $indent = $$self{indent} } + my $space = ' ' x $indent; + $space =~ s/^ /:/ if $$self{alt}; + if (!$_ || /^\s+$/ || ($$self{MARGIN} - $indent < length ($tag) + 1)) { + my $margin = $$self{MARGIN}; + $$self{MARGIN} = $indent; + my $output = $self->reformat ($tag); + $output =~ s/\n*$/\n/; + $self->output ($output); + $$self{MARGIN} = $margin; + $self->output ($self->reformat ($_)) if /\S/; + } else { + $_ = $self->reformat ($_); + s/^ /:/ if ($$self{alt} && $indent > 0); + my $tagspace = ' ' x length $tag; + s/^($space)$tagspace/$1$tag/ or warn "Bizarre space in item"; + $self->output ($_); + } +} + + +############################################################################ +# Output formatting +############################################################################ + +# Wrap a line, indenting by the current left margin. We can't use +# Text::Wrap because it plays games with tabs. We can't use formline, even +# though we'd really like to, because it screws up non-printing characters. +# So we have to do the wrapping ourselves. +sub wrap { + my $self = shift; + local $_ = shift; + my $output = ''; + my $spaces = ' ' x $$self{MARGIN}; + my $width = $$self{width} - $$self{MARGIN}; + while (length > $width) { + if (s/^([^\n]{0,$width})\s+// || s/^([^\n]{$width})//) { + $output .= $spaces . $1 . "\n"; + } else { + last; + } + } + $output .= $spaces . $_; + $output =~ s/\s+$/\n\n/; + $output; +} + +# Reformat a paragraph of text for the current margin. Takes the text to +# reformat and returns the formatted text. +sub reformat { + my $self = shift; + local $_ = shift; + + # If we're trying to preserve two spaces after sentences, do some + # munging to support that. Otherwise, smash all repeated whitespace. + if ($$self{sentence}) { + s/ +$//mg; + s/\.\n/. \n/g; + s/\n/ /g; + s/ +/ /g; + } else { + s/\s+/ /g; + } + $self->wrap ($_); +} + +# Output text to the output device. +sub output { $_[1] =~ tr/\01/ /; print { $_[0]->output_handle } $_[1] } + + +############################################################################ +# Backwards compatibility +############################################################################ + +# The old Pod::Text module did everything in a pod2text() function. This +# tries to provide the same interface for legacy applications. +sub pod2text { + my @args; + + # This is really ugly; I hate doing option parsing in the middle of a + # module. But the old Pod::Text module supported passing flags to its + # entry function, so handle -a and -. + while ($_[0] =~ /^-/) { + my $flag = shift; + if ($flag eq '-a') { push (@args, alt => 1) } + elsif ($flag =~ /^-(\d+)$/) { push (@args, width => $1) } + else { + unshift (@_, $flag); + last; + } + } + + # Now that we know what arguments we're using, create the parser. + my $parser = Pod::Text->new (@args); + + # If two arguments were given, the second argument is going to be a file + # handle. That means we want to call parse_from_filehandle(), which + # means we need to turn the first argument into a file handle. Magic + # open will handle the <&STDIN case automagically. + if (defined $_[1]) { + local *IN; + unless (open (IN, $_[0])) { + croak ("Can't open $_[0] for reading: $!\n"); + return; + } + $_[0] = \*IN; + return $parser->parse_from_filehandle (@_); + } else { + return $parser->parse_from_file (@_); + } +} + + +############################################################################ +# Module return value and documentation +############################################################################ + +1; +__END__ + =head1 NAME -Pod::Text - convert POD data to formatted ASCII text +Pod::Text - Convert POD data to formatted ASCII text =head1 SYNOPSIS - use Pod::Text; + use Pod::Text; + my $parser = Pod::Text->new (sentence => 0, width => 78); - pod2text("perlfunc.pod"); + # Read POD from STDIN and write to STDOUT. + $parser->parse_from_filehandle; -Also: - - pod2text [B<-a>] [B<->I] < input.pod + # Read POD from file.pod and write to file.txt. + $parser->parse_from_file ('file.pod', 'file.txt'); =head1 DESCRIPTION -Pod::Text is a module that can convert documentation in the POD format (such -as can be found throughout the Perl distribution) into formatted ASCII. -Termcap is optionally supported for boldface/underline, and can enabled via -C<$Pod::Text::termcap=1>. If termcap has not been enabled, then backspaces -will be used to simulate bold and underlined text. +Pod::Text is a module that can convert documentation in the POD format (the +preferred language for documenting Perl) into formatted ASCII. It uses no +special formatting controls or codes whatsoever, and its output is therefore +suitable for nearly any device. -A separate F program is included that is primarily a wrapper for -Pod::Text. +As a derived class from Pod::Parser, Pod::Text supports the same methods and +interfaces. See L for all the details; briefly, one creates a +new parser with Cnew()> and then calls either +parse_from_filehandle() or parse_from_file(). -The single function C can take the optional options B<-a> -for an alternative output format, then a B<->I option with the -max terminal width, followed by one or two arguments. The first -should be the name of a file to read the pod from, or "E&STDIN" to read from -STDIN. A second argument, if provided, should be a filehandle glob where -output should be sent. +new() can take options, in the form of key/value pairs, that control the +behavior of the parser. The currently recognized options are: + +=over 4 + +=item alt + +If set to a true value, selects an alternate output format that, among other +things, uses a different heading style and marks C<=item> entries with a +colon in the left margin. Defaults to false. + +=item indent + +The number of spaces to indent regular text, and the default indentation for +C<=over> blocks. Defaults to 4. + +=item loose + +If set to a true value, a blank line is printed after a C<=head1> heading. +If set to false (the default), no blank line is printed after C<=head1>, +although one is still printed after C<=head2>. This is the default because +it's the expected formatting for manual pages; if you're formatting +arbitrary text documents, setting this to true may result in more pleasing +output. + +=item sentence + +If set to a true value, Pod::Text will assume that each sentence ends in two +spaces, and will try to preserve that spacing. If set to false, all +consecutive whitespace in non-verbatim paragraphs is compressed into a +single space. Defaults to true. + +=item width + +The column at which to wrap text on the right-hand side. Defaults to 76. + +=back + +The standard Pod::Parser method parse_from_filehandle() takes up to two +arguments, the first being the file handle to read POD from and the second +being the file handle to write the formatted output to. The first defaults +to STDIN if not given, and the second defaults to STDOUT. The method +parse_from_file() is almost identical, except that its two arguments are the +input and output disk files instead. See L for the specific +details. + +=head1 DIAGNOSTICS + +=over 4 + +=item Bizarre space in item + +(W) Something has gone wrong in internal C<=item> processing. This message +indicates a bug in Pod::Text; you should never see it. + +=item Can't open %s for reading: %s + +(F) Pod::Text was invoked via the compatibility mode pod2text() interface +and the input file it was given could not be opened. + +=item Unknown escape: %s + +(W) The POD source contained an CE> escape that Pod::Text didn't +know about. + +=item Unknown sequence: %s + +(W) The POD source contained a non-standard internal sequence (something of +the form CE>) that Pod::Text didn't know about. + +=item Unmatched =back + +(W) Pod::Text encountered a C<=back> command that didn't correspond to an +C<=over> command. + +=back + +=head1 RESTRICTIONS + +Embedded Ctrl-As (octal 001) in the input will be mapped to spaces on +output, due to an internal implementation detail. + +=head1 NOTES + +This is a replacement for an earlier Pod::Text module written by Tom +Christiansen. It has a revamped interface, since it now uses Pod::Parser, +but an interface roughly compatible with the old Pod::Text::pod2text() +function is still available. Please change to the new calling convention, +though. + +The original Pod::Text contained code to do formatting via termcap +sequences, although it wasn't turned on by default and it was problematic to +get it to work at all. This rewrite doesn't even try to do that, but a +subclass of it does. Look for L. + +=head1 SEE ALSO + +L, L, +pod2text(1) =head1 AUTHOR -Tom Christiansen EFE - -=head1 TODO - -Cleanup work. The input and output locations need to be more flexible, -termcap shouldn't be a global variable, and the terminal speed needs to -be properly calculated. +Russ Allbery Erra@stanford.eduE, based I heavily on the +original Pod::Text by Tom Christiansen Etchrist@mox.perl.comE and +its conversion to Pod::Parser by Brad Appleton +Ebradapp@enteract.comE. =cut - -use Term::Cap; -require Exporter; -@ISA = Exporter; -@EXPORT = qw(pod2text); - -use vars qw($VERSION); -$VERSION = "1.0203"; - -use locale; # make \w work right in non-ASCII lands - -$termcap=0; - -$opt_alt_format = 0; - -#$use_format=1; - -$UNDL = "\x1b[4m"; -$INV = "\x1b[7m"; -$BOLD = "\x1b[1m"; -$NORM = "\x1b[0m"; - -sub pod2text { -shift if $opt_alt_format = ($_[0] eq '-a'); - -if($termcap and !$setuptermcap) { - $setuptermcap=1; - - my($term) = Tgetent Term::Cap { TERM => undef, OSPEED => 9600 }; - $UNDL = $term->{'_us'}; - $INV = $term->{'_mr'}; - $BOLD = $term->{'_md'}; - $NORM = $term->{'_me'}; -} - -$SCREEN = ($_[0] =~ /^-(\d+)/ && (shift, $1)) - || $ENV{COLUMNS} - || ($ENV{TERMCAP} =~ /co#(\d+)/)[0] - || ($^O ne 'MSWin32' && $^O ne 'dos' && (`stty -a 2>/dev/null` =~ /(\d+) columns/)[0]) - || 72; - -@_ = ("<&STDIN") unless @_; -local($file,*OUTPUT) = @_; -*OUTPUT = *STDOUT if @_<2; - -local $: = $:; -$: = " \n" if $opt_alt_format; # Do not break ``-L/lib/'' into ``- L/lib/''. - -$/ = ""; - -$FANCY = 0; - -$cutting = 1; -$DEF_INDENT = 4; -$indent = $DEF_INDENT; -$needspace = 0; -$begun = ""; - -open(IN, $file) || die "Couldn't open $file: $!"; - -POD_DIRECTIVE: while () { - if ($cutting) { - next unless /^=/; - $cutting = 0; - } - if ($begun) { - if (/^=end\s+$begun/) { - $begun = ""; - } - elsif ($begun eq "text") { - print OUTPUT $_; - } - next; - } - 1 while s{^(.*?)(\t+)(.*)$}{ - $1 - . (' ' x (length($2) * 8 - length($1) % 8)) - . $3 - }me; - # Translate verbatim paragraph - if (/^\s/) { - output($_); - next; - } - - if (/^=for\s+(\S+)\s*(.*)/s) { - if ($1 eq "text") { - print OUTPUT $2,""; - } else { - # ignore unknown for - } - next; - } - elsif (/^=begin\s+(\S+)\s*(.*)/s) { - $begun = $1; - if ($1 eq "text") { - print OUTPUT $2.""; - } - next; - } - -sub prepare_for_output { - - s/\s*$/\n/; - &init_noremap; - - # need to hide E<> first; they're processed in clear_noremap - s/(E<[^<>]+>)/noremap($1)/ge; - $maxnest = 10; - while ($maxnest-- && /[A-Z]/``$1''/sg; - s/F<(.*?)>/"$1"/sg; - } else { - s/C<(.*?)>/`$1'/sg; - } - } else { - s/C<(.*?)>/noremap("E${1}E")/sge; - } - # s/[IF]<(.*?)>/italic($1)/ge; - s/I<(.*?)>/*$1*/sg; - # s/[CB]<(.*?)>/bold($1)/ge; - s/X<.*?>//sg; - - # LREF: a la HREF L - s:L<([^|>]+)\|[^>]+>:$1:g; - - # LREF: a manpage(3f) - s:L<([a-zA-Z][^\s\/]+)(\([^\)]+\))?>:the $1$2 manpage:g; - # LREF: an =item on another manpage - s{ - L< - ([^/]+) - / - ( - [:\w]+ - (\(\))? - ) - > - } {the "$2" entry in the $1 manpage}gx; - - # LREF: an =item on this manpage - s{ - ((?: - L< - / - ( - [:\w]+ - (\(\))? - ) - > - (,?\s+(and\s+)?)? - )+) - } { internal_lrefs($1) }gex; - - # LREF: a =head2 (head1?), maybe on a manpage, maybe right here - # the "func" can disambiguate - s{ - L< - (?: - ([a-zA-Z]\S+?) / - )? - "?(.*?)"? - > - }{ - do { - $1 # if no $1, assume it means on this page. - ? "the section on \"$2\" in the $1 manpage" - : "the section on \"$2\"" - } - }sgex; - - s/[A-Z]<(.*?)>/$1/sg; - } - clear_noremap(1); -} - - &prepare_for_output; - - if (s/^=//) { - # $needspace = 0; # Assume this. - # s/\n/ /g; - ($Cmd, $_) = split(' ', $_, 2); - # clear_noremap(1); - if ($Cmd eq 'cut') { - $cutting = 1; - } - elsif ($Cmd eq 'pod') { - $cutting = 0; - } - elsif ($Cmd eq 'head1') { - makespace(); - if ($opt_alt_format) { - print OUTPUT "\n"; - s/^(.+?)[ \t]*$/==== $1 ====/; - } - print OUTPUT; - # print OUTPUT uc($_); - $needspace = $opt_alt_format; - } - elsif ($Cmd eq 'head2') { - makespace(); - # s/(\w+)/\u\L$1/g; - #print ' ' x $DEF_INDENT, $_; - # print "\xA7"; - s/(\w)/\xA7 $1/ if $FANCY; - if ($opt_alt_format) { - s/^(.+?)[ \t]*$/== $1 ==/; - print OUTPUT "\n", $_; - } else { - print OUTPUT ' ' x ($DEF_INDENT/2), $_, "\n"; - } - $needspace = $opt_alt_format; - } - elsif ($Cmd eq 'over') { - push(@indent,$indent); - $indent += ($_ + 0) || $DEF_INDENT; - } - elsif ($Cmd eq 'back') { - $indent = pop(@indent); - warn "Unmatched =back\n" unless defined $indent; - } - elsif ($Cmd eq 'item') { - makespace(); - # s/\A(\s*)\*/$1\xb7/ if $FANCY; - # s/^(\s*\*\s+)/$1 /; - { - if (length() + 3 < $indent) { - my $paratag = $_; - $_ = ; - if (/^=/) { # tricked! - local($indent) = $indent[$#indent - 1] || $DEF_INDENT; - output($paratag); - redo POD_DIRECTIVE; - } - &prepare_for_output; - IP_output($paratag, $_); - } else { - local($indent) = $indent[$#indent - 1] || $DEF_INDENT; - output($_, 0); - } - } - } - else { - warn "Unrecognized directive: $Cmd\n"; - } - } - else { - # clear_noremap(1); - makespace(); - output($_, 1); - } -} - -close(IN); - -} - -######################################################################### - -sub makespace { - if ($needspace) { - print OUTPUT "\n"; - $needspace = 0; - } -} - -sub bold { - my $line = shift; - return $line if $use_format; - if($termcap) { - $line = "$BOLD$line$NORM"; - } else { - $line =~ s/(.)/$1\b$1/g; - } -# $line = "$BOLD$line$NORM" if $ansify; - return $line; -} - -sub italic { - my $line = shift; - return $line if $use_format; - if($termcap) { - $line = "$UNDL$line$NORM"; - } else { - $line =~ s/(.)/$1\b_/g; - } -# $line = "$UNDL$line$NORM" if $ansify; - return $line; -} - -# Fill a paragraph including underlined and overstricken chars. -# It's not perfect for words longer than the margin, and it's probably -# slow, but it works. -sub fill { - local $_ = shift; - my $par = ""; - my $indent_space = " " x $indent; - my $marg = $SCREEN-$indent; - my $line = $indent_space; - my $line_length; - foreach (split) { - my $word_length = length; - $word_length -= 2 while /\010/g; # Subtract backspaces - - if ($line_length + $word_length > $marg) { - $par .= $line . "\n"; - $line= $indent_space . $_; - $line_length = $word_length; - } - else { - if ($line_length) { - $line_length++; - $line .= " "; - } - $line_length += $word_length; - $line .= $_; - } - } - $par .= "$line\n" if $line; - $par .= "\n"; - return $par; -} - -sub IP_output { - local($tag, $_) = @_; - local($tag_indent) = $indent[$#indent - 1] || $DEF_INDENT; - $tag_cols = $SCREEN - $tag_indent; - $cols = $SCREEN - $indent; - $tag =~ s/\s*$//; - s/\s+/ /g; - s/^ //; - $str = "format OUTPUT = \n" - . (($opt_alt_format && $tag_indent > 1) - ? ":" . " " x ($tag_indent - 1) - : " " x ($tag_indent)) - . '@' . ('<' x ($indent - $tag_indent - 1)) - . "^" . ("<" x ($cols - 1)) . "\n" - . '$tag, $_' - . "\n~~" - . (" " x ($indent-2)) - . "^" . ("<" x ($cols - 5)) . "\n" - . '$_' . "\n\n.\n1"; - #warn $str; warn "tag is $tag, _ is $_"; - eval $str || die; - write OUTPUT; -} - -sub output { - local($_, $reformat) = @_; - if ($reformat) { - $cols = $SCREEN - $indent; - s/\s+/ /g; - s/^ //; - $str = "format OUTPUT = \n~~" - . (" " x ($indent-2)) - . "^" . ("<" x ($cols - 5)) . "\n" - . '$_' . "\n\n.\n1"; - eval $str || die; - write OUTPUT; - } else { - s/^/' ' x $indent/gem; - s/^\s+\n$/\n/gm; - s/^ /: /s if defined($reformat) && $opt_alt_format; - print OUTPUT; - } -} - -sub noremap { - local($thing_to_hide) = shift; - $thing_to_hide =~ tr/\000-\177/\200-\377/; - return $thing_to_hide; -} - -sub init_noremap { - die "unmatched init" if $mapready++; - #mask off high bit characters in input stream - s/([\200-\377])/"E<".ord($1).">"/ge; -} - -sub clear_noremap { - my $ready_to_print = $_[0]; - die "unmatched clear" unless $mapready--; - tr/\200-\377/\000-\177/; - # now for the E<>s, which have been hidden until now - # otherwise the interative \w<> processing would have - # been hosed by the E - s { - E< - ( - ( \d+ ) - | ( [A-Za-z]+ ) - ) - > - } { - do { - defined $2 - ? chr($2) - : - defined $HTML_Escapes{$3} - ? do { $HTML_Escapes{$3} } - : do { - warn "Unknown escape: E<$1> in $_"; - "E<$1>"; - } - } - }egx if $ready_to_print; -} - -sub internal_lrefs { - local($_) = shift; - s{L]+)>}{$1}g; - my(@items) = split( /(?:,?\s+(?:and\s+)?)/ ); - my $retstr = "the "; - my $i; - for ($i = 0; $i <= $#items; $i++) { - $retstr .= "C<$items[$i]>"; - $retstr .= ", " if @items > 2 && $i != $#items; - $retstr .= " and " if $i+2 == @items; - } - - $retstr .= " entr" . ( @items > 1 ? "ies" : "y" ) - . " elsewhere in this document "; - - return $retstr; - -} - -BEGIN { - -%HTML_Escapes = ( - 'amp' => '&', # ampersand - 'lt' => '<', # left chevron, less-than - 'gt' => '>', # right chevron, greater-than - 'quot' => '"', # double quote - - "Aacute" => "\xC1", # capital A, acute accent - "aacute" => "\xE1", # small a, acute accent - "Acirc" => "\xC2", # capital A, circumflex accent - "acirc" => "\xE2", # small a, circumflex accent - "AElig" => "\xC6", # capital AE diphthong (ligature) - "aelig" => "\xE6", # small ae diphthong (ligature) - "Agrave" => "\xC0", # capital A, grave accent - "agrave" => "\xE0", # small a, grave accent - "Aring" => "\xC5", # capital A, ring - "aring" => "\xE5", # small a, ring - "Atilde" => "\xC3", # capital A, tilde - "atilde" => "\xE3", # small a, tilde - "Auml" => "\xC4", # capital A, dieresis or umlaut mark - "auml" => "\xE4", # small a, dieresis or umlaut mark - "Ccedil" => "\xC7", # capital C, cedilla - "ccedil" => "\xE7", # small c, cedilla - "Eacute" => "\xC9", # capital E, acute accent - "eacute" => "\xE9", # small e, acute accent - "Ecirc" => "\xCA", # capital E, circumflex accent - "ecirc" => "\xEA", # small e, circumflex accent - "Egrave" => "\xC8", # capital E, grave accent - "egrave" => "\xE8", # small e, grave accent - "ETH" => "\xD0", # capital Eth, Icelandic - "eth" => "\xF0", # small eth, Icelandic - "Euml" => "\xCB", # capital E, dieresis or umlaut mark - "euml" => "\xEB", # small e, dieresis or umlaut mark - "Iacute" => "\xCD", # capital I, acute accent - "iacute" => "\xED", # small i, acute accent - "Icirc" => "\xCE", # capital I, circumflex accent - "icirc" => "\xEE", # small i, circumflex accent - "Igrave" => "\xCD", # capital I, grave accent - "igrave" => "\xED", # small i, grave accent - "Iuml" => "\xCF", # capital I, dieresis or umlaut mark - "iuml" => "\xEF", # small i, dieresis or umlaut mark - "Ntilde" => "\xD1", # capital N, tilde - "ntilde" => "\xF1", # small n, tilde - "Oacute" => "\xD3", # capital O, acute accent - "oacute" => "\xF3", # small o, acute accent - "Ocirc" => "\xD4", # capital O, circumflex accent - "ocirc" => "\xF4", # small o, circumflex accent - "Ograve" => "\xD2", # capital O, grave accent - "ograve" => "\xF2", # small o, grave accent - "Oslash" => "\xD8", # capital O, slash - "oslash" => "\xF8", # small o, slash - "Otilde" => "\xD5", # capital O, tilde - "otilde" => "\xF5", # small o, tilde - "Ouml" => "\xD6", # capital O, dieresis or umlaut mark - "ouml" => "\xF6", # small o, dieresis or umlaut mark - "szlig" => "\xDF", # small sharp s, German (sz ligature) - "THORN" => "\xDE", # capital THORN, Icelandic - "thorn" => "\xFE", # small thorn, Icelandic - "Uacute" => "\xDA", # capital U, acute accent - "uacute" => "\xFA", # small u, acute accent - "Ucirc" => "\xDB", # capital U, circumflex accent - "ucirc" => "\xFB", # small u, circumflex accent - "Ugrave" => "\xD9", # capital U, grave accent - "ugrave" => "\xF9", # small u, grave accent - "Uuml" => "\xDC", # capital U, dieresis or umlaut mark - "uuml" => "\xFC", # small u, dieresis or umlaut mark - "Yacute" => "\xDD", # capital Y, acute accent - "yacute" => "\xFD", # small y, acute accent - "yuml" => "\xFF", # small y, dieresis or umlaut mark - - "lchevron" => "\xAB", # left chevron (double less than) - "rchevron" => "\xBB", # right chevron (double greater than) -); -} - -1; diff --git a/contrib/perl5/lib/Pod/Text/Color.pm b/contrib/perl5/lib/Pod/Text/Color.pm new file mode 100644 index 000000000000..10e1d9fa309c --- /dev/null +++ b/contrib/perl5/lib/Pod/Text/Color.pm @@ -0,0 +1,125 @@ +# Pod::Text::Color -- Convert POD data to formatted color ASCII text +# $Id: Color.pm,v 0.5 1999/09/20 10:15:16 eagle Exp $ +# +# Copyright 1999 by Russ Allbery +# +# This program is free software; you can redistribute it and/or modify it +# under the same terms as Perl itself. +# +# This is just a basic proof of concept. It should later be modified to +# make better use of color, take options changing what colors are used for +# what text, and the like. + +############################################################################ +# Modules and declarations +############################################################################ + +package Pod::Text::Color; + +require 5.004; + +use Pod::Text (); +use Term::ANSIColor qw(colored); + +use strict; +use vars qw(@ISA $VERSION); + +@ISA = qw(Pod::Text); + +# Use the CVS revision of this file as its version number. +($VERSION = (split (' ', q$Revision: 0.5 $ ))[1]) =~ s/\.(\d)$/.0$1/; + + +############################################################################ +# Overrides +############################################################################ + +# Make level one headings bold. +sub cmd_head1 { + my $self = shift; + local $_ = shift; + s/\s+$//; + $self->SUPER::cmd_head1 (colored ($_, 'bold')); +} + +# Make level two headings bold. +sub cmd_head2 { + my $self = shift; + local $_ = shift; + s/\s+$//; + $self->SUPER::cmd_head2 (colored ($_, 'bold')); +} + +# Fix the various interior sequences. +sub seq_b { return colored ($_[1], 'bold') } +sub seq_f { return colored ($_[1], 'cyan') } +sub seq_i { return colored ($_[1], 'yellow') } + +# We unfortunately have to override the wrapping code here, since the normal +# wrapping code gets really confused by all the escape sequences. +sub wrap { + my $self = shift; + local $_ = shift; + my $output = ''; + my $spaces = ' ' x $$self{MARGIN}; + my $width = $$self{width} - $$self{MARGIN}; + while (length > $width) { + if (s/^((?:(?:\e\[[\d;]+m)?[^\n]){0,$width})\s+// + || s/^((?:(?:\e\[[\d;]+m)?[^\n]){$width})//) { + $output .= $spaces . $1 . "\n"; + } else { + last; + } + } + $output .= $spaces . $_; + $output =~ s/\s+$/\n\n/; + $output; +} + +############################################################################ +# Module return value and documentation +############################################################################ + +1; +__END__ + +=head1 NAME + +Pod::Text::Color - Convert POD data to formatted color ASCII text + +=head1 SYNOPSIS + + use Pod::Text::Color; + my $parser = Pod::Text::Color->new (sentence => 0, width => 78); + + # Read POD from STDIN and write to STDOUT. + $parser->parse_from_filehandle; + + # Read POD from file.pod and write to file.txt. + $parser->parse_from_file ('file.pod', 'file.txt'); + +=head1 DESCRIPTION + +Pod::Text::Color is a simple subclass of Pod::Text that highlights output +text using ANSI color escape sequences. Apart from the color, it in all +ways functions like Pod::Text. See L for details and available +options. + +Term::ANSIColor is used to get colors and therefore must be installed to use +this module. + +=head1 BUGS + +This is just a basic proof of concept. It should be seriously expanded to +support configurable coloration via options passed to the constructor, and +B should be taught about those. + +=head1 SEE ALSO + +L, L + +=head1 AUTHOR + +Russ Allbery Erra@stanford.eduE. + +=cut diff --git a/contrib/perl5/lib/Pod/Text/Termcap.pm b/contrib/perl5/lib/Pod/Text/Termcap.pm new file mode 100644 index 000000000000..7e89ec61bef8 --- /dev/null +++ b/contrib/perl5/lib/Pod/Text/Termcap.pm @@ -0,0 +1,142 @@ +# Pod::Text::Termcap -- Convert POD data to ASCII text with format escapes. +# $Id: Termcap.pm,v 0.4 1999/09/20 10:17:45 eagle Exp $ +# +# Copyright 1999 by Russ Allbery +# +# This program is free software; you can redistribute it and/or modify it +# under the same terms as Perl itself. +# +# This is a simple subclass of Pod::Text that overrides a few key methods to +# output the right termcap escape sequences for formatted text on the +# current terminal type. + +############################################################################ +# Modules and declarations +############################################################################ + +package Pod::Text::Termcap; + +require 5.004; + +use Pod::Text (); +use POSIX (); +use Term::Cap; + +use strict; +use vars qw(@ISA $VERSION); + +@ISA = qw(Pod::Text); + +# Use the CVS revision of this file as its version number. +($VERSION = (split (' ', q$Revision: 0.4 $ ))[1]) =~ s/\.(\d)$/.0$1/; + + +############################################################################ +# Overrides +############################################################################ + +# In the initialization method, grab our terminal characteristics as well as +# do all the stuff we normally do. +sub initialize { + my $self = shift; + + # The default Term::Cap path won't work on Solaris. + $ENV{TERMPATH} = "$ENV{HOME}/.termcap:/etc/termcap" + . ":/usr/share/misc/termcap:/usr/share/lib/termcap"; + + my $termios = POSIX::Termios->new; + $termios->getattr; + my $ospeed = $termios->getospeed; + my $term = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed }; + $$self{BOLD} = $$term{_md} or die 'BOLD'; + $$self{UNDL} = $$term{_us} or die 'UNDL'; + $$self{NORM} = $$term{_me} or die 'NORM'; + + unless (defined $$self{width}) { + $$self{width} = $ENV{COLUMNS} || $$term{_co} || 78; + $$self{width} -= 2; + } + + $self->SUPER::initialize; +} + +# Make level one headings bold. +sub cmd_head1 { + my $self = shift; + local $_ = shift; + s/\s+$//; + $self->SUPER::cmd_head1 ("$$self{BOLD}$_$$self{NORM}"); +} + +# Make level two headings bold. +sub cmd_head2 { + my $self = shift; + local $_ = shift; + s/\s+$//; + $self->SUPER::cmd_head2 ("$$self{BOLD}$_$$self{NORM}"); +} + +# Fix up B<> and I<>. Note that we intentionally don't do F<>. +sub seq_b { my $self = shift; return "$$self{BOLD}$_[0]$$self{NORM}" } +sub seq_i { my $self = shift; return "$$self{UNDL}$_[0]$$self{NORM}" } + +# Override the wrapping code to igore the special sequences. +sub wrap { + my $self = shift; + local $_ = shift; + my $output = ''; + my $spaces = ' ' x $$self{MARGIN}; + my $width = $$self{width} - $$self{MARGIN}; + my $code = "(?:\Q$$self{BOLD}\E|\Q$$self{UNDL}\E|\Q$$self{NORM}\E)"; + while (length > $width) { + if (s/^((?:$code?[^\n]){0,$width})\s+// + || s/^((?:$code?[^\n]){$width})//) { + $output .= $spaces . $1 . "\n"; + } else { + last; + } + } + $output .= $spaces . $_; + $output =~ s/\s+$/\n\n/; + $output; +} + + +############################################################################ +# Module return value and documentation +############################################################################ + +1; +__END__ + +=head1 NAME + +Pod::Text::Color - Convert POD data to ASCII text with format escapes + +=head1 SYNOPSIS + + use Pod::Text::Termcap; + my $parser = Pod::Text::Termcap->new (sentence => 0, width => 78); + + # Read POD from STDIN and write to STDOUT. + $parser->parse_from_filehandle; + + # Read POD from file.pod and write to file.txt. + $parser->parse_from_file ('file.pod', 'file.txt'); + +=head1 DESCRIPTION + +Pod::Text::Termcap is a simple subclass of Pod::Text that highlights output +text using the correct termcap escape sequences for the current terminal. +Apart from the format codes, it in all ways functions like Pod::Text. See +L for details and available options. + +=head1 SEE ALSO + +L, L + +=head1 AUTHOR + +Russ Allbery Erra@stanford.eduE. + +=cut diff --git a/contrib/perl5/lib/Pod/Usage.pm b/contrib/perl5/lib/Pod/Usage.pm new file mode 100644 index 000000000000..aa8f712dcf57 --- /dev/null +++ b/contrib/perl5/lib/Pod/Usage.pm @@ -0,0 +1,544 @@ +############################################################################# +# Pod/Usage.pm -- print usage messages for the running script. +# +# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. +# This file is part of "PodParser". PodParser is free software; +# you can redistribute it and/or modify it under the same terms +# as Perl itself. +############################################################################# + +package Pod::Usage; + +use vars qw($VERSION); +$VERSION = 1.12; ## Current version of this package +require 5.005; ## requires this Perl version or later + +=head1 NAME + +Pod::Usage, pod2usage() - print a usage message from embedded pod documentation + +=head1 SYNOPSIS + + use Pod::Usage + + my $message_text = "This text precedes the usage message."; + my $exit_status = 2; ## The exit status to use + my $verbose_level = 0; ## The verbose level to use + my $filehandle = \*STDERR; ## The filehandle to write to + + pod2usage($message_text); + + pod2usage($exit_status); + + pod2usage( { -message => $message_text , + -exitval => $exit_status , + -verbose => $verbose_level, + -output => $filehandle } ); + + pod2usage( -msg => $message_text , + -exitval => $exit_status , + -verbose => $verbose_level, + -output => $filehandle ); + +=head1 ARGUMENTS + +B should be given either a single argument, or a list of +arguments corresponding to an associative array (a "hash"). When a single +argument is given, it should correspond to exactly one of the following: + +=over + +=item * + +A string containing the text of a message to print I printing +the usage message + +=item * + +A numeric value corresponding to the desired exit status + +=item * + +A reference to a hash + +=back + +If more than one argument is given then the entire argument list is +assumed to be a hash. If a hash is supplied (either as a reference or +as a list) it should contain one or more elements with the following +keys: + +=over + +=item C<-message> + +=item C<-msg> + +The text of a message to print immediately prior to printing the +program's usage message. + +=item C<-exitval> + +The desired exit status to pass to the B function. + +=item C<-verbose> + +The desired level of "verboseness" to use when printing the usage +message. If the corresponding value is 0, then only the "SYNOPSIS" +section of the pod documentation is printed. If the corresponding value +is 1, then the "SYNOPSIS" section, along with any section entitled +"OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is printed. If the +corresponding value is 2 or more then the entire manpage is printed. + +=item C<-output> + +A reference to a filehandle, or the pathname of a file to which the +usage message should be written. The default is C<\*STDERR> unless the +exit value is less than 2 (in which case the default is C<\*STDOUT>). + +=item C<-input> + +A reference to a filehandle, or the pathname of a file from which the +invoking script's pod documentation should be read. It defaults to the +file indicated by C<$0> (C<$PROGRAM_NAME> for users of F). + +=item C<-pathlist> + +A list of directory paths. If the input file does not exist, then it +will be searched for in the given directory list (in the order the +directories appear in the list). It defaults to the list of directories +implied by C<$ENV{PATH}>. The list may be specified either by a reference +to an array, or by a string of directory paths which use the same path +separator as C<$ENV{PATH}> on your system (e.g., C<:> for Unix, C<;> for +MSWin32 and DOS). + +=back + +=head1 DESCRIPTION + +B will print a usage message for the invoking script (using +its embedded pod documentation) and then exit the script with the +desired exit status. The usage message printed may have any one of three +levels of "verboseness": If the verbose level is 0, then only a synopsis +is printed. If the verbose level is 1, then the synopsis is printed +along with a description (if present) of the command line options and +arguments. If the verbose level is 2, then the entire manual page is +printed. + +Unless they are explicitly specified, the default values for the exit +status, verbose level, and output stream to use are determined as +follows: + +=over + +=item * + +If neither the exit status nor the verbose level is specified, then the +default is to use an exit status of 2 with a verbose level of 0. + +=item * + +If an exit status I specified but the verbose level is I, then the +verbose level will default to 1 if the exit status is less than 2 and +will default to 0 otherwise. + +=item * + +If an exit status is I specified but verbose level I given, then +the exit status will default to 2 if the verbose level is 0 and will +default to 1 otherwise. + +=item * + +If the exit status used is less than 2, then output is printed on +C. Otherwise output is printed on C. + +=back + +Although the above may seem a bit confusing at first, it generally does +"the right thing" in most situations. This determination of the default +values to use is based upon the following typical Unix conventions: + +=over + +=item * + +An exit status of 0 implies "success". For example, B exits +with a status of 0 if the two files have the same contents. + +=item * + +An exit status of 1 implies possibly abnormal, but non-defective, program +termination. For example, B exits with a status of 1 if +it did I find a matching line for the given regular expression. + +=item * + +An exit status of 2 or more implies a fatal error. For example, B +exits with a status of 2 if you specify an illegal (unknown) option on +the command line. + +=item * + +Usage messages issued as a result of bad command-line syntax should go +to C. However, usage messages issued due to an explicit request +to print usage (like specifying B<-help> on the command line) should go +to C, just in case the user wants to pipe the output to a pager +(such as B). + +=item * + +If program usage has been explicitly requested by the user, it is often +desireable to exit with a status of 1 (as opposed to 0) after issuing +the user-requested usage message. It is also desireable to give a +more verbose description of program usage in this case. + +=back + +B doesn't force the above conventions upon you, but it will +use them by default if you don't expressly tell it to do otherwise. The +ability of B to accept a single number or a string makes it +convenient to use as an innocent looking error message handling function: + + use Pod::Usage; + use Getopt::Long; + + ## Parse options + GetOptions("help", "man", "flag1") || pod2usage(2); + pod2usage(1) if ($opt_help); + pod2usage(-verbose => 2) if ($opt_man); + + ## Check for too many filenames + pod2usage("$0: Too many files given.\n") if (@ARGV > 1); + +Some user's however may feel that the above "economy of expression" is +not particularly readable nor consistent and may instead choose to do +something more like the following: + + use Pod::Usage; + use Getopt::Long; + + ## Parse options + GetOptions("help", "man", "flag1") || pod2usage(-verbose => 0); + pod2usage(-verbose => 1) if ($opt_help); + pod2usage(-verbose => 2) if ($opt_man); + + ## Check for too many filenames + pod2usage(-verbose => 2, -message => "$0: Too many files given.\n") + if (@ARGV > 1); + +As with all things in Perl, I, and +B adheres to this philosophy. If you are interested in +seeing a number of different ways to invoke B (although by no +means exhaustive), please refer to L<"EXAMPLES">. + +=head1 EXAMPLES + +Each of the following invocations of C will print just the +"SYNOPSIS" section to C and will exit with a status of 2: + + pod2usage(); + + pod2usage(2); + + pod2usage(-verbose => 0); + + pod2usage(-exitval => 2); + + pod2usage({-exitval => 2, -output => \*STDERR}); + + pod2usage({-verbose => 0, -output => \*STDERR}); + + pod2usage(-exitval => 2, -verbose => 0); + + pod2usage(-exitval => 2, -verbose => 0, -output => \*STDERR); + +Each of the following invocations of C will print a message +of "Syntax error." (followed by a newline) to C, immediately +followed by just the "SYNOPSIS" section (also printed to C) and +will exit with a status of 2: + + pod2usage("Syntax error."); + + pod2usage(-message => "Syntax error.", -verbose => 0); + + pod2usage(-msg => "Syntax error.", -exitval => 2); + + pod2usage({-msg => "Syntax error.", -exitval => 2, -output => \*STDERR}); + + pod2usage({-msg => "Syntax error.", -verbose => 0, -output => \*STDERR}); + + pod2usage(-msg => "Syntax error.", -exitval => 2, -verbose => 0); + + pod2usage(-message => "Syntax error.", + -exitval => 2, + -verbose => 0, + -output => \*STDERR); + +Each of the following invocations of C will print the +"SYNOPSIS" section and any "OPTIONS" and/or "ARGUMENTS" sections to +C and will exit with a status of 1: + + pod2usage(1); + + pod2usage(-verbose => 1); + + pod2usage(-exitval => 1); + + pod2usage({-exitval => 1, -output => \*STDOUT}); + + pod2usage({-verbose => 1, -output => \*STDOUT}); + + pod2usage(-exitval => 1, -verbose => 1); + + pod2usage(-exitval => 1, -verbose => 1, -output => \*STDOUT}); + +Each of the following invocations of C will print the +entire manual page to C and will exit with a status of 1: + + pod2usage(-verbose => 2); + + pod2usage({-verbose => 2, -output => \*STDOUT}); + + pod2usage(-exitval => 1, -verbose => 2); + + pod2usage({-exitval => 1, -verbose => 2, -output => \*STDOUT}); + +=head2 Recommended Use + +Most scripts should print some type of usage message to C when a +command line syntax error is detected. They should also provide an +option (usually C<-H> or C<-help>) to print a (possibly more verbose) +usage message to C. Some scripts may even wish to go so far as to +provide a means of printing their complete documentation to C +(perhaps by allowing a C<-man> option). The following complete example +uses B in combination with B to do all of these +things: + + use Getopt::Long; + use Pod::Usage; + + my $man = 0; + my $help = 0; + ## Parse options and print usage if there is a syntax error, + ## or if usage was explicitly requested. + GetOptions('help|?' => \$help, man => \$man) or pod2usage(2); + pod2usage(1) if $help; + pod2usage(-verbose => 2) if $man; + + ## If no arguments were given, then allow STDIN to be used only + ## if it's not connected to a terminal (otherwise print usage) + pod2usage("$0: No files given.") if ((@ARGV == 0) && (-t STDIN)); + __END__ + + =head1 NAME + + sample - Using GetOpt::Long and Pod::Usage + + =head1 SYNOPSIS + + sample [options] [file ...] + + Options: + -help brief help message + -man full documentation + + =head1 OPTIONS + + =over 8 + + =item B<-help> + + Print a brief help message and exits. + + =item B<-man> + + Prints the manual page and exits. + + =back + + =head1 DESCRIPTION + + B will read the given input file(s) and do something + useful with the contents thereof. + + =cut + +=head1 CAVEATS + +By default, B will use C<$0> as the path to the pod input +file. Unfortunately, not all systems on which Perl runs will set C<$0> +properly (although if C<$0> isn't found, B will search +C<$ENV{PATH}> or else the list specified by the C<-pathlist> option). +If this is the case for your system, you may need to explicitly specify +the path to the pod docs for the invoking script using something +similar to the following: + + pod2usage(-exitval => 2, -input => "/path/to/your/pod/docs"); + +=head1 AUTHOR + +Brad Appleton Ebradapp@enteract.comE + +Based on code for B written by +Tom Christiansen Etchrist@mox.perl.comE + +=head1 ACKNOWLEDGEMENTS + +Steven McDougall Eswmcd@world.std.comE for his help and patience +with re-writing this manpage. + +=cut + +############################################################################# + +use strict; +#use diagnostics; +use Carp; +use Exporter; +use File::Spec; + +use vars qw(@ISA @EXPORT); +@EXPORT = qw(&pod2usage); +BEGIN { + if ( $] >= 5.005_58 ) { + require Pod::Text; + @ISA = qw( Pod::Text ); + } + else { + require Pod::PlainText; + @ISA = qw( Pod::PlainText ); + } +} + + +##--------------------------------------------------------------------------- + +##--------------------------------- +## Function definitions begin here +##--------------------------------- + +sub pod2usage { + local($_) = shift || ""; + my %opts; + ## Collect arguments + if (@_ > 0) { + ## Too many arguments - assume that this is a hash and + ## the user forgot to pass a reference to it. + %opts = ($_, @_); + } + elsif (ref $_) { + ## User passed a ref to a hash + %opts = %{$_} if (ref($_) eq 'HASH'); + } + elsif (/^[-+]?\d+$/) { + ## User passed in the exit value to use + $opts{"-exitval"} = $_; + } + else { + ## User passed in a message to print before issuing usage. + $_ and $opts{"-message"} = $_; + } + + ## Need this for backward compatibility since we formerly used + ## options that were all uppercase words rather than ones that + ## looked like Unix command-line options. + ## to be uppercase keywords) + %opts = map { + my $val = $opts{$_}; + s/^(?=\w)/-/; + /^-msg/i and $_ = '-message'; + /^-exit/i and $_ = '-exitval'; + lc($_) => $val; + } (keys %opts); + + ## Now determine default -exitval and -verbose values to use + if ((! defined $opts{"-exitval"}) && (! defined $opts{"-verbose"})) { + $opts{"-exitval"} = 2; + $opts{"-verbose"} = 0; + } + elsif (! defined $opts{"-exitval"}) { + $opts{"-exitval"} = ($opts{"-verbose"} > 0) ? 1 : 2; + } + elsif (! defined $opts{"-verbose"}) { + $opts{"-verbose"} = ($opts{"-exitval"} < 2); + } + + ## Default the output file + $opts{"-output"} = ($opts{"-exitval"} < 2) ? \*STDOUT : \*STDERR + unless (defined $opts{"-output"}); + ## Default the input file + $opts{"-input"} = $0 unless (defined $opts{"-input"}); + + ## Look up input file in path if it doesnt exist. + unless ((ref $opts{"-input"}) || (-e $opts{"-input"})) { + my ($dirname, $basename) = ('', $opts{"-input"}); + my $pathsep = ($^O =~ /^(?:dos|os2|MSWin32)$/) ? ";" + : (($^O eq 'MacOS') ? ',' : ":"); + my $pathspec = $opts{"-pathlist"} || $ENV{PATH} || $ENV{PERL5LIB}; + + my @paths = (ref $pathspec) ? @$pathspec : split($pathsep, $pathspec); + for $dirname (@paths) { + $_ = File::Spec->catfile($dirname, $basename) if length; + last if (-e $_) && ($opts{"-input"} = $_); + } + } + + ## Now create a pod reader and constrain it to the desired sections. + my $parser = new Pod::Usage(USAGE_OPTIONS => \%opts); + if ($opts{"-verbose"} == 0) { + $parser->select("SYNOPSIS"); + } + elsif ($opts{"-verbose"} == 1) { + my $opt_re = '(?i)' . + '(?:OPTIONS|ARGUMENTS)' . + '(?:\s*(?:AND|\/)\s*(?:OPTIONS|ARGUMENTS))?'; + $parser->select( 'SYNOPSIS', $opt_re, "DESCRIPTION/$opt_re" ); + } + + ## Now translate the pod document and then exit with the desired status + $parser->parse_from_file($opts{"-input"}, $opts{"-output"}); + exit($opts{"-exitval"}); +} + +##--------------------------------------------------------------------------- + +##------------------------------- +## Method definitions begin here +##------------------------------- + +sub new { + my $this = shift; + my $class = ref($this) || $this; + my %params = @_; + my $self = {%params}; + bless $self, $class; + $self->initialize(); + return $self; +} + +sub begin_pod { + my $self = shift; + $self->SUPER::begin_pod(); ## Have to call superclass + my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1; + my $out_fh = $self->output_handle(); + print $out_fh "$msg\n"; +} + +sub preprocess_paragraph { + my $self = shift; + local $_ = shift; + my $line = shift; + ## See if this is a heading and we arent printing the entire manpage. + if (($self->{USAGE_OPTIONS}->{-verbose} < 2) && /^=head/) { + ## Change the title of the SYNOPSIS section to USAGE + s/^=head1\s+SYNOPSIS\s*$/=head1 USAGE/; + ## Try to do some lowercasing instead of all-caps in headings + s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge; + ## Use a colon to end all headings + s/\s*$/:/ unless (/:\s*$/); + $_ .= "\n"; + } + return $self->SUPER::preprocess_paragraph($_); +} + diff --git a/contrib/perl5/lib/SelfLoader.pm b/contrib/perl5/lib/SelfLoader.pm index 311d953721f5..99372f26308a 100644 --- a/contrib/perl5/lib/SelfLoader.pm +++ b/contrib/perl5/lib/SelfLoader.pm @@ -1,14 +1,22 @@ package SelfLoader; -use Carp; +# use Carp; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(AUTOLOAD); -$VERSION = "1.08"; +$VERSION = "1.0901"; sub Version {$VERSION} $DEBUG = 0; my %Cache; # private cache for all SelfLoader's client packages +# allow checking for valid ': attrlist' attachments +my $nested; +$nested = qr{ \( (?: (?> [^()]+ ) | (??{ $nested }) )* \) }x; +my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x; +my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x; + +sub croak { require Carp; goto &Carp::croak } + AUTOLOAD { print STDERR "SelfLoader::AUTOLOAD for $AUTOLOAD\n" if $DEBUG; my $SL_code = $Cache{$AUTOLOAD}; @@ -48,7 +56,7 @@ sub _load_stubs { local($/) = "\n"; while(defined($line = <$fh>) and $line !~ m/^__END__/) { - if ($line =~ m/^sub\s+([\w:]+)\s*(\([\\\$\@\%\&\*\;]*\))?/) { + if ($line =~ m/^sub\s+([\w:]+)\s*((?:\([\\\$\@\%\&\*\;]*\))?(?:$attr_list)?)/) { push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype)); $protoype = $2; @lines = ($line); @@ -92,7 +100,8 @@ sub _load_stubs { sub _add_to_cache { my($self,$fullname,$pack,$lines, $protoype) = @_; return () unless $fullname; - carp("Redefining sub $fullname") if exists $Cache{$fullname}; + (require Carp), Carp::carp("Redefining sub $fullname") + if exists $Cache{$fullname}; $Cache{$fullname} = join('', "package $pack; ",@$lines); print STDERR "SelfLoader cached $fullname: $Cache{$fullname}" if $DEBUG; # return stub to be eval'd @@ -112,9 +121,9 @@ SelfLoader - load functions only on demand package FOOBAR; use SelfLoader; - + ... (initializing code) - + __DATA__ sub {.... diff --git a/contrib/perl5/lib/Shell.pm b/contrib/perl5/lib/Shell.pm index f4ef431cc54e..62aa82964c19 100644 --- a/contrib/perl5/lib/Shell.pm +++ b/contrib/perl5/lib/Shell.pm @@ -1,6 +1,8 @@ package Shell; +use 5.005_64; +our($capture_stderr, $VERSION); -use Config; +$VERSION = '0.2'; sub import { my $self = shift; @@ -20,12 +22,12 @@ sub import { AUTOLOAD { my $cmd = $AUTOLOAD; $cmd =~ s/^.*:://; - eval qq { - *$AUTOLOAD = sub { + eval <<"*END*"; + sub $AUTOLOAD { if (\@_ < 1) { - `$cmd`; + \$Shell::capture_stderr ? `$cmd 2>&1` : `$cmd`; } - elsif (\$Config{'archname'} eq 'os2') { + elsif ('$^O' eq 'os2') { local(\*SAVEOUT, \*READ, \*WRITE); open SAVEOUT, '>&STDOUT' or die; @@ -33,8 +35,8 @@ AUTOLOAD { open STDOUT, '>&WRITE' or die; close WRITE; - my \$pid = system(1, \$cmd, \@_); - die "Can't execute $cmd: \$!\n" if \$pid < 0; + my \$pid = system(1, '$cmd', \@_); + die "Can't execute $cmd: \$!\\n" if \$pid < 0; open STDOUT, '>&SAVEOUT' or die; close SAVEOUT; @@ -54,9 +56,34 @@ AUTOLOAD { } } else { - open(SUBPROC, "-|") - or exec '$cmd', \@_ - or die "Can't exec $cmd: \$!\n"; + my \$a; + my \@arr = \@_; + if ('$^O' eq 'MSWin32') { + # XXX this special-casing should not be needed + # if we do quoting right on Windows. :-( + # + # First, escape all quotes. Cover the case where we + # want to pass along a quote preceded by a backslash + # (i.e., C<"param \\""" end">). + # Ugly, yup? You know, windoze. + # Enclose in quotes only the parameters that need it: + # try this: c:\> dir "/w" + # and this: c:\> dir /w + for (\@arr) { + s/"/\\\\"/g; + s/\\\\\\\\"/\\\\\\\\"""/g; + \$_ = qq["\$_"] if /\\s/; + } + } + else { + for (\@arr) { + s/(['\\\\])/\\\\\$1/g; + \$_ = "'\$_'"; + } + } + push \@arr, '2>&1' if \$Shell::capture_stderr; + open(SUBPROC, join(' ', '$cmd', \@arr, '|')) + or die "Can't exec $cmd: \$!\\n"; if (wantarray) { my \@ret = ; close SUBPROC; # XXX Oughta use a destructor. @@ -70,7 +97,9 @@ AUTOLOAD { } } } - }; +*END* + + die "$@\n" if $@; goto &$AUTOLOAD; } @@ -119,8 +148,17 @@ usage should be Larry +If you set $Shell::capture_stderr to 1, the module will attempt to +capture the STDERR of the process as well. + +The module now should work on Win32. + + Jenda + =head1 AUTHOR Larry Wall +Changes by Jenda@Krynicky.cz and Dave Cottle + =cut diff --git a/contrib/perl5/lib/Term/ANSIColor.pm b/contrib/perl5/lib/Term/ANSIColor.pm new file mode 100644 index 000000000000..e7a2157207b2 --- /dev/null +++ b/contrib/perl5/lib/Term/ANSIColor.pm @@ -0,0 +1,307 @@ +# Term::ANSIColor -- Color screen output using ANSI escape sequences. +# $Id: ANSIColor.pm,v 1.1 1997/12/10 20:05:29 eagle Exp $ +# +# Copyright 1996, 1997 by Russ Allbery +# and Zenin +# +# This program is free software; you can redistribute it and/or modify it +# under the same terms as Perl itself. + +############################################################################ +# Modules and declarations +############################################################################ + +package Term::ANSIColor; +require 5.001; + +use strict; +use vars qw(@ISA @EXPORT %EXPORT_TAGS $VERSION $AUTOLOAD %attributes + $AUTORESET $EACHLINE); + +use Exporter (); +@ISA = qw(Exporter); +@EXPORT = qw(color colored); +%EXPORT_TAGS = (constants => [qw(CLEAR RESET BOLD UNDERLINE UNDERSCORE BLINK + REVERSE CONCEALED BLACK RED GREEN YELLOW + BLUE MAGENTA CYAN WHITE ON_BLACK ON_RED + ON_GREEN ON_YELLOW ON_BLUE ON_MAGENTA + ON_CYAN ON_WHITE)]); +Exporter::export_ok_tags ('constants'); + +($VERSION = (split (' ', q$Revision: 1.1 $ ))[1]) =~ s/\.(\d)$/.0$1/; + + +############################################################################ +# Internal data structures +############################################################################ + +%attributes = ('clear' => 0, + 'reset' => 0, + 'bold' => 1, + 'underline' => 4, + 'underscore' => 4, + 'blink' => 5, + 'reverse' => 7, + 'concealed' => 8, + + 'black' => 30, 'on_black' => 40, + 'red' => 31, 'on_red' => 41, + 'green' => 32, 'on_green' => 42, + 'yellow' => 33, 'on_yellow' => 43, + 'blue' => 34, 'on_blue' => 44, + 'magenta' => 35, 'on_magenta' => 45, + 'cyan' => 36, 'on_cyan' => 46, + 'white' => 37, 'on_white' => 47); + + +############################################################################ +# Implementation (constant form) +############################################################################ + +# Time to have fun! We now want to define the constant subs, which are +# named the same as the attributes above but in all caps. Each constant sub +# needs to act differently depending on whether $AUTORESET is set. Without +# autoreset: +# +# BLUE "text\n" ==> "\e[34mtext\n" +# +# If $AUTORESET is set, we should instead get: +# +# BLUE "text\n" ==> "\e[34mtext\n\e[0m" +# +# The sub also needs to handle the case where it has no arguments correctly. +# Maintaining all of this as separate subs would be a major nightmare, as +# well as duplicate the %attributes hash, so instead we define an AUTOLOAD +# sub to define the constant subs on demand. To do that, we check the name +# of the called sub against the list of attributes, and if it's an all-caps +# version of one of them, we define the sub on the fly and then run it. +sub AUTOLOAD { + my $sub; + ($sub = $AUTOLOAD) =~ s/^.*:://; + my $attr = $attributes{lc $sub}; + if ($sub =~ /^[A-Z_]+$/ && defined $attr) { + $attr = "\e[" . $attr . 'm'; + eval qq { + sub $AUTOLOAD { + if (\$AUTORESET && \@_) { + '$attr' . "\@_" . "\e[0m"; + } else { + ('$attr' . "\@_"); + } + } + }; + goto &$AUTOLOAD; + } else { + die "undefined subroutine &$AUTOLOAD called"; + } +} + + +############################################################################ +# Implementation (attribute string form) +############################################################################ + +# Return the escape code for a given set of color attributes. +sub color { + my @codes = map { split } @_; + my $attribute = ''; + foreach (@codes) { + $_ = lc $_; + unless (defined $attributes{$_}) { + require Carp; + Carp::croak ("Invalid attribute name $_"); + } + $attribute .= $attributes{$_} . ';'; + } + chop $attribute; + ($attribute ne '') ? "\e[${attribute}m" : undef; +} + +# Given a string and a set of attributes, returns the string surrounded by +# escape codes to set those attributes and then clear them at the end of the +# string. If $EACHLINE is set, insert a reset before each occurrence of the +# string $EACHLINE and the starting attribute code after the string +# $EACHLINE, so that no attribute crosses line delimiters (this is often +# desirable if the output is to be piped to a pager or some other program). +sub colored { + my $string = shift; + if (defined $EACHLINE) { + my $attr = color (@_); + join '', + map { $_ && $_ ne $EACHLINE ? $attr . $_ . "\e[0m" : $_ } + split (/(\Q$EACHLINE\E)/, $string); + } else { + color (@_) . $string . "\e[0m"; + } +} + + +############################################################################ +# Module return value and documentation +############################################################################ + +# Ensure we evaluate to true. +1; +__END__ + +=head1 NAME + +Term::ANSIColor - Color screen output using ANSI escape sequences + +=head1 SYNOPSIS + + use Term::ANSIColor; + print color 'bold blue'; + print "This text is bold blue.\n"; + print color 'reset'; + print "This text is normal.\n"; + print colored ("Yellow on magenta.\n", 'yellow on_magenta'); + print "This text is normal.\n"; + + use Term::ANSIColor qw(:constants); + print BOLD, BLUE, "This text is in bold blue.\n", RESET; + + use Term::ANSIColor qw(:constants); + $Term::ANSIColor::AUTORESET = 1; + print BOLD BLUE "This text is in bold blue.\n"; + print "This text is normal.\n"; + +=head1 DESCRIPTION + +This module has two interfaces, one through color() and colored() and the +other through constants. + +color() takes any number of strings as arguments and considers them to be +space-separated lists of attributes. It then forms and returns the escape +sequence to set those attributes. It doesn't print it out, just returns +it, so you'll have to print it yourself if you want to (this is so that +you can save it as a string, pass it to something else, send it to a file +handle, or do anything else with it that you might care to). + +The recognized attributes (all of which should be fairly intuitive) are +clear, reset, bold, underline, underscore, blink, reverse, concealed, +black, red, green, yellow, blue, magenta, on_black, on_red, on_green, +on_yellow, on_blue, on_magenta, on_cyan, and on_white. Case is not +significant. Underline and underscore are equivalent, as are clear and +reset, so use whichever is the most intuitive to you. The color alone +sets the foreground color, and on_color sets the background color. + +Note that attributes, once set, last until they are unset (by sending the +attribute "reset"). Be careful to do this, or otherwise your attribute will +last after your script is done running, and people get very annoyed at +having their prompt and typing changed to weird colors. + +As an aid to help with this, colored() takes a scalar as the first +argument and any number of attribute strings as the second argument and +returns the scalar wrapped in escape codes so that the attributes will be +set as requested before the string and reset to normal after the string. +Normally, colored() just puts attribute codes at the beginning and end of +the string, but if you set $Term::ANSIColor::EACHLINE to some string, +that string will be considered the line delimiter and the attribute will +be set at the beginning of each line of the passed string and reset at the +end of each line. This is often desirable if the output is being sent to +a program like a pager that can be confused by attributes that span lines. +Normally you'll want to set $Term::ANSIColor::EACHLINE to C<"\n"> to use +this feature. + +Alternately, if you import C<:constants>, you can use the constants CLEAR, +RESET, BOLD, UNDERLINE, UNDERSCORE, BLINK, REVERSE, CONCEALED, BLACK, RED, +GREEN, YELLOW, BLUE, MAGENTA, ON_BLACK, ON_RED, ON_GREEN, ON_YELLOW, +ON_BLUE, ON_MAGENTA, ON_CYAN, and ON_WHITE directly. These are the same +as color('attribute') and can be used if you prefer typing: + + print BOLD BLUE ON_WHITE "Text\n", RESET; + +to + + print colored ("Text\n", 'bold blue on_white'); + +When using the constants, if you don't want to have to remember to add the +C<, RESET> at the end of each print line, you can set +$Term::ANSIColor::AUTORESET to a true value. Then, the display mode will +automatically be reset if there is no comma after the constant. In other +words, with that variable set: + + print BOLD BLUE "Text\n"; + +will reset the display mode afterwards, whereas: + + print BOLD, BLUE, "Text\n"; + +will not. + +The subroutine interface has the advantage over the constants interface in +that only 2 soubrutines are exported into your namespace, verses 22 in the +constants interface. On the flip side, the constants interface has the +advantage of better compile time error checking, since misspelled names of +colors or attributes in calls to color() and colored() won't be caught +until runtime whereas misspelled names of constants will be caught at +compile time. So, polute your namespace with almost two dozen subrutines +that you may not even use that oftin, or risk a silly bug by mistyping an +attribute. Your choice, TMTOWTDI after all. + +=head1 DIAGNOSTICS + +=over 4 + +=item Invalid attribute name %s + +You passed an invalid attribute name to either color() or colored(). + +=item Identifier %s used only once: possible typo + +You probably mistyped a constant color name such as: + + print FOOBAR "This text is color FOOBAR\n"; + +It's probably better to always use commas after constant names in order to +force the next error. + +=item No comma allowed after filehandle + +You probably mistyped a constant color name such as: + + print FOOBAR, "This text is color FOOBAR\n"; + +Generating this fatal compile error is one of the main advantages of using +the constants interface, since you'll immediately know if you mistype a +color name. + +=item Bareword %s not allowed while "strict subs" in use + +You probably mistyped a constant color name such as: + + $Foobar = FOOBAR . "This line should be blue\n"; + +or: + + @Foobar = FOOBAR, "This line should be blue\n"; + +This will only show up under use strict (another good reason to run under +use strict). + +=back + +=head1 RESTRICTIONS + +It would be nice if one could leave off the commas around the constants +entirely and just say: + + print BOLD BLUE ON_WHITE "Text\n" RESET; + +but the syntax of Perl doesn't allow this. You need a comma after the +string. (Of course, you may consider it a bug that commas between all the +constants aren't required, in which case you may feel free to insert +commas unless you're using $Term::ANSIColor::AUTORESET.) + +For easier debuging, you may prefer to always use the commas when not +setting $Term::ANSIColor::AUTORESET so that you'll get a fatal compile +error rather than a warning. + +=head1 AUTHORS + +Original idea (using constants) by Zenin (zenin@best.com), reimplemented +using subs by Russ Allbery (rra@stanford.edu), and then combined with the +original idea by Russ with input from Zenin. + +=cut diff --git a/contrib/perl5/lib/Term/Cap.pm b/contrib/perl5/lib/Term/Cap.pm index 1e95ec33b69f..0954000e8d94 100644 --- a/contrib/perl5/lib/Term/Cap.pm +++ b/contrib/perl5/lib/Term/Cap.pm @@ -107,8 +107,8 @@ sub termcap_path { ## private push(@termcap_path, $ENV{TERMCAP}) if ((exists $ENV{TERMCAP}) && (($^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'dos') - ? $ENV{TERMCAP} =~ /^[a-z]:[\\\/]/i - : $ENV{TERMCAP} =~ /^\//)); + ? $ENV{TERMCAP} =~ /^[a-z]:[\\\/]/is + : $ENV{TERMCAP} =~ /^\//s)); if ((exists $ENV{TERMPATH}) && ($ENV{TERMPATH})) { # Add the users $TERMPATH push(@termcap_path, split(/(:|\s+)/, $ENV{TERMPATH})) @@ -157,7 +157,7 @@ sub Tgetent { ## public -- static method my $foo = (exists $ENV{TERMCAP} ? $ENV{TERMCAP} : ''); # $entry is the extracted termcap entry - if (($foo !~ m:^/:) && ($foo =~ m/(^|\|)${termpat}[:|]/)) { + if (($foo !~ m:^/:s) && ($foo =~ m/(^|\|)${termpat}[:|]/s)) { $entry = $foo; } diff --git a/contrib/perl5/lib/Term/ReadLine.pm b/contrib/perl5/lib/Term/ReadLine.pm index e7cf00cb8d16..8bb820578a9f 100644 --- a/contrib/perl5/lib/Term/ReadLine.pm +++ b/contrib/perl5/lib/Term/ReadLine.pm @@ -193,7 +193,7 @@ sub findConsole { $console = "sys\$command"; } - if (($^O eq 'amigaos') || ($^O eq 'beos')) { + if (($^O eq 'amigaos') || ($^O eq 'beos') || ($^O eq 'epoc')) { $console = undef; } elsif ($^O eq 'os2') { diff --git a/contrib/perl5/lib/Test.pm b/contrib/perl5/lib/Test.pm index 7a0e59b855f1..c708f57a0505 100644 --- a/contrib/perl5/lib/Test.pm +++ b/contrib/perl5/lib/Test.pm @@ -1,10 +1,11 @@ use strict; package Test; +use 5.005_64; use Test::Harness 1.1601 (); use Carp; -use vars (qw($VERSION @ISA @EXPORT @EXPORT_OK $ntest $TestLevel), #public-ish - qw($TESTOUT $ONFAIL %todo %history $planned @FAILDETAIL)); #private-ish -$VERSION = '1.122'; +our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $ntest, $TestLevel); #public-ish +our($TESTOUT, $ONFAIL, %todo, %history, $planned, @FAILDETAIL); #private-ish +$VERSION = '1.13'; require Exporter; @ISA=('Exporter'); @EXPORT=qw(&plan &ok &skip); @@ -63,7 +64,11 @@ sub ok ($;$$) { } else { $expected = to_value(shift); my ($regex,$ignore); - if ((ref($expected)||'') eq 'Regexp') { + if (!defined $expected) { + $ok = !defined $result; + } elsif (!defined $result) { + $ok = 0; + } elsif ((ref($expected)||'') eq 'Regexp') { $ok = $result =~ /$expected/; } elsif (($regex) = ($expected =~ m,^ / (.+) / $,sx) or ($ignore, $regex) = ($expected =~ m,^ m([^\w\s]) (.+) \1 $,sx)) { @@ -94,7 +99,8 @@ sub ok ($;$$) { } } else { my $prefix = "Test $ntest"; - print $TESTOUT "# $prefix got: '$result' ($context)\n"; + print $TESTOUT "# $prefix got: ". + (defined $result? "'$result'":'')." ($context)\n"; $prefix = ' ' x (length($prefix) - 5); if ((ref($expected)||'') eq 'Regexp') { $expected = 'qr/'.$expected.'/' @@ -220,7 +226,7 @@ triggered at the end of a test run. C is passed an array ref of hash refs that describe each test failure. Each hash will contain at least the following fields: C, C, and C. (The file, line, and test number are not included because -their correspondance to a particular test is tenuous.) If the test +their correspondence to a particular test is tenuous.) If the test had an expected value or a diagnostic string, these will also be included. @@ -239,7 +245,7 @@ L and, perhaps, test coverage analysis tools. =head1 AUTHOR -Copyright (c) 1998 Joshua Nathaniel Pritikin. All rights reserved. +Copyright (c) 1998-1999 Joshua Nathaniel Pritikin. All rights reserved. This package is free software and is provided "as is" without express or implied warranty. It may be used, redistributed and/or modified diff --git a/contrib/perl5/lib/Test/Harness.pm b/contrib/perl5/lib/Test/Harness.pm index 935e8f07d22a..99027411343c 100644 --- a/contrib/perl5/lib/Test/Harness.pm +++ b/contrib/perl5/lib/Test/Harness.pm @@ -1,17 +1,19 @@ package Test::Harness; -BEGIN {require 5.002;} +use 5.005_64; use Exporter; use Benchmark; use Config; use FileHandle; use strict; -use vars qw($VERSION $verbose $switches $have_devel_corestack $curtest - @ISA @EXPORT @EXPORT_OK); +our($VERSION, $verbose, $switches, $have_devel_corestack, $curtest, + @ISA, @EXPORT, @EXPORT_OK); $have_devel_corestack = 0; -$VERSION = "1.1602"; +$VERSION = "1.1604"; + +$ENV{HARNESS_ACTIVE} = 1; # Some experimental versions of OS/2 build have broken $? my $ignore_exitcode = $ENV{HARNESS_IGNORE_EXITCODE}; @@ -62,26 +64,46 @@ 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; while ($test = shift(@tests)) { $te = $test; chop($te); - if ($^O eq 'VMS') { $te =~ s/^.*\.t\./[.t./; } - print "$te" . '.' x (20 - length($te)); + if ($^O eq 'VMS') { $te =~ s/^.*\.t\./[.t./s; } + my $blank = (' ' x 77); + my $leader = "$te" . '.' x (20 - length($te)); + my $ml = ""; + $ml = "\r$blank\r$leader" + if -t STDOUT and not $ENV{HARNESS_NOTTY} and not $verbose; + print $leader; my $fh = new FileHandle; $fh->open($test) or print "can't open $test. $!\n"; my $first = <$fh>; my $s = $switches; - $s .= q[ "-T"] if $first =~ /^#!.*\bperl.*-\w*T/; + $s .= " $ENV{'HARNESS_PERL_SWITCHES'}" + if exists $ENV{'HARNESS_PERL_SWITCHES'}; + $s .= join " ", q[ "-T"], map {qq["-I$_"]} @INC + if $first =~ /^#!.*\bperl.*-\w*T/; $fh->close or print "can't close $test. $!\n"; - my $cmd = ($ENV{'COMPILE_TEST'})? -"./perl -I../lib ../utils/perlcc $test -run -verbose dcf -log ./compilelog |" - : "$^X $s $test|"; + my $cmd = ($ENV{'HARNESS_COMPILE_TEST'}) + ? "./perl -I../lib ../utils/perlcc $test " + . "-run 2>> ./compilelog |" + : "$^X $s $test|"; $cmd = "MCR $cmd" if $^O eq 'VMS'; $fh->open($cmd) or print "can't run $test. $!\n"; $ok = $next = $max = 0; @@ -89,6 +111,7 @@ sub runtests { my %todo = (); my $bonus = 0; my $skipped = 0; + my $skip_reason; while (<$fh>) { if( $verbose ){ print $_; @@ -99,26 +122,39 @@ sub runtests { $totmax += $max; $files++; $next = 1; - } elsif (/^1\.\.([0-9]+)/) { + } elsif (/^1\.\.([0-9]+)(\s*\#\s*[Ss]kip\S*(?>\s+)(.+))?/) { $max = $1; $totmax += $max; $files++; $next = 1; + $skip_reason = $3 if not $max and defined $3; } elsif ($max && /^(not\s+)?ok\b/) { my $this = $next; if (/^not ok\s*(\d*)/){ $this = $1 if $1 > 0; + print "${ml}NOK $this" if $ml; if (!$todo{$this}) { push @failed, $this; } else { $ok++; $totok++; } - } elsif (/^ok\s*(\d*)(\s*\#\s*[Ss]kip)?/) { + } elsif (/^ok\s*(\d*)(\s*\#\s*[Ss]kip\S*(?:(?>\s+)(.+))?)?/) { $this = $1 if $1 > 0; + print "${ml}ok $this/$max" if $ml; $ok++; $totok++; $skipped++ if defined $2; + my $reason; + $reason = 'unknown reason' if defined $2; + $reason = $3 if defined $3; + if (defined $reason and defined $skip_reason) { + # print "was: '$skip_reason' new '$reason'\n"; + $skip_reason = 'various reasons' + if $skip_reason ne $reason; + } elsif (defined $reason) { + $skip_reason = $reason; + } $bonus++, $totbonus++ if $todo{$this}; } if ($this > $next) { @@ -141,7 +177,7 @@ sub runtests { : $wstatus >> 8); if ($wstatus) { my ($failed, $canon, $percent) = ('??', '??'); - printf "dubious\n\tTest returned status $estatus (wstat %d, 0x%x)\n", + printf "${ml}dubious\n\tTest returned status $estatus (wstat %d, 0x%x)\n", $wstatus,$wstatus; print "\t\t(VMS status is $estatus)\n" if $^O eq 'VMS'; if (corestatus($wstatus)) { # until we have a wait module @@ -173,16 +209,18 @@ sub runtests { } elsif ($ok == $max && $next == $max+1) { if ($max and $skipped + $bonus) { my @msg; - push(@msg, "$skipped/$max subtest".($skipped>1?'s':'')." skipped") + push(@msg, "$skipped/$max skipped: $skip_reason") if $skipped; - push(@msg, "$bonus subtest".($bonus>1?'s':''). - " unexpectedly succeeded") + push(@msg, "$bonus/$max unexpectedly succeeded") if $bonus; - print "ok, ".join(', ', @msg)."\n"; + print "${ml}ok, ".join(', ', @msg)."\n"; } elsif ($max) { - print "ok\n"; + print "${ml}ok\n"; + } elsif (defined $skip_reason) { + print "skipped: $skip_reason\n"; + $tests_skipped++; } else { - print "skipping test on this platform\n"; + print "skipped test on this platform\n"; $tests_skipped++; } $good++; @@ -243,14 +281,17 @@ sub runtests { " UNEXPECTEDLY SUCCEEDED)") if $totbonus; if ($tests_skipped) { - $bonusmsg .= ", $tests_skipped test" . ($tests_skipped != 1 ? 's' : '') . - ' skipped'; + $bonusmsg .= ", $tests_skipped test" . ($tests_skipped != 1 ? 's' : ''); + if ($subtests_skipped) { + $bonusmsg .= " and $subtests_skipped subtest" + . ($subtests_skipped != 1 ? 's' : ''); + } + $bonusmsg .= ' skipped'; } - if ($subtests_skipped) { - $bonusmsg .= ($tests_skipped ? ', plus ' : ', '). - "$subtests_skipped subtest" - . ($subtests_skipped != 1 ? 's' : '') . - " skipped"; + elsif ($subtests_skipped) { + $bonusmsg .= ", $subtests_skipped subtest" + . ($subtests_skipped != 1 ? 's' : '') + . " skipped"; } if ($bad == 0 && $totmax) { print "All tests successful$bonusmsg.\n"; @@ -274,7 +315,7 @@ sub runtests { die "Failed $bad/$total test scripts, $pct% okay.$subpct\n"; } } - printf("Files=%d, Tests=%d, %s\n", $files, $totmax, timestr($t_total, 'nop')); + printf("Files=%d, Tests=%d, %s\n", $files, $totmax, timestr($t_total, 'nop')); return ($bad == 0 && $totmax) ; } @@ -408,6 +449,12 @@ variations in spacing and case) after C or C, it is counted as a skipped test. If the whole testscript succeeds, the count of skipped tests is included in the generated output. +C reports the text after C< # Skip(whatever)> as a +reason for skipping. Similarly, one can include a similar explanation +in a C<1..0> line emitted if the test is skipped completely: + + 1..0 # Skipped: no leverage found + =head1 EXPORT C<&runtests> is exported by Test::Harness per default. @@ -445,6 +492,15 @@ above messages. Setting C makes harness ignore the exit status of child processes. +Setting C to a true value forces it to behave as though +STDOUT were not a console. You may need to set this if you don't want +harness to output more frequent progress messages using carriage returns. +Some consoles may not handle carriage returns properly (which results +in a somewhat messy output). + +Setting C to a true value will make harness attempt +to compile the test using C before running it. + If C is set to the name of a directory, harness will check after each test whether new files appeared in that directory, and report them as @@ -455,6 +511,15 @@ If relative, directory name is with respect to the current directory at the moment runtests() was called. Putting absolute path into C may give more predicatable results. +The value of C will be prepended to the +switches used to invoke perl on each test. For example, setting +C to "-W" will run all tests with all +warnings enabled. + +Harness sets C before executing the individual tests. +This allows the tests to determine if they are being executed through the +harness or by any other means. + =head1 SEE ALSO L for writing test scripts and also L for the diff --git a/contrib/perl5/lib/Text/Abbrev.pm b/contrib/perl5/lib/Text/Abbrev.pm index ae6797c81ac8..d4f12d0b9990 100644 --- a/contrib/perl5/lib/Text/Abbrev.pm +++ b/contrib/perl5/lib/Text/Abbrev.pm @@ -1,5 +1,5 @@ package Text::Abbrev; -require 5.000; +require 5.005; # Probably works on earlier versions too. require Exporter; =head1 NAME @@ -15,7 +15,7 @@ abbrev - create an abbreviation table from a list =head1 DESCRIPTION Stores all unambiguous truncations of each element of LIST -as keys key in the associative array referenced to by C<$hashref>. +as keys in the associative array referenced by C<$hashref>. The values are the original list elements. =head1 EXAMPLE @@ -34,54 +34,48 @@ The values are the original list elements. @EXPORT = qw(abbrev); # Usage: -# &abbrev(*foo,LIST); +# abbrev \%foo, LIST; # ... # $long = $foo{$short}; sub abbrev { - my (%domain); - my ($name, $ref, $glob); + my ($word, $hashref, $glob, %table, $returnvoid); if (ref($_[0])) { # hash reference preferably - $ref = shift; - } elsif ($_[0] =~ /^\*/) { # looks like a glob (deprecated) - $glob = shift; - } - my @cmp = @_; + $hashref = shift; + $returnvoid = 1; + } elsif (ref \$_[0] eq 'GLOB') { # is actually a glob (deprecated) + $hashref = \%{shift()}; + $returnvoid = 1; + } + %{$hashref} = (); - foreach $name (@_) { - my @extra = split(//,$name); - my $abbrev = shift(@extra); - my $len = 1; - my $cmp; - WORD: foreach $cmp (@cmp) { - next if $cmp eq $name; - while (substr($cmp,0,$len) eq $abbrev) { - last WORD unless @extra; - $abbrev .= shift(@extra); - ++$len; + WORD: foreach $word (@_) { + for (my $len = (length $word) - 1; $len > 0; --$len) { + my $abbrev = substr($word,0,$len); + my $seen = ++$table{$abbrev}; + if ($seen == 1) { # We're the first word so far to have + # this abbreviation. + $hashref->{$abbrev} = $word; + } elsif ($seen == 2) { # We're the second word to have this + # abbreviation, so we can't use it. + delete $hashref->{$abbrev}; + } else { # We're the third word to have this + # abbreviation, so skip to the next word. + next WORD; } } - $domain{$abbrev} = $name; - while (@extra) { - $abbrev .= shift(@extra); - $domain{$abbrev} = $name; - } } - if ($ref) { - %$ref = %domain; - return; - } elsif ($glob) { # old style - local (*hash) = $glob; - %hash = %domain; - return; + # Non-abbreviations always get entered, even if they aren't unique + foreach $word (@_) { + $hashref->{$word} = $word; } + return if $returnvoid; if (wantarray) { - %domain; + %{$hashref}; } else { - \%domain; + $hashref; } } 1; - diff --git a/contrib/perl5/lib/Text/ParseWords.pm b/contrib/perl5/lib/Text/ParseWords.pm index 065c2f725514..2a6afc3be9db 100644 --- a/contrib/perl5/lib/Text/ParseWords.pm +++ b/contrib/perl5/lib/Text/ParseWords.pm @@ -1,7 +1,7 @@ package Text::ParseWords; use vars qw($VERSION @ISA @EXPORT $PERL_SINGLE_QUOTE); -$VERSION = "3.1"; +$VERSION = "3.2"; require 5.000; @@ -49,7 +49,7 @@ sub nested_quotewords { sub parse_line { # We will be testing undef strings - local($^W) = 0; + no warnings; my($delimiter, $keep, $line) = @_; my($quote, $quoted, $unquoted, $delim, $word, @pieces); diff --git a/contrib/perl5/lib/Text/Soundex.pm b/contrib/perl5/lib/Text/Soundex.pm index ddc758c94eb7..3079b90612c0 100644 --- a/contrib/perl5/lib/Text/Soundex.pm +++ b/contrib/perl5/lib/Text/Soundex.pm @@ -5,6 +5,8 @@ require Exporter; @ISA = qw(Exporter); @EXPORT = qw(&soundex $soundex_nocode); +$VERSION = '1.0'; + # $Id: soundex.pl,v 1.2 1994/03/24 00:30:27 mike Exp $ # # Implementation of soundex algorithm as described by Knuth in volume diff --git a/contrib/perl5/lib/Text/Tabs.pm b/contrib/perl5/lib/Text/Tabs.pm index acd7afb7d6fe..933f917acdcb 100644 --- a/contrib/perl5/lib/Text/Tabs.pm +++ b/contrib/perl5/lib/Text/Tabs.pm @@ -7,7 +7,7 @@ require Exporter; @EXPORT = qw(expand unexpand $tabstop); use vars qw($VERSION $tabstop $debug); -$VERSION = 96.121201; +$VERSION = 98.112801; use strict; @@ -18,7 +18,7 @@ BEGIN { sub expand { - my @l = @_; + my (@l) = @_; for $_ (@l) { 1 while s/(^|\n)([^\t\n]*)(\t+)/ $1. $2 . (" " x @@ -32,7 +32,7 @@ sub expand sub unexpand { - my @l = @_; + my (@l) = @_; my @e; my $x; my $line; @@ -73,11 +73,11 @@ Text::Tabs -- expand and unexpand tabs per the unix expand(1) and unexpand(1) =head1 SYNOPSIS -use Text::Tabs; + use Text::Tabs; -$tabstop = 4; -@lines_without_tabs = expand(@lines_with_tabs); -@lines_with_tabs = unexpand(@lines_without_tabs); + $tabstop = 4; + @lines_without_tabs = expand(@lines_with_tabs); + @lines_with_tabs = unexpand(@lines_without_tabs); =head1 DESCRIPTION diff --git a/contrib/perl5/lib/Tie/Array.pm b/contrib/perl5/lib/Tie/Array.pm index 3f34c3b81ff5..eb83aaee17ad 100644 --- a/contrib/perl5/lib/Tie/Array.pm +++ b/contrib/perl5/lib/Tie/Array.pm @@ -1,7 +1,9 @@ package Tie::Array; -use vars qw($VERSION); + +use 5.005_64; use strict; -$VERSION = '1.00'; +use Carp; +our $VERSION = '1.01'; # Pod documentation after __END__ below. @@ -74,6 +76,16 @@ sub SPLICE return @result; } +sub EXISTS { + my $pkg = ref $_[0]; + croak "$pkg dosn't define an EXISTS method"; +} + +sub DELETE { + my $pkg = ref $_[0]; + croak "$pkg dosn't define a DELETE method"; +} + package Tie::StdArray; use vars qw(@ISA); @ISA = 'Tie::Array'; @@ -88,6 +100,8 @@ sub POP { pop(@{$_[0]}) } sub PUSH { my $o = shift; push(@$o,@_) } sub SHIFT { shift(@{$_[0]}) } sub UNSHIFT { my $o = shift; unshift(@$o,@_) } +sub EXISTS { exists $_[0]->[$_[1]] } +sub DELETE { delete $_[0]->[$_[1]] } sub SPLICE { @@ -112,15 +126,17 @@ Tie::Array - base class for tied arrays package NewArray; use Tie::Array; @ISA = ('Tie::Array'); - + # mandatory methods sub TIEARRAY { ... } sub FETCH { ... } sub FETCHSIZE { ... } - + sub STORE { ... } # mandatory if elements writeable sub STORESIZE { ... } # mandatory if elements can be added/deleted - + sub EXISTS { ... } # mandatory if exists() expected to work + sub DELETE { ... } # mandatory if delete() expected to work + # optional methods - for efficiency sub CLEAR { ... } sub PUSH { ... } @@ -133,7 +149,7 @@ Tie::Array - base class for tied arrays package NewStdArray; use Tie::Array; - + @ISA = ('Tie::StdArray'); # all methods provided by default @@ -150,9 +166,11 @@ Tie::Array - base class for tied arrays This module provides methods for array-tying classes. See L for a list of the functions required in order to tie an array -to a package. The basic B package provides stub C -and C methods, and implementations of C, C, C, -C, C and C in terms of basic C, C, +to a package. The basic B package provides stub C, +and C methods that do nothing, stub C and C +methods that croak() if the delete() or exists() builtins are ever called +on the tied array, and implementations of C, C, C, +C, C and C in terms of basic C, C, C, C. The B package provides efficient methods required for tied arrays @@ -203,6 +221,18 @@ deleted. Informative call that array is likely to grow to have I entries. Can be used to optimize allocation. This method need do nothing. +=item EXISTS this, key + +Verify that the element at index I exists in the tied array I. + +The B implementation is a stub that simply croaks. + +=item DELETE this, key + +Delete the element at index I from the tied array I. + +The B implementation is a stub that simply croaks. + =item CLEAR this Clear (remove, delete, ...) all values from the tied array associated with diff --git a/contrib/perl5/lib/Tie/Handle.pm b/contrib/perl5/lib/Tie/Handle.pm index c7550530b87e..588ecead8999 100644 --- a/contrib/perl5/lib/Tie/Handle.pm +++ b/contrib/perl5/lib/Tie/Handle.pm @@ -1,22 +1,25 @@ package Tie::Handle; +use 5.005_64; +our $VERSION = '1.0'; + =head1 NAME -Tie::Handle - base class definitions for tied handles +Tie::Handle, Tie::StdHandle - base class definitions for tied handles =head1 SYNOPSIS package NewHandle; require Tie::Handle; - + @ISA = (Tie::Handle); - + sub READ { ... } # Provide a needed method sub TIEHANDLE { ... } # Overrides inherited method - - + + package main; - + tie *FH, 'NewHandle'; =head1 DESCRIPTION @@ -24,9 +27,7 @@ Tie::Handle - base class definitions for tied handles This module provides some skeletal methods for handle-tying classes. See L for a list of the functions required in tying a handle to a package. The basic B package provides a C method, as well as methods -C, C and C. The C method is provided as a means -of grandfathering, for classes that forget to provide their own C -method. +C, C, C and C. For developers wishing to write their own tied-handle classes, the methods are summarized below. The L section not only documents these, but @@ -65,6 +66,32 @@ Read a single line Get a single character +=item CLOSE this + +Close the handle + +=item OPEN this, filename + +(Re-)open the handle + +=item BINMODE this + +Specify content is binary + +=item EOF this + +Test for end of file. + +=item TELL this + +Return position in the file. + +=item SEEK this, offset, whence + +Position the file. + +Test for end of file. + =item DESTROY this Free the storage associated with the tied handle referenced by I. @@ -81,6 +108,7 @@ The L section contains an example of tying handles. =cut use Carp; +use warnings::register; sub new { my $pkg = shift; @@ -92,8 +120,8 @@ sub new { sub TIEHANDLE { my $pkg = shift; if (defined &{"{$pkg}::new"}) { - carp "WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing" - if $^W; + warnings::warn "WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing" + if warnings::enabled(); $pkg->new(@_); } else { @@ -117,7 +145,7 @@ sub PRINTF { my $self = shift; if($self->can('WRITE') != \&WRITE) { - my $buf = sprintf(@_); + my $buf = sprintf(shift,@_); $self->WRITE($buf,length($buf),0); } else { @@ -156,6 +184,43 @@ sub WRITE { sub CLOSE { my $pkg = ref $_[0]; croak "$pkg doesn't define a CLOSE method"; +} + +package Tie::StdHandle; +our @ISA = 'Tie::Handle'; +use Carp; + +sub TIEHANDLE +{ + my $class = shift; + my $fh = do { \local *HANDLE}; + bless $fh,$class; + $fh->OPEN(@_) if (@_); + return $fh; +} + +sub EOF { eof($_[0]) } +sub TELL { tell($_[0]) } +sub FILENO { fileno($_[0]) } +sub SEEK { seek($_[0],$_[1],$_[2]) } +sub CLOSE { close($_[0]) } +sub BINMODE { binmode($_[0]) } + +sub OPEN +{ + $_[0]->CLOSE if defined($_[0]->FILENO); + open($_[0],$_[1]); } +sub READ { read($_[0],$_[1],$_[2]) } +sub READLINE { my $fh = $_[0]; <$fh> } +sub GETC { getc($_[0]) } + +sub WRITE +{ + my $fh = $_[0]; + print $fh substr($_[1],0,$_[2]) +} + + 1; diff --git a/contrib/perl5/lib/Tie/Hash.pm b/contrib/perl5/lib/Tie/Hash.pm index 2902efb4d0d8..c6ec3d4f5c62 100644 --- a/contrib/perl5/lib/Tie/Hash.pm +++ b/contrib/perl5/lib/Tie/Hash.pm @@ -73,6 +73,8 @@ Return the next key for the hash. Verify that I exists with the tied hash I. +The B implementation is a stub that simply croaks. + =item DELETE this, key Delete the key I from the tied hash I. @@ -100,6 +102,7 @@ good working examples. =cut use Carp; +use warnings::register; sub new { my $pkg = shift; @@ -111,8 +114,8 @@ sub new { sub TIEHASH { my $pkg = shift; if (defined &{"${pkg}::new"}) { - carp "WARNING: calling ${pkg}->new since ${pkg}->TIEHASH is missing" - if $^W; + warnings::warn "WARNING: calling ${pkg}->new since ${pkg}->TIEHASH is missing" + if warnings::enabled(); $pkg->new(@_); } else { diff --git a/contrib/perl5/lib/Tie/RefHash.pm b/contrib/perl5/lib/Tie/RefHash.pm index 66de2572fcd4..ffa9eb20a00c 100644 --- a/contrib/perl5/lib/Tie/RefHash.pm +++ b/contrib/perl5/lib/Tie/RefHash.pm @@ -39,11 +39,11 @@ see the C entry in perlfunc(1) and perltie(1) for more information. =head1 AUTHOR -Gurusamy Sarathy gsar@umich.edu +Gurusamy Sarathy gsar@activestate.com =head1 VERSION -Version 1.2 15 Dec 1996 +Version 1.21 22 Jun 1999 =head1 SEE ALSO @@ -94,7 +94,8 @@ sub EXISTS { sub FIRSTKEY { my $s = shift; - my $a = scalar(keys %{$s->[0]}) + scalar(keys %{$s->[1]}); + keys %{$s->[0]}; # reset iterator + keys %{$s->[1]}; # reset iterator $s->[2] = 0; $s->NEXTKEY; } diff --git a/contrib/perl5/lib/Tie/Scalar.pm b/contrib/perl5/lib/Tie/Scalar.pm index ef27dc1398c8..0c6759006f06 100644 --- a/contrib/perl5/lib/Tie/Scalar.pm +++ b/contrib/perl5/lib/Tie/Scalar.pm @@ -8,24 +8,24 @@ Tie::Scalar, Tie::StdScalar - base class definitions for tied scalars package NewScalar; require Tie::Scalar; - + @ISA = (Tie::Scalar); - + sub FETCH { ... } # Provide a needed method sub TIESCALAR { ... } # Overrides inherited method - - + + package NewStdScalar; require Tie::Scalar; - + @ISA = (Tie::StdScalar); - + # All methods provided by default, so define only what needs be overridden sub FETCH { ... } - - + + package main; - + tie $new_scalar, 'NewScalar'; tie $new_std_scalar, 'NewStdScalar'; @@ -79,6 +79,7 @@ process IDs with priority. =cut use Carp; +use warnings::register; sub new { my $pkg = shift; @@ -90,8 +91,8 @@ sub new { sub TIESCALAR { my $pkg = shift; if (defined &{"{$pkg}::new"}) { - carp "WARNING: calling ${pkg}->new since ${pkg}->TIESCALAR is missing" - if $^W; + warnings::warn "WARNING: calling ${pkg}->new since ${pkg}->TIESCALAR is missing" + if warnings::enabled(); $pkg->new(@_); } else { diff --git a/contrib/perl5/lib/Time/Local.pm b/contrib/perl5/lib/Time/Local.pm index b2fba7ccc1e5..a4808849b08b 100644 --- a/contrib/perl5/lib/Time/Local.pm +++ b/contrib/perl5/lib/Time/Local.pm @@ -3,60 +3,44 @@ require 5.000; require Exporter; use Carp; -@ISA = qw(Exporter); -@EXPORT = qw(timegm timelocal); +@ISA = qw( Exporter ); +@EXPORT = qw( timegm timelocal ); +@EXPORT_OK = qw( timegm_nocheck timelocal_nocheck ); -=head1 NAME - -Time::Local - efficiently compute time from local and GMT time - -=head1 SYNOPSIS - - $time = timelocal($sec,$min,$hours,$mday,$mon,$year); - $time = timegm($sec,$min,$hours,$mday,$mon,$year); - -=head1 DESCRIPTION - -These routines are quite efficient and yet are always guaranteed to -agree with localtime() and gmtime(), the most notable points being -that year is year-1900 and month is 0..11. We manage this by caching -the start times of any months we've seen before. If we know the start -time of the month, we can always calculate any time within the month. -The start times themselves are guessed by successive approximation -starting at the current time, since most dates seen in practice are -close to the current date. Unlike algorithms that do a binary search -(calling gmtime once for each bit of the time value, resulting in 32 -calls), this algorithm calls it at most 6 times, and usually only once -or twice. If you hit the month cache, of course, it doesn't call it -at all. - -timelocal is implemented using the same cache. We just assume that we're -translating a GMT time, and then fudge it when we're done for the timezone -and daylight savings arguments. The timezone is determined by examining -the result of localtime(0) when the package is initialized. The daylight -savings offset is currently assumed to be one hour. - -Both routines return -1 if the integer limit is hit. I.e. for dates -after the 1st of January, 2038 on most machines. - -=cut - -BEGIN { +# Set up constants $SEC = 1; $MIN = 60 * $SEC; $HR = 60 * $MIN; $DAY = 24 * $HR; - $epoch = (localtime(2*$DAY))[5]; # Allow for bugs near localtime == 0. +# Determine breakpoint for rolling century + my $thisYear = (localtime())[5]; + $nextCentury = int($thisYear / 100) * 100; + $breakpoint = ($thisYear + 50) % 100; + $nextCentury += 100 if $breakpoint < 50; - $YearFix = ((gmtime(946684800))[5] == 100) ? 100 : 0; - -} +my %options; sub timegm { - $ym = pack(C2, @_[5,4]); - $cheat = $cheat{$ym} || &cheat; - return -1 if $cheat<0 and $^O ne 'VMS'; - $cheat + $_[0] * $SEC + $_[1] * $MIN + $_[2] * $HR + ($_[3]-1) * $DAY; + my (@date) = @_; + if ($date[5] > 999) { + $date[5] -= 1900; + } + elsif ($date[5] >= 0 && $date[5] < 100) { + $date[5] -= 100 if $date[5] > $breakpoint; + $date[5] += $nextCentury; + } + $ym = pack(C2, @date[5,4]); + $cheat = $cheat{$ym} || &cheat(@date); + $cheat + + $date[0] * $SEC + + $date[1] * $MIN + + $date[2] * $HR + + ($date[3]-1) * $DAY; +} + +sub timegm_nocheck { + local $options{no_range_check} = 1; + &timegm; } sub timelocal { @@ -66,16 +50,15 @@ sub timelocal { my (@lt) = localtime($t); my (@gt) = gmtime($t); if ($t < $DAY and ($lt[5] >= 70 or $gt[5] >= 70 )) { - # Wrap error, too early a date - # Try a safer date - $tt = $DAY; - @lt = localtime($tt); - @gt = gmtime($tt); + # Wrap error, too early a date + # Try a safer date + $tt += $DAY; + @lt = localtime($tt); + @gt = gmtime($tt); } my $tzsec = ($gt[1] - $lt[1]) * $MIN + ($gt[2] - $lt[2]) * $HR; - my($lday,$gday) = ($lt[7],$gt[7]); if($lt[5] > $gt[5]) { $tzsec -= $DAY; } @@ -89,25 +72,28 @@ sub timelocal { $tzsec += $HR if($lt[8]); $time = $t + $tzsec; - return -1 if $cheat<0 and $^O ne 'VMS'; @test = localtime($time + ($tt - $t)); $time -= $HR if $test[2] != $_[2]; $time; } +sub timelocal_nocheck { + local $options{no_range_check} = 1; + &timelocal; +} + sub cheat { $year = $_[5]; - $year -= 1900 - if $year > 1900; $month = $_[4]; - croak "Month '$month' out of range 0..11" if $month > 11 || $month < 0; - croak "Day '$_[3]' out of range 1..31" if $_[3] > 31 || $_[3] < 1; - croak "Hour '$_[2]' out of range 0..23" if $_[2] > 23 || $_[2] < 0; - croak "Minute '$_[1]' out of range 0..59" if $_[1] > 59 || $_[1] < 0; - croak "Second '$_[0]' out of range 0..59" if $_[0] > 59 || $_[0] < 0; + unless ($options{no_range_check}) { + croak "Month '$month' out of range 0..11" if $month > 11 || $month < 0; + croak "Day '$_[3]' out of range 1..31" if $_[3] > 31 || $_[3] < 1; + croak "Hour '$_[2]' out of range 0..23" if $_[2] > 23 || $_[2] < 0; + croak "Minute '$_[1]' out of range 0..59" if $_[1] > 59 || $_[1] < 0; + croak "Second '$_[0]' out of range 0..59" if $_[0] > 59 || $_[0] < 0; + } $guess = $^T; @g = gmtime($guess); - $year += $YearFix if $year < $epoch; $lastguess = ""; $counter = 0; while ($diff = $year - $g[5]) { @@ -115,7 +101,8 @@ sub cheat { $guess += $diff * (363 * $DAY); @g = gmtime($guess); if (($thisguess = "@g") eq $lastguess){ - return -1; #date beyond this machine's integer limit + croak "Can't handle date (".join(", ",@_).")"; + #date beyond this machine's integer limit } $lastguess = $thisguess; } @@ -124,13 +111,15 @@ sub cheat { $guess += $diff * (27 * $DAY); @g = gmtime($guess); if (($thisguess = "@g") eq $lastguess){ - return -1; #date beyond this machine's integer limit + croak "Can't handle date (".join(", ",@_).")"; + #date beyond this machine's integer limit } $lastguess = $thisguess; } @gfake = gmtime($guess-1); #still being sceptic if ("@gfake" eq $lastguess){ - return -1; #date beyond this machine's integer limit + croak "Can't handle date (".join(", ",@_).")"; + #date beyond this machine's integer limit } $g[3]--; $guess -= $g[0] * $SEC + $g[1] * $MIN + $g[2] * $HR + $g[3] * $DAY; @@ -138,3 +127,120 @@ sub cheat { } 1; + +__END__ + +=head1 NAME + +Time::Local - efficiently compute time from local and GMT time + +=head1 SYNOPSIS + + $time = timelocal($sec,$min,$hours,$mday,$mon,$year); + $time = timegm($sec,$min,$hours,$mday,$mon,$year); + +=head1 DESCRIPTION + +These routines are the inverse of built-in perl fuctions localtime() +and gmtime(). They accept a date as a six-element array, and return +the corresponding time(2) value in seconds since the Epoch (Midnight, +January 1, 1970). This value can be positive or negative. + +It is worth drawing particular attention to the expected ranges for +the values provided. While the day of the month is expected to be in +the range 1..31, the month should be in the range 0..11. +This is consistent with the values returned from localtime() and gmtime(). + +The timelocal() and timegm() functions perform range checking on the +input $sec, $min, $hours, $mday, and $mon values by default. If you'd +rather they didn't, you can explicitly import the timelocal_nocheck() +and timegm_nocheck() functions. + + use Time::Local 'timelocal_nocheck'; + + { + # The 365th day of 1999 + print scalar localtime timelocal_nocheck 0,0,0,365,0,99; + + # The twenty thousandth day since 1970 + print scalar localtime timelocal_nocheck 0,0,0,20000,0,70; + + # And even the 10,000,000th second since 1999! + print scalar localtime timelocal_nocheck 10000000,0,0,1,0,99; + } + +Your mileage may vary when trying these with minutes and hours, +and it doesn't work at all for months. + +Strictly speaking, the year should also be specified in a form consistent +with localtime(), i.e. the offset from 1900. +In order to make the interpretation of the year easier for humans, +however, who are more accustomed to seeing years as two-digit or four-digit +values, the following conventions are followed: + +=over 4 + +=item * + +Years greater than 999 are interpreted as being the actual year, +rather than the offset from 1900. Thus, 1963 would indicate the year +Martin Luther King won the Nobel prize, not the year 2863. + +=item * + +Years in the range 100..999 are interpreted as offset from 1900, +so that 112 indicates 2012. This rule also applies to years less than zero +(but see note below regarding date range). + +=item * + +Years in the range 0..99 are interpreted as shorthand for years in the +rolling "current century," defined as 50 years on either side of the current +year. Thus, today, in 1999, 0 would refer to 2000, and 45 to 2045, +but 55 would refer to 1955. Twenty years from now, 55 would instead refer +to 2055. This is messy, but matches the way people currently think about +two digit dates. Whenever possible, use an absolute four digit year instead. + +=back + +The scheme above allows interpretation of a wide range of dates, particularly +if 4-digit years are used. + +Please note, however, that the range of dates that can be actually be handled +depends on the size of an integer (time_t) on a given platform. +Currently, this is 32 bits for most systems, yielding an approximate range +from Dec 1901 to Jan 2038. + +Both timelocal() and timegm() croak if given dates outside the supported +range. + +=head1 IMPLEMENTATION + +These routines are quite efficient and yet are always guaranteed to agree +with localtime() and gmtime(). We manage this by caching the start times +of any months we've seen before. If we know the start time of the month, +we can always calculate any time within the month. The start times +themselves are guessed by successive approximation starting at the +current time, since most dates seen in practice are close to the +current date. Unlike algorithms that do a binary search (calling gmtime +once for each bit of the time value, resulting in 32 calls), this algorithm +calls it at most 6 times, and usually only once or twice. If you hit +the month cache, of course, it doesn't call it at all. + +timelocal() is implemented using the same cache. We just assume that we're +translating a GMT time, and then fudge it when we're done for the timezone +and daylight savings arguments. Note that the timezone is evaluated for +each date because countries occasionally change their official timezones. +Assuming that localtime() corrects for these changes, this routine will +also be correct. The daylight savings offset is currently assumed +to be one hour. + +=head1 BUGS + +The whole scheme for interpreting two-digit years can be considered a bug. + +Note that the cache currently handles only years from 1900 through 2155. + +The proclivity to croak() is probably a bug. + +=cut diff --git a/contrib/perl5/lib/Time/gmtime.pm b/contrib/perl5/lib/Time/gmtime.pm index 9b823f601e34..6ff4bc84a206 100644 --- a/contrib/perl5/lib/Time/gmtime.pm +++ b/contrib/perl5/lib/Time/gmtime.pm @@ -2,9 +2,10 @@ package Time::gmtime; use strict; use Time::tm; +use 5.005_64; +our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION); BEGIN { use Exporter (); - use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); @ISA = qw(Exporter Time::tm); @EXPORT = qw(gmtime gmctime); @EXPORT_OK = qw( diff --git a/contrib/perl5/lib/Time/localtime.pm b/contrib/perl5/lib/Time/localtime.pm index 18a36c7fb910..0ca07af166cb 100644 --- a/contrib/perl5/lib/Time/localtime.pm +++ b/contrib/perl5/lib/Time/localtime.pm @@ -2,9 +2,10 @@ package Time::localtime; use strict; use Time::tm; -BEGIN { +use 5.005_64; +our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION); +BEGIN { use Exporter (); - use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); @ISA = qw(Exporter Time::tm); @EXPORT = qw(localtime ctime); @EXPORT_OK = qw( diff --git a/contrib/perl5/lib/UNIVERSAL.pm b/contrib/perl5/lib/UNIVERSAL.pm index dc02423029ed..f2f1fe9e7ade 100644 --- a/contrib/perl5/lib/UNIVERSAL.pm +++ b/contrib/perl5/lib/UNIVERSAL.pm @@ -62,19 +62,23 @@ The C and C methods can also be called as subroutines =item UNIVERSAL::isa ( VAL, TYPE ) -C returns I if the first argument is a reference and either -of the following statements is true. +C returns I if one of the following statements is true. =over 8 -=item +=item * -C is a blessed reference and is blessed into package C -or inherits from package C +C is a reference blessed into either package C or a package +which inherits from package C. -=item +=item * -C is a reference to a C of perl variable (er 'HASH') +C is a reference to a C of Perl variable (e.g. 'HASH'). + +=item * + +C is the name of a package that inherits from (or is itself) +package C. =back diff --git a/contrib/perl5/lib/User/grent.pm b/contrib/perl5/lib/User/grent.pm index e4e226d119ac..95e4189c9e3d 100644 --- a/contrib/perl5/lib/User/grent.pm +++ b/contrib/perl5/lib/User/grent.pm @@ -1,9 +1,10 @@ package User::grent; use strict; +use 5.005_64; +our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); BEGIN { use Exporter (); - use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS); @EXPORT = qw(getgrent getgrgid getgrnam getgr); @EXPORT_OK = qw($gr_name $gr_gid $gr_passwd $gr_mem @gr_members); %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] ); diff --git a/contrib/perl5/lib/User/pwent.pm b/contrib/perl5/lib/User/pwent.pm index bb2dace68234..8c059265c3b9 100644 --- a/contrib/perl5/lib/User/pwent.pm +++ b/contrib/perl5/lib/User/pwent.pm @@ -1,50 +1,179 @@ package User::pwent; -use strict; -BEGIN { +use 5.006; + +use strict; +use warnings; + +use Config; +use Carp; + +our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); +BEGIN { use Exporter (); - use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS); @EXPORT = qw(getpwent getpwuid getpwnam getpw); @EXPORT_OK = qw( - $pw_name $pw_passwd $pw_uid - $pw_gid $pw_quota $pw_comment - $pw_gecos $pw_dir $pw_shell - ); - %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] ); + pw_has + + $pw_name $pw_passwd $pw_uid $pw_gid + $pw_gecos $pw_dir $pw_shell + $pw_expire $pw_change $pw_class + $pw_age + $pw_quota $pw_comment + $pw_expire + + ); + %EXPORT_TAGS = ( + FIELDS => [ grep(/^\$pw_/, @EXPORT_OK), @EXPORT ], + ALL => [ @EXPORT, @EXPORT_OK ], + ); } -use vars @EXPORT_OK; +use vars grep /^\$pw_/, @EXPORT_OK; + +# +# XXX: these mean somebody hacked this module's source +# without understanding the underlying assumptions. +# +my $IE = "[INTERNAL ERROR]"; # Class::Struct forbids use of @ISA sub import { goto &Exporter::import } use Class::Struct qw(struct); struct 'User::pwent' => [ - name => '$', - passwd => '$', - uid => '$', - gid => '$', - quota => '$', - comment => '$', - gecos => '$', - dir => '$', - shell => '$', + name => '$', # pwent[0] + passwd => '$', # pwent[1] + uid => '$', # pwent[2] + gid => '$', # pwent[3] + + # you'll only have one/none of these three + change => '$', # pwent[4] + age => '$', # pwent[4] + quota => '$', # pwent[4] + + # you'll only have one/none of these two + comment => '$', # pwent[5] + class => '$', # pwent[5] + + # you might not have this one + gecos => '$', # pwent[6] + + dir => '$', # pwent[7] + shell => '$', # pwent[8] + + # you might not have this one + expire => '$', # pwent[9] + ]; -sub populate (@) { + +# init our groks hash to be true if the built platform knew how +# to do each struct pwd field that perl can ever under any circumstances +# know about. we do not use /^pw_?/, but just the tails. +sub _feature_init { + our %Groks; # whether build system knew how to do this feature + for my $feep ( qw{ + pwage pwchange pwclass pwcomment + pwexpire pwgecos pwpasswd pwquota + } + ) + { + my $short = $feep =~ /^pw(.*)/ + ? $1 + : do { + # not cluck, as we know we called ourselves, + # and a confession is probably imminent anyway + warn("$IE $feep is a funny struct pwd field"); + $feep; + }; + + exists $Config{ "d_" . $feep } + || confess("$IE Configure doesn't d_$feep"); + $Groks{$short} = defined $Config{ "d_" . $feep }; + } + # assume that any that are left are always there + for my $feep (grep /^\$pw_/s, @EXPORT_OK) { + $feep =~ /^\$pw_(.*)/; + $Groks{$1} = 1 unless defined $Groks{$1}; + } +} + +# With arguments, reports whether one or more fields are all implemented +# in the build machine's struct pwd pw_*. May be whitespace separated. +# We do not use /^pw_?/, just the tails. +# +# Without arguments, returns the list of fields implemented on build +# machine, space separated in scalar context. +# +# Takes exception to being asked whether this machine's struct pwd has +# a field that Perl never knows how to provide under any circumstances. +# If the module does this idiocy to itself, the explosion is noisier. +# +sub pw_has { + our %Groks; # whether build system knew how to do this feature + my $cando = 1; + my $sploder = caller() ne __PACKAGE__ + ? \&croak + : sub { confess("$IE @_") }; + if (@_ == 0) { + my @valid = sort grep { $Groks{$_} } keys %Groks; + return wantarray ? @valid : "@valid"; + } + for my $feep (map { split } @_) { + defined $Groks{$feep} + || $sploder->("$feep is never a valid struct pwd field"); + $cando &&= $Groks{$feep}; + } + return $cando; +} + +sub _populate (@) { return unless @_; my $pwob = new(); - ( $pw_name, $pw_passwd, $pw_uid, - $pw_gid, $pw_quota, $pw_comment, - $pw_gecos, $pw_dir, $pw_shell, ) = @$pwob = @_; + # Any that haven't been pw_had are assumed on "all" platforms of + # course, this may not be so, but you can't get here otherwise, + # since the underlying core call already took exception to your + # impudence. + + $pw_name = $pwob->name ( $_[0] ); + $pw_passwd = $pwob->passwd ( $_[1] ) if pw_has("passwd"); + $pw_uid = $pwob->uid ( $_[2] ); + $pw_gid = $pwob->gid ( $_[3] ); + + if (pw_has("change")) { + $pw_change = $pwob->change ( $_[4] ); + } + elsif (pw_has("age")) { + $pw_age = $pwob->age ( $_[4] ); + } + elsif (pw_has("quota")) { + $pw_quota = $pwob->quota ( $_[4] ); + } + + if (pw_has("class")) { + $pw_class = $pwob->class ( $_[5] ); + } + elsif (pw_has("comment")) { + $pw_comment = $pwob->comment( $_[5] ); + } + + $pw_gecos = $pwob->gecos ( $_[6] ) if pw_has("gecos"); + + $pw_dir = $pwob->dir ( $_[7] ); + $pw_shell = $pwob->shell ( $_[8] ); + + $pw_expire = $pwob->expire ( $_[9] ) if pw_has("expire"); return $pwob; -} +} -sub getpwent ( ) { populate(CORE::getpwent()) } -sub getpwnam ($) { populate(CORE::getpwnam(shift)) } -sub getpwuid ($) { populate(CORE::getpwuid(shift)) } -sub getpw ($) { ($_[0] =~ /^\d+/) ? &getpwuid : &getpwnam } +sub getpwent ( ) { _populate(CORE::getpwent()) } +sub getpwnam ($) { _populate(CORE::getpwnam(shift)) } +sub getpwuid ($) { _populate(CORE::getpwuid(shift)) } +sub getpw ($) { ($_[0] =~ /^\d+\z/s) ? &getpwuid : &getpwnam } + +_feature_init(); 1; __END__ @@ -56,42 +185,95 @@ User::pwent - by-name interface to Perl's built-in getpw*() functions =head1 SYNOPSIS use User::pwent; - $pw = getpwnam('daemon') or die "No daemon user"; - if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?$# ) { + $pw = getpwnam('daemon') || die "No daemon user"; + if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?\z#s ) { print "gid 1 on root dir"; - } + } + + $real_shell = $pw->shell || '/bin/sh'; + + for (($fullname, $office, $workphone, $homephone) = + split /\s*,\s*/, $pw->gecos) + { + s/&/ucfirst(lc($pw->name))/ge; + } use User::pwent qw(:FIELDS); - getpwnam('daemon') or die "No daemon user"; - if ( $pw_uid == 1 && $pw_dir =~ m#^/(bin|tmp)?$# ) { + getpwnam('daemon') || die "No daemon user"; + if ( $pw_uid == 1 && $pw_dir =~ m#^/(bin|tmp)?\z#s ) { print "gid 1 on root dir"; - } + } $pw = getpw($whoever); + use User::pwent qw/:DEFAULT pw_has/; + if (pw_has(qw[gecos expire quota])) { .... } + if (pw_has("name uid gid passwd")) { .... } + print "Your struct pwd has: ", scalar pw_has(), "\n"; + =head1 DESCRIPTION This module's default exports override the core getpwent(), getpwuid(), and getpwnam() functions, replacing them with versions that return -"User::pwent" objects. This object has methods that return the similarly -named structure field name from the C's passwd structure from F; -namely name, passwd, uid, gid, quota, comment, gecos, dir, and shell. +C objects. This object has methods that return the +similarly named structure field name from the C's passwd structure +from F, stripped of their leading "pw_" parts, namely C, +C, C, C, C, C, C, C, +C, C, C, C, and C. The C, +C, and C fields are tainted when running in taint mode. -You may also import all the structure fields directly into your namespace -as regular variables using the :FIELDS import tag. (Note that this still -overrides your core functions.) Access these fields as -variables named with a preceding C in front their method names. -Thus, C<$passwd_obj-Eshell()> corresponds to $pw_shell if you import -the fields. +You may also import all the structure fields directly into your +namespace as regular variables using the :FIELDS import tag. (Note +that this still overrides your core functions.) Access these fields +as variables named with a preceding C in front their method +names. Thus, C<< $passwd_obj->shell >> corresponds to $pw_shell +if you import the fields. The getpw() function is a simple front-end that forwards a numeric argument to getpwuid() and the rest to getpwnam(). -To access this functionality without the core overrides, -pass the C an empty import list, and then access -function functions with their full qualified names. -On the other hand, the built-ins are still available -via the C pseudo-package. +To access this functionality without the core overrides, pass the +C an empty import list, and then access function functions +with their full qualified names. The built-ins are always still +available via the C pseudo-package. + +=head2 System Specifics + +Perl believes that no machine ever has more than one of C, +C, or C implemented, nor more than one of either +C or C. Some machines do not support C, +C, or allegedly, C. You may call these methods +no matter what machine you're on, but they return C if +unimplemented. + +You may ask whether one of these was implemented on the system Perl +was built on by asking the importable C function about them. +This function returns true if all parameters are supported fields +on the build platform, false if one or more were not, and raises +an exception if you asked about a field that Perl never knows how +to provide. Parameters may be in a space-separated string, or as +separate arguments. If you pass no parameters, the function returns +the list of C fields supported by your build platform's +C library, as a list in list context, or a space-separated string +in scalar context. Note that just because your C library had +a field doesn't necessarily mean that it's fully implemented on +that system. + +Interpretation of the C field varies between systems, but +traditionally holds 4 comma-separated fields containing the user's +full name, office location, work phone number, and home phone number. +An C<&> in the gecos field should be replaced by the user's properly +capitalized login C. The C field, if blank, must be +assumed to be F. Perl does not do this for you. The +C is one-way hashed garble, not clear text, and may not be +unhashed save by brute-force guessing. Secure systems use more a +more secure hashing than DES. On systems supporting shadow password +systems, Perl automatically returns the shadow password entry when +called by a suitably empowered user, even if your underlying +vendor-provided C library was too short-sighted to realize it should +do this. + +See passwd(5) and getpwent(3) for details. =head1 NOTE @@ -101,3 +283,15 @@ module to build a struct-like class, you shouldn't rely upon this. =head1 AUTHOR Tom Christiansen + +=head1 HISTORY + +=over + +=item March 18th, 2000 + +Reworked internals to support better interface to dodgey fields +than normal Perl function provides. Added pw_has() field. Improved +documentation. + +=back diff --git a/contrib/perl5/lib/abbrev.pl b/contrib/perl5/lib/abbrev.pl index 62975e66f326..c505a6f28bd7 100644 --- a/contrib/perl5/lib/abbrev.pl +++ b/contrib/perl5/lib/abbrev.pl @@ -4,6 +4,16 @@ ;# ... ;# $long = $foo{$short}; +# +# This library is no longer being maintained, and is included for backward +# compatibility with Perl 4 programs which may require it. +# +# In particular, this should not be used as an example of modern Perl +# programming techniques. +# +# Suggested alternative: Text::Abbrev +# + package abbrev; sub main'abbrev { diff --git a/contrib/perl5/lib/attributes.pm b/contrib/perl5/lib/attributes.pm new file mode 100644 index 000000000000..f111645ae15c --- /dev/null +++ b/contrib/perl5/lib/attributes.pm @@ -0,0 +1,399 @@ +package attributes; + +$VERSION = 0.03; + +@EXPORT_OK = qw(get reftype); +@EXPORT = (); +%EXPORT_TAGS = (ALL => [@EXPORT, @EXPORT_OK]); + +use strict; + +sub croak { + require Carp; + goto &Carp::croak; +} + +sub carp { + require Carp; + goto &Carp::carp; +} + +## forward declaration(s) rather than wrapping the bootstrap call in BEGIN{} +#sub reftype ($) ; +#sub _fetch_attrs ($) ; +#sub _guess_stash ($) ; +#sub _modify_attrs ; +#sub _warn_reserved () ; +# +# The extra trips through newATTRSUB in the interpreter wipe out any savings +# from avoiding the BEGIN block. Just do the bootstrap now. +BEGIN { bootstrap } + +sub import { + @_ > 2 && ref $_[2] or do { + require Exporter; + goto &Exporter::import; + }; + my (undef,$home_stash,$svref,@attrs) = @_; + + my $svtype = uc reftype($svref); + my $pkgmeth; + $pkgmeth = UNIVERSAL::can($home_stash, "MODIFY_${svtype}_ATTRIBUTES") + if defined $home_stash && $home_stash ne ''; + my @badattrs; + if ($pkgmeth) { + my @pkgattrs = _modify_attrs($svref, @attrs); + @badattrs = $pkgmeth->($home_stash, $svref, @attrs); + if (!@badattrs && @pkgattrs) { + return unless _warn_reserved; + @pkgattrs = grep { m/\A[[:lower:]]+(?:\z|\()/ } @pkgattrs; + if (@pkgattrs) { + for my $attr (@pkgattrs) { + $attr =~ s/\(.+\z//s; + } + my $s = ((@pkgattrs == 1) ? '' : 's'); + carp "$svtype package attribute$s " . + "may clash with future reserved word$s: " . + join(' : ' , @pkgattrs); + } + } + } + else { + @badattrs = _modify_attrs($svref, @attrs); + } + if (@badattrs) { + croak "Invalid $svtype attribute" . + (( @badattrs == 1 ) ? '' : 's') . + ": " . + join(' : ', @badattrs); + } +} + +sub get ($) { + @_ == 1 && ref $_[0] or + croak 'Usage: '.__PACKAGE__.'::get $ref'; + my $svref = shift; + my $svtype = uc reftype $svref; + my $stash = _guess_stash $svref; + $stash = caller unless defined $stash; + my $pkgmeth; + $pkgmeth = UNIVERSAL::can($stash, "FETCH_${svtype}_ATTRIBUTES") + if defined $stash && $stash ne ''; + return $pkgmeth ? + (_fetch_attrs($svref), $pkgmeth->($stash, $svref)) : + (_fetch_attrs($svref)) + ; +} + +sub require_version { goto &UNIVERSAL::VERSION } + +1; +__END__ +#The POD goes here + +=head1 NAME + +attributes - get/set subroutine or variable attributes + +=head1 SYNOPSIS + + sub foo : method ; + my ($x,@y,%z) : Bent ; + my $s = sub : method { ... }; + + use attributes (); # optional, to get subroutine declarations + my @attrlist = attributes::get(\&foo); + + use attributes 'get'; # import the attributes::get subroutine + my @attrlist = get \&foo; + +=head1 DESCRIPTION + +Subroutine declarations and definitions may optionally have attribute lists +associated with them. (Variable C declarations also may, but see the +warning below.) Perl handles these declarations by passing some information +about the call site and the thing being declared along with the attribute +list to this module. In particular, the first example above is equivalent to +the following: + + use attributes __PACKAGE__, \&foo, 'method'; + +The second example in the synopsis does something equivalent to this: + + use attributes __PACKAGE__, \$x, 'Bent'; + use attributes __PACKAGE__, \@y, 'Bent'; + use attributes __PACKAGE__, \%z, 'Bent'; + +Yes, that's three invocations. + +B: attribute declarations for variables are an I +feature. The semantics of such declarations could change or be removed +in future versions. They are present for purposes of experimentation +with what the semantics ought to be. Do not rely on the current +implementation of this feature. + +There are only a few attributes currently handled by Perl itself (or +directly by this module, depending on how you look at it.) However, +package-specific attributes are allowed by an extension mechanism. +(See L<"Package-specific Attribute Handling"> below.) + +The setting of attributes happens at compile time. An attempt to set +an unrecognized attribute is a fatal error. (The error is trappable, but +it still stops the compilation within that C.) Setting an attribute +with a name that's all lowercase letters that's not a built-in attribute +(such as "foo") +will result in a warning with B<-w> or C. + +=head2 Built-in Attributes + +The following are the built-in attributes for subroutines: + +=over 4 + +=item locked + +Setting this attribute is only meaningful when the subroutine or +method is to be called by multiple threads. When set on a method +subroutine (i.e., one marked with the B attribute below), +Perl ensures that any invocation of it implicitly locks its first +argument before execution. When set on a non-method subroutine, +Perl ensures that a lock is taken on the subroutine itself before +execution. The semantics of the lock are exactly those of one +explicitly taken with the C operator immediately after the +subroutine is entered. + +=item method + +Indicates that the referenced subroutine is a method. +This has a meaning when taken together with the B attribute, +as described there. It also means that a subroutine so marked +will not trigger the "Ambiguous call resolved as CORE::%s" warning. + +=item lvalue + +Indicates that the referenced subroutine is a valid lvalue and can +be assigned to. The subroutine must return a modifiable value such +as a scalar variable, as described in L. + +=back + +There are no built-in attributes for anything other than subroutines. + +=head2 Available Subroutines + +The following subroutines are available for general use once this module +has been loaded: + +=over 4 + +=item get + +This routine expects a single parameter--a reference to a +subroutine or variable. It returns a list of attributes, which may be +empty. If passed invalid arguments, it uses die() (via L) +to raise a fatal exception. If it can find an appropriate package name +for a class method lookup, it will include the results from a +C_ATTRIBUTES> call in its return list, as described in +L<"Package-specific Attribute Handling"> below. +Otherwise, only L will be returned. + +=item reftype + +This routine expects a single parameter--a reference to a subroutine or +variable. It returns the built-in type of the referenced variable, +ignoring any package into which it might have been blessed. +This can be useful for determining the I value which forms part of +the method names described in L<"Package-specific Attribute Handling"> below. + +=back + +Note that these routines are I exported by default. + +=head2 Package-specific Attribute Handling + +B: the mechanisms described here are still experimental. Do not +rely on the current implementation. In particular, there is no provision +for applying package attributes to 'cloned' copies of subroutines used as +closures. (See L for information on closures.) +Package-specific attribute handling may change incompatibly in a future +release. + +When an attribute list is present in a declaration, a check is made to see +whether an attribute 'modify' handler is present in the appropriate package +(or its @ISA inheritance tree). Similarly, when C is +called on a valid reference, a check is made for an appropriate attribute +'fetch' handler. See L<"EXAMPLES"> to see how the "appropriate package" +determination works. + +The handler names are based on the underlying type of the variable being +declared or of the reference passed. Because these attributes are +associated with subroutine or variable declarations, this deliberately +ignores any possibility of being blessed into some package. Thus, a +subroutine declaration uses "CODE" as its I, and even a blessed +hash reference uses "HASH" as its I. + +The class methods invoked for modifying and fetching are these: + +=over 4 + +=item FETCH_I_ATTRIBUTES + +This method receives a single argument, which is a reference to the +variable or subroutine for which package-defined attributes are desired. +The expected return value is a list of associated attributes. +This list may be empty. + +=item MODIFY_I_ATTRIBUTES + +This method is called with two fixed arguments, followed by the list of +attributes from the relevant declaration. The two fixed arguments are +the relevant package name and a reference to the declared subroutine or +variable. The expected return value as a list of attributes which were +not recognized by this handler. Note that this allows for a derived class +to delegate a call to its base class, and then only examine the attributes +which the base class didn't already handle for it. + +The call to this method is currently made I the processing of the +declaration. In particular, this means that a subroutine reference will +probably be for an undefined subroutine, even if this declaration is +actually part of the definition. + +=back + +Calling C from within the scope of a null package +declaration C for an unblessed variable reference will +not provide any starting package name for the 'fetch' method lookup. +Thus, this circumstance will not result in a method call for package-defined +attributes. A named subroutine knows to which symbol table entry it belongs +(or originally belonged), and it will use the corresponding package. +An anonymous subroutine knows the package name into which it was compiled +(unless it was also compiled with a null package declaration), and so it +will use that package name. + +=head2 Syntax of Attribute Lists + +An attribute list is a sequence of attribute specifications, separated by +whitespace or a colon (with optional whitespace). +Each attribute specification is a simple +name, optionally followed by a parenthesised parameter list. +If such a parameter list is present, it is scanned past as for the rules +for the C operator. (See L.) +The parameter list is passed as it was found, however, and not as per C. + +Some examples of syntactically valid attribute lists: + + switch(10,foo(7,3)) : expensive + Ugly('\(") :Bad + _5x5 + locked method + +Some examples of syntactically invalid attribute lists (with annotation): + + switch(10,foo() # ()-string not balanced + Ugly('(') # ()-string not balanced + 5x5 # "5x5" not a valid identifier + Y2::north # "Y2::north" not a simple identifier + foo + bar # "+" neither a colon nor whitespace + +=head1 EXPORTS + +=head2 Default exports + +None. + +=head2 Available exports + +The routines C and C are exportable. + +=head2 Export tags defined + +The C<:ALL> tag will get all of the above exports. + +=head1 EXAMPLES + +Here are some samples of syntactically valid declarations, with annotation +as to how they resolve internally into C invocations by +perl. These examples are primarily useful to see how the "appropriate +package" is found for the possible method lookups for package-defined +attributes. + +=over 4 + +=item 1. + +Code: + + package Canine; + package Dog; + my Canine $spot : Watchful ; + +Effect: + + use attributes Canine => \$spot, "Watchful"; + +=item 2. + +Code: + + package Felis; + my $cat : Nervous; + +Effect: + + use attributes Felis => \$cat, "Nervous"; + +=item 3. + +Code: + + package X; + sub foo : locked ; + +Effect: + + use attributes X => \&foo, "locked"; + +=item 4. + +Code: + + package X; + sub Y::x : locked { 1 } + +Effect: + + use attributes Y => \&Y::x, "locked"; + +=item 5. + +Code: + + package X; + sub foo { 1 } + + package Y; + BEGIN { *bar = \&X::foo; } + + package Z; + sub Y::bar : locked ; + +Effect: + + use attributes X => \&X::foo, "locked"; + +=back + +This last example is purely for purposes of completeness. You should not +be trying to mess with the attributes of something in a package that's +not your own. + +=head1 SEE ALSO + +L and +L for details on the basic declarations; +L for the obsolescent form of subroutine attribute specification +which this module replaces; +L for details on the normal invocation mechanism. + +=cut + diff --git a/contrib/perl5/lib/autouse.pm b/contrib/perl5/lib/autouse.pm index 4445c6c419bd..179c382ca294 100644 --- a/contrib/perl5/lib/autouse.pm +++ b/contrib/perl5/lib/autouse.pm @@ -3,7 +3,7 @@ package autouse; #use strict; # debugging only use 5.003_90; # ->can, for my $var -$autouse::VERSION = '1.01'; +$autouse::VERSION = '1.02'; $autouse::DEBUG ||= 0; @@ -25,7 +25,7 @@ sub import { vet_import $module; local $Exporter::ExportLevel = $Exporter::ExportLevel + 1; # $Exporter::Verbose = 1; - return $module->import(map { (my $f = $_) =~ s/\(.*?\)$// } @_); + return $module->import(map { (my $f = $_) =~ s/\(.*?\)$//; $f } @_); } # It is not loaded: need to do real work. diff --git a/contrib/perl5/lib/base.pm b/contrib/perl5/lib/base.pm index 3500cbfb8985..3cb42f5bfa2f 100644 --- a/contrib/perl5/lib/base.pm +++ b/contrib/perl5/lib/base.pm @@ -19,12 +19,21 @@ Roughly similar in effect to Will also initialize the %FIELDS hash if one of the base classes has it. Multiple inheritance of %FIELDS is not supported. The 'base' -pragma will croak if multiple base classes has a %FIELDS hash. See +pragma will croak if multiple base classes have a %FIELDS hash. See L for a description of this feature. When strict 'vars' is in scope I also let you assign to @ISA without having to declare @ISA with the 'vars' pragma first. +If any of the base classes are not loaded yet, I silently +Cs them. Whether to C a base class package is +determined by the absence of a global $VERSION in the base package. +If $VERSION is not detected even after loading it, will +define $VERSION in the base package, setting it to the string +C<-1, defined by base.pm>. + +=head1 HISTORY + This module was introduced with Perl 5.004_04. =head1 SEE ALSO @@ -35,22 +44,30 @@ L package base; +use 5.005_64; +our $VERSION = "1.01"; + sub import { my $class = shift; my $fields_base; + my $pkg = caller(0); foreach my $base (@_) { - unless (defined %{"$base\::"}) { + next if $pkg->isa($base); + push @{"$pkg\::ISA"}, $base; + unless (exists ${"$base\::"}{VERSION}) { eval "require $base"; # Only ignore "Can't locate" errors from our eval require. # Other fatal errors (syntax etc) must be reported. die if $@ && $@ !~ /^Can't locate .*? at \(eval /; - unless (defined %{"$base\::"}) { + unless (%{"$base\::"}) { require Carp; Carp::croak("Base class package \"$base\" is empty.\n", "\t(Perhaps you need to 'use' the module ", "which defines that package first.)"); } + ${"$base\::VERSION"} = "-1, set by base.pm" + unless exists ${"$base\::"}{VERSION}; } # A simple test like (defined %{"$base\::FIELDS"}) will @@ -66,8 +83,6 @@ sub import { } } } - my $pkg = caller(0); - push @{"$pkg\::ISA"}, @_; if ($fields_base) { require fields; fields::inherit($pkg, $fields_base); diff --git a/contrib/perl5/lib/bigfloat.pl b/contrib/perl5/lib/bigfloat.pl index d687c784f1ca..8c28abdcd1d2 100644 --- a/contrib/perl5/lib/bigfloat.pl +++ b/contrib/perl5/lib/bigfloat.pl @@ -1,12 +1,21 @@ package bigfloat; require "bigint.pl"; +# +# This library is no longer being maintained, and is included for backward +# compatibility with Perl 4 programs which may require it. +# +# In particular, this should not be used as an example of modern Perl +# programming techniques. +# +# Suggested alternative: Math::BigFloat +# # Arbitrary length float math package # # by Mark Biggar # # number format # canonical strings have the form /[+-]\d+E[+-]\d+/ -# Input values can have inbedded whitespace +# Input values can have embedded whitespace # Error returns # 'NaN' An input parameter was "Not a Number" or # divide by zero or sqrt of negative number @@ -70,7 +79,12 @@ sub norm { #(mantissa, exponent) return fnum_str sub main'fneg { #(fnum_str) return fnum_str local($_) = &'fnorm($_[$[]); vec($_,0,8) ^= ord('+') ^ ord('-') unless $_ eq '+0E+0'; # flip sign - s/^H/N/; + if ( ord("\t") == 9 ) { # ascii + s/^H/N/; + } + else { # ebcdic character set + s/\373/N/; + } $_; } @@ -126,7 +140,7 @@ sub main'fdiv #(fnum_str, fnum_str[,scale]) return fnum_str $scale = length($xm)-1 if (length($xm)-1 > $scale); $scale = length($ym)-1 if (length($ym)-1 > $scale); $scale = $scale + length($ym) - length($xm); - &norm(&round(&'bdiv($xm.('0' x $scale),$ym),$ym), + &norm(&round(&'bdiv($xm.('0' x $scale),$ym),&'babs($ym)), $xe-$ye-$scale); } } @@ -186,7 +200,12 @@ sub main'ffround { #(fnum_str, scale) return fnum_str if ($xe < 1) { '+0E+0'; } elsif ($xe == 1) { - &norm(&round('+0',"+0".substr($xm,$[+1,1),"+10"), $scale); + # The first substr preserves the sign, which means that + # we'll pass a non-normalized "-0" to &round when rounding + # -0.006 (for example), purely so that &round won't lose + # the sign. + &norm(&round(substr($xm,$[,1).'0', + "+0".substr($xm,$[+1,1),"+10"), $scale); } else { &norm(&round(substr($xm,$[,$xe), "+0".substr($xm,$[+$xe,1),"+10"), $scale); diff --git a/contrib/perl5/lib/bigint.pl b/contrib/perl5/lib/bigint.pl index adeb17f28a93..4044f7f63483 100644 --- a/contrib/perl5/lib/bigint.pl +++ b/contrib/perl5/lib/bigint.pl @@ -1,5 +1,13 @@ package bigint; - +# +# This library is no longer being maintained, and is included for backward +# compatibility with Perl 4 programs which may require it. +# +# In particular, this should not be used as an example of modern Perl +# programming techniques. +# +# Suggested alternative: Math::BigInt +# # arbitrary size integer math package # # by Mark Biggar diff --git a/contrib/perl5/lib/bigrat.pl b/contrib/perl5/lib/bigrat.pl index fb436ce57081..2d3738f805b9 100644 --- a/contrib/perl5/lib/bigrat.pl +++ b/contrib/perl5/lib/bigrat.pl @@ -1,6 +1,12 @@ package bigrat; require "bigint.pl"; - +# +# This library is no longer being maintained, and is included for backward +# compatibility with Perl 4 programs which may require it. +# +# In particular, this should not be used as an example of modern Perl +# programming techniques. +# # Arbitrary size rational math package # # by Mark Biggar diff --git a/contrib/perl5/lib/blib.pm b/contrib/perl5/lib/blib.pm index 1d56a58174e3..0916f797fd11 100644 --- a/contrib/perl5/lib/blib.pm +++ b/contrib/perl5/lib/blib.pm @@ -45,12 +45,12 @@ sub import { my $package = shift; my $dir = getcwd; - if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/$--; } + if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/\z--; } if (@_) { $dir = shift; - $dir =~ s/blib$//; - $dir =~ s,/+$,,; + $dir =~ s/blib\z//; + $dir =~ s,/+\z,,; $dir = '.' unless ($dir); die "$dir is not a directory\n" unless (-d $dir); } diff --git a/contrib/perl5/lib/bytes.pm b/contrib/perl5/lib/bytes.pm new file mode 100644 index 000000000000..f93d6158d9fc --- /dev/null +++ b/contrib/perl5/lib/bytes.pm @@ -0,0 +1,52 @@ +package bytes; + +$bytes::hint_bits = 0x00000008; + +sub import { + $^H |= $bytes::hint_bits; +} + +sub unimport { + $^H &= ~$bytes::hint_bits; +} + +sub AUTOLOAD { + require "bytes_heavy.pl"; + goto &$AUTOLOAD; +} + +sub length ($); + +1; +__END__ + +=head1 NAME + +bytes - Perl pragma to force byte semantics rather than character semantics + +=head1 SYNOPSIS + + use bytes; + no bytes; + +=head1 DESCRIPTION + +WARNING: The implementation of Unicode support in Perl is incomplete. +See L for the exact details. + +The C pragma disables character semantics for the rest of the +lexical scope in which it appears. C can be used to reverse +the effect of C within the current lexical scope. + +Perl normally assumes character semantics in the presence of +character data (i.e. data that has come from a source that has +been marked as being of a particular character encoding). + +To understand the implications and differences between character +semantics and byte semantics, see L. + +=head1 SEE ALSO + +L, L + +=cut diff --git a/contrib/perl5/lib/bytes_heavy.pl b/contrib/perl5/lib/bytes_heavy.pl new file mode 100644 index 000000000000..47bdbf91b0d0 --- /dev/null +++ b/contrib/perl5/lib/bytes_heavy.pl @@ -0,0 +1,8 @@ +package bytes; + +sub length ($) { + BEGIN { bytes::import() } + return CORE::length($_[0]); +} + +1; diff --git a/contrib/perl5/lib/cacheout.pl b/contrib/perl5/lib/cacheout.pl index 64378cffc6f0..d2669a1cfa82 100644 --- a/contrib/perl5/lib/cacheout.pl +++ b/contrib/perl5/lib/cacheout.pl @@ -1,3 +1,12 @@ +# +# This library is no longer being maintained, and is included for backward +# compatibility with Perl 4 programs which may require it. +# +# In particular, this should not be used as an example of modern Perl +# programming techniques. +# +# Suggested alternative: FileCache + # Open in their package. sub cacheout'open { diff --git a/contrib/perl5/lib/charnames.pm b/contrib/perl5/lib/charnames.pm new file mode 100644 index 000000000000..7c2209b9f096 --- /dev/null +++ b/contrib/perl5/lib/charnames.pm @@ -0,0 +1,135 @@ +package charnames; +use bytes (); # for $bytes::hint_bits +$charnames::hint_bits = 0x20000; + +my $txt; + +# This is not optimized in any way yet +sub charnames { + $name = shift; + $txt = do "unicode/Name.pl" unless $txt; + my @off; + if ($^H{charnames_full} and $txt =~ /\t\t$name$/m) { + @off = ($-[0], $+[0]); + } + unless (@off) { + if ($^H{charnames_short} and $name =~ /^(.*?):(.*)/s) { + my ($script, $cname) = ($1,$2); + my $case = ( $cname =~ /[[:upper:]]/ ? "CAPITAL" : "SMALL"); + if ($txt =~ m/\t\t\U$script\E (?:$case )?LETTER \U$cname$/m) { + @off = ($-[0], $+[0]); + } + } + } + unless (@off) { + my $case = ( $name =~ /[[:upper:]]/ ? "CAPITAL" : "SMALL"); + for ( @{$^H{charnames_scripts}} ) { + (@off = ($-[0], $+[0])), last + if $txt =~ m/\t\t$_ (?:$case )?LETTER \U$name$/m; + } + } + die "Unknown charname '$name'" unless @off; + + my $ord = hex substr $txt, $off[0] - 4, 4; + if ($^H & $bytes::hint_bits) { # "use bytes" in effect? + use bytes; + return chr $ord if $ord <= 255; + my $hex = sprintf '%X=0%o', $ord, $ord; + my $fname = substr $txt, $off[0] + 2, $off[1] - $off[0] - 2; + die "Character 0x$hex with name '$fname' is above 0xFF"; + } + return chr $ord; +} + +sub import { + shift; + die "`use charnames' needs explicit imports list" unless @_; + $^H |= $charnames::hint_bits; + $^H{charnames} = \&charnames ; + my %h; + @h{@_} = (1) x @_; + $^H{charnames_full} = delete $h{':full'}; + $^H{charnames_short} = delete $h{':short'}; + $^H{charnames_scripts} = [map uc, keys %h]; +} + + +1; +__END__ + +=head1 NAME + +charnames - define character names for C<\N{named}> string literal escape. + +=head1 SYNOPSIS + + use charnames ':full'; + print "\N{GREEK SMALL LETTER SIGMA} is called sigma.\n"; + + use charnames ':short'; + print "\N{greek:Sigma} is an upper-case sigma.\n"; + + use charnames qw(cyrillic greek); + print "\N{sigma} is Greek sigma, and \N{be} is Cyrillic b.\n"; + +=head1 DESCRIPTION + +Pragma C supports arguments C<:full>, C<:short> and +script names. If C<:full> is present, for expansion of +C<\N{CHARNAME}}> string C is first looked in the list of +standard Unicode names of chars. If C<:short> is present, and +C has the form C, then C is looked up +as a letter in script C