This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Merge branch 'dual/Safe' into blead
authorRafael Garcia-Suarez <rgs@consttype.org>
Thu, 29 Apr 2010 20:37:06 +0000 (22:37 +0200)
committerRafael Garcia-Suarez <rgs@consttype.org>
Thu, 29 Apr 2010 20:37:06 +0000 (22:37 +0200)
392 files changed:
.gitignore
AUTHORS
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
INSTALL
MANIFEST
META.yml
Makefile.SH
NetWare/Makefile
NetWare/config.wc
NetWare/config_H.wc
Porting/Glossary
Porting/Maintainers.pl
Porting/check83.pl
Porting/checkAUTHORS.pl
Porting/cmpVERSION.pl
Porting/config.sh
Porting/config_H
Porting/corelist-diff [new file with mode: 0644]
Porting/corelist-perldelta.pl
Porting/how_to_write_a_perldelta.pod
Porting/makemeta
Porting/perldelta_template.pod
Porting/release_managers_guide.pod
Porting/release_schedule.pod
README
README.aix
README.haiku
README.os2
README.vms
README.win32
XSUB.h
autodoc.pl
av.c
config_h.SH
configure.com
cop.h
cpan/CGI/Changes
cpan/CGI/lib/CGI.pm
cpan/CGI/lib/CGI/Carp.pm
cpan/CGI/lib/CGI/Cookie.pm
cpan/CGI/lib/CGI/Fast.pm
cpan/CGI/lib/CGI/Util.pm
cpan/CGI/t/carp.t
cpan/CGI/t/function.t
cpan/CGI/t/url.t [new file with mode: 0644]
cpan/CPAN/lib/CPAN/Distribution.pm
cpan/CPANPLUS-Dist-Build/t/inc/conf.pl
cpan/CPANPLUS/t/00_CPANPLUS-Internals-Utils.t
cpan/CPANPLUS/t/inc/conf.pl
cpan/Class-ISA/ChangeLog [deleted file]
cpan/Class-ISA/lib/Class/ISA.pm [deleted file]
cpan/Class-ISA/t/00_about_verbose.t [deleted file]
cpan/Class-ISA/t/01_old_junk.t [deleted file]
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
cpan/ExtUtils-MakeMaker/t/prereq.t
cpan/ExtUtils-ParseXS/Changes
cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
cpan/ExtUtils-ParseXS/t/XSMore.xs
cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm [new file with mode: 0644]
cpan/ExtUtils-ParseXS/t/more.t
cpan/File-Path/t/Path.t
cpan/List-Util/Changes
cpan/List-Util/ListUtil.xs
cpan/List-Util/lib/List/Util.pm
cpan/List-Util/lib/List/Util/PP.pm
cpan/List-Util/lib/List/Util/XS.pm
cpan/List-Util/lib/Scalar/Util.pm
cpan/List-Util/lib/Scalar/Util/PP.pm
cpan/List-Util/t/max.t
cpan/List-Util/t/min.t
cpan/Locale-Codes/ChangeLog
cpan/Locale-Codes/LICENSE [new file with mode: 0644]
cpan/Locale-Codes/Makefile.PL [deleted file]
cpan/Locale-Codes/README [deleted file]
cpan/Locale-Codes/README.first [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes.pod [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Changes.pod [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Country.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Currency.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Language.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Codes/Script.pm [new file with mode: 0644]
cpan/Locale-Codes/lib/Locale/Constants.pm
cpan/Locale-Codes/lib/Locale/Constants.pod
cpan/Locale-Codes/lib/Locale/Country.pm
cpan/Locale-Codes/lib/Locale/Country.pod
cpan/Locale-Codes/lib/Locale/Currency.pm
cpan/Locale-Codes/lib/Locale/Currency.pod
cpan/Locale-Codes/lib/Locale/Language.pm
cpan/Locale-Codes/lib/Locale/Language.pod
cpan/Locale-Codes/lib/Locale/Script.pm
cpan/Locale-Codes/lib/Locale/Script.pod
cpan/Locale-Codes/t/alias_code.t [new file with mode: 0755]
cpan/Locale-Codes/t/all.t [deleted file]
cpan/Locale-Codes/t/code2country.t [new file with mode: 0755]
cpan/Locale-Codes/t/code2currency.t [new file with mode: 0755]
cpan/Locale-Codes/t/code2language.t [new file with mode: 0755]
cpan/Locale-Codes/t/code2script.t [new file with mode: 0755]
cpan/Locale-Codes/t/constants.t [deleted file]
cpan/Locale-Codes/t/country.t [changed mode: 0644->0755]
cpan/Locale-Codes/t/country2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/country_code2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/currency.t [deleted file]
cpan/Locale-Codes/t/currency2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/language.t [changed mode: 0644->0755]
cpan/Locale-Codes/t/language2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/rename.t [deleted file]
cpan/Locale-Codes/t/script.t [deleted file]
cpan/Locale-Codes/t/script2code.t [new file with mode: 0755]
cpan/Locale-Codes/t/testfunc.pl [new file with mode: 0644]
cpan/Locale-Codes/t/uk.t [deleted file]
cpan/MIME-Base64/Base64.pm
cpan/MIME-Base64/Base64.xs
cpan/MIME-Base64/Changes
cpan/MIME-Base64/QuotedPrint.pm
cpan/MIME-Base64/t/quoted-print.t
cpan/Module-Build/lib/Module/Build/Platform/cygwin.pm
cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm
cpan/Pod-Simple/ChangeLog
cpan/Pod-Simple/README
cpan/Pod-Simple/lib/Pod/Simple.pm
cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
cpan/Pod-Simple/lib/Pod/Simple/Search.pm
cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
cpan/Pod-Simple/lib/Pod/Simple/Text.pm
cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
cpan/Pod-Simple/t/fcodes.t
cpan/Pod-Simple/t/fcodes_l.t
cpan/Pod-Simple/t/fcodes_s.t
cpan/Pod-Simple/t/stree.t
cpan/Shell/Shell.pm [deleted file]
cpan/Shell/t/Shell.t [deleted file]
cpan/Time-Piece/Piece.pm
cpan/Time-Piece/Seconds.pm
dist/B-Deparse/Deparse.pm
dist/B-Deparse/t/deparse.t
dist/Data-Dumper/Changes
dist/Data-Dumper/Dumper.pm
dist/Data-Dumper/Dumper.xs
dist/Data-Dumper/t/terse.t [new file with mode: 0644]
dist/Module-CoreList/Changes
dist/Module-CoreList/META.yml
dist/Module-CoreList/Makefile.PL
dist/Module-CoreList/corelist
dist/Module-CoreList/lib/Module/CoreList.pm
dist/Module-CoreList/t/corelist.t
dist/Module-CoreList/t/find_modules.t
dist/Pod-Plainer/Plainer.pm [deleted file]
dist/Pod-Plainer/t/plainer.t [deleted file]
dist/Storable/Storable.pm
dist/Storable/t/tied_items.t
dist/Switch/Changes [deleted file]
dist/Switch/MANIFEST [deleted file]
dist/Switch/META.yml [deleted file]
dist/Switch/Makefile.PL [deleted file]
dist/Switch/README [deleted file]
dist/Switch/Switch.pm [deleted file]
dist/Switch/t/given.t [deleted file]
dist/Switch/t/nested.t [deleted file]
dist/Switch/t/switch.t [deleted file]
dist/threads-shared/shared.pm
dist/threads-shared/shared.xs
dist/threads/t/basic.t
dist/threads/t/exit.t
dist/threads/t/thread.t
dist/threads/threads.pm
dist/threads/threads.xs
doio.c
dump.c
emacs/cperl-mode.el [deleted file]
emacs/e2ctags.pl [deleted file]
emacs/ptags [deleted file]
embed.fnc
embed.h
embedvar.h
epoc/config.sh
epoc/createpkg.pl
ext/B/t/concise-xs.t
ext/Fcntl/t/syslfs.t
ext/IPC-Open3/lib/IPC/Open3.pm
ext/IPC-Open3/t/IPC-Open3.t
ext/POSIX/t/sigaction.t
ext/Socket/Socket.pm
ext/Socket/Socket.xs
ext/XS-APItest-KeywordRPN/KeywordRPN.pm
ext/XS-APItest-KeywordRPN/KeywordRPN.xs
ext/XS-APItest-KeywordRPN/t/stuff_svcur_bug.t [new file with mode: 0644]
ext/XS-APItest/APItest.pm
ext/XS-APItest/APItest.xs
ext/XS-APItest/t/pmflag.t
ext/XS-APItest/t/ptr_table.t [new file with mode: 0644]
ext/XS-APItest/typemap [new file with mode: 0644]
global.sym
gv.c
gv.h
handy.h
hints/aix.sh
hints/aix_4.sh
hints/catamount.sh
hints/freebsd.sh
hints/hpux.sh
hv.c
intrpvar.h
iperlsys.h
lib/.gitignore
lib/Dumpvalue.pm
lib/File/Copy.pm
lib/File/Copy.t
lib/Pod/Functions.pm
lib/Unicode/UCD.pm
lib/Unicode/UCD.t
lib/abbrev.pl
lib/assert.pl
lib/bigfloat.pl
lib/bigint.pl
lib/bigrat.pl
lib/bytes.pm
lib/cacheout.pl
lib/charnames.pm
lib/charnames.t
lib/complete.pl
lib/ctime.pl
lib/dotsh.pl
lib/dumpvar.pl
lib/exceptions.pl
lib/fastcwd.pl
lib/feature.pm
lib/find.pl
lib/finddepth.pl
lib/flush.pl
lib/getcwd.pl
lib/getopt.pl
lib/getopts.pl
lib/h2ph.t
lib/hostname.pl
lib/importenv.pl
lib/locale.t
lib/look.pl
lib/newgetopt.pl
lib/open2.pl
lib/open3.pl
lib/overload.t
lib/perl5db.t
lib/pwd.pl
lib/shellwords.pl
lib/stat.pl
lib/tainted.pl
lib/termcap.pl
lib/timelocal.pl
lib/unicore/README.perl
lib/version.pm
lib/version.t
makedef.pl
mg.c
mg.h
numeric.c
op.c
op.h
patchlevel.h
perl.c
perl.h
perlapi.h
perldtrace.d
perlio.c
perlsdio.h
plan9/config.plan9
plan9/config_sh.sample
pod.lst
pod/perl.pod
pod/perl5111delta.pod
pod/perl5114delta.pod
pod/perl5120delta.pod
pod/perl5130delta.pod [new file with mode: 0644]
pod/perl5131delta.pod [moved from pod/perl5116delta.pod with 90% similarity]
pod/perlclib.pod
pod/perldebguts.pod
pod/perldiag.pod
pod/perldsc.pod
pod/perlebcdic.pod
pod/perlembed.pod
pod/perlfaq1.pod
pod/perlfunc.pod
pod/perlguts.pod
pod/perlhist.pod
pod/perlintro.pod
pod/perllol.pod
pod/perlmodlib.PL
pod/perlop.pod
pod/perlpod.pod
pod/perlpodspec.pod
pod/perlpolicy.pod
pod/perlport.pod
pod/perlre.pod
pod/perlrebackslash.pod
pod/perlrecharclass.pod
pod/perlrepository.pod
pod/perlrequick.pod
pod/perlreref.pod
pod/perlretut.pod
pod/perlrun.pod
pod/perlsec.pod
pod/perltodo.pod
pod/perlunicode.pod
pod/perlunifaq.pod
pod/perluniintro.pod
pod/perlunitut.pod
pod/perlutil.pod
pod/perlvar.pod
pod/perlxs.pod
pp.c
pp.h
pp_ctl.c
pp_hot.c
pp_sys.c
proto.h
regcomp.c
regexec.c
run.c
scope.c
scope.h
sv.c
sv.h
symbian/config.sh
t/io/defout.t [new file with mode: 0644]
t/io/errno.t
t/io/open.t
t/lib/strict/refs
t/lib/strict/vars
t/lib/warnings/toke
t/mro/vulcan_c3.t
t/mro/vulcan_dfs.t
t/op/each.t
t/op/eval.t
t/op/goto.t
t/op/gv.t
t/op/magic.t
t/op/qq.t
t/op/ref.t
t/op/reverse.t
t/op/sigdispatch.t [new file with mode: 0755]
t/op/sprintf2.t
t/op/sselect.t
t/op/svleak.t [new file with mode: 0644]
t/op/taint.t
t/op/tie.t
t/op/utf8magic.t [new file with mode: 0644]
t/porting/diag.t
t/re/re.t
toke.c
uconfig.sh
universal.c
utf8.c
util.c
utils/c2ph.PL
utils/h2ph.PL
utils/perlbug.PL
vms/descrip_mms.template
vms/vms.c
win32/Makefile
win32/Makefile.ce
win32/config.bc
win32/config.ce
win32/config.gc
win32/config.vc
win32/config.vc64
win32/makefile.mk
win32/perlhost.h
win32/pod.mak

index a20fbf9..6944e14 100644 (file)
@@ -9,6 +9,9 @@ git_version.h
 # ignore bug*.pl
 bug*.pl
 
+# Exists during ./Configure
+/UU
+
 # files produced by './configure.gnu' on a Linux machine
 Makefile.old
 /Makefile
diff --git a/AUTHORS b/AUTHORS
index bea8429..24ac6c3 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -87,6 +87,7 @@ Anthony David                 <adavid@netinfo.com.au>
 Anton Berezin                  <tobez@tobez.org>
 Anton Tagunov                  <tagunov@motor.ru>
 Archer Sully                   <archer@meer.net>
+Aristotle Pagaltzis             <pagaltzis@gmx.de>
 Arjen Laarhoven                        <arjen@nl.demon.net>
 Arne Ahrend                    <aahrend@web.de>
 Arnold D. Robbins              <arnold@gnu.ai.mit.edu>
@@ -209,6 +210,7 @@ Conrad E. Kimball           <cek@tblv021.ca.boeing.com>
 Craig A. Berry                 <craigberry@mac.com>
 Craig Milo Rogers              <Rogers@ISI.EDU>
 Curtis Poe                     <cp@onsitetech.com>
+Curtis Jewell                  <perl@csjewell.fastmail.us>
 Dagfinn Ilmari Mannsåker       <ilmari@ilmari.org>
 Dale Amon                      <amon@vnl.com>
 Damian Conway                  <damian@conway.org>
@@ -736,6 +738,7 @@ Neil Watkiss                        <neil.watkiss@sophos.com>
 Nicholas Clark                 <nick@ccl4.org>
 Nicholas Oxhøj
 Nicholas Perez                 <nperez@cpan.org>
+Nick Cleaton            <nick@cleaton.net>
 Nick Duffek
 Nick Gianniotis
 Nick Ing-Simmons
@@ -925,7 +928,7 @@ Spider Boardman                     <spider@orb.nashua.nh.us>
 Spiros Denaxas                 <spiros@lokku.com>
 Sreeji K Das                   <sreeji_k@yahoo.com>
 Stas Bekman                    <stas@stason.org>
-Steffen Müller                 <7k8lrvf02@sneakemail.com>
+Steffen Müller                 <smueller@cpan.org>
 Steffen Ullrich                        <coyote.frank@gmx.net>
 Stéphane Payrard               <stef@mongueurs.net>
 Stepan Kasal                   <skasal@redhat.com>
index 576b88d..f4d9cfb 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -30,7 +30,7 @@
 
 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
 #
-# Generated on Sat Feb 13 19:05:42 CET 2010 [metaconfig 3.5 PL0]
+# Generated on Mon Mar 29 10:12:43 CEST 2010 [metaconfig 3.5 PL0]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -628,6 +628,8 @@ d_pause=''
 d_pipe=''
 d_poll=''
 d_portable=''
+d_prctl=''
+d_prctl_set_name=''
 d_procselfexe=''
 procselfexe=''
 d_old_pthread_create_joinable=''
@@ -16049,6 +16051,31 @@ eval $inlibc
 set poll d_poll
 eval $inlibc
 
+: see if prctl exists
+set prctl d_prctl
+eval $inlibc
+
+: see if prctl supports PR_SET_NAME
+d_prctl_set_name=$undef
+case $d_prctl in
+    $define)
+       $cat >try.c <<EOM
+#include <sys/prctl.h>
+
+int main (int argc, char *argv[])
+{
+    return (prctl (PR_SET_NAME, "Test"));
+    } /* main */
+EOM
+       set try
+       if eval $compile_ok && $run ./try; then
+           echo "Your prctl (PR_SET_NAME, ...) works"
+           d_prctl_set_name=$define
+           fi
+       $rm_try
+       ;;
+    esac
+
 : see if readlink exists
 set readlink d_readlink
 eval $inlibc
@@ -22615,6 +22642,8 @@ d_phostname='$d_phostname'
 d_pipe='$d_pipe'
 d_poll='$d_poll'
 d_portable='$d_portable'
+d_prctl='$d_prctl'
+d_prctl_set_name='$d_prctl_set_name'
 d_printf_format_null='$d_printf_format_null'
 d_procselfexe='$d_procselfexe'
 d_pseudofork='$d_pseudofork'
index 9a33cb6..dd924ed 100644 (file)
@@ -33,11 +33,11 @@ ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
 api_subversion='0'
-api_version='11'
-api_versionstring='5.11.0'
+api_version='13'
+api_versionstring='5.13.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.11.5/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.11.5/armv4l-linux'
+archlib='/usr/lib/perl5/5.13.0/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.13.0/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.11.5/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.13.0/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='arm-linux-gcc'
@@ -357,6 +357,8 @@ d_phostname='undef'
 d_pipe='define'
 d_poll='define'
 d_portable='define'
+d_prctl='define'
+d_prctl_set_name='define'
 d_printf_format_null='undef'
 d_procselfexe='define'
 d_pseudofork='undef'
@@ -719,7 +721,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.11.5/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.13.0/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -727,13 +729,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.11.5'
+installprivlib='./install_me_here/usr/lib/perl5/5.13.0'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.11.5/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.13.0/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.11.5'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.13.0'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -861,8 +863,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.11.5'
-privlibexp='/usr/lib/perl5/5.11.5'
+privlib='/usr/lib/perl5/5.13.0'
+privlibexp='/usr/lib/perl5/5.13.0'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -927,17 +929,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.11.5/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.11.5/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.13.0/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.13.0/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.11.5'
+sitelib='/usr/lib/perl5/site_perl/5.13.0'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.11.5'
+sitelibexp='/usr/lib/perl5/site_perl/5.13.0'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -974,7 +976,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='5'
+subversion='0'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1062,8 +1064,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.11.5'
-version_patchlevel_string='version 11 subversion 5'
+version='5.13.0'
+version_patchlevel_string='version 13 subversion 0'
 versiononly='undef'
 vi=''
 voidflags='15'
@@ -1077,10 +1079,10 @@ config_arg0='Configure'
 config_args=''
 config_argc=0
 PERL_REVISION=5
-PERL_VERSION=11
-PERL_SUBVERSION=5
+PERL_VERSION=13
+PERL_SUBVERSION=0
 PERL_API_REVISION=5
-PERL_API_VERSION=11
+PERL_API_VERSION=13
 PERL_API_SUBVERSION=0
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index 7c0968b..aa42795 100644 (file)
@@ -33,11 +33,11 @@ ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
 api_subversion='0'
-api_version='11'
-api_versionstring='5.11.0'
+api_version='13'
+api_versionstring='5.13.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.11.5/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.11.5/armv4l-linux'
+archlib='/usr/lib/perl5/5.13.0/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.13.0/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -55,7 +55,7 @@ castflags='0'
 cat='cat'
 cc='arm-none-linux-gnueabi-gcc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.11.5/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.13.0/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='arm-linux-gcc'
@@ -703,7 +703,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.11.5/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.13.0/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -711,13 +711,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.11.5'
+installprivlib='./install_me_here/usr/lib/perl5/5.13.0'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.11.5/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.13.0/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.11.5'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.13.0'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -845,8 +845,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.11.5'
-privlibexp='/usr/lib/perl5/5.11.5'
+privlib='/usr/lib/perl5/5.13.0'
+privlibexp='/usr/lib/perl5/5.13.0'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -907,17 +907,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.11.5/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.11.5/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.13.0/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.13.0/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.11.5'
+sitelib='/usr/lib/perl5/site_perl/5.13.0'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.11.5'
+sitelibexp='/usr/lib/perl5/site_perl/5.13.0'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -954,7 +954,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='5'
+subversion='0'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1040,8 +1040,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.11.5'
-version_patchlevel_string='version 11 subversion 5'
+version='5.13.0'
+version_patchlevel_string='version 13 subversion 0'
 versiononly='undef'
 vi=''
 voidflags='15'
@@ -1055,10 +1055,10 @@ config_arg0='Configure'
 config_args=''
 config_argc=0
 PERL_REVISION=5
-PERL_VERSION=11
-PERL_SUBVERSION=5
+PERL_VERSION=13
+PERL_SUBVERSION=0
 PERL_API_REVISION=5
-PERL_API_VERSION=11
+PERL_API_VERSION=13
 PERL_API_SUBVERSION=0
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
diff --git a/INSTALL b/INSTALL
index 1daef23..8ab6a62 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -42,7 +42,7 @@ If you have problems, corrections, or questions, please see
 L<"Reporting Problems"> below.
 
 For information on what's new in this release, see the
-pod/perl5116delta.pod file.  For more information about how to find more
+pod/perl5131delta.pod file.  For more information about how to find more
 specific detail about changes, see the Changes file.
 
 =head1 DESCRIPTION
@@ -75,10 +75,10 @@ directory.
 
 =head2 Changes and Incompatibilities
 
-Please see pod/perl5116delta.pod for a description of the changes and
+Please see pod/perl5131delta.pod for a description of the changes and
 potential incompatibilities introduced with this release.  A few of
 the most important issues are listed below, but you should refer
-to pod/perl5116delta.pod for more detailed information.
+to pod/perl5131delta.pod for more detailed information.
 
 B<WARNING:> This version is not binary compatible with prior releases of Perl.
 If you have built extensions (i.e. modules that include C code)
@@ -93,7 +93,7 @@ The standard extensions supplied with Perl will be handled automatically.
 
 On a related issue, old modules may possibly be affected by the changes
 in the Perl language in the current release.  Please see
-pod/perl5116delta.pod for a description of what's changed.  See your
+pod/perl5131delta.pod for a description of what's changed.  See your
 installed copy of the perllocal.pod file for a (possibly incomplete)
 list of locally installed modules.  Also see CPAN::autobundle for one
 way to make a "bundle" of your currently installed modules.
@@ -310,7 +310,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall.
 On these systems, it might be the default compilation mode, and there
 is currently no guarantee that passing no use64bitall option to the
 Configure process will build a 32bit perl. Implementing -Duse32bit*
-options is planned for perl 5.12.
+options is planned for a future release of perl.
 
 =head3 Long doubles
 
@@ -524,9 +524,9 @@ The directories set up by Configure fall into three broad categories.
 
 =item Directories for the perl distribution
 
-By default, Configure will use the following directories for 5.11.5.
+By default, Configure will use the following directories for 5.13.1.
 $version is the full perl version number, including subversion, e.g.
-5.11.5 or 5.9.5, and $archname is a string like sun4-sunos,
+5.13.1 or 5.9.5, and $archname is a string like sun4-sunos,
 determined by Configure.  The full definitions of all Configure
 variables are in the file Porting/Glossary.
 
@@ -787,6 +787,10 @@ can be configured on a per-directory basis, although the default with
 "-Duserelocatableinc" is that everything is relocated. The initial
 install is done to the original configured prefix.
 
+This option is not compatible with the building of a shared libperl
+("-Duseshrplib"), because in that case perl is linked with an hard-coded
+rpath that points at the libperl.so, that cannot be relocated.
+
 =head2 Site-wide Policy settings
 
 After Configure runs, it stores a number of common site-wide "policy"
@@ -1557,6 +1561,26 @@ specific rule.
 SCO prior to 3.2.4 may be missing dbmclose().  An upgrade to 3.2.4
 that includes libdbm.nfs (which includes dbmclose()) may be available.
 
+=item error: too few arguments to function 'dbmclose'
+
+Building ODBM_File on some (Open)SUSE distributions might run into this
+error, as the header file is broken. There are two ways to deal with this
+
+ 1. Disable the use of ODBM_FILE
+
+    Configure ... -Dnoextensions=ODBM_File
+
+ 2. Fix the header file, somewhat like this:
+
+    --- a/usr/include/dbm.h  2010-03-24 08:54:59.000000000 +0100
+    +++ b/usr/include/dbm.h  2010-03-24 08:55:15.000000000 +0100
+    @@ -59,4 +59,4 @@ extern datum  firstkey __P((void));
+
+     extern datum   nextkey __P((datum key));
+
+    -extern int     dbmclose __P((DBM *));
+    +extern int     dbmclose __P((void));
+
 =item Note (probably harmless): No library found for -lsomething
 
 If you see such a message during the building of an extension, but
@@ -2262,7 +2286,7 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
 
 =head1 Coexistence with earlier versions of perl 5
 
-Perl 5.11 is not binary compatible with earlier versions of Perl.
+Perl 5.12 is not binary compatible with earlier versions of Perl.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl (e.g.
@@ -2336,9 +2360,9 @@ won't interfere with another version.  (The defaults guarantee this for
 libraries after 5.6.0, but not for executables. TODO?)  One convenient
 way to do this is by using a separate prefix for each version, such as
 
-       sh Configure -Dprefix=/opt/perl5.11.5
+       sh Configure -Dprefix=/opt/perl5.13.1
 
-and adding /opt/perl5.11.5/bin to the shell PATH variable.  Such users
+and adding /opt/perl5.13.1/bin to the shell PATH variable.  Such users
 may also wish to add a symbolic link /usr/local/bin/perl so that
 scripts can still start with #!/usr/local/bin/perl.
 
@@ -2353,11 +2377,11 @@ yet.
 
 =head2 Upgrading from 5.11.0 or earlier
 
-B<Perl 5.11.5 is binary incompatible with Perl 5.11.1 and any earlier
+B<Perl 5.13.1 is binary incompatible with Perl 5.11.1 and any earlier
 Perl release.>  Perl modules having binary parts
 (meaning that a C compiler is used) will have to be recompiled to be
-used with 5.11.5.  If you find you do need to rebuild an extension with
-5.11.5, you may safely do so without disturbing the older
+used with 5.13.1.  If you find you do need to rebuild an extension with
+5.13.1, you may safely do so without disturbing the older
 installations.  (See L<"Coexistence with earlier versions of perl 5">
 above.)
 
index 5b9d1ea..f3827c8 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -224,14 +224,11 @@ cpan/CGI/t/unescapeHTML.t         See if CGI::unescapeHTML() works
 cpan/CGI/t/uploadInfo.t                        See if CGI.pm works
 cpan/CGI/t/upload_post_text.txt                Test data for CGI.pm
 cpan/CGI/t/upload.t                    See if CGI.pm works
+cpan/CGI/t/url.t                       See if CGI.pm works
 cpan/CGI/t/user_agent.t                        See if CGI->user_agent() works
 cpan/CGI/t/utf8.t                      See if CGI.pm works
 cpan/CGI/t/util-58.t                   See if 5.8-dependent features work
 cpan/CGI/t/util.t                      See if CGI.pm works
-cpan/Class-ISA/ChangeLog               Changes for Class::ISA
-cpan/Class-ISA/lib/Class/ISA.pm                Class::ISA
-cpan/Class-ISA/t/00_about_verbose.t    Tests for Class::ISA
-cpan/Class-ISA/t/01_old_junk.t         Tests for Class::ISA
 cpan/Compress-Raw-Bzip2/bzip2-src/blocksort.c
 cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.c
 cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.h
@@ -1041,6 +1038,7 @@ cpan/ExtUtils-ParseXS/Changes                     ExtUtils::ParseXS change log
 cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm  converts Perl XS code into C code
 cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp      External subroutine preprocessor
 cpan/ExtUtils-ParseXS/t/basic.t                        See if ExtUtils::ParseXS works
+cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm   ExtUtils::ParseXS testing utility
 cpan/ExtUtils-ParseXS/t/more.t                 Extended ExtUtils::ParseXS testing
 cpan/ExtUtils-ParseXS/t/typemap                        Standard typemap for controlled testing
 cpan/ExtUtils-ParseXS/t/usage.t                        ExtUtils::ParseXS tests
@@ -1348,6 +1346,13 @@ cpan/List-Util/t/tainted.t               Scalar::Util
 cpan/List-Util/t/weak.t                        Scalar::Util
 cpan/List-Util/XS.pp                   List::Util
 cpan/Locale-Codes/ChangeLog                    Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Changes.pod Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Country.pm  Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Currency.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Language.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes.pm          Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes.pod         Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Script.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Constants.pm      Locale::Codes
 cpan/Locale-Codes/lib/Locale/Constants.pod     Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Country.pm                Locale::Codes
@@ -1358,16 +1363,21 @@ cpan/Locale-Codes/lib/Locale/Language.pm        Locale::Codes
 cpan/Locale-Codes/lib/Locale/Language.pod      Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Script.pm         Locale::Codes
 cpan/Locale-Codes/lib/Locale/Script.pod                Locale::Codes documentation
-cpan/Locale-Codes/Makefile.PL
-cpan/Locale-Codes/README                       Locale::Codes
-cpan/Locale-Codes/t/all.t                      See if Locale::Codes work
-cpan/Locale-Codes/t/constants.t                        See if Locale::Codes work
-cpan/Locale-Codes/t/country.t                  See if Locale::Codes work
-cpan/Locale-Codes/t/currency.t                 See if Locale::Codes work
-cpan/Locale-Codes/t/language.t                 See if Locale::Codes work
-cpan/Locale-Codes/t/rename.t                   See if Locale::Codes work
-cpan/Locale-Codes/t/script.t                   See if Locale::Codes work
-cpan/Locale-Codes/t/uk.t                       See if Locale::Codes work
+cpan/Locale-Codes/LICENSE                      Locale::Codes
+cpan/Locale-Codes/README.first                 Locale::Codes
+cpan/Locale-Codes/t/alias_code.t               Locale::Codes tests
+cpan/Locale-Codes/t/code2country.t             Locale::Codes tests
+cpan/Locale-Codes/t/code2currency.t            Locale::Codes tests
+cpan/Locale-Codes/t/code2language.t            Locale::Codes tests
+cpan/Locale-Codes/t/code2script.t              Locale::Codes tests
+cpan/Locale-Codes/t/country2code.t             Locale::Codes tests
+cpan/Locale-Codes/t/country_code2code.t                Locale::Codes tests
+cpan/Locale-Codes/t/country.t                  Locale::Codes tests
+cpan/Locale-Codes/t/currency2code.t            Locale::Codes tests
+cpan/Locale-Codes/t/language2code.t            Locale::Codes tests
+cpan/Locale-Codes/t/language.t                 Locale::Codes tests
+cpan/Locale-Codes/t/script2code.t              Locale::Codes tests
+cpan/Locale-Codes/t/testfunc.pl                        Locale::Codes tests
 cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm      Locale::Simple
 cpan/Locale-Maketext-Simple/t/0-signature.t                    Locale::Simple tests
 cpan/Locale-Maketext-Simple/t/1-basic.t                                Locale::Simple tests
@@ -2009,8 +2019,6 @@ cpan/Pod-Simple/t/xhtml01.t                               Pod::Simple test file
 cpan/Pod-Simple/t/xhtml05.t                            Pod::Simple test file
 cpan/Pod-Simple/t/xhtml10.t                            Pod::Simple test file
 cpan/Pod-Simple/t/x_nixer.t                            Pod::Simple test file
-cpan/Shell/Shell.pm            Make AUTOLOADed system() calls
-cpan/Shell/t/Shell.t           Tests for above
 cpan/Sys-Syslog/Changes                        Changlog for Sys::Syslog
 cpan/Sys-Syslog/fallback/const-c.inc   Sys::Syslog constants fallback file
 cpan/Sys-Syslog/fallback/const-xs.inc  Sys::Syslog constants fallback file
@@ -2606,6 +2614,7 @@ dist/Data-Dumper/t/freezer.t      See if $Data::Dumper::Freezer works
 dist/Data-Dumper/Todo          Data pretty printer, futures
 dist/Data-Dumper/t/overload.t  See if Data::Dumper works for overloaded data
 dist/Data-Dumper/t/pair.t      See if Data::Dumper pair separator works
+dist/Data-Dumper/t/terse.t     See if Data::Dumper terse option works
 dist/ExtUtils-Install/Changes                          ExtUtils-Install change log
 dist/ExtUtils-Install/lib/ExtUtils/Installed.pm                Information on installed extensions
 dist/ExtUtils-Install/lib/ExtUtils/Install.pm          Handles 'make install' on extensions
@@ -2740,8 +2749,6 @@ dist/Pod-Perldoc/t/01_about_verbose.t             test Pod::Perldoc
 dist/Pod-Perldoc/t/checkerbasic.t              test Pod::Perldoc::ToChecker
 dist/Pod-Perldoc/t/perldocbasic.t              test Pod::Perldoc basic operation
 dist/Pod-Perldoc/t/textbasic.t                 test Pod::Perldoc::ToText
-dist/Pod-Plainer/Plainer.pm    Pod migration utility module
-dist/Pod-Plainer/t/plainer.t   Test Pod::Plainer
 dist/Safe/Changes              Changes for Safe.pm
 dist/Safe/Makefile.PL          Makefile.PL for Safe.pm
 dist/Safe/MANIFEST             MANIFEST for Safe.pm
@@ -2809,15 +2816,6 @@ dist/Storable/t/tied.t                   See if Storable works
 dist/Storable/t/utf8hash.t             See if Storable works
 dist/Storable/t/utf8.t                 See if Storable works
 dist/Storable/t/weak.t                 Can Storable store weakrefs
-dist/Switch/Changes            Changes for Switch.pm
-dist/Switch/Makefile.PL                Makefile.PL for Switch.pm
-dist/Switch/MANIFEST           MANIFEST for Switch.pm
-dist/Switch/META.yml           META.yml for Switch.pm
-dist/Switch/README             README for Switch.pm
-dist/Switch/Switch.pm          Switch for Perl
-dist/Switch/t/given.t          See if Perl 6 given (switch) works
-dist/Switch/t/nested.t         See if nested switch works
-dist/Switch/t/switch.t         See if Perl 5 switch works
 dist/Thread-Queue/lib/Thread/Queue.pm  Thread-safe queues
 dist/Thread-Queue/t/01_basic.t         Thread::Queue tests
 dist/Thread-Queue/t/02_refs.t          Thread::Queue tests
@@ -2892,9 +2890,6 @@ doio.c                    I/O operations
 doop.c                 Support code for various operations
 dosish.h               Some defines for MS/DOSish machines
 dump.c                 Debugging output
-emacs/cperl-mode.el    An alternate perl-mode
-emacs/e2ctags.pl       etags to ctags converter
-emacs/ptags            Creates smart TAGS file
 embed.fnc              Database used by embed.pl
 embed.h                        Maps symbols to safer names
 embed.pl               Produces {embed,embedvar,proto}.h, global.sym
@@ -3218,6 +3213,7 @@ ext/XS-APItest-KeywordRPN/Makefile.PL     XS::APItest::KeywordRPN extension
 ext/XS-APItest-KeywordRPN/README       XS::APItest::KeywordRPN extension
 ext/XS-APItest-KeywordRPN/t/keyword_plugin.t   test keyword plugin mechanism
 ext/XS-APItest-KeywordRPN/t/multiline.t        test plugin parsing across lines
+ext/XS-APItest-KeywordRPN/t/stuff_svcur_bug.t  test for a bug in lex_stuff_pvn
 ext/XS-APItest/Makefile.PL     XS::APItest extension
 ext/XS-APItest/MANIFEST                XS::APItest extension
 ext/XS-APItest/notcore.c       Test API functions when PERL_CORE is not defined
@@ -3228,8 +3224,9 @@ ext/XS-APItest/t/hash.t           XS::APItest: tests for hash related APIs
 ext/XS-APItest/t/my_cxt.t      XS::APItest: test MY_CXT interface
 ext/XS-APItest/t/my_exit.t     XS::APItest: test my_exit
 ext/XS-APItest/t/op.t          XS::APItest: tests for OP related APIs
-ext/XS-APItest/t/pmflag.t      Test deprecation warning for Perl_pmflag()
+ext/XS-APItest/t/pmflag.t      Test removal of Perl_pmflag()
 ext/XS-APItest/t/printf.t      XS::APItest extension
+ext/XS-APItest/t/ptr_table.t   Test ptr_table_* APIs
 ext/XS-APItest/t/push.t                XS::APItest extension
 ext/XS-APItest/t/rmagical.t    XS::APItest extension
 ext/XS-APItest/t/svpeek.t      XS::APItest extension
@@ -3237,6 +3234,7 @@ ext/XS-APItest/t/svsetsv.t        Test behaviour of sv_setsv with/without PERL_CORE
 ext/XS-APItest/t/utf16_to_utf8.t       Test behaviour of utf16_to_utf8{,reversed}
 ext/XS-APItest/t/xs_special_subs_require.t     for require too
 ext/XS-APItest/t/xs_special_subs.t     Test that XS BEGIN/CHECK/INIT/END work
+ext/XS-APItest/typemap
 ext/XS-Typemap/Makefile.PL     XS::Typemap extension
 ext/XS-Typemap/README          XS::Typemap extension
 ext/XS-Typemap/stdio.c         XS::Typemap extension
@@ -3867,8 +3865,9 @@ pod/perl5112delta.pod             Perl changes in version 5.11.2
 pod/perl5113delta.pod          Perl changes in version 5.11.3
 pod/perl5114delta.pod          Perl changes in version 5.11.4
 pod/perl5115delta.pod          Perl changes in version 5.11.5
-pod/perl5116delta.pod          Perl changes in version 5.11.6
 pod/perl5120delta.pod          Perl changes in version 5.12.0
+pod/perl5130delta.pod          Perl changes in version 5.13.0
+pod/perl5131delta.pod          Perl changes in version 5.13.1
 pod/perl561delta.pod           Perl changes in version 5.6.1
 pod/perl56delta.pod            Perl changes in version 5.6
 pod/perl570delta.pod           Perl changes in version 5.7.0
@@ -4012,7 +4011,8 @@ Porting/config_h.pl               Reorder config_h.SH after metaconfig
 Porting/config.sh              Sample config.sh
 Porting/core-cpan-diff         Compare core distros with their CPAN equivalents
 Porting/corecpan.pl            Reports outdated dual-lived modules
-Porting/corelist-perldelta.pl          Generates data perldelta from Module::CoreList
+Porting/corelist-diff          Tool to produce corelist diffs
+Porting/corelist-perldelta.pl  Generates data perldelta from Module::CoreList
 Porting/corelist.pl            Generates data for Module::CoreList
 Porting/curliff.pl             Curliff or liff your curliffable files.
 Porting/expand-macro.pl                A tool to expand C macro definitions in the Perl source
@@ -4222,6 +4222,7 @@ t/io/argv.t                       See if ARGV stuff works
 t/io/binmode.t                 See if binmode() works
 t/io/crlf.t                    See if :crlf works
 t/io/crlf_through.t            See if pipe passes data intact with :crlf
+t/io/defout.t                  See if PL_defoutgv works
 t/io/dup.t                     See if >& works right
 t/io/errno.t                   See if $! is correctly set
 t/io/fflush.t                  See if auto-flush on fork/exec/system/qx works
@@ -4466,6 +4467,7 @@ t/op/reset.t                      See if reset operator works
 t/op/reverse.t                 See if reverse operator works
 t/op/runlevel.t                        See if die() works from perl_call_*()
 t/op/setpgrpstack.t            See if setpgrp works
+t/op/sigdispatch.t             See if signals are always dispatched
 t/op/sleep.t                   See if sleep works
 t/op/smartmatch.t              See if the ~~ operator works
 t/op/sort.t                    See if sort works
@@ -4482,6 +4484,7 @@ t/op/study.t                      See if study works
 t/op/studytied.t               See if study works with tied scalars
 t/op/sub_lval.t                        See if lvalue subroutines work
 t/op/sub.t                     See if subroutines work
+t/op/svleak.t                  See if stuff leaks SVs
 t/op/switch.t                  See if switches (given/when) work
 t/op/symbolcache.t             See if undef/delete works on stashes with functions
 t/op/sysio.t                   See if sysread and syswrite work
@@ -4500,6 +4503,7 @@ t/op/unshift.t                    See if unshift works
 t/op/upgrade.t                 See if upgrading and assigning scalars works
 t/op/utf8cache.t               Tests malfunctions of utf8 cache
 t/op/utf8decode.t              See if UTF-8 decoding works
+t/op/utf8magic.t               See if utf8:: functions handle magic variables
 t/op/utfhash.t                 See if utf8 keys in hashes behave
 t/op/utftaint.t                        See if utf8 and taint work together
 t/op/vec.t                     See if vectors work
index bf5b650..ec00ee9 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,5 +1,5 @@
 name: perl
-version: 5.011005
+version: 5.013000
 abstract: Practical Extraction and Report Language
 author: perl5-porters@perl.org
 license: perl
@@ -37,6 +37,7 @@ no_index:
     - dist/XSLoader
     - ext/Time-Local
     - lib/version
+    - win32
 
   file:
     - dist/IO/ChangeLog
@@ -81,6 +82,7 @@ no_index:
     - lib/Exporter.t
     - lib/Exporter/Heavy.pm
     - lib/newgetopt.pl
+    - lib/unicore/mktables
     - lib/version.pm
     - lib/version.pod
     - lib/version.t
@@ -92,4 +94,7 @@ no_index:
     - pod/pod2usage.PL
     - pod/podchecker.PL
     - pod/podselect.PL
+    - Porting/Maintainers.pm
+    - Porting/perldelta_template.pod
+    - TestInit.pm
 
index 1040b71..5a2517e 100644 (file)
@@ -1013,8 +1013,8 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
        $(MINIPERL) $(Icwd) pod/perlmodlib.PL -q
 
-pod/perldelta.pod: pod/perl5116delta.pod
-       $(LNS) perl5116delta.pod pod/perldelta.pod
+pod/perldelta.pod: pod/perl5131delta.pod
+       $(LNS) perl5131delta.pod pod/perldelta.pod
 
 extra.pods: $(MINIPERL_EXE)
        -@test ! -f extra.pods || rm -f `cat extra.pods`
index 73a6392..4fc2e0a 100644 (file)
@@ -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.11.5 for NetWare"
+MODULE_DESC     = "Perl 5.13.0 for NetWare"
 CCTYPE          = CodeWarrior
 C_COMPILER             = mwccnlm -c
 CPP_COMPILER   = mwccnlm
@@ -465,7 +465,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.11.5
+INST_VER       = \5.13.0
 
 #
 # Comment this out if you DON'T want your perl installation to have
index ed0ee69..05a270d 100644 (file)
@@ -347,6 +347,8 @@ d_phostname='undef'
 d_pipe='define'
 d_poll='undef'
 d_portable='define'
+d_prctl='undef'
+d_prctl_set_name='undef'
 d_printf_format_null='undef'
 d_procselfexe='undef'
 d_pseudofork='undef'
index 3986bff..52c4b38 100644 (file)
  *     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.11.5\\lib\\NetWare-x86-multi-thread"              /**/
+#define ARCHLIB "c:\\perl\\5.13.0\\lib\\NetWare-x86-multi-thread"              /**/
 /*#define ARCHLIB_EXP ""       /**/
 
 /* ARCHNAME:
  *     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.11.5\\bin\\NetWare-x86-multi-thread"  /**/
-#define BIN_EXP "c:\\perl\\5.11.5\\bin\\NetWare-x86-multi-thread"      /**/
+#define BIN "c:\\perl\\5.13.0\\bin\\NetWare-x86-multi-thread"  /**/
+#define BIN_EXP "c:\\perl\\5.13.0\\bin\\NetWare-x86-multi-thread"      /**/
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
  *     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.11.5\\lib\\NetWare-x86-multi-thread"               /**/
+#define SITEARCH "c:\\perl\\site\\5.13.0\\lib\\NetWare-x86-multi-thread"               /**/
 /*#define SITEARCH_EXP ""      /**/
 
 /* SITELIB:
  *     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.11.5\\lib"          /**/
+#define SITELIB "c:\\perl\\site\\5.13.0\\lib"          /**/
 /*#define SITELIB_EXP ""       /**/
 #define SITELIB_STEM ""                /**/
 
index e43fa89..e0df178 100644 (file)
@@ -1617,6 +1617,15 @@ d_portable (d_portable.U):
        indicates to the C program that it should not assume that it is
        running on the machine it was compiled on.
 
+d_prctl (d_prctl.U):
+       This variable conditionally defines the HAS_PRCTL symbol, which
+       indicates to the C program that the prctl() routine is available.
+
+d_prctl_set_name (d_prctl.U):
+       This variable conditionally defines the HAS_PRCTL_SET_NAME symbol,
+       which indicates to the C program that the prctl() routine supports
+       the PR_SET_NAME option.
+
 d_PRId64 (quadfio.U):
        This variable conditionally defines the PERL_PRId64 symbol, which
        indiciates that stdio has a symbol to print 64-bit decimal numbers.
index f37c895..fd8001b 100755 (executable)
@@ -3,8 +3,7 @@
 # Also, a "module" does not necessarily mean a CPAN module, it
 # might mean a file or files or a subdirectory.
 # Most (but not all) of the modules have dual lives in the core
-# and in CPAN.  Those that have a CPAN existence, have the CPAN
-# attribute set to true.
+# and in CPAN.
 
 package Maintainers;
 
@@ -76,6 +75,7 @@ use File::Glob qw(:case);
     'sadahiro' => 'SADAHIRO Tomoyuki <SADAHIRO@cpan.org>',
     'salva'    => 'Salvador Fandiño García <salva@cpan.org>',
     'saper'    => 'Sébastien Aperghis-Tramoni <saper@cpan.org>',
+    'sbeck'     => 'Sullivan Beck <sbeck@cpan.org>',
     'sburke'   => 'Sean Burke <sburke@cpan.org>',
     'mschwern' => 'Michael Schwern <mschwern@cpan.org>',
     'simonw'   => 'Simon Wistow <simonw@cpan.org>',
@@ -106,7 +106,7 @@ use File::Glob qw(:case);
 
 
 # Each entry in the  %Modules hash roughly represents a distribution,
-# except in the case of CPAN=1, where it *exactly* represents a single
+# except when DISTRIBUTION is set, where it *exactly* represents a single
 # CPAN distribution.
 
 # The keys of %Modules are human descriptions of the distributions, and
@@ -121,9 +121,6 @@ use File::Glob qw(:case);
 # names to be recursed down, which collectively generate a complete list
 # of the files associated with the distribution.
 
-# CPAN can be either 1 (this distribution is also available on CPAN),
-# or 0 (there is no # valid CPAN release).
-
 # UPSTREAM indicates where patches should go. undef implies
 # that this hasn't been discussed for the module at hand.
 # "blead" indicates that the copy of the module in the blead
@@ -188,7 +185,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'BINGOS/Archive-Extract-0.38.tar.gz',
        'FILES'         => q[cpan/Archive-Extract],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        'BUGS'          => 'bug-archive-extract@rt.cpan.org',
        },
@@ -198,7 +194,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'BINGOS/Archive-Tar-1.54.tar.gz',
        'FILES'         => q[cpan/Archive-Tar],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        'BUGS'          => 'bug-archive-tar@rt.cpan.org',
        },
@@ -208,7 +203,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'rgarcia',
        'DISTRIBUTION'  => 'SMUELLER/Attribute-Handlers-0.87.tar.gz',
        'FILES'         => q[dist/Attribute-Handlers],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -236,7 +230,6 @@ use File::Glob qw(:case);
                                t/system.t
                              )
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -246,7 +239,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'SMUELLER/AutoLoader-5.70.tar.gz',
        'FILES'         => q[cpan/AutoLoader],
        'EXCLUDED'      => [ qw( t/00pod.t ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -254,7 +246,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'smccam',
        'FILES'         => q[ext/B/B/Concise.pm ext/B/t/concise.t],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -264,7 +255,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'RURBAN/B-Debug-1.12.tar.gz',
        'FILES'         => q[cpan/B-Debug],
        'EXCLUDED'      => [ qw( t/coverage.html t/pod.t ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -272,7 +262,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'smccam',
        'FILES'         => q[dist/B-Deparse],
-       'CPAN'          => 0,
        'UPSTREAM'      => 'blead',
        },
 
@@ -282,7 +271,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'JJORE/B-Lint-1.11.tar.gz',
        'FILES'         => q[cpan/B-Lint],
        'EXCLUDED'      => [ qw( t/test.pl ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -291,7 +279,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'rgarcia',
        'DISTRIBUTION'  => 'RGARCIA/base-2.15.tar.gz',
        'FILES'         => q[dist/base],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -301,14 +288,13 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'TELS/math/bignum-0.23.tar.gz',
        'FILES'         => q[cpan/bignum],
        'EXCLUDED'      => [ qr{^inc/Module/}, qw(t/pod.t t/pod_cov.t) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
     'CGI' =>
        {
        'MAINTAINER'    => 'lstein',
-       'DISTRIBUTION'  => 'LDS/CGI.pm-3.48.tar.gz',
+       'DISTRIBUTION'  => 'LDS/CGI.pm-3.49.tar.gz',
        'FILES'         => q[cpan/CGI],
        'EXCLUDED'      => [ qr{^t/lib/Test},
                                qw( cgi-lib_porting.html
@@ -318,20 +304,9 @@ use File::Glob qw(:case);
                                    t/fast.t
                                )
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
-    'Class::ISA' =>
-       {
-       'MAINTAINER'    => 'smueller',
-       'DISTRIBUTION'  => 'SMUELLER/Class-ISA-0.36.tar.gz',
-       'FILES'         => q[cpan/Class-ISA],
-       'CPAN'          => 1,
-       'UPSTREAM'      => 'cpan',
-       'DEPRECATED'    => 5.011,
-       },
-
     'Compress::Raw::Bzip2' =>
        {
        'MAINTAINER'    => 'pmqs',
@@ -341,7 +316,6 @@ use File::Glob qw(:case);
                             qw( bzip2-src/bzip2-cpp.patch
                             )
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -356,7 +330,6 @@ use File::Glob qw(:case);
                                 t/99pod.t
                               )
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -372,7 +345,6 @@ use File::Glob qw(:case);
                                 eg/synopsis.pl
                               )
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -417,7 +389,6 @@ use File::Glob qw(:case);
                                t/yaml_code.yml
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -436,7 +407,6 @@ use File::Glob qw(:case);
                                 t/032_CPANPLUS-Internals-Source-via-sqlite.t
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        'BUGS'          => 'bug-cpanplus@rt.cpan.org',
        },
@@ -451,7 +421,6 @@ use File::Glob qw(:case);
                                 t/99_pod_coverage.t
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -460,7 +429,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'p5p', # Not gsar. Not ilyam
        'DISTRIBUTION'  => 'SMUELLER/Data-Dumper-2.125.tar.gz',
        'FILES'         => q[dist/Data-Dumper],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -475,7 +443,6 @@ use File::Glob qw(:case);
                                 fallback.xs
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -485,7 +452,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'MHX/Devel-PPPort-3.19.tar.gz',
        'FILES'         => q[cpan/Devel-PPPort],
        'EXCLUDED'      => [ qw{PPPort.pm} ], # we use PPPort_pm.PL instead
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -495,7 +461,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'GAAS/Digest-1.16.tar.gz',
        'FILES'         => q[cpan/Digest],
        'EXCLUDED'      => [ qw{digest-bench} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -505,7 +470,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'GAAS/Digest-MD5-2.39.tar.gz',
        'FILES'         => q[cpan/Digest-MD5],
        'EXCLUDED'      => [ qw{rfc1321.txt} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -515,7 +479,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'MSHELOR/Digest-SHA-5.47.tar.gz',
        'FILES'         => q[cpan/Digest-SHA],
        'EXCLUDED'      => [ qw{t/pod.t t/podcover.t examples/dups} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -524,7 +487,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'dankogai',
        'DISTRIBUTION'  => 'DANKOGAI/Encode-2.39.tar.gz',
        'FILES'         => q[cpan/Encode],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -537,7 +499,6 @@ use File::Glob qw(:case);
                             qw{t/0-signature.t Makefile.PL MANIFEST META.yml
                             README SIGNATURE},
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -553,7 +514,6 @@ use File::Glob qw(:case);
        'MAP'           => { 't/'       => 'lib/',
                             'lib/'     => 'lib/',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -562,7 +522,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kwilliams',
        'DISTRIBUTION'  => 'DAGOLDEN/ExtUtils-CBuilder-0.27.tar.gz',
        'FILES'         => q[cpan/ExtUtils-CBuilder],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -576,7 +535,6 @@ use File::Glob qw(:case);
                                 lib/Shell/Command.pm
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -593,7 +551,6 @@ use File::Glob qw(:case);
                                 examples/perl_regcomp_posix_keyword.pl
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -610,7 +567,6 @@ use File::Glob qw(:case);
                                 t/pod.t
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -622,7 +578,6 @@ use File::Glob qw(:case);
        'EXCLUDED'      => [ qr{^t/lib/Test/},
                             qr{^inc/ExtUtils/},
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'first-come',
        },
 
@@ -631,14 +586,13 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'rkobes',
        'DISTRIBUTION'  => 'RKOBES/ExtUtils-Manifest-1.57.tar.gz',
        'FILES'         => q[cpan/ExtUtils-Manifest],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
     'ExtUtils::ParseXS' =>
        {
        'MAINTAINER'    => 'kwilliams',
-    'DISTRIBUTION' => 'DAGOLDEN/ExtUtils-ParseXS-2.21.tar.gz',
+    'DISTRIBUTION' => 'DAGOLDEN/ExtUtils-ParseXS-2.2205.tar.gz',
     'EXCLUDED'  => [ qw{
                        t/bugs/RT48104.xs
                                    t/bugs/typemap
@@ -646,7 +600,6 @@ use File::Glob qw(:case);
                                        t/include/nscore.h
                                   }],
        'FILES'         => q[cpan/ExtUtils-ParseXS],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -654,7 +607,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'perlfaq',
        'FILES'         => q[pod/perlfaq*],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -663,7 +615,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'BINGOS/File-Fetch-0.24.tar.gz',
        'FILES'         => q[cpan/File-Fetch],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -679,7 +630,6 @@ use File::Glob qw(:case);
        'MAP'           => { ''         => 'cpan/File-Path/lib/File/',
                             't/'       => 'cpan/File-Path/t/',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -692,7 +642,6 @@ use File::Glob qw(:case);
                                misc/results.txt
                               }
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -704,7 +653,6 @@ use File::Glob qw(:case);
        'EXCLUDED'      => [ qw(Makefile.PL MANIFEST README META.yml),
                             qr{^demo/}
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -739,7 +687,6 @@ use File::Glob qw(:case);
                             'perlfilter.pod' => 'pod/perlfilter.pod',
                             ''               => 'cpan/Filter-Util-Call/',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -756,7 +703,6 @@ use File::Glob qw(:case);
        'MAP'           => { ''                => 'cpan/Getopt-Long/',
                             'lib/newgetopt.pl' => 'lib/newgetopt.pl',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -768,7 +714,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'p5p',
        'DISTRIBUTION'  => 'SBURKE/I18N-LangTags-0.35.tar.gz',
        'FILES'         => q[dist/I18N-LangTags],
-       'CPAN'          => 0,
        'UPSTREAM'      => 'blead',
        },
 
@@ -777,7 +722,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'ilyaz',
        'DISTRIBUTION'  => 'ILYAZ/modules/if-0.0401.tar.gz',
        'FILES'         => q[cpan/if],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -787,7 +731,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'GBARR/IO-1.25.tar.gz',
        'FILES'         => q[dist/IO/],
        'EXCLUDED'      => [ qw{t/test.pl}, ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -797,7 +740,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'PMQS/IO-Compress-2.021.tar.gz',
        'FILES'         => q[cpan/IO-Compress],
        'EXCLUDED'      => [ qr{t/Test/} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -806,7 +748,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'tomhughes',
        'DISTRIBUTION'  => 'TOMHUGHES/IO-Zlib-1.10.tar.gz',
        'FILES'         => q[cpan/IO-Zlib],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -815,7 +756,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'BINGOS/IPC-Cmd-0.54.tar.gz',
        'FILES'         => q[cpan/IPC-Cmd],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -825,7 +765,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'MHX/IPC-SysV-2.01.tar.gz',
        'FILES'         => q[cpan/IPC-SysV],
        'EXCLUDED'      => [ qw{const-c.inc const-xs.inc} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -835,7 +774,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'SMUELLER/lib-0.62.tar.gz',
        'FILES'         => q[dist/lib/],
        'EXCLUDED'      => [ qw{forPAUSE/lib.pm t/00pod.t} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -845,17 +783,17 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'GBARR/libnet-1.22.tar.gz',
        'FILES'         => q[cpan/libnet],
        'EXCLUDED'      => [ qw{Configure install-nomake} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
     'Locale-Codes' =>
        {
-       'MAINTAINER'    => 'neilb',
-       'DISTRIBUTION'  => 'NEILB/Locale-Codes-2.07.tar.gz',
+       'MAINTAINER'    => 'sbeck',
+       'DISTRIBUTION'  => 'SBECK/Locale-Codes-3.12.tar.gz',
        'FILES'         => q[cpan/Locale-Codes],
-       'CPAN'          => 1,
-       'UPSTREAM'      => undef,
+       'EXCLUDED'      => [ qw{t/pod_coverage.t t/pod.t}, qr{^t/runtests},
+                            qr{^internal/}, qr{^examples/} ],
+       'UPSTREAM'      => 'cpan',
        },
 
     'Locale::Maketext' =>
@@ -864,7 +802,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'FERREIRA/Locale-Maketext-1.13.tar.gz',
        'FILES'         => q[dist/Locale-Maketext],
        'EXCLUDED'      => [ qw{perlcriticrc t/00_load.t t/pod.t} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -874,7 +811,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'JESSE/Locale-Maketext-Simple-0.21.tar.gz',
        'FILES'         => q[cpan/Locale-Maketext-Simple],
        'EXCLUDED'      => [ qr{^inc/} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -883,7 +819,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'KANE/Log-Message-0.02.tar.gz',
        'FILES'         => q[cpan/Log-Message],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -892,7 +827,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'BINGOS/Log-Message-Simple-0.06.tar.gz',
        'FILES'         => q[cpan/Log-Message-Simple],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -900,7 +834,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'lwall',
        'FILES'         => q[mad],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -915,7 +848,6 @@ use File::Glob qw(:case);
                                t/pod_cov.t
                               }
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -943,7 +875,6 @@ use File::Glob qw(:case);
                             'lib/Math/BigInt/FastCalc.pm'
                                    => 'cpan/Math-BigInt-FastCalc/FastCalc.pm',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -958,7 +889,6 @@ use File::Glob qw(:case);
                                t/pod_cov.t
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -973,7 +903,6 @@ use File::Glob qw(:case);
                                t/pod-coverage.t
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -988,18 +917,16 @@ use File::Glob qw(:case);
                                Memoize/Saves.pm
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
     'MIME::Base64' =>
        {
        'MAINTAINER'    => 'gaas',
-       'DISTRIBUTION'  => 'GAAS/MIME-Base64-3.08.tar.gz',
+       'DISTRIBUTION'  => 'GAAS/MIME-Base64-3.09.tar.gz',
        'FILES'         => q[cpan/MIME-Base64],
        'EXCLUDED'      => [ qw{ t/bad-sv.t }, ],
-       'CPAN'          => 1,
-       'UPSTREAM'      => undef,
+       'UPSTREAM'      => 'cpan',
        },
 
     'Module::Build' =>
@@ -1009,7 +936,6 @@ use File::Glob qw(:case);
        'FILES'         => q[cpan/Module-Build],
        'EXCLUDED'      => [ qw{ t/par.t t/signature.t },
                             qr!^contrib/!,  qr!^devtools! ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1018,7 +944,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'rgarcia',
        'DISTRIBUTION'  => 'BINGOS/Module-CoreList-2.23.tar.gz',
        'FILES'         => q[dist/Module-CoreList],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -1027,16 +952,14 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'KANE/Module-Load-0.16.tar.gz',
        'FILES'         => q[cpan/Module-Load],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
     'Module::Load::Conditional' =>
        {
        'MAINTAINER'    => 'kane',
-       'DISTRIBUTION'  => 'BINGOS/Module-Load-Conditional-0.34.tar.gz',
+       'DISTRIBUTION'  => 'BINGOS/Module-Load-Conditional-0.38.tar.gz',
        'FILES'         => q[cpan/Module-Load-Conditional],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1045,7 +968,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'BINGOS/Module-Loaded-0.06.tar.gz',
        'FILES'         => q[cpan/Module-Loaded],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1054,8 +976,7 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'simonw',
        'DISTRIBUTION'  => 'SIMONW/Module-Pluggable-3.9.tar.gz',
        'FILES'         => q[cpan/Module-Pluggable],
-       'CPAN'          => 1,
-       'UPSTREAM'      => undef,
+       'UPSTREAM'      => 'cpan',
        },
 
     'Net::Ping' =>
@@ -1063,7 +984,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'smpeters',
        'DISTRIBUTION'  => 'SMPETERS/Net-Ping-2.36.tar.gz',
        'FILES'         => q[dist/Net-Ping],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -1073,7 +993,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'FLORA/NEXT-0.64.tar.gz',
        'FILES'         => q[cpan/NEXT],
        'EXCLUDED'      => [ qr{^demo/} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1082,7 +1001,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'BINGOS/Object-Accessor-0.36.tar.gz',
        'FILES'         => q[cpan/Object-Accessor],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1091,7 +1009,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'KANE/Package-Constants-0.02.tar.gz',
        'FILES'         => q[cpan/Package-Constants],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1103,7 +1020,6 @@ use File::Glob qw(:case);
        # the tarball. Russell's Paradox eat your heart out.
        'EXCLUDED'      => [ qw( Params-Check-0.26.tar.gz ) ],
        'FILES'         => q[cpan/Params-Check],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1112,7 +1028,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'corion',
        'DISTRIBUTION'  => 'CORION/parent-0.223.tar.gz',
        'FILES'         => q[cpan/parent],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1122,7 +1037,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'SMUELLER/Parse-CPAN-Meta-1.40.tar.gz',
        'FILES'         => q[cpan/Parse-CPAN-Meta],
        'EXCLUDED'      => [ qw( t/97_meta.t t/98_pod.t t/99_pmv.t ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        # NOTE: 'perl uupacktool.pl t/data/utf_16_le_bom.yml.packed'
        # run by hand after import, as the core's test harness doesn't
@@ -1135,7 +1049,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'SMUELLER/PathTools-3.31.tar.gz',
        'FILES'         => q[cpan/Cwd],
        'EXCLUDED'      => [ qr{^t/lib/Test/} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => "cpan",
        # NOTE: PathTools is in cpan/Cwd/ because it contains Cwd.xs and
        # something, possibly Makefile.SH, makes an assumption that the
@@ -1146,7 +1059,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'pvhp',
        'FILES'         => q[pod/perlebcdic.pod],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1154,7 +1066,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'p5p',
        'FILES'         => q[ext/PerlIO],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1163,7 +1074,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'elizabeth',
        'DISTRIBUTION'  => 'ELIZABETH/PerlIO-via-QuotedPrint-0.06.tar.gz',
        'FILES'         => q[cpan/PerlIO-via-QuotedPrint],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1171,7 +1081,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'laun',
        'FILES'         => q[pod/perlpacktut.pod],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1179,7 +1088,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'sburke',
        'FILES'         => q[pod/perlpodspec.pod],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1188,7 +1096,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'abigail',
        'FILES'         => q[pod/perlrecharclass.pod
                             pod/perlrebackslash.pod],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1197,7 +1104,6 @@ use File::Glob qw(:case);
        {
        MAINTAINER      => 'avar',
        FILES           => q[pod/perlreapi.pod],
-       CPAN            => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1205,7 +1111,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'mjd',
        'FILES'         => q[pod/perlreftut.pod],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1213,7 +1118,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'elizabeth',
        'FILES'         => q[pod/perlthrtut.pod],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1222,7 +1126,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'arandal',
        'DISTRIBUTION'  => 'SBURKE/Pod-Escapes-1.04.tar.gz',
        'FILES'         => q[cpan/Pod-Escapes],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1237,7 +1140,6 @@ use File::Glob qw(:case);
        'MAP'           => { '' => 'cpan/Pod-LaTeX/',
                             'pod2latex.PL' => 'pod/pod2latex.PL',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1254,7 +1156,6 @@ use File::Glob qw(:case);
        'MAP'           => { '' => 'cpan/Pod-Parser/',
                             'scripts/' => 'pod/',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1276,21 +1177,9 @@ use File::Glob qw(:case);
        'MAP'           => { '' => 'dist/Pod-Perldoc/',
                             'lib/perldoc.pod' => 'pod/perldoc.pod',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
-    'Pod::Plainer' =>
-       {
-       'DISTRIBUTION'  => 'RMBARKER/Pod-Plainer-1.02.tar.gz',
-       'MAINTAINER'    => 'rmbarker',
-       'FILES'         => q[dist/Pod-Plainer],
-       'CPAN'          => 1,
-       'UPSTREAM'      => 'blead',
-       'EXCLUDED'      => [ qw(t/pod.t t/pod-coverage.t) ],
-       'DEPRECATED'    => 5.011,
-       },
-
     'Pod::Simple' =>
        {
        'MAINTAINER'    => 'arandal',
@@ -1301,7 +1190,6 @@ use File::Glob qw(:case);
        # have been in blead a long time. I'm going to assume then that
        # the blead versions of these two files are authoritative - DAPM
        'EXCLUDED'      => [ qw( lib/perlpod.pod lib/perlpodspec.pod ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1316,7 +1204,6 @@ use File::Glob qw(:case);
        'MAP'           => { '' => 'cpan/podlators/',
                             'scripts/' => 'pod/',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1325,21 +1212,19 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'rgarcia',
        'DISTRIBUTION'  => 'RGARCIA/Safe-2.22.tar.gz',
        'FILES'         => q[dist/Safe],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
     'Scalar-List-Utils' =>
        {
        'MAINTAINER'    => 'gbarr',
-       'DISTRIBUTION'  => 'GBARR/Scalar-List-Utils-1.21.tar.gz',
+       'DISTRIBUTION'  => 'GBARR/Scalar-List-Utils-1.23.tar.gz',
        # Note that perl uses its own version of Makefile.PL
        'FILES'         => q[cpan/List-Util],
        'EXCLUDED'      => [ qr{^inc/Module/},
                             qr{^inc/Test/},
                             qw{ mytypemap },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1349,41 +1234,18 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'SMUELLER/SelfLoader-1.17.tar.gz',
        'FILES'         => q[dist/SelfLoader],
        'EXCLUDED'      => [ qw{ t/00pod.t } ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
-    'Shell' =>
-       {
-       'MAINTAINER'    => 'ferreira',
-       'DISTRIBUTION'  => 'FERREIRA/Shell-0.72_01.tar.gz',
-       'FILES'         => q[cpan/Shell],
-       'EXCLUDED'      => [ qw{ t/01_use.t t/99_pod.t } ],
-       'CPAN'          => 1,
-       'UPSTREAM'      => undef,
-       'DEPRECATED'    => 5.011,
-       },
-
     'Storable' =>
        {
        'MAINTAINER'    => 'ams',
        'DISTRIBUTION'  => 'AMS/Storable-2.21.tar.gz',
        'FILES'         => q[dist/Storable],
        'EXCLUDED'      => [ qr{^t/Test/} ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
-    'Switch' =>
-       {
-       'MAINTAINER'    => 'rgarcia',
-       'DISTRIBUTION'  => 'RGARCIA/Switch-2.15.tar.gz',
-       'FILES'         => q[dist/Switch],
-       'CPAN'          => 1,
-       'UPSTREAM'      => 'blead',
-       'DEPRECATED'    => 5.011,
-       },
-
     'Sys::Syslog' =>
        {
        'MAINTAINER'    => 'saper',
@@ -1399,7 +1261,6 @@ use File::Glob qw(:case);
                                win32/PerlLog.RES
                               },
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1409,7 +1270,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'RRA/ANSIColor-2.02.tar.gz',
        'FILES'         => q[cpan/Term-ANSIColor],
        'EXCLUDED'      => [ qr{^tests/}, qw(t/pod-spelling.t t/pod.t) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1418,7 +1278,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'jstowe',
        'DISTRIBUTION'  => 'JSTOWE/Term-Cap-1.12.tar.gz',
        'FILES'         => q[cpan/Term-Cap],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1427,7 +1286,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'kane',
        'DISTRIBUTION'  => 'KANE/Term-UI-0.20.tar.gz',
        'FILES'         => q[cpan/Term-UI],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1436,7 +1294,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'jesse',
        'DISTRIBUTION'  => 'JESSE/Test-1.25_02.tar.gz',
        'FILES'         => q[cpan/Test],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1455,7 +1312,6 @@ use File::Glob qw(:case);
                                t/lib/if.pm
                               }
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1474,7 +1330,6 @@ use File::Glob qw(:case);
                                lib/Test/Builder/IO/Scalar.pm
                               }
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1484,7 +1339,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'ADAMK/Text-Balanced-2.02.tar.gz',
        'FILES'         => q[cpan/Text-Balanced],
        'EXCLUDED'      => [ qw( t/97_meta.t t/98_pod.t t/99_pmv.t ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1499,7 +1353,6 @@ use File::Glob qw(:case);
                             'ParseWords.pm' => 'cpan/Text-ParseWords/lib/Text/ParseWords.pm',
                             ''              => 'cpan/Text-ParseWords/',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1514,7 +1367,6 @@ use File::Glob qw(:case);
                             # considerably over the years
                             'test.pl'        => 'cpan/Text-Soundex/t/Soundex.t',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1524,7 +1376,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'MUIR/modules/Text-Tabs+Wrap-2009.0305.tar.gz',
        'FILES'         => q[cpan/Text-Tabs],
        'EXCLUDED'      => [ qw( t/dnsparks.t ) ], # see af6492bf9e
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1538,7 +1389,6 @@ use File::Glob qw(:case);
                                t/99_pod.t
                                t/test.pl
                               ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -1552,35 +1402,32 @@ use File::Glob qw(:case);
                                t/99_pod.t
                                t/test.pl
                               ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
     'threads' =>
        {
        'MAINTAINER'    => 'jdhedden',
-       'DISTRIBUTION'  => 'JDHEDDEN/threads-1.75.tar.gz',
+       'DISTRIBUTION'  => 'JDHEDDEN/threads-1.77.tar.gz',
        'FILES'         => q[dist/threads],
        'EXCLUDED'      => [ qw(examples/pool.pl
                                t/pod.t
                                t/test.pl
                                threads.h
                               ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
     'threads::shared' =>
        {
        'MAINTAINER'    => 'jdhedden',
-       'DISTRIBUTION'  => 'JDHEDDEN/threads-shared-1.32.tar.gz',
+       'DISTRIBUTION'  => 'JDHEDDEN/threads-shared-1.33.tar.gz',
        'FILES'         => q[dist/threads-shared],
        'EXCLUDED'      => [ qw(examples/class.pl
                                shared.h
                                t/pod.t
                                t/test.pl
                               ) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -1589,7 +1436,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'mjd',
        'DISTRIBUTION'  => 'MJD/Tie-File-0.96.tar.gz',
        'FILES'         => q[cpan/Tie-File],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1598,7 +1444,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'nuffin',
        'DISTRIBUTION'  => 'NUFFIN/Tie-RefHash-1.38.tar.gz',
        'FILES'         => q[cpan/Tie-RefHash],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1607,7 +1452,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'zefram',
        'DISTRIBUTION'  => 'JHI/Time-HiRes-1.9719.tar.gz',
        'FILES'         => q[cpan/Time-HiRes],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1617,7 +1461,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'DROLSKY/Time-Local-1.1901.tar.gz',
        'FILES'         => q[ext/Time-Local],
        'EXCLUDED'      => [ qw(t/pod-coverage.t t/pod.t) ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        # Currently Time::Local is no longer backwards compatible with Pre-5.11 perls
        # the version in core has now deviated from the CPAN version. To re-dual-life
@@ -1629,7 +1472,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'msergeant',
        'DISTRIBUTION'  => 'MSERGEANT/Time-Piece-1.15.tar.gz',
        'FILES'         => q[cpan/Time-Piece],
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1642,7 +1484,6 @@ use File::Glob qw(:case);
        'EXCLUDED'      => [ qr{X$},
                             qw{disableXS enableXS }
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'first-come',
        },
 
@@ -1652,7 +1493,6 @@ use File::Glob qw(:case);
        'DISTRIBUTION'  => 'SADAHIRO/Unicode-Normalize-1.03.tar.gz',
        'FILES'         => q[cpan/Unicode-Normalize],
        'EXCLUDED'      => [ qw{MANIFEST.N Normalize.pmN disableXS enableXS }],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'first-come',
        },
 
@@ -1669,7 +1509,6 @@ use File::Glob qw(:case);
        'MAP'           => { 'lib/'           => 'lib/',
                             't/coretests.pm' => 'lib/version.t',
                           },
-       'CPAN'          => 1,
        'UPSTREAM'      => undef,
        },
 
@@ -1677,7 +1516,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'craig',
        'FILES'         => q[vms configure.com README.vms],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1685,7 +1523,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'craig',
        'FILES'         => q[ext/VMS-DCLsym],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1693,7 +1530,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'craig',
        'FILES'         => q[ext/VMS-Stdio],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1705,7 +1541,6 @@ use File::Glob qw(:case);
                             lib/warnings
                             t/lib/warnings
                            ],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1713,7 +1548,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'jand',
        'FILES'         => q[win32 t/win32 README.win32 ext/Win32CORE],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1722,7 +1556,6 @@ use File::Glob qw(:case);
        'MAINTAINER'    => 'jand',
        'DISTRIBUTION'  => "JDB/Win32-0.39.tar.gz",
        'FILES'         => q[cpan/Win32],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1734,7 +1567,6 @@ use File::Glob qw(:case);
        'EXCLUDED'      => [ qr{^ex/},
                             qw{t/pod.t},
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'cpan',
        },
 
@@ -1742,7 +1574,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'zefram',
        'FILES'         => q[ext/XS-APItest-KeywordRPN],
-       'CPAN'          => 0,
        'UPSTREAM'      => 'blead',
        },
 
@@ -1757,7 +1588,6 @@ use File::Glob qw(:case);
                                t/portfs.t
                                XSLoader.pm}, # we use XSLoader_pm.PL
                           ],
-       'CPAN'          => 1,
        'UPSTREAM'      => 'blead',
        },
 
@@ -1765,7 +1595,6 @@ use File::Glob qw(:case);
        {
        'MAINTAINER'    => 'laun',
        'FILES'         => q[x2p/s2p.PL],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 
@@ -1985,9 +1814,13 @@ use File::Glob qw(:case);
                                lib/vars{.pm,.t,_carp.t}
                                lib/vmsish.{pm,t}
                            ],
-       'CPAN'          => 0,
        'UPSTREAM'      => undef,
        },
 );
 
+# legacy CPAN flag
+for (values %Modules) {
+    $_->{CPAN} = !!$_->{DISTRIBUTION};
+}
+
 1;
index 56989fa..64eac95 100644 (file)
@@ -20,13 +20,16 @@ my $maxl = 30; # make up a limit for a maximum filename length
 
 sub eight_dot_three {
     return () if $seen{$_[0]}++;
-    my ($dir, $base, $ext) = ($_[0] =~ m{^(?:(.+)/)?([^/.]+)(?:\.([^/.]+))?$});
+    my ($dir, $base, $ext) = ($_[0] =~ m{^(?:(.+)/)?([^/.]*)(?:\.([^/.]+))?$});
     my $file = $base . ( defined $ext ? ".$ext" : "" );
     $base = substr($base, 0, 8);
     $ext  = substr($ext,  0, 3) if defined $ext;
     if (defined $dir && $dir =~ /\./)  {
        print "directory name contains '.': $dir\n";
     }
+    if ($base eq "") {
+       print "filename starts with dot: $_[0]\n";
+    }
     if ($file =~ /[^A-Za-z0-9\._-]/) {
        print "filename contains non-portable characters: $_[0]\n";
     }
@@ -59,7 +62,7 @@ if (open(MANIFEST, "MANIFEST")) {
            next;
        }
        while (m!/|\z!g) {
-           my ($dir, $edt) = eight_dot_three($`);
+           my ($dir, $edt) = eight_dot_three("$`");
            next unless defined $dir;
            ($dir, $edt) = map { lc } ($dir, $edt);
            push @{$dir{$dir}->{$edt}}, $_;
index 6b22fc6..5079e13 100644 (file)
@@ -2,7 +2,7 @@
 use strict;
 use Text::Wrap;
 $Text::Wrap::columns = 80;
-my ($committer, $patch, $log,$date);
+my ($committer, $patch, $author, $date);
 use Getopt::Long;
 
 my ($rank, $percentage, $cumulative, $reverse, $ta, @authors, %authors,
@@ -17,13 +17,14 @@ my $result = GetOptions ("rank" => \$rank,            # rank authors
 
 if (!$result or (($rank||0) + ($ta||0) + (@authors ? 1 : 0) != 1) or !@ARGV) {
   die <<"EOS";
-$0 --rank Changelogs                        # rank authors by patches
-$0 --acknowledged <authors file> Changelogs # Display unacknowledged authors
-$0 --thanks-applied Changelogs            # ranks committers
+$0 --rank changes                           # rank authors by patches
+$0 --acknowledged <authors file> changes    # Display unacknowledged authors
+$0 --thanks-applied changes                 # ranks committers of others' patches
 $0 --percentage ...                         # show rankings as percentages
 $0 --cumulative ...                         # show rankings cumulatively
 $0 --reverse ...                            # show rankings in reverse
 Specify stdin as - if needs be. Remember that option names can be abbreviated.
+Generate changes with git log --pretty=fuller rev1..rev2
 EOS
 }
 
@@ -145,14 +146,16 @@ if (@authors) {
 
 my @lines = split(/^commit\s*/sm,join('',<>));
 for ( @lines) {
-    next if m/^$/;
+  next if m/^$/;
   next if m/^(\S*?)^Merge:/ism; # skip merge commits
-  if (m/^(.*?)^Author:\s*(.*?)^Date:\s*(.*?)^(.*)$/gism) {
+if (m/^(.*?)^Author:\s*(.*?)^AuthorDate:\s*(.*?)^Commit:\s*(.*?)^(.*)$/gism) {
     # new patch
-    ($patch, $committer, $date,$log) = ($1,$2,$3,$4);
+    ($patch, $author, $date, $committer) = ($1,$2,$3,$4);
+    chomp($author);
+    unless ($author) { die $_}
     chomp($committer);
     unless ($committer) { die $_}
-    &process ($committer, $patch, $log);
+    &process($committer, $patch, $author);
 } else { die "XXX $_ did not match";}
 }
 
@@ -206,22 +209,17 @@ sub display_ordered {
 }
 
 sub process {
-  my ($committer, $patch, $log) = @_;
+  my ($committer, $patch, $author) = @_;
+  return unless $author;
   return unless $committer;
-  my @authors = $log =~ /From:\s+.*?([^"\@ \t\n<>]+\@[^"\@ \t\n<>]+)/gm;
 
-  if (@authors) {
-    foreach my $addr (@authors) {
+  $author = _raw_address($author);
+  $patchers{$author}++;
 
-      $patchers{_raw_address($addr)}++;
-    }
-    # print "$patch: @authors\n";
-    $committers{_raw_address($committer)}++;
-  } else {
-      # print "$patch: $committer\n";
-    # Not entirely fair as this means that the maint pumpking scores for
-    # everything intergrated that wasn't a third party patch in blead
-    $patchers{_raw_address($committer)}++;
+  $committer = _raw_address($committer);
+  if ($committer ne $author) {
+    # separate commit credit only if committing someone else's patch
+    $committers{$committer}++;
   }
 }
 
@@ -232,6 +230,8 @@ sub _raw_address {
     $addr =~ s/^\s*(.*)\s*<\s*(.*?)\s*>.*$/$2/ ;
      $real_name = $1;
     }
+    $addr =~ s/\[mailto://;
+    $addr =~ s/\]//;
     $addr = lc $addr;
     $addr = $map{$addr} || $addr;
     $addr =~ s/\\100/@/g;  # Sometimes, there are encoded @ signs in the git log.
@@ -451,6 +451,7 @@ david\100kineticode.com                 david\100wheeler.com
 +                                       david\100wheeler.net
 dennis\100booking.com                   dennis\100camel.ams6.corp.booking.com
 dev-perl\100pimb.org                    knew-p5p\100pimb.org
++                                       lists-p5p\100pimb.org
 djberg86\100attbi.com                   djberg96\100attbi.com
 domo\100computer.org                    shouldbedomo\100mac.com
 +                                       domo\100slipper.ip.lu
@@ -651,6 +652,7 @@ rmgiroux\100acm.org                     rmgiroux\100hotmail.com
 rmbarker\100cpan.org                    rmb1\100cise.npl.co.uk
 +                                       robin.barker\100npl.co.uk
 +                                       rmb\100cise.npl.co.uk
++                                       robin\100spade-ubuntu.(none)
 robertmay\100cpan.org                   rob\100themayfamily.me.uk
 roberto\100keltia.freenix.fr            roberto\100eurocontrol.fr
 robin\100cpan.org                       robin\100kitsite.com
index f118974..73a1357 100644 (file)
@@ -24,7 +24,7 @@ use lib 'Porting';
 use Maintainers;
 
 sub usage {
-die <<'EOF';
+die <<"EOF";
 usage: $0 [ -d -x ] source_dir1 source_dir2
 EOF
 }
index 43f2cdd..8170f7e 100644 (file)
@@ -46,11 +46,11 @@ ansi2knr=''
 aphostname=''
 api_revision='5'
 api_subversion='0'
-api_version='11'
-api_versionstring='5.11.0'
+api_version='13'
+api_versionstring='5.13.0'
 ar='ar'
-archlib='/opt/perl/lib/5.11.5/i686-linux-64int'
-archlibexp='/opt/perl/lib/5.11.5/i686-linux-64int'
+archlib='/opt/perl/lib/5.13.0/i686-linux-64int'
+archlibexp='/opt/perl/lib/5.13.0/i686-linux-64int'
 archname64='64int'
 archname='i686-linux-64int'
 archobjs=''
@@ -371,6 +371,8 @@ d_phostname='undef'
 d_pipe='define'
 d_poll='define'
 d_portable='define'
+d_prctl='define'
+d_prctl_set_name='define'
 d_printf_format_null='define'
 d_procselfexe='define'
 d_pseudofork='undef'
@@ -735,7 +737,7 @@ inc_version_list_init='0'
 incpath=''
 inews=''
 initialinstalllocation='/opt/perl/bin'
-installarchlib='/opt/perl/lib/5.11.5/i686-linux-64int'
+installarchlib='/opt/perl/lib/5.13.0/i686-linux-64int'
 installbin='/opt/perl/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -743,13 +745,13 @@ installman1dir='/opt/perl/man/man1'
 installman3dir='/opt/perl/man/man3'
 installprefix='/opt/perl'
 installprefixexp='/opt/perl'
-installprivlib='/opt/perl/lib/5.11.5'
+installprivlib='/opt/perl/lib/5.13.0'
 installscript='/opt/perl/bin'
-installsitearch='/opt/perl/lib/site_perl/5.11.5/i686-linux-64int'
+installsitearch='/opt/perl/lib/site_perl/5.13.0/i686-linux-64int'
 installsitebin='/opt/perl/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='/opt/perl/lib/site_perl/5.11.5'
+installsitelib='/opt/perl/lib/site_perl/5.13.0'
 installsiteman1dir='/opt/perl/man/man1'
 installsiteman3dir='/opt/perl/man/man3'
 installsitescript='/opt/perl/bin'
@@ -871,7 +873,7 @@ perl=''
 perl_patchlevel='34948'
 perladmin='yourname@yourhost.yourplace.com'
 perllibs='-lnsl -ldl -lm -lcrypt -lutil -lc'
-perlpath='/opt/perl/bin/perl5.11.5'
+perlpath='/opt/perl/bin/perl5.13.0'
 pg='pg'
 phostname=''
 pidtype='pid_t'
@@ -880,8 +882,8 @@ pmake=''
 pr=''
 prefix='/opt/perl'
 prefixexp='/opt/perl'
-privlib='/opt/perl/lib/5.11.5'
-privlibexp='/opt/perl/lib/5.11.5'
+privlib='/opt/perl/lib/5.13.0'
+privlibexp='/opt/perl/lib/5.13.0'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -947,17 +949,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, 64, 6, 17, 29, 31, 0'
 sig_size='69'
 signal_t='void'
-sitearch='/opt/perl/lib/site_perl/5.11.5/i686-linux-64int'
-sitearchexp='/opt/perl/lib/site_perl/5.11.5/i686-linux-64int'
+sitearch='/opt/perl/lib/site_perl/5.13.0/i686-linux-64int'
+sitearchexp='/opt/perl/lib/site_perl/5.13.0/i686-linux-64int'
 sitebin='/opt/perl/bin'
 sitebinexp='/opt/perl/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/opt/perl/lib/site_perl/5.11.5'
+sitelib='/opt/perl/lib/site_perl/5.13.0'
 sitelib_stem='/opt/perl/lib/site_perl'
-sitelibexp='/opt/perl/lib/site_perl/5.11.5'
+sitelibexp='/opt/perl/lib/site_perl/5.13.0'
 siteman1dir='/opt/perl/man/man1'
 siteman1direxp='/opt/perl/man/man1'
 siteman3dir='/opt/perl/man/man3'
@@ -981,7 +983,7 @@ srand48_r_proto='0'
 srandom_r_proto='0'
 src='.'
 ssizetype='ssize_t'
-startperl='#!/opt/perl/bin/perl5.11.5'
+startperl='#!/opt/perl/bin/perl5.13.0'
 startsh='#!/bin/sh'
 static_ext=' '
 stdchar='char'
@@ -994,7 +996,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='5'
+subversion='0'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1082,8 +1084,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.11.5'
-version_patchlevel_string='version 11 subversion 5'
+version='5.13.0'
+version_patchlevel_string='version 13 subversion 0'
 versiononly='define'
 vi=''
 voidflags='15'
@@ -1106,10 +1108,10 @@ config_arg7='-Duse64bitint'
 config_arg8='-Dusedevel'
 config_arg9='-dE'
 PERL_REVISION=5
-PERL_VERSION=11
-PERL_SUBVERSION=5
+PERL_VERSION=13
+PERL_SUBVERSION=0
 PERL_API_REVISION=5
-PERL_API_VERSION=11
+PERL_API_VERSION=13
 PERL_API_SUBVERSION=0
 PERL_PATCHLEVEL=34948
 PERL_CONFIG_SH=true
index 147636e..5279475 100644 (file)
  *     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 "/pro/lib/perl5/5.11.5/i686-linux-64int"               /**/
-#define ARCHLIB_EXP "/pro/lib/perl5/5.11.5/i686-linux-64int"           /**/
+#define ARCHLIB "/pro/lib/perl5/5.13.0/i686-linux-64int"               /**/
+#define ARCHLIB_EXP "/pro/lib/perl5/5.13.0/i686-linux-64int"           /**/
 
 /* ARCHNAME:
  *     This symbol holds a string representing the architecture name.
  *     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 "/pro/lib/perl5/5.11.5"                /**/
-#define PRIVLIB_EXP "/pro/lib/perl5/5.11.5"            /**/
+#define PRIVLIB "/pro/lib/perl5/5.13.0"                /**/
+#define PRIVLIB_EXP "/pro/lib/perl5/5.13.0"            /**/
 
 /* CAN_PROTOTYPE:
  *     If defined, this macro indicates that the C compiler can handle
  *     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 "/pro/lib/perl5/site_perl/5.11.5/i686-linux-64int"            /**/
-#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.11.5/i686-linux-64int"                /**/
+#define SITEARCH "/pro/lib/perl5/site_perl/5.13.0/i686-linux-64int"            /**/
+#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.13.0/i686-linux-64int"                /**/
 
 /* SITELIB:
  *     This symbol contains the name of the private library for this package.
  *     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 "/pro/lib/perl5/site_perl/5.11.5"              /**/
-#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.11.5"          /**/
+#define SITELIB "/pro/lib/perl5/site_perl/5.13.0"              /**/
+#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.13.0"          /**/
 #define SITELIB_STEM "/pro/lib/perl5/site_perl"                /**/
 
 /* Size_t_size:
  *     script to make sure (one hopes) that it runs with perl and not
  *     some shell.
  */
-#define STARTPERL "#!/pro/bin/perl5.11.5"              /**/
+#define STARTPERL "#!/pro/bin/perl5.13.0"              /**/
 
 /* HAS_STDIO_STREAM_ARRAY:
  *     This symbol, if defined, tells that there is an array
diff --git a/Porting/corelist-diff b/Porting/corelist-diff
new file mode 100644 (file)
index 0000000..7563171
--- /dev/null
@@ -0,0 +1,26 @@
+use strict;
+use 5.010;
+use lib 'dist/Module-CoreList/lib';
+
+use List::MoreUtils qw(uniq);
+use Module::CoreList;
+use Text::Table;
+
+my $old_ver = "5.010000";
+my $new_ver = "5.011005";
+
+my $old = $Module::CoreList::version{ $old_ver };
+my $new = $Module::CoreList::version{ $new_ver };
+
+my $table = Text::Table->new('perl', \' | ', $old_ver, \' | ', $new_ver);
+
+for my $lib (uniq sort (keys %$old, keys %$new)) {
+  my $old = exists $old->{ $lib } ? $old->{ $lib } // '(undef)' : '(absent)';
+  my $new = exists $new->{ $lib } ? $new->{ $lib } // '(undef)' : '(absent)';
+  
+  next if $old eq $new;
+
+  $table->add($lib, $old, $new);
+}
+
+print $table;
index c0aae08..d7bcd2a 100755 (executable)
@@ -57,13 +57,13 @@ my @versions = sort keys %$corelist;
 my ($old, $new) = @ARGV;
 $old ||= $versions[-2];
 $new ||= $versions[-1];
-
 $deprecated = $Module::CoreList::deprecated{$new};
 
 my (@new,@deprecated,@removed,@pragmas,@modules);
 
 # %Modules defines what is currently in core
 for my $k ( keys %Modules ) {
+    warn "Considering $k";
   next unless exists $corelist->{$new}{$k};
   my $old_ver = $corelist->{$old}{$k};
   my $new_ver = $corelist->{$new}{$k};
index 5a55095..6cae763 100644 (file)
@@ -302,11 +302,11 @@ The list of people to thank goes here.
 
 You can find the list of committers and authors by:
 
-  % git log v5.11.1..HEAD | perl -nlwe '$seen{$1}++ if /^Author: ([^<]*)/; END { print for sort keys %seen }'
+  % git log --pretty='format:%an' v5.11.1..HEAD | sort | uniq
 
 And how many files where changed by:
 
-  % git diff v5.11.1..HEAD | diffstat
+  % git diff --stat=200,200 v5.11.1..HEAD
 
 =item Reporting Bugs
 
index 72c66d2..532ee85 100644 (file)
@@ -16,8 +16,10 @@ die "$0: will not override $file, delete it first.\n" if -e $file;
 use Maintainers qw(%Modules get_module_files get_module_pat);
 
 my @CPAN  = grep { $Modules{$_}{CPAN} } keys %Modules;
-my @files = map { get_module_files($_) } @CPAN;
-my @dirs  = ('cpan', grep { -d $_ && $_  !~ /^cpan/ } map { get_module_pat($_) } @CPAN);
+my @files = ('lib/unicore/mktables', 'TestInit.pm',
+            'Porting/Maintainers.pm', 'Porting/perldelta_template.pod',
+            map { get_module_files($_) } @CPAN);
+my @dirs  = ('cpan', 'win32', grep { -d $_ && $_  !~ /^cpan/ } map { get_module_pat($_) } @CPAN);
 
 my %dirs;
 @dirs{@dirs} = ();
index c9d9986..1bf8c57 100644 (file)
@@ -1,3 +1,5 @@
+=encoding utf8
+
 =head1 NAME
 
 [ this is a template for a new perldelta file. Any text flagged as
index 566171e..a07268a 100644 (file)
@@ -255,7 +255,7 @@ I<You MAY SKIP this step for SNAPSHOT>
 
 Get perldelta in a mostly finished state.
 
-Peruse  F<Porting/how_to_write_a_perldelta.pod>, and try to make sure that
+Read  F<Porting/how_to_write_a_perldelta.pod>, and try to make sure that
 every section it lists is, if necessary, populated and complete. Copy
 edit the whole document.
 
@@ -306,8 +306,8 @@ this line in README.vms needs special handling:
 Commit your changes:
 
     $ git st
-       $ git diff
-         B<review the delta carefully>
+    $ git diff
+    B<review the delta carefully>
 
     $ git commit -a -m 'Bump the perl version in various places for 5.x.y'
 
@@ -361,11 +361,19 @@ XXX think of other configurations that need testing.
 
 I<You MAY SKIP this step for SNAPSHOT>
 
+L<perlport> has a section currently named I<Supported Platforms> that
+indicates which platforms are known to build in the current release.
+If necessary update the list and the indicated version number.
+
+=item *
+
+I<You MAY SKIP this step for SNAPSHOT>
+
 Update F<AUTHORS>, using the C<Porting/checkAUTHORS.pl> script, and if
 necessary, update the script to include new alias mappings for porters
 already in F<AUTHORS>
 
-       $ git log | perl Porting/checkAUTHORS.pl --acknowledged AUTHORS -
+    $ git log --pretty=fuller | perl Porting/checkAUTHORS.pl --acknowledged AUTHORS -
 
 =back
 
@@ -947,14 +955,18 @@ all the C<d> (deferred) flags to C<.> (needs review).
 
 I<You MUST SKIP this step for RC, BLEAD>
 
-If this was a major release (5.x.0), then create a new maint branch 
-based on the commit tagged as the current release and bump the version 
-in the blead branch in git, e.g. 5.12.0 to 5.13.0.
+If this was the first release of a new maint series, (5.x.0 where x is
+even), then create a new maint branch based on the commit tagged as
+the current release and bump the version in the blead branch in git,
+e.g. 5.12.0 to 5.13.0.
 
 [ XXX probably lots more stuff to do, including perldelta,
 C<lib/feature.pm> ]
 
-XXX need a git recipe
+Assuming you're using git 1.7.x or newer:
+
+    $ git checkout -b maint-5.12
+    $ git push origin -u maint-5.12
 
 =item *
 
@@ -990,6 +1002,12 @@ e.g.
 
 =item *
 
+If necessary, send an email to C<perlbug-admin at perl.org> requesting
+that new version numbers be added to the RT fields C<Perl Version> and
+C<Fixed In>.
+
+=item *
+
 I<You MUST RETIRE to your preferred PUB, CAFE or SEASIDE VILLA for some
 much-needed rest and relaxation>.
 
index 06df412..45a6fcc 100644 (file)
@@ -14,22 +14,23 @@ you should reset the version numbers to the next blead series.
 
 =head2 2009
 
- October 2       -  5.11.0  -   Jesse Vincent
- October 20      -  5.11.1  -   Jesse Vincent
- November 20     -  5.11.2  -   Leon Brocard
- December 20     -  5.11.3  -   Jesse Vincent
+ October 2       -   Jesse Vincent
+ October 20      -   Jesse Vincent
+ November 20     -   Leon Brocard
+ December 20     -   Jesse Vincent
 
 =head2 2010
 
- January 20      -  5.11.4  -   Ricardo Signes
- February 20     -  5.11.5  -   Steve Hay
- March 20        -  5.11.6  -   Ask Bjørn Hansen
- April 20        -  5.11.7  -   Leon Brocard
- May 20          -  5.11.8  -   Ricardo Signes
- June 20         -  5.11.9  -   Philippe Bruhat
- July 20         -  5.11.10 -   Matt Trout
- August 20       -  5.11.11 -   David Golden
- September 20    -  5.11.12 -   Steve Hay
+ January 20      -   Ricardo Signes
+ February 20     -   Steve Hay
+ March 20        -   Ask Bjørn Hansen
+ April 20        -   Leon Brocard
+ May 20          -   Ricardo Signes
+ June 20         -   Matt Trout
+ July 20         -   David Golden
+ August 20       -   Florian Ragwitz
+ September 20    -   Steve Hay
+ October 20      -   Tatsuhiko Miyagawa
 
 =head1 VICTIMS
 
@@ -46,6 +47,8 @@ Ask Bjørn Hansen <F<ask@perl.org>>
 David Golden <F<dagolden@cpan.org>>
 Philippe Bruhat <F<book@cpan.org>>
 Matt Trout <F<mst@shadowcat.co.uk>>
+Florian Ragwitz <F<rafl@debian.org>>
+Tatsuhiko Miyagawa <F<miyagawa@bulknews.net>>
 
 =head2 Reticent victims
 
diff --git a/README b/README
index de54396..0f0b3aa 100644 (file)
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
-Perl is Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others.
-All rights reserved.
+Perl is Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by Larry Wall
+and others.  All rights reserved.
 
 
 
@@ -22,7 +22,7 @@ third-party modules.
 For an introduction to the language's features, see pod/perlintro.pod.
 
 For a discussion of the important changes in this release, see
-pod/perl5116delta.pod.  (This will also be installed as perldelta.pod).
+pod/perl5131delta.pod.  (This will also be installed as perldelta.pod).
 
 There are also many Perl books available, covering a wide variety of topics,
 from various publishers.  See pod/perlbook.pod for more information.
index 999d9ad..5e23bd2 100644 (file)
@@ -4,22 +4,23 @@ designed to be readable as is.
 
 =head1 NAME
 
-README.aix - Perl version 5 on IBM Unix (AIX) systems
+README.aix - Perl version 5 on IBM AIX (UNIX) systems
 
 =head1 DESCRIPTION
 
-This document describes various features of IBM's Unix operating
-system (AIX) that will affect how Perl version 5 (hereafter just Perl)
+This document describes various features of IBM's UNIX operating
+system AIX that will affect how Perl version 5 (hereafter just Perl)
 is compiled and/or runs.
 
 =head2 Compiling Perl 5 on AIX
 
-For information on compilers on older versions of AIX, see L<Compiling 
+For information on compilers on older versions of AIX, see L<Compiling
 Perl 5 on older AIX versions up to 4.3.3>.
 
 When compiling Perl, you must use an ANSI C compiler. AIX does not ship
-an ANSI compliant C-compiler with AIX by default, but binary builds of
-gcc for AIX are widely available.
+an ANSI compliant C compiler with AIX by default, but binary builds of
+gcc for AIX are widely available. A version of gcc is also included in
+the AIX Toolbox which is shipped with AIX.
 
 =head2 Supported Compilers
 
@@ -32,14 +33,15 @@ like DBD::Oracle, it is better to use the _r version of the compiler.
 This will not build a threaded Perl, but a thread-enabled Perl. See
 also L<Threaded Perl> later on.
 
-As of writing (2009-08) only the IBM XL C for AIX or XL C/C++ for AIX
-compiler is supported by IBM on AIX 5L/6.1.
+As of writing (2010-03) only the I<IBM XL C for AIX> or I<IBM XL C/C++
+for AIX> compiler is supported by IBM on AIX 5L/6.1.
 
-The following compiler versions are supported by IBM:
+The following compiler versions are currently supported by IBM:
 
-XL C and XL C/C++ V7, V8, V9, V10
+    IBM XL C and IBM XL C/C++ V8, V9, V10
 
-The XL C for AIX is integrated in the XL C/C++ for AIX compiler.
+The XL C for AIX is integrated in the XL C/C++ for AIX compiler and
+therefore also supported.
 
 If you choose XL C/C++ V9 you need APAR IZ35785 installed
 otherwise the integrated SDBM_File do not compile correctly due
@@ -65,43 +67,47 @@ system then Perl will not work. This library contains the header files
 /opt/freeware/include/gdbm/dbm.h|ndbm.h which conflict with the AIX
 system versions. The lib gdbm will be automatically removed from the
 wanted libraries if the presence of one of these two header files is
-detected. If you want to bild Perl with GDBM support then please install
-at leas gdbm-devel-1.8.3-5 (or higher).
-
-=head2 Perl 5.10 was successfully compiled and tested on:
-
-    AIX Level                 | Compiler Level          | w th | w/o th
-    --------------------------+-------------------------+------+-------
-    5.1 TL9 32 bit            | XL C/C++ V7             | OK   | OK
-    5.1 TL9 32 bit            | gcc 3.2.2               | OK   | OK
-    5.1 TL9 64 bit            | XL C/C++ V7             | OK   | OK
-    5.2 TL10 32 bit           | XL C/C++ V8             | OK   | OK
-    5.2 TL8 64 bit            | VA C/C++ V6             | OK   | OK
-    5.2 TL10 64 bit           | XL C/C++ V8             | OK   | OK
-    5.3 TL7 32 bit            | XL C/C++ V9 + IZ35785   | OK   | OK
-    5.3 TL7 32 bit            | gcc 4.2.4               | OK   | OK
-    5.3 TL7 64 bit            | XL C/C++ V9 + IZ35785   | OK   | OK
-    6.1 TL1 32 bit            | XL C/C++ V10            | OK   | OK
-    6.1 TL1 64 bit + IZ39077  | XL C/C++ V10            | OK   | OK
-
-    w th   = with thread
-    w/o th = without thread
+detected. If you want to build Perl with GDBM support then please install
+at least gdbm-devel-1.8.3-5 (or higher).
+
+=head2 Perl 5.12 was successfully compiled and tested on:
+
+    AIX Level            | Compiler Level          | w th | w/o th
+    ---------------------+-------------------------+------+-------
+    5.1 TL9 32 bit       | XL C/C++ V7             | OK   | OK
+    5.1 TL9 64 bit       | XL C/C++ V7             | OK   | OK
+    5.2 TL10 SP8 32 bit  | XL C/C++ V8             | OK   | OK
+    5.2 TL10 SP8 32 bit  | gcc 3.2.2               | OK   | OK
+    5.2 TL10 SP8 64 bit  | XL C/C++ V8             | OK   | OK
+    5.3 TL8 SP8 32 bit   | XL C/C++ V9 + IZ35785   | OK   | OK
+    5.3 TL8 SP8 32 bit   | gcc 4.2.4               | OK   | OK
+    5.3 TL8 SP8 64 bit   | XL C/C++ V9 + IZ35785   | OK   | OK
+    6.1 TL1 SP7 32 bit   | XL C/C++ V10            | OK   | OK
+    6.1 TL1 SP7 64 bit   | XL C/C++ V10            | OK   | OK
+
+    w th   = with thread support
+    w/o th = without thread support
     OK     = tested
 
-Successfully tested means that all "make test" runs finish with a
+Successfully tested means that all "make test" runs finish with a
 result of 100% OK. All tests were conducted with -Duseshrplib set.
 
+All tests were conducted on the oldest supported AIX technology level
+with the latest support package applied. If the tested AIX version is
+out of support (AIX 4.3.3, 5.1, 5.2) then the last available support
+level was used.
+
 =head2 Building Dynamic Extensions on AIX
 
-Starting from Perl 5.7.2 (and consequently 5.8.x / 5.10.x) and AIX 4.3 
-or newer Perl uses the AIX native dynamic loading interface in the so 
-called runtime linking mode instead of the emulated interface that was 
-used in Perl releases 5.6.1 and earlier or, for AIX releases 4.2 and 
-earlier. This change does break backward compatibility with compiled 
-modules from earlier Perl releases. The change was made to make Perl 
-more compliant with other applications like Apache/mod_perl which are 
-using the AIX native interface. This change also enables the use of 
-C++ code with static constructors and destructors in Perl extensions, 
+Starting from Perl 5.7.2 (and consequently 5.8.x / 5.10.x / 5.12.x)
+and AIX 4.3 or newer Perl uses the AIX native dynamic loading interface
+in the so called runtime linking mode instead of the emulated interface
+that was used in Perl releases 5.6.1 and earlier or, for AIX releases
+4.2 and earlier. This change does break backward compatibility with
+compiled modules from earlier Perl releases. The change was made to make
+Perl more compliant with other applications like Apache/mod_perl which are
+using the AIX native interface. This change also enables the use of
+C++ code with static constructors and destructors in Perl extensions,
 which was not possible using the emulated interface.
 
 It is highly recommended to use the new interface.
@@ -115,20 +121,22 @@ Should yield no problems.
 Should yield no problems with AIX 5.1 / 5.2 / 5.3 and 6.1.
 
 IBM uses the AIX system Perl (V5.6.0 on AIX 5.1 and V5.8.2 on
-AIX 5.2 / 5.3 and 6.1) for some AIX
-system scripts. If you switch the links in /usr/bin from the
+AIX 5.2 / 5.3 and 6.1; V5.8.8 on AIX 5.3 TL11 and AIX 6.1 TL4) for
+some AIX system scripts. If you switch the links in /usr/bin from the
 AIX system Perl (/usr/opt/perl5) to the newly build Perl then you
-get the same features as with the IBM AIX system Perl if the
-threaded options are used.
+get the same features as with the IBM AIX system Perl if the threaded
+options are used.
 
 The threaded Perl build works also on AIX 5.1 but the IBM Perl
 build (Perl v5.6.0) is not threaded on AIX 5.1.
 
+Perl 5.12 is not compatible with the IBM fileset perl.libext.
+
 =head2 64-bit Perl
 
 If your AIX system is installed with 64-bit support, you can expect 64-bit
 configurations to work. If you want to use 64-bit Perl on AIX 6.1
-you need a APAR for a libc.a bug which affects (n)dbm_XXX functions.
+you need an APAR for a libc.a bug which affects (n)dbm_XXX functions.
 The APAR number for this problem is IZ39077.
 
 If you need more memory (larger data segment) for your Perl programs you
@@ -139,7 +147,7 @@ can set:
         data = -1               (default is 262144 * 512 byte)
 
 With the default setting the size is limited to 128MB.
-The -1 removes this limit. If the "make test" fails please change 
+The -1 removes this limit. If the "make test" fails please change
 your /etc/security/limits as stated above.
 
 =head2 Recommended Options AIX 5.1/5.2/5.3 and 6.1 (threaded/32-bit)
@@ -192,7 +200,7 @@ passes all make tests in 64-bit mode.
 
 =head2 Recommended Options AIX 5.1/5.2/5.3 and 6.1(64-bit)
 
-With the following options you get a Perl version which passes all 
+With the following options you get a Perl version which passes all
 make tests in 64-bit mode. 
 
     export OBJECT_MODE=64 / setenv OBJECT_MODE 64 (depending on your shell)
@@ -205,10 +213,10 @@ make tests in 64-bit mode.
     -Duse64bitall \
     -Dprefix=/usr/opt/perl5_64
 
-The -Dprefix option will install Perl in a directory parallel to the 
+The -Dprefix option will install Perl in a directory parallel to the
 IBM AIX system Perl installation.
 
-If you choose gcc to compile 64-bit Perl then you need to add the 
+If you choose gcc to compile 64-bit Perl then you need to add the
 following option:
 
     -Dcc='gcc -maix64'
@@ -216,9 +224,9 @@ following option:
 
 =head2 Compiling Perl 5 on older AIX versions up to 4.3.3
 
-Due to the fact that AIX 4.3.3 reached end-of-service in December 31, 
-2003 this information  is provided as is. The Perl versions prior to 
-Perl 5.8.9 could be compiled on AIX up to 4.3.3 with the following 
+Due to the fact that AIX 4.3.3 reached end-of-service in December 31,
+2003 this information is provided as is. The Perl versions prior to
+Perl 5.8.9 could be compiled on AIX up to 4.3.3 with the following
 settings (your mileage may vary):
 
 When compiling Perl, you must use an ANSI C compiler. AIX does not ship
@@ -279,7 +287,7 @@ cannot be built without bos.adt.syscalls and bos.adt.libm installed
     bos.adt.syscalls  5.1.0.36  COMMITTED  System Calls Application
     #
 
-=head2 Building Dynamic Extensions on AIX
+=head2 Building Dynamic Extensions on AIX E<lt> 5L
 
 AIX supports dynamically loadable objects as well as shared libraries.
 Shared libraries by convention end with the suffix .a, which is a bit
@@ -427,18 +435,19 @@ Linux compatibility packages, available here:
 
   http://www.ibm.com/servers/aix/products/aixos/linux/
 
-=head2 Using Large Files with Perl
+=head2 Using Large Files with Perl E<lt> 5L
 
 Should yield no problems.
 
-=head2 Threaded Perl
+=head2 Threaded Perl E<lt> 5L
 
 Threads seem to work OK, though at the moment not all tests pass when
 threads are used in combination with 64-bit configurations.
 
 You may get a warning when doing a threaded build:
 
-  "pp_sys.c", line 4640.39: 1506-280 (W) Function argument assignment between types "unsigned char*" and "const void*" is not allowed.
+  "pp_sys.c", line 4640.39: 1506-280 (W) Function argument assignment 
+  between types "unsigned char*" and "const void*" is not allowed.
 
 The exact line number may vary, but if the warning (W) comes from a line
 line this
@@ -450,7 +459,7 @@ is caused by the reentrant variant of gethostbyaddr() having a slightly
 different prototype than its non-reentrant variant, but the difference
 is not really significant here.
 
-=head2 64-bit Perl
+=head2 64-bit Perl E<lt> 5L
 
 If your AIX is installed with 64-bit support, you can expect 64-bit
 configurations to work. In combination with threads some tests might
@@ -473,6 +482,6 @@ Rainer Tammer <tammer@tammer.net>
 
 =head1 DATE
 
-Version 0.0.11: 18 Jan 2010
+Version 5.13.0 / 2010-03-20
 
 =cut
index 4dccfcd..f8ab9a7 100644 (file)
@@ -22,9 +22,9 @@ The build procedure is completely standard:
 Make perl executable and create a symlink for libperl:
 
   chmod a+x /boot/common/bin/perl
-  cd /boot/common/lib; ln -s perl5/5.11.5/BePC-haiku/CORE/libperl.so .
+  cd /boot/common/lib; ln -s perl5/5.13.0/BePC-haiku/CORE/libperl.so .
 
-Replace C<5.11.5> with your respective version of Perl.
+Replace C<5.13.0> with your respective version of Perl.
 
 =head1 KNOWN PROBLEMS
 
index f8288a6..b5e099b 100644 (file)
@@ -618,7 +618,7 @@ C<set PERLLIB_PREFIX> in F<Config.sys>, see L<"PERLLIB_PREFIX">.
 
 =item Additional Perl modules
 
-  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.11.5/
+  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.13.0/
 
 Same remark as above applies.  Additionally, if this directory is not
 one of directories on @INC (and @INC is influenced by C<PERLLIB_PREFIX>), you
index 3ae8d2e..fe26350 100644 (file)
@@ -154,12 +154,12 @@ recent versions of vmstar (e.g. V3.4 or later).  Contrary to advice
 provided with previous versions of Perl, do I<not> use the ODS-2
 compatability qualifier.  Instead, use a command like the following:
 
-    vmstar -xvf perl-5^.11^.5.tar
+    vmstar -xvf perl-5^.13^.0.tar
 
 Then rename the top-level source directory like so:
 
-    set security/protection=(o:rwed) perl-5^.11^.5.dir
-    rename perl-5^.11^.5.dir perl-5_11_5.dir
+    set security/protection=(o:rwed) perl-5^.13^.0.dir
+    rename perl-5^.13^.0.dir perl-5_12_0.dir
 
 The reason for this last step is that while filenames with multiple dots
 are generally supported by Perl on VMS, I<directory> names with multiple
index 2a3a5b4..5679a03 100644 (file)
@@ -75,10 +75,12 @@ The MS Platform SDK can be downloaded from http://www.microsoft.com/.
 The MinGW64 compiler is available at http://sourceforge.net/projects/mingw-w64.
 The latter is actually a cross-compiler targeting Win64. There's also a trimmed
 down compiler (no java, or gfortran) suitable for building perl available at:
-http://svn.ali.as/cpan/users/kmx/strawberry_gcc-toolchain/
+http://strawberryperl.com/package/kmx/64_gcctoolchain/mingw64-w64-20100123-kmx-v2.zip
 
 NOTE: If you're using a 32-bit compiler to build perl on a 64-bit Windows
 operating system, then you should set the WIN64 environment variable to "undef".
+Also, the trimmed down compiler only passes tests when USE_ITHREADS *= define
+(as opposed to undef) and when the CFG *= Debug line is commented out.
 
 This port fully supports MakeMaker (the set of modules that
 is used to build extensions to perl).  Therefore, you should be
@@ -458,7 +460,7 @@ Be sure to read the instructions near the top of the makefiles carefully.
 Type "dmake" (or "nmake" if you are using that make).
 
 This should build everything.  Specifically, it will create perl.exe,
-perl511.dll at the perl toplevel, and various other extension dll's
+perl513.dll at the perl toplevel, and various other extension dll's
 under the lib\auto directory.  If the build fails for any reason, make
 sure you have done the previous steps correctly.
 
diff --git a/XSUB.h b/XSUB.h
index f23df37..06cb1c3 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -507,6 +507,7 @@ Rethrows a previously caught exception.  See L<perlguts/"Exception Handling">.
 #    define ferror             PerlSIO_ferror
 #    define clearerr           PerlSIO_clearerr
 #    define getc               PerlSIO_getc
+#    define fgets              PerlSIO_fgets
 #    define fputc              PerlSIO_fputc
 #    define fputs              PerlSIO_fputs
 #    define fflush             PerlSIO_fflush
index a88af9c..2fc0397 100644 (file)
@@ -322,7 +322,7 @@ Updated to be autogenerated from comments in the source by Benjamin Stuhl.
 
 =head1 SEE ALSO
 
-perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
+L<perlguts>, L<perlxs>, L<perlxstut>, L<perlintern>
 
 _EOE_
 
@@ -352,6 +352,6 @@ document their functions.
 
 =head1 SEE ALSO
 
-perlguts(1), perlapi(1)
+L<perlguts>, L<perlapi>
 
 END
diff --git a/av.c b/av.c
index a4d6ea2..b93a6d5 100644 (file)
--- a/av.c
+++ b/av.c
@@ -74,19 +74,10 @@ Perl_av_extend(pTHX_ AV *av, I32 key)
 
     mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied);
     if (mg) {
-       dSP;
-       ENTER;
-       SAVETMPS;
-       PUSHSTACKi(PERLSI_MAGIC);
-       PUSHMARK(SP);
-       EXTEND(SP,2);
-       PUSHs(SvTIED_obj(MUTABLE_SV(av), mg));
-       mPUSHi(key + 1);
-        PUTBACK;
-       call_method("EXTEND", G_SCALAR|G_DISCARD);
-       POPSTACK;
-       FREETMPS;
-       LEAVE;
+       SV *arg1 = sv_newmortal();
+       sv_setiv(arg1, (IV)(key + 1));
+       Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "EXTEND", G_DISCARD, 1,
+                           arg1);
        return;
     }
     if (key > AvMAX(av)) {
@@ -245,6 +236,8 @@ Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
             sv = sv_newmortal();
            sv_upgrade(sv, SVt_PVLV);
            mg_copy(MUTABLE_SV(av), sv, 0, key);
+           if (!tied_magic) /* for regdata, force leavesub to make copies */
+               SvTEMP_off(sv);
            LvTYPE(sv) = 't';
            LvTARG(sv) = sv; /* fake (SV**) */
            return &(LvTARG(sv));
@@ -552,17 +545,8 @@ Perl_av_push(pTHX_ register AV *av, SV *val)
        Perl_croak(aTHX_ "%s", PL_no_modify);
 
     if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
-       dSP;
-       PUSHSTACKi(PERLSI_MAGIC);
-       PUSHMARK(SP);
-       EXTEND(SP,2);
-       PUSHs(SvTIED_obj(MUTABLE_SV(av), mg));
-       PUSHs(val);
-       PUTBACK;
-       ENTER;
-       call_method("PUSH", G_SCALAR|G_DISCARD);
-       LEAVE;
-       POPSTACK;
+       Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "PUSH", G_DISCARD, 1,
+                           val);
        return;
     }
     av_store(av,AvFILLp(av)+1,val);
@@ -590,19 +574,9 @@ Perl_av_pop(pTHX_ register AV *av)
     if (SvREADONLY(av))
        Perl_croak(aTHX_ "%s", PL_no_modify);
     if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
-       dSP;    
-       PUSHSTACKi(PERLSI_MAGIC);
-       PUSHMARK(SP);
-       XPUSHs(SvTIED_obj(MUTABLE_SV(av), mg));
-       PUTBACK;
-       ENTER;
-       if (call_method("POP", G_SCALAR)) {
-           retval = newSVsv(*PL_stack_sp--);    
-       } else {    
-           retval = &PL_sv_undef;
-       }
-       LEAVE;
-       POPSTACK;
+       retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "POP", 0, 0);
+       if (retval)
+           retval = newSVsv(retval);
        return retval;
     }
     if (AvFILL(av) < 0)
@@ -660,19 +634,8 @@ Perl_av_unshift(pTHX_ register AV *av, register I32 num)
        Perl_croak(aTHX_ "%s", PL_no_modify);
 
     if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
-       dSP;
-       PUSHSTACKi(PERLSI_MAGIC);
-       PUSHMARK(SP);
-       EXTEND(SP,1+num);
-       PUSHs(SvTIED_obj(MUTABLE_SV(av), mg));
-       while (num-- > 0) {
-           PUSHs(&PL_sv_undef);
-       }
-       PUTBACK;
-       ENTER;
-       call_method("UNSHIFT", G_SCALAR|G_DISCARD);
-       LEAVE;
-       POPSTACK;
+       Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "UNSHIFT",
+                           G_DISCARD | G_UNDEF_FILL, num);
        return;
     }
 
@@ -732,19 +695,9 @@ Perl_av_shift(pTHX_ register AV *av)
     if (SvREADONLY(av))
        Perl_croak(aTHX_ "%s", PL_no_modify);
     if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
-       dSP;
-       PUSHSTACKi(PERLSI_MAGIC);
-       PUSHMARK(SP);
-       XPUSHs(SvTIED_obj(MUTABLE_SV(av), mg));
-       PUTBACK;
-       ENTER;
-       if (call_method("SHIFT", G_SCALAR)) {
-           retval = newSVsv(*PL_stack_sp--);            
-       } else {    
-           retval = &PL_sv_undef;
-       }     
-       LEAVE;
-       POPSTACK;
+       retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "SHIFT", 0, 0);
+       if (retval)
+           retval = newSVsv(retval);
        return retval;
     }
     if (AvFILL(av) < 0)
@@ -804,19 +757,10 @@ Perl_av_fill(pTHX_ register AV *av, I32 fill)
     if (fill < 0)
        fill = -1;
     if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
-       dSP;            
-       ENTER;
-       SAVETMPS;
-       PUSHSTACKi(PERLSI_MAGIC);
-       PUSHMARK(SP);
-       EXTEND(SP,2);
-       PUSHs(SvTIED_obj(MUTABLE_SV(av), mg));
-       mPUSHi(fill + 1);
-       PUTBACK;
-       call_method("STORESIZE", G_SCALAR|G_DISCARD);
-       POPSTACK;
-       FREETMPS;
-       LEAVE;
+       SV *arg1 = sv_newmortal();
+       sv_setiv(arg1, (IV)(fill + 1));
+       Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "STORESIZE", G_DISCARD,
+                           1, arg1);
        return;
     }
     if (fill <= AvMAX(av)) {
@@ -977,7 +921,7 @@ Perl_av_exists(pTHX_ AV *av, I32 key)
             mg = mg_find(sv, PERL_MAGIC_tiedelem);
             if (mg) {
                 magic_existspack(sv, mg);
-                return (bool)SvTRUE(sv);
+                return cBOOL(SvTRUE(sv));
             }
 
         }
index 8392c60..eedc734 100755 (executable)
@@ -1185,6 +1185,26 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_ctime_r HAS_CTIME_R           /**/
 #define CTIME_R_PROTO $ctime_r_proto      /**/
 
+/* SETUID_SCRIPTS_ARE_SECURE_NOW:
+ *     This symbol, if defined, indicates that the bug that prevents
+ *     setuid scripts from being secure is not present in this kernel.
+ */
+/* DOSUID:
+ *     This symbol, if defined, indicates that the C program should
+ *     check the script that it is executing for setuid/setgid bits, and
+ *     attempt to emulate setuid/setgid on systems that have disabled
+ *     setuid #! scripts because the kernel can't do it securely.
+ *     It is up to the package designer to make sure that this emulation
+ *     is done securely.  Among other things, it should do an fstat on
+ *     the script it just opened to make sure it really is a setuid/setgid
+ *     script, it should make sure the arguments passed correspond exactly
+ *     to the argument on the #! line, and it should not trust any
+ *     subprocesses to which it must pass the filename rather than the
+ *     file descriptor of the script to be executed.
+ */
+#$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW     /**/
+#$d_dosuid DOSUID              /**/
+
 /* HAS_DRAND48_R:
  *     This symbol, if defined, indicates that the drand48_r routine
  *     is available to drand48 re-entrantly.
@@ -3309,26 +3329,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$ebcdic       EBCDIC          /**/
 
-/* SETUID_SCRIPTS_ARE_SECURE_NOW:
- *     This symbol, if defined, indicates that the bug that prevents
- *     setuid scripts from being secure is not present in this kernel.
- */
-/* DOSUID:
- *     This symbol, if defined, indicates that the C program should
- *     check the script that it is executing for setuid/setgid bits, and
- *     attempt to emulate setuid/setgid on systems that have disabled
- *     setuid #! scripts because the kernel can't do it securely.
- *     It is up to the package designer to make sure that this emulation
- *     is done securely.  Among other things, it should do an fstat on
- *     the script it just opened to make sure it really is a setuid/setgid
- *     script, it should make sure the arguments passed correspond exactly
- *     to the argument on the #! line, and it should not trust any
- *     subprocesses to which it must pass the filename rather than the
- *     file descriptor of the script to be executed.
- */
-#$d_suidsafe SETUID_SCRIPTS_ARE_SECURE_NOW     /**/
-#$d_dosuid DOSUID              /**/
-
 /* PERL_USE_DEVEL:
  *     This symbol, if defined, indicates that Perl was configured with
  *     -Dusedevel, to enable development features.  This should not be
@@ -3807,6 +3807,17 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_off64_t    HAS_OFF64_T             /**/
 
+/* HAS_PRCTL:
+ *     This symbol, if defined, indicates that the prctl routine is
+ *     available to set process title.
+ */
+/* HAS_PRCTL_SET_NAME:
+ *     This symbol, if defined, indicates that the prctl routine is
+ *     available to set process title and supports PR_SET_NAME.
+ */
+#$d_prctl HAS_PRCTL            /**/
+#$d_prctl_set_name HAS_PRCTL_SET_NAME          /**/
+
 /* HAS_PROCSELFEXE:
  *     This symbol is defined if PROCSELFEXE_PATH is a symlink
  *     to the absolute pathname of the executing program.
index 55edafb..721b889 100644 (file)
@@ -63,6 +63,7 @@ $ ccflags = ""
 $ static_ext = ""
 $ dynamic_ext = ""
 $ nonxs_ext = ""
+$ nonxs_ext2 = ""
 $ vms_default_directory_name = F$ENVIRONMENT("DEFAULT")
 $ max_allowed_dir_depth = 3  ! e.g. [A.B.PERLxxx] not [A.B.C.PERLxxx]
 $! max_allowed_dir_depth = 2 ! e.g. [A.PERLxxx] not [A.B.PERLxxx]
@@ -2772,14 +2773,21 @@ $ THEN
 $     xxx = nonxs_ext
 $     gosub may_already_have_extension
 $ ENDIF
+$ IF $STATUS .EQ. 1
+$ THEN
+$     xxx = nonxs_ext2
+$     gosub may_already_have_extension
+$ ENDIF
 $ IF $STATUS .NE. 1 THEN goto ext_loop
 $ goto found_new_extension
 $!
 $ may_already_have_extension:
 $   idx = F$LOCATE(extspec, xxx)
 $   extlen = F$LENGTH(xxx) 
-$   IF idx .EQ. extlen THEN return 1
-$!  But "Flirble" may just be part of "Acme-Flirble"
+$   IF idx .EQ. extlen THEN return 1   ! didn't find it
+$!  But "Flirble" may just be part of "Acme-Flirble".  This is not
+$!  bullet-proof because we may only be looking at one chunk of the
+$!  existing extension list.
 $   IF idx .GT. 0 .AND. F$EXTRACT(idx - 1, 1, xxx) .NES. " "
 $   THEN
 $      xxx = F$EXTRACT(idx + F$LENGTH(extspec) + 1, extlen, xxx)
@@ -2798,7 +2806,13 @@ $!
 $ found_new_extension:
 $   IF F$SEARCH("[-.ext.''extension_dir_name']*.xs") .EQS. "" .AND. F$SEARCH("[-.dist.''extension_dir_name']*.xs") .EQS. "" .AND. F$SEARCH("[-.cpan.''extension_dir_name']*.xs") .EQS. ""
 $   THEN
-$       nonxs_ext = nonxs_ext + " ''extspec'"
+$!  Bit if a hack to get around the 1K buffer on older systems.
+$       IF F$LENGTH(nonxs_ext) .GT. 950
+$       THEN
+$           nonxs_ext2 = nonxs_ext2 + " ''extspec'"
+$       ELSE
+$           nonxs_ext = nonxs_ext + " ''extspec'"
+$       ENDIF
 $   ELSE
 $       known_extensions = known_extensions + " ''extspec'"
 $   ENDIF
@@ -2829,8 +2843,10 @@ $   dflt = dflt - "Socket"            ! optional on VMS
 $ ENDIF
 $ dflt = dflt - "Win32API/File" - "Win32"  ! need Dave Cutler's other project
 $ nonxs_ext = nonxs_ext - "Win32CORE"
+$ nonxs_ext2 = nonxs_ext2 - "Win32CORE"
 $ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
 $ nonxs_ext = F$EDIT(nonxs_ext,"TRIM,COMPRESS")
+$ nonxs_ext2 = F$EDIT(nonxs_ext2,"TRIM,COMPRESS")
 $!
 $! Ask for their default list of extensions to build
 $ echo ""
@@ -3037,7 +3053,7 @@ $!
 $ bool_dflt = "y"
 $ IF F$TYPE(useperlio) .NES. ""
 $ then
-$   if f$extract(0,1,f$edit(useperlio,"collapse,upcase")) .eqs. "N" .or. useperlio .eqs. "undef" then bool_dflt = "n"
+$   if .not. useperlio .or. useperlio .eqs. "undef" then bool_dflt = "n"
 $ endif
 $ IF .NOT. silent
 $ THEN
@@ -5898,6 +5914,8 @@ $ WC "d_attribute_noreturn='undef'"
 $ WC "d_attribute_pure='undef'"
 $ WC "d_attribute_unused='undef'"
 $ WC "d_attribute_warn_unused_result='undef'"
+$ WC "d_prctl='undef'"
+$ WC "d_prctl_set_name='undef'"
 $ WC "d_printf_format_null='undef'"
 $ WC "d_bcmp='" + d_bcmp + "'"
 $ WC "d_bcopy='" + d_bcopy + "'"
@@ -6288,9 +6306,7 @@ $ WC "exe_ext='" + exe_ext + "'"
 $!
 $! The extensions symbols may be quite long
 $!
-$ tmp = "extensions='" + nonxs_ext + " " + dynamic_ext + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ WC/symbol "extensions='", nonxs_ext, " ", nonxs_ext2, " ", dynamic_ext, "'"
 $ WC "fflushNULL='define'"
 $ WC "fflushall='undef'"
 $ WC "fpostype='fpos_t'"
@@ -6459,9 +6475,7 @@ $ WC "netdb_hlen_type='" + netdb_hlen_type + "'"
 $ WC "netdb_host_type='" + netdb_host_type + "'"
 $ WC "netdb_name_type='" + netdb_name_type + "'"
 $ WC "netdb_net_type='" + netdb_net_type + "'"
-$ tmp = "nonxs_ext='" + nonxs_ext + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ WC/symbol "nonxs_ext='", nonxs_ext, " ", nonxs_ext2, "'"
 $ WC "nveformat='" + nveformat + "'"
 $ WC "nvfformat='" + nvfformat + "'"
 $ WC "nvgformat='" + nvgformat + "'"
diff --git a/cop.h b/cop.h
index 13ce794..f36d5ff 100644 (file)
--- a/cop.h
+++ b/cop.h
  */
 
 /* A jmpenv packages the state required to perform a proper non-local jump.
- * Note that there is a start_env initialized when perl starts, and top_env
- * points to this initially, so top_env should always be non-null.
+ * Note that there is a PL_start_env initialized when perl starts, and
+ * PL_top_env points to this initially, so PL_top_env should always be
+ * non-null.
  *
- * Existence of a non-null top_env->je_prev implies it is valid to call
- * longjmp() at that runlevel (we make sure start_env.je_prev is always
+ * Existence of a non-null PL_top_env->je_prev implies it is valid to call
+ * longjmp() at that runlevel (we make sure PL_start_env.je_prev is always
  * null to ensure this).
  *
  * je_mustcatch, when set at any runlevel to TRUE, means eval ops must
@@ -99,9 +100,11 @@ typedef struct jmpenv JMPENV;
 
 #define JMPENV_PUSH(v) \
     STMT_START {                                                       \
-       DEBUG_l(Perl_deb(aTHX_ "Setting up jumplevel %p, was %p at %s:%d\n",    \
-                        (void*)&cur_env, (void*)PL_top_env,                    \
-                        __FILE__, __LINE__));                                  \
+       DEBUG_l({                                                       \
+           int i = 0; JMPENV *p = PL_top_env;                          \
+           while (p) { i++; p = p->je_prev; }                          \
+           Perl_deb(aTHX_ "JUMPENV_PUSH level=%d at %s:%d\n",          \
+                        i,  __FILE__, __LINE__);})                     \
        cur_env.je_prev = PL_top_env;                                   \
        OP_REG_TO_MEM;                                                  \
        cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK);              \
@@ -113,15 +116,22 @@ typedef struct jmpenv JMPENV;
 
 #define JMPENV_POP \
     STMT_START {                                                       \
-       DEBUG_l(Perl_deb(aTHX_ "popping jumplevel was %p, now %p at %s:%d\n",   \
-                        (void*)PL_top_env, (void*)cur_env.je_prev,             \
-                        __FILE__, __LINE__));                                  \
+       DEBUG_l({                                                       \
+           int i = -1; JMPENV *p = PL_top_env;                         \
+           while (p) { i++; p = p->je_prev; }                          \
+           Perl_deb(aTHX_ "JUMPENV_POP level=%d at %s:%d\n",           \
+                        i, __FILE__, __LINE__);})                      \
        assert(PL_top_env == &cur_env);                                 \
        PL_top_env = cur_env.je_prev;                                   \
     } STMT_END
 
 #define JMPENV_JUMP(v) \
     STMT_START {                                               \
+       DEBUG_l({                                               \
+           int i = -1; JMPENV *p = PL_top_env;                 \
+           while (p) { i++; p = p->je_prev; }                  \
+           Perl_deb(aTHX_ "JUMPENV_JUMP(%d) level=%d at %s:%d\n", \
+                        (int)v, i, __FILE__, __LINE__);})      \
        OP_REG_TO_MEM;                                          \
        if (PL_top_env->je_prev)                                \
            PerlProc_longjmp(PL_top_env->je_buf, (v));          \
@@ -132,7 +142,15 @@ typedef struct jmpenv JMPENV;
     } STMT_END
 
 #define CATCH_GET              (PL_top_env->je_mustcatch)
-#define CATCH_SET(v)           (PL_top_env->je_mustcatch = (v))
+#define CATCH_SET(v) \
+    STMT_START {                                                       \
+       DEBUG_l(                                                        \
+           Perl_deb(aTHX_                                              \
+               "JUMPLEVEL set catch %d => %d (for %p) at %s:%d\n",     \
+                PL_top_env->je_mustcatch, v, (void*)PL_top_env,        \
+                __FILE__, __LINE__);)                                  \
+       PL_top_env->je_mustcatch = (v);                                 \
+    } STMT_END
 
 
 #include "mydtrace.h"
@@ -550,6 +568,16 @@ struct block {
 #define blk_loop       cx_u.cx_blk.blk_u.blku_loop
 #define blk_givwhen    cx_u.cx_blk.blk_u.blku_givwhen
 
+#define DEBUG_CX(action)                                               \
+    DEBUG_l(WITH_THX(                                                  \
+       Perl_deb(aTHX_ "CX %ld %s %s (scope %ld,%ld) at %s:%d\n",       \
+                   (long)cxstack_ix,                                   \
+                   action,                                             \
+                   PL_block_type[CxTYPE(&cxstack[cxstack_ix])],        \
+                   (long)PL_scopestack_ix,                             \
+                   (long)(cxstack[cxstack_ix].blk_oldscopesp),         \
+                   __FILE__, __LINE__)));
+
 /* Enter a block. */
 #define PUSHBLOCK(cx,t,sp) CXINC, cx = &cxstack[cxstack_ix],           \
        cx->cx_type             = t,                                    \
@@ -559,28 +587,27 @@ struct block {
        cx->blk_oldscopesp      = PL_scopestack_ix,                     \
        cx->blk_oldpm           = PL_curpm,                             \
        cx->blk_gimme           = (U8)gimme;                            \
-       DEBUG_l( PerlIO_printf(Perl_debug_log, "Entering block %ld, type %s\n", \
-                   (long)cxstack_ix, PL_block_type[CxTYPE(cx)]); )
+       DEBUG_CX("PUSH");
 
 /* Exit a block (RETURN and LAST). */
-#define POPBLOCK(cx,pm) cx = &cxstack[cxstack_ix--],                   \
+#define POPBLOCK(cx,pm)                                                        \
+       DEBUG_CX("POP");                                                \
+       cx = &cxstack[cxstack_ix--],                                    \
        newsp            = PL_stack_base + cx->blk_oldsp,               \
        PL_curcop        = cx->blk_oldcop,                              \
        PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp,            \
        PL_scopestack_ix = cx->blk_oldscopesp,                          \
        pm               = cx->blk_oldpm,                               \
-       gimme            = cx->blk_gimme;                               \
-       DEBUG_SCOPE("POPBLOCK");                                        \
-       DEBUG_l( PerlIO_printf(Perl_debug_log, "Leaving block %ld, type %s\n",          \
-                   (long)cxstack_ix+1,PL_block_type[CxTYPE(cx)]); )
+       gimme            = cx->blk_gimme;
 
 /* Continue a block elsewhere (NEXT and REDO). */
-#define TOPBLOCK(cx) cx  = &cxstack[cxstack_ix],                       \
+#define TOPBLOCK(cx)                                                   \
+       DEBUG_CX("TOP");                                                \
+       cx  = &cxstack[cxstack_ix],                                     \
        PL_stack_sp      = PL_stack_base + cx->blk_oldsp,               \
        PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp,            \
        PL_scopestack_ix = cx->blk_oldscopesp,                          \
-       PL_curpm         = cx->blk_oldpm;                               \
-       DEBUG_SCOPE("TOPBLOCK");
+       PL_curpm         = cx->blk_oldpm;
 
 /* substitution context */
 struct subst {
@@ -756,6 +783,9 @@ L<perlcall>.
 #define G_METHOD      128       /* Calling method. */
 #define G_FAKINGEVAL  256      /* Faking an eval context for call_sv or
                                   fold_constants. */
+#define G_UNDEF_FILL  512      /* Fill the stack with &PL_sv_undef
+                                  A special case for UNSHIFT in
+                                  Perl_magic_methcall().  */
 
 /* flag bits for PL_in_eval */
 #define EVAL_NULL      0       /* not in an eval */
@@ -809,6 +839,11 @@ typedef struct stackinfo PERL_SI;
 #define PUSHSTACKi(type) \
     STMT_START {                                                       \
        PERL_SI *next = PL_curstackinfo->si_next;                       \
+       DEBUG_l({                                                       \
+           int i = 0; PERL_SI *p = PL_curstackinfo;                    \
+           while (p) { i++; p = p->si_prev; }                          \
+           Perl_deb(aTHX_ "push STACKINFO %d at %s:%d\n",              \
+                        i, __FILE__, __LINE__);})                      \
        if (!next) {                                                    \
            next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1);    \
            next->si_prev = PL_curstackinfo;                            \
@@ -830,6 +865,11 @@ typedef struct stackinfo PERL_SI;
     STMT_START {                                                       \
        dSP;                                                            \
        PERL_SI * const prev = PL_curstackinfo->si_prev;                \
+       DEBUG_l({                                                       \
+           int i = -1; PERL_SI *p = PL_curstackinfo;                   \
+           while (p) { i++; p = p->si_prev; }                          \
+           Perl_deb(aTHX_ "pop  STACKINFO %d at %s:%d\n",              \
+                        i, __FILE__, __LINE__);})                      \
        if (!prev) {                                                    \
            PerlIO_printf(Perl_error_log, "panic: POPSTACK\n");         \
            my_exit(1);                                                 \
index e7acabd..fb1644f 100644 (file)
@@ -1,3 +1,23 @@
+Version 3.49
+
+  [BUG FIXES]
+  1. Fix a regression since 3.44 involving a case when the header includes "Content-Length: 0". 
+     Thanks to Alex Vandiver (RT#51109)
+  2. Suppress uninitialized warnings under -w. Thanks to burak.  (RT#50301)
+  3. url() now uses virtual_port() instead of server_port(). Thanks to MKANAT and Yanick Champoux. (RT#51562)
+
+  [SECURITY]
+  1. embedded newlines are now filtered out of header values in header(). 
+     Thanks to Mark Stosberg and Yanick Champoux.
+
+  [DOCUMENTATION]
+  1. README was updated to reflect that CGI.pm was moved under ./lib. 
+     Thanks to Alex Vandiver.
+
+  [INTERNALS]
+  1. More tests were added for autoescape, thanks to Bob Kuo. (RT#25485)
+  2. Attempt to avoid test failures with t/fast, thanks to Steve Hay. (RT#49599)
+
 Version 3.48
 
   [BUG FIXES]
index 0cba881..355b8d1 100644 (file)
@@ -19,7 +19,7 @@ use Carp 'croak';
 #   http://stein.cshl.org/WWW/software/CGI/
 
 $CGI::revision = '$Id: CGI.pm,v 1.266 2009/07/30 16:32:34 lstein Exp $';
-$CGI::VERSION='3.48';
+$CGI::VERSION='3.49';
 
 # HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES.
 # UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING.
@@ -663,7 +663,7 @@ sub init {
          if ( $content_length > 0 ) {
            $self->read_from_client(\$query_string,$content_length,0);
          }
-         else {
+         elsif (not defined $ENV{CONTENT_LENGTH}) {
            $self->read_from_stdin(\$query_string);
            # should this be PUTDATA in case of PUT ?
            my($param) = $meth . 'DATA' ;
@@ -1542,6 +1542,16 @@ sub header {
                             'EXPIRES','NPH','CHARSET',
                             'ATTACHMENT','P3P'],@p);
 
+    # CR escaping for values, per RFC 822
+    for my $header ($type,$status,$cookie,$target,$expires,$nph,$charset,$attachment,$p3p,@other) {
+        if (defined $header) {
+            $header =~ s/
+                (?<=\n)    # For any character proceeded by a newline
+                (?=\S)     # ... that is not whitespace
+            / /xg;         # ... inject a leading space in the new line
+        }
+    }
+
     $nph     ||= $NPH;
 
     $type ||= 'text/html' unless defined($type);
@@ -1557,7 +1567,7 @@ sub header {
     # need to fix it up a little.
     for (@other) {
         # Don't use \s because of perl bug 21951
-        next unless my($header,$value) = /([^ \r\n\t=]+)=\"?(.+?)\"?$/;
+        next unless my($header,$value) = /([^ \r\n\t=]+)=\"?(.+?)\"?$/s;
         ($_ = $header) =~ s/^(\w)(.*)/"\u$1\L$2" . ': '.$self->unescapeHTML($value)/e;
     }
 
@@ -2566,6 +2576,7 @@ sub popup_menu {
     my(@values);
     @values = $self->_set_values_and_labels($values,\$labels,$name);
     $tabindex = $self->element_tab($tabindex);
+    $name = q{} if ! defined $name;
     $result = qq/<select name="$name" $tabindex$other>\n/;
     for (@values) {
         if (/<optgroup/) {
@@ -2626,7 +2637,7 @@ sub optgroup {
     @values = $self->_set_values_and_labels($values,\$labels,$name,$labeled,$novals);
     my($other) = @other ? " @other" : '';
 
-    $name=$self->_maybe_escapeHTML($name);
+    $name = $self->_maybe_escapeHTML($name) || q{};
     $result = qq/<optgroup label="$name"$other>\n/;
     for (@values) {
         if (/<optgroup/) {
@@ -2842,21 +2853,22 @@ sub url {
 #    $uri            =~ s/\Q$path\E$//      if defined $path;      # remove path
 
     if ($full) {
-       my $protocol = $self->protocol();
-       $url = "$protocol://";
-       my $vh = http('x_forwarded_host') || http('host') || '';
-        $vh =~ s/\:\d+$//;  # some clients add the port number (incorrectly). Get rid of it.
-       if ($vh) {
-           $url .= $vh;
-       } else {
-           $url .= server_name();
-       }
-        my $port = $self->server_port;
-       $url .= ":" . $port
-         unless (lc($protocol) eq 'http'  && $port == 80)
-               || (lc($protocol) eq 'https' && $port == 443);
+        my $protocol = $self->protocol();
+        $url = "$protocol://";
+        my $vh = http('x_forwarded_host') || http('host') || '';
+            $vh =~ s/\:\d+$//;  # some clients add the port number (incorrectly). Get rid of it.
+
+        $url .= $vh || server_name();
+
+        my $port = $self->virtual_port;
+
+        # add the port to the url unless it's the protocol's default port
+        $url .= ':' . $port unless (lc($protocol) eq 'http'  && $port == 80)
+                                or (lc($protocol) eq 'https' && $port == 443);
+
         return $url if $base;
-       $url .= $uri;
+
+        $url .= $uri;
     } elsif ($relative) {
        ($url) = $uri =~ m!([^/]+)$!;
     } elsif ($absolute) {
@@ -4759,7 +4771,7 @@ a short example of creating multiple session records:
 
    use CGI;
 
-   open (OUT,">>test.out") || die;
+   open (OUT,'>>','test.out') || die;
    $records = 5;
    for (0..$records) {
        my $q = CGI->new;
@@ -4769,7 +4781,7 @@ a short example of creating multiple session records:
    close OUT;
 
    # reopen for reading
-   open (IN,"test.out") || die;
+   open (IN,'<','test.out') || die;
    while (!eof(IN)) {
        my $q = CGI->new(\*IN);
        print $q->param('counter'),"\n";
@@ -5265,6 +5277,18 @@ In either case, the outgoing header will be formatted as:
 
   P3P: policyref="/w3c/p3p.xml" cp="CAO DSP LAW CURa"
 
+Note that if a header value contains a carriage return, a leading space will be
+added to each new line that doesn't already have one as specified by RFC2616
+section 4.2.  For example:
+
+    print header( -ingredients => "ham\neggs\nbacon" );
+
+will generate
+
+    Ingredients: ham
+     eggs
+     bacon
+
 =head2 GENERATING A REDIRECTION HEADER
 
    print $q->redirect('http://somewhere.else/in/movie/land');
@@ -6198,12 +6222,12 @@ handle for a file upload field like this:
   # undef may be returned if it's not a valid file handle
   if (defined $lightweight_fh) {
     # Upgrade the handle to one compatible with IO::Handle:
-     my $io_handle = $lightweight_fh->handle;
+    my $io_handle = $lightweight_fh->handle;
 
-       open (OUTFILE,">>/usr/local/web/users/feedback");
-   while ($bytesread = $io_handle->read($buffer,1024)) {
-          print OUTFILE $buffer;
-       }
+    open (OUTFILE,'>>','/usr/local/web/users/feedback');
+    while ($bytesread = $io_handle->read($buffer,1024)) {
+      print OUTFILE $buffer;
+    }
   }
 
 In a list context, upload() will return an array of filehandles.
@@ -8024,13 +8048,12 @@ for suggestions and bug fixes.
        }
 
        sub do_work {
-          my(@values,$key);
 
           print "<h2>Here are the current settings in this form</h2>";
 
-          for $key (param) {
+          for my $key (param) {
              print "<strong>$key</strong> -> ";
-             @values = param($key);
+             my @values = param($key);
              print join(", ",@values),"<br>\n";
          }
        }
index 381635e..5f9911b 100644 (file)
@@ -423,35 +423,26 @@ sub ineval {
 sub die {
   my ($arg,@rest) = @_;
 
-  if ($DIE_HANDLER) {
-      &$DIE_HANDLER($arg,@rest);
-  }
+  &$DIE_HANDLER($arg,@rest) if $DIE_HANDLER;
 
-  if ( ineval() )  {
-    if (!ref($arg)) {
-      $arg = join("",($arg,@rest)) || "Died";
-      my($file,$line,$id) = id(1);
-      $arg .= " at $file line $line.\n" unless $arg=~/\n$/;
-      realdie($arg);
-    }
-    else {
-      realdie($arg,@rest);
-    }
-  }
+  # if called as die( $object, 'string' ),
+  # all is stringified, just like with
+  # the real 'die'
+  $arg = join '' => "$arg", @rest if @rest;
+
+  $arg ||= 'Died';
+
+  my($file,$line,$id) = id(1);
+
+  $arg .= " at $file line $line.\n" unless ref $arg or $arg=~/\n$/;
+
+  realdie $arg           if ineval();
+  &fatalsToBrowser($arg) if $WRAP;
+
+  $arg=~s/^/ stamp() /gme if $arg =~ /\n$/ or not exists $ENV{MOD_PERL};
+
+  $arg .= "\n" unless $arg =~ /\n$/;
 
-  if (!ref($arg)) {
-    $arg = join("", ($arg,@rest));
-    my($file,$line,$id) = id(1);
-    $arg .= " at $file line $line." unless $arg=~/\n$/;
-    &fatalsToBrowser($arg) if $WRAP;
-    if (($arg =~ /\n$/) || !exists($ENV{MOD_PERL})) {
-      my $stamp = stamp;
-      $arg=~s/^/$stamp/gm;
-    }
-    if ($arg !~ /\n$/) {
-      $arg .= "\n";
-    }
-  }
   realdie $arg;
 }
 
@@ -503,11 +494,15 @@ sub warningsToBrowser {
 
 # headers
 sub fatalsToBrowser {
-  my($msg) = @_;
+  my $msg = shift;
+
+  $msg = "$msg" if ref $msg;
+
   $msg=~s/&/&amp;/g;
   $msg=~s/>/&gt;/g;
   $msg=~s/</&lt;/g;
-  $msg=~s/\"/&quot;/g;
+  $msg=~s/"/&quot;/g;
+
   my($wm) = $ENV{SERVER_ADMIN} ? 
     qq[the webmaster (<a href="mailto:$ENV{SERVER_ADMIN}">$ENV{SERVER_ADMIN}</a>)] :
       "this site's webmaster";
index 85a07f0..7bc090d 100644 (file)
@@ -1,5 +1,8 @@
 package CGI::Cookie;
 
+use strict;
+use warnings;
+
 # See the bottom of this file for the POD documentation.  Search for the
 # string '=head'.
 
@@ -78,14 +81,13 @@ sub get_raw_cookie {
   $r ||= eval { $MOD_PERL == 2                    ? 
                   Apache2::RequestUtil->request() :
                   Apache->request } if $MOD_PERL;
-  if ($r) {
-    $raw_cookie = $r->headers_in->{'Cookie'};
-  } else {
-    if ($MOD_PERL && !exists $ENV{REQUEST_METHOD}) {
-      die "Run $r->subprocess_env; before calling fetch()";
-    }
-    $raw_cookie = $ENV{HTTP_COOKIE} || $ENV{COOKIE};
-  }
+
+  return $r->headers_in->{'Cookie'} if $r;
+
+  die "Run $r->subprocess_env; before calling fetch()" 
+    if $MOD_PERL and !exists $ENV{REQUEST_METHOD};
+    
+  return $ENV{HTTP_COOKIE} || $ENV{COOKIE};
 }
 
 
@@ -122,7 +124,8 @@ sub new {
   shift if ref $_[0]
         && eval { $_[0]->isa('Apache::Request::Req') || $_[0]->isa('Apache') };
   my($name,$value,$path,$domain,$secure,$expires,$httponly) =
-    rearrange([NAME,[VALUE,VALUES],PATH,DOMAIN,SECURE,EXPIRES,HTTPONLY],@_);
+    rearrange([ 'NAME', ['VALUE','VALUES'], qw/ PATH DOMAIN SECURE EXPIRES
+        HTTPONLY / ], @_);
   
   # Pull out our parameters.
   my @values;
index 67d67ee..e31dac3 100644 (file)
@@ -1,6 +1,10 @@
 package CGI::Fast;
 use strict;
-$^W=1; # A way to say "use warnings" that's compatible with even older perls.
+
+# A way to say "use warnings" that's compatible with even older perls.
+# making it local will not affect the code that loads this module
+# and since we're not in a BLOCK, warnings are enabled until the EOF
+local $^W = 1;
 
 # See the bottom of this file for the POD documentation.  Search for the
 # string '=head'.
@@ -15,7 +19,7 @@ $^W=1; # A way to say "use warnings" that's compatible with even older perls.
 # wish, but if you redistribute a modified version, please attach a note
 # listing the modifications you have made.
 
-$CGI::Fast::VERSION='1.07';
+$CGI::Fast::VERSION='1.08';
 
 use CGI;
 use FCGI;
index 1f4201d..eb639e4 100644 (file)
@@ -244,11 +244,38 @@ sub unescape {
 # was always so and cannot be fixed without breaking the binary data case.
 # -- Stepan Kasal <skasal@redhat.com>
 #
+if ($] == 5.008) {
+   package utf8;
+
+   no warnings 'redefine'; # needed for Perl 5.8.1+
+
+   my $is_utf8_redefinition = <<'EOR';
+      sub is_utf8 {
+         my ($text) = @_;
+
+         my $ctext = pack q{C0a*}, $text;
+
+         return ($text ne $ctext) && ($ctext =~ m/^(
+          [\x09\x0A\x0D\x20-\x7E]
+          | [\xC2-\xDF][\x80-\xBF]
+          | \xE0[\xA0-\xBF][\x80-\xBF]
+          | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
+          | \xED[\x80-\x9F][\x80-\xBF]
+          | \xF0[\x90-\xBF][\x80-\xBF]{2}
+          | [\xF1-\xF3][\x80-\xBF]{3}
+          | \xF4[\x80-\x8F][\x80-\xBF]{2}
+          )*$/xo);
+      }
+EOR
+
+   eval $is_utf8_redefinition;
+}
+
 sub escape {
   shift() if @_ > 1 and ( ref($_[0]) || (defined $_[1] && $_[0] eq $CGI::DefaultClass));
   my $toencode = shift;
   return undef unless defined($toencode);
-  utf8::encode($toencode) if ($] > 5.008001 && utf8::is_utf8($toencode));
+  utf8::encode($toencode) if ($] >= 5.008 && utf8::is_utf8($toencode));
     if ($EBCDIC) {
       $toencode=~s/([^a-zA-Z0-9_.~-])/uc sprintf("%%%02x",$E2A[ord($1)])/eg;
     } else {
index ff5eaf4..be62928 100644 (file)
@@ -3,7 +3,7 @@
 
 use strict;
 
-use Test::More tests => 41;
+use Test::More tests => 59;
 use IO::Handle;
 
 BEGIN { use_ok('CGI::Carp') };
@@ -116,12 +116,13 @@ like($@,
 # Test that realwarn is called
 {
   local $^W = 0;
-  eval 'sub CGI::Carp::realdie {my $mess = shift; return $mess};';
-}
+  local *CGI::Carp::realdie = sub { my $mess = shift; return $mess };
 
-like(CGI::Carp::die('There is a problem'),
-     $stamp,
-     'CGI::Carp::die calls CORE::die, but adds stamp');
+    like(CGI::Carp::die('There is a problem'),
+        $stamp,
+        'CGI::Carp::die calls CORE::die, but adds stamp');
+
+}
 
 #-----------------------------------------------------------------------------
 # Test set_message
@@ -273,3 +274,100 @@ ok( defined buffer( $fh ),         '$fh returns proper filehandle');
 ok( defined buffer('::STDOUT'),    'STDIN returns proper filehandle');
 ok( defined buffer(*main::STDOUT), 'STDIN returns proper filehandle');
 ok(!defined buffer("WIBBLE"),      '"WIBBLE" doesn\'t returns proper filehandle');
+
+# Calling die with code refs with no WRAP
+{
+    local $CGI::Carp::WRAP = 0;
+
+    eval { CGI::Carp::die( 'regular string' ) };
+    like $@ => qr/regular string/, 'die with string';
+
+    eval { CGI::Carp::die( [ 1..10 ] ) };
+    like $@ => qr/ARRAY\(0x[\da-f]+\)/, 'die with array ref';
+
+    eval { CGI::Carp::die( { a => 1 } ) };
+    like $@ => qr/HASH\(0x[\da-f]+\)/, 'die with hash ref';
+
+    eval { CGI::Carp::die( sub { 'Farewell' } ) };
+    like $@ => qr/CODE\(0x[\da-f]+\)/, 'die with code ref';
+
+    eval { CGI::Carp::die( My::Plain::Object->new ) };
+    isa_ok $@, 'My::Plain::Object';
+
+    eval { CGI::Carp::die( My::Plain::Object->new, ' and another argument' ) };
+    like $@ => qr/My::Plain::Object/,     'object is stringified';
+    like $@ => qr/and another argument/, 'second argument is present';
+
+    eval { CGI::Carp::die( My::Stringified::Object->new ) };
+    isa_ok $@, 'My::Stringified::Object';
+
+    eval { CGI::Carp::die( My::Stringified::Object->new, ' and another argument' ) };
+    like $@ => qr/stringified/,          'object is stringified';
+    like $@ => qr/and another argument/, 'second argument is present';
+
+    eval { CGI::Carp::die() };
+    like $@ => qr/Died at/, 'die with no argument';
+}
+
+# Calling die with code refs when WRAPped
+{
+    local $CGI::Carp::WRAP = 1;
+    local *CGI::Carp::realdie = sub { return @_ };
+    local *STDOUT;
+
+    tie *STDOUT, 'StoreStuff';
+
+    my %result;   # store results because stdout is kidnapped
+
+    CGI::Carp::die( 'regular string' );
+    $result{string} .= $_ while <STDOUT>;
+
+    CGI::Carp::die( [ 1..10 ] );
+    $result{array_ref} .= $_ while <STDOUT>;
+
+    CGI::Carp::die( { a => 1 } );
+    $result{hash_ref} .= $_ while <STDOUT>;
+
+    CGI::Carp::die( sub { 'Farewell' } );
+    $result{code_ref} .= $_ while <STDOUT>;
+
+    CGI::Carp::die( My::Plain::Object->new );
+    $result{plain_object} .= $_ while <STDOUT>;
+
+    CGI::Carp::die( My::Stringified::Object->new );
+    $result{string_object} .= $_ while <STDOUT>;
+
+    CGI::Carp::die();
+    $result{no_args} .= $_ while <STDOUT>;
+
+    untie *STDOUT;
+
+    like $result{string}    => qr/regular string/, 'regular string, wrapped';
+    like $result{array_ref} => qr/ARRAY\(\w+?\)/,  'array ref, wrapped';
+    like $result{hash_ref}  => qr/HASH\(\w+?\)/,   'hash ref, wrapped';
+    like $result{code_ref}  => qr/CODE\(\w+?\)/,   'code ref, wrapped';
+    like $result{plain_object} => qr/My::Plain::Object/,
+      'plain object, wrapped';
+    like $result{string_object} => qr/stringified/,
+      'stringified object, wrapped';
+    like $result{no_args} => qr/Died at/, 'no args, wrapped';
+
+}
+
+{
+    package My::Plain::Object;
+
+    sub new {
+        return bless {}, shift;
+    }
+}
+
+{
+    package My::Stringified::Object;
+
+    use overload '""' => sub { 'stringified' };
+
+    sub new {
+        return bless {}, shift;
+    }
+}
index 316b585..1013339 100644 (file)
@@ -32,11 +32,6 @@ if ($^O eq 'VMS') { $CRLF = "\n"; }
 
 if (ord("\t") != 9) { $CRLF = "\r\n"; }
 
-# Web servers on EBCDIC hosts are typically set up to do an EBCDIC -> ASCII
-# translation hence CRLF is used as \r\n within CGI.pm on such machines.
-
-if (ord("\t") != 9) { $CRLF = "\r\n"; }
 # Set up a CGI environment
 $ENV{REQUEST_METHOD}='GET';
 $ENV{QUERY_STRING}  ='game=chess&game=checkers&weather=dull';
diff --git a/cpan/CGI/t/url.t b/cpan/CGI/t/url.t
new file mode 100644 (file)
index 0000000..16e20b6
--- /dev/null
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+
+use Test::More tests => 4;    # last test to print
+
+use CGI qw/ :all /;
+
+$ENV{HTTP_X_FORWARDED_HOST} = 'proxy:8484';
+$ENV{SERVER_PROTOCOL}       = 'HTTP/1.0';
+$ENV{SERVER_PORT}           = 8080;
+$ENV{SERVER_NAME}           = 'the.good.ship.lollypop.com';
+
+is virtual_port() => 8484, 'virtual_port()';
+is server_port()  => 8080, 'server_port()';
+
+is url() => 'http://proxy:8484', 'url()';
+
+# let's see if we do the defaults right
+
+$ENV{HTTP_X_FORWARDED_HOST} = 'proxy:80';
+
+is url() => 'http://proxy', 'url() with default port';
+
index a664320..ac8f873 100644 (file)
@@ -5,7 +5,7 @@ use CPAN::Distroprefs;
 use CPAN::InfoObj;
 @CPAN::Distribution::ISA = qw(CPAN::InfoObj);
 use vars qw($VERSION);
-$VERSION = "1.9456";
+$VERSION = "1.9456_01";
 
 # Accessors
 sub cpan_comment {
@@ -2576,7 +2576,10 @@ sub unsat_prereq {
                      or $need_version eq '0'    # "==" would trigger warning when not numeric
                      or $need_version eq "undef"
                     )) {
-                next NEED;
+                unless ($nmo->inst_deprecated) {                               
+                    next NEED;                                                 
+                }                                                              
+
             }
 
             $available_version = $nmo->available_version;
index f8268b1..506b3ed 100644 (file)
@@ -29,11 +29,10 @@ BEGIN {
     
     ### add CPANPLUS' bin dir to the front of $ENV{PATH}, so that cpanp-run-perl
     ### and friends get picked up, only under PERL_CORE though.
+    $old_env_path = $ENV{PATH};
     if ( $ENV{PERL_CORE} ) {
-       $old_env_path = $ENV{PATH};
        $ENV{'PATH'}  = join $Config{'path_sep'}, 
-                    grep { defined } "$FindBin::Bin/../../CPANPLUS/bin", $ENV{'PATH'};
-
+                    grep { defined } "$FindBin::Bin/../../../utils", $ENV{'PATH'};
     }
 
     ### Fix up the path to perl, as we're about to chdir
@@ -187,6 +186,24 @@ sub gimme_conf {
         }
     }
 
+    ### CPANPLUS::Config checks 3 specific scenarios first
+    ### when looking for cpanp-run-perl: parallel to cpanp,
+    ### parallel to CPANPLUS.pm, or installed into a custom
+    ### prefix like /tmp/foo. Only *THEN* does it check the
+    ### the path.
+    ### If the perl core is extracted to a directory that has
+    ### cpanp-run-perl installed the same amount of 'uplevels'
+    ### as the /tmp/foo prefix, we'll pull in the wrong script
+    ### by accident.
+    ### Since we set the path to cpanp-run-perl explicitily
+    ### at the top of this script, it's best to update the config
+    ### ourselves with a path lookup, rather than rely on its
+    ### heuristics. Thanks to David Wheeler, Josh Jore and Vincent
+    ### Pit for helping to track this down.
+    if( $ENV{PERL_CORE} ) {
+        $conf->set_program( "perlwrapper" => IPC::Cmd::can_run('cpanp-run-perl') );
+    }
+
     $conf->set_conf( source_engine =>  $ENV{CPANPLUS_SOURCE_ENGINE} )
         if $ENV{CPANPLUS_SOURCE_ENGINE};
     
index 18011fd..8e372fe 100644 (file)
@@ -18,6 +18,40 @@ use File::Basename;
 use CPANPLUS::Error;
 use CPANPLUS::Internals::Utils;
 
+# File::Spec and Cwd might return different values for a
+# symlinked directory, so we need to be careful.
+sub paths_are_same {
+    my($have, $want, $name) = @_;
+
+    $have = _resolve_symlinks($have);
+    $want = _resolve_symlinks($want);
+
+    my $builder = Test::More->builder;
+    return $builder->like( $have, qr/\Q$want/i, $name );
+}
+
+# Resolve any symlinks in a path
+sub _resolve_symlinks {
+    my $path = shift;
+    my($vol, $dirs, $file) = File::Spec->splitpath($path);
+
+    my $resolved = File::Spec->catpath( $vol, "", "" );
+
+    for my $dir (File::Spec->splitdir($dirs)) {
+        # Resolve the next part of the path
+        my $next = File::Spec->catdir( $resolved, $dir );
+        $next = eval { readlink $next } || $next;
+
+        # If its absolute, use it.
+        # Otherwise tack it onto the end of the previous path.
+        $resolved = File::Spec->file_name_is_absolute($next)
+                       ? $next
+                       : File::Spec->catdir( $resolved, $next );
+    }
+
+    return File::Spec->catfile($resolved, $file);
+}
+
 my $Cwd     = File::Spec->rel2abs(cwd());
 my $Class   = 'CPANPLUS::Internals::Utils';
 my $Dir     = 'foo';
@@ -35,13 +69,12 @@ rmdir $Dir  if -d $Dir;
 ### test _chdir ###
 {   ok( $Class->_chdir( dir => $Dir),   "Chdir to '$Dir'" );    
 
-    my $abs_re = quotemeta File::Spec->rel2abs(File::Spec->catdir($Cwd,$Dir));
-    like( File::Spec->rel2abs(cwd()), qr/$abs_re/i,
+    my $abs = File::Spec->rel2abs(File::Spec->catdir($Cwd,$Dir));
+    paths_are_same( File::Spec->rel2abs(cwd()), $abs,
                                         "   Cwd() is '$Dir'");  
 
-    my $cwd_re = quotemeta $Cwd;
     ok( $Class->_chdir( dir => $Cwd),   "Chdir back to '$Cwd'" );
-    like( File::Spec->rel2abs(cwd()), qr/$cwd_re/i,
+    paths_are_same( File::Spec->rel2abs(cwd()), $Cwd,
                                         "   Cwd() is '$Cwd'" );
 }
 
index 1287ec9..ca64731 100644 (file)
@@ -30,8 +30,14 @@ BEGIN {
     ### add our own path to the front of $ENV{PATH}, so that cpanp-run-perl
     ### and friends get picked up
     $old_env_path = $ENV{PATH};
-    $ENV{'PATH'}  = join $Config{'path_sep'}, 
+    if ( $ENV{PERL_CORE} ) {
+      $ENV{'PATH'}  = join $Config{'path_sep'},
+                    grep { defined } "$FindBin::Bin/../../../utils", $ENV{'PATH'};
+    }
+    else {
+      $ENV{'PATH'}  = join $Config{'path_sep'},
                     grep { defined } "$FindBin::Bin/../bin", $ENV{'PATH'};
+    }
 
     ### Fix up the path to perl, as we're about to chdir
     ### but only under perlcore, or if the path contains delimiters,
@@ -150,6 +156,24 @@ sub gimme_conf {
         }
     }
 
+    ### CPANPLUS::Config checks 3 specific scenarios first
+    ### when looking for cpanp-run-perl: parallel to cpanp,
+    ### parallel to CPANPLUS.pm, or installed into a custom
+    ### prefix like /tmp/foo. Only *THEN* does it check the
+    ### the path.
+    ### If the perl core is extracted to a directory that has
+    ### cpanp-run-perl installed the same amount of 'uplevels'
+    ### as the /tmp/foo prefix, we'll pull in the wrong script
+    ### by accident.
+    ### Since we set the path to cpanp-run-perl explicitily
+    ### at the top of this script, it's best to update the config
+    ### ourselves with a path lookup, rather than rely on its
+    ### heuristics. Thanks to David Wheeler, Josh Jore and Vincent
+    ### Pit for helping to track this down.
+    if( $ENV{PERL_CORE} ) {
+        $conf->set_program( "perlwrapper" => IPC::Cmd::can_run('cpanp-run-perl') );
+    }
+
     $conf->set_conf( source_engine =>  $ENV{CPANPLUS_SOURCE_ENGINE} )
         if $ENV{CPANPLUS_SOURCE_ENGINE};
     
diff --git a/cpan/Class-ISA/ChangeLog b/cpan/Class-ISA/ChangeLog
deleted file mode 100644 (file)
index 140b91b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Revision history for Perl extension Class::ISA
-
-2009-09-29  Steffen Mueller  smueller@cpan.org
-       
-       * Release 0.36 -- fix installation dirs.
-
-2009-09-26  Steffen Mueller  smueller@cpan.org
-       
-       * Release 0.35 -- minor documentation nit.
-
-2009-09-22  Steffen Mueller  smueller@cpan.org
-       
-       * Release 0.34 -- add core deprecation logic,
-         some distribution shuffling.  No code changes.
-
-2004-12-29  Sean M. Burke  sburke@cpan.org
-       
-       * Release 0.33 -- just rebundling.  No code changes.
-       
-       
-2000-05-13  Sean M. Burke  sburke@cpan.org
-
-       * Release 0.32 -- Just noting my new email address.
-
-       
-1999-05-14  Sean M. Burke  sburke@netadventure.net
-
-       * Release 0.31 -- release version.
-
-       No changes in functionality -- just changed the core algorithm to
-       something that should behave the same, but is cleaner and faster.
-
-
-1999-01-23  Sean M. Burke  sburke@netadventure.net
-
-       * Release 0.20 -- first release version.
diff --git a/cpan/Class-ISA/lib/Class/ISA.pm b/cpan/Class-ISA/lib/Class/ISA.pm
deleted file mode 100644 (file)
index 83f47ac..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-package Class::ISA;
-require 5;
-use strict;
-use vars qw($Debug $VERSION);
-$VERSION = '0.36';
-$Debug = 0 unless defined $Debug;
-
-use if $] >= 5.011, 'deprecate';
-
-###########################################################################
-
-sub self_and_super_versions {
-  no strict 'refs';
-  map {
-        $_ => (defined(${"$_\::VERSION"}) ? ${"$_\::VERSION"} : undef)
-      } self_and_super_path($_[0])
-}
-
-# Also consider magic like:
-#   no strict 'refs';
-#   my %class2SomeHashr =
-#     map { defined(%{"$_\::SomeHash"}) ? ($_ => \%{"$_\::SomeHash"}) : () }
-#         Class::ISA::self_and_super_path($class);
-# to get a hash of refs to all the defined (and non-empty) hashes in
-# $class and its superclasses.
-#
-# Or even consider this incantation for doing something like hash-data
-# inheritance:
-#   no strict 'refs';
-#   %union_hash = 
-#     map { defined(%{"$_\::SomeHash"}) ? %{"$_\::SomeHash"}) : () }
-#         reverse(Class::ISA::self_and_super_path($class));
-# Consider that reverse() is necessary because with
-#   %foo = ('a', 'wun', 'b', 'tiw', 'a', 'foist');
-# $foo{'a'} is 'foist', not 'wun'.
-
-###########################################################################
-sub super_path {
-  my @ret = &self_and_super_path(@_);
-  shift @ret if @ret;
-  return @ret;
-}
-
-#--------------------------------------------------------------------------
-sub self_and_super_path {
-  # Assumption: searching is depth-first.
-  # Assumption: '' (empty string) can't be a class package name.
-  # Note: 'UNIVERSAL' is not given any special treatment.
-  return () unless @_;
-
-  my @out = ();
-
-  my @in_stack = ($_[0]);
-  my %seen = ($_[0] => 1);
-
-  my $current;
-  while(@in_stack) {
-    next unless defined($current = shift @in_stack) && length($current);
-    print "At $current\n" if $Debug;
-    push @out, $current;
-    no strict 'refs';
-    unshift @in_stack,
-      map
-        { my $c = $_; # copy, to avoid being destructive
-          substr($c,0,2) = "main::" if substr($c,0,2) eq '::';
-           # Canonize the :: -> main::, ::foo -> main::foo thing.
-           # Should I ever canonize the Foo'Bar = Foo::Bar thing? 
-          $seen{$c}++ ? () : $c;
-        }
-        @{"$current\::ISA"}
-    ;
-    # I.e., if this class has any parents (at least, ones I've never seen
-    # before), push them, in order, onto the stack of classes I need to
-    # explore.
-  }
-
-  return @out;
-}
-#--------------------------------------------------------------------------
-1;
-
-__END__
-
-=head1 NAME
-
-Class::ISA - report the search path for a class's ISA tree
-
-=head1 SYNOPSIS
-
-  # Suppose you go: use Food::Fishstick, and that uses and
-  # inherits from other things, which in turn use and inherit
-  # from other things.  And suppose, for sake of brevity of
-  # example, that their ISA tree is the same as:
-
-  @Food::Fishstick::ISA = qw(Food::Fish  Life::Fungus  Chemicals);
-  @Food::Fish::ISA = qw(Food);
-  @Food::ISA = qw(Matter);
-  @Life::Fungus::ISA = qw(Life);
-  @Chemicals::ISA = qw(Matter);
-  @Life::ISA = qw(Matter);
-  @Matter::ISA = qw();
-
-  use Class::ISA;
-  print "Food::Fishstick path is:\n ",
-        join(", ", Class::ISA::super_path('Food::Fishstick')),
-        "\n";
-
-That prints:
-
-  Food::Fishstick path is:
-   Food::Fish, Food, Matter, Life::Fungus, Life, Chemicals
-
-=head1 DESCRIPTION
-
-Suppose you have a class (like Food::Fish::Fishstick) that is derived,
-via its @ISA, from one or more superclasses (as Food::Fish::Fishstick
-is from Food::Fish, Life::Fungus, and Chemicals), and some of those
-superclasses may themselves each be derived, via its @ISA, from one or
-more superclasses (as above).
-
-When, then, you call a method in that class ($fishstick->calories),
-Perl first searches there for that method, but if it's not there, it
-goes searching in its superclasses, and so on, in a depth-first (or
-maybe "height-first" is the word) search.  In the above example, it'd
-first look in Food::Fish, then Food, then Matter, then Life::Fungus,
-then Life, then Chemicals.
-
-This library, Class::ISA, provides functions that return that list --
-the list (in order) of names of classes Perl would search to find a
-method, with no duplicates.
-
-=head1 FUNCTIONS
-
-=over
-
-=item the function Class::ISA::super_path($CLASS)
-
-This returns the ordered list of names of classes that Perl would
-search thru in order to find a method, with no duplicates in the list.
-$CLASS is not included in the list.  UNIVERSAL is not included -- if
-you need to consider it, add it to the end.
-
-
-=item the function Class::ISA::self_and_super_path($CLASS)
-
-Just like C<super_path>, except that $CLASS is included as the first
-element.
-
-=item the function Class::ISA::self_and_super_versions($CLASS)
-
-This returns a hash whose keys are $CLASS and its
-(super-)superclasses, and whose values are the contents of each
-class's $VERSION (or undef, for classes with no $VERSION).
-
-The code for self_and_super_versions is meant to serve as an example
-for precisely the kind of tasks I anticipate that self_and_super_path
-and super_path will be used for.  You are strongly advised to read the
-source for self_and_super_versions, and the comments there.
-
-=back
-
-=head1 CAUTIONARY NOTES
-
-* Class::ISA doesn't export anything.  You have to address the
-functions with a "Class::ISA::" on the front.
-
-* Contrary to its name, Class::ISA isn't a class; it's just a package.
-Strange, isn't it?
-
-* Say you have a loop in the ISA tree of the class you're calling one
-of the Class::ISA functions on: say that Food inherits from Matter,
-but Matter inherits from Food (for sake of argument).  If Perl, while
-searching for a method, actually discovers this cyclicity, it will
-throw a fatal error.  The functions in Class::ISA effectively ignore
-this cyclicity; the Class::ISA algorithm is "never go down the same
-path twice", and cyclicities are just a special case of that.
-
-* The Class::ISA functions just look at @ISAs.  But theoretically, I
-suppose, AUTOLOADs could bypass Perl's ISA-based search mechanism and
-do whatever they please.  That would be bad behavior, tho; and I try
-not to think about that.
-
-* If Perl can't find a method anywhere in the ISA tree, it then looks
-in the magical class UNIVERSAL.  This is rarely relevant to the tasks
-that I expect Class::ISA functions to be put to, but if it matters to
-you, then instead of this:
-
-  @supers = Class::Tree::super_path($class);
-
-do this:
-
-  @supers = (Class::Tree::super_path($class), 'UNIVERSAL');
-
-And don't say no-one ever told ya!
-
-* When you call them, the Class::ISA functions look at @ISAs anew --
-that is, there is no memoization, and so if ISAs change during
-runtime, you get the current ISA tree's path, not anything memoized.
-However, changing ISAs at runtime is probably a sign that you're out
-of your mind!
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright (c) 1999-2009 Sean M. Burke. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=head1 MAINTAINER
-
-Maintained by Steffen Mueller C<smueller@cpan.org>.
-
-=cut
-
diff --git a/cpan/Class-ISA/t/00_about_verbose.t b/cpan/Class-ISA/t/00_about_verbose.t
deleted file mode 100644 (file)
index 547e928..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-BEGIN {
-    chdir 't' if -d 't';
-    #@INC = '../lib';
-}
-
-require 5;
-# Time-stamp: "2004-12-29 20:57:15 AST"
-# Summary of, well, things.
-
-use Test;
-BEGIN {plan tests => 2};
-ok 1;
-
-use Class::ISA ();
-
-#chdir "t" if -e "t";
-
-{
-  my @out;
-  push @out,
-    "\n\nPerl v",
-    defined($^V) ? sprintf('%vd', $^V) : $],
-    " under $^O ",
-    (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber())
-      ? ("(Win32::BuildNumber ", &Win32::BuildNumber(), ")") : (),
-    (defined $MacPerl::Version)
-      ? ("(MacPerl version $MacPerl::Version)") : (),
-    "\n"
-  ;
-
-  # Ugly code to walk the symbol tables:
-  my %v;
-  my @stack = ('');  # start out in %::
-  my $this;
-  my $count = 0;
-  my $pref;
-  while(@stack) {
-    $this = shift @stack;
-    die "Too many packages?" if ++$count > 1000;
-    next if exists $v{$this};
-    next if $this eq 'main'; # %main:: is %::
-
-    #print "Peeking at $this => ${$this . '::VERSION'}\n";
-    
-    if(defined ${$this . '::VERSION'} ) {
-      $v{$this} = ${$this . '::VERSION'}
-    } elsif(
-       defined *{$this . '::ISA'} or defined &{$this . '::import'}
-       or ($this ne '' and grep defined *{$_}{'CODE'}, values %{$this . "::"})
-       # If it has an ISA, an import, or any subs...
-    ) {
-      # It's a class/module with no version.
-      $v{$this} = undef;
-    } else {
-      # It's probably an unpopulated package.
-      ## $v{$this} = '...';
-    }
-    
-    $pref = length($this) ? "$this\::" : '';
-    push @stack, map m/^(.+)::$/ ? "$pref$1" : (), keys %{$this . '::'};
-    #print "Stack: @stack\n";
-  }
-  push @out, " Modules in memory:\n";
-  delete @v{'', '[none]'};
-  foreach my $p (sort {lc($a) cmp lc($b)} keys %v) {
-    $indent = ' ' x (2 + ($p =~ tr/:/:/));
-    push @out,  '  ', $indent, $p, defined($v{$p}) ? " v$v{$p};\n" : ";\n";
-  }
-  push @out, sprintf "[at %s (local) / %s (GMT)]\n",
-    scalar(gmtime), scalar(localtime);
-  my $x = join '', @out;
-  $x =~ s/^/#/mg;
-  print $x;
-}
-
-print "# Running",
-  (chr(65) eq 'A') ? " in an ASCII world.\n" : " in a non-ASCII world.\n",
-  "#\n",
-;
-
-print "# \@INC:\n", map("#   [$_]\n", @INC), "#\n#\n";
-
-print "# \%INC:\n";
-foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) {
-  print "#   [$x] = [", $INC{$x} || '', "]\n";
-}
-
-ok 1;
-
diff --git a/cpan/Class-ISA/t/01_old_junk.t b/cpan/Class-ISA/t/01_old_junk.t
deleted file mode 100644 (file)
index d550bcb..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-BEGIN {
-    chdir 't' if -d 't';
-    #@INC = '../lib';
-}
-
-# Time-stamp: "2004-12-29 19:59:33 AST"
-
-BEGIN { $| = 1; print "1..2\n"; }
-END {print "not ok 1\n" unless $loaded;}
-use Class::ISA;
-$loaded = 1;
-print "ok 1\n";
-
-  @Food::Fishstick::ISA = qw(Food::Fish  Life::Fungus  Chemicals);
-  @Food::Fish::ISA = qw(Food);
-  @Food::ISA = qw(Matter);
-  @Life::Fungus::ISA = qw(Life);
-  @Chemicals::ISA = qw(Matter);
-  @Life::ISA = qw(Matter);
-  @Matter::ISA = qw();
-
-  use Class::ISA;
-  my @path = Class::ISA::super_path('Food::Fishstick');
-  my $flat_path = join ' ', @path;
-  print "#Food::Fishstick path is:\n# $flat_path\n";
-  print
-   "Food::Fish Food Matter Life::Fungus Life Chemicals" eq $flat_path ?
-     "ok 2\n" : "fail 2!\n";
index 239d6df..3d059be 100644 (file)
@@ -15,7 +15,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue);
 
 # If we make $VERSION an our variable parse_version() breaks
 use vars qw($VERSION);
-$VERSION = '6.56';
+$VERSION = '6.5601';
 
 require ExtUtils::MM_Any;
 our @ISA = qw(ExtUtils::MM_Any);
@@ -2593,7 +2593,7 @@ sub parse_abstract {
         $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
         next if !$inpod;
         chop;
-        next unless /^($package\s-\s)(.*)/;
+        next unless /^($package(?:\.pm)?\s+\-+\s+)(.*)/;
         $result = $2;
         last;
     }
index 4422b68..95a0752 100644 (file)
@@ -18,7 +18,7 @@ our @Overridable;
 my @Prepend_parent;
 my %Recognized_Att_Keys;
 
-our $VERSION = '6.56';
+our $VERSION = '6.5601';
 
 # Emulate something resembling CVS $Revision$
 (our $Revision = $VERSION) =~ s{_}{};
@@ -467,14 +467,16 @@ END
         if (!$installed_file) {
             warn sprintf "Warning: prerequisite %s %s not found.\n", 
               $prereq, $required_version
-                   unless $self->{PREREQ_FATAL};
+                   unless $self->{PREREQ_FATAL}
+                       or $ENV{PERL_CORE};
 
             $unsatisfied{$prereq} = 'not installed';
         }
         elsif ($pr_version < $required_version ){
             warn sprintf "Warning: prerequisite %s %s not found. We have %s.\n",
               $prereq, $required_version, ($pr_version || 'unknown version') 
-                  unless $self->{PREREQ_FATAL};
+                  unless $self->{PREREQ_FATAL}
+                       or $ENV{PERL_CORE};
 
             $unsatisfied{$prereq} = $required_version ? $required_version : 'unknown version' ;
         }
index cd5d18d..13e354a 100644 (file)
@@ -35,6 +35,9 @@ ok( chdir 'Big-Dummy', "chdir'd to Big-Dummy" ) ||
     local $SIG{__WARN__} = sub {
         $warnings .= join '', @_;
     };
+    # prerequisite warnings are disbled while building the perl core:
+    local %ENV = %ENV;
+    delete $ENV{PERL_CORE};
 
     WriteMakefile(
         NAME            => 'Big::Dummy',
index d11c870..b7e7b0b 100644 (file)
@@ -1,5 +1,62 @@
 Revision history for Perl extension ExtUtils::ParseXS.
 
+2.2205 - Wed Mar 10 18:15:36 EST 2010
+
+ Other:
+
+ - No longer ships with Build.PL to avoid creating a circular dependency
+
+2.2204 - Wed Mar 10 14:23:52 EST 2010
+
+ Other:
+
+ - Downgraded warnings on using INCLUDE with a command from "deprecated"
+   to "discouraged" and limited it to the case where the command includes
+   "perl" [Steffen Mueller]
+
+2.2203 - Thu Feb 11 14:00:51 EST 2010
+
+ Bug fixes:
+
+ - Build.PL was not including ExtUtils/xsubpp for installation.  Fixed
+   by subclassing M::B::find_pm_files to include it [David Golden]
+
+2.2202 - Wed Jan 27 15:04:59 EST 2010
+
+ Bug fixes:
+
+ - The fix to IN/OUT/OUTLIST was itself broken and is now fixed.
+   [Reported by Serdar Dalgic; fix suggested by Rafael Garcia-Suarez]
+
+   We apologize for the fault in the regex. Those responsible 
+   have been sacked.
+
+2.2201 Mon Jan 25 16:12:05 EST 2010
+
+ Bug fixes:
+
+ - IN/OUT/OUTLIST, etc. were broken due to a bad regexp.  [Simon Cozens]
+
+2.22 - Mon Jan 11 15:00:07 EST 2010
+
+ No changes from 2.21_02
+
+2.21_02 - Sat Dec 19 10:55:41 EST 2009
+
+ Bug fixes:
+
+ - fixed bugs and added tests for INCLUDE_COMMAND [Steffen Mueller]
+
+2.21_01 - Sat Dec 19 07:22:44 EST 2009
+
+ Enhancements:
+
+ - New 'INCLUDE_COMMAND' directive [Steffen Mueller]
+
+ Bug fixes:
+
+ - Workaround for empty newXS macro found in P5NCI [Goro Fuji]
+
 2.21 - Mon Oct  5 11:17:53 EDT 2009
 
  Bug fixes:
@@ -12,7 +69,7 @@ Revision history for Perl extension ExtUtils::ParseXS.
 
  Bug fixes:
  - Use "char* file" for perl < 5.9, not "char[] file"; fixes mod_perl
-   breakage due to prior attempts to fix RT#48104 [David Golden] 
+   breakage due to prior attempts to fix RT#48104 [David Golden]
 
 2.20_06 - Fri Oct  2 23:45:45 EDT 2009
 
@@ -62,8 +119,8 @@ Revision history for Perl extension ExtUtils::ParseXS.
 2.20_03 - Thu Jul 23 23:14:50 EDT 2009
 
  Bug fixes:
- - Fixed "const char *" errors for 5.8.8 (and older) (RT#48104) 
-   [Vincent Pit] 
+ - Fixed "const char *" errors for 5.8.8 (and older) (RT#48104)
+   [Vincent Pit]
  - Added newline before a preprocessor directive (RT#30673)
    [patch by hjp]
 
index 05c3e69..4f9492a 100644 (file)
@@ -18,7 +18,7 @@ my(@XSStack); # Stack of conditionals and INCLUDEs
 my($XSS_work_idx, $cpp_next_tmp);
 
 use vars qw($VERSION);
-$VERSION = '2.21';
+$VERSION = '2.2205';
 $VERSION = eval $VERSION if $VERSION =~ /_/;
 
 use vars qw(%input_expr %output_expr $ProtoUsed @InitFileCode $FH $proto_re $Overload $errors $Fallback
@@ -230,9 +230,10 @@ sub process_file {
 
   # Match an XS keyword
   $BLOCK_re= '\s*(' . join('|', qw(
-                                  REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE OUTPUT
-                                  CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE VERSIONCHECK INCLUDE
-                                  SCOPE INTERFACE INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
+                                  REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE
+                                  OUTPUT CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE
+                                  VERSIONCHECK INCLUDE INCLUDE_COMMAND SCOPE INTERFACE
+                                  INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
                                  )) . "|$END)\\s*:";
 
   
@@ -448,7 +449,7 @@ EOF
     $xsreturn = 0;
 
     $_ = shift(@line);
-    while (my $kwd = check_keyword("REQUIRE|PROTOTYPES|FALLBACK|VERSIONCHECK|INCLUDE|SCOPE")) {
+    while (my $kwd = check_keyword("REQUIRE|PROTOTYPES|FALLBACK|VERSIONCHECK|INCLUDE(?:_COMMAND)?|SCOPE")) {
       &{"${kwd}_handler"}() ;
       next PARAGRAPH unless @line ;
       $_ = shift(@line);
@@ -520,11 +521,11 @@ EOF
          next unless defined($pre) && length($pre);
          my $out_type = '';
          my $inout_var;
-         if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//) {
+         if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//) {
            my $type = $1;
            $out_type = $type if $type ne 'IN';
-           $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//;
-           $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//;
+           $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
+           $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
          }
          my $islength;
          if ($name =~ /^length\( \s* (\w+) \s* \)\z/x) {
@@ -554,7 +555,7 @@ EOF
     } else {
       @args = split(/\s*,\s*/, $orig_args);
       for (@args) {
-       if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\s+//) {
+       if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\b\s*//) {
          my $out_type = $1;
          next if $out_type eq 'IN';
          $only_C_inlist{$_} = 1 if $out_type eq "OUTLIST";
@@ -934,6 +935,10 @@ EOF
 EOF
       }
     }
+    elsif($newXS eq 'newXS'){ # work around P5NCI's empty newXS macro
+      push(@InitFileCode,
+          "        ${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n");
+    }
     else {
       push(@InitFileCode,
           "        (void)${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n");
@@ -1481,6 +1486,22 @@ sub PROTOTYPES_handler ()
 
   }
 
+sub PushXSStack
+  {
+    # Save the current file context.
+    push(@XSStack, {
+                   type            => 'file',
+                   LastLine        => $lastline,
+                   LastLineNo      => $lastline_no,
+                   Line            => \@line,
+                   LineNo          => \@line_no,
+                   Filename        => $filename,
+                   Filepathname    => $filepathname,
+                   Handle          => $FH,
+                  }) ;
+
+  }
+
 sub INCLUDE_handler ()
   {
     # the rest of the current line should contain a valid filename
@@ -1499,17 +1520,16 @@ sub INCLUDE_handler ()
 
     ++ $IncludedFiles{$_} unless /\|\s*$/ ;
 
-    # Save the current file context.
-    push(@XSStack, {
-                   type                => 'file',
-                   LastLine        => $lastline,
-                   LastLineNo      => $lastline_no,
-                   Line            => \@line,
-                   LineNo          => \@line_no,
-                   Filename        => $filename,
-                   Filepathname    => $filepathname,
-                   Handle          => $FH,
-                  }) ;
+    if (/\|\s*$/ && /^\s*perl\s/) {
+      Warn("The INCLUDE directive with a command is discouraged." .
+           " Use INCLUDE_COMMAND instead! In particular using 'perl'" .
+           " in an 'INCLUDE: ... |' directive is not guaranteed to pick" .
+           " up the correct perl. The INCLUDE_COMMAND directive allows" .
+           " the use of \$^X as the currently running perl, see" .
+           " 'perldoc perlxs' for details.");
+    }
+
+    PushXSStack();
 
     $FH = Symbol::gensym();
 
@@ -1535,7 +1555,51 @@ EOF
 
     $lastline = $_ ;
     $lastline_no = $. ;
+  }
+
+sub INCLUDE_COMMAND_handler ()
+  {
+    # the rest of the current line should contain a valid command
+
+    TrimWhitespace($_) ;
+
+    death("INCLUDE_COMMAND: command missing")
+      unless $_ ;
+
+    death("INCLUDE_COMMAND: pipes are illegal")
+      if /^\s*\|/ or /\|\s*$/ ;
+
+    PushXSStack();
+
+    $FH = Symbol::gensym();
+
+    # If $^X is used in INCLUDE_COMMAND, we know it's supposed to be
+    # the same perl interpreter as we're currently running
+    s/^\s*\$\^X/$^X/;
+
+    # open the new file
+    open ($FH, "-|", "$_")
+      or death("Cannot run command '$_' to include its output: $!") ;
+
+    print Q(<<"EOF");
+#
+#/* INCLUDE_COMMAND:  Including output of '$_' from '$filename' */
+#
+EOF
+
+    $filename = $_ ;
+    $filepathname = "$dir/$filename";
+
+    # Prime the pump by reading the first
+    # non-blank line
 
+    # skip leading blank lines
+    while (<$FH>) {
+      last unless /^\s*$/ ;
+    }
+
+    $lastline = $_ ;
+    $lastline_no = $. ;
   }
 
 sub PopFile()
index 173460e..f2fe902 100644 (file)
@@ -106,6 +106,8 @@ outlist(OUTLIST int a, OUTLIST int b)
 int
 len(char* s, int length(s))
 
+INCLUDE_COMMAND: $^X -Ilib -It/lib -MIncludeTester -e IncludeTester::print_xs
+
 #if 1
 
 INCLUDE: XSInclude.xsh
diff --git a/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm b/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm
new file mode 100644 (file)
index 0000000..8d16254
--- /dev/null
@@ -0,0 +1,20 @@
+package IncludeTester;
+use strict;
+
+sub print_xs {
+  print <<'HERE';
+
+int
+sum(a, b)
+    int a
+    int b
+  CODE:
+    RETVAL = a + b;
+  OUTPUT:
+    RETVAL
+
+HERE
+}
+
+1;
+
index 8a934c2..2e55976 100644 (file)
@@ -8,7 +8,7 @@ use ExtUtils::CBuilder;
 use attributes;
 use overload;
 
-plan tests => 24;
+plan tests => 25;
 
 my ($source_file, $obj_file, $lib_file);
 
@@ -42,7 +42,7 @@ SKIP: {
 }
 
 SKIP: {
-  skip "no dynamic loading", 5
+  skip "no dynamic loading", 6
     if !$b->have_compiler || !$Config{usedl};
   my $module = 'XSMore';
   $lib_file = $b->link( objects => $obj_file, module_name => $module );
@@ -88,6 +88,8 @@ SKIP: {
 
   is XSMore::len("foo"), 3, 'the length keyword';
 
+  is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive';
+
   # Win32 needs to close the DLL before it can unlink it, but unfortunately
   # dl_unload_file was missing on Win32 prior to perl change #24679!
   if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
index 346f32a..a33c15a 100644 (file)
@@ -441,6 +441,8 @@ SKIP: {
         unless $Config{d_getgrent};
     skip 'not running as root', $skip_count
         unless $< == 0;
+    skip "darwin's nobody and nogroup are -1", $skip_count
+        if $^O eq 'darwin';
 
     my $dir_stem = $dir = catdir($tmp_base, 'owned-by');
 
index 8f71596..552a95a 100644 (file)
@@ -1,3 +1,13 @@
+1.23 -- Wed Mar 10 20:50:00 CST 2010
+
+  * Add a test file to ensure 'GETMAGIC' called once [gfx]
+  * "GETMAGIC" should be called only once [gfx]
+  * Use PERL_NO_GET_CONTEXT for efficiency (see perlguts) [gfx]
+  * Don't care about dVAR. ExtUtils::ParseXS deals with it. [gfx]
+  * t/p_max.t, t/p_min.t fail on perl5.8.1.  [tokuhirom]
+  * avoid non-portable warnings
+  * Fix PP::reftype in edge cases [gfx]
+
 1.22 -- Sat Nov 14 09:26:15 CST 2009
 
   * silence a compiler warning about an unreferenced local variable [Steve Hay]
index dfde039..7da9b95 100644 (file)
@@ -2,7 +2,7 @@
  * This program is free software; you can redistribute it and/or
  * modify it under the same terms as Perl itself.
  */
-
+#define PERL_NO_GET_CONTEXT /* we want efficiency */
 #include <EXTERN.h>
 #include <perl.h>
 #include <XSUB.h>
@@ -66,7 +66,7 @@ my_cxinc(pTHX)
 #  ifndef SvTAINTED
 
 static bool
-sv_tainted(SV *sv)
+sv_tainted(pTHX_ SV *sv)
 {
     if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
        MAGIC *mg = mg_find(sv, 't');
@@ -77,7 +77,7 @@ sv_tainted(SV *sv)
 }
 
 #    define SvTAINTED_on(sv) sv_magic((sv), Nullsv, 't', Nullch, 0)
-#    define SvTAINTED(sv) (SvMAGICAL(sv) && sv_tainted(sv))
+#    define SvTAINTED(sv) (SvMAGICAL(sv) && sv_tainted(aTHX_ sv))
 #  endif
 #  define PL_defgv defgv
 #  define PL_op op
@@ -126,10 +126,6 @@ sv_tainted(SV *sv)
 #define dNOOP extern int Perl___notused PERL_UNUSED_DECL
 #endif
 
-#ifndef dVAR
-#define dVAR dNOOP
-#endif
-
 #ifndef GvSVn
 #  define GvSVn GvSV
 #endif
@@ -282,7 +278,7 @@ reduce(block,...)
 PROTOTYPE: &@
 CODE:
 {
-    dVAR; dMULTICALL;
+    dMULTICALL;
     SV *ret = sv_newmortal();
     int index;
     GV *agv,*bgv,*gv;
@@ -321,7 +317,7 @@ first(block,...)
 PROTOTYPE: &@
 CODE:
 {
-    dVAR; dMULTICALL;
+    dMULTICALL;
     int index;
     GV *gv;
     HV *stash;
@@ -359,7 +355,6 @@ shuffle(...)
 PROTOTYPE: @
 CODE:
 {
-    dVAR;
     int index;
 #if (PERL_VERSION < 9)
     struct op dmy_op;
@@ -438,7 +433,7 @@ CODE:
 {
     if (SvMAGICAL(sv))
        mg_get(sv);
-    if(!sv_isobject(sv)) {
+    if(!(SvROK(sv) && SvOBJECT(SvRV(sv)))) {
        XSRETURN_UNDEF;
     }
     RETVAL = (char*)sv_reftype(SvRV(sv),TRUE);
index 2b51a69..aced6b1 100644 (file)
@@ -14,7 +14,7 @@ require Exporter;
 
 @ISA        = qw(Exporter);
 @EXPORT_OK  = qw(first min max minstr maxstr reduce sum shuffle);
-$VERSION    = "1.22";
+$VERSION    = "1.23";
 $XS_VERSION = $VERSION;
 $VERSION    = eval $VERSION;
 
index 425f1c5..2771329 100644 (file)
@@ -13,7 +13,7 @@ require Exporter;
 
 @ISA     = qw(Exporter);
 @EXPORT  = qw(first min max minstr maxstr reduce sum shuffle);
-$VERSION = "1.22";
+$VERSION = "1.23";
 $VERSION = eval $VERSION;
 
 sub reduce (&@) {
index 76bf646..2dcb03a 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 use vars qw($VERSION);
 use List::Util;
 
-$VERSION = "1.22";           # FIXUP
+$VERSION = "1.23";           # FIXUP
 $VERSION = eval $VERSION;    # FIXUP
 
 sub _VERSION { # FIXUP
index 24f146f..24138ca 100644 (file)
@@ -13,7 +13,7 @@ require List::Util; # List::Util loads the XS
 
 @ISA       = qw(Exporter);
 @EXPORT_OK = qw(blessed dualvar reftype weaken isweak tainted readonly openhandle refaddr isvstring looks_like_number set_prototype);
-$VERSION    = "1.22";
+$VERSION    = "1.23";
 $VERSION   = eval $VERSION;
 
 unless (defined &dualvar) {
index e94fe86..7850e1b 100644 (file)
@@ -16,7 +16,7 @@ use B qw(svref_2object);
 
 @ISA     = qw(Exporter);
 @EXPORT  = qw(blessed reftype tainted readonly refaddr looks_like_number);
-$VERSION = "1.22";
+$VERSION = "1.23";
 $VERSION = eval $VERSION;
 
 sub blessed ($) {
@@ -41,20 +41,19 @@ sub refaddr($) {
 
   $addr =~ /0x(\w+)/;
   local $^W;
+  no warnings 'portable';
   hex($1);
 }
 
 {
   my %tmap = qw(
-    B::HV HASH
-    B::AV ARRAY
-    B::CV CODE
-    B::IO IO
-    B::NULL SCALAR
-    B::NV SCALAR
-    B::PV SCALAR
-    B::GV GLOB
-    B::RV REF
+    B::NULL   SCALAR
+
+    B::HV     HASH
+    B::AV     ARRAY
+    B::CV     CODE
+    B::IO     IO
+    B::GV     GLOB
     B::REGEXP REGEXP
   );
 
index a982198..aff9166 100644 (file)
@@ -50,6 +50,7 @@ is($v, 3, 'overload');
 use overload
   '""' => sub { ${$_[0]} },
   '+0' => sub { ${$_[0]} },
+  '>'  => sub { ${$_[0]} > ${$_[1]} },
   fallback => 1;
   sub new {
     my $class = shift;
index eb8c1b9..13d1116 100644 (file)
@@ -50,6 +50,7 @@ is($v, 1, 'overload');
 use overload
   '""' => sub { ${$_[0]} },
   '+0' => sub { ${$_[0]} },
+  '<'  => sub { ${$_[0]} < ${$_[1]} },
   fallback => 1;
   sub new {
     my $class = shift;
index c724b38..627bdcf 100644 (file)
@@ -1,6 +1,74 @@
 
                ChangeLog for Locale-Codes Distribution
 
+As of 3.00, the codes are autogenerated from the standards. With each release, codes will
+be re-generated and tested to see if any code changed. Any time there are any changes to
+the codes, it will be flagged below with a change: NEW CODE(s).
+
+3.13
+
+3.12  2010-04-06 sbeck
+       * NEW CODE(s)
+       * Renamed test.pl to testfunc.pl to avoid causing an error
+         when built as part of perl.
+
+3.11  2010-03-01 sbeck
+       * NEW CODE(s)
+       * Added the IANA domain names to Country
+       * Fixed a problem that produced warnings with perl 5.11.5.
+               Jerry D. Hedden
+
+3.10  2010-02-18 sbeck
+       * NEW CODE(s)
+       * Moved support files into the Locale::Codes namespace.
+       * The work done in each of the Locale::XXX modules was
+               virtually identical to each other. It has all
+               been moved to a central module and the
+               Locale::XXX moduels are now just wrappers.
+       * The XXX_code2code functions would return undef if the
+               same codeset were passed in for both the 2nd and
+               3rd arguments. This doesn't make sense and has
+               been changed.
+       * Added all semi-private routines (except for the
+               couple that were already present):
+                       rename_XXX
+                       add_XXX
+                       delete_XXX
+                       add_XXX_alias
+                       delete_XXX_alias
+                       rename_XXX_code
+                       add_XXX_code_alias
+                       delete_XXX_code_alias
+       * Added "UK" alias. Steve Hay
+
+3.01  2010-02-15 sbeck
+       * Fixed Makefile.PL and Build.PL to install as core
+               modules.
+
+3.00  2010-02-10 sbeck
+       * NEW CODE(s)
+       * Took over maintenance of the code
+       * All codes and country names come from the official
+               standards
+       * code2country now returns the name of the country specified
+               in the standard (if the different standards refer
+               to the country by different variations in the name,
+               the results will differe based on the CODESET)
+       * Added code sets
+               FIPS 10 country codes
+               Alpha-3 and Term language codes
+               Numeric currency codes
+       * The rename_country funcion from 2.07 would guess the
+               CODESET (unlike all other functions which used
+               a default of LOCALE_CODE_ALPHA_2). The guess can
+               cause problems since (with the addition of FIPS)
+               codes may appear in different codesets for different
+               countries. The behavior has been changed to be
+               the same as other functions (default to
+               LOCALE_CODE_ALPHA_2).
+       * Dropped support for _alias_code
+       * Added language_code2code, currency_code2code
+
 2.07  2004-06-10 neilb
        * made $_ local in the initialisation code for each module
                change back-propagated from Perl distribution
diff --git a/cpan/Locale-Codes/LICENSE b/cpan/Locale-Codes/LICENSE
new file mode 100644 (file)
index 0000000..ae8dd20
--- /dev/null
@@ -0,0 +1,3 @@
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
diff --git a/cpan/Locale-Codes/Makefile.PL b/cpan/Locale-Codes/Makefile.PL
deleted file mode 100644 (file)
index e1121eb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-use strict;
-use ExtUtils::MakeMaker;
-
-WriteMakefile (
-    NAME      => 'Locale-Codes',
-    DISTNAME  => 'Locale-Codes',
-    VERSION   => '2.07',
-    AUTHOR    => 'Neil Bowers <neil@bowers.com>',
-    ABSTRACT  => 'modules for ISO codes identifying countries, languages, currencies, and scripts',
-);
diff --git a/cpan/Locale-Codes/README b/cpan/Locale-Codes/README
deleted file mode 100644 (file)
index 9920aba..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-
-                       Locale-Codes Distribution
-                               v2.07
-
-For changes in this release, please see the ChangeLog file.
-
-This distribution contains four Perl modules which can be used to process
-ISO codes for identifying languages, countries, scripts,
-and currencies & funds.
-
-    Locale::Language
-       Two letter codes for language identification (ISO 639).
-       For example, 'en' is the code for 'English'.
-
-    Locale::Country
-       Codes for country identification (ISO 3166). This module
-       supports the three different code sets defined by the
-       standard: alpha-2, alpha-3, and numeric codes.
-       For example, 'bo' is the code for 'Bolivia'.
-
-    Locale::Currency
-       Three letter codes for currency and fund identification (ISO 4217).
-       For example, 'sek' is the code for 'Swedish Krona'.
-
-    Locale::Script
-       Codes for script identification (ISO 15924). This module supports
-       the three different code sets defined by the standard:
-       alpha-2, alpha-3, and numeric codes.
-
-To install these modules, you should just have to run the following:
-
-       % perl Makefile.PL
-       % make
-       % make test
-       % make install
-
-The modules are documented using pod. When you "make install", you
-will get four man-pages: Locale::Language, Locale::Country,
-Locale::Currency, Locale::Script.
-
-The first version of Locale::Currency was written by Michael Hennecke,
-with modifications for inclusion by me. Kudos to Michael.
-
-Please let me know if you experience any problems with these modules,
-or have any ideas for additions.
-
-
-Neil Bowers
-<neil@bowers.com>
diff --git a/cpan/Locale-Codes/README.first b/cpan/Locale-Codes/README.first
new file mode 100644 (file)
index 0000000..8609e5e
--- /dev/null
@@ -0,0 +1,54 @@
+
+                       Locale-Codes Distribution
+
+For changes in this release, please refer to the Locale::Changes
+man-page.
+
+For changes prior to 3.00, please see the ChangeLog file.
+
+This distribution contains Perl modules which can be used to process
+ISO codes for identifying languages, countries, scripts,
+and currencies & funds.
+
+    Locale::Language
+
+       Codes for language identification including ISO 639.
+
+       For example, 'en' is the code for 'English'.
+
+    Locale::Country
+
+       Codes for country identification including ISO 3166
+        and FIPS 10.
+
+       For example, 'us' is the code for 'United States'.
+
+    Locale::Currency
+
+       Codes for currency and fund identification including
+        ISO 4217.
+
+       For example, 'sek' is the code for 'Swedish Krona'.
+
+    Locale::Script
+
+       Codes for script identification including ISO 15924.
+
+        For example, 'Phnx' is the code for 'Phoenician'.
+
+The modules are documented using pod. When you "make install", you
+will get man-pages: Local::Codes and each of the modules listed above.
+
+The first version of Locale::Currency was written by Michael Hennecke,
+with modifications by Neil Bowers for inclusion.
+
+The first versions of Locale::Language, Locale::Country, and Locale::Script
+were written by Neil Bowers.
+
+Please let me know if you experience any problems with these modules,
+or have any ideas for additions.
+
+Also, I plan on releasing a new version a couple of times a year to make
+sure that all of the codes are current. If a code changes in any standard,
+and you want a new release, just email me and I'll put out a new release.
+
diff --git a/cpan/Locale-Codes/lib/Locale/Codes.pm b/cpan/Locale-Codes/lib/Locale/Codes.pm
new file mode 100644 (file)
index 0000000..82516b9
--- /dev/null
@@ -0,0 +1,628 @@
+package Locale::Codes;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+require 5.002;
+
+use Carp;
+
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
+
+# This module is not called directly... %Data is filled in by the
+# calling modules.
+
+use vars qw($VERSION %Data);
+
+# $Data{ TYPE }{ code2id   }{ CODESET } { CODE }  = [ ID, I ]
+#              { id2code   }{ CODESET } { ID }    = CODE
+#              { id2names  }{ ID }                = [ NAME, NAME, ... ]
+#              { alias2id  }{ NAME }              = [ ID, I ]
+#              { id        }                      = FIRST_UNUSED_ID
+#              { codealias }{ CODESET } { ALIAS } = CODE
+
+$VERSION='3.12';
+
+#=======================================================================
+#
+# _code2name ( TYPE,CODE,CODESET )
+#
+#=======================================================================
+
+sub _code2name {
+   my($type,$code,$codeset) = @_;
+
+   $code = $Data{$type}{'codealias'}{$codeset}{$code}
+     if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+   if (exists $Data{$type}{'code2id'}{$codeset}  &&
+       exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+      my ($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+      my $name    = $Data{$type}{'id2names'}{$id}[$i];
+      return $name;
+   } else {
+      #---------------------------------------------------------------
+      # no such code!
+      #---------------------------------------------------------------
+      return undef;
+   }
+}
+
+#=======================================================================
+#
+# _name2code ( TYPE,NAME,CODESET )
+#
+#=======================================================================
+
+sub _name2code {
+   my($type,$name,$codeset) = @_;
+   $name = ""  if (! $name);
+   $name = lc($name);
+
+   if (exists $Data{$type}{'alias2id'}{$name}) {
+      my $id = $Data{$type}{'alias2id'}{$name}[0];
+      if (exists $Data{$type}{'id2code'}{$codeset}{$id}) {
+         return $Data{$type}{'id2code'}{$codeset}{$id};
+      }
+   }
+
+   #---------------------------------------------------------------
+   # no such name!
+   #---------------------------------------------------------------
+   return undef;
+  }
+
+#=======================================================================
+#
+# _code2code ( TYPE,CODE,CODESET )
+#
+#=======================================================================
+
+sub _code2code {
+   my($type,$code,$inset,$outset) = @_;
+
+   my $name    = _code2name($type,$code,$inset);
+   my $outcode = _name2code($type,$name,$outset);
+   return $outcode;
+}
+
+#=======================================================================
+#
+# _all_codes ( TYPE,CODESET )
+#
+#=======================================================================
+
+sub _all_codes {
+   my($type,$codeset) = @_;
+
+   if (! exists $Data{$type}{'code2id'}{$codeset}) {
+      return ();
+   }
+   my @codes = keys %{ $Data{$type}{'code2id'}{$codeset} };
+   return (sort @codes);
+}
+
+#=======================================================================
+#
+# _all_names ( TYPE,CODESET )
+#
+#=======================================================================
+
+sub _all_names {
+   my($type,$codeset) = @_;
+
+   my @codes = _all_codes($type,$codeset);
+   return ()  if (! @codes);
+   my @names;
+
+   foreach my $code (@codes) {
+      my($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+      my $name   = $Data{$type}{'id2names'}{$id}[$i];
+      push(@names,$name);
+   }
+   return (sort @names);
+}
+
+#=======================================================================
+#
+# _rename ( TYPE,CODE,NAME,CODESET )
+#
+# Change the official name for a code. The original is retained
+# as an alias, but the new name will be returned if you lookup the
+# name from code.
+#
+#=======================================================================
+
+sub _rename {
+   my($type,$code,$new_name,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "rename_$type(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   $code = $Data{$type}{'codealias'}{$codeset}{$code}
+     if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+   # Check that $code exists in the codeset.
+
+   my $id;
+   if (exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+      $id = $Data{$type}{'code2id'}{$codeset}{$code}[0];
+   } else {
+      carp "rename_$type(): unknown code: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Cases:
+   #   1. Renaming to a name which exists with a different ID
+   #      Error
+   #
+   #   2. Renaming to a name which exists with the same ID
+   #      Just change code2id (I value)
+   #
+   #   3. Renaming to a new name
+   #      Create a new alias
+   #      Change code2id (I value)
+
+   if (exists $Data{$type}{'alias2id'}{lc($new_name)}) {
+      # Existing name (case 1 and 2)
+
+      my ($new_id,$i) = @{ $Data{$type}{'alias2id'}{lc($new_name)} };
+      if ($new_id != $id) {
+         # Case 1
+        carp "rename_$type(): rename to an existing $type not allowed\n"
+          unless ($nowarn);
+        return 0;
+      }
+
+      # Case 2
+
+      $Data{$type}{'code2id'}{$codeset}{$code}[1] = $i;
+
+   } else {
+
+      # Case 3
+
+      push @{ $Data{$type}{'id2names'}{$id} },$new_name;
+      my $i = $#{ $Data{$type}{'id2names'}{$id} };
+      $Data{$type}{'alias2id'}{lc($new_name)} = [ $id,$i ];
+      $Data{$type}{'code2id'}{$codeset}{$code}[1] = $i;
+   }
+
+   return 1;
+}
+
+#=======================================================================
+#
+# _add_code ( TYPE,CODE,NAME,CODESET )
+#
+# Add a new code to the codeset. Both CODE and NAME must be
+# unused in the code set.
+#
+#=======================================================================
+
+sub _add_code {
+   my($type,$code,$name,$codeset,$nowarn) = @_;
+
+   if (! $codeset) {
+      carp "add_$type(): unknown codeset\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Check that $code is unused.
+
+   if (exists $Data{$type}{'code2id'}{$codeset}{$code}  ||
+       exists $Data{$type}{'codealias'}{$codeset}{$code}) {
+      carp "add_$type(): code already in use: $code\n"  unless ($nowarn);
+      return 0;
+   }
+
+   # Check to see that $name is unused in this code set.  If it is
+   # used (but not in this code set), we'll use that ID.  Otherwise,
+   # we'll need to get the next available ID.
+
+   my ($id,$i);
+   if (exists $Data{$type}{'alias2id'}{lc($name)}) {
+      ($id,$i) = @{ $Data{$type}{'alias2id'}{lc($name)} };
+      if (exists $Data{$type}{'id2code'}{$codeset}{$id}) {
+         carp "add_$type(): name already in use: $name\n"  unless ($nowarn);
+         return 0;
+      }
+
+   } else {
+      $id = $Data{$type}{'id'}++;
+      $i  = 0;
+      $Data{$type}{'alias2id'}{lc($name)} = [ $id,$i ];<