diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2004-04-07 21:13:49 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2004-04-07 21:13:49 +0000 |
commit | 06b4a8c77def9992257264115d36deba7767935f (patch) | |
tree | 6b88d97816f654373da730fbaabf7672f43a7c09 /gnu | |
parent | 9e371616af376cba5e412bb75b9fc1af2fba1742 (diff) |
perl 5.8.3 from CPAN
Diffstat (limited to 'gnu')
84 files changed, 5915 insertions, 313 deletions
diff --git a/gnu/usr.bin/perl/AUTHORS b/gnu/usr.bin/perl/AUTHORS index 37211754ef4..0d6c613d8b7 100644 --- a/gnu/usr.bin/perl/AUTHORS +++ b/gnu/usr.bin/perl/AUTHORS @@ -488,7 +488,7 @@ Mark Kettenis <kettenis@wins.uva.nl> Mark Klein <mklein@dis.com> Mark Knutsen <knutsen@pilot.njin.net> Mark Kvale <kvale@phy.ucsf.edu> -Mark Leighton Fisher <fisherm@tce.com> +Mark Leighton Fisher <mark-fisher@mindspring.com> Mark Murray <mark@grondar.za> Mark P. Lutz <mark.p.lutz@boeing.com> Mark Pease <peasem@primenet.com> @@ -538,6 +538,7 @@ Mike Fletcher <fletch@phydeaux.org> Mike Giroux <mgiroux@bear.com> Mike Hopkirk <hops@sco.com> Mike Mestnik <MMestnik@rustconsulting.com> +Mike Pomraning <mjp@pilcrow.madison.wi.us> Mike Rogers Mike Schilli <m@perlmeister.com> Mike Stok <mike@stok.co.uk> @@ -747,6 +748,7 @@ Tony Camas Tony Cook <tony@develop-help.com> Tony Sanders <sanders@bsdi.com> Tor Lillqvist <tml@hemuli.tte.vtt.fi> +Torsten Foertsch <torsten.foertsch@gmx.net> Trevor Blackwell <tlb@viaweb.com> Tuomas J. Lukka <tjl@lukka.student.harvard.edu> Tye McQueen <tye@metronet.com> diff --git a/gnu/usr.bin/perl/Changes5.8.2 b/gnu/usr.bin/perl/Changes5.8.2 new file mode 100644 index 00000000000..9f53fdb0499 --- /dev/null +++ b/gnu/usr.bin/perl/Changes5.8.2 @@ -0,0 +1,1307 @@ +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 +pod/perlhack.pod for the details. + +For information on what's new in this release, see pod/perldelta.pod. + +[The "CAST AND CREW" list has been moved to AUTHORS.] + +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) + +The Message-Ids in the change entries refer to the email messages sent +to the perl5-porters mailing list. You can retrieve the messages for +example from http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ + +-------------- +Version v5.8.2 Maintenance release working toward v5.8.2 +-------------- +____________________________________________________________________________ +____________________________________________________________________________ +[ 21670] By: nicholas on 2003/11/05 19:58:51 + Log: Break a leg. + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 21669] By: nicholas on 2003/11/05 19:28:41 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21668] By: nicholas on 2003/11/05 19:26:49 + Log: Integrate: + [ 21667] + From: Craig Berry <craigberry@mac.com> + Subject: Opcode.xs/RC2 compile nit on VMS + Date: Wed, 05 Nov 2003 12:16:34 -0600 + Message-ID: <2097592.1068056194261.JavaMail.craigberry@mac.com> + Branch: maint-5.8/perl + !> ext/Opcode/Opcode.xs +____________________________________________________________________________ +[ 21666] By: nicholas on 2003/11/05 19:01:16 + Log: Note planned release date. + Branch: maint-5.8/perl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 21665] By: nicholas on 2003/11/05 19:00:29 + Log: Integrate: + [ 21661] + Subject: [PATCH pod/perlhist.pod] Mention 5.8.2-RC2 + From: Abigail <abigail@abigail.nl> + Date: Tue, 4 Nov 2003 10:40:57 +0100 + Message-Id: <20031104094057.GA22508@abigail.nl> + Branch: maint-5.8/perl + !> pod/perlhist.pod +____________________________________________________________________________ +[ 21659] By: nicholas on 2003/11/05 08:18:49 + Log: Integrate: + [ 21656] + Subject: Re: [gherteg@csc.com: your CPAN page on EBCDIC] + From: PPrymmer@factset.com + Date: Tue, 4 Nov 2003 10:00:07 -0500 + Message-ID: <OF9A22A404.A32A5C26-ON85256DD4.00522E92-85256DD4.005268A4@factset.com> + Branch: maint-5.8/perl + !> pod/perlebcdic.pod +____________________________________________________________________________ +[ 21658] By: nicholas on 2003/11/05 08:12:08 + Log: Subject: [PATCH 5.8.2] reentr.pl is not defining _srandom_struct + From: Jan Dubois <jand@ActiveState.com> + Date: Tue, 04 Nov 2003 17:16:00 -0800 + Message-ID: <0mjgqvk4f8idatljni3cfoeta3ljbm8a6c@4ax.com> + Branch: maint-5.8/perl + ! reentr.h reentr.pl +____________________________________________________________________________ +[ 21654] By: nicholas on 2003/11/04 22:10:35 + Log: Subject: Re: [PATCH 5.8.1] make reentr.[ch] compatible with 5.8.0 again + From: Jan Dubois <jand@ActiveState.com> + Date: Mon, 03 Nov 2003 00:58:21 -0800 + Message-ID: <ip5cqvcu5qk1mc2e38ne7iv81bpljjrfe6@4ax.com> + Branch: maint-5.8/perl + ! reentr.inc reentr.pl +____________________________________________________________________________ +[ 21653] By: nicholas on 2003/11/04 21:54:48 + Log: Integrate: + [ 21651] + Subject: Re: [PATCH 5.8.2 @21574] OS/2 build + From: Ilya Zakharevich <nospam-abuse@ilyaz.org> + Date: Mon, 3 Nov 2003 20:20:44 -0800 + Message-ID: <20031104042044.GA1682@math.berkeley.edu> + Branch: maint-5.8/perl + !> os2/Makefile.SHs +____________________________________________________________________________ +[ 21649] By: nicholas on 2003/11/03 20:43:47 + Log: Integrate: + [ 21646] + Subject: Cwd.xs: off-by-one buffer overflow in realpath() + From: Casey West <casey@geeknest.com> + Date: Mon, 3 Nov 2003 10:11:43 -0500 + Message-ID: <20031103151143.GB430@geeknest.com> + Branch: maint-5.8/perl + !> ext/Cwd/Cwd.xs +____________________________________________________________________________ +[ 21648] By: nicholas on 2003/11/03 20:26:54 + Log: Disarm RC2 + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 21643] By: nicholas on 2003/11/03 07:18:47 + Log: I bet yes + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 21642] By: nicholas on 2003/11/03 07:18:04 + Log: space should be tab for lib/I18N/LangTags/t/02decency.t + Branch: maint-5.8/perl + ! MANIFEST +____________________________________________________________________________ +[ 21641] By: nicholas on 2003/11/03 07:13:20 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21640] By: nicholas on 2003/11/03 07:11:34 + Log: Integrate: + [ 21638] + s/new_hash/rehash/g (Stas suggested a better name) + + [ 21639] + Stas would prefer not to have MOD_PERL defines in perl. + Branch: maint-5.8/perl + ! embedvar.h + !> hv.c hv.h intrpvar.h lib/Hash/Util.pm perl.c perlapi.h sv.c + !> universal.c util.c +____________________________________________________________________________ +[ 21637] By: nicholas on 2003/11/02 23:07:41 + Log: Update our sample config with one generated for 5.8.2 + Branch: maint-5.8/perl + ! Porting/config.sh Porting/config_H +____________________________________________________________________________ +[ 21636] By: nicholas on 2003/11/02 22:47:37 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21635] By: nicholas on 2003/11/02 22:45:22 + Log: Integrate: + [ 21634] + Provide Internals::new_hash_seed to return PL_new_hash_seed, and + make Hash::Util::hash_seed use this. + Branch: maint-5.8/perl + !> lib/Hash/Util.pm universal.c +____________________________________________________________________________ +[ 21633] By: nicholas on 2003/11/02 22:22:34 + Log: Integrate: + [ 21588] + Subject: [PATCH] Devel::PPPort and scan_bin + From: "Marcus Holland-Moritz" <mhx-perl@gmx.net> + Date: Wed, 29 Oct 2003 22:53:43 +0100 + Message-ID: <037201c39e67$1faa9940$0c2f1fac@R2D2> + Branch: maint-5.8/perl + !> ext/Devel/PPPort/PPPort.pm +____________________________________________________________________________ +[ 21632] By: nicholas on 2003/11/02 21:56:48 + Log: Integrate: + [ 21587] + Subject: [PATCH] change p4d2p to deal with new style diff2 output + From: Jan Dubois <jand@ActiveState.com> + Date: Thu, 30 Oct 2003 18:43:08 -0800 + Message-ID: <dpi3qvgf1uke7pj1gcpgmoh622lqcvl6uc@4ax.com> + Branch: maint-5.8/perl + !> Porting/p4d2p +____________________________________________________________________________ +[ 21631] By: nicholas on 2003/11/02 21:55:32 + Log: Integrate: + [ 21614] + Subject: Re: [PATCH bleadperl] (was Re: Is this brokenness in $< $( $> & $) ?) + From: Rick Delaney <rick@bort.ca> + Date: Mon, 27 Oct 2003 16:24:16 -0500 + Message-ID: <20031027162416.H2233@biff.bort.ca> + Branch: maint-5.8/perl + !> pp_hot.c +____________________________________________________________________________ +[ 21630] By: nicholas on 2003/11/02 21:28:01 + Log: + Fix for [perl #24347] segfault with Safe + The empty %INC created for safe compartements was freed + too early. + Branch: maint-5.8/perl + !> ext/Opcode/Opcode.xs +____________________________________________________________________________ +[ 21629] By: nicholas on 2003/11/02 21:13:40 + Log: Integrate: + [ 21599] + whoops, typo + + [ 21616] + Subject: DOCPATCH: does STORE need to return anything and if so what? + From: david nicol <whatever@davidnicol.com> + Date: 26 Oct 2003 22:34:04 -0600 + Message-Id: <1067229244.1071.51.camel@plaza.davidnicol.com> + + [ 21625] + Mention perl 5.8.2-RC1 in perlhist, as spotted by Abigail. + + [ 21627] + Subject: [PATCH pod/perlguts.pod] update embed.pl description + From: "Marcus Holland-Moritz" <mhx-perl@gmx.net> + Date: Sun, 2 Nov 2003 22:24:28 +0100 + Message-ID: <007b01c3a187$b34c6110$0c2f1fac@R2D2> + Branch: maint-5.8/perl + !> ext/threads/shared/shared.xs pod/perlguts.pod pod/perlhist.pod + !> pod/perltie.pod +____________________________________________________________________________ +[ 21626] By: nicholas on 2003/11/02 20:27:25 + Log: Integrate: + [ 21615] + Subject: [PATCH] DB_File 1.807 + From: "Paul Marquess" <Paul.Marquess@btinternet.com> + Date: Sat, 1 Nov 2003 13:50:12 -0000 + Message-ID: <AIEAJICLCBDNAAOLLOKLOENMPAAA.Paul.Marquess@btinternet.com> + Branch: maint-5.8/perl + !> ext/DB_File/Changes ext/DB_File/DB_File.pm + !> ext/DB_File/DB_File.xs ext/DB_File/dbinfo + !> ext/DB_File/t/db-hash.t ext/DB_File/t/db-recno.t +____________________________________________________________________________ +[ 21624] By: nicholas on 2003/11/02 20:16:07 + Log: Tweaks (from Jan Dubois, Petras Kudaras and Slaven Rezic) + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21623] By: nicholas on 2003/11/02 19:52:04 + Log: Integrate: + [ 21617] + Portability nit for MinGW 3. + + Subject: MinGW-3.1.0-1 _CRTIMP definition preempting win32.h's + From: Greg Matheson <lang@ms.chinmin.edu.tw> + Date: Thu, 30 Oct 2003 14:11:58 +0800 + Message-ID: <20031030141158.A11772@ms> + (actual patch by Abe Timmerman) + + [ 21619] + Quoted-printable is evil. + Branch: maint-5.8/perl + !> win32/win32.h +____________________________________________________________________________ +[ 21622] By: nicholas on 2003/11/02 18:50:41 + Log: Integrate: + [ 21620] + Subject: [PATCH 5.8.2 @21574] OS/2 build + From: Ilya Zakharevich <nospam-abuse@ilyaz.org> + Date: Wed, 29 Oct 2003 14:00:18 -0800 + Message-ID: <20031029220017.GA26384@math.berkeley.edu> + Branch: maint-5.8/perl + !> ext/DynaLoader/DynaLoader_pm.PL makedef.pl os2/Makefile.SHs + !> os2/OS2/REXX/REXX.xs os2/os2.c os2/os2_base.t os2/os2ish.h + !> os2/perl2cmd.pl perlio.c +____________________________________________________________________________ +[ 21621] By: nicholas on 2003/11/02 18:29:05 + Log: Integrate: + [ 21618] + Stas spotted a missed s//new_/ for the hash seed renaming games + Branch: maint-5.8/perl + !> perl.c +____________________________________________________________________________ +[ 21613] By: nicholas on 2003/11/01 16:52:03 + Log: @INC caching of failures was backed out + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21612] By: nicholas on 2003/11/01 16:32:46 + Log: Integrate: + [ 21611] + D'oh! t/op/hash.t wasn't in the MANIFEST. Rafael spotted this + Branch: maint-5.8/perl + !> MANIFEST +____________________________________________________________________________ +[ 21610] By: nicholas on 2003/11/01 16:30:14 + Log: Integrate: + [ 21589] + Subject: [5.8.x segfault + patch] chicken&egg segfault in -Dm -Mthreads + From: Stas Bekman <stas@stason.org> + Date: Wed, 29 Oct 2003 15:15:15 -0800 + Message-ID: <3FA04A03.5010603@stason.org> + (enclosed in a #ifdef DEBUGGING) + Branch: maint-5.8/perl + !> sv.c +____________________________________________________________________________ +[ 21609] By: nicholas on 2003/11/01 16:14:51 + Log: Integrate: + [ 21595] + Prevent the installation of makefiles that can be found + under lib/. + Branch: maint-5.8/perl + !> installperl +____________________________________________________________________________ +[ 21608] By: nicholas on 2003/11/01 15:35:16 + Log: Integrate: + [ 21607] + mod_perl2 will require access to the Plan C hashing function. + Branch: maint-5.8/perl + !> hv.h +____________________________________________________________________________ +[ 21606] By: nicholas on 2003/11/01 14:58:31 + Log: Integrate: + [ 21591] + Subject: [PATCH] Off-by-one error in regcomp.c + From: Slaven Rezic <slaven@rezic.de> + Date: Fri, 31 Oct 2003 12:16:11 +0000 + Message-Id: <1067602571.12768@devpc01.iconmobile.de> + + [ 21593] + Test nit ; goes with change 21591 + Branch: maint-5.8/perl + !> regcomp.c t/lib/warnings/regcomp t/op/regmesg.t +____________________________________________________________________________ +[ 21605] By: nicholas on 2003/11/01 14:38:22 + Log: Integrate: + [ 21604] + Add Internals::HvREHASH to expose the rehashing flag + t/op/hash.t tests that pathological data triggers rehashing + Branch: maint-5.8/perl + +> t/op/hash.t + !> universal.c +____________________________________________________________________________ +[ 21603] By: nicholas on 2003/11/01 13:03:55 + Log: Integrate: + [ 21598] + [perl #24368] seg faults when deleting keys of shared hash refs + Ensure that the shared_sv get magic of the element being deleted + is called. Also, avoid posible memory leaks by wrapping all shared + context sections with ENTER/SAVETMPS + Branch: maint-5.8/perl + !> ext/threads/shared/shared.xs +____________________________________________________________________________ +[ 21602] By: nicholas on 2003/11/01 12:45:20 + Log: Forgot to manually merge in the diffs rejected from 21601 + due to LF/CRLF differences. + Branch: maint-5.8/perl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 21601] By: nicholas on 2003/11/01 12:34:09 + Log: Subject: [PATCH 5.8.1] make reentr.[ch] compatible with 5.8.0 again + From: Jan Dubois <jand@ActiveState.com> + Date: Thu, 30 Oct 2003 16:58:05 -0800 + Message-ID: <mja3qv47kmrhiip1l8pfl7bij0reesjr6p@4ax.com> + Branch: maint-5.8/perl + + reentr.inc + ! MANIFEST installperl perl.h reentr.c reentr.h reentr.pl + ! win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 21600] By: nicholas on 2003/11/01 11:00:46 + Log: Integrate: + [ 21590] + Subject: [patch pod/perlfunc.pod] separate two unrelated notes in require + From: Stas Bekman <stas@stason.org> + Date: Wed, 29 Oct 2003 16:47:24 -0800 + Message-ID: <3FA05F9C.2080304@stason.org> + + [ 21592] + Subject: [PATCH] Document PERL_DL_NONLAZY + From: Gisle Aas <gisle@ActiveState.com> + Date: 31 Oct 2003 03:13:03 -0800 + Message-ID: <lrn0bhbqyo.fsf@caliper.activestate.com> + + [ 21596] + Subject: Re: [perl #24367] [PATCH] configure flag -Dextras="HTML::Parser" doesn't seem to do anything + From: Andy Dougherty <doughera@lafayette.edu> + Date: Fri, 31 Oct 2003 15:32:35 -0500 (EST) + Message-ID: <Pine.SOL.4.53.0310311433440.8552@maxwell.phys.lafayette.edu> + (plus POD link fixes) + Branch: maint-5.8/perl + !> INSTALL pod/perlfunc.pod pod/perlrun.pod +____________________________________________________________________________ +[ 21597] By: nicholas on 2003/10/31 21:03:47 + Log: Back out 21449 (MakeMaker SIGN) + Schwern will integrate and make a CPAN release first + Branch: maint-5.8/perl + ! lib/ExtUtils/MM_Any.pm lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/MakeMaker.pm pod/perldelta.pod +____________________________________________________________________________ +[ 21594] By: nicholas on 2003/10/31 20:28:11 + Log: Integrate (as TODO test): + [ 21565] + Subject: [PATCH t/comp/proto.t] Test (5.9.x) + From: Abigail <abigail@abigail.nl> + Date: Mon, 27 Oct 2003 14:50:24 +0100 + Message-ID: <20031027135024.GA12666@abigail.nl> + Branch: maint-5.8/perl + ! t/comp/proto.t +____________________________________________________________________________ +[ 21585] By: nicholas on 2003/10/30 22:54:30 + Log: Integrate: + [ 21583] + Rewrite to correctly use test.pl + + Date: Thu, 30 Oct 2003 15:51:03 -0800 + From: Michael G Schwern <schwern@pobox.com> + Subject: Re: Fix for the orange lion bug - aka empty sub bug + Message-ID: <20031030235103.GC27017@localhost.comcast.net> + Branch: maint-5.8/perl + !> t/op/sub.t +____________________________________________________________________________ +[ 21584] By: nicholas on 2003/10/30 22:40:29 + Log: Integrate: + [ 21582] + Date: Thu, 30 Oct 2003 22:01:35 +0000 + Subject: Fix for the orange lion bug - aka empty sub bug + From: Arthur Bergman <sky@nanisky.com> + Message-Id: <A10EEA90-0B24-11D8-93CD-000A95A2734C@nanisky.com> + Branch: maint-5.8/perl + +> t/op/sub.t + !> MANIFEST op.c +____________________________________________________________________________ +[ 21581] By: nicholas on 2003/10/30 20:16:52 + Log: Integrate: + [ 21580] + 14 is the chain length for attack. From + + Message-ID: <20031030204117.16008.qmail@plover.com> + Subject: Re: 5.8.2-RC1 and mp2 + Date: Thu, 30 Oct 2003 15:41:17 -0500 + From: Mark Jason Dominus <mjd@plover.com> + + and + + From: Scott A Crosby <scrosby@cs.rice.edu> + Subject: Re: 5.8.2-RC1 and mp2 + Date: 30 Oct 2003 14:08:06 -0600 + Message-ID: <oydd6cea3q1.fsf@bert.cs.rice.edu> + Branch: maint-5.8/perl + !> hv.c +____________________________________________________________________________ +[ 21579] By: nicholas on 2003/10/30 19:24:06 + Log: Revert part of 21497 (integration of 21418: + Subject: [PATCH] Fixing UNIVERSAL.pm's bit of unpleasantness) + and 21496 (caching of require failures in %INC) + Reconsider these for 5.8.3 + Branch: maint-5.8/perl + ! lib/UNIVERSAL.pm pp_ctl.c t/comp/require.t t/op/universal.t +____________________________________________________________________________ +[ 21578] By: nicholas on 2003/10/29 21:44:55 + Log: Suggested changes from Chip + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21577] By: nicholas on 2003/10/29 18:42:35 + Log: Integrate: + [ 21575] + Move a fcntl() example in perlfunc at a more proper place, + as suggested by : + Subject: [perl #24334] ioctl/fcntl doc confusion + From: "perl-5.8.0@ton.iguana.be (via RT)" <perlbug-followup@perl.org> + Date: 28 Oct 2003 13:37:49 -0000 + Message-ID: <rt-24334-66603.12.4990768314782@rt.perl.org> + Branch: maint-5.8/perl + !> pod/perlfunc.pod +____________________________________________________________________________ +[ 21576] By: nicholas on 2003/10/29 18:02:31 + Log: Date: Wed, 29 Oct 2003 07:39:30 +0800 + From: Autrijus Tang <autrijus@autrijus.org> + Subject: Re: 5.8.2 perldelta + Message-ID: <20031028233930.GA31574@aut.dyndns.org> + + Date: Tue, 28 Oct 2003 21:35:23 -0800 + From: Yitzchak Scott-Thoennes <sthoenna@efn.org> + Subject: Re: 5.8.2 perldelta + Message-ID: <20031029053403.GA252@efn.org> + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21574] By: nicholas on 2003/10/28 22:19:10 + Log: Ronald J Kimball correctly spotted that I forgot the timezone. + GMT. What else? + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21573] By: nicholas on 2003/10/28 21:43:07 + Log: Improvements from Dave Mitchell, Tom Christiansen and + Rafael Garcia-Suarez + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21572] By: nicholas on 2003/10/28 21:15:11 + Log: At last! A perldelta + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21571] By: nicholas on 2003/10/28 19:38:08 + Log: Integrate: + [ 21567] + Upgrade to Time::HiRes 1.52. + Branch: maint-5.8/perl + !> ext/Time/HiRes/Changes ext/Time/HiRes/HiRes.pm + !> ext/Time/HiRes/Makefile.PL ext/Time/HiRes/t/HiRes.t +____________________________________________________________________________ +[ 21570] By: nicholas on 2003/10/28 19:37:44 + Log: Changes was in a mess, with some entries in triplicate. + ("This is your receipt for your husband... + and this is my receipt for your receipt") + Branch: maint-5.8/perl + ! Changes +____________________________________________________________________________ +[ 21569] By: nicholas on 2003/10/28 18:36:05 + Log: Integrate: + [ 21564] + Fix more shared threads leaks: add SAVETMPS to the second branch + of sharedsv_scalar_store(). + Branch: maint-5.8/perl + !> ext/threads/shared/shared.xs +____________________________________________________________________________ +[ 21568] By: nicholas on 2003/10/28 18:20:54 + Log: Drop the "RC1" + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 21562] By: nicholas on 2003/10/27 18:06:15 + Log: Watch the wheels fall off, the springs fly out and the cogs jam... + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 21561] By: nicholas on 2003/10/27 18:02:11 + Log: Integrate: + [ 21560] + Record the escape^Wrelease of 5.9.0 + Branch: maint-5.8/perl + !> pod/perlhist.pod +____________________________________________________________________________ +[ 21559] By: nicholas on 2003/10/27 17:35:53 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21558] By: nicholas on 2003/10/27 17:29:16 + Log: Forgot to submit the updated table of contents + Branch: maint-5.8/perl + ! pod/perltoc.pod +____________________________________________________________________________ +[ 21557] By: nicholas on 2003/10/27 17:24:06 + Log: run pod/buildtoc + Branch: maint-5.8/perl + ! MANIFEST win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 21556] By: nicholas on 2003/10/27 17:16:57 + Log: Cargo cult change of 5.8.1 to 5.8.2 + Branch: maint-5.8/perl + ! Cross/README NetWare/Makefile Porting/config.sh + ! Porting/config_H cygwin/perlld.in epoc/createpkg.pl + ! patchlevel.h plan9/config.plan9 vos/build.cm + ! vos/config.alpha.def vos/config.alpha.h vos/config.ga.def + ! vos/config.ga.h vos/install_perl.cm win32/Makefile + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/config_H.vc64 win32/makefile.mk wince/Makefile.ce +____________________________________________________________________________ +[ 21555] By: nicholas on 2003/10/27 16:28:54 + Log: Integrate: + [ 21554] + Subject: Re: DBD::Sybase and Sybase::CTlib build problems w/ 5.8.1, Solaris, gcc + From: Alan Burlison <Alan.Burlison@sun.com> + Date: Tue, 21 Oct 2003 15:00:58 +0100 + Message-ID: <3F953C1A.3060800@sun.com> + Branch: maint-5.8/perl + !> hints/solaris_2.sh +____________________________________________________________________________ +[ 21553] By: nicholas on 2003/10/27 14:09:05 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21552] By: nicholas on 2003/10/27 14:07:08 + Log: Changes file was in the wrong order (as noticed by Chip) + Branch: maint-5.8/perl + ! Changes +____________________________________________________________________________ +[ 21551] By: nicholas on 2003/10/27 14:05:44 + Log: Integrate: + [ 21549] + Sync with Unicode::Collate 0.30 + + [ 21550] + Sync with Unicode::Normalize 0.25 + Branch: maint-5.8/perl + +> ext/Unicode/Normalize/t/fcdc.t ext/Unicode/Normalize/t/form.t + +> ext/Unicode/Normalize/t/proto.t + +> ext/Unicode/Normalize/t/split.t + +> lib/Unicode/Collate/t/hangtype.t + +> lib/Unicode/Collate/t/normal.t lib/Unicode/Collate/t/trailwt.t + +> lib/Unicode/Collate/t/variable.t + +> lib/Unicode/Collate/t/version.t + !> MANIFEST ext/Unicode/Normalize/Changes + !> ext/Unicode/Normalize/Makefile.PL + !> ext/Unicode/Normalize/Normalize.pm + !> ext/Unicode/Normalize/Normalize.xs + !> ext/Unicode/Normalize/README lib/Unicode/Collate.pm + !> lib/Unicode/Collate/Changes lib/Unicode/Collate/README + !> lib/Unicode/Collate/t/contract.t + !> lib/Unicode/Collate/t/hangul.t lib/Unicode/Collate/t/index.t + !> lib/Unicode/Collate/t/test.t +____________________________________________________________________________ +[ 21547] By: nicholas on 2003/10/27 10:04:34 + Log: Integrate: + [ 21544] + don't complain of podless .pm files that have a separate .pod file + Branch: maint-5.8/perl + !> pod/buildtoc +____________________________________________________________________________ +[ 21541] By: nicholas on 2003/10/26 20:51:55 + Log: Integrate: + [ 21535] + Return 21533 (with modifications) having found the problem + + (where 21533 is + Plan C rough edge smoothing. Criteria for a hash split is now + the earlier of "more keys than buckets" (the old test) or + linked list too long. Rehash is triggered after a split if the + longest linked list is too long.) + Branch: maint-5.8/perl + ! hv.c + !> hv.h +____________________________________________________________________________ +[ 21537] By: nicholas on 2003/10/25 23:05:21 + Log: Integrate: + [ 21536] + show the rehash flags in dumps + Branch: maint-5.8/perl + !> dump.c +____________________________________________________________________________ +[ 21531] By: nicholas on 2003/10/24 19:15:02 + Log: Integrate: + [ 21530] + + (The typo corrrection in blead) + Branch: maint-5.8/perl + !> ext/threads/shared/shared.xs +____________________________________________________________________________ +[ 21529] By: nicholas on 2003/10/23 19:39:41 + Log: Integrate: + [ 21526] + From: Jan Dubois <jand@ActiveState.com> + Subject: [PATCH] Update Pod::Perldoc from 3.10 to 3.11 + Date: Wed, 22 Oct 2003 20:17:07 -0700 + Message-ID: <mjhepvgtnifdlgrvp20urtuu058e1jrav2@4ax.com> + + From: Jan Dubois <jand@ActiveState.com> + Subject: [PATCH] Update I18N::LangTags from 0.28 to 0.29 + Date: Wed, 22 Oct 2003 20:26:56 -0700 + Message-ID: <jgiepv0a8fp8ffq3lpc5ujl7j25hoo1rdt@4ax.com> + + [ 21528] + When it says "add", then, like, you have to p4 add it. D'oh! + (missed the new file in "Update I18N::LangTags from 0.28 to 0.29") + Branch: maint-5.8/perl + +> lib/I18N/LangTags/t/02decency.t + !> MANIFEST lib/I18N/LangTags.pm lib/I18N/LangTags/ChangeLog + !> lib/I18N/LangTags/List.pm lib/I18N/LangTags/README + !> lib/Pod/Perldoc.pm lib/Pod/Perldoc/ToMan.pm pod/perldoc.pod + !> utils/perldoc.PL +____________________________________________________________________________ +[ 21525] By: nicholas on 2003/10/23 18:51:56 + Log: Integrate: + [ 21523] + Subject: [PATCH] utime documentation + From: Gisle Aas <gisle@ActiveState.com> + Date: 23 Oct 2003 05:33:43 -0700 + Message-Id: <lrekx4jfq0.fsf@caliper.activestate.com> + Branch: maint-5.8/perl + !> pod/perlfunc.pod +____________________________________________________________________________ +[ 21524] By: nicholas on 2003/10/23 18:38:02 + Log: Integrate: + [ 21522] + Subject: [PATCH] dup2() not going through PerlLIO abstraction layer + From: Jan Dubois <jand@ActiveState.com> + Date: Wed, 22 Oct 2003 20:33:54 -0700 + Message-Id: <vniepv0n5mcrbbutm0qgvori6n6vr6arsh@4ax.com> + Branch: maint-5.8/perl + !> doio.c +____________________________________________________________________________ +[ 21521] By: nicholas on 2003/10/22 20:30:05 + Log: Integrate: + [ 21520] + patch created by Casey West from: + + Subject: CPAN module problems + From: Edward Moy <emoy@apple.com> + Date: Fri, 10 Oct 2003 17:42:06 -0700 + Message-Id: <BD2513C0-FB83-11D7-9065-000A956EFDEE@apple.com> + + (change ld value in hints file) + Branch: maint-5.8/perl + !> hints/darwin.sh +____________________________________________________________________________ +[ 21519] By: nicholas on 2003/10/22 19:11:43 + Log: Integrate: + [ 21514] + Subject: [PATCH @20458] embedding perl + From: Radu Greab <rgreab@fx.ro> + Date: Tue, 05 Aug 2003 20:57:15 +0300 (EEST) + Message-Id: <20030805.205715.113441323.radu@yx.primIT.ro> + Branch: maint-5.8/perl + ! perl.c + !> hv.c intrpvar.h pod/perlembed.pod pod/perlintern.pod sv.c +____________________________________________________________________________ +[ 21518] By: nicholas on 2003/10/22 18:32:17 + Log: Integrate: + [ 21515] + Add a test.taintwarn makefile target, + to run the whole test suite with the -t switch. + Branch: maint-5.8/perl + !> Makefile.SH pod/perlhack.pod t/TEST +____________________________________________________________________________ +[ 21517] By: nicholas on 2003/10/22 17:53:48 + Log: Integrate: + [ 21513] + Fix doc bug #23890, as suggested by Himanshu Garg : + in perltoot, $him->fullname should be $him->fullname->as_string + when passed to printf. + + [ 21516] + Small email update in AUTHORS. + Branch: maint-5.8/perl + !> AUTHORS pod/perltoot.pod +____________________________________________________________________________ +[ 21512] By: nicholas on 2003/10/21 18:58:30 + Log: Integrate: + [ 21372] + Sync with libnet 1.17 + Branch: maint-5.8/perl + !> lib/Net/ChangeLog.libnet lib/Net/Domain.pm lib/Net/FTP.pm +____________________________________________________________________________ +[ 21511] By: nicholas on 2003/10/21 18:31:19 + Log: + Two OS/2 portability patches from Ilya. + + Subject: [PATCH 5.8.1 @21211] sockets broken on OS/2 + From: Ilya Zakharevich <nospam-abuse@ilyaz.org> + Date: Thu, 25 Sep 2003 12:09:11 -0700 + Message-ID: <20030925190911.GA27028@math.berkeley.edu> + + Subject: Re: [PATCH 5.8.1 @21379] tmpfile() broken on OS/2 + From: Ilya Zakharevich <nospam-abuse@ilyaz.org> + Date: Thu, 25 Sep 2003 19:50:45 -0700 + Message-ID: <20030926025045.GA27507@math.berkeley.edu> + Branch: maint-5.8/perl + !> doio.c os2/os2ish.h perl.h perlio.c pp_sys.c +____________________________________________________________________________ +[ 21508] By: nicholas on 2003/10/20 22:06:05 + Log: Integrate: + [ 21506] + Subject: [PATCH] add some missing defines to Devel::PPPort + From: "Marcus Holland-Moritz" <mhx-perl@gmx.net> + Date: Mon, 20 Oct 2003 20:14:19 +0200 + Message-ID: <03a301c39735$fb7cb220$0c2f1fac@R2D2> + Branch: maint-5.8/perl + !> ext/Devel/PPPort/Changes ext/Devel/PPPort/PPPort.pm +____________________________________________________________________________ +[ 21507] By: nicholas on 2003/10/20 20:14:57 + Log: Integrate: + [ 21505] + Subject: Re: [perl #24225] [5.8.1] segfault in binmode STDOUT, ':stdio'; print 1 + From: Slaven Rezic <slaven@rezic.de> + Date: 19 Oct 2003 17:54:59 +0200 + Message-ID: <871xt9te7g.fsf@vran.herceg.de> + Branch: maint-5.8/perl + !> perlio.c +____________________________________________________________________________ +[ 21504] By: nicholas on 2003/10/20 17:31:11 + Log: Integrate: + [ 21503] + Skip the chflags tests in filetest.t on Darwin. + Branch: maint-5.8/perl + !> lib/filetest.t +____________________________________________________________________________ +[ 21502] By: nicholas on 2003/10/19 19:49:25 + Log: Forgot to run regen.pl when I merged Plan C (already fixed in + the snapshot) + Branch: maint-5.8/perl + ! embedvar.h +____________________________________________________________________________ +[ 21501] By: nicholas on 2003/10/19 19:37:27 + Log: update MAINT level + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 21500] By: nicholas on 2003/10/19 19:35:55 + Log: Update Changes (submit by hand) - not sure if they're quite in the + tidiest order yet + Branch: maint-5.8/perl + ! Changes +____________________________________________________________________________ +[ 21499] By: nicholas on 2003/10/19 19:14:43 + Log: If you add files you must add them to the MANIFEST + Branch: maint-5.8/perl + ! MANIFEST +____________________________________________________________________________ +[ 21498] By: nicholas on 2003/10/19 19:08:39 + Log: Place the changes for 5.8.1 into their own file; start Changes afresh + for 5.8.2. For reference, 5.8.1 release was change 21377 + Branch: maint-5.8/perl + + Changes5.8.1 + ! Changes +____________________________________________________________________________ +[ 21497] By: nicholas on 2003/10/19 18:50:07 + Log: Integrate: + [ 21418] + Subject: [PATCH] Fixing UNIVERSAL.pm's bit of unpleasantness + From: schwern@pobox.com + Date: Mon, 6 Oct 2003 13:14:36 -0700 + Message-Id: <20031006131436.G20960@ttul.org> + + [ 21449] + Subject: [PATCH] SIGN => 1 support for MakeMaker + From: Autrijus Tang <autrijus@autrijus.org> + Date: Tue, 14 Oct 2003 18:32:28 +0800 + Message-Id: <1066127547.65845.35.camel@localhost> + Branch: maint-5.8/perl + !> lib/ExtUtils/MM_Any.pm lib/ExtUtils/MM_Unix.pm + !> lib/ExtUtils/MakeMaker.pm lib/UNIVERSAL.pm t/op/universal.t +____________________________________________________________________________ +[ 21496] By: nicholas on 2003/10/19 18:31:14 + Log: Integrate: + [ 21415] + Subject: [PATCH bleadperl] (was Re: require() does not behave aas documented) + From: Rick Delaney <rick@bort.ca> + Date: Tue, 23 Sep 2003 12:14:52 -0400 + Message-ID: <20030923121452.G18845@biff.bort.ca> + + [ 21427] + Subject: Re: require patch breaks locale + From: Rick Delaney <rick@bort.ca> + Date: Wed, 8 Oct 2003 22:41:55 -0400 + Message-Id: <20031008224155.A14638@biff.bort.ca> + Branch: maint-5.8/perl + !> pp_ctl.c t/comp/require.t +____________________________________________________________________________ +[ 21495] By: nicholas on 2003/10/19 18:13:23 + Log: Integrate: + [ 21407] + Subject: [PATCH]Re: The META.yml file in bleadperl + From: Fergal Daly <fergal@esatclear.ie> + Date: Mon, 6 Oct 2003 00:25:29 +0100 + Message-Id: <200310060025.29122.fergal@esatclear.ie> + + Plus regeneration of META.yml + Branch: maint-5.8/perl + + META.yml + !> Porting/makemeta +____________________________________________________________________________ +[ 21494] By: nicholas on 2003/10/19 17:55:17 + Log: Integrate: + [ 21438] + Subject: Re: [perl #24122] setreuid and friends borked on darwin/osx + From: Slaven Rezic <slaven@rezic.de> + Date: 07 Oct 2003 00:04:34 +0200 + Message-ID: <87ekxq6n0t.fsf@vran.herceg.de> + + [ 21440] + Subject: [perl #24122] setreuid and friends borked on darwin/osx + From: "pxm@nubz.org (via RT)" <perlbug-followup@perl.org> + Date: 5 Oct 2003 20:55:56 -0000 + Message-ID: <rt-24122-65678.14.2411168523081@rt.perl.org> + Branch: maint-5.8/perl + !> hints/darwin.sh mg.c +____________________________________________________________________________ +[ 21493] By: nicholas on 2003/10/19 17:35:10 + Log: Integrate: + [ 21424] + Subject: Re: Simple @INC hook core dump [PATCH] + From: Gisle Aas <gisle@ActiveState.com> + Date: 08 Oct 2003 04:47:33 -0700 + Message-ID: <lrllrweysq.fsf_-_@caliper.activestate.com> + + [ 21426] + Subject: Re: Simple @INC hook core dump [PATCH] + From: Gisle Aas <gisle@ActiveState.com> + Date: 08 Oct 2003 13:35:28 -0700 + Message-Id: <lrr81ncvsf.fsf@caliper.activestate.com> + + [ 21452] + Fix bug [perl #24212] : improper error recovery in the + tokenizer after an unknown filetest operator. + Branch: maint-5.8/perl + !> pp_ctl.c t/comp/parser.t t/op/inccode.t toke.c +____________________________________________________________________________ +[ 21492] By: nicholas on 2003/10/19 17:17:40 + Log: Integrate: + [ 21436] + Subject: [PATCH] threads::async + some cleanup + From: Elizabeth Mattijsen <liz@dijkmat.nl> + Date: Fri, 10 Oct 2003 16:37:55 +0200 + Message-Id: <p05111b07bbac713a0aaf@[192.168.56.2]> + + [ 21470] + Ensure PL_comppad/curpad point to PL_main_cv's padlist when + PL_main_root is freed; this may not have been be the case if a + thread other than the main one is the last to be destroyed + Branch: maint-5.8/perl + ! ext/threads/threads.pm + !> ext/threads/t/thread.t pad.h perl.c +____________________________________________________________________________ +[ 21491] By: nicholas on 2003/10/19 16:54:46 + Log: Integrate: + [ 21451] + Update MIME::Base64 and Digest::MD5 from the CPAN version. + Branch: maint-5.8/perl + !> ext/Digest/MD5/Changes ext/Digest/MD5/MD5.pm + !> ext/Digest/MD5/Makefile.PL ext/Digest/MD5/t/align.t + !> ext/Digest/MD5/t/files.t ext/Digest/MD5/t/utf8.t + !> ext/MIME/Base64/Base64.pm ext/MIME/Base64/Base64.xs + !> ext/MIME/Base64/Changes ext/MIME/Base64/Makefile.PL + !> ext/MIME/Base64/QuotedPrint.pm ext/MIME/Base64/t/unicode.t +____________________________________________________________________________ +[ 21490] By: nicholas on 2003/10/19 16:19:58 + Log: Integrate: + [ 21402] + Subject: [PATCH] pp_sys.c: pp_waitpid and EINTR + From: Steve Grazzini <grazz@pobox.com> + Date: Sat, 4 Oct 2003 18:15:23 -0400 + Message-Id: <20031004221523.GA29324@grazzini.net> + + [ 21425] + Fix bug #24108: Goto +foo broken + the fix having been suggested by xmath via Juerd. + + [ 21428] + Subject: [PATCH] Devel::PPPort is missing an aTHX when calling + grok_numeric_radix() + From: Jan Dubois <jand@ActiveState.com> + Date: Wed, 08 Oct 2003 20:37:42 -0700 + Message-Id: <8kl9ov0932qo08o24uafuc9v77clrgnoe4@4ax.com> + + [ 21429] + Patch based on: + + Subject: [perl #24157] -MModule=} is broken + From: "Lukas Mai" (via RT) <perlbug-followup@perl.org> + Date: 7 Oct 2003 21:47:43 -0000 + Message-Id: <rt-24157-65809.10.9980909617566@rt.perl.org> + + (Includes a fix for a similar problem in -A, but not -d.) + + [ 21430] + Subject: [PATCH 5.8.1 CORE] Internal fixes to source-code coordinate + calculations in regcomp.c + From: Eric Promislow <ericp@ActiveState.com> + Date: Wed, 8 Oct 2003 17:42:42 -0700 + Message-Id: <20031008174242.A17544@ActiveState.com> + + [ 21441] + Subject: [PATCH] Internals::hash_seed() returns wrong value + From: Jan Dubois <jand@ActiveState.com> + Date: Sun, 12 Oct 2003 22:09:39 -0700 + Message-ID: <07ckovck8mp5e8tthmtbbcrpi2tj6q9eak@4ax.com> + + [ 21445] + Subject: [PATCH ext/Devel/PPPort/PPPort.pm] Changes #20819 and #20996 break compatibility with perl 5.6.0 + From: "Marcus Holland-Moritz" <mhx-perl@gmx.net> + Date: Tue, 30 Sep 2003 19:23:34 +0200 + Message-ID: <021e01c38777$93ea4e10$0c2f1fac@R2D2> + Branch: maint-5.8/perl + ! perl.c + !> ext/Devel/PPPort/PPPort.pm op.c pp_sys.c regcomp.c t/op/goto.t + !> universal.c +____________________________________________________________________________ +[ 21489] By: nicholas on 2003/10/19 11:14:32 + Log: Integrate: + [ 21397] + Subject: Re: 5.8.1 and srand + From: Brendan O'Dea <bod@debian.org> + Date: Thu, 2 Oct 2003 10:30:36 +1000 + Message-Id: <20031002003036.GA9198@londo.c47.org> + + [ 21401] + Subject: Re: 5.8.1 and srand + From: Slaven Rezic <slaven@rezic.de> + Date: Thu, 2 Oct 2003 15:51:11 +0000 + Message-Id: <1065109871.3115@devpc01.iconmobile.de> + Branch: maint-5.8/perl + !> t/op/fork.t util.c +____________________________________________________________________________ +[ 21488] By: nicholas on 2003/10/19 10:47:57 + Log: Integrate: + [ 21419] + Why should -3**$x be more precisely determined than 3**$x? + + [ 21420] + Minor tweaks to t/op/pow.t (John P. Linderman). + Branch: maint-5.8/perl + !> t/op/pow.t +____________________________________________________________________________ +[ 21487] By: nicholas on 2003/10/18 22:33:08 + Log: Integrate: + [ 21433] + Put all pre-processor #s on the first column (some compilers are picky) + [perl #24167] `#' comment signs not at the very beginning of a line + + [ 21468] + Subject: Re: assert.h breaks perl.h + From: Alexey Tourbin <at@altlinux.ru> + Date: Thu, 16 Oct 2003 22:24:35 +0400 + Message-Id: <20031016182434.GH1724@julia.office.altlinux.ru> + Branch: maint-5.8/perl + !> cop.h dosish.h ext/SDBM_File/sdbm/sdbm.h iperlsys.h op.c + !> perl.h regcomp.c sv.h +____________________________________________________________________________ +[ 21486] By: nicholas on 2003/10/18 22:12:47 + Log: Integrate: + [ 21404] + Subject: [perl #24120] Tie::Hash documentation has broken code + From: "Benjamin J. Tilly" (via RT) <perlbug-followup@perl.org> + Date: 5 Oct 2003 18:40:36 -0000 + Message-Id: <rt-24120-65664.15.9776865968429@rt.perl.org> + (Applied without $VERSION update.) + + [ 21439] + Subject: [PATCH] Tie::Hash documentation + From: Slaven Rezic <slaven@rezic.de> + Date: Sun, 12 Oct 2003 18:55:54 +0200 (CEST) + Message-Id: <200310121655.h9CGtsrY003613@vran.herceg.de> + + [ 21442] + Subject: [perl #24189] Incorrect comment in perldoc strict + From: "Iain 'Spoon' Truskett (via RT)" <perlbug-followup@perl.org> + Date: 12 Oct 2003 09:01:25 -0000 + Message-Id: <rt-24189-65954.9.50514379869631@rt.perl.org> + + [ 21467] + Subject: [PATCH] Tie::Hash documentation + From: Slaven Rezic <slaven@rezic.de> + Date: Thu, 16 Oct 2003 17:57:35 +0000 + Message-Id: <1066327055.1428@devpc01.iconmobile.de> + Branch: maint-5.8/perl + !> lib/Tie/Hash.pm lib/strict.pm +____________________________________________________________________________ +[ 21485] By: nicholas on 2003/10/18 21:44:41 + Log: Integrate: + [ 21416] + Subject: [patch sv.c] improve "...free unref scalar" warning + From: Stas Bekman <stas@stason.org> + Date: Mon, 06 Oct 2003 21:19:53 -0700 + Message-Id: <3F823EE9.4030103@stason.org> + + [ 21420] + Minor tweaks to sv.c (Tim Bunce) + Branch: maint-5.8/perl + !> sv.c +____________________________________________________________________________ +[ 21484] By: nicholas on 2003/10/18 21:25:13 + Log: Integrate: + [ 21453] + Typos. + + [ 21472] + The compilation of PerlIO::via may hang on AIX when + compiling with vac at -O3 optimization level. Disable + optimization for this module. + Branch: maint-5.8/perl + +> ext/PerlIO/via/hints/aix.pl + !> MANIFEST hints/aix.sh +____________________________________________________________________________ +[ 21483] By: nicholas on 2003/10/18 20:50:49 + Log: Integrate: + [ 21390] + Subject: Re: NCR MP-RAS perl problems [perl #23791] + From: grommel@sears.com + Date: Mon, 29 Sep 2003 14:45:16 -0500 + Message-ID: <OF9B00605E.3CC90F32-ON86256DB0.006B13F0-86256DB0.006C8E85@LocalDomain> + + [ 21410] + Subject: Re: [doc-PATCH] for unpack_str() and question + From: LAUN Wolfgang <wolfgang.laun@alcatel.at> + Date: Mon, 6 Oct 2003 08:45:29 +0200 + Message-ID: <75A46BF1A9D8D311863A00508B6259A405F180C1@ATTMSX4> + Branch: maint-5.8/perl + !> hints/svr4.sh pod/perlapi.pod pp_pack.c t/op/pack.t +____________________________________________________________________________ +[ 21482] By: nicholas on 2003/10/18 18:26:46 + Log: Integrate: + [ 21464] + Subject: perl -h tweak [PATCH] + From: Gisle Aas <gisle@ActiveState.com> + Date: 16 Oct 2003 02:49:39 -0700 + Message-Id: <lrn0c11pho.fsf@caliper.activestate.com> + + [ 21466] + Further tweak on change #21464. + + [ 21473] + -u is deprecated. + Subject: Re: why PERL5LIB is ignored when -T is in effect + From: Slaven Rezic <slaven@rezic.de> + Date: Fri, 17 Oct 2003 10:02:31 +0000 + Message-Id: <1066384951.4964@devpc01.iconmobile.de> + Branch: maint-5.8/perl + !> perl.c +____________________________________________________________________________ +[ 21481] By: nicholas on 2003/10/18 17:40:32 + Log: Integrate: + [ 21394] + Subject: misapplied patch 19452 + From: Yitzchak Scott-Thoennes <sthoenna@efn.org> + Date: Tue, 30 Sep 2003 06:01:50 -0700 + Message-Id: <20030930130150.GA1436@efn.org> + Branch: maint-5.8/perl + ! pp_hot.c +____________________________________________________________________________ +[ 21480] By: nicholas on 2003/10/18 16:42:12 + Log: Integrate: + [ 21383] + Missing +x bits. + Branch: maint-5.8/perl + !> Porting/makerel +____________________________________________________________________________ +[ 21479] By: nicholas on 2003/10/18 16:37:49 + Log: Integrate: + [ 21385] + Subject: [PATCH 5.8.1] pod/perlrun.pod: no space after -i allowed + From: Brendan O'Dea <bod@debian.org> + Date: Sun, 28 Sep 2003 23:23:34 +1000 + Message-ID: <20030928132334.GA29499@londo.c47.org> + + [ 21386] + Subject: [PATCH 5.8.1] Fix broken splitpod program + From: Steve Hay <steve.hay@uk.radan.com> + Date: Mon, 29 Sep 2003 11:50:23 +0100 + Message-ID: <3F780E6F.3020704@uk.radan.com> + + [ 21388] + Subject: [PATCH] Re: [perl #24071] Typo in description of binmode + From: Yitzchak Scott-Thoennes <sthoenna@efn.org> + Date: Tue, 30 Sep 2003 04:53:02 -0700 + Message-ID: <20030930115302.GA3200@efn.org> + + [ 21392] + Revamp the section on local() in perlsub. + - avoid using the word "declare" in conjunction with local() + - less archaelogical references + - more about localization of lvalues + - removes examples of localization of tied hashes that don't work + - give titles to subsections + - explain localization of magic values + - explain localization of globs + - fix link to perldelta + + [ 21398] + build perlapi.pod in deterministic order even when functions differ + only in case; regen perlapi.pod + + [ 21403] + Subject: Re: [PATCH] [perl #24113] mistake in perlretut + From: Robert Spier <rspier@pobox.com> + Date: Sun, 05 Oct 2003 21:34:30 -0700 + Message-Id: <m3vfr39e7d.wl_rspier@pobox.com> + + [ 21405] + Subject: Re: [PATCH] perlsyn.pod Revision - Resend + From: Shlomi Fish <shlomif@vipe.technion.ac.il> + Date: Fri, 3 Oct 2003 12:34:46 +0200 (IST) + Message-Id: <Pine.LNX.4.56.0310031233580.28640@vipe.technion.ac.il> + (Applied with minor tweaks.) + + [ 21409] + Subject: [PATCH pod/perlfunc.pod] ref can return false on references + From: Abigail <abigail@abigail.nl> + Date: Mon, 6 Oct 2003 05:55:21 -0700 + Message-ID: <20031006125521.GA26446@ucan.foad.org> + + [ 21412] + Fix broken link in perltodo.pod. + + [ 21417] + Update perlfunc/require to describe NXDOMAIN caching... er, you + know what I mean. + + [ 21431] + Document the behaviour of filetest operators regarding parentheses. + This fixes bug #24127 (by documenting it as a feature.) + + [ 21435] + Make everyone stop posting to p5p about 0e0. + + [ 21437] + Minor nit in perlrun, spotted by Art Haas. + Branch: maint-5.8/perl + ! pod/perlrun.pod pod/perlsyn.pod + !> autodoc.pl pod/perlapi.pod pod/perlfunc.pod pod/perlop.pod + !> pod/perlretut.pod pod/perlsub.pod pod/perltodo.pod + !> pod/splitpod +____________________________________________________________________________ +[ 21478] By: nicholas on 2003/10/18 13:40:08 + Log: Integrate: + [ 21420] + Minor tweaks to pod/perlsyn.pod (as suggested by Yves Orton) + + [ 21421] + Subject: Re: [PATCH] perlop.pod Revamp - revision 4 + From: schwern@pobox.com + Date: Tue, 7 Oct 2003 20:39:36 -0700 + Message-Id: <20031007203936.X4301@ttul.org> + + (Originally from Shlomi Fish. Applied with tweaks.) + + [ 21422] + "Are implicit undefs true?" asks Gisle. + + [ 21423] + Subject: [PATCH pod/perlrun.pod] Layout & POD nit. + From: Abigail <abigail@abigail.nl> + Date: Wed, 8 Oct 2003 03:50:49 -0700 + Message-Id: <20031008105049.GA15770@ucan.foad.org> + Branch: maint-5.8/perl + ! pod/perlop.pod pod/perlsyn.pod + !> pod/perliol.pod +____________________________________________________________________________ +[ 21477] By: nicholas on 2003/10/18 13:22:15 + Log: Integrate: + [ 21384] + Nit to the maintainers list by SADAHIRO Tomoyuki + + [ 21408] + Add a new option --check to Porting/Maintainers, + to check for files who are listed for several maintainers. + + [ 21413] + Fixes in the modules maintainers list. + Branch: maint-5.8/perl + !> Porting/Maintainers.pl Porting/Maintainers.pm +____________________________________________________________________________ +[ 21476] By: nicholas on 2003/10/18 13:14:40 + Log: Integrate: + [ 21391] + Useless "local $_" in a perlfaq3 example + + [ 21454] + PerlFAQ sync. (only actual changes) + + [ 21456] + Perlfaq1 : take notice that 5.8.1 is now released. + Branch: maint-5.8/perl + !> pod/perlfaq1.pod pod/perlfaq3.pod pod/perlfaq4.pod +____________________________________________________________________________ +[ 21475] By: nicholas on 2003/10/17 21:09:13 + Log: Integrate: + [ 21446] + Duplicate 19423 (pathological hashes too easy) into hv_store_ent + (the routine used by perl level HV operations) + + [ 21469] + Duplicate 19423 (pathological hashes too easy) into share_hek_flags + (as suggested by Jan Dubois) + + [ 21471] + Plan C for foiling the algorithmic complexity attack + (based on Chip's plan A (binary compatibility with 5.8.0 and 5.8.1), + Chip's plan B (do something new inside the hv functions) + and introspective sort) + Provides infrastructure for hashes to change their hash function + if necessary, and code in hsplit to detect pathalogical data and + instigate a random rehashing. + Needs refinement. Let's see how much smoke it creates. + + [ 21474] + Plan C rough edge smoothing - forgot to turn on the "has key flags" + flag on the hash when rehashing. Can turn off the "rehasing" flag + if the hash is cleared + Branch: maint-5.8/perl + ! hv.c + !> embedvar.h hv.h intrpvar.h perl.c perlapi.h sv.c sv.h util.c +____________________________________________________________________________ +[ 21395] By: nicholas on 2003/10/01 21:09:11 + Log: Integrate: + [ 21387] + Subject: [PATCH] perl-5.8.1 hints/powerux.sh, ext/Sys/Syslog/t/syslog.t + From: Tom Horsley <Tom.Horsley@ccur.com> + Date: Mon, 29 Sep 2003 13:00:09 GMT + Message-Id: <200309291300.NAA23856@amber2.ccur.com> + Branch: maint-5.8/perl + !> ext/Sys/Syslog/t/syslog.t hints/powerux.sh +____________________________________________________________________________ +[ 21393] By: nicholas on 2003/09/30 20:52:55 + Log: Disarm the maint branch. + (Put the MAINTfoo local patch back in patchlevel.h following the + successful escape, er release, of 5.8.1) + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21379] By: chip on 2003/09/25 18:10:01 + Log: Relocate the mention of safe signals with POSIX::SigAction. + Branch: maint-5.8/perl + ! pod/perl581delta.pod +____________________________________________________________________________ +[ 21378] By: jhi on 2003/09/25 12:42:00 + Log: perldelta turnover. + Branch: maint-5.8/perl + + pod/perl581delta.pod + ! MANIFEST pod.lst pod/perl.pod pod/perldelta.pod + ! pod/perltoc.pod vms/descrip_mms.template win32/pod.mak diff --git a/gnu/usr.bin/perl/Cross/Makefile.SH.patch b/gnu/usr.bin/perl/Cross/Makefile.SH.patch index 6f17b37747f..661ea208752 100644 --- a/gnu/usr.bin/perl/Cross/Makefile.SH.patch +++ b/gnu/usr.bin/perl/Cross/Makefile.SH.patch @@ -122,10 +122,10 @@ -@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 \ -@@ -793,18 +794,7 @@ - $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-n - - install.perl: all installperl +@@ -798,18 +799,7 @@ + INSTALL_DEPENDENCE = all + + install.perl: $(INSTALL_DEPENDENCE) installperl - if [ -n "$(COMPILE)" ]; \ - then \ - cd utils; $(MAKE) compile; \ @@ -142,7 +142,7 @@ # XXX Experimental. Hardwired values, but useful for testing. # Eventually Configure could ask for some of these values. -@@ -920,16 +910,16 @@ +@@ -925,16 +915,16 @@ # # DynaLoader may be needed for extensions that use Makefile.PL. @@ -163,7 +163,7 @@ @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) .PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \ -@@ -1069,7 +1059,7 @@ +@@ -1074,7 +1064,7 @@ test_prep_pre: preplibrary utilities $(nonxs_ext) @@ -172,7 +172,7 @@ PERL=./perl $(MAKE) _test_prep _test_tty: -@@ -1157,7 +1147,7 @@ +@@ -1167,7 +1157,7 @@ # Can't depend on lib/Config.pm because that might be where miniperl # is crashing. diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux b/gnu/usr.bin/perl/Cross/config.sh-arm-linux index 1857d75a6e0..64ffc74a473 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux @@ -36,8 +36,8 @@ api_subversion='0' api_version='8' api_versionstring='5.8.0' ar='ar' -archlib='/usr/lib/perl5/5.8.1/armv4l-linux' -archlibexp='/usr/lib/perl5/5.8.1/armv4l-linux' +archlib='/usr/lib/perl5/5.8.3/armv4l-linux' +archlibexp='/usr/lib/perl5/5.8.3/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -55,7 +55,7 @@ castflags='0' cat='cat' cc='cc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.1/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.3/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' @@ -668,7 +668,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.8.1/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.8.3/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -676,13 +676,13 @@ installman1dir='./install_me_here/usr/share/man/man1' installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.8.1' +installprivlib='./install_me_here/usr/lib/perl5/5.8.3' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.1/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.3/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.8.1' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.8.3' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -809,8 +809,8 @@ pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.8.1' -privlibexp='/usr/lib/perl5/5.8.1' +privlib='/usr/lib/perl5/5.8.3' +privlibexp='/usr/lib/perl5/5.8.3' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -871,17 +871,17 @@ 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 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, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.8.1/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.8.1/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.8.3/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.8.3/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.8.1' +sitelib='/usr/lib/perl5/site_perl/5.8.3' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.8.1' +sitelibexp='/usr/lib/perl5/site_perl/5.8.3' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -918,7 +918,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='1' +subversion='3' sysman='/usr/share/man/man1' tail='' tar='' @@ -1000,13 +1000,13 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.8.1' -version_patchlevel_string='version 8 subversion 1' +version='5.8.3' +version_patchlevel_string='version 8 subversion 3' versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' -xs_apiversion='5.8.1' +xs_apiversion='5.8.3' yacc='yacc' yaccflags='' zcat='' @@ -1017,7 +1017,7 @@ config_args='' config_argc=0 PERL_REVISION=5 PERL_VERSION=8 -PERL_SUBVERSION=1 +PERL_SUBVERSION=3 PERL_API_REVISION=5 PERL_API_VERSION=8 PERL_API_SUBVERSION=0 diff --git a/gnu/usr.bin/perl/Cross/installperl.patch b/gnu/usr.bin/perl/Cross/installperl.patch index 0101e660fe3..7e10c94ac40 100644 --- a/gnu/usr.bin/perl/Cross/installperl.patch +++ b/gnu/usr.bin/perl/Cross/installperl.patch @@ -3,7 +3,7 @@ @@ -3,8 +3,8 @@ BEGIN { require 5.004; - chdir '..' if !-d 'lib' and -d '..\lib'; + chdir '..' if !-d 'lib' and -d '../lib'; - @INC = 'lib'; - $ENV{PERL5LIB} = 'lib'; +# @INC = 'lib'; @@ -11,7 +11,7 @@ } use strict; -@@ -931,7 +931,7 @@ +@@ -946,7 +946,7 @@ print " " if (@opts); print "$file\n"; } diff --git a/gnu/usr.bin/perl/META.yml b/gnu/usr.bin/perl/META.yml index a2a3fd1d4ed..1b3b737cb1e 100644 --- a/gnu/usr.bin/perl/META.yml +++ b/gnu/usr.bin/perl/META.yml @@ -1,11 +1,12 @@ name: perl -version: 5.008001 +version: 5.008003 abstract: Practical Extraction and Reporting Language author: perl5-porters@perl.org license: perl distribution_type: core private: directory: + - ext/Cwd - ext/Data/Dumper - ext/DB_File - ext/Devel/PPPort @@ -14,10 +15,8 @@ private: - ext/Filter/Util/Call - ext/List/Util - ext/MIME/Base64 - - ext/PerlIO - ext/Safe - ext/Storable - - ext/threads - ext/Time/HiRes - ext/Unicode/Normalize - lib/Attribute/Handlers @@ -25,6 +24,7 @@ private: - lib/CGI - lib/Class/ISA - lib/CPAN + - lib/Digest - lib/ExtUtils/t - lib/File/Spec - lib/File/Temp @@ -65,8 +65,8 @@ private: - lib/CGI.pm - lib/Class/ISA.pm - lib/CPAN.pm + - lib/Cwd.pm - lib/Digest.pm - - lib/Digest.t - lib/ExtUtils/Command - lib/ExtUtils/Command.pm - lib/ExtUtils/Install.pm diff --git a/gnu/usr.bin/perl/NetWare/Makefile b/gnu/usr.bin/perl/NetWare/Makefile index 9de7da4faef..10fba73386f 100644 --- a/gnu/usr.bin/perl/NetWare/Makefile +++ b/gnu/usr.bin/perl/NetWare/Makefile @@ -86,7 +86,7 @@ NLM_VERSION = 3,20,0 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW - -MODULE_DESC = "Perl 5.8.2 for NetWare" +MODULE_DESC = "Perl 5.8.3 for NetWare" CCTYPE = CodeWarrior C_COMPILER = mwccnlm -c CPP_COMPILER = mwccnlm @@ -467,7 +467,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl # versioned installation can be obtained by setting INST_TOP above to a # path that includes an arbitrary version string. # -INST_VER = \5.8.2 +INST_VER = \5.8.3 # # Comment this out if you DON'T want your perl installation to have diff --git a/gnu/usr.bin/perl/Porting/config.sh b/gnu/usr.bin/perl/Porting/config.sh index 5206a5ce12f..c621cc2b3e6 100644 --- a/gnu/usr.bin/perl/Porting/config.sh +++ b/gnu/usr.bin/perl/Porting/config.sh @@ -8,7 +8,7 @@ # Package name : perl5 # Source directory : . -# Configuration time: Sun Nov 2 23:55:28 GMT 2003 +# Configuration time: Wed Jan 14 16:41:27 GMT 2004 # Configured by : nick # Target system : linux bagpuss.unfortu.net 2.4.19-rmk4 #3 fri oct 25 21:57:55 bst 2002 armv4l unknown @@ -36,8 +36,8 @@ api_subversion='0' api_version='8' api_versionstring='5.8.0' ar='ar' -archlib='/opt/perl/lib/5.8.2/armv4l-linux' -archlibexp='/opt/perl/lib/5.8.2/armv4l-linux' +archlib='/opt/perl/lib/5.8.3/armv4l-linux' +archlibexp='/opt/perl/lib/5.8.3/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -63,7 +63,7 @@ ccsymbols='__APCS_32__=1 __ARM_ARCH_3__=1 __CHAR_UNSIGNED__=1 __GNUC_MINOR__=95 ccversion='' cf_by='nick' cf_email='yourname@yourhost.yourplace.com' -cf_time='Sun Nov 2 23:55:28 GMT 2003' +cf_time='Wed Jan 14 16:41:27 GMT 2004' charsize='1' chgrp='' chmod='chmod' @@ -668,7 +668,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='/opt/perl/lib/5.8.2/armv4l-linux' +installarchlib='/opt/perl/lib/5.8.3/armv4l-linux' installbin='/opt/perl/bin' installhtml1dir='' installhtml3dir='' @@ -676,13 +676,13 @@ installman1dir='/opt/perl/man/man1' installman3dir='/opt/perl/man/man3' installprefix='/opt/perl' installprefixexp='/opt/perl' -installprivlib='/opt/perl/lib/5.8.2' +installprivlib='/opt/perl/lib/5.8.3' installscript='/opt/perl/bin' -installsitearch='/opt/perl/lib/site_perl/5.8.2/armv4l-linux' +installsitearch='/opt/perl/lib/site_perl/5.8.3/armv4l-linux' installsitebin='/opt/perl/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/opt/perl/lib/site_perl/5.8.2' +installsitelib='/opt/perl/lib/site_perl/5.8.3' installsiteman1dir='/opt/perl/man/man1' installsiteman3dir='/opt/perl/man/man3' installsitescript='/opt/perl/bin' @@ -809,8 +809,8 @@ pmake='' pr='' prefix='/opt/perl' prefixexp='/opt/perl' -privlib='/opt/perl/lib/5.8.2' -privlibexp='/opt/perl/lib/5.8.2' +privlib='/opt/perl/lib/5.8.3' +privlibexp='/opt/perl/lib/5.8.3' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -871,17 +871,17 @@ 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 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, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/opt/perl/lib/site_perl/5.8.2/armv4l-linux' -sitearchexp='/opt/perl/lib/site_perl/5.8.2/armv4l-linux' +sitearch='/opt/perl/lib/site_perl/5.8.3/armv4l-linux' +sitearchexp='/opt/perl/lib/site_perl/5.8.3/armv4l-linux' sitebin='/opt/perl/bin' sitebinexp='/opt/perl/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/opt/perl/lib/site_perl/5.8.2' +sitelib='/opt/perl/lib/site_perl/5.8.3' sitelib_stem='/opt/perl/lib/site_perl' -sitelibexp='/opt/perl/lib/site_perl/5.8.2' +sitelibexp='/opt/perl/lib/site_perl/5.8.3' siteman1dir='/opt/perl/man/man1' siteman1direxp='/opt/perl/man/man1' siteman3dir='/opt/perl/man/man3' @@ -918,7 +918,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='2' +subversion='3' sysman='/usr/share/man/man1' tail='' tar='' @@ -1000,13 +1000,13 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.8.2' -version_patchlevel_string='version 8 subversion 2' +version='5.8.3' +version_patchlevel_string='version 8 subversion 3' versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' -xs_apiversion='5.8.2' +xs_apiversion='5.8.3' yacc='yacc' yaccflags='' zcat='' @@ -1024,7 +1024,7 @@ config_arg6='-Dmyhostname=yourhost' config_arg7='-dE' PERL_REVISION=5 PERL_VERSION=8 -PERL_SUBVERSION=2 +PERL_SUBVERSION=3 PERL_API_REVISION=5 PERL_API_VERSION=8 PERL_API_SUBVERSION=0 diff --git a/gnu/usr.bin/perl/README.ce b/gnu/usr.bin/perl/README.ce index 5bbac6bc376..00080c1bf6a 100644 --- a/gnu/usr.bin/perl/README.ce +++ b/gnu/usr.bin/perl/README.ce @@ -2,17 +2,17 @@ If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is
specifically designed to be readable as is.
-=head1 Name
+=head1 NAME
-Perl for WinCE
+perlce - Perl for WinCE
-=head1 Description
+=head1 DESCRIPTION
This file gives the instructions for building Perl5.8 and above for
WinCE. Please read and understand the terms under which this
software is distributed.
-=head1 Build
+=head1 BUILD
This section describes the steps to be performed to build PerlCE.
You may find additional and newer information about building perl
@@ -126,7 +126,7 @@ in this case. All questions related to building for WinCE devices could be asked in
perlce-users@lists.sourceforge.net mailing list.
-=head1 Acknowledgements
+=head1 ACKNOWLEDGEMENTS
The port for Win32 was used as a reference.
diff --git a/gnu/usr.bin/perl/README.netware b/gnu/usr.bin/perl/README.netware index 3dd70a6f4cb..df56abc9833 100644 --- a/gnu/usr.bin/perl/README.netware +++ b/gnu/usr.bin/perl/README.netware @@ -2,11 +2,11 @@ If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specifically designed to be readable as is. -=head1 Name +=head1 NAME -Perl for NetWare +perlnetware - Perl for NetWare -=head1 Description +=head1 DESCRIPTION This file gives instructions for building Perl 5.7 and above, and also Perl modules for NetWare. Before you start, you may want to read the @@ -14,7 +14,7 @@ README file found in the top level directory into which the Perl source code distribution was extracted. Make sure you read and understand the terms under which the software is being distributed. -=head1 Build +=head1 BUILD This section describes the steps to be performed to build a Perl NLM and other associated NLMs. @@ -94,7 +94,7 @@ a release build, else will be copied under I<Debug> folder for debug builds. The make process also creates the Perl extensions as I<<Extension>.nlm> -=head1 Install +=head1 INSTALL To install NetWare Perl onto a NetWare server, first map the Sys volume of a NetWare server to I<i:>. This is because the makefile by @@ -110,7 +110,7 @@ Example: At the command prompt Type "nmake nwinstall". This will cause the binaries to be installed on the local machine. (Typically under the c:\perl folder) -=head1 Build new extensions +=head1 BUILD NEW EXTENSIONS To build extensions other than standard extensions, NetWare Perl has to be installed on Windows along with Windows Perl. The Perl for @@ -179,18 +179,18 @@ module. =back -=head1 Acknowledgements +=head1 ACKNOWLEDGEMENTS The makefile for Win32 is used as a reference to create the makefile for NetWare. Also, the make process for NetWare port uses miniperl.exe to run scripts during the make and installation process. -=head1 Authors +=head1 AUTHORS Anantha Kesari H Y (hyanantha@novell.com) Aditya C (caditya@novell.com) -=head1 Date +=head1 DATE =over 4 diff --git a/gnu/usr.bin/perl/configure.com b/gnu/usr.bin/perl/configure.com index c5513dd5fea..f87452c2104 100644 --- a/gnu/usr.bin/perl/configure.com +++ b/gnu/usr.bin/perl/configure.com @@ -932,6 +932,7 @@ $! $! EOD $! echo " ","VMS_VAX" $! echo " ","VMS_AXP" +$! echo " ","VMS_IA64" $! : Now look for a hint file osname_osvers, unless one has been $! : specified already. $! TYPE SYS$INPUT: @@ -1105,17 +1106,24 @@ $! Please try to use either archname .EQS. "VMS_VAX" or archname .EQS. $! "VMS_AXP" from here on to allow cross-platform configuration (e.g. $! configure a VAX build on an Alpha). $! -$ IF (F$GETSYI("HW_MODEL") .LT. 1024) +$ IF (F$GETSYI("HW_MODEL") .LT. 1024 .AND. F$GETSYI("HW_MODEL") .GT. 0) $ THEN $ archname = "VMS_VAX" -$ otherarch = "an Alpha" +$ otherarch = "an Alpha or IA64" $ alignbytes="8" $ arch_type = "ARCH-TYPE=__VAX__" $ ELSE -$ archname = "VMS_AXP" -$ otherarch = "a VAX" +$ IF (F$GETSYI("ARCH_TYPE") .EQ. 2) +$ THEN +$ archname = "VMS_AXP" +$ otherarch = "a VAX or IA64" +$ arch_type = "ARCH-TYPE=__AXP__" +$ ELSE +$ archname = "VMS_IA64" +$ otherarch = "a VAX or Alpha" +$ arch_type = "ARCH-TYPE=__IA64__" +$ ENDIF $ alignbytes="8" -$ arch_type = "ARCH-TYPE=__AXP__" $ ENDIF $ dflt = archname $ rp = "What is your architecture name? [''archname'] " @@ -1142,6 +1150,10 @@ $ IF (archname.EQS."VMS_AXP") $ THEN $ macros = macros + """AXE=1""," $ ENDIF +$ IF (archname.EQS."VMS_IA64") +$ THEN +$ macros = macros + """IXE=1""," +$ ENDIF $ ENDIF $! $!: is AFS running? !sfn @@ -1581,7 +1593,8 @@ $ echo "You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'" $ vms_cc_available = vms_cc_available + "cc/decc " $ ENDIF $ ELSE -$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) +$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) - + .or.(F$LOCATE("hp",line).NE.F$LENGTH(line)) $ THEN $ vms_cc_dflt = "/decc" $ vms_cc_available = vms_cc_available + "cc/decc " @@ -1715,7 +1728,8 @@ $ IF ans.NES."" $ THEN $ ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE") $ Mcc = ans -$ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans)) +$ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans)) - + .or.(F$LOCATE("hp",ans).NE.F$LENGTH(ans)) $ THEN $ Mcc = "cc/decc" $! CPQ ? @@ -2002,7 +2016,12 @@ $ THEN $ read CONFIG line $ archsufx = "VAX" $ ELSE -$ archsufx = "AXP" +$ IF archname .EQS. "VMS_AXP" +$ THEN +$ archsufx = "AXP" +$ ELSE +$ archsufx = "IA64" +$ ENDIF $ ENDIF $ CLOSE CONFIG $ line = F$EDIT(line,"TRIM,COMPRESS") @@ -2249,7 +2268,7 @@ $ usemultiplicity="undef" $ 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") +$ IF (archname.NES."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1") $ THEN $ bool_dflt = "n" $ IF F$TYPE(use64bitint) .NES. "" @@ -2354,8 +2373,8 @@ $ use_5005_threads="N" $ ELSE $ 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") +$ ! Are they on VMS 7.1 on an alpha or itanium? +$ if (archname.nes."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1") $ THEN $ echo "" $ echo "Threaded perl can be linked to use multiple kernel threads" @@ -2376,7 +2395,7 @@ $ ENDIF $ ENDIF $ ENDIF $ ENDIF -$ IF archname .EQS. "VMS_AXP" +$ IF archname .NES. "VMS_VAX" $ THEN $! Case sensitive? $ echo "" @@ -2940,11 +2959,20 @@ $ dlext="axe" $ exe_ext=".axe" $ lib_ext=".alb" $ ELSE -$ obj_ext=".obj" -$ so="exe" -$ dlext="exe" -$ exe_ext=".exe" -$ lib_ext=".olb" +$ IF (sharedperl .AND. archname .EQS. "VMS_IA64") +$ THEN +$ obj_ext=".ibj" +$ so="ixe" +$ dlext="ixe" +$ exe_ext=".ixe" +$ lib_ext=".ilb" +$ ELSE +$ obj_ext=".obj" +$ so="exe" +$ dlext="exe" +$ exe_ext=".exe" +$ lib_ext=".olb" +$ ENDIF $ ENDIF $ dlobj="dl_vms''obj_ext'" $! @@ -5081,7 +5109,13 @@ $ WS " iss = ((iss&1)==1 && code == 0x1234);" $ WS " printf(""%d\n"",iss);" $ WS "}" $ CS -$ GOSUB compile +$ IF (F$EXTRACT(0,7,archname) .EQS. "VMS_AXP") +$ THEN +$ GOSUB compile +$ ELSE +$ ! Causes SS$_BADSTACK on OpenVMS I64 v8.1 (but hey, it was undocumented) +$ tmp = "0" +$ ENDIF $ IF tmp .EQS. "1" $ THEN $ echo4 "Yep, we can." @@ -6366,7 +6400,8 @@ $ echo "" $ echo4 "The perl.cld file is now being written..." $ OPEN/WRITE CONFIG 'file_2_find' $ ext = ".exe" -$ IF (sharedperl .AND. archname .EQS. "VMS_AXP") THEN ext := .AXE +$ IF (sharedperl .AND. F$EXTRACT(0,7,archname) .EQS. "VMS_AXP") THEN ext := .AXE +$ IF (sharedperl .AND. F$EXTRACT(0,8,archname) .EQS. "VMS_IA64") THEN ext := .IXE $ IF (use_vmsdebug_perl) $ THEN $ WRITE CONFIG "define verb dbgperl" diff --git a/gnu/usr.bin/perl/embed.fnc b/gnu/usr.bin/perl/embed.fnc index 9c00e7a1be8..6801cbc0efc 100644 --- a/gnu/usr.bin/perl/embed.fnc +++ b/gnu/usr.bin/perl/embed.fnc @@ -47,7 +47,7 @@ Anod |int |perl_parse |PerlInterpreter* interp|XSINIT_t xsinit \ |int argc|char** argv|char** env Anp |bool |doing_taint |int argc|char** argv|char** env #if defined(USE_ITHREADS) -Anod |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags +Anod |PerlInterpreter*|perl_clone|PerlInterpreter* interp|UV flags # if defined(PERL_IMPLICIT_SYS) Ano |PerlInterpreter*|perl_clone_using|PerlInterpreter *interp|UV flags \ |struct IPerlMem* m|struct IPerlMem* ms \ @@ -1013,8 +1013,6 @@ s |HEK* |save_hek_flags |const char *str|I32 len|U32 hash|int flags s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store s |void |unshare_hek_or_pvn|HEK* hek|const char* sv|I32 len|U32 hash s |HEK* |share_hek_flags|const char* sv|I32 len|U32 hash|int flags -s |SV** |hv_fetch_flags |HV* tb|const char* key|I32 klen|I32 lval \ - |int flags s |void |hv_notallowed |int flags|const char *key|I32 klen|const char *msg #endif @@ -1411,5 +1409,14 @@ p |int |get_debug_opts |char **s -END_EXTERN_C +Apd |void |hv_clear_placeholders|HV* hb + +#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +sM |SV* |hv_delete_common|HV* tb|SV* key_sv|const char* key|STRLEN klen|int k_flags|I32 d_flags|U32 hash +sM |HE* |hv_fetch_common|HV* tb|SV* key_sv|const char* key|STRLEN klen|int flags|int action|SV* val|U32 hash +#endif +Apd |SV* |hv_scalar |HV* hv| +p |SV* |magic_scalarpack|HV* hv|MAGIC* mg + +END_EXTERN_C diff --git a/gnu/usr.bin/perl/epoc/createpkg.pl b/gnu/usr.bin/perl/epoc/createpkg.pl index 47f4c974325..79dc3a53b84 100644 --- a/gnu/usr.bin/perl/epoc/createpkg.pl +++ b/gnu/usr.bin/perl/epoc/createpkg.pl @@ -3,7 +3,7 @@ use File::Find; use Cwd; -$VERSION="5.8.2"; +$VERSION="5.8.3"; $EPOC_VERSION=1; diff --git a/gnu/usr.bin/perl/ext/Cwd/Changes b/gnu/usr.bin/perl/ext/Cwd/Changes new file mode 100644 index 00000000000..b6d8ce54c80 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Cwd/Changes @@ -0,0 +1,42 @@ +Revision history for Perl extension Cwd. + +2.12 Fri Dec 19 17:04:52 CST 2003 + + - Fixed a bug on Cygwin - the output of realpath() should have been + tainted, but wasn't. [Reported by Tom Wyant] + +2.10 Mon Dec 15 07:50:12 CST 2003 + + (Note that this release was mistakenly packaged as version 2.11, even + though it had an internal $VERSION variable of 2.10. Not sure how + THAT happened...) + + - There was a dependency in the Makefile.PL on Module::Build, which + isn't necessary. I've removed it. + +2.09 Thu Dec 11 20:30:58 CST 2003 + + - The module should now build & install using version 5.6 of perl. + + - We now note a build-time dependency on version 0.19 of + Module::Build, which is necessary because we don't use the standard + lib/-based file layout. No version of Module::Build is required if + you use the Makefile.PL, just if you use the Build.PL . + + - Removed some gratuitous uses of 5.6-isms like our(), with the aim + of backporting this module to perl 5.005. + + - Simplified all code that autoloads Carp.pm and calls + carp()/croak(). + + - Removed some redundant OS/2 code at the suggestion of Michael + Schwern and Ilya Zakharevich. + + - Make sure the correct version of Cwd.pm is loaded in the regression + tests. [Sam Vilain] + +2.08 Wed Oct 15 20:56 CDT 2003 + + - Code extracted from perl 5.8.1 and packaged as a separate CPAN + release by Ken Williams. + diff --git a/gnu/usr.bin/perl/ext/Digest/MD5/t/bits.t b/gnu/usr.bin/perl/ext/Digest/MD5/t/bits.t new file mode 100755 index 00000000000..db3b693bb88 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Digest/MD5/t/bits.t @@ -0,0 +1,26 @@ +#!perl -w + +use Test qw(plan ok); +plan tests => 2; + +use Digest::MD5; + +my $md5 = Digest::MD5->new; + +if ($Digest::base::VERSION) { + $md5->add_bits("01111111"); + ok($md5->hexdigest, "83acb6e67e50e31db6ed341dd2de1595"); + eval { + $md5->add_bits("0111"); + }; + ok($@ =~ /must be multiple of 8/); +} +else { + print "# No Digest::base\n"; + eval { + $md5->add_bits("foo"); + }; + ok($@ =~ /^Can\'t locate Digest\/base\.pm in \@INC/); + ok(1); # dummy +} + diff --git a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL index 8dfb5d436cd..3fe9f881099 100644 --- a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL +++ b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL @@ -510,8 +510,6 @@ sub dl_find_symbol_anywhere DynaLoader - Dynamically load C libraries into Perl code -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 package YourPackage; diff --git a/gnu/usr.bin/perl/ext/ODBM_File/typemap b/gnu/usr.bin/perl/ext/ODBM_File/typemap index 4f4802cfa57..cbc89b04b77 100644 --- a/gnu/usr.bin/perl/ext/ODBM_File/typemap +++ b/gnu/usr.bin/perl/ext/ODBM_File/typemap @@ -17,7 +17,7 @@ FATALFUNC T_OPAQUEPTR INPUT T_DATUM_K DBM_ckFilter($arg, filter_store_key, \"filter_store_key\"); - $var.dptr = SvPV($arg, PL_na); + $var.dptr = SvPVbyte($arg, PL_na); $var.dsize = (int)PL_na; T_DATUM_K_C { @@ -28,13 +28,13 @@ T_DATUM_K_C } else tmpSV = $arg; - $var.dptr = SvPV(tmpSV, PL_na); + $var.dptr = SvPVbyte(tmpSV, PL_na); $var.dsize = (int)PL_na; } T_DATUM_V DBM_ckFilter($arg, filter_store_value, \"filter_store_value\"); if (SvOK($arg)) { - $var.dptr = SvPV($arg, PL_na); + $var.dptr = SvPVbyte($arg, PL_na); $var.dsize = (int)PL_na; } else { diff --git a/gnu/usr.bin/perl/ext/POSIX/t/is.t b/gnu/usr.bin/perl/ext/POSIX/t/is.t index 9ab851cd4e2..489b3a96384 100644 --- a/gnu/usr.bin/perl/ext/POSIX/t/is.t +++ b/gnu/usr.bin/perl/ext/POSIX/t/is.t @@ -52,6 +52,10 @@ my %classes = " \t" => [ qw(space) ], "abcde\001" => [], + + # An empty string. Always true (al least in old days) [bug #24554] + '' => [ qw(print graph alnum alpha lower upper digit xdigit + punct cntrl space) ], ); diff --git a/gnu/usr.bin/perl/ext/POSIX/t/posix.t b/gnu/usr.bin/perl/ext/POSIX/t/posix.t index f8339f7a4c1..58b3a4843de 100644 --- a/gnu/usr.bin/perl/ext/POSIX/t/posix.t +++ b/gnu/usr.bin/perl/ext/POSIX/t/posix.t @@ -11,7 +11,7 @@ BEGIN { } require "./test.pl"; -plan(tests => 61); +plan(tests => 65); use POSIX qw(fcntl_h signal_h limits_h _exit getcwd open read strftime write errno); @@ -259,6 +259,13 @@ ok( POSIX::isspace("\t"), 'isspace' ); ok(!POSIX::isspace('_'), 'isspace' ); ok( POSIX::isxdigit('f'), 'isxdigit' ); ok(!POSIX::isxdigit('g'), 'isxdigit' ); +# metaphysical question : what should be returned for an empty string ? +# anyway this shouldn't segfault (bug #24554) +ok( POSIX::isalnum(''), 'isalnum empty string' ); +ok( POSIX::isalnum(undef),'isalnum undef' ); +# those functions should stringify their arguments +ok(!POSIX::isalpha([]), 'isalpha []' ); +ok( POSIX::isprint([]), 'isprint []' ); # Check that output is not flushed by _exit. This test should be last # in the file, and is not counted in the total number of tests. diff --git a/gnu/usr.bin/perl/ext/Unicode/Normalize/t/illegal.t b/gnu/usr.bin/perl/ext/Unicode/Normalize/t/illegal.t new file mode 100755 index 00000000000..76cd83302b0 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Unicode/Normalize/t/illegal.t @@ -0,0 +1,66 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Normalize " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +######################### + +use 5.006001; +use Test; +use strict; +use warnings; + +BEGIN { + use Unicode::Normalize qw(:all); + + unless (exists &Unicode::Normalize::bootstrap or 5.008 <= $]) { + print "1..0 # skipped: XSUB, or Perl 5.8.0 or later". + " needed for this test\n"; + print $@; + exit; + } +} + +BEGIN { plan tests => 112 }; + +######################### + +no warnings qw(utf8); +# To avoid warning in Test.pm, EXPR in ok(EXPR) must be boolean. + +for my $u (0xD800, 0xDFFF, 0xFDD0, 0xFDEF, 0xFEFF, 0xFFFE, 0xFFFF, + 0x1FFFF, 0x10FFFF, 0x110000, 0x7FFFFFFF) +{ + my $c = chr $u; + ok($c eq NFD($c)); # 1 + ok($c eq NFC($c)); # 2 + ok($c eq NFKD($c)); # 3 + ok($c eq NFKC($c)); # 4 + ok($c eq FCD($c)); # 5 + ok($c eq FCC($c)); # 6 + ok($c eq decompose($c)); # 7 + ok($c eq decompose($c,1)); # 8 + ok($c eq reorder($c)); # 9 + ok($c eq compose($c)); # 10 +} + +our $proc; # before the last starter +our $unproc; # the last starter and after + +sub _pack_U { Unicode::Normalize::pack_U(@_) } + +($proc, $unproc) = splitOnLastStarter(_pack_U(0x41, 0x300, 0x327, 0xFFFF)); +ok($proc eq _pack_U(0x41, 0x300, 0x327)); +ok($unproc eq "\x{FFFF}"); + diff --git a/gnu/usr.bin/perl/ext/Unicode/Normalize/t/null.t b/gnu/usr.bin/perl/ext/Unicode/Normalize/t/null.t new file mode 100755 index 00000000000..ae75752480a --- /dev/null +++ b/gnu/usr.bin/perl/ext/Unicode/Normalize/t/null.t @@ -0,0 +1,49 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Normalize " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +######################### + +use strict; +use warnings; + +use Unicode::Normalize qw(:all); +print "1..8\n"; + +print "ok 1\n"; + +# if $_ is not NULL-terminated, test may fail. + +$_ = compose('abc'); +print /c$/ ? "ok" : "not ok", " 2\n"; + +$_ = decompose('abc'); +print /c$/ ? "ok" : "not ok", " 3\n"; + +$_ = reorder('abc'); +print /c$/ ? "ok" : "not ok", " 4\n"; + +$_ = NFD('abc'); +print /c$/ ? "ok" : "not ok", " 5\n"; + +$_ = NFC('abc'); +print /c$/ ? "ok" : "not ok", " 6\n"; + +$_ = NFKD('abc'); +print /c$/ ? "ok" : "not ok", " 7\n"; + +$_ = NFKC('abc'); +print /c$/ ? "ok" : "not ok", " 8\n"; + diff --git a/gnu/usr.bin/perl/ext/Unicode/Normalize/t/short.t b/gnu/usr.bin/perl/ext/Unicode/Normalize/t/short.t new file mode 100755 index 00000000000..1f185acb18d --- /dev/null +++ b/gnu/usr.bin/perl/ext/Unicode/Normalize/t/short.t @@ -0,0 +1,55 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Normalize " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +######################### + +use strict; +use Unicode::Normalize qw(:all); + +print "1..8\n"; +print "ok 1\n"; + +######################### + +no warnings qw(utf8); + +our $a = "\x{3042}"; # 3-byte length (in UTF-8/UTF-EBCDIC) +{ + use bytes; + substr($a,1,length($a), ''); # remove trailing octets +} + +print NFD($a) eq "\0" + ? "ok" : "not ok", " 2\n"; + +print NFKD($a) eq "\0" + ? "ok" : "not ok", " 3\n"; + +print NFC($a) eq "\0" + ? "ok" : "not ok", " 4\n"; + +print NFKC($a) eq "\0" + ? "ok" : "not ok", " 5\n"; + +print decompose($a) eq "\0" + ? "ok" : "not ok", " 6\n"; + +print reorder($a) eq "\0" + ? "ok" : "not ok", " 7\n"; + +print compose($a) eq "\0" + ? "ok" : "not ok", " 8\n"; + diff --git a/gnu/usr.bin/perl/ext/XS/APItest/t/hash.t b/gnu/usr.bin/perl/ext/XS/APItest/t/hash.t new file mode 100755 index 00000000000..2d3f19d4b65 --- /dev/null +++ b/gnu/usr.bin/perl/ext/XS/APItest/t/hash.t @@ -0,0 +1,215 @@ +#!perl -w + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + push @INC, "::lib:$MacPerl::Architecture:" if $^O eq 'MacOS'; + require Config; import Config; + if ($Config{'extensions'} !~ /\bXS\/APItest\b/) { + # Look, I'm using this fully-qualified variable more than once! + my $arch = $MacPerl::Architecture; + print "1..0 # Skip: XS::APItest was not built\n"; + exit 0; + } +} + +use strict; +use utf8; +use Tie::Hash; +use Test::More 'no_plan'; + +use_ok('XS::APItest'); + +sub preform_test; +sub test_present; +sub test_absent; +sub test_delete_present; +sub test_delete_absent; +sub brute_force_exists; +sub test_store; +sub test_fetch_present; +sub test_fetch_absent; + +my $utf8_for_258 = chr 258; +utf8::encode $utf8_for_258; + +my @testkeys = ('N', chr 198, chr 256); +my @keys = (@testkeys, $utf8_for_258); + +foreach (@keys) { + utf8::downgrade $_, 1; +} +main_tests (\@keys, \@testkeys, ''); + +foreach (@keys) { + utf8::upgrade $_; +} +main_tests (\@keys, \@testkeys, ' [utf8 hash]'); + +{ + my %h = (a=>'cheat'); + tie %h, 'Tie::StdHash'; + is (XS::APItest::Hash::store(\%h, chr 258, 1), 1); + + ok (!exists $h{$utf8_for_258}, + "hv_store doesn't insert a key with the raw utf8 on a tied hash"); +} + +exit; + +################################ The End ################################ + +sub main_tests { + my ($keys, $testkeys, $description) = @_; + foreach my $key (@$testkeys) { + my $lckey = ($key eq chr 198) ? chr 230 : lc $key; + my $unikey = $key; + utf8::encode $unikey; + + utf8::downgrade $key, 1; + utf8::downgrade $lckey, 1; + utf8::downgrade $unikey, 1; + main_test_inner ($key, $lckey, $unikey, $keys, $description); + + utf8::upgrade $key; + utf8::upgrade $lckey; + utf8::upgrade $unikey; + main_test_inner ($key, $lckey, $unikey, $keys, + $description . ' [key utf8 on]'); + } + + # hv_exists was buggy for tied hashes, in that the raw utf8 key was being + # used - the utf8 flag was being lost. + perform_test (\&test_absent, (chr 258), $keys, ''); + + perform_test (\&test_fetch_absent, (chr 258), $keys, ''); + perform_test (\&test_delete_absent, (chr 258), $keys, ''); +} + +sub main_test_inner { + my ($key, $lckey, $unikey, $keys, $description) = @_; + perform_test (\&test_present, $key, $keys, $description); + perform_test (\&test_fetch_present, $key, $keys, $description); + perform_test (\&test_delete_present, $key, $keys, $description); + + perform_test (\&test_store, $key, $keys, $description, [a=>'cheat']); + perform_test (\&test_store, $key, $keys, $description, []); + + perform_test (\&test_absent, $lckey, $keys, $description); + perform_test (\&test_fetch_absent, $lckey, $keys, $description); + perform_test (\&test_delete_absent, $lckey, $keys, $description); + + return if $unikey eq $key; + + perform_test (\&test_absent, $unikey, $keys, $description); + perform_test (\&test_fetch_absent, $unikey, $keys, $description); + perform_test (\&test_delete_absent, $unikey, $keys, $description); +} + +sub perform_test { + my ($test_sub, $key, $keys, $message, @other) = @_; + my $printable = join ',', map {ord} split //, $key; + + my (%hash, %tiehash); + tie %tiehash, 'Tie::StdHash'; + + @hash{@$keys} = @$keys; + @tiehash{@$keys} = @$keys; + + &$test_sub (\%hash, $key, $printable, $message, @other); + &$test_sub (\%tiehash, $key, $printable, "$message tie", @other); +} + +sub test_present { + my ($hash, $key, $printable, $message) = @_; + + ok (exists $hash->{$key}, "hv_exists_ent present$message $printable"); + ok (XS::APItest::Hash::exists ($hash, $key), + "hv_exists present$message $printable"); +} + +sub test_absent { + my ($hash, $key, $printable, $message) = @_; + + ok (!exists $hash->{$key}, "hv_exists_ent absent$message $printable"); + ok (!XS::APItest::Hash::exists ($hash, $key), + "hv_exists absent$message $printable"); +} + +sub test_delete_present { + my ($hash, $key, $printable, $message) = @_; + + my $copy = {}; + my $class = tied %$hash; + if (defined $class) { + tie %$copy, ref $class; + } + $copy = {%$hash}; + is (delete $copy->{$key}, $key, "hv_delete_ent present$message $printable"); + $copy = {%$hash}; + is (XS::APItest::Hash::delete ($copy, $key), $key, + "hv_delete present$message $printable"); +} + +sub test_delete_absent { + my ($hash, $key, $printable, $message) = @_; + + my $copy = {}; + my $class = tied %$hash; + if (defined $class) { + tie %$copy, ref $class; + } + $copy = {%$hash}; + is (delete $copy->{$key}, undef, "hv_delete_ent absent$message $printable"); + $copy = {%$hash}; + is (XS::APItest::Hash::delete ($copy, $key), undef, + "hv_delete absent$message $printable"); +} + +sub test_store { + my ($hash, $key, $printable, $message, $defaults) = @_; + my $HV_STORE_IS_CRAZY = 1; + + # We are cheating - hv_store returns NULL for a store into an empty + # tied hash. This isn't helpful here. + + my $class = tied %$hash; + + my %h1 = @$defaults; + my %h2 = @$defaults; + if (defined $class) { + tie %h1, ref $class; + tie %h2, ref $class; + $HV_STORE_IS_CRAZY = undef unless @$defaults; + } + is (XS::APItest::Hash::store_ent(\%h1, $key, 1), 1, + "hv_store_ent$message $printable"); + ok (brute_force_exists (\%h1, $key), "hv_store_ent$message $printable"); + is (XS::APItest::Hash::store(\%h2, $key, 1), $HV_STORE_IS_CRAZY, + "hv_store$message $printable"); + ok (brute_force_exists (\%h2, $key), "hv_store$message $printable"); +} + +sub test_fetch_present { + my ($hash, $key, $printable, $message) = @_; + + is ($hash->{$key}, $key, "hv_fetch_ent present$message $printable"); + is (XS::APItest::Hash::fetch ($hash, $key), $key, + "hv_fetch present$message $printable"); +} + +sub test_fetch_absent { + my ($hash, $key, $printable, $message) = @_; + + is ($hash->{$key}, undef, "hv_fetch_ent absent$message $printable"); + is (XS::APItest::Hash::fetch ($hash, $key), undef, + "hv_fetch absent$message $printable"); +} + +sub brute_force_exists { + my ($hash, $key) = @_; + foreach (keys %$hash) { + return 1 if $key eq $_; + } + return 0; +} diff --git a/gnu/usr.bin/perl/ext/threads/shared/t/wait.t b/gnu/usr.bin/perl/ext/threads/shared/t/wait.t new file mode 100755 index 00000000000..d1b7c0ae99f --- /dev/null +++ b/gnu/usr.bin/perl/ext/threads/shared/t/wait.t @@ -0,0 +1,338 @@ +# cond_wait and cond_timedwait extended tests +# adapted from cond.t + +use warnings; + +BEGIN { + chdir 't' if -d 't'; + push @INC ,'../lib'; + require Config; import Config; + unless ($Config{'useithreads'}) { + print "1..0 # Skip: no threads\n"; + exit 0; + } +} +$|++; +print "1..102\n"; +use strict; + +use threads; +use threads::shared; +use ExtUtils::testlib; + +my $Base = 0; + +sub ok { + my ($offset, $bool, $text) = @_; + my $not = ''; + $not = "not " unless $bool; + print "${not}ok " . ($Base + $offset) . " - $text\n"; +} + +sub forko (&$$); # To prevent deadlock from underlying pthread_* bugs (as in + # stock RH9 glibc/NPTL) or from our own errors, we run tests + # in separately forked and alarmed processes. + +*forko = ($^O =~ /^dos|os2|mswin32|netware|vms$/i) +? sub (&$$) { my $code = shift; goto &$code; } +: sub (&$$) { + my ($code, $expected, $patience) = @_; + my ($test_num, $pid); + local *CHLD; + + my $bump = $expected; + + $patience ||= 60; + + unless (defined($pid = open(CHLD, "-|"))) { + die "fork: $!\n"; + } + if (! $pid) { # Child -- run the test + $patience ||= 60; + alarm $patience; + &$code; + exit; + } + + while (<CHLD>) { + $expected--, $test_num=$1 if /^(?:not )?ok (\d+)/; + #print "#forko: ($expected, $1) $_"; + print; + } + + close(CHLD); + + while ($expected--) { + $test_num++; + print "not ok $test_num - child status $?\n"; + } + + $Base += $bump; + +}; + +# - TEST basics + +ok(1, defined &cond_wait, "cond_wait() present"); +ok(2, (prototype(\&cond_wait) eq '\[$@%];\[$@%]'), + q|cond_wait() prototype '\[$@%];\[$@%]'|); +ok(3, defined &cond_timedwait, "cond_timedwait() present"); +ok(4, (prototype(\&cond_timedwait) eq '\[$@%]$;\[$@%]'), + q|cond_timedwait() prototype '\[$@%]$;\[$@%]'|); + +$Base += 4; + +my @wait_how = ( + "simple", # cond var == lock var; implicit lock; e.g.: cond_wait($c) + "repeat", # cond var == lock var; explicit lock; e.g.: cond_wait($c, $c) + "twain" # cond var != lock var; explicit lock; e.g.: cond_wait($c, $l) +); + +SYNC_SHARED: { + my $test : shared; # simple|repeat|twain + my $cond : shared; + my $lock : shared; + + print "# testing my \$var : shared\n"; + ok(1, 1, "Shared synchronization tests preparation"); + $Base += 1; + + sub signaller { + ok(2,1,"$test: child before lock"); + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(3,1,"$test: child obtained lock"); + if ($test =~ 'twain') { + no warnings 'threads'; # lock var != cond var, so disable warnings + cond_signal($cond); + } else { + cond_signal($cond); + } + ok(4,1,"$test: child signalled condition"); + } + + # - TEST cond_wait + forko( sub { + foreach (@wait_how) { + $test = "cond_wait [$_]"; + threads->create(\&cw)->join; + $Base += 6; + } + }, 6*@wait_how, 90); + + sub cw { + my $thr; + + { # -- begin lock scope; which lock to obtain? + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(1,1, "$test: obtained initial lock"); + + $thr = threads->create(\&signaller); + for ($test) { + cond_wait($cond), last if /simple/; + cond_wait($cond, $cond), last if /repeat/; + cond_wait($cond, $lock), last if /twain/; + die "$test: unknown test\n"; + } + ok(5,1, "$test: condition obtained"); + } # -- end lock scope + + $thr->join; + ok(6,1, "$test: join completed"); + } + + # - TEST cond_timedwait success + + forko( sub { + foreach (@wait_how) { + $test = "cond_timedwait [$_]"; + threads->create(\&ctw, 5)->join; + $Base += 6; + } + }, 6*@wait_how, 90); + + sub ctw($) { + my $to = shift; + my $thr; + + { # -- begin lock scope; which lock to obtain? + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(1,1, "$test: obtained initial lock"); + + $thr = threads->create(\&signaller); + my $ok = 0; + for ($test) { + $ok=cond_timedwait($cond, time() + $to), last if /simple/; + $ok=cond_timedwait($cond, time() + $to, $cond), last if /repeat/; + $ok=cond_timedwait($cond, time() + $to, $lock), last if /twain/; + die "$test: unknown test\n"; + } + ok(5,$ok, "$test: condition obtained"); + } # -- end lock scope + + $thr->join; + ok(6,1, "$test: join completed"); + } + + # - TEST cond_timedwait timeout + + forko( sub { + foreach (@wait_how) { + $test = "cond_timedwait pause, timeout [$_]"; + threads->create(\&ctw_fail, 3)->join; + $Base += 2; + } + }, 2*@wait_how, 90); + + forko( sub { + foreach (@wait_how) { + $test = "cond_timedwait instant timeout [$_]"; + threads->create(\&ctw_fail, -60)->join; + $Base += 2; + } + }, 2*@wait_how, 90); + + # cond_timedwait timeout (relative timeout) + sub ctw_fail { + my $to = shift; + + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(1,1, "$test: obtained initial lock"); + my $ok; + for ($test) { + $ok=cond_timedwait($cond, time() + $to), last if /simple/; + $ok=cond_timedwait($cond, time() + $to, $cond), last if /repeat/; + $ok=cond_timedwait($cond, time() + $to, $lock), last if /twain/; + die "$test: unknown test\n"; + } + ok(2,!defined($ok), "$test: timeout"); + } + +} # -- SYNCH_SHARED block + + +# same as above, but with references to lock and cond vars + +SYNCH_REFS: { + my $test : shared; # simple|repeat|twain + + my $true_cond; share($true_cond); + my $true_lock; share($true_lock); + + my $cond = \$true_cond; + my $lock = \$true_lock; + + print "# testing reference to shared(\$var)\n"; + ok(1, 1, "Synchronization reference tests preparation"); + $Base += 1; + + sub signaller2 { + ok(2,1,"$test: child before lock"); + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(3,1,"$test: child obtained lock"); + if ($test =~ 'twain') { + no warnings 'threads'; # lock var != cond var, so disable warnings + cond_signal($cond); + } else { + cond_signal($cond); + } + ok(4,1,"$test: child signalled condition"); + } + + # - TEST cond_wait + forko( sub { + foreach (@wait_how) { + $test = "cond_wait [$_]"; + threads->create(\&cw2)->join; + $Base += 6; + } + }, 6*@wait_how, 90); + + sub cw2 { + my $thr; + + { # -- begin lock scope; which lock to obtain? + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(1,1, "$test: obtained initial lock"); + + $thr = threads->create(\&signaller2); + for ($test) { + cond_wait($cond), last if /simple/; + cond_wait($cond, $cond), last if /repeat/; + cond_wait($cond, $lock), last if /twain/; + die "$test: unknown test\n"; + } + ok(5,1, "$test: condition obtained"); + } # -- end lock scope + + $thr->join; + ok(6,1, "$test: join completed"); + } + + # - TEST cond_timedwait success + + forko( sub { + foreach (@wait_how) { + $test = "cond_timedwait [$_]"; + threads->create(\&ctw2, 5)->join; + $Base += 6; + } + }, 6*@wait_how, 90); + + sub ctw2($) { + my $to = shift; + my $thr; + + { # -- begin lock scope; which lock to obtain? + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(1,1, "$test: obtained initial lock"); + + $thr = threads->create(\&signaller2); + my $ok = 0; + for ($test) { + $ok=cond_timedwait($cond, time() + $to), last if /simple/; + $ok=cond_timedwait($cond, time() + $to, $cond), last if /repeat/; + $ok=cond_timedwait($cond, time() + $to, $lock), last if /twain/; + die "$test: unknown test\n"; + } + ok(5,$ok, "$test: condition obtained"); + } # -- end lock scope + + $thr->join; + ok(6,1, "$test: join completed"); + } + + # - TEST cond_timedwait timeout + + forko( sub { + foreach (@wait_how) { + $test = "cond_timedwait pause, timeout [$_]"; + threads->create(\&ctw_fail2, 3)->join; + $Base += 2; + } + }, 2*@wait_how, 90); + + forko( sub { + foreach (@wait_how) { + $test = "cond_timedwait instant timeout [$_]"; + threads->create(\&ctw_fail2, -60)->join; + $Base += 2; + } + }, 2*@wait_how, 90); + + sub ctw_fail2 { + my $to = shift; + + $test =~ /twain/ ? lock($lock) : lock($cond); + ok(1,1, "$test: obtained initial lock"); + my $ok; + for ($test) { + $ok=cond_timedwait($cond, time() + $to), last if /simple/; + $ok=cond_timedwait($cond, time() + $to, $cond), last if /repeat/; + $ok=cond_timedwait($cond, time() + $to, $lock), last if /twain/; + die "$test: unknown test\n"; + } + ok(2,!$ok, "$test: timeout"); + } + +} # -- SYNCH_REFS block + diff --git a/gnu/usr.bin/perl/hints/posix-bc.sh b/gnu/usr.bin/perl/hints/posix-bc.sh index 006323fd252..00c1cc9ac54 100644 --- a/gnu/usr.bin/perl/hints/posix-bc.sh +++ b/gnu/usr.bin/perl/hints/posix-bc.sh @@ -23,7 +23,7 @@ esac # -DUSE_PURE_BISON # -D_XOPEN_SOURCE_EXTENDED alters system headers. # Prepend your favorites with Configure -Dccflags=your_favorites -ccflags="$ccflags -Kc_names_unlimited,enum_long,llm_case_lower,llm_keep,no_integer_overflow -DPOSIX_BC -DUSE_PURE_BISON -D_XOPEN_SOURCE_EXTENDED" +ccflags="$ccflags -Kc_names_unlimited,enum_long,llm_case_lower,llm_keep,no_integer_overflow -DPOSIX_BC -DUSE_PURE_BISON -DYYMAXDEPTH=65000 -DYYINITDEPTH=1000 -D_XOPEN_SOURCE_EXTENDED" # Now, what kind of BS2000 system are we running on? echo diff --git a/gnu/usr.bin/perl/hints/vos.sh b/gnu/usr.bin/perl/hints/vos.sh index 1ba87310497..a5bf3372a47 100644 --- a/gnu/usr.bin/perl/hints/vos.sh +++ b/gnu/usr.bin/perl/hints/vos.sh @@ -145,3 +145,5 @@ $rm -f t001$_o t001$_exe t001.kp EOCBU +# VOS 14.7 has minimal support for dynamic linking. Too minimal for perl. +usedl="undef" diff --git a/gnu/usr.bin/perl/lib/Digest/base.pm b/gnu/usr.bin/perl/lib/Digest/base.pm new file mode 100644 index 00000000000..df9408fbc62 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Digest/base.pm @@ -0,0 +1,100 @@ +package Digest::base; + +use strict; +use vars qw($VERSION); +$VERSION = "1.00"; + +# subclass is supposed to implement at least these +sub new; +sub clone; +sub add; +sub digest; + +sub reset { + my $self = shift; + $self->new(@_); # ugly +} + +sub addfile { + my ($self, $handle) = @_; + + my $n; + my $buf = ""; + + while (($n = read($handle, $buf, 4*1024))) { + $self->add($buf); + } + unless (defined $n) { + require Carp; + Carp::croak("Read failed: $!"); + } + + $self; +} + +sub add_bits { + my $self = shift; + my $bits; + my $nbits; + if (@_ == 1) { + my $arg = shift; + $bits = pack("B*", $arg); + $nbits = length($arg); + } + else { + ($bits, $nbits) = @_; + } + if (($nbits % 8) != 0) { + require Carp; + Carp::croak("Number of bits must be multiple of 8 for this algorithm"); + } + return $self->add(substr($bits, 0, $nbits/8)); +} + +sub hexdigest { + my $self = shift; + return unpack("H*", $self->digest(@_)); +} + +sub b64digest { + my $self = shift; + require MIME::Base64; + my $b64 = MIME::Base64::encode($self->digest(@_), ""); + $b64 =~ s/=+$//; + return $b64; +} + +1; + +__END__ + +=head1 NAME + +Digest::base - Digest base class + +=head1 SYNPOSIS + + package Digest::Foo; + use base 'Digest::base'; + +=head1 DESCRIPTION + +The C<Digest::base> class provide implementations of the methods +C<addfile> and C<add_bits> in terms of C<add>, and of the methods +C<hexdigest> and C<b64digest> in terms of C<digest>. + +Digest implementations might want to inherit from this class to get +this implementations of the alternative I<add> and I<digest> methods. +A minimal subclass needs to implement the following methods by itself: + + new + clone + add + digest + +The arguments and expected behaviour of these methods are described in +L<Digest>. + +=head1 SEE ALSO + +L<Digest> diff --git a/gnu/usr.bin/perl/lib/Digest/t/base.t b/gnu/usr.bin/perl/lib/Digest/t/base.t new file mode 100755 index 00000000000..c398346cace --- /dev/null +++ b/gnu/usr.bin/perl/lib/Digest/t/base.t @@ -0,0 +1,76 @@ +#!perl -w + +use Test qw(plan ok); +plan tests => 12; + +{ + package LenDigest; + require Digest::base; + use vars qw(@ISA); + @ISA = qw(Digest::base); + + sub new { + my $class = shift; + my $str = ""; + bless \$str, $class; + } + + sub add { + my $self = shift; + $$self .= join("", @_); + return $self; + } + + sub digest { + my $self = shift; + my $len = length($$self); + my $first = ($len > 0) ? substr($$self, 0, 1) : "X"; + $$self = ""; + return sprintf "$first%04d", $len; + } +} + +my $ctx = LenDigest->new; +ok($ctx->digest, "X0000"); +ok($ctx->hexdigest, "5830303030"); +ok($ctx->b64digest, "WDAwMDA"); + +$ctx->add("foo"); +ok($ctx->digest, "f0003"); + +$ctx->add("foo"); +ok($ctx->hexdigest, "6630303033"); + +$ctx->add("foo"); +ok($ctx->b64digest, "ZjAwMDM"); + +open(F, ">xxtest$$") || die; +binmode(F); +print F "abc" x 100, "\n"; +close(F) || die; + +open(F, "xxtest$$") || die; +$ctx->addfile(*F); +close(F); +unlink("xxtest$$") || warn; + +ok($ctx->digest, "a0301"); + +eval { + $ctx->add_bits("1010"); +}; +ok($@ =~ /^Number of bits must be multiple of 8/); + +$ctx->add_bits("01010101"); +ok($ctx->digest, "U0001"); + +eval { + $ctx->add_bits("abc", 12); +}; +ok($@ =~ /^Number of bits must be multiple of 8/); + +$ctx->add_bits("abc", 16); +ok($ctx->digest, "a0002"); + +$ctx->add_bits("abc", 32); +ok($ctx->digest, "a0003"); diff --git a/gnu/usr.bin/perl/lib/Digest/t/digest.t b/gnu/usr.bin/perl/lib/Digest/t/digest.t new file mode 100755 index 00000000000..c5da8f02c83 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Digest/t/digest.t @@ -0,0 +1,36 @@ +print "1..3\n"; + +use Digest; + +{ + package Digest::Dummy; + use vars qw($VERSION @ISA); + $VERSION = 1; + + require Digest::base; + @ISA = qw(Digest::base); + + sub new { + my $class = shift; + my $d = shift || "ooo"; + bless { d => $d }, $class; + } + sub add {} + sub digest { shift->{d} } +} + +my $d; +$d = Digest->new("Dummy"); +print "not " unless $d->digest eq "ooo"; +print "ok 1\n"; + +$d = Digest->Dummy; +print "not " unless $d->digest eq "ooo"; +print "ok 2\n"; + +$Digest::MMAP{"Dummy-24"} = [["NotThere"], "NotThereEither", ["Digest::Dummy", 24]]; +$d = Digest->new("Dummy-24"); +print "not " unless $d->digest eq "24"; +print "ok 3\n"; + + diff --git a/gnu/usr.bin/perl/lib/Exporter.t b/gnu/usr.bin/perl/lib/Exporter.t index 54150685a75..548613d11b9 100644 --- a/gnu/usr.bin/perl/lib/Exporter.t +++ b/gnu/usr.bin/perl/lib/Exporter.t @@ -21,7 +21,7 @@ sub ok ($;$) { } -print "1..26\n"; +print "1..28\n"; require Exporter; ok( 1, 'Exporter compiled' ); @@ -196,3 +196,21 @@ push @Moving::Target::EXPORT_OK, 'bar'; Moving::Target->import (bar); ::ok (bar eq "bar", "imported bar after EXPORT_OK changed"); + +package The::Import; + +use Exporter 'import'; + +eval { import() }; +::ok(\&import == \&Exporter::import, "imported the import routine"); + +@EXPORT = qw( wibble ); +sub wibble {return "wobble"}; + +package Use::The::Import; + +The::Import->import; + +my $val = eval { wibble() }; +::ok($val eq "wobble", "exported importer worked"); + diff --git a/gnu/usr.bin/perl/lib/File/Copy.t b/gnu/usr.bin/perl/lib/File/Copy.t index 6f8c801bcfb..0fcc1306c41 100644 --- a/gnu/usr.bin/perl/lib/File/Copy.t +++ b/gnu/usr.bin/perl/lib/File/Copy.t @@ -9,10 +9,11 @@ BEGIN { $| = 1; my @pass = (0,1); -my $tests = $^O eq 'MacOS' ? 15 : 12; +my $tests = $^O eq 'MacOS' ? 17 : 14; printf "1..%d\n", $tests * scalar(@pass); use File::Copy; +use Config; for my $pass (@pass) { @@ -83,6 +84,7 @@ for my $pass (@pass) { print "# foo=`$foo'\nnot " unless $foo eq sprintf "ok %d\n", 3+$loopconst; printf "ok %d\n", 9+$loopconst; + my $test_i; if ($^O eq 'MacOS') { copy "file-$$", "lib"; @@ -122,7 +124,8 @@ for my $pass (@pass) { unless $@ =~ /are identical/ && -s "copy-$$"; unlink ":lib:file-$$" or die "unlink: $!"; - + + $test_i = 15; } else { copy "file-$$", "lib"; @@ -142,8 +145,42 @@ for my $pass (@pass) { unless $@ =~ /are identical/ && -s "copy-$$"; unlink "lib/file-$$" or die "unlink: $!"; - + + $test_i = 12; + } + + if ($Config{d_symlink}) { + open(F, ">file-$$") or die $!; + print F "dummy content\n"; + close F; + symlink("file-$$", "symlink-$$") or die $!; + eval { copy("file-$$", "symlink-$$") }; + print "not " if $@ !~ /are identical/ || -z "file-$$"; + printf "ok %d\n", (++$test_i)+$loopconst; + unlink "symlink-$$"; + unlink "file-$$"; + } else { + printf "ok %d # Skipped: no symlinks on this platform\n", (++$test_i)+$loopconst; } + + if ($Config{d_link}) { + if ($^O ne 'MSWin32') { + open(F, ">file-$$") or die $!; + print F "dummy content\n"; + close F; + link("file-$$", "hardlink-$$") or die $!; + eval { copy("file-$$", "hardlink-$$") }; + print "not " if $@ !~ /are identical/ || -z "file-$$"; + printf "ok %d\n", (++$test_i)+$loopconst; + unlink "hardlink-$$"; + unlink "file-$$"; + } else { + printf "ok %d # Skipped: can't test hardlinks on MSWin32\n", (++$test_i)+$loopconst; + } + } else { + printf "ok %d # Skipped: no hardlinks on this platform\n", (++$test_i)+$loopconst; + } + } diff --git a/gnu/usr.bin/perl/lib/FindBin.t b/gnu/usr.bin/perl/lib/FindBin.t index 80ac811d208..be6f58c3e0a 100644 --- a/gnu/usr.bin/perl/lib/FindBin.t +++ b/gnu/usr.bin/perl/lib/FindBin.t @@ -5,7 +5,7 @@ BEGIN { @INC = -d 't' ? 'lib' : '../lib'; } -print "1..1\n"; +print "1..2\n"; use FindBin qw($Bin); @@ -17,3 +17,9 @@ if ($^O eq 'MacOS') { print "not " unless $Bin =~ m,[/.]lib\]?$,; } print "ok 1\n"; + +$0 = "-"; +FindBin::again(); + +print "not " if $FindBin::Script ne "-"; +print "ok 2\n"; diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/CalcEmu.pm b/gnu/usr.bin/perl/lib/Math/BigInt/CalcEmu.pm new file mode 100644 index 00000000000..d5d1734b220 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/CalcEmu.pm @@ -0,0 +1,632 @@ +package Math::BigInt; + +use 5.005; +use strict; +# use warnings; # dont use warnings for older Perls + +use vars qw/$VERSION/; + +$VERSION = '0.02'; + +# See SYNOPSIS below. + +my $CALC_EMU; + +BEGIN + { + $CALC_EMU = Math::BigInt->config()->{'lib'}; + } + +sub __emu_blog + { + my ($self,$x,$base,@r) = @_; + + return $x->bnan() if $x->is_zero() || $base->is_zero() || $base->is_one(); + + my $acmp = $x->bacmp($base); + return $x->bone('+',@r) if $acmp == 0; + return $x->bzero(@r) if $acmp < 0 || $x->is_one(); + + # blog($x,$base) ** $base + $y = $x + + # this trial multiplication is very fast, even for large counts (like for + # 2 ** 1024, since this still requires only 1024 very fast steps + # (multiplication of a large number by a very small number is very fast)) + # See Calc for an even faster algorightmn + my $x_org = $x->copy(); # preserve orgx + $x->bzero(); # keep ref to $x + my $trial = $base->copy(); + while ($trial->bacmp($x_org) <= 0) + { + $trial->bmul($base); $x->binc(); + } + $x->round(@r); + } + +sub __emu_bmodinv + { + my ($self,$x,$y,@r) = @_; + + my ($u, $u1) = ($self->bzero(), $self->bone()); + my ($a, $b) = ($y->copy(), $x->copy()); + + # first step need always be done since $num (and thus $b) is never 0 + # Note that the loop is aligned so that the check occurs between #2 and #1 + # thus saving us one step #2 at the loop end. Typical loop count is 1. Even + # a case with 28 loops still gains about 3% with this layout. + my $q; + ($a, $q, $b) = ($b, $a->bdiv($b)); # step #1 + # Euclid's Algorithm (calculate GCD of ($a,$b) in $a and also calculate + # two values in $u and $u1, we use only $u1 afterwards) + my $sign = 1; # flip-flop + while (!$b->is_zero()) # found GCD if $b == 0 + { + # the original algorithm had: + # ($u, $u1) = ($u1, $u->bsub($u1->copy()->bmul($q))); # step #2 + # The following creates exact the same sequence of numbers in $u1, + # except for the sign ($u1 is now always positive). Since formerly + # the sign of $u1 was alternating between '-' and '+', the $sign + # flip-flop will take care of that, so that at the end of the loop + # we have the real sign of $u1. Keeping numbers positive gains us + # speed since badd() is faster than bsub() and makes it possible + # to have the algorithmn in Calc for even more speed. + + ($u, $u1) = ($u1, $u->badd($u1->copy()->bmul($q))); # step #2 + $sign = - $sign; # flip sign + + ($a, $q, $b) = ($b, $a->bdiv($b)); # step #1 again + } + + # If the gcd is not 1, then return NaN! It would be pointless to have + # called bgcd to check this first, because we would then be performing + # the same Euclidean Algorithm *twice* in case the gcd is 1. + return $x->bnan() unless $a->is_one(); + + $u1->bneg() if $sign != 1; # need to flip? + + $u1->bmod($y); # calc result + $x->{value} = $u1->{value}; # and copy over to $x + $x->{sign} = $u1->{sign}; # to modify in place + $x->round(@r); + } + +sub __emu_bmodpow + { + my ($self,$num,$exp,$mod,@r) = @_; + + # in the trivial case, + return $num->bzero(@r) if $mod->is_one(); + return $num->bone('+',@r) if $num->is_zero() or $num->is_one(); + + # $num->bmod($mod); # if $x is large, make it smaller first + my $acc = $num->copy(); # but this is not really faster... + + $num->bone(); # keep ref to $num + + my $expbin = $exp->as_bin(); $expbin =~ s/^[-]?0b//; # ignore sign and prefix + my $len = CORE::length($expbin); + while (--$len >= 0) + { + $num->bmul($acc)->bmod($mod) if substr($expbin,$len,1) eq '1'; + $acc->bmul($acc)->bmod($mod); + } + + $num->round(@r); + } + +sub __emu_bfac + { + my ($self,$x,@r) = @_; + + return $x->bone('+',@r) if $x->is_zero() || $x->is_one(); # 0 or 1 => 1 + + my $n = $x->copy(); + $x->bone(); + # seems we need not to temp. clear A/P of $x since the result is the same + my $f = $self->new(2); + while ($f->bacmp($n) < 0) + { + $x->bmul($f); $f->binc(); + } + $x->bmul($f,@r); # last step and also round result + } + +sub __emu_bpow + { + my ($self,$x,$y,@r) = @_; + + return $x->bone('+',@r) if $y->is_zero(); + return $x->round(@r) if $x->is_one() || $y->is_one(); + return $x->round(@r) if $x->is_zero(); # 0**y => 0 (if not y <= 0) + + my $pow2 = $self->bone(); + my $y_bin = $y->as_bin(); $y_bin =~ s/^0b//; + my $len = CORE::length($y_bin); + while (--$len > 0) + { + $pow2->bmul($x) if substr($y_bin,$len,1) eq '1'; # is odd? + $x->bmul($x); + } + $x->bmul($pow2); + $x->round(@r) if !exists $x->{_f} || $x->{_f} & MB_NEVER_ROUND == 0; + $x; + } + +sub __emu_band + { + my ($self,$x,$y,$sx,$sy,@r) = @_; + + return $x->bzero(@r) if $y->is_zero() || $x->is_zero(); + + my $sign = 0; # sign of result + $sign = 1 if $sx == -1 && $sy == -1; + + my ($bx,$by); + + if ($sx == -1) # if x is negative + { + # two's complement: inc and flip all "bits" in $bx + $bx = $x->binc()->as_hex(); # -1 => 0, -2 => 1, -3 => 2 etc + $bx =~ s/-?0x//; + $bx =~ tr/0123456789abcdef/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + else + { + $bx = $x->as_hex(); # get binary representation + $bx =~ s/-?0x//; + $bx =~ tr/fedcba9876543210/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + if ($sy == -1) # if y is negative + { + # two's complement: inc and flip all "bits" in $by + $by = $y->copy()->binc()->as_hex(); # -1 => 0, -2 => 1, -3 => 2 etc + $by =~ s/-?0x//; + $by =~ tr/0123456789abcdef/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + else + { + $by = $y->as_hex(); # get binary representation + $by =~ s/-?0x//; + $by =~ tr/fedcba9876543210/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + # now we have bit-strings from X and Y, reverse them for padding + $bx = reverse $bx; + $by = reverse $by; + + # cut the longer string to the length of the shorter one (the result would + # be 0 due to AND anyway) + my $diff = CORE::length($bx) - CORE::length($by); + if ($diff > 0) + { + $bx = substr($bx,0,CORE::length($by)); + } + elsif ($diff < 0) + { + $by = substr($by,0,CORE::length($bx)); + } + + # and the strings together + my $r = $bx & $by; + + # and reverse the result again + $bx = reverse $r; + + # one of $x or $y was negative, so need to flip bits in the result + # in both cases (one or two of them negative, or both positive) we need + # to get the characters back. + if ($sign == 1) + { + $bx =~ tr/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/0123456789abcdef/; + } + else + { + $bx =~ tr/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/fedcba9876543210/; + } + + $bx = '0x' . $bx; + if ($CALC_EMU->can('_from_hex')) + { + $x->{value} = $CALC_EMU->_from_hex( \$bx ); + } + else + { + $r = $self->new($bx); + $x->{value} = $r->{value}; + } + + # calculate sign of result + $x->{sign} = '+'; + #$x->{sign} = '-' if $sx == $sy && $sx == -1 && !$x->is_zero(); + $x->{sign} = '-' if $sign == 1 && !$x->is_zero(); + + $x->bdec() if $sign == 1; + + $x->round(@r); + } + +sub __emu_bior + { + my ($self,$x,$y,$sx,$sy,@r) = @_; + + return $x->round(@r) if $y->is_zero(); + + my $sign = 0; # sign of result + $sign = 1 if ($sx == -1) || ($sy == -1); + + my ($bx,$by); + + if ($sx == -1) # if x is negative + { + # two's complement: inc and flip all "bits" in $bx + $bx = $x->binc()->as_hex(); # -1 => 0, -2 => 1, -3 => 2 etc + $bx =~ s/-?0x//; + $bx =~ tr/0123456789abcdef/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + else + { + $bx = $x->as_hex(); # get binary representation + $bx =~ s/-?0x//; + $bx =~ tr/fedcba9876543210/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + if ($sy == -1) # if y is negative + { + # two's complement: inc and flip all "bits" in $by + $by = $y->copy()->binc()->as_hex(); # -1 => 0, -2 => 1, -3 => 2 etc + $by =~ s/-?0x//; + $by =~ tr/0123456789abcdef/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + else + { + $by = $y->as_hex(); # get binary representation + $by =~ s/-?0x//; + $by =~ tr/fedcba9876543210/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + # now we have bit-strings from X and Y, reverse them for padding + $bx = reverse $bx; + $by = reverse $by; + + # padd the shorter string + my $xx = "\x00"; $xx = "\x0f" if $sx == -1; + my $yy = "\x00"; $yy = "\x0f" if $sy == -1; + my $diff = CORE::length($bx) - CORE::length($by); + if ($diff > 0) + { + $by .= $yy x $diff; + } + elsif ($diff < 0) + { + $bx .= $xx x abs($diff); + } + + # or the strings together + my $r = $bx | $by; + + # and reverse the result again + $bx = reverse $r; + + # one of $x or $y was negative, so need to flip bits in the result + # in both cases (one or two of them negative, or both positive) we need + # to get the characters back. + if ($sign == 1) + { + $bx =~ tr/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/0123456789abcdef/; + } + else + { + $bx =~ tr/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/fedcba9876543210/; + } + + $bx = '0x' . $bx; + if ($CALC_EMU->can('_from_hex')) + { + $x->{value} = $CALC_EMU->_from_hex( \$bx ); + } + else + { + $r = $self->new($bx); + $x->{value} = $r->{value}; + } + + # if one of X or Y was negative, we need to decrement result + $x->bdec() if $sign == 1; + + $x->round(@r); + } + +sub __emu_bxor + { + my ($self,$x,$y,$sx,$sy,@r) = @_; + + return $x->round(@r) if $y->is_zero(); + + my $sign = 0; # sign of result + $sign = 1 if $x->{sign} ne $y->{sign}; + + my ($bx,$by); + + if ($sx == -1) # if x is negative + { + # two's complement: inc and flip all "bits" in $bx + $bx = $x->binc()->as_hex(); # -1 => 0, -2 => 1, -3 => 2 etc + $bx =~ s/-?0x//; + $bx =~ tr/0123456789abcdef/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + else + { + $bx = $x->as_hex(); # get binary representation + $bx =~ s/-?0x//; + $bx =~ tr/fedcba9876543210/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + if ($sy == -1) # if y is negative + { + # two's complement: inc and flip all "bits" in $by + $by = $y->copy()->binc()->as_hex(); # -1 => 0, -2 => 1, -3 => 2 etc + $by =~ s/-?0x//; + $by =~ tr/0123456789abcdef/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + else + { + $by = $y->as_hex(); # get binary representation + $by =~ s/-?0x//; + $by =~ tr/fedcba9876543210/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/; + } + # now we have bit-strings from X and Y, reverse them for padding + $bx = reverse $bx; + $by = reverse $by; + + # padd the shorter string + my $xx = "\x00"; $xx = "\x0f" if $sx == -1; + my $yy = "\x00"; $yy = "\x0f" if $sy == -1; + my $diff = CORE::length($bx) - CORE::length($by); + if ($diff > 0) + { + $by .= $yy x $diff; + } + elsif ($diff < 0) + { + $bx .= $xx x abs($diff); + } + + # xor the strings together + my $r = $bx ^ $by; + + # and reverse the result again + $bx = reverse $r; + + # one of $x or $y was negative, so need to flip bits in the result + # in both cases (one or two of them negative, or both positive) we need + # to get the characters back. + if ($sign == 1) + { + $bx =~ tr/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/0123456789abcdef/; + } + else + { + $bx =~ tr/\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08\x07\x06\x05\x04\x03\x02\x01\x00/fedcba9876543210/; + } + + $bx = '0x' . $bx; + if ($CALC_EMU->can('_from_hex')) + { + $x->{value} = $CALC_EMU->_from_hex( \$bx ); + } + else + { + $r = $self->new($bx); + $x->{value} = $r->{value}; + } + + # calculate sign of result + $x->{sign} = '+'; + $x->{sign} = '-' if $sx != $sy && !$x->is_zero(); + + $x->bdec() if $sign == 1; + + $x->round(@r); + } + +sub __emu_bsqrt + { + my ($self,$x,@r) = @_; + + # this is slow: + return $x->round(@r) if $x->is_zero(); # 0,1 => 0,1 + + return $x->bone('+',@r) if $x < 4; # 1,2,3 => 1 + my $y = $x->copy(); + my $l = int($x->length()/2); + + $x->bone(); # keep ref($x), but modify it + $x->blsft($l,10) if $l != 0; # first guess: 1.('0' x (l/2)) + + my $last = $self->bzero(); + my $two = $self->new(2); + my $lastlast = $self->bzero(); + #my $lastlast = $x+$two; + while ($last != $x && $lastlast != $x) + { + $lastlast = $last; $last = $x->copy(); + $x->badd($y / $x); + $x->bdiv($two); + } + $x->bdec() if $x * $x > $y; # overshot? + $x->round(@r); + } + +sub __emu_broot + { + my ($self,$x,$y,@r) = @_; + + return $x->bsqrt() if $y->bacmp(2) == 0; # 2 => square root + + # since we take at least a cubic root, and only 8 ** 1/3 >= 2 (==2): + return $x->bone('+',@r) if $x < 8; # $x=2..7 => 1 + + my $num = $x->numify(); + + if ($num <= 1000000) + { + $x = $self->new( int ( sprintf ("%.8f", $num ** (1 / $y->numify() )))); + return $x->round(@r); + } + + # if $n is a power of two, we can repeatedly take sqrt($X) and find the + # proper result, because sqrt(sqrt($x)) == root($x,4) + # See Calc.pm for more details + my $b = $y->as_bin(); + if ($b =~ /0b1(0+)$/) + { + my $count = CORE::length($1); # 0b100 => len('00') => 2 + my $cnt = $count; # counter for loop + my $shift = $self->new(6); + $x->blsft($shift); # add some zeros (even amount) + while ($cnt-- > 0) + { + # 'inflate' $X by adding more zeros + $x->blsft($shift); + # calculate sqrt($x), $x is now a bit too big, again. In the next + # round we make even bigger, again. + $x->bsqrt($x); + } + # $x is still to big, so truncate result + $x->brsft($shift); + } + else + { + # trial computation by starting with 2,4,6,8,10 etc until we overstep + my $step; + my $trial = $self->new(2); + my $two = $self->new(2); + my $s_128 = $self->new(128); + + local undef $Math::BigInt::accuracy; + local undef $Math::BigInt::precision; + + # while still to do more than X steps + do + { + $step = $self->new(2); + while ( $trial->copy->bpow($y)->bacmp($x) < 0) + { + $step->bmul($two); + $trial->badd($step); + } + + # hit exactly? + if ( $trial->copy->bpow($y)->bacmp($x) == 0) + { + $x->{value} = $trial->{value}; # make copy while preserving ref to $x + return $x->round(@r); + } + # overstepped, so go back on step + $trial->bsub($step); + } while ($step > $s_128); + + $step = $two->copy(); + while ( $trial->copy->bpow($y)->bacmp($x) < 0) + { + $trial->badd($step); + } + + # not hit exactly? + if ( $x->bacmp( $trial->copy()->bpow($y) ) < 0) + { + $trial->bdec(); + } + # copy result into $x (preserve ref) + $x->{value} = $trial->{value}; + } + $x->round(@r); + } + +sub __emu_as_hex + { + my ($self,$x,$s) = @_; + + return '0x0' if $x->is_zero(); + + my $x1 = $x->copy()->babs(); my ($xr,$x10000,$h,$es); + if ($] >= 5.006) + { + $x10000 = $self->new (0x10000); $h = 'h4'; + } + else + { + $x10000 = $self->new (0x1000); $h = 'h3'; + } + while (!$x1->is_zero()) + { + ($x1, $xr) = bdiv($x1,$x10000); + $es .= unpack($h,pack('v',$xr->numify())); + } + $es = reverse $es; + $es =~ s/^[0]+//; # strip leading zeros + $s . '0x' . $es; + } + +sub __emu_as_bin + { + my ($self,$x,$s) = @_; + + return '0b0' if $x->is_zero(); + + my $x1 = $x->copy()->babs(); my ($xr,$x10000,$b,$es); + if ($] >= 5.006) + { + $x10000 = $self->new (0x10000); $b = 'b16'; + } + else + { + $x10000 = $self->new (0x1000); $b = 'b12'; + } + while (!$x1->is_zero()) + { + ($x1, $xr) = bdiv($x1,$x10000); + $es .= unpack($b,pack('v',$xr->numify())); + } + $es = reverse $es; + $es =~ s/^[0]+//; # strip leading zeros + $s . '0b' . $es; + } + +############################################################################## +############################################################################## + +1; +__END__ + +=head1 NAME + +Math::BigInt::CalcEmu - Emulate low-level math with BigInt code + +=head1 SYNOPSIS + +Contains routines that emulate low-level math functions in BigInt, e.g. +optional routines the low-level math package does not provide on it's own. + +Will be loaded on demand and automatically by BigInt. + +Stuff here is really low-priority to optimize, +since it is far better to implement the operation in the low-level math +libary directly, possible even using a call to the native lib. + +=head1 DESCRIPTION + +=head1 METHODS + +=head1 LICENSE + +This program is free software; you may redistribute it and/or modify it under +the same terms as Perl itself. + +=head1 AUTHORS + +(c) Tels http://bloodgate.com 2003 - based on BigInt code by +Tels from 2001-2003. + +=head1 SEE ALSO + +L<Math::BigInt>, L<Math::BigFloat>, L<Math::BigInt::BitVect>, +L<Math::BigInt::GMP> and L<Math::BigInt::Pari>. + +=cut diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/alias.inc b/gnu/usr.bin/perl/lib/Math/BigInt/t/alias.inc new file mode 100644 index 00000000000..b17f317fd2b --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/alias.inc @@ -0,0 +1,12 @@ + +# alias subroutine testing, included by sub_ali.t and mbi_ali.t + +my $x = $CL->new(123); + +is ($x->is_pos(), 1, '123 is positive'); +is ($x->is_neg(), 0, '123 is not negative'); +is ($x->as_int(), 123, '123 is 123 as int'); +is (ref($x->as_int()), $CL, "as_int(123) is of class '$CL'"); +$x->bneg(); +is ($x->is_pos(), 0, '-123 is not positive'); +is ($x->is_neg(), 1, '-123 is negative'); diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/bigroot.t b/gnu/usr.bin/perl/lib/Math/BigInt/t/bigroot.t new file mode 100755 index 00000000000..e48d6598035 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/bigroot.t @@ -0,0 +1,71 @@ +#!/usr/bin/perl -w + +# Test broot function (and bsqrt() function, since it is used by broot()). + +# It is too slow to be simple included in bigfltpm.inc, where it would get +# executed 3 times. + +# But it is better to test the numerical functionality, instead of not testing +# it at all. + +use Test; +use strict; + +BEGIN + { + $| = 1; + # to locate the testing files + my $location = $0; $location =~ s/bigroot.t//i; + if ($ENV{PERL_CORE}) + { + # testing with the core distribution + @INC = qw(../lib); + } + unshift @INC, '../lib'; + if (-d 't') + { + chdir 't'; + require File::Spec; + unshift @INC, File::Spec->catdir(File::Spec->updir, $location); + } + else + { + unshift @INC, $location; + } + print "# INC = @INC\n"; + + plan tests => 4 * 2; + } + +use Math::BigFloat; +use Math::BigInt; + +my $cl = "Math::BigFloat"; +my $c = "Math::BigInt"; + +# 2 ** 240 = +# 1766847064778384329583297500742918515827483896875618958121606201292619776 + +# takes way too long +#test_broot ('2','240', 8, undef, '1073741824'); +#test_broot ('2','240', 9, undef, '106528681.3099908308759836475139583940127'); +#test_broot ('2','120', 9, undef, '10321.27324073880096577298929482324664787'); +#test_broot ('2','120', 17, undef, '133.3268493632747279600707813049418888729'); + +test_broot ('2','120', 8, undef, '32768'); +test_broot ('2','60', 8, undef, '181.0193359837561662466161566988413540569'); +test_broot ('2','60', 9, undef, '101.5936673259647663841091609134277286651'); +test_broot ('2','60', 17, undef, '11.54672461623965153271017217302844672562'); + +sub test_broot + { + my ($x,$n,$y,$scale,$result) = @_; + + my $s = $scale || 'undef'; + print "# Try: $cl $x->bpow($n)->broot($y,$s) == $result:\n"; + ok ($cl->new($x)->bpow($n)->broot($y,$scale),$result); + $result =~ s/\..*//; + print "# Try: $c $x->bpow($n)->broot($y,$s) == $result:\n"; + ok ($c->new($x)->bpow($n)->broot($y,$scale),$result); + } + diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/const_mbf.t b/gnu/usr.bin/perl/lib/Math/BigInt/t/const_mbf.t new file mode 100755 index 00000000000..be864073c98 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/const_mbf.t @@ -0,0 +1,45 @@ +#!/usr/bin/perl -w + +# test BigFloat constants alone (w/o BigInt loading) + +use strict; +use Test; + +BEGIN + { + $| = 1; + # to locate the testing files + my $location = $0; $location =~ s/const_mbf.t//i; + if ($ENV{PERL_CORE}) + { + # testing with the core distribution + @INC = qw(../t/lib); + } + unshift @INC, qw(../lib); + if (-d 't') + { + chdir 't'; + require File::Spec; + unshift @INC, File::Spec->catdir(File::Spec->updir, $location); + } + else + { + unshift @INC, $location; + } + print "# INC = @INC\n"; + + plan tests => 2; + if ($] < 5.006) + { + for (1..2) { skip (1,'Not supported on older Perls'); } + exit; + } + } + +use Math::BigFloat ':constant'; + +ok (1.0 / 3.0, '0.3333333333333333333333333333333333333333'); + +# BigInt was not loadede with ':constant', so only floats are handled +ok (ref(2 ** 2),''); + diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/fallback.t b/gnu/usr.bin/perl/lib/Math/BigInt/t/fallback.t new file mode 100755 index 00000000000..e348d9240dc --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/fallback.t @@ -0,0 +1,55 @@ +#!/usr/bin/perl -w + +# test 'fallback' for overload cos/sin/atan2/exp + +use Test; +use strict; + +BEGIN + { + $| = 1; + # to locate the testing files + my $location = $0; $location =~ s/fallback.t//i; + if ($ENV{PERL_CORE}) + { + # testing with the core distribution + @INC = qw(../t/lib); + } + unshift @INC, qw(../lib); # to locate the modules + if (-d 't') + { + chdir 't'; + require File::Spec; + unshift @INC, File::Spec->catdir(File::Spec->updir, $location); + } + else + { + unshift @INC, $location; + } + print "# INC = @INC\n"; + + plan tests => 8; + } + +# The tests below test that cos(BigInt) = cos(Scalar) which is DWIM, but not +# exactly right, ideally cos(BigInt) should truncate to int() and cos(BigFLoat) +# should calculate the result to X digits accuracy. For now, this is better +# than die()ing... + +use Math::BigInt; +use Math::BigFloat; + +my $bi = Math::BigInt->new(1); + +ok (cos($bi), cos(1)); +ok (sin($bi), sin(1)); +ok (exp($bi), exp(1)); +ok (atan2($bi,$bi), atan2(1,1)); + +my $bf = Math::BigInt->new(1); + +ok (cos($bf), cos(1)); +ok (sin($bf), sin(1)); +ok (exp($bf), exp(1)); +ok (atan2($bf,$bf), atan2(1,1)); + diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/mbf_ali.t b/gnu/usr.bin/perl/lib/Math/BigInt/t/mbf_ali.t new file mode 100755 index 00000000000..1ca43157e3b --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/mbf_ali.t @@ -0,0 +1,42 @@ +#!/usr/bin/perl -w + +# test that the new alias names work + +use Test::More; +use strict; + +BEGIN + { + $| = 1; + # to locate the testing files + my $location = $0; $location =~ s/mbf_ali.t//i; + if ($ENV{PERL_CORE}) + { + # testing with the core distribution + @INC = qw(../t/lib); + } + unshift @INC, qw(../lib); + if (-d 't') + { + chdir 't'; + require File::Spec; + unshift @INC, File::Spec->catdir(File::Spec->updir, $location); + } + else + { + unshift @INC, $location; + } + print "# INC = @INC\n"; + + plan tests => 6; + } + +use Math::BigFloat; + +use vars qw/$x $CL/; + +$CL = 'Math::BigFloat'; + +require 'alias.inc'; + + diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/mbi_ali.t b/gnu/usr.bin/perl/lib/Math/BigInt/t/mbi_ali.t new file mode 100755 index 00000000000..402801733ba --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/mbi_ali.t @@ -0,0 +1,42 @@ +#!/usr/bin/perl -w + +# test that the new alias names work + +use Test::More; +use strict; + +BEGIN + { + $| = 1; + # to locate the testing files + my $location = $0; $location =~ s/mbi_ali.t//i; + if ($ENV{PERL_CORE}) + { + # testing with the core distribution + @INC = qw(../t/lib); + } + unshift @INC, qw(../lib); + if (-d 't') + { + chdir 't'; + require File::Spec; + unshift @INC, File::Spec->catdir(File::Spec->updir, $location); + } + else + { + unshift @INC, $location; + } + print "# INC = @INC\n"; + + plan tests => 6; + } + +use Math::BigInt; + +use vars qw/$x $CL/; + +$CL = 'Math::BigInt'; + +require 'alias.inc'; + + diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/sub_ali.t b/gnu/usr.bin/perl/lib/Math/BigInt/t/sub_ali.t new file mode 100755 index 00000000000..93620a9d82d --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/sub_ali.t @@ -0,0 +1,40 @@ +#!/usr/bin/perl -w + +# test that the new alias names work + +use Test::More; +use strict; + +BEGIN + { + $| = 1; + # to locate the testing files + my $location = $0; $location =~ s/sub_ali.t//i; + if ($ENV{PERL_CORE}) + { + # testing with the core distribution + @INC = qw(../t/lib); + } + unshift @INC, qw(../lib); + if (-d 't') + { + chdir 't'; + require File::Spec; + unshift @INC, File::Spec->catdir(File::Spec->updir, $location); + } + else + { + unshift @INC, $location; + } + print "# INC = @INC\n"; + + plan tests => 6; + } + +use Math::BigInt::Subclass; + +use vars qw/$CL $x/; +$CL = 'Math::BigInt::Subclass'; + +require 'alias.inc'; + diff --git a/gnu/usr.bin/perl/lib/PerlIO.pm b/gnu/usr.bin/perl/lib/PerlIO.pm index c7b9f1312b5..b3693c9f364 100644 --- a/gnu/usr.bin/perl/lib/PerlIO.pm +++ b/gnu/usr.bin/perl/lib/PerlIO.pm @@ -1,6 +1,6 @@ package PerlIO; -our $VERSION = '1.02'; +our $VERSION = '1.03'; # Map layer name to package that defines it our %alias; @@ -61,30 +61,65 @@ The following layers are currently defined: =over 4 -=item unix +=item :unix -Low level layer which calls C<read>, C<write> and C<lseek> etc. +Lowest level layer which provides basic PerlIO operations in terms of +UNIX/POSIX numeric file descriptor calls +(open(), read(), write(), lseek(), close()). -=item stdio +=item :stdio Layer which calls C<fread>, C<fwrite> and C<fseek>/C<ftell> etc. Note that as this is "real" stdio it will ignore any layers beneath it and got straight to the operating system via the C library as usual. -=item perlio +=item :perlio -This is a re-implementation of "stdio-like" buffering written as a -PerlIO "layer". As such it will call whatever layer is below it for -its operations. +A from scratch implementation of buffering for PerlIO. Provides fast +access to the buffer for C<sv_gets> which implements perl's readline/E<lt>E<gt> +and in general attempts to minimize data copying. -=item crlf +C<:perlio> will insert a C<:unix> layer below itself to do low level IO. -A layer which does CRLF to "\n" translation distinguishing "text" and -"binary" files in the manner of MS-DOS and similar operating systems. -(It currently does I<not> mimic MS-DOS as far as treating of Control-Z -as being an end-of-file marker.) +=item :crlf -=item utf8 +A layer that implements DOS/Windows like CRLF line endings. On read +converts pairs of CR,LF to a single "\n" newline character. On write +converts each "\n" to a CR,LF pair. Note that this layer likes to be +one of its kind: it silently ignores attempts to be pushed into the +layer stack more than once. + +It currently does I<not> mimic MS-DOS as far as treating of Control-Z +as being an end-of-file marker. + +(Gory details follow) To be more exact what happens is this: after +pushing itself to the stack, the C<:crlf> layer checks all the layers +below itself to find the first layer that is capable of being a CRLF +layer but is not yet enabled to be a CRLF layer. If it finds such a +layer, it enables the CRLFness of that other deeper layer, and then +pops itself off the stack. If not, fine, use the one we just pushed. + +The end result is that a C<:crlf> means "please enable the first CRLF +layer you can find, and if you can't find one, here would be a good +spot to place a new one." + +Based on the C<:perlio> layer. + +=item :mmap + +A layer which implements "reading" of files by using C<mmap()> to +make (whole) file appear in the process's address space, and then +using that as PerlIO's "buffer". This I<may> be faster in certain +circumstances for large files, and may result in less physical memory +use when multiple processes are reading the same file. + +Files which are not C<mmap()>-able revert to behaving like the C<:perlio> +layer. Writes also behave like C<:perlio> layer as C<mmap()> for write +needs extra house-keeping (to extend the file) which negates any advantage. + +The C<:mmap> layer will not exist if platform does not support C<mmap()>. + +=item :utf8 Declares that the stream accepts perl's internal encoding of characters. (Which really is UTF-8 on ASCII machines, but is @@ -104,7 +139,7 @@ and then read it back in. $in = <F>; close(F); -=item bytes +=item :bytes This is the inverse of C<:utf8> layer. It turns off the flag on the layer below so that data read from it is considered to @@ -112,14 +147,20 @@ be "octets" i.e. characters in range 0..255 only. Likewise on output perl will warn if a "wide" character is written to a such a stream. -=item raw +=item :raw The C<:raw> layer is I<defined> as being identical to calling C<binmode($fh)> - the stream is made suitable for passing binary data i.e. each byte is passed as-is. The stream will still be -buffered. Unlike in the earlier versions of Perl C<:raw> is I<not> -just the inverse of C<:crlf> - other layers which would affect the -binary nature of the stream are also removed or disabled. +buffered. + +In Perl 5.6 and some books the C<:raw> layer (previously sometimes also +referred to as a "discipline") is documented as the inverse of the +C<:crlf> layer. That is no longer the case - other layers which would +alter binary nature of the stream are also disabled. If you want UNIX +line endings on a platform that normally does CRLF translation, but still +want UTF-8 or encoding defaults the appropriate thing to do is to add +C<:perlio> to PERLIO environment variable. The implementation of C<:raw> is as a pseudo-layer which when "pushed" pops itself and then any layers which do not declare themselves as suitable @@ -135,7 +176,7 @@ a known base on which to build e.g. will construct a "binary" stream, but then enable UTF-8 translation. -=item pop +=item :pop A pseudo layer that removes the top-most layer. Gives perl code a way to manipulate the layer stack. Should be considered @@ -151,6 +192,12 @@ An example of a possible use might be: A more elegant (and safer) interface is needed. +=item :win32 + +On Win32 platforms this I<experimental> layer uses native "handle" IO +rather than unix-like numeric file descriptor layer. Known to be +buggy as of perl 5.8.2. + =back =head2 Custom Layers @@ -270,7 +317,7 @@ B<Implementation details follow, please close your eyes.> The arguments to layers are by default returned in parenthesis after the name of the layer, and certain layers (like C<utf8>) are not real layers but instead flags on real layers: to get all of these returned -separately use the optional C<separate> argument: +separately use the optional C<details> argument: my @layer_and_args_and_flags = PerlIO::get_layers($fh, details => 1); diff --git a/gnu/usr.bin/perl/lib/Test/Harness/bin/prove b/gnu/usr.bin/perl/lib/Test/Harness/bin/prove new file mode 100644 index 00000000000..44a631b8473 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Test/Harness/bin/prove @@ -0,0 +1,330 @@ +#!/usr/bin/perl -w + +use strict; + +use Test::Harness; +use Getopt::Long; +use Pod::Usage 1.12; +use File::Spec; + +use vars qw( $VERSION ); +$VERSION = "1.04"; + +my @ext = (); +my $shuffle = 0; +my $dry = 0; +my $blib = 0; +my $lib = 0; +my $recurse = 0; +my @includes = (); +my @switches = (); + +# Allow cuddling the paths with the -I +@ARGV = map { /^(-I)(.+)/ ? ($1,$2) : $_ } @ARGV; + +# Stick any default switches at the beginning, so they can be overridden +# by the command line switches. +unshift @ARGV, split( " ", $ENV{PROVE_SWITCHES} ) if defined $ENV{PROVE_SWITCHES}; + +Getopt::Long::Configure( "no_ignore_case" ); +Getopt::Long::Configure( "bundling" ); +GetOptions( + 'b|blib' => \$blib, + 'd|debug' => \$Test::Harness::debug, + 'D|dry' => \$dry, + 'h|help|?' => sub {pod2usage({-verbose => 1, -input => \*DATA}); exit}, + 'H|man' => sub {pod2usage({-verbose => 2, -input => \*DATA}); exit}, + 'I=s@' => \@includes, + 'l|lib' => \$lib, + 'r|recurse' => \$recurse, + 's|shuffle' => \$shuffle, + 't' => sub { unshift @switches, "-t" }, # Always want -t up front + 'T' => sub { unshift @switches, "-T" }, # Always want -T up front + 'v|verbose' => \$Test::Harness::verbose, + 'V|version' => sub { print_version(); exit; }, + 'ext=s@' => \@ext, +) or exit 1; + +# Build up extensions regex +@ext = map { split /,/ } @ext; +s/^\.// foreach @ext; +@ext = ("t") unless @ext; +my $ext_regex = join( "|", map { quotemeta } @ext ); +$ext_regex = qr/\.($ext_regex)$/; + +# Handle blib includes +if ( $blib ) { + my @blibdirs = blibdirs(); + if ( @blibdirs ) { + unshift @includes, @blibdirs; + } else { + warn "No blib directories found.\n"; + } +} + +# Handle lib includes +if ( $lib ) { + unshift @includes, "lib"; +} + +# Build up TH switches +push( @switches, map { /\s/ && !/^".*"$/ ? qq["-I$_"] : "-I$_" } @includes ); +$Test::Harness::Switches = join( " ", @switches ); +print "# \$Test::Harness::Switches: $Test::Harness::Switches\n" if $Test::Harness::debug; + +my @tests; +@ARGV = File::Spec->curdir unless @ARGV; +push( @tests, -d $_ ? all_in( $_ ) : $_ ) for @ARGV; + +if ( @tests ) { + shuffle(@tests) if $shuffle; + if ( $dry ) { + print join( "\n", @tests, "" ); + } else { + print "# ", scalar @tests, " tests to run\n" if $Test::Harness::debug; + runtests(@tests); + } +} + +sub all_in { + my $start = shift; + + my @hits = (); + + local *DH; + if ( opendir( DH, $start ) ) { + while ( my $file = readdir DH ) { + next if $file eq File::Spec->updir || $file eq File::Spec->curdir; + next if $file eq ".svn"; + next if $file eq "CVS"; + + my $currfile = File::Spec->catfile( $start, $file ); + if ( -d $currfile ) { + push( @hits, all_in( $currfile ) ) if $recurse; + } else { + push( @hits, $currfile ) if $currfile =~ $ext_regex; + } + } + } else { + warn "$start: $!\n"; + } + + return @hits; +} + +sub shuffle { + # Fisher-Yates shuffle + my $i = @_; + while ($i) { + my $j = rand $i--; + @_[$i, $j] = @_[$j, $i]; + } +} + +sub print_version { + printf( "prove v%s, using Test::Harness v%s and Perl v%vd\n", + $VERSION, $Test::Harness::VERSION, $^V ); +} + +# Stolen directly from blib.pm +sub blibdirs { + my $dir = File::Spec->curdir; + if ($^O eq 'VMS') { + ($dir = VMS::Filespec::unixify($dir)) =~ s-/\z--; + } + my $archdir = "arch"; + if ( $^O eq "MacOS" ) { + # Double up the MP::A so that it's not used only once. + $archdir = $MacPerl::Architecture = $MacPerl::Architecture; + } + + my $i = 5; + while ($i--) { + my $blib = File::Spec->catdir( $dir, "blib" ); + my $blib_lib = File::Spec->catdir( $blib, "lib" ); + my $blib_arch = File::Spec->catdir( $blib, $archdir ); + + if ( -d $blib && -d $blib_arch && -d $blib_lib ) { + return ($blib_arch,$blib_lib); + } + $dir = File::Spec->catdir($dir, File::Spec->updir); + } + warn "$0: Cannot find blib\n"; + return; +} + +__END__ + +=head1 NAME + +prove -- A command-line tool for running tests against Test::Harness + +=head1 SYNOPSIS + +prove [options] [files/directories] + +Options: + + -b, --blib Adds blib/lib to the path for your tests, a la "use blib". + -d, --debug Includes extra debugging information. + -D, --dry Dry run: Show the tests to run, but don't run them. + --ext=x Extensions (defaults to .t) + -h, --help Display this help + -H, --man Longer manpage for prove + -I Add libraries to @INC, as Perl's -I + -l, --lib Add lib to the path for your tests. + -r, --recurse Recursively descend into directories. + -s, --shuffle Run the tests in a random order. + -T Enable tainting checks + -t Enable tainting warnings + -v, --verbose Display standard output of test scripts while running them. + -V, --version Display version info + +Single-character options may be stacked. Default options may be set by +specifying the PROVE_SWITCHES environment variable. + +=head1 OVERVIEW + +F<prove> is a command-line interface to the test-running functionality +of C<Test::Harness>. With no arguments, it will run all tests in the +current directory. + +Shell metacharacters may be used with command lines options and will be exanded +via C<glob>. + +=head1 PROVE VS. "MAKE TEST" + +F<prove> has a number of advantages over C<make test> when doing development. + +=over 4 + +=item * F<prove> is designed as a development tool + +Perl users typically run the test harness through a makefile via +C<make test>. That's fine for module distributions, but it's +suboptimal for a test/code/debug development cycle. + +=item * F<prove> is granular + +F<prove> lets your run against only the files you want to check. +Running C<prove t/live/ t/master.t> checks every F<*.t> in F<t/live>, +plus F<t/master.t>. + +=item * F<prove> has an easy verbose mode + +F<prove> has a C<-v> option to see the raw output from the tests. +To do this with C<make test>, you must set C<HARNESS_VERBOSE=1> in +the environment. + +=item * F<prove> can run under taint mode + +F<prove>'s C<-T> runs your tests under C<perl -T>, and C<-t> runs them +under C<perl -t>. + +=item * F<prove> can shuffle tests + +You can use F<prove>'s C<--shuffle> option to try to excite problems +that don't show up when tests are run in the same order every time. + +=item * F<prove> doesn't rely on a make tool + +Not everyone wants to write a makefile, or use L<ExtUtils::MakeMaker> +to do so. F<prove> has no external dependencies. + +=item * Not everything is a module + +More and more users are using Perl's testing tools outside the +context of a module distribution, and may not even use a makefile +at all. + +=back + +=head1 COMMAND LINE OPTIONS + +=head2 -b, --blib + +Adds blib/lib to the path for your tests, a la "use blib". + +=head2 -d, --debug + +Include debug information about how F<prove> is being run. This +option doesn't show the output from the test scripts. That's handled +by -v,--verbose. + +=head2 -D, --dry + +Dry run: Show the tests to run, but don't run them. + +=head2 --ext=extension + +Specify extensions of the test files to run. By default, these are .t, +but you may have other non-.t test files, most likely .sh shell scripts. +The --ext is repeatable. + +=head2 -I + +Add libraries to @INC, as Perl's -I. + +=head2 -l, --lib + +Add C<lib> to @INC. Equivalent to C<-Ilib>. + +=head2 -r, --recurse + +Descends into subdirectories of any directories specified, looking for tests. + +=head2 -s, --shuffle + +Sometimes tests are accidentally dependent on tests that have been +run before. This switch will shuffle the tests to be run prior to +running them, thus ensuring that hidden dependencies in the test +order are likely to be revealed. The author hopes the run the +algorithm on the preceding sentence to see if he can produce something +slightly less awkward. + +=head2 -t + +Runs test programs under perl's -t taint warning mode. + +=head2 -T + +Runs test programs under perl's -T taint mode. + +=head2 -v, --verbose + +Display standard output of test scripts while running them. + +=head2 -V, --version + +Display version info. + +=head1 BUGS + +Please use the CPAN bug ticketing system at L<http://rt.cpan.org/>. +You can also mail bugs, fixes and enhancements to +C<< <bug-test-harness@rt.cpan.org> >>. + +=head1 TODO + +=over 4 + +=item * + +Shuffled tests must be recreatable + +=back + +=head1 AUTHORS + +Andy Lester C<< <andy@petdance.com> >> + +=head1 COPYRIGHT + +Copyright 2003 by Andy Lester C<< <andy@petdance.com> >>. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +See L<http://www.perl.com/perl/misc/Artistic.html>. + +=cut diff --git a/gnu/usr.bin/perl/lib/Test/Harness/t/inc_taint.t b/gnu/usr.bin/perl/lib/Test/Harness/t/inc_taint.t new file mode 100755 index 00000000000..f1c8145e957 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Test/Harness/t/inc_taint.t @@ -0,0 +1,28 @@ +#!/usr/bin/perl -w + +BEGIN { + if( $ENV{PERL_CORE} ) { + chdir 't'; + @INC = ('../lib', 'lib'); + } + else { + unshift @INC, 't/lib'; + } +} + +use Test::Harness; +use Test::More tests => 1; +use Dev::Null; + +push @INC, 'we_added_this_lib'; + +tie *NULL, 'Dev::Null' or die $!; +select NULL; +my($tot, $failed) = Test::Harness::_run_all_tests( + $ENV{PERL_CORE} + ? 'lib/sample-tests/inc_taint' + : 't/sample-tests/inc_taint' +); +select STDOUT; + +ok( Test::Harness::_all_ok($tot), 'tests with taint on preserve @INC' ); diff --git a/gnu/usr.bin/perl/lib/Test/Harness/t/prove-switches.t b/gnu/usr.bin/perl/lib/Test/Harness/t/prove-switches.t new file mode 100755 index 00000000000..aa7ece97e0e --- /dev/null +++ b/gnu/usr.bin/perl/lib/Test/Harness/t/prove-switches.t @@ -0,0 +1,85 @@ +BEGIN { + if( $ENV{PERL_CORE} ) { + chdir 't'; + @INC = ('../lib', 'lib'); + } + else { + unshift @INC, 't/lib'; + } +} + +use strict; +use File::Spec; +use Test::More; +plan skip_all => "Not adapted to perl core" if $ENV{PERL_CORE}; +plan skip_all => "Not installing prove" if -e "t/SKIP-PROVE"; + +plan tests => 5; + +my $blib = File::Spec->catfile( File::Spec->curdir, "blib" ); +my $blib_lib = File::Spec->catfile( $blib, "lib" ); +my $blib_arch = File::Spec->catfile( $blib, "arch" ); +my $prove = File::Spec->catfile( $blib, "script", "prove" ); + +CAPITAL_TAINT: { + local $ENV{PROVE_SWITCHES}; + local $/ = undef; + + my @actual = qx/$prove -Ifirst -D -I second -Ithird -Tvdb/; + my @expected = ( "# \$Test::Harness::Switches: -T -I$blib_arch -I$blib_lib -Ifirst -Isecond -Ithird\n" ); + array_match_ok( \@actual, \@expected, "Capital taint flags OK" ); +} + +LOWERCASE_TAINT: { + local $ENV{PROVE_SWITCHES}; + local $/ = undef; + + my @actual = qx/$prove -dD -Ifirst -I second -t -Ithird -vb/; + my @expected = ( "# \$Test::Harness::Switches: -t -I$blib_arch -I$blib_lib -Ifirst -Isecond -Ithird\n" ); + array_match_ok( \@actual, \@expected, "Lowercase taint OK" ); +} + +PROVE_SWITCHES: { + local $ENV{PROVE_SWITCHES} = "-dvb -I fark"; + local $/ = undef; + + my @actual = qx/$prove -Ibork -Dd/; + my @expected = ( "# \$Test::Harness::Switches: -I$blib_arch -I$blib_lib -Ifark -Ibork\n" ); + array_match_ok( \@actual, \@expected, "PROVE_SWITCHES OK" ); +} + +PROVE_SWITCHES_L: { + local $/ = undef; + + my @actual = qx/$prove -l -Ibongo -Dd/; + my @expected = ( "# \$Test::Harness::Switches: -Ilib -Ibongo\n" ); + array_match_ok( \@actual, \@expected, "PROVE_SWITCHES OK" ); +} + +PROVE_SWITCHES_LB: { + local $/ = undef; + + my @actual = qx/$prove -lb -Dd/; + my @expected = ( "# \$Test::Harness::Switches: -Ilib -I$blib_arch -I$blib_lib\n" ); + array_match_ok( \@actual, \@expected, "PROVE_SWITCHES OK" ); +} + + +sub array_match_ok { + my $actual = shift; + my $expected = shift; + my $message = shift; + my $n = 0; + + my @actual = @$actual; + my @expected = @$expected; + + while ( @actual && @expected ) { + return ok( 0, "Differs at element $n: $message" ) if shift @actual ne shift @expected; + ++$n; + } + return ok( 0, "Too many actual: $message" ) if @actual; + return ok( 0, "Too many expected: $message" ) if @expected; + + return ok( 1, $message ); +} diff --git a/gnu/usr.bin/perl/lib/Unicode/Collate/t/altern.t b/gnu/usr.bin/perl/lib/Unicode/Collate/t/altern.t new file mode 100755 index 00000000000..d48e168b696 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Unicode/Collate/t/altern.t @@ -0,0 +1,108 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Collate " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +use Test; +BEGIN { plan tests => 37 }; + +use strict; +use warnings; +use Unicode::Collate; + +ok(1); + +######################### + +sub _pack_U { Unicode::Collate::pack_U(@_) } +sub _unpack_U { Unicode::Collate::unpack_U(@_) } + +my $A_acute = _pack_U(0xC1); +my $acute = _pack_U(0x0301); + +my $Collator = Unicode::Collate->new( + table => 'keys.txt', + normalization => undef, +); + +my %origAlt = $Collator->change(alternate => 'Blanked'); + +ok($Collator->lt("death", "de luge")); +ok($Collator->lt("de luge", "de-luge")); +ok($Collator->lt("de-luge", "deluge")); +ok($Collator->lt("deluge", "de\x{2010}luge")); +ok($Collator->lt("deluge", "de Luge")); + +$Collator->change(alternate => 'Non-ignorable'); + +ok($Collator->lt("de luge", "de Luge")); +ok($Collator->lt("de Luge", "de-luge")); +ok($Collator->lt("de-Luge", "de\x{2010}luge")); +ok($Collator->lt("de-luge", "death")); +ok($Collator->lt("death", "deluge")); + +$Collator->change(alternate => 'Shifted'); + +ok($Collator->lt("death", "de luge")); +ok($Collator->lt("de luge", "de-luge")); +ok($Collator->lt("de-luge", "deluge")); +ok($Collator->lt("deluge", "de Luge")); +ok($Collator->lt("de Luge", "deLuge")); + +$Collator->change(alternate => 'Shift-Trimmed'); + +ok($Collator->lt("death", "deluge")); +ok($Collator->lt("deluge", "de luge")); +ok($Collator->lt("de luge", "de-luge")); +ok($Collator->lt("de-luge", "deLuge")); +ok($Collator->lt("deLuge", "de Luge")); + +$Collator->change(%origAlt); + +ok($Collator->{alternate}, 'shifted'); + +############## + +# ignorable after alternate + +# Shifted; +ok($Collator->eq("?\x{300}!\x{301}\x{315}", "?!")); +ok($Collator->eq("?\x{300}A\x{301}", "?$A_acute")); +ok($Collator->eq("?\x{300}", "?")); +ok($Collator->eq("?\x{344}", "?")); # U+0344 has two CEs. + +$Collator->change(level => 3); +ok($Collator->eq("\cA", "?")); + +$Collator->change(alternate => 'blanked', level => 4); +ok($Collator->eq("?\x{300}!\x{301}\x{315}", "?!")); +ok($Collator->eq("?\x{300}A\x{301}", "?$A_acute")); +ok($Collator->eq("?\x{300}", "?")); +ok($Collator->eq("?\x{344}", "?")); # U+0344 has two CEs. + +$Collator->change(level => 3); +ok($Collator->eq("\cA", "?")); + +$Collator->change(alternate => 'Non-ignorable', level => 4); + +ok($Collator->lt("?\x{300}", "?!")); +ok($Collator->gt("?\x{300}A$acute", "?$A_acute")); +ok($Collator->gt("?\x{300}", "?")); +ok($Collator->gt("?\x{344}", "?")); + +$Collator->change(level => 3); +ok($Collator->lt("\cA", "?")); + +$Collator->change(alternate => 'Shifted', level => 4); + diff --git a/gnu/usr.bin/perl/lib/Unicode/Collate/t/illegal.t b/gnu/usr.bin/perl/lib/Unicode/Collate/t/illegal.t new file mode 100755 index 00000000000..803e2f6739a --- /dev/null +++ b/gnu/usr.bin/perl/lib/Unicode/Collate/t/illegal.t @@ -0,0 +1,180 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Collate " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +use Test; +use strict; +use warnings; + +BEGIN { + use Unicode::Collate; + + unless (exists &Unicode::Collate::bootstrap or 5.008 <= $]) { + print "1..0 # skipped: XSUB, or Perl 5.8.0 or later". + " needed for this test\n"; + print $@; + exit; + } +} + +BEGIN { plan tests => 40 }; + +ok(1); + +######################### + +no warnings 'utf8'; + +# NULL is tailorable but illegal code points are not. +# illegal code points should be always ingored +# (cf. UCA, 7.1.1 Illegal code points). + +my $illeg = Unicode::Collate->new( + entry => <<'ENTRIES', +0000 ; [.0020.0000.0000.0000] # [0000] NULL +0001 ; [.0021.0000.0000.0001] # [0001] START OF HEADING +FFFE ; [.0022.0000.0000.FFFE] # <noncharacter-FFFE> (invalid) +FFFF ; [.0023.0000.0000.FFFF] # <noncharacter-FFFF> (invalid) +D800 ; [.0024.0000.0000.D800] # <surrogate-D800> (invalid) +DFFF ; [.0025.0000.0000.DFFF] # <surrogate-DFFF> (invalid) +FDD0 ; [.0026.0000.0000.FDD0] # <noncharacter-FDD0> (invalid) +FDEF ; [.0027.0000.0000.FDEF] # <noncharacter-FDEF> (invalid) +0002 ; [.0030.0000.0000.0002] # [0002] START OF TEXT +10FFFF; [.0040.0000.0000.10FFFF] # <noncharacter-10FFFF> (invalid) +110000; [.0041.0000.0000.110000] # <out-of-range 110000> (invalid) +0041 ; [.1000.0020.0008.0041] # latin A +0041 0000 ; [.1100.0020.0008.0041] # latin A + NULL +0041 FFFF ; [.1200.0020.0008.0041] # latin A + FFFF (invalid) +ENTRIES + level => 1, + table => undef, + normalization => undef, +); + +# 2..12 +ok($illeg->lt("", "\x00")); +ok($illeg->lt("", "\x01")); +ok($illeg->eq("", "\x{FFFE}")); +ok($illeg->eq("", "\x{FFFF}")); +ok($illeg->eq("", "\x{D800}")); +ok($illeg->eq("", "\x{DFFF}")); +ok($illeg->eq("", "\x{FDD0}")); +ok($illeg->eq("", "\x{FDEF}")); +ok($illeg->lt("", "\x02")); +ok($illeg->eq("", "\x{10FFFF}")); +ok($illeg->eq("", "\x{110000}")); + +# 13..22 +ok($illeg->lt("\x00", "\x01")); +ok($illeg->lt("\x01", "\x02")); +ok($illeg->ne("\0", "\x{D800}")); +ok($illeg->ne("\0", "\x{DFFF}")); +ok($illeg->ne("\0", "\x{FDD0}")); +ok($illeg->ne("\0", "\x{FDEF}")); +ok($illeg->ne("\0", "\x{FFFE}")); +ok($illeg->ne("\0", "\x{FFFF}")); +ok($illeg->ne("\0", "\x{10FFFF}")); +ok($illeg->ne("\0", "\x{110000}")); + +# 23..26 +ok($illeg->eq("A", "A\x{FFFF}")); +ok($illeg->gt("A\0", "A\x{FFFF}")); +ok($illeg->lt("A", "A\0")); +ok($illeg->lt("AA", "A\0")); + +################## + +my($match, $str, $sub, $ret); + +my $Collator = Unicode::Collate->new( + table => 'keys.txt', + level => 1, + normalization => undef, +); + +$sub = "pe"; + + +$str = "Pe\x{300}\x{301}rl"; +$ret = "Pe\x{300}\x{301}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{300}\0\0\x{301}rl"; +$ret = "Pe\x{300}\0\0\x{301}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{DA00}\x{301}\x{DFFF}rl"; +$ret = "Pe\x{DA00}\x{301}\x{DFFF}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{FFFF}\x{301}rl"; +$ret = "Pe\x{FFFF}\x{301}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{110000}\x{301}rl"; +$ret = "Pe\x{110000}\x{301}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{300}\x{d801}\x{301}rl"; +$ret = "Pe\x{300}\x{d801}\x{301}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{300}\x{ffff}\x{301}rl"; +$ret = "Pe\x{300}\x{ffff}\x{301}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{300}\x{110000}\x{301}rl"; +$ret = "Pe\x{300}\x{110000}\x{301}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{D9ab}\x{DFFF}rl"; +$ret = "Pe\x{D9ab}\x{DFFF}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{FFFF}rl"; +$ret = "Pe\x{FFFF}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{110000}rl"; +$ret = "Pe\x{110000}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{300}\x{D800}\x{DFFF}rl"; +$ret = "Pe\x{300}\x{D800}\x{DFFF}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{300}\x{FFFF}rl"; +$ret = "Pe\x{300}\x{FFFF}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + +$str = "Pe\x{300}\x{110000}rl"; +$ret = "Pe\x{300}\x{110000}"; +($match) = $Collator->match($str, $sub); +ok($match, $ret); + + diff --git a/gnu/usr.bin/perl/lib/Unicode/Collate/t/illegalp.t b/gnu/usr.bin/perl/lib/Unicode/Collate/t/illegalp.t new file mode 100755 index 00000000000..690c88d0bb1 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Unicode/Collate/t/illegalp.t @@ -0,0 +1,80 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Collate " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +use Test; +BEGIN { plan tests => 17 }; + +use strict; +use warnings; + +ok(1); + +# +# No test for Unicode::Collate is included in this .t file. +# +# UCA conformance test requires completely ignorable characters +# (including noncharacters) must be able to be ordered in code point order; +# If not so, Unicode::Collate must not be compliant with UCA. +# +# ~~~ CollationTest_SHIFTED.txt in CollationTest-4.0.0 +# +# 206F 0021; # ! NOMINAL DIGIT SHAPES [| | | 0251] +# D800 0021; # ! <surrogate-D800> [| | | 0251] +# DFFF 0021; # ! <surrogate-DFFF> [| | | 0251] +# FDD0 0021; # ! <noncharacter-FDD0> [| | | 0251] +# FFFB 0021; # ! INTERLINEAR ANNOTATION TERMINATOR [| | | 0251] +# FFFE 0021; # ! <noncharacter-FFFE> [| | | 0251] +# FFFF 0021; # ! <noncharacter-FFFF> [| | | 0251] +# 1D165 0021; # ! MS. Cm. STEM [| | | 0251] +# +# ~~~ CollationTest_NON_IGNORABLE.txt in CollationTest-4.0.0 +# +# 206F 0021; # ! NOMINAL DIGIT SHAPES [0251 | 0020 | 0002 |] +# D800 0021; # ! <surrogate-D800> [0251 | 0020 | 0002 |] +# DFFF 0021; # ! <surrogate-DFFF> [0251 | 0020 | 0002 |] +# FDD0 0021; # ! <noncharacter-FDD0> [0251 | 0020 | 0002 |] +# FFFB 0021; # ! INTERLINEAR ANNOTATION TERMINATOR [0251 | 0020 | 0002 |] +# FFFE 0021; # ! <noncharacter-FFFE> [0251 | 0020 | 0002 |] +# FFFF 0021; # ! <noncharacter-FFFF> [0251 | 0020 | 0002 |] +# 1D165 0021; # ! MS. Cm. STEM [0251 | 0020 | 0002 |] +# + +no warnings 'utf8'; + +ok("\x{206F}!" lt "\x{D800}!"); +ok(pack('U*', 0x206F, 0x21) lt pack('U*', 0xD800, 0x21)); + +ok("\x{D800}!" lt "\x{DFFF}!"); +ok(pack('U*', 0xD800, 0x21) lt pack('U*', 0xDFFF, 0x21)); + +ok("\x{DFFF}!" lt "\x{FDD0}!"); +ok(pack('U*', 0xDFFF, 0x21) lt pack('U*', 0xFDD0, 0x21) ); + +ok("\x{FDD0}!" lt "\x{FFFB}!"); +ok(pack('U*', 0xFDD0, 0x21) lt pack('U*', 0xFFFB, 0x21)); + +ok("\x{FFFB}!" lt "\x{FFFE}!"); +ok(pack('U*', 0xFFFB, 0x21) lt pack('U*', 0xFFFE, 0x21)); + +ok("\x{FFFE}!" lt "\x{FFFF}!"); +ok(pack('U*', 0xFFFE, 0x21) lt pack('U*', 0xFFFF, 0x21)); + +ok("\x{FFFF}!" lt "\x{1D165}!"); +ok(pack('U*', 0xFFFF, 0x21) lt pack('U*', 0x1D165, 0x21)); + +ok("\000!" lt "\x{FFFF}!"); +ok(pack('U*', 0, 0x21) lt pack('U*', 0xFFFF, 0x21)); + diff --git a/gnu/usr.bin/perl/lib/Unicode/Collate/t/rearrang.t b/gnu/usr.bin/perl/lib/Unicode/Collate/t/rearrang.t new file mode 100755 index 00000000000..cc02fa9f796 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Unicode/Collate/t/rearrang.t @@ -0,0 +1,97 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Collate " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +use Test; +BEGIN { plan tests => 23 }; + +use strict; +use warnings; +use Unicode::Collate; + +ok(1); + +######################### + +my $Collator = Unicode::Collate->new( + table => 'keys.txt', + normalization => undef, +); + +# rearrange : 0x0E40..0x0E44, 0x0EC0..0x0EC4 (default) + +##### 2..9 + +my %old_rearrange = $Collator->change(rearrange => undef); + +ok($Collator->gt("\x{0E41}A", "\x{0E40}B")); +ok($Collator->gt("A\x{0E41}A", "A\x{0E40}B")); + +$Collator->change(rearrange => [ 0x61 ]); + # U+0061, 'a': This is a Unicode value, never a native value. + +ok($Collator->gt("ab", "AB")); # as 'ba' > 'AB' + +$Collator->change(%old_rearrange); + +ok($Collator->lt("ab", "AB")); +ok($Collator->lt("\x{0E40}", "\x{0E41}")); +ok($Collator->lt("\x{0E40}A", "\x{0E41}B")); +ok($Collator->lt("\x{0E41}A", "\x{0E40}B")); +ok($Collator->lt("A\x{0E41}A", "A\x{0E40}B")); + +##### 10..13 + +my $all_undef_8 = Unicode::Collate->new( + table => undef, + normalization => undef, + overrideCJK => undef, + overrideHangul => undef, + UCA_Version => 8, +); + +ok($all_undef_8->lt("\x{0E40}", "\x{0E41}")); +ok($all_undef_8->lt("\x{0E40}A", "\x{0E41}B")); +ok($all_undef_8->lt("\x{0E41}A", "\x{0E40}B")); +ok($all_undef_8->lt("A\x{0E41}A", "A\x{0E40}B")); + +##### 14..18 + +my $no_rearrange = Unicode::Collate->new( + table => undef, + normalization => undef, + rearrange => [], +); + +ok($no_rearrange->lt("A", "B")); +ok($no_rearrange->lt("\x{0E40}", "\x{0E41}")); +ok($no_rearrange->lt("\x{0E40}A", "\x{0E41}B")); +ok($no_rearrange->gt("\x{0E41}A", "\x{0E40}B")); +ok($no_rearrange->gt("A\x{0E41}A", "A\x{0E40}B")); + +##### 19..23 + +my $undef_rearrange = Unicode::Collate->new( + table => undef, + normalization => undef, + rearrange => undef, +); + +ok($undef_rearrange->lt("A", "B")); +ok($undef_rearrange->lt("\x{0E40}", "\x{0E41}")); +ok($undef_rearrange->lt("\x{0E40}A", "\x{0E41}B")); +ok($undef_rearrange->gt("\x{0E41}A", "\x{0E40}B")); +ok($undef_rearrange->gt("A\x{0E41}A", "A\x{0E40}B")); + diff --git a/gnu/usr.bin/perl/lib/Unicode/Collate/t/view.t b/gnu/usr.bin/perl/lib/Unicode/Collate/t/view.t new file mode 100755 index 00000000000..578d4843e57 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Unicode/Collate/t/view.t @@ -0,0 +1,239 @@ + +BEGIN { + unless ("A" eq pack('U', 0x41)) { + print "1..0 # Unicode::Collate " . + "cannot stringify a Unicode code point\n"; + exit 0; + } +} + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir('t') if -d 't'; + @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); + } +} + +use Test; +BEGIN { plan tests => 53 }; + +use strict; +use warnings; +use Unicode::Collate; + +######################### + +ok(1); + +my $Collator = Unicode::Collate->new( + table => 'keys.txt', + normalization => undef, +); + +############## + +ok($Collator->viewSortKey(""), "[| | |]"); + +ok($Collator->viewSortKey("A"), "[0A15 | 0020 | 0008 | FFFF]"); + +ok($Collator->viewSortKey("ABC"), + "[0A15 0A29 0A3D | 0020 0020 0020 | 0008 0008 0008 | FFFF FFFF FFFF]"); + +ok($Collator->viewSortKey("(12)"), + "[0A0C 0A0D | 0020 0020 | 0002 0002 | 027A FFFF FFFF 027B]"); + +ok($Collator->viewSortKey("!\x{300}"), "[| | | 024B]"); + +ok($Collator->viewSortKey("\x{300}"), "[| 0035 | 0002 | FFFF]"); + +$Collator->change(level => 3); +ok($Collator->viewSortKey("A"), "[0A15 | 0020 | 0008 |]"); + +$Collator->change(level => 2); +ok($Collator->viewSortKey("A"), "[0A15 | 0020 | |]"); + +$Collator->change(level => 1); +ok($Collator->viewSortKey("A"), "[0A15 | | |]"); + +### Version 8 + +$Collator->change(level => 4, UCA_Version => 8); + +ok($Collator->viewSortKey(""), "[|||]"); + +ok($Collator->viewSortKey("A"), "[0A15|0020|0008|FFFF]"); + +ok($Collator->viewSortKey("ABC"), + "[0A15 0A29 0A3D|0020 0020 0020|0008 0008 0008|FFFF FFFF FFFF]"); + +ok($Collator->viewSortKey("(12)"), + "[0A0C 0A0D|0020 0020|0002 0002|027A FFFF FFFF 027B]"); + +ok($Collator->viewSortKey("!\x{300}"), "[|0035|0002|024B FFFF]"); + +ok($Collator->viewSortKey("\x{300}"), "[|0035|0002|FFFF]"); + +$Collator->change(level => 3); +ok($Collator->viewSortKey("A"), "[0A15|0020|0008|]"); + +$Collator->change(level => 2); +ok($Collator->viewSortKey("A"), "[0A15|0020||]"); + +$Collator->change(level => 1); +ok($Collator->viewSortKey("A"), "[0A15|||]"); + +# Version 9 + +$Collator->change(level => 3, UCA_Version => 9); +ok($Collator->viewSortKey("A\x{300}z\x{301}"), + "[0A15 0C13 | 0020 0035 0020 0032 | 0008 0002 0002 0002 |]"); + +$Collator->change(backwards => 1); +ok($Collator->viewSortKey("A\x{300}z\x{301}"), + "[0C13 0A15 | 0020 0035 0020 0032 | 0008 0002 0002 0002 |]"); + +$Collator->change(backwards => 2); +ok($Collator->viewSortKey("A\x{300}z\x{301}"), + "[0A15 0C13 | 0032 0020 0035 0020 | 0008 0002 0002 0002 |]"); + +$Collator->change(backwards => [1,3]); +ok($Collator->viewSortKey("A\x{300}z\x{301}"), + "[0C13 0A15 | 0020 0035 0020 0032 | 0002 0002 0002 0008 |]"); + +$Collator->change(backwards => [2]); +ok($Collator->viewSortKey("\x{300}\x{301}\x{302}\x{303}"), + "[| 004E 003C 0032 0035 | 0002 0002 0002 0002 |]"); + +$Collator->change(backwards => []); +ok($Collator->viewSortKey("A\x{300}z\x{301}"), + "[0A15 0C13 | 0020 0035 0020 0032 | 0008 0002 0002 0002 |]"); + +$Collator->change(level => 4); + +# Variable + +our %origVar = $Collator->change(variable => 'Blanked'); +ok($Collator->viewSortKey("1+2"), + '[0A0C 0A0D | 0020 0020 | 0002 0002 | 0031 002B 0032]'); + +ok($Collator->viewSortKey("?\x{300}!\x{301}\x{315}."), + '[| | | 003F 0021 002E]'); + +ok($Collator->viewSortKey("?!."), '[| | | 003F 0021 002E]'); + +$Collator->change(variable => 'Non-ignorable'); +ok($Collator->viewSortKey("1+2"), + '[0A0C 039F 0A0D | 0020 0020 0020 | 0002 0002 0002 | 0031 002B 0032]'); + +ok($Collator->viewSortKey("?\x{300}!"), + '[024E 024B | 0020 0035 0020 | 0002 0002 0002 | 003F 0300 0021]'); + +ok($Collator->viewSortKey("?!."), + '[024E 024B 0255 | 0020 0020 0020 | 0002 0002 0002 | 003F 0021 002E]'); + +$Collator->change(variable => 'Shifted'); +ok($Collator->viewSortKey("1+2"), + '[0A0C 0A0D | 0020 0020 | 0002 0002 | FFFF 039F FFFF]'); + +ok($Collator->viewSortKey("?\x{300}!\x{301}\x{315}."), + '[| | | 024E 024B 0255]'); + +ok($Collator->viewSortKey("?!."), '[| | | 024E 024B 0255]'); + +$Collator->change(variable => 'Shift-Trimmed'); +ok($Collator->viewSortKey("1+2"), + '[0A0C 0A0D | 0020 0020 | 0002 0002 | 039F]'); + +ok($Collator->viewSortKey("?\x{300}!\x{301}\x{315}."), + '[| | | 024E 024B 0255]'); + +ok($Collator->viewSortKey("?!."), '[| | | 024E 024B 0255]'); + +$Collator->change(%origVar); + +##### + +# Level 3 weight + +ok($Collator->viewSortKey("a\x{3042}"), + '[0A15 1921 | 0020 0020 | 0002 000E | FFFF FFFF]'); + +ok($Collator->viewSortKey("A\x{30A2}"), + '[0A15 1921 | 0020 0020 | 0008 0011 | FFFF FFFF]'); + +$Collator->change(upper_before_lower => 1); + +ok($Collator->viewSortKey("a\x{3042}"), + '[0A15 1921 | 0020 0020 | 0008 000E | FFFF FFFF]'); + +ok($Collator->viewSortKey("A\x{30A2}"), + '[0A15 1921 | 0020 0020 | 0002 0011 | FFFF FFFF]'); + +$Collator->change(katakana_before_hiragana => 1); + +ok($Collator->viewSortKey("a\x{3042}"), + '[0A15 1921 | 0020 0020 | 0008 0013 | FFFF FFFF]'); +ok($Collator->viewSortKey("A\x{30A2}"), + '[0A15 1921 | 0020 0020 | 0002 000F | FFFF FFFF]'); + +$Collator->change(upper_before_lower => 0); + +ok($Collator->viewSortKey("a\x{3042}"), + '[0A15 1921 | 0020 0020 | 0002 0013 | FFFF FFFF]'); + +ok($Collator->viewSortKey("A\x{30A2}"), + '[0A15 1921 | 0020 0020 | 0008 000F | FFFF FFFF]'); + +$Collator->change(katakana_before_hiragana => 0); + +ok($Collator->viewSortKey("a\x{3042}"), + '[0A15 1921 | 0020 0020 | 0002 000E | FFFF FFFF]'); + +ok($Collator->viewSortKey("A\x{30A2}"), + '[0A15 1921 | 0020 0020 | 0008 0011 | FFFF FFFF]'); + +##### + +our $el = Unicode::Collate->new( + entry => <<'ENTRY', +006C ; [.0B03.0020.0002.006C] # LATIN SMALL LETTER L +FF4C ; [.0B03.0020.0003.FF4C] # FULLWIDTH LATIN SMALL LETTER L; QQK +217C ; [.0B03.0020.0004.217C] # SMALL ROMAN NUMERAL FIFTY; QQK +2113 ; [.0B03.0020.0005.2113] # SCRIPT SMALL L; QQK +24DB ; [.0B03.0020.0006.24DB] # CIRCLED LATIN SMALL LETTER L; QQK +004C ; [.0B03.0020.0008.004C] # LATIN CAPITAL LETTER L +FF2C ; [.0B03.0020.0009.FF2C] # FULLWIDTH LATIN CAPITAL LETTER L; QQK +216C ; [.0B03.0020.000A.216C] # ROMAN NUMERAL FIFTY; QQK +2112 ; [.0B03.0020.000B.2112] # SCRIPT CAPITAL L; QQK +24C1 ; [.0B03.0020.000C.24C1] # CIRCLED LATIN CAPITAL LETTER L; QQK +ENTRY + table => undef, + normalization => undef, +); + +our $el12 = '0B03 0B03 0B03 0B03 0B03 | 0020 0020 0020 0020 0020'; + +ok($el->viewSortKey("l\x{FF4C}\x{217C}\x{2113}\x{24DB}"), + "[$el12 | 0002 0003 0004 0005 0006 | FFFF FFFF FFFF FFFF FFFF]"); + +ok($el->viewSortKey("L\x{FF2C}\x{216C}\x{2112}\x{24C1}"), + "[$el12 | 0008 0009 000A 000B 000C | FFFF FFFF FFFF FFFF FFFF]"); + +$el->change(upper_before_lower => 1); + +ok($el->viewSortKey("l\x{FF4C}\x{217C}\x{2113}\x{24DB}"), + "[$el12 | 0008 0009 000A 000B 000C | FFFF FFFF FFFF FFFF FFFF]"); + +ok($el->viewSortKey("L\x{FF2C}\x{216C}\x{2112}\x{24C1}"), + "[$el12 | 0002 0003 0004 0005 0006 | FFFF FFFF FFFF FFFF FFFF]"); + +$el->change(upper_before_lower => 0); + +ok($el->viewSortKey("l\x{FF4C}\x{217C}\x{2113}\x{24DB}"), + "[$el12 | 0002 0003 0004 0005 0006 | FFFF FFFF FFFF FFFF FFFF]"); + +ok($el->viewSortKey("L\x{FF2C}\x{216C}\x{2112}\x{24C1}"), + "[$el12 | 0008 0009 000A 000B 000C | FFFF FFFF FFFF FFFF FFFF]"); + +##### + diff --git a/gnu/usr.bin/perl/lib/filetest.t b/gnu/usr.bin/perl/lib/filetest.t index 7ea977295a8..98a19bdf5fd 100644 --- a/gnu/usr.bin/perl/lib/filetest.t +++ b/gnu/usr.bin/perl/lib/filetest.t @@ -5,6 +5,7 @@ BEGIN { @INC = '../lib'; } +use Config; use Test::More tests => 15; # these two should be kept in sync with the pragma itself @@ -57,30 +58,38 @@ SKIP: { my $tstfile = "filetest.tst"; skip("No $chflags available", 4) if !-x $chflags; - skip("Test does not work on OpenBSD, BSD/OS, and Darwin", 4) - if $^O =~ /^(?:openbsd|bsdos|darwin)$/; - - SKIP: { - eval { - if (!-e $tstfile) { - open(T, ">$tstfile") or die "Can't create $tstfile: $!"; - close T; - } - system($chflags, "uchg", $tstfile); - die "Can't exec $chflags uchg" if $? != 0; - }; - skip("Errors in test using chflags: $@", 4) if $@; - - { - use filetest 'access'; + my $skip_eff_user_tests = (!$Config{d_setreuid} && !$Config{d_setresuid}) + || + (!$Config{d_setregid} && !$Config{d_setresgid}); + + eval { + if (!-e $tstfile) { + open(T, ">$tstfile") or die "Can't create $tstfile: $!"; + close T; + } + system($chflags, "uchg", $tstfile); + die "Can't exec $chflags uchg" if $? != 0; + }; + skip("Errors in test using chflags: $@", 4) if $@; + + { + use filetest 'access'; + SKIP: { + skip("No tests on effective user id", 1) + if $skip_eff_user_tests; is(-w $tstfile, undef, "$tstfile should not be recognized as writable"); - is(-W $tstfile, undef, "$tstfile should not be recognized as writable"); } - { - no filetest 'access'; + is(-W $tstfile, undef, "$tstfile should not be recognized as writable"); + } + + { + no filetest 'access'; + SKIP: { + skip("No tests on effective user id", 1) + if $skip_eff_user_tests; is(-w $tstfile, 1, "$tstfile should be recognized as writable"); - is(-W $tstfile, 1, "$tstfile should be recognized as writable"); } + is(-W $tstfile, 1, "$tstfile should be recognized as writable"); } # cleanup diff --git a/gnu/usr.bin/perl/lib/warnings.pm b/gnu/usr.bin/perl/lib/warnings.pm index a4d41578b50..14ed715fdc9 100644 --- a/gnu/usr.bin/perl/lib/warnings.pm +++ b/gnu/usr.bin/perl/lib/warnings.pm @@ -133,7 +133,7 @@ See L<perlmodlib/Pragmatic Modules> and L<perllexwarn>. use Carp (); -our %Offsets : unique = ( +our %Offsets = ( # Warnings Categories added in Perl 5.008 @@ -186,7 +186,7 @@ our %Offsets : unique = ( 'y2k' => 92, ); -our %Bits : unique = ( +our %Bits = ( 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..46] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [30] @@ -236,7 +236,7 @@ our %Bits : unique = ( 'y2k' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [46] ); -our %DeadBits : unique = ( +our %DeadBits = ( 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..46] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [30] diff --git a/gnu/usr.bin/perl/mpeix/mpeixish.h b/gnu/usr.bin/perl/mpeix/mpeixish.h index 658e72ef87b..49ef4355fec 100644 --- a/gnu/usr.bin/perl/mpeix/mpeixish.h +++ b/gnu/usr.bin/perl/mpeix/mpeixish.h @@ -87,9 +87,7 @@ */ /* #define ALTERNATE_SHEBANG "#!" / **/ -#if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX) -# include <signal.h> -#endif +#include <signal.h> #ifndef SIGABRT # define SIGABRT SIGILL diff --git a/gnu/usr.bin/perl/pod.lst b/gnu/usr.bin/perl/pod.lst index 46112a47b46..0645e0377ef 100644 --- a/gnu/usr.bin/perl/pod.lst +++ b/gnu/usr.bin/perl/pod.lst @@ -1,18 +1,18 @@ -# O - Header, omit from toc -# o - Item, omit from toc -# I - Header, include in toc +# h - Header +# o - Omit from toc # r - top level READMEs to be copied/symlinked -# a - Item, for auxiliary documentation -# a - Header for auxiliary documentation +# a - for auxiliary documentation # number - indent by +# D - this version's perldelta +# d - copied to this name -I Overview +h Overview perl Perl overview (this section) perlintro Perl introduction for beginners perltoc Perl documentation table of contents -I Tutorials +h Tutorials perlreftut Perl references short introduction perldsc Perl data structures intro @@ -43,7 +43,7 @@ I Tutorials 2 perlfaq8 System Interaction 2 perlfaq9 Networking -I Reference Manual +h Reference Manual perlsyn Perl syntax perldata Perl data structures @@ -94,7 +94,7 @@ I Reference Manual perlfilter Perl source filters -I Internals and C Language Interface +h Internals and C Language Interface perlembed Perl ways to embed perl in your C or C++ application perldebguts Perl debugging guts and tips @@ -111,7 +111,7 @@ I Internals and C Language Interface perlhack Perl hackers guide -I Miscellaneous +h Miscellaneous perlbook Perl book information perltodo Perl things to do @@ -119,7 +119,9 @@ I Miscellaneous perldoc Look up Perl documentation in Pod format perlhist Perl history records - perldelta Perl changes since previous version +d perldelta Perl changes since previous version +D perl583delta Perl changes in version 5.8.3 + perl582delta Perl changes in version 5.8.2 perl581delta Perl changes in version 5.8.1 perl58delta Perl changes in version 5.8.0 perl573delta Perl changes in version 5.7.3 @@ -134,14 +136,14 @@ I Miscellaneous perlartistic Perl Artistic License perlgpl GNU General Public License -O Language-Specific +ho Language-Specific -or perlcn Perl for Simplified Chinese (in EUC-CN) -or perljp Perl for Japanese (in EUC-JP) -or perlko Perl for Korean (in EUC-KR) -or perltw Perl for Traditional Chinese (in Big5) +ro perlcn Perl for Simplified Chinese (in EUC-CN) +ro perljp Perl for Japanese (in EUC-JP) +ro perlko Perl for Korean (in EUC-KR) +ro perltw Perl for Traditional Chinese (in Big5) -I Platform-Specific +h Platform-Specific r perlaix Perl notes for AIX r perlamiga Perl notes for AmigaOS @@ -176,7 +178,7 @@ r perlvms Perl notes for VMS r perlvos Perl notes for Stratus VOS r perlwin32 Perl notes for Windows -AO Auxiliary Documentation +aoh Auxiliary Documentation ao a2p ao c2ph diff --git a/gnu/usr.bin/perl/pod/perl581delta.pod b/gnu/usr.bin/perl/pod/perl581delta.pod index e23eb178bf8..45893923a5f 100644 --- a/gnu/usr.bin/perl/pod/perl581delta.pod +++ b/gnu/usr.bin/perl/pod/perl581delta.pod @@ -1,6 +1,6 @@ =head1 NAME -perldelta - what is new for perl v5.8.1 +perl581delta - what is new for perl v5.8.1 =head1 DESCRIPTION diff --git a/gnu/usr.bin/perl/pod/perl582delta.pod b/gnu/usr.bin/perl/pod/perl582delta.pod new file mode 100644 index 00000000000..87080702ac8 --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl582delta.pod @@ -0,0 +1,162 @@ +=head1 NAME + +perl582delta - what is new for perl v5.8.2 + +=head1 DESCRIPTION + +This document describes differences between the 5.8.1 release and +the 5.8.2 release. + +If you are upgrading from an earlier release such as 5.6.1, first read +the L<perl58delta>, which describes differences between 5.6.0 and +5.8.0, and the L<perl581delta>, which describes differences between +5.8.0 and 5.8.1. + +=head1 Incompatible Changes + +For threaded builds for modules calling certain re-entrant system calls, +binary compatibility was accidentally lost between 5.8.0 and 5.8.1. +Binary compatibility with 5.8.0 has been restored in 5.8.2, which +necessitates breaking compatibility with 5.8.1. We see this as the +lesser of two evils. + +This will only affect people who have a threaded perl 5.8.1, and compiled +modules which use these calls, and now attempt to run the compiled modules +with 5.8.2. The fix is to re-compile and re-install the modules using 5.8.2. + +=head1 Core Enhancements + +=head2 Hash Randomisation + +The hash randomisation introduced with 5.8.1 has been amended. It +transpired that although the implementation introduced in 5.8.1 was source +compatible with 5.8.0, it was not binary compatible in certain cases. 5.8.2 +contains an improved implementation which is both source and binary +compatible with both 5.8.0 and 5.8.1, and remains robust against the form of +attack which prompted the change for 5.8.1. + +We are grateful to the Debian project for their input in this area. +See L<perlsec/"Algorithmic Complexity Attacks"> for the original +rationale behind this change. + +=head2 Threading + +Several memory leaks associated with variables shared between threads +have been fixed. + +=head1 Modules and Pragmata + +=head2 Updated Modules And Pragmata + +The following modules and pragmata have been updated since Perl 5.8.1: + +=over 4 + +=item Devel::PPPort + +=item Digest::MD5 + +=item I18N::LangTags + +=item libnet + +=item MIME::Base64 + +=item Pod::Perldoc + +=item strict + +Documentation improved + +=item Tie::Hash + +Documentation improved + +=item Time::HiRes + +=item Unicode::Collate + +=item Unicode::Normalize + +=item UNIVERSAL + +Documentation improved + +=back + +=head1 Selected Bug Fixes + +Some syntax errors involving unrecognized filetest operators are now handled +correctly by the parser. + +=head1 Changed Internals + +Interpreter initialization is more complete when -DMULTIPLICITY is off. +This should resolve problems with initializing and destroying the Perl +interpreter more than once in a single process. + +=head1 Platform Specific Problems + +Dynamic linker flags have been tweaked for Solaris and OS X, which should +solve problems seen while building some XS modules. + +Bugs in OS/2 sockets and tmpfile have been fixed. + +In OS X C<setreuid> and friends are troublesome - perl will now work +around their problems as best possible. + +=head1 Future Directions + +Starting with 5.8.3 we intend to make more frequent maintenance releases, +with a smaller number of changes in each. The intent is to propagate +bug fixes out to stable releases more rapidly and make upgrading stable +releases less of an upheaval. This should give end users more +flexibility in their choice of upgrade timing, and allow them easier +assessment of the impact of upgrades. The current plan is for code freezes +as follows + +=over 4 + +=item * + +5.8.3 23:59:59 GMT, Wednesday December 31st 2003 + +=item * + +5.8.4 23:59:59 GMT, Wednesday March 31st 2004 + +=item * + +5.8.5 23:59:59 GMT, Wednesday June 30th 2004 + +=back + +with the release following soon after, when testing is complete. + +See L<perl581delta/"Future Directions"> for more soothsaying. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the articles +recently posted to the comp.lang.perl.misc newsgroup and the perl +bug database at http://bugs.perl.org/. There may also be +information at http://www.perl.com/, the Perl Home Page. + +If you believe you have an unreported bug, please run the B<perlbug> +program included with your release. Be sure to trim your bug down +to a tiny but sufficient test case. Your bug report, along with the +output of C<perl -V>, will be sent off to perlbug@perl.org to be +analysed by the Perl porting team. You can browse and search +the Perl 5 bugs at http://bugs.perl.org/ + +=head1 SEE ALSO + +The F<Changes> file for exhaustive details on what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perl583delta.pod b/gnu/usr.bin/perl/pod/perl583delta.pod new file mode 100644 index 00000000000..2967647cde1 --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl583delta.pod @@ -0,0 +1,210 @@ +=head1 NAME + +perldelta - what is new for perl v5.8.3 + +=head1 DESCRIPTION + +This document describes differences between the 5.8.2 release and +the 5.8.3 release. + +If you are upgrading from an earlier release such as 5.6.1, first read +the L<perl58delta>, which describes differences between 5.6.0 and +5.8.0, and the L<perl581delta> and L<perl582delta>, which describe differences +between 5.8.0, 5.8.1 and 5.8.2 + +=head1 Incompatible Changes + +There are no changes incompatible with 5.8.2. + +=head1 Core Enhancements + +A C<SCALAR> method is now available for tied hashes. This is called when +a tied hash is used in scalar context, such as + + if (%tied_hash) { + ... + } + + +The old behaviour was that %tied_hash would return whatever would have been +returned for that hash before the hash was tied (so usually 0). The new +behaviour in the absence of a SCALAR method is to return TRUE if in the +middle of an C<each> iteration, and otherwise call FIRSTKEY to check if the +hash is empty (making sure that a subsequent C<each> will also begin by +calling FIRSTKEY). Please see L<perltie/SCALAR> for the full details and +caveats. + +=head1 Modules and Pragmata + +=over 4 + +=item CGI + +=item Cwd + +=item Digest + +=item Digest::MD5 + +=item Encode + +=item File::Spec + +=item FindBin + +A function C<again> is provided to resolve problems where modules in different +directories wish to use FindBin. + +=item List::Util + +You can now weaken references to read only values. + +=item Math::BigInt + +=item PodParser + +=item Pod::Perldoc + +=item POSIX + +=item Unicode::Collate + +=item Unicode::Normalize + +=item Test::Harness + +=item threads::shared + +C<cond_wait> has a new two argument form. C<cond_timedwait> has been added. + +=back + +=head1 Utility Changes + +C<find2perl> now assumes C<-print> as a default action. Previously, it +needed to be specified explicitly. + +A new utility, C<prove>, makes it easy to run an individual regression test +at the command line. C<prove> is part of Test::Harness, which users of earlier +Perl versions can install from CPAN. + +=head1 New Documentation + +The documentation has been revised in places to produce more standard manpages. + +The documentation for the special code blocks (BEGIN, CHECK, INIT, END) +has been improved. + +=head1 Installation and Configuration Improvements + +Perl now builds on OpenVMS I64 + +=head1 Selected Bug Fixes + +Using substr() on a UTF8 string could cause subsequent accesses on that +string to return garbage. This was due to incorrect UTF8 offsets being +cached, and is now fixed. + +join() could return garbage when the same join() statement was used to +process 8 bit data having earlier processed UTF8 data, due to the flags +on that statement's temporary workspace not being reset correctly. This +is now fixed. + +C<$a .. $b> will now work as expected when either $a or $b is C<undef> + +Using Unicode keys with tied hashes should now work correctly. + +Reading $^E now preserves $!. Previously, the C code implementing $^E +did not preserve C<errno>, so reading $^E could cause C<errno> and therefore +C<$!> to change unexpectedly. + +Reentrant functions will (once more) work with C++. 5.8.2 introduced a bugfix +which accidentally broke the compilation of Perl extensions written in C++ + +=head1 New or Changed Diagnostics + +The fatal error "DESTROY created new reference to dead object" is now +documented in L<perldiag>. + +=head1 Changed Internals + +The hash code has been refactored to reduce source duplication. The +external interface is unchanged, and aside from the bug fixes described +above, there should be no change in behaviour. + +C<hv_clear_placeholders> is now part of the perl API + +Some C macros have been tidied. In particular macros which create temporary +local variables now name these variables more defensively, which should +avoid bugs where names clash. + +<signal.h> is now always included. + +=head1 Configuration and Building + +C<Configure> now invokes callbacks regardless of the value of the variable +they are called for. Previously callbacks were only invoked in the +C<case $variable $define)> branch. This change should only affect platform +maintainers writing configuration hints files. + +=head1 Platform Specific Problems + +The regression test ext/threads/shared/t/wait.t fails on early RedHat 9 +and HP-UX 10.20 due to bugs in their threading implementations. +RedHat users should see https://rhn.redhat.com/errata/RHBA-2003-136.html +and consider upgrading their glibc. + +=head1 Known Problems + +Detached threads aren't supported on Windows yet, as they may lead to +memory access violation problems. + +There is a known race condition opening scripts in C<suidperl>. C<suidperl> +is neither built nor installed by default, and has been deprecated since +perl 5.8.0. You are advised to replace use of suidperl with tools such +as sudo ( http://www.courtesan.com/sudo/ ) + +We have a backlog of unresolved bugs. Dealing with bugs and bug reports +is unglamorous work; not something ideally suited to volunteer labour, +but that is all that we have. + +The perl5 development team are implementing changes to help address this +problem, which should go live in early 2004. + +=head1 Future Directions + +Code freeze for the next maintenance release (5.8.4) is on March 31st 2004, +with release expected by mid April. Similarly 5.8.5's freeze will be at +the end of June, with release by mid July. + +=head1 Obituary + +Iain 'Spoon' Truskett, Perl hacker, author of <perlreref> and +contributor to CPAN, died suddenly on 29th December 2003, aged 24. +He will be missed. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the articles +recently posted to the comp.lang.perl.misc newsgroup and the perl +bug database at http://bugs.perl.org. There may also be +information at http://www.perl.org, the Perl Home Page. + +If you believe you have an unreported bug, please run the B<perlbug> +program included with your release. Be sure to trim your bug down +to a tiny but sufficient test case. Your bug report, along with the +output of C<perl -V>, will be sent off to perlbug@perl.org to be +analysed by the Perl porting team. You can browse and search +the Perl 5 bugs at http://bugs.perl.org/ + +=head1 SEE ALSO + +The F<Changes> file for exhaustive details on what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perlboot.pod b/gnu/usr.bin/perl/pod/perlboot.pod index 8eaac8663e9..927777d0408 100644 --- a/gnu/usr.bin/perl/pod/perlboot.pod +++ b/gnu/usr.bin/perl/pod/perlboot.pod @@ -382,7 +382,8 @@ listed in C<@ISA>) automatically: } So, C<SUPER::speak> means look in the current package's C<@ISA> for -C<speak>, invoking the first one found. +C<speak>, invoking the first one found. Note that it does I<not> look in +the C<@ISA> of C<$class>. =head2 Where we're at so far... diff --git a/gnu/usr.bin/perl/pod/perlport.pod b/gnu/usr.bin/perl/pod/perlport.pod index 5e5231ca946..5e7096e13cc 100644 --- a/gnu/usr.bin/perl/pod/perlport.pod +++ b/gnu/usr.bin/perl/pod/perlport.pod @@ -1545,12 +1545,6 @@ suffixes. C<-S> is meaningless. (Win32) C<-x> (or C<-X>) determine if a file has an executable file type. (S<RISC OS>) -=item alarm SECONDS - -=item alarm - -Not implemented. (Win32) - =item binmode FILEHANDLE Meaningless. (S<Mac OS>, S<RISC OS>) diff --git a/gnu/usr.bin/perl/pod/perltodo.pod b/gnu/usr.bin/perl/pod/perltodo.pod index b194945d6ec..e92d4742454 100644 --- a/gnu/usr.bin/perl/pod/perltodo.pod +++ b/gnu/usr.bin/perl/pod/perltodo.pod @@ -687,7 +687,7 @@ This emulation should also go near pp_sys.pp_truncate(). chdir, chmod, chown, chroot, exec, glob, link, lstat, mkdir, open, opendir, qx, readdir, readlink, rename, rmdir, stat, symlink, sysopen, -system, truncate, unlink, utime. All these could potentially accept +system, truncate, unlink, utime, -X. All these could potentially accept Unicode filenames either as input or output (and in the case of system and qx Unicode in general, as input or output to/from the shell). Whether a filesystem - an operating system pair understands Unicode in diff --git a/gnu/usr.bin/perl/pod/perlunicode.pod b/gnu/usr.bin/perl/pod/perlunicode.pod index 190247aea79..b05edab7b58 100644 --- a/gnu/usr.bin/perl/pod/perlunicode.pod +++ b/gnu/usr.bin/perl/pod/perlunicode.pod @@ -42,6 +42,21 @@ is needed.> See L<utf8>. You can also use the C<encoding> pragma to change the default encoding of the data in your script; see L<encoding>. +=item C<use encoding> needed to upgrade non-Latin-1 byte strings + +By default, there is a fundamental asymmetry in Perl's unicode model: +implicit upgrading from byte strings to Unicode strings assumes that +they were encoded in I<ISO 8859-1 (Latin-1)>, but Unicode strings are +downgraded with UTF-8 encoding. This happens because the first 256 +codepoints in Unicode happens to agree with Latin-1. + +If you wish to interpret byte strings as UTF-8 instead, use the +C<encoding> pragma: + + use encoding 'utf8'; + +See L</"Byte and Character Semantics"> for more details. + =back =head2 Byte and Character Semantics @@ -86,12 +101,12 @@ Otherwise, byte semantics are in effect. The C<bytes> pragma should be used to force byte semantics on Unicode data. If strings operating under byte semantics and strings with Unicode -character data are concatenated, the new string will be upgraded to -I<ISO 8859-1 (Latin-1)>, even if the old Unicode string used EBCDIC. -This translation is done without regard to the system's native 8-bit -encoding, so to change this for systems with non-Latin-1 and -non-EBCDIC native encodings use the C<encoding> pragma. See -L<encoding>. +character data are concatenated, the new string will be created by +decoding the byte strings as I<ISO 8859-1 (Latin-1)>, even if the +old Unicode string used EBCDIC. This translation is done without +regard to the system's native 8-bit encoding. To change this for +systems with non-Latin-1 and non-EBCDIC native encodings, use the +C<encoding> pragma. See L<encoding>. Under character semantics, many operations that formerly operated on bytes now operate on characters. A character in Perl is @@ -151,6 +166,10 @@ bytes and match against the character properties specified in the Unicode properties database. C<\w> can be used to match a Japanese ideograph, for instance. +(However, and as a limitation of the current implementation, using +C<\w> or C<\W> I<inside> a C<[...]> character class will still match +with byte semantics.) + =item * Named Unicode properties, scripts, and block ranges may be used like @@ -1072,8 +1091,9 @@ as Unicode (UTF-8), there still are many places where Unicode (in some encoding or another) could be given as arguments or received as results, or both, but it is not. -The following are such interfaces. For all of these Perl currently -(as of 5.8.1) simply assumes byte strings both as arguments and results. +The following are such interfaces. For all of these interfaces Perl +currently (as of 5.8.3) simply assumes byte strings both as arguments +and results, or UTF-8 strings if the C<encoding> pragma has been used. One reason why Perl does not attempt to resolve the role of Unicode in this cases is that the answers are highly dependent on the operating @@ -1086,8 +1106,8 @@ portable concept. Similarly for the qx and system: how well will the =item * -chmod, chmod, chown, chroot, exec, link, mkdir -rename, rmdir stat, symlink, truncate, unlink, utime +chmod, chmod, chown, chroot, exec, link, lstat, mkdir, +rename, rmdir, stat, symlink, truncate, unlink, utime, -X =item * diff --git a/gnu/usr.bin/perl/pod/podselect.PL b/gnu/usr.bin/perl/pod/podselect.PL index d3e204effc9..138e0761465 100644 --- a/gnu/usr.bin/perl/pod/podselect.PL +++ b/gnu/usr.bin/perl/pod/podselect.PL @@ -98,6 +98,8 @@ L<Pod::Parser> and L<Pod::Select> =head1 AUTHOR +Please report bugs using L<http://rt.cpan.org>. + Brad Appleton E<lt>bradapp@enteract.comE<gt> Based on code for B<Pod::Text::pod2text(1)> written by diff --git a/gnu/usr.bin/perl/reentr.pl b/gnu/usr.bin/perl/reentr.pl index db6c8fd166d..0026dda4e7d 100644 --- a/gnu/usr.bin/perl/reentr.pl +++ b/gnu/usr.bin/perl/reentr.pl @@ -695,7 +695,7 @@ EOF if ($func =~ /^get/) { my $rv = $v ? ", $v" : ""; if ($r eq 'I') { - $call = qq[((PL_REENTRANT_RETINT = $call)$test ? $true : (((PL_REENTRANT_RETINT == ERANGE) || (errno == ERANGE)) ? Perl_reentrant_retry("$func"$rv) : 0))]; + $call = qq[((PL_REENTRANT_RETINT = $call)$test ? $true : (((PL_REENTRANT_RETINT == ERANGE) || (errno == ERANGE)) ? ($seenm{$func}{$seenr{$func}})Perl_reentrant_retry("$func"$rv) : 0))]; my $arg = join(", ", map { $seenm{$func}{substr($a,$_,1)}." ".$v[$_] } 0..$seenu{$func}-1); my $ret = $seenr{$func} eq 'V' ? "" : "return "; push @wrap, <<EOF; diff --git a/gnu/usr.bin/perl/t/base/num.t b/gnu/usr.bin/perl/t/base/num.t index ccabe0734b1..ffad5d55847 100644 --- a/gnu/usr.bin/perl/t/base/num.t +++ b/gnu/usr.bin/perl/t/base/num.t @@ -163,7 +163,10 @@ $a = 123.456; "$a"; print $a eq "123.456" ? "ok 44\n" : "not ok 44 # $a\n"; $a = 1e34; "$a"; -print $a eq "1e+34" || $a eq "1e+034" ? "ok 45\n" : "not ok 45 $a\n"; +unless ($^O eq 'posix-bc') +{ print $a eq "1e+34" || $a eq "1e+034" ? "ok 45\n" : "not ok 45 $a\n"; } +else +{ print "ok 45 # skipped on $^O\n"; } # see bug #15073 @@ -171,8 +174,11 @@ $a = 0.00049999999999999999999999999999999999999; $b = 0.0005000000000000000104; print $a <= $b ? "ok 46\n" : "not ok 46\n"; -if ($^O eq 'ultrix') { - # Ultrix enters looong nirvana over this. +if ($^O eq 'ultrix' || $^O eq 'VMS') { + # Ultrix enters looong nirvana over this. VMS blows up when configured with + # D_FLOAT (but with G_FLOAT or IEEE works fine). The test should probably + # make the number of 0's a function of NV_DIG, but that's not in Config and + # we probably don't want to suck Config into a base test anyway. print "ok 47\n"; } else { $a = 0.00000000000000000000000000000000000000000000000000000000000000000001; diff --git a/gnu/usr.bin/perl/t/comp/parser.t b/gnu/usr.bin/perl/t/comp/parser.t index ca191c2de06..730f187cec8 100644 --- a/gnu/usr.bin/perl/t/comp/parser.t +++ b/gnu/usr.bin/perl/t/comp/parser.t @@ -9,7 +9,7 @@ BEGIN { } require "./test.pl"; -plan( tests => 41 ); +plan( tests => 42 ); eval '%@x=0;'; like( $@, qr/^Can't modify hash dereference in repeat \(x\)/, '%@x=0' ); @@ -128,10 +128,16 @@ EOF { local $SIG{__WARN__} = sub { }; # silence mandatory warning eval q{ my $x = -F 1; }; - like( $@, qr/syntax error .* near "F 1"/, "unknown filetest operators" ); + like( $@, qr/(?:syntax|parse) error .* near "F 1"/, "unknown filetest operators" ); is( eval q{ sub F { 42 } -F 1 }, '-42', '-F calls the F function' ); } + +# Bug #24762 +{ + eval q{ *foo{CODE} ? 1 : 0 }; + is( $@, '', "glob subscript in conditional" ); +} diff --git a/gnu/usr.bin/perl/t/io/utf8.t b/gnu/usr.bin/perl/t/io/utf8.t index 7b2d6723fca..721d7dbd1f7 100644 --- a/gnu/usr.bin/perl/t/io/utf8.t +++ b/gnu/usr.bin/perl/t/io/utf8.t @@ -321,17 +321,22 @@ ok( 1 ); local $SIG{__WARN__} = sub { $@ = shift }; open F, ">a"; binmode F; - print F "foo", chr(0xE4), "\n"; - print F "foo", chr(0xF6), "\n"; + my ($chrE4, $chrF6) = (chr(0xE4), chr(0xF6)); + if (ord('A') == 193) # EBCDIC + { ($chrE4, $chrF6) = (chr(0x43), chr(0xEC)); } + print F "foo", $chrE4, "\n"; + print F "foo", $chrF6, "\n"; close F; open F, "<:utf8", "a"; undef $@; my $line = <F>; - like( $@, qr/utf8 "\\xE4" does not map to Unicode .+ <F> line 1/, + my ($chrE4, $chrF6) = ("E4", "F6"); + if (ord('A') == 193) { ($chrE4, $chrF6) = ("43", "EC"); } # EBCDIC + like( $@, qr/utf8 "\\x$chrE4" does not map to Unicode .+ <F> line 1/, "<:utf8 readline must warn about bad utf8"); undef $@; $line .= <F>; - like( $@, qr/utf8 "\\xF6" does not map to Unicode .+ <F> line 2/, + like( $@, qr/utf8 "\\x$chrF6" does not map to Unicode .+ <F> line 2/, "<:utf8 rcatline must warn about bad utf8"); close F; } diff --git a/gnu/usr.bin/perl/t/lib/Dev/Null.pm b/gnu/usr.bin/perl/t/lib/Dev/Null.pm new file mode 100644 index 00000000000..2bd22740612 --- /dev/null +++ b/gnu/usr.bin/perl/t/lib/Dev/Null.pm @@ -0,0 +1,17 @@ +# For shutting up Test::Harness. +# Has to work on 5.004 which doesn't have Tie::StdHandle. +package Dev::Null; + +sub WRITE {} +sub PRINT {} +sub PRINTF {} +sub TIEHANDLE { + my $class = shift; + my $fh = do { local *HANDLE; \*HANDLE }; + return bless $fh, $class; +} +sub READ {} +sub READLINE {} +sub GETC {} + +1; diff --git a/gnu/usr.bin/perl/t/lib/Math/BigInt/Scalar.pm b/gnu/usr.bin/perl/t/lib/Math/BigInt/Scalar.pm new file mode 100644 index 00000000000..44bab5d53f4 --- /dev/null +++ b/gnu/usr.bin/perl/t/lib/Math/BigInt/Scalar.pm @@ -0,0 +1,242 @@ +############################################################################### +# core math lib for BigInt, representing big numbers by normal int/float's +# for testing only, will fail any bignum test if range is exceeded + +package Math::BigInt::Scalar; + +use 5.005; +use strict; +# use warnings; # dont use warnings for older Perls + +require Exporter; + +use vars qw/@ISA $VERSION/; +@ISA = qw(Exporter); + +$VERSION = '0.11'; + +############################################################################## +# global constants, flags and accessory + +# constants for easier life +my $nan = 'NaN'; + +############################################################################## +# create objects from various representations + +sub _new + { + # (string) return ref to num + my $d = $_[1]; + my $x = $$d; # make copy + return \$x; + } + +sub _zero + { + my $x = 0; return \$x; + } + +sub _one + { + my $x = 1; return \$x; + } + +sub _copy + { + my $x = $_[1]; + my $z = $$x; + return \$z; + } + +# catch and throw away +sub import { } + +############################################################################## +# convert back to string and number + +sub _str + { + # make string + return \"${$_[1]}"; + } + +sub _num + { + # make a number + return ${$_[1]}; + } + + +############################################################################## +# actual math code + +sub _add + { + my ($c,$x,$y) = @_; + $$x += $$y; + return $x; + } + +sub _sub + { + my ($c,$x,$y) = @_; + $$x -= $$y; + return $x; + } + +sub _mul + { + my ($c,$x,$y) = @_; + $$x *= $$y; + return $x; + } + +sub _div + { + my ($c,$x,$y) = @_; + + my $u = int($$x / $$y); my $r = $$x % $$y; $$x = $u; + return ($x,\$r) if wantarray; + return $x; + } + +sub _pow + { + my ($c,$x,$y) = @_; + my $u = $$x ** $$y; $$x = $u; + return $x; + } + +sub _and + { + my ($c,$x,$y) = @_; + my $u = int($$x) & int($$y); $$x = $u; + return $x; + } + +sub _xor + { + my ($c,$x,$y) = @_; + my $u = int($$x) ^ int($$y); $$x = $u; + return $x; + } + +sub _or + { + my ($c,$x,$y) = @_; + my $u = int($$x) | int($$y); $$x = $u; + return $x; + } + +sub _inc + { + my ($c,$x) = @_; + my $u = int($$x)+1; $$x = $u; + return $x; + } + +sub _dec + { + my ($c,$x) = @_; + my $u = int($$x)-1; $$x = $u; + return $x; + } + +############################################################################## +# testing + +sub _acmp + { + my ($c,$x, $y) = @_; + return ($$x <=> $$y); + } + +sub _len + { + return length("${$_[1]}"); + } + +sub _digit + { + # return the nth digit, negative values count backward + # 0 is the rightmost digit + my ($c,$x,$n) = @_; + + $n ++; # 0 => 1, 1 => 2 + return substr($$x,-$n,1); # 1 => -1, -2 => 2 etc + } + +############################################################################## +# _is_* routines + +sub _is_zero + { + # return true if arg is zero + my ($c,$x) = @_; + return ($$x == 0) <=> 0; + } + +sub _is_even + { + # return true if arg is even + my ($c,$x) = @_; + return (!($$x & 1)) <=> 0; + } + +sub _is_odd + { + # return true if arg is odd + my ($c,$x) = @_; + return ($$x & 1) <=> 0; + } + +sub _is_one + { + # return true if arg is one + my ($c,$x) = @_; + return ($$x == 1) <=> 0; + } + +############################################################################### +# check routine to test internal state of corruptions + +sub _check + { + # no checks yet, pull it out from the test suite + my ($c,$x) = @_; + return "$x is not a reference" if !ref($x); + return 0; + } + +1; +__END__ + +=head1 NAME + +Math::BigInt::Scalar - Pure Perl module to test Math::BigInt with scalars + +=head1 SYNOPSIS + +Provides support for big integer calculations via means of 'small' int/floats. +Only for testing purposes, since it will fail at large values. But it is simple +enough not to introduce bugs on it's own and to serve as a testbed. + +=head1 DESCRIPTION + +Please see Math::BigInt::Calc. + +=head1 LICENSE + +This program is free software; you may redistribute it and/or modify it under +the same terms as Perl itself. + +=head1 AUTHOR + +Tels http://bloodgate.com in 2001. + +=head1 SEE ALSO + +L<Math::BigInt>, L<Math::BigInt::Calc>. + +=cut diff --git a/gnu/usr.bin/perl/t/lib/sample-tests/inc_taint b/gnu/usr.bin/perl/t/lib/sample-tests/inc_taint new file mode 100644 index 00000000000..c0dc994989c --- /dev/null +++ b/gnu/usr.bin/perl/t/lib/sample-tests/inc_taint @@ -0,0 +1,7 @@ +#!/usr/bin/perl -Tw + +use lib qw(t/lib); +use Test::More tests => 1; + +ok( grep(/we_added_this_lib/, @INC) ); + diff --git a/gnu/usr.bin/perl/t/lib/sample-tests/taint_warn b/gnu/usr.bin/perl/t/lib/sample-tests/taint_warn new file mode 100644 index 00000000000..5b4c4861667 --- /dev/null +++ b/gnu/usr.bin/perl/t/lib/sample-tests/taint_warn @@ -0,0 +1,11 @@ +#!/usr/bin/perl -tw + +use lib qw(t/lib); +use Test::More tests => 1; + +my $warnings = ''; +{ + local $SIG{__WARN__} = sub { $warnings .= join '', @_ }; + kill 0, $^X; +} +like( $warnings, '/^Insecure dependency/', '-t honored' ); diff --git a/gnu/usr.bin/perl/t/op/avhv.t b/gnu/usr.bin/perl/t/op/avhv.t index 1ee1da72d64..0937293129f 100644 --- a/gnu/usr.bin/perl/t/op/avhv.t +++ b/gnu/usr.bin/perl/t/op/avhv.t @@ -3,12 +3,18 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require './test.pl'; } +use warnings; +no warnings 'deprecated'; +use strict; +use vars qw(@fake %fake); + require Tie::Array; package Tie::BasicArray; -@ISA = 'Tie::Array'; +@Tie::BasicArray::ISA = 'Tie::Array'; sub TIEARRAY { bless [], $_[0] } sub STORE { $_[0]->[$_[1]] = $_[2] } sub FETCH { $_[0]->[$_[1]] } @@ -17,9 +23,9 @@ sub STORESIZE { $#{$_[0]} = $_[1]+1 } package main; -print "1..29\n"; +plan tests => 36; -$sch = { +my $sch = { 'abc' => 1, 'def' => 2, 'jkl' => 3, @@ -33,21 +39,22 @@ $a->{'abc'} = 'ABC'; $a->{'def'} = 'DEF'; $a->{'jkl'} = 'JKL'; -@keys = keys %$a; -@values = values %$a; +my @keys = keys %$a; +my @values = values %$a; -if ($#keys == 2 && $#values == 2) {print "ok 1\n";} else {print "not ok 1\n";} +is ($#keys, 2); +is ($#values, 2); -$i = 0; # stop -w complaints +my $i = 0; # stop -w complaints -while (($key,$value) = each %$a) { +while (my ($key,$value) = each %$a) { if ($key eq $keys[$i] && $value eq $values[$i] && $key eq lc($value)) { $key =~ y/a-z/A-Z/; $i++ if $key eq $value; } } -if ($i == 3) {print "ok 2\n";} else {print "not ok 2\n";} +is ($i, 3); # quick check with tied array tie @fake, 'Tie::StdArray'; @@ -55,7 +62,7 @@ $a = \@fake; $a->[0] = $sch; $a->{'abc'} = 'ABC'; -if ($a->{'abc'} eq 'ABC') {print "ok 3\n";} else {print "not ok 3\n";} +is ($a->{'abc'}, 'ABC'); # quick check with tied array tie @fake, 'Tie::BasicArray'; @@ -63,122 +70,107 @@ $a = \@fake; $a->[0] = $sch; $a->{'abc'} = 'ABC'; -if ($a->{'abc'} eq 'ABC') {print "ok 4\n";} else {print "not ok 4\n";} +is ($a->{'abc'}, 'ABC'); # quick check with tied array & tied hash require Tie::Hash; -tie %fake, Tie::StdHash; +tie %fake, 'Tie::StdHash'; %fake = %$sch; $a->[0] = \%fake; $a->{'abc'} = 'ABC'; -if ($a->{'abc'} eq 'ABC') {print "ok 5\n";} else {print "not ok 5\n";} +is ($a->{'abc'}, 'ABC'); # hash slice -my $slice = join('', 'x',@$a{'abc','def'},'x'); -print "not " if $slice ne 'xABCx'; -print "ok 6\n"; +{ + no warnings 'uninitialized'; + my $slice = join('', 'x',@$a{'abc','def'},'x'); + is ($slice, 'xABCx'); +} # evaluation in scalar context my $avhv = [{}]; -print "not " if %$avhv; -print "ok 7\n"; +ok (!%$avhv); push @$avhv, "a"; -print "not " if %$avhv; -print "ok 8\n"; +ok (!%$avhv); $avhv = []; eval { $a = %$avhv }; -print "not " unless $@ and $@ =~ /^Can't coerce array into hash/; -print "ok 9\n"; +like ($@, qr/^Can't coerce array into hash/); $avhv = [{foo=>1, bar=>2}]; -print "not " unless %$avhv =~ m,^\d+/\d+,; -print "ok 10\n"; +like (%$avhv, qr,^\d+/\d+,); # check if defelem magic works sub f { - print "not " unless $_[0] eq 'a'; + is ($_[0], 'a'); $_[0] = 'b'; - print "ok 11\n"; } $a = [{key => 1}, 'a']; f($a->{key}); -print "not " unless $a->[1] eq 'b'; -print "ok 12\n"; +is ($a->[1], 'b'); # check if exists() is behaving properly $avhv = [{foo=>1,bar=>2,pants=>3}]; -print "not " if exists $avhv->{bar}; -print "ok 13\n"; +ok (!exists $avhv->{bar}); $avhv->{pants} = undef; -print "not " unless exists $avhv->{pants}; -print "ok 14\n"; -print "not " if exists $avhv->{bar}; -print "ok 15\n"; +ok (exists $avhv->{pants}); +ok (!exists $avhv->{bar}); $avhv->{bar} = 10; -print "not " unless exists $avhv->{bar} and $avhv->{bar} == 10; -print "ok 16\n"; +ok (exists $avhv->{bar}); +is ($avhv->{bar}, 10); -$v = delete $avhv->{bar}; -print "not " unless $v == 10; -print "ok 17\n"; +my $v = delete $avhv->{bar}; +is ($v, 10); -print "not " if exists $avhv->{bar}; -print "ok 18\n"; +ok (!exists $avhv->{bar}); $avhv->{foo} = 'xxx'; $avhv->{bar} = 'yyy'; $avhv->{pants} = 'zzz'; -@x = delete @{$avhv}{'foo','pants'}; -print "# @x\nnot " unless "@x" eq "xxx zzz"; -print "ok 19\n"; +my @x = delete @{$avhv}{'foo','pants'}; +is ("@x", "xxx zzz"); -print "not " unless "$avhv->{bar}" eq "yyy"; -print "ok 20\n"; +is ("$avhv->{bar}", "yyy"); # hash assignment %$avhv = (); -print "not " unless ref($avhv->[0]) eq 'HASH'; -print "ok 21\n"; +is (ref($avhv->[0]), 'HASH'); -%hv = %$avhv; -print "not " if grep defined, values %hv; -print "ok 22\n"; -print "not " if grep ref, keys %hv; -print "ok 23\n"; +my %hv = %$avhv; +ok (!grep defined, values %hv); +ok (!grep ref, keys %hv); %$avhv = (foo => 29, pants => 2, bar => 0); -print "not " unless "@$avhv[1..3]" eq '29 0 2'; -print "ok 24\n"; +is ("@$avhv[1..3]", '29 0 2'); my $extra; my @extra; ($extra, %$avhv) = ("moo", foo => 42, pants => 53, bar => "HIKE!"); -print "not " unless "@$avhv[1..3]" eq '42 HIKE! 53' and $extra eq 'moo'; -print "ok 25\n"; +is ("@$avhv[1..3]", '42 HIKE! 53'); +is ($extra, 'moo'); %$avhv = (); (%$avhv, $extra) = (foo => 42, pants => 53, bar => "HIKE!"); -print "not " unless "@$avhv[1..3]" eq '42 HIKE! 53' and !defined $extra; -print "ok 26\n"; +is ("@$avhv[1..3]", '42 HIKE! 53'); +ok (!defined $extra); @extra = qw(whatever and stuff); %$avhv = (); (%$avhv, @extra) = (foo => 42, pants => 53, bar => "HIKE!"); -print "not " unless "@$avhv[1..3]" eq '42 HIKE! 53' and @extra == 0; -print "ok 27\n"; +is ("@$avhv[1..3]", '42 HIKE! 53'); +is (@extra, 0); %$avhv = (); (@extra, %$avhv) = (foo => 42, pants => 53, bar => "HIKE!"); -print "not " unless ref $avhv->[0] eq 'HASH' and @extra == 6; -print "ok 28\n"; +is (ref $avhv->[0], 'HASH'); +is (@extra, 6); # Check hash slices (BUG ID 20010423.002) $avhv = [{foo=>1, bar=>2}]; @$avhv{"foo", "bar"} = (42, 53); -print "not " unless $avhv->{foo} == 42 && $avhv->{bar} == 53; -print "ok 29\n"; +is ($avhv->{foo}, 42); +is ($avhv->{bar}, 53); diff --git a/gnu/usr.bin/perl/t/op/concat.t b/gnu/usr.bin/perl/t/op/concat.t index 97a52005a19..865a498f221 100644 --- a/gnu/usr.bin/perl/t/op/concat.t +++ b/gnu/usr.bin/perl/t/op/concat.t @@ -18,7 +18,7 @@ sub ok { return $ok; } -print "1..19\n"; +print "1..20\n"; ($a, $b, $c) = qw(foo bar); @@ -109,3 +109,11 @@ sub beq { use bytes; $_[0] eq $_[1]; } my $a; ($a .= 5) . 6; ok($a == 5, '($a .= 5) . 6 - present since 5.000'); } + +{ + # [perl #24508] optree construction bug + sub strfoo { "x" } + my ($x, $y); + $y = ($x = '' . strfoo()) . "y"; + ok( "$x,$y" eq "x,xy", 'figures out correct target' ); +} diff --git a/gnu/usr.bin/perl/t/op/cproto.t b/gnu/usr.bin/perl/t/op/cproto.t index 080d922b163..882eab902f1 100644 --- a/gnu/usr.bin/perl/t/op/cproto.t +++ b/gnu/usr.bin/perl/t/op/cproto.t @@ -6,7 +6,9 @@ BEGIN { @INC = '../lib'; } -use Test::More tests => 234; +BEGIN { require './test.pl'; } +plan tests => 234; + while (<DATA>) { chomp; my ($keyword, $proto) = split; diff --git a/gnu/usr.bin/perl/t/op/hash.t b/gnu/usr.bin/perl/t/op/hash.t index 3beae8432af..15a336e3be5 100644 --- a/gnu/usr.bin/perl/t/op/hash.t +++ b/gnu/usr.bin/perl/t/op/hash.t @@ -8,7 +8,7 @@ BEGIN { use strict; -plan tests => 3; +plan tests => 5; my %h; @@ -25,3 +25,87 @@ foreach (11..20) { } ok (Internals::HvREHASH(%h), "20 entries triggers rehash"); + + + + +# second part using an emulation of the PERL_HASH in perl, mounting an +# attack on a prepopulated hash. This is also useful if you need normal +# keys which don't contain \0 -- suitable for stashes + +use constant MASK_U32 => 2**32; +use constant HASH_SEED => 0; +use constant THRESHOLD => 14; +use constant START => "a"; + +# some initial hash data +my %h2 = map {$_ => 1} 'a'..'cc'; + +ok (!Internals::HvREHASH(%h2), + "starting with pre-populated non-pathalogical hash (rehash flag if off)"); + +my @keys = get_keys(\%h2); +$h2{$_}++ for @keys; +ok (Internals::HvREHASH(%h2), + scalar(@keys) . " colliding into the same bucket keys are triggerring rehash"); + +sub get_keys { + my $hr = shift; + + # the minimum of bits required to mount the attack on a hash + my $min_bits = log(THRESHOLD)/log(2); + + # if the hash has already been populated with a significant amount + # of entries the number of mask bits can be higher + my $keys = scalar keys %$hr; + my $bits = $keys ? log($keys)/log(2) : 0; + $bits = $min_bits if $min_bits > $bits; + + $bits = int($bits) < $bits ? int($bits) + 1 : int($bits); + # need to add 2 bits to cover the internal split cases + $bits += 2; + my $mask = 2**$bits-1; + print "# using mask: $mask ($bits)\n"; + + my @keys; + my $s = START; + my $c = 0; + # get 2 keys on top of the THRESHOLD + my $hash; + while (@keys < THRESHOLD+2) { + # next if exists $hash->{$s}; + $hash = hash($s); + next unless ($hash & $mask) == 0; + $c++; + printf "# %2d: %5s, %10s\n", $c, $s, $hash; + push @keys, $s; + } continue { + $s++; + } + + return @keys; +} + + +# trying to provide the fastest equivalent of C macro's PERL_HASH in +# Perl - the main complication is that it uses U32 integer, which we +# can't do it perl, without doing some tricks +sub hash { + my $s = shift; + my @c = split //, $s; + my $u = HASH_SEED; + for (@c) { + # (A % M) + (B % M) == (A + B) % M + # This works because '+' produces a NV, which is big enough to hold + # the intermidiate result. We only need the % before any "^" and "&" + # to get the result in the range for an I32. + # and << doesn't work on NV, so using 1 << 10 + $u += ord; + $u += $u * (1 << 10); $u %= MASK_U32; + $u ^= $u >> 6; + } + $u += $u << 3; $u %= MASK_U32; + $u ^= $u >> 11; $u %= MASK_U32; + $u += $u << 15; $u %= MASK_U32; + $u; +} diff --git a/gnu/usr.bin/perl/t/op/hashassign.t b/gnu/usr.bin/perl/t/op/hashassign.t index a1c66c38dc6..7058d75df1c 100644 --- a/gnu/usr.bin/perl/t/op/hashassign.t +++ b/gnu/usr.bin/perl/t/op/hashassign.t @@ -8,7 +8,7 @@ BEGIN { # use strict; -plan tests => 206; +plan tests => 213; my @comma = ("key", "value"); @@ -272,4 +272,20 @@ foreach my $chr (60, 200, 600, 6000, 60000) { } - +# now some tests for hash assignment in scalar and list context with +# duplicate keys [perl #24380] +{ + my %h; my $x; my $ar; + is( (join ':', %h = (1) x 8), '1:1', + 'hash assignment in list context removes duplicates' ); + is( scalar( %h = (1,2,1,3,1,4,1,5) ), 2, + 'hash assignment in scalar context' ); + is( scalar( ($x,%h) = (0,1,2,1,3,1,4,1,5) ), 3, + 'scalar + hash assignment in scalar context' ); + $ar = [ %h = (1,2,1,3,1,4,1,5) ]; + is( $#$ar, 1, 'hash assignment in list context' ); + is( "@$ar", "1 5", '...gets the last values' ); + $ar = [ ($x,%h) = (0,1,2,1,3,1,4,1,5) ]; + is( $#$ar, 2, 'scalar + hash assignment in list context' ); + is( "@$ar", "0 1 5", '...gets the last values' ); +} diff --git a/gnu/usr.bin/perl/t/op/readline.t b/gnu/usr.bin/perl/t/op/readline.t index 1bc9ef44f7d..00021b06841 100644 --- a/gnu/usr.bin/perl/t/op/readline.t +++ b/gnu/usr.bin/perl/t/op/readline.t @@ -6,7 +6,7 @@ BEGIN { require './test.pl'; } -plan tests => 3; +plan tests => 13; eval { for (\2) { $_ = <FH> } }; like($@, 'Modification of a read-only value attempted', '[perl #19566]'); @@ -18,3 +18,73 @@ like($@, 'Modification of a read-only value attempted', '[perl #19566]'); is($a .= <A>, 4, '#21628 - $a .= <A> , A closed'); unlink "a"; } + +# 82 is chosen to exceed the length for sv_grow in do_readline (80) +foreach my $k (1, 82) { + my $result + = runperl (stdin => '', stderr => 1, + prog => "\$x = q(k) x $k; \$a{\$x} = qw(v); \$_ = <> foreach keys %a; print qw(end)", + ); + $result =~ s/\n\z// if $^O eq 'VMS'; + is ($result, "end", '[perl #21614] for length ' . length('k' x $k)); +} + + +foreach my $k (1, 21) { + my $result + = runperl (stdin => ' rules', stderr => 1, + prog => "\$x = q(perl) x $k; \$a{\$x} = q(v); foreach (keys %a) {\$_ .= <>; print}", + ); + $result =~ s/\n\z// if $^O eq 'VMS'; + is ($result, ('perl' x $k) . " rules", 'rcatline to shared sv for length ' . length('perl' x $k)); +} + +# These COW tests are not going to show up anything on 5.8.x (No Copy On Write) +# but they do no harm, and it makes life easier to keep this file fully in +# sync with 5.9.x + +foreach my $l (1, 82) { + my $k = $l; + $k = 'k' x $k; + my $copy = $k; + $k = <DATA>; + is ($k, "moo\n", 'catline to COW sv for length ' . length $copy); +} + + +foreach my $l (1, 21) { + my $k = $l; + $k = 'perl' x $k; + my $perl = $k; + $k .= <DATA>; + is ($k, "$perl rules\n", 'rcatline to COW sv for length ' . length $perl); +} + +use strict; +use File::Spec; + +open F, File::Spec->curdir and sysread F, $_, 1; +my $err = $! + 0; +close F; + +SKIP: { + skip "you can read directories as plain files", 2 unless( $err ); + + $!=0; + open F, File::Spec->curdir and $_=<F>; + ok( $!==$err && !defined($_) => 'readline( DIRECTORY )' ); + close F; + + $!=0; + { local $/; + open F, File::Spec->curdir and $_=<F>; + ok( $!==$err && !defined($_) => 'readline( DIRECTORY ) slurp mode' ); + close F; + } +} + +__DATA__ +moo +moo + rules + rules diff --git a/gnu/usr.bin/perl/t/op/sprintf2.t b/gnu/usr.bin/perl/t/op/sprintf2.t new file mode 100755 index 00000000000..fef25f197ae --- /dev/null +++ b/gnu/usr.bin/perl/t/op/sprintf2.t @@ -0,0 +1,20 @@ +#!./perl -w + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require './test.pl'; +} + +plan tests => 2; + +is( + sprintf("%.40g ",0.01), + sprintf("%.40g", 0.01)." ", + q(the sprintf "%.<number>g" optimization) +); +is( + sprintf("%.40f ",0.01), + sprintf("%.40f", 0.01)." ", + q(the sprintf "%.<number>f" optimization) +); diff --git a/gnu/usr.bin/perl/t/test.pl b/gnu/usr.bin/perl/t/test.pl index 0c315561405..15202853714 100644 --- a/gnu/usr.bin/perl/t/test.pl +++ b/gnu/usr.bin/perl/t/test.pl @@ -586,7 +586,7 @@ sub _fresh_perl { } # -# run_perl_is +# fresh_perl_is # # Combination of run_perl() and is(). # @@ -600,7 +600,7 @@ sub fresh_perl_is { } # -# run_perl_like +# fresh_perl_like # # Combination of run_perl() and like(). # diff --git a/gnu/usr.bin/perl/utils/instmodsh.PL b/gnu/usr.bin/perl/utils/instmodsh.PL new file mode 100644 index 00000000000..3bc0359f6e5 --- /dev/null +++ b/gnu/usr.bin/perl/utils/instmodsh.PL @@ -0,0 +1,48 @@ +#!/usr/local/bin/perl + +use Config; +use File::Basename qw(&basename &dirname); +use Cwd; + +# List explicitly here the variables you want Configure to +# generate. Metaconfig only looks for shell variables, so you +# have to mention them as if they were shell variables, not +# %Config entries. Thus you write +# $startperl +# to ensure Configure will look for $Config{startperl}. + +# This forces PL files to create target in same directory as PL file. +# This is so that make depend always knows where to find PL derivatives. +my $origdir = cwd; +chdir dirname($0); +my $file = basename($0, '.PL'); +$file .= '.com' if $^O eq 'VMS'; + +open OUT,">$file" or die "Can't create $file: $!"; + +print "Extracting $file (with variable substitutions)\n"; + +# In this section, perl variables will be expanded during extraction. +# You can use $Config{...} to use Configure variables. + +print OUT <<"!GROK!THIS!"; +$Config{startperl} + eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' + if \$running_under_some_shell; +!GROK!THIS! + +use File::Spec; + +my $instmodsh = File::Spec->catfile(File::Spec->catdir(File::Spec->updir, "lib", "ExtUtils"), "instmodsh"); + +if (open(INSTMODSH, $instmodsh)) { + print OUT <INSTMODSH>; + close INSTMODSH; +} else { + die "$0: cannot find '$instmodsh'\n"; +} + +close OUT or die "Can't close $file: $!"; +chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; +exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':'; +chdir $origdir; diff --git a/gnu/usr.bin/perl/utils/prove.PL b/gnu/usr.bin/perl/utils/prove.PL new file mode 100644 index 00000000000..d1961c87259 --- /dev/null +++ b/gnu/usr.bin/perl/utils/prove.PL @@ -0,0 +1,49 @@ +#!/usr/local/bin/perl + +use Config; +use File::Basename qw(&basename &dirname); +use Cwd; + +# List explicitly here the variables you want Configure to +# generate. Metaconfig only looks for shell variables, so you +# have to mention them as if they were shell variables, not +# %Config entries. Thus you write +# $startperl +# to ensure Configure will look for $Config{startperl}. + +# This forces PL files to create target in same directory as PL file. +# This is so that make depend always knows where to find PL derivatives. +my $origdir = cwd; +chdir dirname($0); +my $file = basename($0, '.PL'); +$file .= '.com' if $^O eq 'VMS'; + +open OUT,">$file" or die "Can't create $file: $!"; + +print "Extracting $file (with variable substitutions)\n"; + +# In this section, perl variables will be expanded during extraction. +# You can use $Config{...} to use Configure variables. + +print OUT <<"!GROK!THIS!"; +$Config{startperl} + eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' + if \$running_under_some_shell; +!GROK!THIS! + +use File::Spec; + +my $prove = File::Spec->catfile(File::Spec->catdir(File::Spec->updir, + "lib", "Test", "Harness", "bin"), "prove"); + +if (open(PROVE, $prove)) { + print OUT <PROVE>; + close PROVE; +} else { + die "$0: cannot find '$prove'\n"; +} + +close OUT or die "Can't close $file: $!"; +chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; +exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':'; +chdir $origdir; diff --git a/gnu/usr.bin/perl/utils/xsubpp.PL b/gnu/usr.bin/perl/utils/xsubpp.PL new file mode 100644 index 00000000000..86c43936f7e --- /dev/null +++ b/gnu/usr.bin/perl/utils/xsubpp.PL @@ -0,0 +1,48 @@ +#!/usr/local/bin/perl + +use Config; +use File::Basename qw(&basename &dirname); +use Cwd; + +# List explicitly here the variables you want Configure to +# generate. Metaconfig only looks for shell variables, so you +# have to mention them as if they were shell variables, not +# %Config entries. Thus you write +# $startperl +# to ensure Configure will look for $Config{startperl}. + +# This forces PL files to create target in same directory as PL file. +# This is so that make depend always knows where to find PL derivatives. +my $origdir = cwd; +chdir dirname($0); +my $file = basename($0, '.PL'); +$file .= '.com' if $^O eq 'VMS'; + +open OUT,">$file" or die "Can't create $file: $!"; + +print "Extracting $file (with variable substitutions)\n"; + +# In this section, perl variables will be expanded during extraction. +# You can use $Config{...} to use Configure variables. + +print OUT <<"!GROK!THIS!"; +$Config{startperl} + eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' + if \$running_under_some_shell; +!GROK!THIS! + +use File::Spec; + +my $xsubpp = File::Spec->catfile(File::Spec->catdir(File::Spec->updir, "lib", "ExtUtils"), "xsubpp"); + +if (open(XSUBPP, $xsubpp)) { + print OUT <XSUBPP>; + close XSUBPP; +} else { + die "$0: cannot find '$xsubpp'\n"; +} + +close OUT or die "Can't close $file: $!"; +chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; +exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':'; +chdir $origdir; diff --git a/gnu/usr.bin/perl/vms/descrip_mms.template b/gnu/usr.bin/perl/vms/descrip_mms.template index 1e3eb842fc8..624c4fd70d7 100644 --- a/gnu/usr.bin/perl/vms/descrip_mms.template +++ b/gnu/usr.bin/perl/vms/descrip_mms.template @@ -83,12 +83,10 @@ SOCKETSHR_SOCKETS=1 .endif .endif - ARCHDIR = [.lib.$(ARCH).$(PERL_VERSION)] ARCHCORE = [.lib.$(ARCH).$(PERL_VERSION).CORE] ARCHAUTO = [.lib.$(ARCH).$(PERL_VERSION).auto] - #: Backwards compatibility .ifdef DECC_PIPES_BROKEN PIPES_BROKEN = 1 @@ -137,7 +135,6 @@ XTRADEF = POSIX = POSIX .endif - #: >>>>> Configuration options <<<<< #: __DEBUG__: builds images with full VMS debugger support .ifdef __DEBUG__ @@ -286,7 +283,7 @@ ac7 = $(ARCHCORE)pad.h $(ARCHCORE)patchlevel.h $(ARCHCORE)perl.h ac8 = $(ARCHCORE)perlapi.h $(ARCHCORE)perlio.h $(ARCHCORE)perlsdio.h ac9 = $(ARCHCORE)perlsfio.h $(ARCHCORE)perlvars.h $(ARCHCORE)perly.h $(ARCHCORE)pp.h .ifdef THREADED -ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)reentr.h $(ARCHCORE)regcomp.h +ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)reentr.h $(ARCHCORE)reentr.inc $(ARCHCORE)regcomp.h .else ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)regcomp.h .endif @@ -313,7 +310,6 @@ CRTLOPTS =,$(CRTL)/Options .xs.c : $(XSUBPP) $(MMS$SOURCE) >$(MMS$TARGET) - .c$(O) : $(CC) $(CFLAGS) $(MMS$SOURCE) @@ -328,7 +324,7 @@ LIBPREREQ = $(ARCHDIR)Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm [.lib] utils1 = [.lib.pod]perldoc.com [.lib.ExtUtils]Miniperl.pm [.utils]c2ph.com [.utils]h2ph.com utils2 = [.utils]h2xs.com [.utils]libnetcfg.com [.lib]perlbug.com [.lib]perlcc.com [.utils]dprofpp.com utils3 = [.utils]perlivp.com [.lib]splain.com [.utils]pl2pm.com [.lib.ExtUtils]xsubpp.com -utils4 = [.utils]enc2xs.com [.utils]piconv.com [.utils]cpan.com +utils4 = [.utils]enc2xs.com [.utils]piconv.com [.utils]cpan.com [.utils]prove.com .ifdef NOX2P all : base extras archcorefiles preplibrary perlpods @@ -360,29 +356,34 @@ extra.pods : miniperl pod0 = [.lib.pod]perl.pod [.lib.pod]perl5004delta.pod [.lib.pod]perl5005delta.pod [.lib.pod]perl561delta.pod [.lib.pod]perl56delta.pod pod1 = [.lib.pod]perl570delta.pod [.lib.pod]perl571delta.pod [.lib.pod]perl572delta.pod [.lib.pod]perl573delta.pod [.lib.pod]perl581delta.pod -pod2 = [.lib.pod]perl58delta.pod [.lib.pod]perlaix.pod [.lib.pod]perlamiga.pod [.lib.pod]perlapi.pod [.lib.pod]perlapio.pod [.lib.pod]perlapollo.pod -pod3 = [.lib.pod]perlartistic.pod [.lib.pod]perlbeos.pod [.lib.pod]perlbook.pod [.lib.pod]perlboot.pod [.lib.pod]perlbot.pod [.lib.pod]perlbs2000.pod -pod4 = [.lib.pod]perlcall.pod [.lib.pod]perlce.pod [.lib.pod]perlcheat.pod [.lib.pod]perlclib.pod [.lib.pod]perlcn.pod [.lib.pod]perlcompile.pod -pod5 = [.lib.pod]perlcygwin.pod [.lib.pod]perldata.pod [.lib.pod]perldbmfilter.pod [.lib.pod]perldebguts.pod [.lib.pod]perldebtut.pod -pod6 = [.lib.pod]perldebug.pod [.lib.pod]perldelta.pod [.lib.pod]perldgux.pod [.lib.pod]perldiag.pod [.lib.pod]perldoc.pod [.lib.pod]perldos.pod -pod7 = [.lib.pod]perldsc.pod [.lib.pod]perlebcdic.pod [.lib.pod]perlembed.pod [.lib.pod]perlepoc.pod [.lib.pod]perlfaq.pod [.lib.pod]perlfaq1.pod -pod8 = [.lib.pod]perlfaq2.pod [.lib.pod]perlfaq3.pod [.lib.pod]perlfaq4.pod [.lib.pod]perlfaq5.pod [.lib.pod]perlfaq6.pod [.lib.pod]perlfaq7.pod -pod9 = [.lib.pod]perlfaq8.pod [.lib.pod]perlfaq9.pod [.lib.pod]perlfilter.pod [.lib.pod]perlfork.pod [.lib.pod]perlform.pod [.lib.pod]perlfreebsd.pod -pod10 = [.lib.pod]perlfunc.pod [.lib.pod]perlgpl.pod [.lib.pod]perlguts.pod [.lib.pod]perlhack.pod [.lib.pod]perlhist.pod [.lib.pod]perlhpux.pod -pod11 = [.lib.pod]perlhurd.pod [.lib.pod]perlintern.pod [.lib.pod]perlintro.pod [.lib.pod]perliol.pod [.lib.pod]perlipc.pod [.lib.pod]perlirix.pod -pod12 = [.lib.pod]perljp.pod [.lib.pod]perlko.pod [.lib.pod]perllexwarn.pod [.lib.pod]perllocale.pod [.lib.pod]perllol.pod [.lib.pod]perlmachten.pod -pod13 = [.lib.pod]perlmacos.pod [.lib.pod]perlmacosx.pod [.lib.pod]perlmint.pod [.lib.pod]perlmod.pod [.lib.pod]perlmodinstall.pod [.lib.pod]perlmodlib.pod -pod14 = [.lib.pod]perlmodstyle.pod [.lib.pod]perlmpeix.pod [.lib.pod]perlnetware.pod [.lib.pod]perlnewmod.pod [.lib.pod]perlnumber.pod [.lib.pod]perlobj.pod -pod15 = [.lib.pod]perlop.pod [.lib.pod]perlopentut.pod [.lib.pod]perlos2.pod [.lib.pod]perlos390.pod [.lib.pod]perlos400.pod [.lib.pod]perlothrtut.pod -pod16 = [.lib.pod]perlpacktut.pod [.lib.pod]perlplan9.pod [.lib.pod]perlpod.pod [.lib.pod]perlpodspec.pod [.lib.pod]perlport.pod [.lib.pod]perlqnx.pod -pod17 = [.lib.pod]perlre.pod [.lib.pod]perlref.pod [.lib.pod]perlreftut.pod [.lib.pod]perlrequick.pod [.lib.pod]perlreref.pod [.lib.pod]perlretut.pod -pod18 = [.lib.pod]perlrun.pod [.lib.pod]perlsec.pod [.lib.pod]perlsolaris.pod [.lib.pod]perlstyle.pod [.lib.pod]perlsub.pod [.lib.pod]perlsyn.pod -pod19 = [.lib.pod]perlthrtut.pod [.lib.pod]perltie.pod [.lib.pod]perltoc.pod [.lib.pod]perltodo.pod [.lib.pod]perltooc.pod [.lib.pod]perltoot.pod -pod20 = [.lib.pod]perltrap.pod [.lib.pod]perltru64.pod [.lib.pod]perltw.pod [.lib.pod]perlunicode.pod [.lib.pod]perluniintro.pod [.lib.pod]perlutil.pod -pod21 = [.lib.pod]perluts.pod [.lib.pod]perlvar.pod [.lib.pod]perlvmesa.pod [.lib.pod]perlvms.pod [.lib.pod]perlvos.pod [.lib.pod]perlwin32.pod -pod22 = [.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod +pod2 = [.lib.pod]perl582delta.pod [.lib.pod]perl583delta.pod [.lib.pod]perl58delta.pod [.lib.pod]perlaix.pod [.lib.pod]perlamiga.pod [.lib.pod]perlapi.pod +pod3 = [.lib.pod]perlapio.pod [.lib.pod]perlapollo.pod [.lib.pod]perlartistic.pod [.lib.pod]perlbeos.pod [.lib.pod]perlbook.pod [.lib.pod]perlboot.pod +pod4 = [.lib.pod]perlbot.pod [.lib.pod]perlbs2000.pod [.lib.pod]perlcall.pod [.lib.pod]perlce.pod [.lib.pod]perlcheat.pod [.lib.pod]perlclib.pod +pod5 = [.lib.pod]perlcn.pod [.lib.pod]perlcompile.pod [.lib.pod]perlcygwin.pod [.lib.pod]perldata.pod [.lib.pod]perldbmfilter.pod [.lib.pod]perldebguts.pod +pod6 = [.lib.pod]perldebtut.pod [.lib.pod]perldebug.pod [.lib.pod]perldelta.pod [.lib.pod]perldgux.pod [.lib.pod]perldiag.pod [.lib.pod]perldoc.pod +pod7 = [.lib.pod]perldos.pod [.lib.pod]perldsc.pod [.lib.pod]perlebcdic.pod [.lib.pod]perlembed.pod [.lib.pod]perlepoc.pod [.lib.pod]perlfaq.pod +pod8 = [.lib.pod]perlfaq1.pod [.lib.pod]perlfaq2.pod [.lib.pod]perlfaq3.pod [.lib.pod]perlfaq4.pod [.lib.pod]perlfaq5.pod [.lib.pod]perlfaq6.pod +pod9 = [.lib.pod]perlfaq7.pod [.lib.pod]perlfaq8.pod [.lib.pod]perlfaq9.pod [.lib.pod]perlfilter.pod [.lib.pod]perlfork.pod [.lib.pod]perlform.pod +pod10 = [.lib.pod]perlfreebsd.pod [.lib.pod]perlfunc.pod [.lib.pod]perlgpl.pod [.lib.pod]perlguts.pod [.lib.pod]perlhack.pod [.lib.pod]perlhist.pod +pod11 = [.lib.pod]perlhpux.pod [.lib.pod]perlhurd.pod [.lib.pod]perlintern.pod [.lib.pod]perlintro.pod [.lib.pod]perliol.pod [.lib.pod]perlipc.pod +pod12 = [.lib.pod]perlirix.pod [.lib.pod]perljp.pod [.lib.pod]perlko.pod [.lib.pod]perllexwarn.pod [.lib.pod]perllocale.pod [.lib.pod]perllol.pod +pod13 = [.lib.pod]perlmachten.pod [.lib.pod]perlmacos.pod [.lib.pod]perlmacosx.pod [.lib.pod]perlmint.pod [.lib.pod]perlmod.pod [.lib.pod]perlmodinstall.pod +pod14 = [.lib.pod]perlmodlib.pod [.lib.pod]perlmodstyle.pod [.lib.pod]perlmpeix.pod [.lib.pod]perlnetware.pod [.lib.pod]perlnewmod.pod +pod15 = [.lib.pod]perlnumber.pod [.lib.pod]perlobj.pod [.lib.pod]perlop.pod [.lib.pod]perlopentut.pod [.lib.pod]perlos2.pod [.lib.pod]perlos390.pod +pod16 = [.lib.pod]perlos400.pod [.lib.pod]perlothrtut.pod [.lib.pod]perlpacktut.pod [.lib.pod]perlplan9.pod [.lib.pod]perlpod.pod [.lib.pod]perlpodspec.pod +pod17 = [.lib.pod]perlport.pod [.lib.pod]perlqnx.pod [.lib.pod]perlre.pod [.lib.pod]perlref.pod [.lib.pod]perlreftut.pod [.lib.pod]perlrequick.pod +pod18 = [.lib.pod]perlreref.pod [.lib.pod]perlretut.pod [.lib.pod]perlrun.pod [.lib.pod]perlsec.pod [.lib.pod]perlsolaris.pod [.lib.pod]perlstyle.pod +pod19 = [.lib.pod]perlsub.pod [.lib.pod]perlsyn.pod [.lib.pod]perlthrtut.pod [.lib.pod]perltie.pod [.lib.pod]perltoc.pod [.lib.pod]perltodo.pod +pod20 = [.lib.pod]perltooc.pod [.lib.pod]perltoot.pod [.lib.pod]perltrap.pod [.lib.pod]perltru64.pod [.lib.pod]perltw.pod [.lib.pod]perlunicode.pod +pod21 = [.lib.pod]perluniintro.pod [.lib.pod]perlutil.pod [.lib.pod]perluts.pod [.lib.pod]perlvar.pod [.lib.pod]perlvmesa.pod [.lib.pod]perlvms.pod +pod22 = [.lib.pod]perlvos.pod [.lib.pod]perlwin32.pod [.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod pod = $(pod0) $(pod1) $(pod2) $(pod3) $(pod4) $(pod5) $(pod6) $(pod7) $(pod8) $(pod9) $(pod10) $(pod11) $(pod12) $(pod13) $(pod14) $(pod15) $(pod16) $(pod17) $(pod18) $(pod19) $(pod20) $(pod21) $(pod22) +# Would be useful to automate the generation of this rule from pod/buildtoc +# Plus its corresponding delete in the clean target. +[.pod]perldelta.pod : [.pod]perl583delta.pod + Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET) + perlpods : $(pod) @ $(NOOP) @@ -517,6 +518,9 @@ dynext : $(LIBPREREQ) $(DBG)perlshr$(E) preplibrary [.utils]cpan.com : [.utils]cpan.PL $(ARCHDIR)Config.pm $(MINIPERL) $(MMS$SOURCE) +[.utils]prove.com : [.utils]prove.PL $(ARCHDIR)Config.pm + $(MINIPERL) $(MMS$SOURCE) + [.utils]c2ph.com : [.utils]c2ph.PL $(ARCHDIR)Config.pm $(MINIPERL) $(MMS$SOURCE) @@ -671,6 +675,14 @@ preplibrary : $(MINIPERL_EXE) $(LIBPREREQ) @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] +[.lib.pod]perl582delta.pod : [.pod]perl582delta.pod + @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] + Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] + +[.lib.pod]perl583delta.pod : [.pod]perl583delta.pod + @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] + Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] + [.lib.pod]perl58delta.pod : [.pod]perl58delta.pod @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] @@ -1366,6 +1378,9 @@ $(ARCHCORE)proto.h : proto.h $(ARCHCORE)reentr.h : reentr.h @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) +$(ARCHCORE)reentr.inc : reentr.inc + @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) + Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) .endif $(ARCHCORE)regcomp.h : regcomp.h @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) @@ -1530,7 +1545,6 @@ vms.c : [.vms]vms.c $(CRTL) : $(MAKEFILE) @ @[.vms]genopt "$(CRTL)/Write" "|" "$(LIBS1)|$(FULLLIBS2)|$(SOCKLIB)" - ok : $(utils) $(MINIPERL) lib/perlbug.com -ok -s "(UNINSTALLED)" @@ -1549,7 +1563,6 @@ nokfile : $(utils) @ write sys$output " " @ write sys$output "$(MINIPERLQ) lib/perlbug.com -nok -s ""(UNINSTALLED)"" ""-F"" perl.nok" - cleanlis : - If F$Search("*.Lis").nes."" Then Delete/NoConfirm/Log *.Lis;* - If F$Search("*.CPP").nes."" Then Delete/NoConfirm/Log *.CPP;* @@ -1616,6 +1629,7 @@ clean : tidy cleantest - If F$Search("[.VMS.Ext...]*.C").nes."" Then Delete/NoConfirm/Log [.VMS.Ext...]*.C;* - If F$Search("[.VMS.Ext...]*$(O)").nes."" Then Delete/NoConfirm/Log [.VMS.Ext...]*$(O);* - If F$Search("[.pod]*.com").nes."" Then Delete/NoConfirm/Log [.pod]*.com;* + - If F$Search("[.pod]perldelta.pod").nes."" Then Delete/NoConfirm/Log [.pod]perldelta.pod;* - @extra_pods CLEAN realclean : clean diff --git a/gnu/usr.bin/perl/warnings.pl b/gnu/usr.bin/perl/warnings.pl index 57ac5b0189c..471e99d4db3 100644 --- a/gnu/usr.bin/perl/warnings.pl +++ b/gnu/usr.bin/perl/warnings.pl @@ -412,7 +412,7 @@ while (<DATA>) { #$list{'all'} = [ $offset .. 8 * ($warn_size/2) - 1 ] ; $last_ver = 0; -print PM "our %Offsets : unique = (\n" ; +print PM "our %Offsets = (\n" ; foreach my $k (sort { $a <=> $b } keys %ValueToName) { my ($name, $version) = @{ $ValueToName{$k} }; $name = lc $name; @@ -428,7 +428,7 @@ foreach my $k (sort { $a <=> $b } keys %ValueToName) { print PM " );\n\n" ; -print PM "our %Bits : unique = (\n" ; +print PM "our %Bits = (\n" ; foreach $k (sort keys %list) { my $v = $list{$k} ; @@ -442,7 +442,7 @@ foreach $k (sort keys %list) { print PM " );\n\n" ; -print PM "our %DeadBits : unique = (\n" ; +print PM "our %DeadBits = (\n" ; foreach $k (sort keys %list) { my $v = $list{$k} ; diff --git a/gnu/usr.bin/perl/win32/config.gc b/gnu/usr.bin/perl/win32/config.gc index 6c0a89d1d20..cc332a80e46 100644 --- a/gnu/usr.bin/perl/win32/config.gc +++ b/gnu/usr.bin/perl/win32/config.gc @@ -450,7 +450,7 @@ d_tmpnam_r='undef' d_truncate='undef' d_ttyname_r='undef' d_tzname='define' -d_u32align='define' +d_u32align='undef' d_ualarm='undef' d_umask='define' d_uname='define' diff --git a/gnu/usr.bin/perl/win32/config_H.vc64 b/gnu/usr.bin/perl/win32/config_H.vc64 index 1d1573cab1b..5a21ac03a8b 100644 --- a/gnu/usr.bin/perl/win32/config_H.vc64 +++ b/gnu/usr.bin/perl/win32/config_H.vc64 @@ -1344,7 +1344,7 @@ * 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 "c:\\perl\\5.8.2\\lib\\MSWin32-x86-multi-thread" /**/ +#define ARCHLIB "c:\\perl\\5.8.3\\lib\\MSWin32-x86-multi-thread" /**/ /*#define ARCHLIB_EXP "" /**/ /* BIN: @@ -1355,8 +1355,8 @@ * 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 "c:\\perl\\5.8.2\\bin\\MSWin32-x86-multi-thread" /**/ -#define BIN_EXP "c:\\perl\\5.8.2\\bin\\MSWin32-x86-multi-thread" /**/ +#define BIN "c:\\perl\\5.8.3\\bin\\MSWin32-x86-multi-thread" /**/ +#define BIN_EXP "c:\\perl\\5.8.3\\bin\\MSWin32-x86-multi-thread" /**/ /* PERL_INC_VERSION_LIST: * This variable specifies the list of subdirectories in over @@ -1393,8 +1393,8 @@ * 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 "c:\\perl\\5.8.2\\lib" /**/ -#define PRIVLIB_EXP (win32_get_privlib("5.8.2")) /**/ +#define PRIVLIB "c:\\perl\\5.8.3\\lib" /**/ +#define PRIVLIB_EXP (win32_get_privlib("5.8.3")) /**/ /* SITEARCH: * This symbol contains the name of the private library for this package. @@ -1411,7 +1411,7 @@ * 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 "c:\\perl\\site\\5.8.2\\lib\\MSWin32-x86-multi-thread" /**/ +#define SITEARCH "c:\\perl\\site\\5.8.3\\lib\\MSWin32-x86-multi-thread" /**/ /*#define SITEARCH_EXP "" /**/ /* SITELIB: @@ -1434,8 +1434,8 @@ * 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 "c:\\perl\\site\\5.8.2\\lib" /**/ -#define SITELIB_EXP (win32_get_sitelib("5.8.2")) /**/ +#define SITELIB "c:\\perl\\site\\5.8.3\\lib" /**/ +#define SITELIB_EXP (win32_get_sitelib("5.8.3")) /**/ #define SITELIB_STEM "" /**/ /* PERL_VENDORARCH: @@ -3369,7 +3369,7 @@ /* 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 c:\\perl\\site\\5.8.2\\lib\\MSWin32-x86-multi-thread for older + * lib/lib.pm will automatically search in c:\\perl\\site\\5.8.3\\lib\\MSWin32-x86-multi-thread 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. @@ -3388,7 +3388,7 @@ * 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 c:\\perl\\site\\5.8.2\\lib for older directories across major versions + * search in c:\\perl\\site\\5.8.3\\lib for older directories across major versions * back to pm_apiversion. This is only useful if you have a perl * library directory tree structured like the default one. The * versioned site_perl library was introduced in 5.005, so that's |